OSDN Git Service

upgrade to 3.6.1
[jnethack/source.git] / sys / share / lev_yacc.c
1 #ifndef lint
2 /* static char yysccsid[] = "@(#)yaccpar        1.9 (Berkeley) 02/21/93"; */
3 /* static char nhsccsid[] = "@(#)yaccpar   1.9.0-nh (NetHack) 12/03/2015"; */
4 #endif
5 #define YYBYACC 1
6 #define YYMAJOR 1
7 #define YYMINOR 9
8 #define YYSUBMINOR "0-nh"
9
10 #define yyclearin (yychar=(-1))
11 #define yyerrok (yyerrflag=0)
12 #define YYRECOVERING (yyerrflag!=0)
13 #define YYPREFIX "yy"
14 /* NetHack 3.6  lev_comp.y      $NHDT-Date: 1455747019 2016/02/17 22:10:19 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.22 $ */
15 /*      Copyright (c) 1989 by Jean-Christophe Collet */
16 /* NetHack may be freely redistributed.  See license for details. */
17
18 /*
19  * This file contains the Level Compiler code
20  * It may handle special mazes & special room-levels
21  */
22
23 /* In case we're using bison in AIX.  This definition must be
24  * placed before any other C-language construct in the file
25  * excluding comments and preprocessor directives (thanks IBM
26  * for this wonderful feature...).
27  *
28  * Note: some cpps barf on this 'undefined control' (#pragma).
29  * Addition of the leading space seems to prevent barfage for now,
30  * and AIX will still see the directive.
31  */
32 #ifdef _AIX
33  #pragma alloca         /* keep leading space! */
34 #endif
35
36 #define SPEC_LEV    /* for USE_OLDARGS (sp_lev.h) */
37 #include "hack.h"
38 #include "sp_lev.h"
39
40 #define ERR             (-1)
41 /* many types of things are put in chars for transference to NetHack.
42  * since some systems will use signed chars, limit everybody to the
43  * same number for portability.
44  */
45 #define MAX_OF_TYPE     128
46
47 #define MAX_NESTED_IFS   20
48 #define MAX_SWITCH_CASES 20
49
50 #define New(type) \
51         (type *) memset((genericptr_t) alloc(sizeof (type)), 0, sizeof (type))
52 #define NewTab(type, size)      (type **) alloc(sizeof (type *) * size)
53 #define Free(ptr)               free((genericptr_t) ptr)
54
55 extern void VDECL(lc_error, (const char *, ...));
56 extern void VDECL(lc_warning, (const char *, ...));
57 extern void FDECL(yyerror, (const char *));
58 extern void FDECL(yywarning, (const char *));
59 extern int NDECL(yylex);
60 int NDECL(yyparse);
61
62 extern int FDECL(get_floor_type, (CHAR_P));
63 extern int FDECL(get_room_type, (char *));
64 extern int FDECL(get_trap_type, (char *));
65 extern int FDECL(get_monster_id, (char *,CHAR_P));
66 extern int FDECL(get_object_id, (char *,CHAR_P));
67 extern boolean FDECL(check_monster_char, (CHAR_P));
68 extern boolean FDECL(check_object_char, (CHAR_P));
69 extern char FDECL(what_map_char, (CHAR_P));
70 extern void FDECL(scan_map, (char *, sp_lev *));
71 extern void FDECL(add_opcode, (sp_lev *, int, genericptr_t));
72 extern genericptr_t FDECL(get_last_opcode_data1, (sp_lev *, int));
73 extern genericptr_t FDECL(get_last_opcode_data2, (sp_lev *, int, int));
74 extern boolean FDECL(check_subrooms, (sp_lev *));
75 extern boolean FDECL(write_level_file, (char *,sp_lev *));
76 extern struct opvar *FDECL(set_opvar_int, (struct opvar *, long));
77 extern void VDECL(add_opvars, (sp_lev *, const char *, ...));
78 extern void FDECL(start_level_def, (sp_lev * *, char *));
79
80 extern struct lc_funcdefs *FDECL(funcdef_new, (long,char *));
81 extern void FDECL(funcdef_free_all, (struct lc_funcdefs *));
82 extern struct lc_funcdefs *FDECL(funcdef_defined, (struct lc_funcdefs *,
83                                                    char *, int));
84 extern char *FDECL(funcdef_paramtypes, (struct lc_funcdefs *));
85 extern char *FDECL(decode_parm_str, (char *));
86
87 extern struct lc_vardefs *FDECL(vardef_new, (long,char *));
88 extern void FDECL(vardef_free_all, (struct lc_vardefs *));
89 extern struct lc_vardefs *FDECL(vardef_defined, (struct lc_vardefs *,
90                                                  char *, int));
91
92 extern void NDECL(break_stmt_start);
93 extern void FDECL(break_stmt_end, (sp_lev *));
94 extern void FDECL(break_stmt_new, (sp_lev *, long));
95
96 extern void FDECL(splev_add_from, (sp_lev *, sp_lev *));
97
98 extern void FDECL(check_vardef_type, (struct lc_vardefs *, char *, long));
99 extern void FDECL(vardef_used, (struct lc_vardefs *, char *));
100 extern struct lc_vardefs *FDECL(add_vardef_type, (struct lc_vardefs *,
101                                                   char *, long));
102
103 extern int FDECL(reverse_jmp_opcode, (int));
104
105 struct coord {
106     long x;
107     long y;
108 };
109
110 struct forloopdef {
111     char *varname;
112     long jmp_point;
113 };
114 static struct forloopdef forloop_list[MAX_NESTED_IFS];
115 static short n_forloops = 0;
116
117
118 sp_lev *splev = NULL;
119
120 static struct opvar *if_list[MAX_NESTED_IFS];
121
122 static short n_if_list = 0;
123
124 unsigned int max_x_map, max_y_map;
125 int obj_containment = 0;
126
127 int in_container_obj = 0;
128
129 /* integer value is possibly an inconstant value (eg. dice notation or a variable) */
130 int is_inconstant_number = 0;
131
132 int in_switch_statement = 0;
133 static struct opvar *switch_check_jump = NULL;
134 static struct opvar *switch_default_case = NULL;
135 static struct opvar *switch_case_list[MAX_SWITCH_CASES];
136 static long switch_case_value[MAX_SWITCH_CASES];
137 int n_switch_case_list = 0;
138
139 int allow_break_statements = 0;
140 struct lc_breakdef *break_list = NULL;
141
142 extern struct lc_vardefs *variable_definitions;
143
144
145 struct lc_vardefs *function_tmp_var_defs = NULL;
146 extern struct lc_funcdefs *function_definitions;
147 struct lc_funcdefs *curr_function = NULL;
148 struct lc_funcdefs_parm * curr_function_param = NULL;
149 int in_function_definition = 0;
150 sp_lev *function_splev_backup = NULL;
151
152 extern int fatal_error;
153 extern int got_errors;
154 extern int line_number;
155 extern const char *fname;
156
157 extern char curr_token[512];
158
159 typedef union
160 {
161         long    i;
162         char*   map;
163         struct {
164                 long room;
165                 long wall;
166                 long door;
167         } corpos;
168     struct {
169         long area;
170         long x1;
171         long y1;
172         long x2;
173         long y2;
174     } lregn;
175     struct {
176         long x;
177         long y;
178     } crd;
179     struct {
180         long ter;
181         long lit;
182     } terr;
183     struct {
184         long height;
185         long width;
186     } sze;
187     struct {
188         long die;
189         long num;
190     } dice;
191     struct {
192         long cfunc;
193         char *varstr;
194     } meth;
195 } YYSTYPE;
196 #define CHAR 257
197 #define INTEGER 258
198 #define BOOLEAN 259
199 #define PERCENT 260
200 #define SPERCENT 261
201 #define MINUS_INTEGER 262
202 #define PLUS_INTEGER 263
203 #define MAZE_GRID_ID 264
204 #define SOLID_FILL_ID 265
205 #define MINES_ID 266
206 #define ROGUELEV_ID 267
207 #define MESSAGE_ID 268
208 #define MAZE_ID 269
209 #define LEVEL_ID 270
210 #define LEV_INIT_ID 271
211 #define GEOMETRY_ID 272
212 #define NOMAP_ID 273
213 #define OBJECT_ID 274
214 #define COBJECT_ID 275
215 #define MONSTER_ID 276
216 #define TRAP_ID 277
217 #define DOOR_ID 278
218 #define DRAWBRIDGE_ID 279
219 #define object_ID 280
220 #define monster_ID 281
221 #define terrain_ID 282
222 #define MAZEWALK_ID 283
223 #define WALLIFY_ID 284
224 #define REGION_ID 285
225 #define FILLING 286
226 #define IRREGULAR 287
227 #define JOINED 288
228 #define ALTAR_ID 289
229 #define LADDER_ID 290
230 #define STAIR_ID 291
231 #define NON_DIGGABLE_ID 292
232 #define NON_PASSWALL_ID 293
233 #define ROOM_ID 294
234 #define PORTAL_ID 295
235 #define TELEPRT_ID 296
236 #define BRANCH_ID 297
237 #define LEV 298
238 #define MINERALIZE_ID 299
239 #define CORRIDOR_ID 300
240 #define GOLD_ID 301
241 #define ENGRAVING_ID 302
242 #define FOUNTAIN_ID 303
243 #define POOL_ID 304
244 #define SINK_ID 305
245 #define NONE 306
246 #define RAND_CORRIDOR_ID 307
247 #define DOOR_STATE 308
248 #define LIGHT_STATE 309
249 #define CURSE_TYPE 310
250 #define ENGRAVING_TYPE 311
251 #define DIRECTION 312
252 #define RANDOM_TYPE 313
253 #define RANDOM_TYPE_BRACKET 314
254 #define A_REGISTER 315
255 #define ALIGNMENT 316
256 #define LEFT_OR_RIGHT 317
257 #define CENTER 318
258 #define TOP_OR_BOT 319
259 #define ALTAR_TYPE 320
260 #define UP_OR_DOWN 321
261 #define SUBROOM_ID 322
262 #define NAME_ID 323
263 #define FLAGS_ID 324
264 #define FLAG_TYPE 325
265 #define MON_ATTITUDE 326
266 #define MON_ALERTNESS 327
267 #define MON_APPEARANCE 328
268 #define ROOMDOOR_ID 329
269 #define IF_ID 330
270 #define ELSE_ID 331
271 #define TERRAIN_ID 332
272 #define HORIZ_OR_VERT 333
273 #define REPLACE_TERRAIN_ID 334
274 #define EXIT_ID 335
275 #define SHUFFLE_ID 336
276 #define QUANTITY_ID 337
277 #define BURIED_ID 338
278 #define LOOP_ID 339
279 #define FOR_ID 340
280 #define TO_ID 341
281 #define SWITCH_ID 342
282 #define CASE_ID 343
283 #define BREAK_ID 344
284 #define DEFAULT_ID 345
285 #define ERODED_ID 346
286 #define TRAPPED_STATE 347
287 #define RECHARGED_ID 348
288 #define INVIS_ID 349
289 #define GREASED_ID 350
290 #define FEMALE_ID 351
291 #define CANCELLED_ID 352
292 #define REVIVED_ID 353
293 #define AVENGE_ID 354
294 #define FLEEING_ID 355
295 #define BLINDED_ID 356
296 #define PARALYZED_ID 357
297 #define STUNNED_ID 358
298 #define CONFUSED_ID 359
299 #define SEENTRAPS_ID 360
300 #define ALL_ID 361
301 #define MONTYPE_ID 362
302 #define GRAVE_ID 363
303 #define ERODEPROOF_ID 364
304 #define FUNCTION_ID 365
305 #define MSG_OUTPUT_TYPE 366
306 #define COMPARE_TYPE 367
307 #define UNKNOWN_TYPE 368
308 #define rect_ID 369
309 #define fillrect_ID 370
310 #define line_ID 371
311 #define randline_ID 372
312 #define grow_ID 373
313 #define selection_ID 374
314 #define flood_ID 375
315 #define rndcoord_ID 376
316 #define circle_ID 377
317 #define ellipse_ID 378
318 #define filter_ID 379
319 #define complement_ID 380
320 #define gradient_ID 381
321 #define GRADIENT_TYPE 382
322 #define LIMITED 383
323 #define HUMIDITY_TYPE 384
324 #define STRING 385
325 #define MAP_ID 386
326 #define NQSTRING 387
327 #define VARSTRING 388
328 #define CFUNC 389
329 #define CFUNC_INT 390
330 #define CFUNC_STR 391
331 #define CFUNC_COORD 392
332 #define CFUNC_REGION 393
333 #define VARSTRING_INT 394
334 #define VARSTRING_INT_ARRAY 395
335 #define VARSTRING_STRING 396
336 #define VARSTRING_STRING_ARRAY 397
337 #define VARSTRING_VAR 398
338 #define VARSTRING_VAR_ARRAY 399
339 #define VARSTRING_COORD 400
340 #define VARSTRING_COORD_ARRAY 401
341 #define VARSTRING_REGION 402
342 #define VARSTRING_REGION_ARRAY 403
343 #define VARSTRING_MAPCHAR 404
344 #define VARSTRING_MAPCHAR_ARRAY 405
345 #define VARSTRING_MONST 406
346 #define VARSTRING_MONST_ARRAY 407
347 #define VARSTRING_OBJ 408
348 #define VARSTRING_OBJ_ARRAY 409
349 #define VARSTRING_SEL 410
350 #define VARSTRING_SEL_ARRAY 411
351 #define METHOD_INT 412
352 #define METHOD_INT_ARRAY 413
353 #define METHOD_STRING 414
354 #define METHOD_STRING_ARRAY 415
355 #define METHOD_VAR 416
356 #define METHOD_VAR_ARRAY 417
357 #define METHOD_COORD 418
358 #define METHOD_COORD_ARRAY 419
359 #define METHOD_REGION 420
360 #define METHOD_REGION_ARRAY 421
361 #define METHOD_MAPCHAR 422
362 #define METHOD_MAPCHAR_ARRAY 423
363 #define METHOD_MONST 424
364 #define METHOD_MONST_ARRAY 425
365 #define METHOD_OBJ 426
366 #define METHOD_OBJ_ARRAY 427
367 #define METHOD_SEL 428
368 #define METHOD_SEL_ARRAY 429
369 #define DICE 430
370 #define YYERRCODE 256
371 short yylhs[] = {                                        -1,
372     0,    0,   73,   73,   74,   57,   57,   56,   56,   76,
373    76,   76,   76,   55,   55,   54,   54,   46,   46,   14,
374    14,   75,   75,   26,   26,   22,   22,   23,   78,   78,
375    78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
376    78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
377    78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
378    78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
379    78,   78,   59,   59,   59,   59,   59,   59,   59,   59,
380    59,   58,   58,   58,   58,   58,   58,   58,   58,   58,
381    60,   60,   60,   61,   61,   85,   84,   84,   84,   84,
382    84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
383    84,   38,   38,   44,   44,   43,   43,   42,   42,   41,
384    41,   39,   39,   40,   40,  129,  130,  100,  101,   98,
385    45,   45,   31,   31,   31,  131,  133,   93,  134,  134,
386   136,  135,  137,  135,   99,  138,  138,  139,  140,   94,
387   141,   95,  142,   97,  144,   96,  143,  145,  143,   79,
388   110,  110,  110,   83,   83,   65,  146,  147,  113,  148,
389   112,   10,   10,   68,   68,   69,   69,   70,   70,   71,
390    71,   87,   87,   15,   15,   13,   13,   16,   16,   11,
391    11,  103,  103,  103,    1,    1,    2,    2,  105,  150,
392   105,  149,   20,   20,   21,   21,   21,   21,   21,   21,
393    21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
394    35,   35,   35,  106,  152,  106,  151,   18,   18,   19,
395    19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
396    19,   19,   19,   19,  120,   88,  104,  104,  121,  121,
397   102,  117,  118,  109,  119,   82,   17,   17,   91,  114,
398   108,   72,   72,  116,  115,   86,  107,  154,  111,   24,
399    24,   80,   81,   81,   81,   92,   89,   90,   90,    3,
400     3,    4,    4,   29,   29,   28,   28,   27,   27,   27,
401     5,    5,    6,    6,    7,    7,    7,   12,   12,   12,
402     8,    8,    9,  155,  155,  155,  132,   77,   77,   77,
403    77,   32,   32,   32,   30,   30,  127,  127,  127,   33,
404   124,  124,  124,   34,   34,  125,  125,  125,   36,   36,
405    36,   36,  126,  126,  126,   37,   37,   37,   37,  123,
406   123,  122,  122,  122,  122,  122,  122,  122,  122,  122,
407   122,  122,   50,   50,  157,  158,  158,  128,  128,   64,
408    64,   63,   63,   62,   62,   49,   49,   49,   49,   49,
409    49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
410    49,   49,   49,   49,   48,   48,  156,   47,   47,   47,
411   153,  153,  153,  153,   51,   51,   52,   52,   53,   53,
412    25,   25,   67,   67,   66,
413 };
414 short yylen[] = {                                         2,
415     0,    1,    1,    2,    3,    3,    5,    1,    1,    5,
416     5,    3,   16,    0,    2,    0,    2,    0,    2,    1,
417     1,    0,    3,    3,    1,    0,    2,    3,    1,    1,
418     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
419     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
420     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
421     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
422     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
423     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
424     1,    1,    1,    1,    1,    3,    3,    5,    3,    5,
425     5,    5,    3,    3,    5,    5,    5,    7,    7,    7,
426     5,    1,    3,    1,    3,    1,    3,    1,    3,    1,
427     3,    1,    3,    1,    3,    0,    0,    8,    4,    1,
428     0,    1,    1,    5,    3,    0,    0,    9,    0,    2,
429     0,    5,    0,    4,    1,    2,    1,    6,    0,    3,
430     0,    6,    0,    4,    0,    4,    1,    0,    4,    3,
431     1,    3,    3,    5,    5,    7,    4,    0,   10,    0,
432    12,    0,    2,    5,    1,    5,    1,    5,    1,    5,
433     1,    9,    5,    1,    1,    1,    1,    1,    3,    1,
434     1,    1,    7,    5,    1,    1,    1,    1,    3,    0,
435     5,    4,    0,    3,    1,    1,    1,    1,    2,    1,
436     1,    1,    1,    1,    3,    3,    3,    1,    1,    3,
437     1,    1,    3,    3,    0,    5,    2,    0,    3,    1,
438     3,    1,    3,    3,    1,    1,    3,    1,    1,    1,
439     3,    1,    1,    1,    5,    7,    5,    8,    1,    3,
440     5,    5,    7,    7,    6,    5,    0,    2,    3,    3,
441     3,    1,    5,    9,    5,    3,    3,    0,   10,    0,
442     1,    7,    5,    5,    3,    5,    7,    9,    1,    1,
443     1,    1,    1,    0,    2,    1,    3,    1,    1,    1,
444     1,    1,    1,    1,    1,    1,    1,    1,    1,    3,
445     1,    1,    4,    1,    1,    4,    1,    1,    4,    1,
446     4,    5,    1,    3,    1,    3,    1,    1,    4,    9,
447     1,    1,    4,    1,    5,    1,    1,    4,    1,    1,
448     5,    1,    1,    1,    4,    1,    1,    5,    1,    1,
449     3,    1,    1,    3,    1,    4,    3,    3,    3,    3,
450     3,    3,    1,    1,    3,    1,    3,    0,    1,    1,
451     1,    1,    3,    0,    1,    1,    2,    2,    4,    6,
452     4,    6,    6,    6,    6,    2,    6,    8,    8,   10,
453    14,    2,    1,    3,    1,    3,    1,    1,    1,    1,
454     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
455     1,    1,    1,   10,    9,
456 };
457 short yydefred[] = {                                      0,
458     0,    0,    0,    0,    2,    0,    0,    0,    0,    0,
459     4,    0,    6,    0,  133,    0,    0,    0,  192,    0,
460     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
461     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
462     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
463   130,    0,    0,    0,  136,  145,    0,    0,    0,    0,
464    93,   82,   73,   83,   74,   84,   75,   85,   76,   86,
465    77,   87,   78,   88,   79,   89,   80,   90,   81,    5,
466     0,   92,   91,    0,   30,    0,   29,   31,   32,   33,
467    34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
468    44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
469    54,   55,   56,   57,   58,   59,   60,   61,   62,   63,
470    64,   65,   66,   67,   68,   69,   70,   71,   72,  149,
471     0,    0,   23,    0,    0,    0,    0,    0,    0,    0,
472     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
473     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
474     0,    0,    0,    0,  155,    0,    0,    0,    0,   94,
475    95,    0,    0,    0,    0,  342,    0,  345,    0,  387,
476     0,  343,    0,  153,    0,   27,    0,    9,    8,    7,
477     0,  304,  305,    0,    0,  340,    0,    0,    0,   12,
478   313,    0,  195,  196,    0,    0,  310,    0,    0,  308,
479     0,  337,  339,    0,  336,  334,    0,  333,  228,  224,
480   225,  330,  332,    0,  329,  327,    0,  326,    0,    0,
481   281,  280,    0,  291,  292,    0,    0,    0,    0,    0,
482     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
483   383,  250,    0,  366,    0,  318,    0,  317,    0,    0,
484     0,    0,    0,  403,    0,    0,  266,  267,  283,  282,
485     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
486     0,    0,  259,  261,  260,  390,  388,  389,  163,  162,
487     0,  184,  185,    0,    0,    0,    0,   96,    0,    0,
488     0,    0,  126,    0,    0,    0,    0,  135,    0,    0,
489     0,    0,    0,    0,    0,  362,    0,    0,    0,  396,
490   398,  395,  397,  399,  400,    0,    0,    0,    0,    0,
491     0,  103,    0,    0,  104,    0,  150,   24,    0,    0,
492     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
493     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
494     0,    0,    0,  367,  368,    0,    0,    0,  376,    0,
495     0,    0,  382,    0,    0,    0,    0,    0,    0,    0,
496     0,    0,    0,    0,    0,  132,    0,    0,    0,    0,
497     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
498   156,    0,    0,  151,    0,    0,    0,    0,  344,  352,
499     0,    0,    0,    0,  349,  350,  351,  129,    0,  154,
500     0,    0,  120,  118,    0,    0,    0,    0,    0,    0,
501     0,    0,    0,    0,    0,  341,   11,  262,    0,   10,
502     0,    0,  314,    0,    0,    0,  198,  197,    0,  173,
503   194,    0,    0,    0,  226,    0,    0,  203,  201,  245,
504   183,    0,    0,    0,    0,    0,    0,    0,    0,    0,
505   324,    0,    0,  322,    0,  321,    0,    0,    0,  384,
506   386,    0,    0,  293,  294,    0,  297,    0,  295,    0,
507   296,  251,    0,    0,    0,  252,    0,  175,    0,    0,
508     0,    0,    0,  256,    0,    0,  165,  164,  276,  401,
509   402,    0,  177,    0,    0,    0,    0,    0,  265,    0,
510     0,  147,    0,    0,  137,  274,    0,    0,    0,  356,
511     0,  346,  134,  363,   98,    0,    0,  105,    0,  111,
512     0,  106,    0,  107,    0,  102,    0,  101,    0,  100,
513    28,  306,    0,    0,  316,  309,    0,  311,    0,    0,
514   335,  393,  391,  392,  239,  236,  230,    0,    0,  235,
515     0,  240,    0,  242,  243,    0,  238,  229,  244,  232,
516   394,    0,  328,    0,    0,    0,  369,    0,    0,    0,
517   371,    0,    0,    0,    0,    0,    0,    0,    0,    0,
518   319,    0,    0,    0,    0,    0,    0,  167,    0,    0,
519     0,    0,    0,  255,    0,    0,    0,    0,    0,    0,
520     0,    0,  152,  146,    0,    0,    0,  127,    0,    0,
521     0,    0,  121,  119,  112,    0,  114,    0,  116,    0,
522     0,    0,  312,  193,  338,    0,    0,    0,    0,    0,
523   331,    0,  246,    0,    0,  189,    0,    0,    0,    0,
524     0,    0,    0,    0,    0,    0,    0,    0,  302,  301,
525   272,    0,    0,  253,    0,  179,    0,    0,  254,  258,
526     0,    0,    0,    0,  181,    0,    0,  187,    0,  186,
527   159,    0,    0,  353,  354,  355,    0,  357,    0,  110,
528     0,  109,    0,  108,    0,    0,    0,  234,  237,  241,
529   231,    0,  298,  206,  207,    0,  211,  210,  212,  213,
530   214,    0,    0,    0,  218,  219,    0,  299,  208,  204,
531     0,    0,  248,    0,  372,    0,  377,    0,  373,    0,
532   323,  374,  375,    0,    0,    0,  268,  303,    0,    0,
533     0,    0,    0,    0,  190,  191,    0,    0,    0,  168,
534     0,    0,    0,    0,    0,    0,  128,  113,  115,  117,
535   263,    0,    0,    0,    0,    0,    0,    0,   19,    0,
536     0,  325,    0,    0,  288,  289,  290,    0,  285,    0,
537     0,    0,  174,    0,    0,  278,  166,  176,    0,    0,
538   182,  264,    0,  143,  138,  140,    0,  300,  215,  216,
539   217,  222,    0,  220,  378,    0,  379,    0,    0,    0,
540   271,  269,    0,    0,    0,  170,    0,  169,  141,    0,
541     0,    0,    0,    0,    0,  320,  287,    0,  405,  178,
542     0,  180,    0,  144,    0,  223,  380,   15,    0,  404,
543   171,  142,    0,    0,    0,    0,   20,   21,    0,    0,
544     0,   13,   17,  381,
545 };
546 short yydgoto[] = {                                       3,
547   209,  449,  233,  271,  236,  486,  490,  671,  491,  351,
548   757,  729,  689,  859,  294,  467,  614,  354,  578,  584,
549   730,   80,  337,  822,  512,  133,  788,  789,  747,  345,
550    81,  210,  258,  476,  814,  228,  218,  636,  425,  426,
551   427,  428,  640,  638,  387,  733,  290,  375,  253,  696,
552   329,  330,  331,  861,  835,  190,    4,   82,   83,   84,
553   172,  314,  315,  316,  280,  264,  265,  500,  515,  678,
554   687,  440,    5,    6,   10,   85,  254,   86,   87,   88,
555    89,   90,   91,   92,   93,   94,   95,   96,   97,   98,
556    99,  100,  101,  102,  103,  104,  105,  106,  107,  108,
557   109,  110,  111,  112,  113,  114,  115,  116,  117,  118,
558   119,  120,  121,  122,  123,  124,  125,  126,  127,  128,
559   129,  277,  318,  478,  229,  219,  259,  529,  408,  697,
560   173,  278,  626,  765,  766,  843,  830,  524,  130,  187,
561   521,  319,  401,  295,  517,  272,  800,  841,  230,  359,
562   220,  355,  580,  790,  196,  182,  530,  531,
563 };
564 short yysindex[] = {                                     68,
565    17,   31,    0, -217,    0,   68, -257, -226,  112, 5680,
566     0,  136,    0, -136,    0,  170,  185,  201,    0,  225,
567   229,  238,  244,  248,  251,  255,  266,  272,  275,  283,
568   304,  309,  346,  366,  378,  380,  382,  383,  396,  397,
569   398,  400,  401,  404,  405,  413,  415,  -46,  417,  420,
570     0,  426,  108,  489,    0,    0,  428,  101,  -35,  449,
571     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
572     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
573   432,    0,    0,  430,    0, 5680,    0,    0,    0,    0,
574     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
575     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
576     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
577     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
578  -190,  450,    0, -234,   62,  -13,   41,   41,   40, -252,
579  -121,  109,  109, 1644,  -34,  109,  109,   92,  -34,  -34,
580  -249,  -20,  -20,  -20,  -35,  458,  -35,  109, 1644, 1644,
581  1644, -160, -249, -174,    0, 1644,  -34,  288,  -35,    0,
582     0,  439,  414,  109,  467,    0,  -22,    0,  421,    0,
583    -9,    0,  -14,    0,  163,    0,  385,    0,    0,    0,
584  -136,    0,    0,  423,  465,    0,  471,  473,  475,    0,
585     0,  137,    0,    0,  490,  271,    0,  441,  496,    0,
586   503,    0,    0,  276,    0,    0,  452,    0,    0,    0,
587     0,    0,    0,  292,    0,    0,  470,    0,  512,    0,
588     0,    0,  518,    0,    0,  523,  524,  526,  -34,  -34,
589   109,  109,  540,  109,  542,  544,  545, 1644,  548, 5537,
590     0,    0,  533,    0,  331,    0,  500,    0,  555,  558,
591   559,  564,  347,    0,  571,  582,    0,    0,    0,    0,
592   367,  584,  379,  592,  594,  595,  141,  596,  402,  597,
593   588,  611,    0,    0,    0,    0,    0,    0,    0,    0,
594   617,    0,    0,  628,  385,  638,  640,    0,  593,  -35,
595   -35,  644,    0,  649,  159,  -35,  -35,    0,  -35,  -35,
596   -35,  -35,  -35,  651,  650,    0,  141,  465, 5680,    0,
597     0,    0,    0,    0,    0,  642,   -1,    4,  643,  647,
598   653,    0,  141,  465,    0, 5680,    0,    0,  -35, -234,
599   445,   14,  455,  654,  614, 1644,  678,  -35,   38,  476,
600   338,  682,  -35,  688,  385,  690,  -35,  109,  385,  109,
601  1644,  424,  431,    0,    0,  694,  696, 1298,    0,  109,
602   109, 5435,    0,  360,  704, 1644,  702,  -35, -165,  -83,
603   429,  491,  703,  -20,  433,    0,  707,  -24,  708,  -20,
604   -20,  -20,  -35,  709,   10,  109,  -91,  -19, -121,    0,
605     0,    9,    9,    0,   45,  655, -254,  560,    0,    0,
606    75,  148,   79,   79,    0,    0,    0,    0,  -14,    0,
607  1644,  711,    0,    0,   16,   25,   27,   29,  141,  465,
608    22,  -10,  -28,  631,  427,    0,    0,    0,  501,    0,
609   715,  137,    0,  719,  505,  459,    0,    0,  503,    0,
610     0,  381,  499,    2,    0,  403,  508,    0,    0,    0,
611     0,  721,  723,  109,  109,  662,  743,  748,  746,  749,
612     0,  750, 5448,    0,  701,    0,  751,  752,  753,    0,
613     0,  554,  536,    0,    0,  754,    0,  726,    0,  774,
614     0,    0,  775,  579,  785,    0, -165,    0,  581,  796,
615   583,  798,  800,    0,  802,  535,    0,    0,    0,    0,
616     0,  804,    0,  591,  806,  807,  521,  598,    0,  810,
617   385,    0,  811,  -35,    0,    0,  465,  801,  815,    0,
618   814,    0,    0,    0,    0,  604,  -35,    0, -234,    0,
619   -21,    0,  824,    0,   57,    0,   98,    0,   23,    0,
620     0,    0,  825,  621,    0,    0,  827,    0,  493,  839,
621     0,    0,    0,    0,    0,    0,    0,  823,  826,    0,
622   828,    0,  830,    0,    0,  832,    0,    0,    0,    0,
623     0,  841,    0,  848, -121,  641,    0,  857,  590, 1644,
624     0,  -35,  -35, 1644,  859,  -35, 1644, 1644,  864,  861,
625     0, -249,  648, -148,  652,  135,  586,    0,  867,   -5,
626   868,  528,  587,    0,  -35,  870, -234,  871,    6,   72,
627   385,    9,    0,    0,  141,  793,    1,    0,  560,  166,
628   141,  465,    0,    0,    0,   32,    0,   33,    0,   35,
629  -165,  873,    0,    0,    0, -234,  -35,  -35,  -35,   40,
630     0, 5526,    0,  876,  -35,    0,  880,  174,  686,  881,
631  -165,  569,  882,  883,  -35,  685,  900,  852,    0,    0,
632     0,  902,  691,    0,  693,    0,  110,  908,    0,    0,
633   928, -184,  465,  716,    0,  717,  900,    0,  929,    0,
634     0,  932,   90,    0,    0,    0,  385,    0,   57,    0,
635    98,    0,   23,    0,  936,  722,  465,    0,    0,    0,
636     0,   56,    0,    0,    0, -234,    0,    0,    0,    0,
637     0,  920,  921,  924,    0,    0,  925,    0,    0,    0,
638   465,  727,    0,  141,    0,  699,    0,  -35,    0,  945,
639     0,    0,    0,  481,  943,   59,    0,    0,  744,  957,
640   965,  963,    6,  -35,    0,    0,  967,  977,  982,    0,
641  -184,  767,  -50,  971,  905,   90,    0,    0,    0,    0,
642     0,  987,  724,  465,  -35,  -35,  -35, -261,    0,  991,
643   576,    0,  -35,  777,    0,    0,    0,  989,    0,  385,
644   992,  780,    0,   38,  900,    0,    0,    0,  781,  385,
645     0,    0,  983,    0,    0,    0,  784,    0,    0,    0,
646     0,    0,  916,    0,    0,  758,    0,   93, 1004,   59,
647     0,    0,  788, 1006, 1007,    0, 1010,    0,    0, 5680,
648  1009, -261, 1016,  675, 1020,    0,    0, 1025,    0,    0,
649   385,    0, 5680,    0, -165,    0,    0,    0, 1023,    0,
650     0,    0, 1024,  109, -149, 1026,    0,    0,  876,  109,
651  1028,    0,    0,    0,
652 };
653 short yyrindex[] = {                                   1071,
654     0,    0,    0, 5225,    0, 1072,    0,    0,    0,   53,
655     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
656     0,    0,    0,    0,    0,    0, 2985,    0,    0,    0,
657     0,    0,    0,    0,    0,    0,    0, 3174,    0,    0,
658     0,    0,    0,    0, 3331,    0,    0,    0,    0,    0,
659     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
660     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
661     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
662     0,    0,    0,    0,    0,  182,    0,    0,    0,    0,
663     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
664     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
665     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
666     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
667     0, 5382,    0,    0,    0,    0,    0,    0,    0,    0,
668     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
669     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
670     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
671     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
672     0,    0, 1032,    0,    0,    0,    0,    0,    0,    0,
673     0,    0,    0,    0, 3520,    0,    0,    0,    0,    0,
674     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
675   689,    0,    0,    0,    0,    0,    0,    0,    0,    0,
676     0,    0,    0,    0,    0,    0,    0,    0,    0, 1947,
677     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
678     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
679     0,    0, 1098,    0,    0,    0,    0,    0,    0,    0,
680     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
681   136,    0,    0,    0,    0,    0,  720,    0,    0,    0,
682     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
683     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
684     0, 3677,    0,    0,    0,    0,    0,    0,    0,    0,
685     0,    0,    0,    0, 1033,    0,  241,  247,    0,    0,
686     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
687     0,    0, 3866, 4023,    0,  951,    0,    0,    0,    0,
688     0,    0,    0,  984,    0,    0,    0,    0,    0,    0,
689     0,    0,    0, 2136,    0,    0,    0,    0,    0,    0,
690     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
691     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
692     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
693     0,    0,    0,    0,    0,    0,    0,    0,    0, 2293,
694     0,    0,    0,    0,    0,    0,    0, 1037,    0,    0,
695     0,    0,  374,  531,    0,    0,    0,    0,    0,    0,
696     0,  553,    0,    0,    0,    0,    0,    0,   42,   49,
697     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
698     0,    0,    0,    0,    0,    0,    0,    0,  689,    0,
699     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
700     0,    0, 4212,    0,    0, 1035,    0,    0,    0,    0,
701     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
702     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
703     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
704     0,    0, 4369,    0,    0,    0,    0,    0,    0,    0,
705     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
706     0,    0,    0,    0,    0,    0, 4558,    0,    0,    0,
707  1039,    0,    0,    0,    0,    0,    0,    0,    0,    0,
708     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
709     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
710     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
711     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
712     0,    0,    0, 2482,    0,    0,    0,    0,    0,    0,
713     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
714     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
715     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
716     0,    0,    0,    0,  958,    0,    0,    0,    0,    0,
717    50,   52,    0,    0,    0,    0,    0,    0,    0,    0,
718     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
719     0,    0,    0, 4715,    0,    0,    0,    0,    0,    0,
720     0,    0,    0,    0,    0,    0, 2639,    0,    0,    0,
721     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
722     0,    0, 4904,    0,    0,    0,  959,    0,    0,    0,
723     0,    0,  961,    0,    0,    0,    0,    0,    0,    0,
724     0,    0,    0,    0,    0,    0, 1255,    0,    0,    0,
725     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
726     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
727  1444,    0,    0,  909,    0,    0,    0,    0,    0,    0,
728     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
729     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
730     0,    0,    0,    0,    0,  961,    0,    0,    0,    0,
731     0,    0,    0, 1601,    0,    0,    0,    0,    0,    0,
732     0,    0,    0,    0,    0,    0,    0, 2828,    0, 5061,
733     0,    0,    0,    0,  959,    0,    0,    0,    0,    0,
734     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
735     0,    0, 1790,    0,    0,    0,    0,  128,    0,    0,
736     0,    0,    0,    0,    0,    0,    0,    0,    0,  -69,
737     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
738     0,    0,  -69,    0,    0,    0,    0,    0,    0,    0,
739     0,    0,    0,    0,    0, 1043,    0,    0, 4715,    0,
740     0,    0,    0,    0,
741 };
742 short yygindex[] = {                                      0,
743   410,  294,    0,  487, -329, -480,    0,    0,  438,  645,
744   330,    0,    0,    0,    0, -474,    0,    0,    0,    0,
745     0,  -86, -287,    0,    0,  901,    0,  273, -629,  657,
746  1047, -296, -297, -509,  264, -504, -494,    0,    0,    0,
747     0,    0,    0,    0,    0,  242, -384, -137,  849,    0,
748     0,    0,    0,    0,    0,    0,    0, 1046,  934, -371,
749     0,    0,    0,  684,  710,    0,  -48,    0,    0,    0,
750   351,    0, 1100,    0,    0,    0, -133,  790,    0,    0,
751     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
752     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
753     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
754     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
755     0,  -58, -130, -355, -375,  679,  -84,    0,    0,    0,
756     0, -167,    0,  345,    0,    0,    0,    0,    0,    0,
757     0,    0,    0,    0,    0,  949,    0,    0,    0,    0,
758   975,    0,    0,    0,  792,  680,  504,    0,
759 };
760 #define YYTABLESIZE 6091
761 short yytable[] = {                                     186,
762   181,  299,  211,  195,  177,  255,  252,  400,  237,  238,
763   507,  518,  260,  261,  266,  499,  608,  177,  206,  273,
764   514,  283,  284,  285,  282,  177,  206,  313,  296,  224,
765   424,  423,  311,  309,  677,  310,  528,  312,  177,  639,
766   302,  206,  637,  327,   59,  686,  519,  520,  518,  279,
767   635,  332,   26,  439,  334,   26,  548,  760,  526,  537,
768   231,  214,  518,  269,  267,  268,  188,  455,  539,  516,
769   541,  459,  543,  755,    7,  699,  701,  550,  703,  224,
770   214,  313,  297,  308,  292,  122,  311,  309,    8,  310,
771   523,  312,  124,  123,  549,  125,  214,  286,  281,  812,
772   335,  287,  288,  274,  275,  276,    9,  366,  367,  857,
773   369,  313,  547,  773,  656,  313,  311,  309,  305,  310,
774   311,  312,  189,  813,  317,  312,  333,   12,  756,  313,
775   192,  263,  232,  406,  311,  270,  834,  224,  293,  312,
776   538,  193,  194,  484,  545,  690,  603,  485,  206,  540,
777   192,  542,  289,  544,  364,  365,  700,  702,   13,  704,
778   705,  193,  194,  858,  669,  826,  122,  532,   14,   14,
779   348,  670,  348,  124,  123,  643,  125,  313,  673,  131,
780   740,   26,  311,  309,  313,  310,  234,  312,  132,  311,
781   309,  235,  310,  770,  312,  313,  769,  430,  169,  410,
782   311,  309,  327,  310,  768,  312,  643,  286,  444,  666,
783   313,  287,  288,   15,  737,  311,  309,  736,  310,  510,
784   312,  511,  176,  461,  458,  505,  460,  134,  471,  487,
785   468,  488,  489,  623,  477,  176,  469,  470,  481,  304,
786   533,  405,  135,  176,  633,  634,  222,  411,  412,  434,
787   413,  414,  415,  416,  417,  653,  422,  528,  136,  562,
788   304,  176,  509,  563,  564,  471,  692,  286,  305,  429,
789   438,  287,  288,   26,  711,   26,  527,  262,  212,  471,
790   435,  360,  137,  535,  360,  328,  138,  361,  498,  446,
791   361,  201,  202,  513,  453,  139,  222,  212,  457,  201,
792   202,  140,  223,  203,  204,  141,   26,  676,  142,  565,
793   566,  567,  143,  212,  201,  202,  201,  202,  685,  483,
794   579,   26,   26,  144,  568,  197,  198,  199,  200,  145,
795   587,  588,  146,  691,  213,  495,    1,    2,  569,  570,
796   147,  502,  503,  504,  785,  786,  787,  571,  572,  573,
797   574,  575,  223,  213,  222,  447,  448,  307,  178,  179,
798   317,  148,  205,  576,  853,  577,  149,  256,  257,  213,
799   192,  178,  179,  347,  225,  474,  475,  205,  803,  178,
800   179,  193,  194,  466,  688,  522,  207,  208,  192,  262,
801   694,  695,  178,  179,  180,  226,  227,  178,  179,  193,
802   194,  207,  208,  150,  201,  202,  215,  180,  632,  767,
803   223,  347,  474,  475,  347,  180,  347,  347,  347,  347,
804   176,  201,  202,  151,  225,  215,  203,  204,  180,  216,
805   217,  180,  763,  180,  764,  152,  320,  153,  321,  154,
806   155,  215,  322,  323,  324,  226,  227,  681,  216,  217,
807    26,   26,  657,  156,  157,  158,  660,  159,  160,  663,
808   664,  161,  162,  313,  347,  625,  347,  205,  311,  309,
809   163,  310,  164,  312,  166,  201,  202,  167,  631,  708,
810   709,  710,  225,  168,  205,  174,  683,  175,  183,  184,
811   185,  207,  208,  191,  325,  313,  347,  279,  347,  300,
812   311,  309,  821,  310,  301,  312,  303,  336,  207,  208,
813   340,  306,  828,  339,  341,  707,  342,  313,  343,  552,
814   344,  731,  311,  309,   26,  783,   26,  312,  347,  346,
815   348,  348,  352,  658,  659,  313,  326,  662,  205,  349,
816   311,  309,  353,  310,  313,  312,  350,  192,  356,  311,
817   309,  558,  310,  851,  312,  358,  178,  179,  193,  194,
818   357,  360,  207,  208,  256,  257,  361,  362,  348,  363,
819   376,  348,  313,  348,  348,  348,  348,  311,  309,  368,
820   310,  370,  312,  371,  372,  774,  796,  374,  377,  342,
821   378,  561,  180,  342,  342,  342,  734,  342,  379,  342,
822   583,  380,  381,  382,  383,  313,  744,  809,  810,  811,
823   311,  309,  313,  310,  384,  312,  817,  311,  309,  816,
824   310,  348,  312,  348,  313,  385,  386,  388,  601,  311,
825   309,  396,  310,  347,  312,  390,  389,  391,  392,  393,
826   395,  347,  347,  347,  347,  347,  347,  347,  347,  347,
827   347,  347,  347,  348,  397,  348,  347,  347,  347,  394,
828   398,  741,  347,  347,  347,  347,  347,  347,  347,  347,
829   347,  399,  347,  347,  347,  347,  347,  347,  347,  781,
830   347,  402,   63,  403,   65,  404,   67,  407,   69,  409,
831    71,  418,   73,  419,   75,  347,   77,  442,   79,  421,
832   431,  437,  347,  347,  432,  347,  443,  347,  347,  347,
833   433,  441,  347,  347,  347,  347,  347,  347,  347,  307,
834   856,  445,  313,  451,  818,  452,  863,  311,  309,  738,
835   310,  454,  312,  456,  450,  462,  347,  464,  347,  465,
836   347,  479,  463,  844,  480,  482,  494,  525,  493,  492,
837   497,  501,  506,  496,  536,  551,  852,  553,  554,  556,
838   347,  347,  557,  307,  585,  560,  586,  347,  347,  347,
839   347,  347,  347,  347,  347,  347,  347,  347,  347,  347,
840   347,  347,  347,  347,  347,  589,  590,  582,  591,  592,
841   348,  596,  593,  594,  597,  598,  599,  602,  348,  348,
842   348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
843   307,  600,  307,  348,  348,  348,  603,  604,  605,  348,
844   348,  348,  348,  348,  348,  348,  348,  348,  607,  348,
845   348,  348,  348,  348,  348,  348,  606,  348,  609,  610,
846   611,  612,  307,  613,  307,  615,  616,  617,  618,  619,
847   620,  621,  348,  622,  595,  628,  624,  629,  627,  348,
848   348,  630,  348,  255,  348,  348,  348,  643,  641,  348,
849   348,  348,  348,  348,  348,  348,  170,  642,  644,  645,
850   646,  651,   62,  647,   64,  648,   66,  649,   68,  650,
851    70,  652,   72,  348,   74,  348,   76,  348,   78,  654,
852   655,  466,  661,  665,  666,  668,  674,  680,  370,  672,
853   675,  673,  679,  682,  684,  693,  706,  348,  348,  732,
854   735,  739,  742,  743,  348,  348,  348,  348,  348,  348,
855   348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
856   348,  348,  745,  746,  748,  749,  370,   61,  750,  370,
857   751,  753,  370,   62,   63,   64,   65,   66,   67,   68,
858    69,   70,   71,   72,   73,   74,   75,   76,   77,   78,
859    79,  754,  761,  758,  759,  762,  771,  775,  776,  307,
860   772,  777,  778,  779,  780,  782,  784,  307,  307,  307,
861   307,  307,  307,  307,  307,  307,  307,  307,  307,  370,
862   792,  791,  307,  307,  307,  793,  794,  797,  307,  307,
863   307,  307,  307,  307,  307,  307,  307,  798,  307,  307,
864   307,  307,  307,  307,  307,  799,  307,  802,  804,  805,
865   807,  815,  820,  370,  819,  823,  808,  824,  827,  832,
866   829,  307,  831,  833,  836,  838,  839,  840,  307,  307,
867   842,  307,  845,  307,  307,  307,  847,  848,  307,  307,
868   849,  307,  307,  307,  307,  850,  854,  855,  864,  860,
869     1,    3,  364,  365,  172,   26,  315,  358,  188,  359,
870   148,  284,  307,   16,  307,  139,  752,  825,  667,  728,
871   801,  338,  837,  559,  165,  846,  373,  385,  555,  171,
872   862,  298,  534,  795,  508,   11,  307,  307,  420,  546,
873   806,  291,  221,  307,  307,  307,  307,  307,  307,  307,
874   307,  307,  307,  307,  307,  307,  307,  307,  307,  307,
875   307,  436,  698,  581,    0,    0,    0,    0,  385,    0,
876     0,  385,    0,    0,    0,    0,    0,    0,    0,    0,
877     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
878     0,    0,    0,    0,    0,    0,    0,    0,  370,    0,
879     0,    0,    0,    0,    0,    0,  370,  370,  370,  370,
880   370,  370,  370,  370,  370,  370,  370,  370,  385,    0,
881     0,  370,  370,  370,    0,    0,    0,  370,  370,  370,
882   370,  370,  370,  370,  370,  370,    0,  370,  370,  370,
883   370,  370,  370,  370,    0,  370,    0,    0,    0,    0,
884     0,    0,  385,    0,    0,    0,    0,    0,    0,    0,
885   370,    0,    0,    0,    0,    0,    0,  370,  370,    0,
886   370,    0,  370,  370,  370,    0,    0,  370,  370,    0,
887   370,  370,  370,  370,  233,    0,    0,    0,    0,    0,
888     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
889     0,  370,    0,  370,    0,    0,    0,    0,    0,    0,
890     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
891     0,    0,    0,    0,    0,  370,  370,    0,  233,    0,
892     0,    0,  370,  370,  370,  370,  370,  370,  370,  370,
893   370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
894     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
895     0,    0,    0,    0,    0,    0,    0,  250,    0,    0,
896     0,    0,    0,    0,    0,  233,    0,    0,    0,    0,
897     0,    0,    0,    0,    0,    0,    0,  385,    0,    0,
898     0,    0,    0,    0,    0,  385,  385,  385,  385,  385,
899   385,  385,  385,  385,  385,  385,  385,  233,    0,  233,
900   385,  385,  385,    0,    0,    0,  385,  385,  385,  385,
901   385,  385,  385,  385,  385,    0,  385,  385,  385,  385,
902   385,  385,  385,    0,  385,    0,    0,    0,    0,    0,
903     0,    0,    0,    0,    0,    0,    0,    0,    0,  385,
904     0,    0,    0,    0,    0,    0,  385,  385,    0,  385,
905     0,  385,  385,  385,    0,    0,  385,  385,    0,  385,
906   385,  385,  385,  205,    0,    0,    0,    0,    0,    0,
907     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
908   385,    0,  385,    0,    0,    0,    0,    0,    0,    0,
909     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
910     0,    0,    0,    0,  385,  385,    0,  205,    0,    0,
911     0,  385,  385,  385,  385,  385,  385,  385,  385,  385,
912   385,  385,  385,  385,  385,  385,  385,  385,  385,    0,
913     0,    0,    0,    0,  233,    0,    0,    0,    0,    0,
914     0,    0,  233,  233,  233,  233,  233,  233,  233,  233,
915   233,  233,  233,  233,  205,    0,    0,  233,  233,  233,
916     0,    0,    0,  233,  233,  233,  233,  233,  233,  233,
917   233,  233,    0,  233,  233,  233,  233,  233,  233,  233,
918     0,  233,    0,    0,    0,    0,  205,    0,  205,    0,
919     0,    0,    0,    0,    0,    0,  233,    0,    0,    0,
920     0,    0,    0,  233,  233,    0,  233,    0,  233,  233,
921   233,    0,    0,  233,  233,    0,  233,  233,  233,  233,
922   209,    0,    0,    0,    0,    0,    0,    0,    0,  466,
923   201,  202,    0,    0,    0,    0,    0,  233,    0,  233,
924     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
925     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
926     0,  233,  233,    0,  209,    0,    0,    0,  233,  233,
927   233,  233,  233,  233,  233,  233,  233,  233,  233,  233,
928   233,  233,  233,  233,  233,  233,  239,  240,  241,  242,
929   243,    0,  244,  205,  245,  246,  247,  248,  249,    0,
930     0,    0,    0,  250,    0,    0,    0,    0,    0,    0,
931     0,  209,    0,    0,    0,    0,    0,  207,  208,    0,
932     0,    0,    0,  205,    0,    0,    0,  251,    0,    0,
933     0,  205,  205,  205,  205,  205,  205,  205,  205,  205,
934   205,  205,  205,  209,    0,  209,  205,  205,  205,    0,
935     0,    0,  205,  205,  205,  205,  205,  205,  205,  205,
936   205,    0,  205,  205,  205,  205,  205,  205,  205,    0,
937   205,    0,    0,    0,    0,    0,    0,    0,    0,    0,
938     0,    0,    0,    0,    0,  205,    0,    0,    0,    0,
939     0,    0,  205,  205,    0,  205,    0,  205,  205,  205,
940     0,    0,  205,  205,    0,  205,  205,  205,  205,  221,
941     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
942     0,    0,    0,    0,    0,    0,  205,    0,  205,    0,
943     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
944     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
945   205,  205,    0,  221,    0,    0,    0,  205,  205,  205,
946   205,  205,  205,  205,  205,  205,  205,  205,  205,  205,
947   205,  205,  205,  205,  205,    0,    0,    0,    0,    0,
948   209,    0,    0,    0,    0,    0,    0,    0,  209,  209,
949   209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
950   221,    0,    0,  209,  209,  209,    0,    0,    0,  209,
951   209,  209,  209,  209,  209,  209,  209,  209,    0,  209,
952   209,  209,  209,  209,  209,  209,    0,  209,    0,    0,
953     0,    0,  221,    0,  221,    0,    0,    0,    0,    0,
954     0,    0,  209,    0,    0,    0,    0,    0,    0,  209,
955   209,    0,  209,    0,  209,  209,  209,    0,    0,  209,
956   209,    0,  209,  209,  209,  209,  199,    0,    0,    0,
957     0,    0,    0,    0,    0,    0,  201,  202,    0,    0,
958     0,    0,    0,  209,    0,  209,    0,    0,    0,    0,
959     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
960     0,    0,    0,    0,    0,    0,    0,  209,  209,    0,
961     0,    0,    0,    0,  209,  209,  209,  209,  209,  209,
962   209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
963   209,  209,  239,  240,  241,  242,  243,    0,  244,  205,
964   245,  246,  247,  248,  249,    0,    0,    0,    0,    0,
965     0,    0,    0,    0,    0,    0,    0,  199,    0,    0,
966     0,    0,    0,  207,  208,    0,    0,    0,    0,  221,
967     0,    0,    0,  251,    0,    0,    0,  221,  221,  221,
968   221,  221,  221,  221,  221,  221,  221,  221,  221,  200,
969     0,  199,  221,  221,  221,    0,    0,    0,  221,  221,
970   221,  221,  221,  221,  221,  221,  221,    0,  221,  221,
971   221,  221,  221,  221,  221,    0,  221,    0,    0,    0,
972     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
973     0,  221,    0,    0,    0,    0,    0,    0,  221,  221,
974     0,  221,    0,  221,  221,  221,    0,    0,  221,  221,
975     0,  221,  221,  221,  221,  227,    0,    0,    0,    0,
976     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
977     0,    0,  221,    0,  221,    0,    0,    0,    0,    0,
978     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
979     0,    0,    0,    0,    0,    0,  221,  221,    0,    0,
980     0,    0,    0,  221,  221,  221,  221,  221,  221,  221,
981   221,  221,  221,  221,  221,  221,  221,  221,  221,  221,
982   221,    0,    0,    0,    0,    0,  199,    0,    0,    0,
983     0,    0,    0,    0,  199,  199,  199,  199,  199,  199,
984   199,  199,  199,  199,  199,  199,  227,    0,    0,  199,
985   199,  199,    0,    0,    0,  199,  199,  199,  199,  199,
986   199,  199,  199,  199,    0,  199,  199,  199,  199,  199,
987   199,  199,    0,  199,    0,    0,    0,    0,  227,    0,
988   227,    0,    0,    0,    0,    0,    0,    0,  199,    0,
989     0,    0,    0,    0,    0,  199,  199,    0,  199,    0,
990   199,  199,  199,    0,    0,  199,  199,    0,  199,  199,
991   199,  199,  157,    0,    0,    0,    0,    0,    0,    0,
992     0,    0,    0,    0,    0,    0,    0,    0,    0,  199,
993     0,  199,    0,    0,    0,    0,    0,    0,    0,    0,
994     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
995     0,    0,    0,  199,  199,    0,    0,    0,    0,    0,
996   199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
997   199,  199,  199,  199,  199,  199,  199,  199,    0,    0,
998     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
999     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1000     0,    0,    0,  157,    0,    0,    0,    0,    0,    0,
1001     0,    0,    0,    0,    0,  227,    0,    0,    0,    0,
1002     0,    0,    0,  227,  227,  227,  227,  227,  227,  227,
1003   227,  227,  227,  227,  227,    0,    0,  157,  227,  227,
1004   227,    0,    0,    0,  227,  227,  227,  227,  227,  227,
1005   227,  227,  227,    0,  227,  227,  227,  227,  227,  227,
1006   227,    0,  227,    0,    0,    0,    0,    0,    0,    0,
1007     0,    0,    0,    0,    0,    0,    0,  227,    0,    0,
1008     0,    0,    0,    0,  227,  227,    0,  227,    0,  227,
1009   227,  227,    0,    0,  227,  227,    0,  227,  227,  227,
1010   227,  202,    0,    0,    0,    0,    0,    0,    0,    0,
1011     0,    0,    0,    0,    0,    0,    0,    0,  227,    0,
1012   227,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1013     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1014     0,    0,  227,  227,    0,    0,    0,    0,    0,  227,
1015   227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
1016   227,  227,  227,  227,  227,  227,  227,    0,    0,    0,
1017     0,    0,  157,    0,    0,    0,    0,    0,    0,    0,
1018   157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
1019   157,  157,  202,    0,    0,  157,  157,  157,    0,    0,
1020     0,  157,  157,  157,  157,  157,  157,  157,  157,  157,
1021     0,  157,  157,  157,  157,  157,  157,  157,    0,  157,
1022     0,    0,    0,    0,  202,    0,  202,    0,    0,    0,
1023     0,    0,    0,    0,  157,    0,    0,    0,    0,    0,
1024     0,  157,  157,  158,  157,    0,  157,  157,  157,    0,
1025     0,  157,  157,    0,  157,  157,  157,  157,  284,    0,
1026     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1027     0,    0,    0,    0,    0,  157,    0,  157,    0,    0,
1028     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1029     0,    0,    0,    0,    0,    0,    0,    0,    0,  157,
1030   157,    0,    0,    0,    0,    0,  157,  157,  157,  157,
1031   157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
1032   157,  157,  157,  157,    0,    0,    0,    0,    0,    0,
1033     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1034     0,    0,    0,    0,    0,    0,    0,    0,    0,  284,
1035     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1036     0,  202,    0,    0,    0,    0,    0,    0,    0,  202,
1037   202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
1038   202,  284,    0,  284,  202,  202,  202,    0,    0,    0,
1039   202,  202,  202,  202,  202,  202,  202,  202,  202,    0,
1040   202,  202,  202,  202,  202,  202,  202,    0,  202,    0,
1041     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1042     0,    0,    0,  202,    0,    0,    0,    0,    0,    0,
1043   202,  202,    0,  202,    0,  202,  202,  202,    0,    0,
1044   202,  202,    0,  202,  202,  202,  202,  286,    0,    0,
1045     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1046     0,    0,    0,    0,  202,    0,  202,    0,    0,    0,
1047     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1048     0,    0,    0,    0,    0,    0,    0,    0,  202,  202,
1049     0,    0,    0,    0,    0,  202,  202,  202,  202,  202,
1050   202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
1051   202,  202,  202,    0,    0,    0,    0,    0,  284,    0,
1052     0,    0,    0,    0,    0,    0,  284,  284,  284,  284,
1053   284,  284,  284,  284,  284,  284,  284,  284,  286,    0,
1054     0,  284,  284,  284,    0,    0,    0,  284,  284,  284,
1055   284,  284,  284,  284,  284,  284,    0,  284,  284,  284,
1056   284,  284,  284,  284,    0,  284,    0,    0,    0,    0,
1057   286,    0,  286,    0,    0,    0,    0,    0,    0,    0,
1058   284,    0,    0,    0,    0,    0,    0,  284,  284,    0,
1059   284,    0,  284,  284,  284,    0,    0,  284,  284,    0,
1060   284,  284,  284,  284,  249,    0,    0,    0,    0,    0,
1061     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1062     0,  284,    0,  284,    0,    0,    0,    0,    0,    0,
1063     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1064     0,    0,    0,    0,    0,  284,  284,    0,    0,    0,
1065     0,    0,  284,  284,  284,  284,  284,  284,  284,  284,
1066   284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
1067     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1068     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1069     0,    0,    0,    0,    0,  249,    0,    0,    0,    0,
1070     0,    0,    0,    0,    0,    0,    0,  286,    0,    0,
1071     0,    0,    0,    0,    0,  286,  286,  286,  286,  286,
1072   286,  286,  286,  286,  286,  286,  286,    0,    0,  249,
1073   286,  286,  286,    0,    0,    0,  286,  286,  286,  286,
1074   286,  286,  286,  286,  286,    0,  286,  286,  286,  286,
1075   286,  286,  286,    0,  286,    0,    0,    0,    0,    0,
1076     0,    0,    0,    0,    0,    0,    0,    0,    0,  286,
1077     0,    0,    0,    0,    0,    0,  286,  286,    0,  286,
1078     0,  286,  286,  286,    0,    0,  286,  286,    0,  286,
1079   286,  286,  286,  279,    0,    0,    0,    0,    0,    0,
1080     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1081   286,    0,  286,    0,    0,    0,    0,    0,    0,    0,
1082     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1083     0,    0,    0,    0,  286,  286,    0,    0,    0,    0,
1084     0,  286,  286,  286,  286,  286,  286,  286,  286,  286,
1085   286,  286,  286,  286,  286,  286,  286,  286,  286,    0,
1086     0,    0,    0,    0,  249,    0,    0,    0,    0,    0,
1087     0,    0,  249,  249,  249,  249,  249,  249,  249,  249,
1088   249,  249,  249,  249,  279,    0,    0,  249,  249,  249,
1089     0,    0,    0,  249,  249,  249,  249,  249,  249,  249,
1090   249,  249,    0,  249,  249,  249,  249,  249,  249,  249,
1091     0,  249,    0,    0,    0,    0,    0,    0,  279,    0,
1092     0,    0,    0,    0,    0,    0,  249,    0,    0,    0,
1093     0,    0,    0,  249,  249,    0,  249,    0,  249,  249,
1094   249,    0,    0,  249,  249,    0,  249,  249,  249,  249,
1095   161,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1096     0,    0,    0,    0,    0,    0,    0,  249,    0,  249,
1097     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1098     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1099     0,  249,  249,    0,    0,    0,    0,    0,  249,  249,
1100   249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
1101   249,  249,  249,  249,  249,  249,    0,    0,    0,    0,
1102     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1103     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1104     0,  161,    0,    0,    0,    0,    0,    0,    0,    0,
1105     0,    0,    0,  279,    0,    0,    0,    0,    0,    0,
1106     0,  279,  279,  279,  279,  279,  279,  279,  279,  279,
1107   279,  279,  279,    0,    0,  161,  279,  279,  279,    0,
1108     0,    0,  279,  279,  279,  279,  279,  279,  279,  279,
1109   279,    0,  279,  279,  279,  279,  279,  279,  279,    0,
1110   279,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1111     0,    0,    0,    0,    0,  279,    0,    0,    0,    0,
1112     0,    0,  279,  279,    0,  279,    0,  279,  279,  279,
1113     0,    0,  279,  279,    0,  279,  279,  279,  279,  160,
1114     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1115     0,    0,    0,    0,    0,    0,  279,    0,  279,    0,
1116     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1117     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1118   279,  279,    0,    0,    0,    0,    0,  279,  279,  279,
1119   279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
1120   279,  279,  279,  279,  279,    0,    0,    0,    0,    0,
1121   161,    0,    0,    0,    0,    0,    0,    0,  161,  161,
1122   161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
1123   160,    0,    0,  161,  161,  161,    0,    0,    0,  161,
1124   161,  161,  161,  161,  161,  161,  161,  161,    0,  161,
1125   161,  161,  161,  161,  161,  161,    0,  161,    0,    0,
1126     0,    0,    0,    0,  160,    0,    0,    0,    0,    0,
1127     0,    0,  161,    0,    0,    0,    0,    0,    0,  161,
1128   161,    0,  161,    0,  161,  161,  161,    0,    0,  161,
1129   161,    0,  161,  161,  161,  161,  275,    0,    0,    0,
1130     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1131     0,    0,    0,  161,    0,  161,    0,    0,    0,    0,
1132     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1133     0,    0,    0,    0,    0,    0,    0,  161,  161,    0,
1134     0,    0,    0,    0,  161,  161,  161,  161,  161,  161,
1135   161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
1136   161,  161,    0,    0,    0,    0,    0,    0,    0,    0,
1137     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1138     0,    0,    0,    0,    0,    0,    0,  275,    0,    0,
1139     0,    0,    0,    0,    0,    0,    0,    0,    0,  160,
1140     0,    0,    0,    0,    0,    0,    0,  160,  160,  160,
1141   160,  160,  160,  160,  160,  160,  160,  160,  160,    0,
1142     0,  275,  160,  160,  160,    0,    0,    0,  160,  160,
1143   160,  160,  160,  160,  160,  160,  160,    0,  160,  160,
1144   160,  160,  160,  160,  160,    0,  160,    0,    0,    0,
1145     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1146     0,  160,    0,    0,    0,    0,    0,    0,  160,  160,
1147     0,  160,    0,  160,  160,  160,    0,    0,  160,  160,
1148     0,  160,  160,  160,  160,   97,    0,    0,    0,    0,
1149     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1150     0,    0,  160,    0,  160,    0,    0,    0,    0,    0,
1151     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1152     0,    0,    0,    0,    0,    0,  160,  160,    0,    0,
1153     0,    0,    0,  160,  160,  160,  160,  160,  160,  160,
1154   160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
1155   160,    0,    0,    0,    0,    0,  275,    0,    0,    0,
1156     0,    0,    0,    0,  275,  275,  275,  275,  275,  275,
1157   275,  275,  275,  275,  275,  275,   97,    0,    0,  275,
1158   275,  275,    0,    0,    0,  275,  275,  275,  275,  275,
1159   275,  275,  275,  275,    0,  275,  275,  275,  275,  275,
1160   275,  275,    0,  275,    0,    0,    0,    0,    0,    0,
1161    97,    0,    0,    0,    0,    0,    0,    0,  275,    0,
1162     0,    0,    0,    0,    0,  275,  275,    0,  275,    0,
1163   275,  275,  275,    0,    0,  275,  275,    0,  275,  275,
1164   275,  275,   99,    0,    0,    0,    0,    0,    0,    0,
1165     0,    0,    0,    0,    0,    0,    0,    0,    0,  275,
1166     0,  275,    0,    0,    0,    0,    0,    0,    0,    0,
1167     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1168     0,    0,    0,  275,  275,    0,    0,    0,    0,    0,
1169   275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
1170   275,  275,  275,  275,  275,  275,  275,  275,    0,    0,
1171     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1172     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1173     0,    0,    0,   99,    0,    0,    0,    0,    0,    0,
1174     0,    0,    0,    0,    0,   97,    0,    0,    0,    0,
1175     0,    0,    0,   97,   97,   97,   97,   97,   97,   97,
1176    97,   97,   97,   97,   97,    0,    0,   99,   97,   97,
1177    97,    0,    0,    0,   97,   97,   97,   97,   97,   97,
1178    97,   97,   97,    0,   97,   97,   97,   97,   97,   97,
1179    97,    0,   97,    0,    0,    0,    0,    0,    0,    0,
1180     0,    0,    0,    0,    0,    0,    0,   97,    0,    0,
1181     0,    0,    0,    0,   97,   97,    0,   97,    0,   97,
1182    97,   97,    0,    0,   97,   97,    0,   97,   97,   97,
1183    97,  247,    0,    0,    0,    0,    0,    0,    0,    0,
1184     0,    0,    0,    0,    0,    0,    0,    0,   97,    0,
1185    97,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1186     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1187     0,    0,   97,   97,    0,    0,    0,    0,    0,   97,
1188    97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
1189    97,   97,   97,   97,   97,   97,   97,    0,    0,    0,
1190     0,    0,   99,    0,    0,    0,    0,    0,    0,    0,
1191    99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
1192    99,   99,  247,    0,    0,   99,   99,   99,    0,    0,
1193     0,   99,   99,   99,   99,   99,   99,   99,   99,   99,
1194     0,   99,   99,   99,   99,   99,   99,   99,    0,   99,
1195     0,    0,    0,    0,    0,    0,  247,    0,    0,    0,
1196     0,    0,    0,    0,   99,    0,    0,    0,    0,    0,
1197     0,   99,   99,    0,   99,    0,   99,   99,   99,    0,
1198     0,   99,   99,    0,   99,   99,   99,   99,  257,    0,
1199     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1200     0,    0,    0,    0,    0,   99,    0,   99,    0,    0,
1201     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1202     0,    0,    0,    0,    0,    0,    0,    0,    0,   99,
1203    99,    0,    0,    0,    0,    0,   99,   99,   99,   99,
1204    99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
1205    99,   99,   99,   99,    0,    0,    0,    0,    0,    0,
1206     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1207     0,    0,    0,    0,    0,    0,    0,    0,    0,  257,
1208     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1209     0,  247,    0,    0,    0,    0,    0,    0,    0,  247,
1210   247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
1211   247,    0,    0,  257,  247,  247,  247,    0,    0,    0,
1212   247,  247,  247,  247,  247,  247,  247,  247,  247,    0,
1213   247,  247,  247,  247,  247,  247,  247,    0,  247,    0,
1214     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1215     0,    0,    0,  247,    0,    0,    0,    0,    0,    0,
1216   247,  247,    0,  247,    0,  247,  247,  247,    0,    0,
1217   247,  247,    0,  247,  247,  247,  247,  273,    0,    0,
1218     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1219     0,    0,    0,    0,  247,    0,  247,    0,    0,    0,
1220     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1221     0,    0,    0,    0,    0,    0,    0,    0,  247,  247,
1222     0,    0,    0,    0,    0,  247,  247,  247,  247,  247,
1223   247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
1224   247,  247,  247,    0,    0,    0,    0,    0,  257,    0,
1225     0,    0,    0,    0,    0,    0,  257,  257,  257,  257,
1226   257,  257,  257,  257,  257,  257,  257,  257,  273,    0,
1227     0,  257,  257,  257,    0,    0,    0,  257,  257,  257,
1228   257,  257,  257,  257,  257,  257,    0,  257,  257,  257,
1229   257,  257,  257,  257,    0,  257,    0,    0,    0,    0,
1230     0,    0,  273,    0,    0,    0,    0,    0,    0,    0,
1231   257,    0,    0,    0,    0,    0,    0,  257,  257,    0,
1232   257,    0,  257,  257,  257,    0,    0,  257,  257,    0,
1233   257,  257,  257,  257,   18,    0,    0,    0,    0,    0,
1234     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1235     0,  257,    0,  257,    0,    0,    0,    0,    0,    0,
1236     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1237     0,    0,    0,    0,    0,  257,  257,    0,    0,    0,
1238     0,    0,  257,  257,  257,  257,  257,  257,  257,  257,
1239   257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
1240     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1241     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1242     0,    0,    0,    0,    0,   18,    0,    0,    0,    0,
1243     0,    0,    0,    0,    0,    0,    0,  273,    0,    0,
1244     0,    0,    0,    0,    0,  273,  273,  273,  273,  273,
1245   273,  273,  273,  273,  273,  273,  273,    0,    0,   18,
1246   273,  273,  273,    0,    0,    0,  273,  273,  273,  273,
1247   273,  273,  273,  273,  273,    0,  273,  273,  273,  273,
1248   273,  273,  273,    0,  273,    0,    0,    0,    0,    0,
1249     0,    0,    0,    0,    0,    0,    0,    0,    0,  273,
1250     0,    0,    0,    0,    0,    0,  273,  273,    0,  273,
1251     0,  273,  273,  273,    0,    0,  273,  273,    0,  273,
1252   273,  273,  273,  277,    0,    0,    0,    0,    0,    0,
1253     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1254   273,    0,  273,    0,    0,    0,    0,    0,    0,    0,
1255     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1256     0,    0,    0,    0,  273,  273,    0,    0,    0,    0,
1257     0,  273,  273,  273,  273,  273,  273,  273,  273,  273,
1258   273,  273,  273,  273,  273,  273,  273,  273,  273,    0,
1259     0,    0,    0,    0,   18,    0,    0,    0,    0,    0,
1260     0,    0,   18,   18,   18,   18,   18,   18,   18,   18,
1261    18,   18,   18,   18,  277,    0,    0,   18,   18,   18,
1262     0,    0,    0,   18,   18,   18,   18,   18,   18,   18,
1263    18,   18,    0,   18,   18,   18,   18,   18,   18,   18,
1264     0,   18,    0,    0,    0,    0,    0,    0,  277,    0,
1265     0,    0,    0,    0,    0,    0,   18,    0,    0,    0,
1266     0,    0,    0,   18,   18,    0,   18,    0,   18,   18,
1267    18,    0,    0,   18,   18,    0,   18,   18,   18,   18,
1268   270,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1269     0,    0,    0,    0,    0,    0,    0,   18,    0,   18,
1270     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1271     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1272     0,   18,   18,    0,    0,    0,    0,    0,   18,   18,
1273    18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
1274    18,   18,   18,   18,   18,   18,    0,    0,    0,    0,
1275     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1276     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1277     0,  270,    0,    0,    0,    0,    0,    0,    0,    0,
1278     0,    0,    0,  277,    0,    0,    0,    0,    0,    0,
1279     0,  277,  277,  277,  277,  277,  277,  277,  277,  277,
1280   277,  277,  277,    0,    0,  270,  277,  277,  277,    0,
1281     0,    0,  277,  277,  277,  277,  277,  277,  277,  277,
1282   277,    0,  277,  277,  277,  277,  277,  277,  277,    0,
1283   277,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1284     0,    0,    0,    0,   22,  277,    0,    0,    0,    0,
1285     0,    0,  277,  277,    0,  277,    0,  277,  277,  277,
1286     0,    0,  277,  277,    0,  277,  277,  277,  277,    0,
1287     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1288     0,    0,    0,    0,    0,    0,  277,    0,  277,    0,
1289     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1290     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1291   277,  277,    0,    0,    0,    0,    0,  277,  277,  277,
1292   277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
1293   277,  277,  277,  277,  277,   22,    0,    0,    0,    0,
1294   270,    0,    0,    0,    0,    0,    0,    0,  270,  270,
1295   270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
1296     0,    0,    0,  270,  270,  270,    0,    0,    0,  270,
1297   270,  270,  270,  270,  270,  270,  270,  270,    0,  270,
1298   270,  270,  270,  270,  270,  270,    0,  270,    0,    0,
1299     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1300     0,   25,  270,    0,    0,    0,    0,    0,    0,  270,
1301   270,    0,  270,    0,  270,  270,  270,    0,    0,  270,
1302   270,    0,  270,  270,  270,  270,    0,    0,    0,    0,
1303     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1304     0,    0,    0,  270,    0,  270,    0,    0,    0,    0,
1305     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1306     0,    0,    0,    0,    0,    0,    0,  270,  270,    0,
1307     0,    0,    0,    0,  270,  270,  270,  270,  270,  270,
1308   270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
1309   270,  270,   25,    0,  473,    0,    0,    0,    0,    0,
1310     0,    0,    0,    0,   22,    0,    0,  250,    0,    0,
1311     0,    0,   22,   22,   22,   22,   22,   22,   22,   22,
1312    22,   22,   22,   22,    0,    0,    0,   22,   22,   22,
1313     0,    0,    0,   22,   22,   22,   22,   22,   22,   22,
1314    22,   22,    0,   22,   22,   22,   22,   22,   22,   22,
1315     0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
1316     0,    0,    0,    0,    0,    0,   22,    0,    0,    0,
1317     0,    0,    0,   22,   22,    0,   22,    0,   22,   22,
1318    22,    0,    0,   22,   22,    0,   22,    0,   22,    0,
1319     0,    0,    0,    0,    0,    0,  250,    0,    0,    0,
1320     0,    0,    0,    0,    0,    0,    0,   22,    0,   22,
1321     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1322     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1323     0,   22,   22,    0,    0,    0,    0,    0,   22,   22,
1324    22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
1325    22,   22,   22,   22,   22,   22,    0,    0,    0,    0,
1326     0,   25,    0,    0,    0,    0,    0,    0,    0,   25,
1327    25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
1328    25,    0,    0,    0,   25,   25,   25,    0,    0,    0,
1329    25,   25,   25,   25,   25,   25,   25,   25,   25,    0,
1330    25,   25,   25,   25,   25,   25,   25,    0,   25,    0,
1331     0,  471,    0,    0,    0,  472,    0,    0,    0,    0,
1332     0,    0,    0,   25,  595,  347,    0,    0,    0,    0,
1333    25,   25,    0,   25,    0,   25,   25,   25,    0,    0,
1334    25,   25,    0,   25,    0,   25,    0,    0,    0,    0,
1335     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1336     0,    0,    0,    0,   25,    0,   25,  201,  202,    0,
1337     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1338   201,  202,    0,    0,    0,    0,    0,    0,   25,   25,
1339    59,    0,    0,    0,    0,   25,   25,   25,   25,   25,
1340    25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
1341    25,   25,   25,    0,  347,    0,    0,    0,    0,    0,
1342     0,    0,    0,  239,  240,  241,  242,  243,    0,  244,
1343   205,  245,  246,  247,  248,  249,  239,  240,  241,  242,
1344   243,    0,  244,  205,  245,  246,  247,  248,  249,    0,
1345     0,    0,    0,    0,  207,  208,    0,    0,  474,  475,
1346   712,  713,    0,    0,  251,    0,    0,  207,  208,  201,
1347   202,  714,  715,  716,    0,    0,    0,  251,    0,    0,
1348     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1349     0,    0,    0,    0,  717,    0,  718,  719,  720,  721,
1350   722,  723,  724,  725,  726,  727,    0,    0,    0,    0,
1351     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1352     0,    0,    0,    0,    0,  239,  240,  241,  242,  243,
1353   192,  244,  205,  245,  246,  247,  248,  249,    0,    0,
1354     0,  193,  194,    0,    0,    0,    0,    0,    0,    0,
1355     0,    0,    0,    0,    0,    0,  207,  208,    0,   15,
1356     0,    0,    0,    0,    0,    0,  251,   16,    0,    0,
1357    17,   18,   19,   20,   21,   22,   23,   24,   25,    0,
1358     0,    0,   26,   27,   28,    0,    0,    0,   29,   30,
1359    31,   32,   33,   34,   35,   36,   37,    0,   38,   39,
1360    40,   41,   42,   43,   44,    0,   45,    0,    0,    0,
1361     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1362     0,   46,    0,    0,    0,    0,    0,    0,   47,   48,
1363     0,   49,    0,   50,   51,   52,    0,    0,   53,   54,
1364     0,   55,    0,   56,    0,    0,    0,    0,    0,    0,
1365     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1366     0,    0,   57,    0,   58,    0,    0,    0,    0,    0,
1367     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1368     0,    0,    0,    0,    0,    0,   60,   61,    0,    0,
1369     0,    0,    0,   62,   63,   64,   65,   66,   67,   68,
1370    69,   70,   71,   72,   73,   74,   75,   76,   77,   78,
1371    79,
1372 };
1373 short yycheck[] = {                                      86,
1374    59,  169,  136,  134,   40,   40,  144,  295,  142,  143,
1375   395,   40,  146,  147,  148,   40,  497,   40,   40,   40,
1376    40,  159,  160,  161,  158,   40,   40,   37,  166,   40,
1377   328,  328,   42,   43,   40,   45,  408,   47,   40,  549,
1378   174,   40,  547,   40,   91,   40,  402,  403,   40,   40,
1379   545,  185,    0,   40,  185,  125,  432,  687,  313,   44,
1380   313,   40,   40,  313,  149,  150,  257,  355,   44,  399,
1381    44,  359,   44,  258,   58,   44,   44,  433,   44,   40,
1382    40,   37,  167,   93,  259,   44,   42,   43,   58,   45,
1383    46,   47,   44,   44,  123,   44,   40,  258,  157,  361,
1384   185,  262,  263,  152,  153,  154,  324,  241,  242,  259,
1385   244,   37,  123,   58,  589,   37,   42,   43,  177,   45,
1386    42,   47,  313,  385,  183,   47,  185,  385,  313,   37,
1387   385,   40,  385,  301,   42,  385,   44,   40,  313,   47,
1388   125,  396,  397,  309,  123,  620,   91,  313,   40,  125,
1389   385,  125,  313,  125,  239,  240,  125,  125,  385,  125,
1390   641,  396,  397,  313,  313,  795,  125,   93,   41,   58,
1391    43,  320,   45,  125,  125,   41,  125,   37,   44,   44,
1392   661,    0,   42,   43,   37,   45,  308,   47,  325,   42,
1393    43,  313,   45,  703,   47,   37,  701,  328,   91,   41,
1394    42,   43,   40,   45,  699,   47,   41,  258,  346,   44,
1395    37,  262,  263,  260,   41,   42,   43,   44,   45,  311,
1396    47,  313,  258,  361,  358,  393,  360,   58,  257,  313,
1397   368,  315,  316,  521,  372,  258,  370,  371,  376,  262,
1398    93,  300,   58,  258,  541,  543,  257,  306,  307,  336,
1399   309,  310,  311,  312,  313,  585,  258,  629,   58,  258,
1400   262,  258,  396,  262,  263,  257,  622,  258,  327,  328,
1401   257,  262,  263,  343,  650,  345,  407,  298,  257,  257,
1402   339,   41,   58,  421,   44,  123,   58,   41,  313,  348,
1403    44,  313,  314,  313,  353,   58,  257,  257,  357,  313,
1404   314,   58,  313,  317,  318,   58,  125,  313,   58,  308,
1405   309,  310,   58,  257,  313,  314,  313,  314,  313,  378,
1406   454,  269,  270,   58,  323,  264,  265,  266,  267,   58,
1407   464,  465,   58,  621,  313,  384,  269,  270,  337,  338,
1408    58,  390,  391,  392,  286,  287,  288,  346,  347,  348,
1409   349,  350,  313,  313,  257,  318,  319,  367,  394,  395,
1410   419,   58,  376,  362,  845,  364,   58,  402,  403,  313,
1411   385,  394,  395,    0,  385,  404,  405,  376,  763,  394,
1412   395,  396,  397,  312,  313,  341,  400,  401,  385,  298,
1413   390,  391,  394,  395,  430,  406,  407,  394,  395,  396,
1414   397,  400,  401,   58,  313,  314,  385,  430,  539,  697,
1415   313,   38,  404,  405,   41,  430,   43,   44,   45,   46,
1416   258,  313,  314,   58,  385,  385,  317,  318,  430,  408,
1417   409,  430,  343,  430,  345,   58,  274,   58,  276,   58,
1418    58,  385,  280,  281,  282,  406,  407,  615,  408,  409,
1419   269,  270,  590,   58,   58,   58,  594,   58,   58,  597,
1420   598,   58,   58,   37,   91,  524,   93,  376,   42,   43,
1421    58,   45,   58,   47,   58,  313,  314,   58,  537,  647,
1422   648,  649,  385,   58,  376,   58,  617,  387,   40,   58,
1423    61,  400,  401,   44,  332,   37,  123,   40,  125,   61,
1424    42,   43,  790,   45,   91,   47,   40,  123,  400,  401,
1425    46,   91,  800,   91,   44,  646,   44,   37,   44,   93,
1426   384,  652,   42,   43,  343,   45,  345,   47,  258,   40,
1427     0,   91,  257,  592,  593,   37,  374,  596,  376,   44,
1428    42,   43,   91,   45,   37,   47,   44,  385,  257,   42,
1429    43,   93,   45,  841,   47,   44,  394,  395,  396,  397,
1430    91,   44,  400,  401,  402,  403,   44,   44,   38,   44,
1431    38,   41,   37,   43,   44,   45,   46,   42,   43,   40,
1432    45,   40,   47,   40,   40,  716,  754,   40,  258,   37,
1433    91,   93,  430,   41,   42,   43,  655,   45,   44,   47,
1434    93,   44,   44,   40,  258,   37,  665,  775,  776,  777,
1435    42,   43,   37,   45,   44,   47,   41,   42,   43,   44,
1436    45,   91,   47,   93,   37,   44,  260,   44,   93,   42,
1437    43,   44,   45,  260,   47,   44,  258,   44,   44,   44,
1438    44,  268,  269,  270,  271,  272,  273,  274,  275,  276,
1439   277,  278,  279,  123,   44,  125,  283,  284,  285,  258,
1440    44,   93,  289,  290,  291,  292,  293,  294,  295,  296,
1441   297,   44,  299,  300,  301,  302,  303,  304,  305,  738,
1442   307,   44,  395,   44,  397,   93,  399,   44,  401,   41,
1443   403,   41,  405,   44,  407,  322,  409,   44,  411,   58,
1444    58,  257,  329,  330,   58,  332,   93,  334,  335,  336,
1445    58,  257,  339,  340,  341,  342,  343,  344,  345,    0,
1446   854,   44,   37,  386,  783,   44,  860,   42,   43,   44,
1447    45,   44,   47,   44,  259,  312,  363,   44,  365,   44,
1448   367,  382,  312,  830,   41,   44,   44,   93,  258,  321,
1449    44,   44,   44,  321,   44,  125,  843,  257,   44,   41,
1450   387,  388,  258,   44,   44,  385,   44,  394,  395,  396,
1451   397,  398,  399,  400,  401,  402,  403,  404,  405,  406,
1452   407,  408,  409,  410,  411,  124,   44,  385,   41,   44,
1453   260,   91,   44,   44,   44,   44,   44,   44,  268,  269,
1454   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
1455    91,  258,   93,  283,  284,  285,   91,   44,   44,  289,
1456   290,  291,  292,  293,  294,  295,  296,  297,   44,  299,
1457   300,  301,  302,  303,  304,  305,  258,  307,  258,   44,
1458   258,   44,  123,   44,  125,   44,  312,   44,  258,   44,
1459    44,  331,  322,   44,  257,   41,   46,   44,   58,  329,
1460   330,  258,  332,   40,  334,  335,  336,   41,   44,  339,
1461   340,  341,  342,  343,  344,  345,  388,  257,  386,   41,
1462    58,   41,  394,   58,  396,   58,  398,   58,  400,   58,
1463   402,   44,  404,  363,  406,  365,  408,  367,  410,  259,
1464    44,  312,   44,   40,   44,  258,  321,  321,    0,  258,
1465    44,   44,  385,   44,   44,  123,   44,  387,  388,   44,
1466    41,   41,   41,   41,  394,  395,  396,  397,  398,  399,
1467   400,  401,  402,  403,  404,  405,  406,  407,  408,  409,
1468   410,  411,  258,   44,   93,   44,   38,  388,  258,   41,
1469   258,   44,   44,  394,  395,  396,  397,  398,  399,  400,
1470   401,  402,  403,  404,  405,  406,  407,  408,  409,  410,
1471   411,   44,   44,  258,  258,   44,   41,   58,   58,  260,
1472   259,   58,   58,  257,  286,   41,   44,  268,  269,  270,
1473   271,  272,  273,  274,  275,  276,  277,  278,  279,   91,
1474    44,  258,  283,  284,  285,   41,   44,   41,  289,  290,
1475   291,  292,  293,  294,  295,  296,  297,   41,  299,  300,
1476   301,  302,  303,  304,  305,   44,  307,  261,   58,  125,
1477    44,   41,   44,  125,  258,   44,  313,  258,  258,  124,
1478    58,  322,  259,  286,   41,  258,   41,   41,  329,  330,
1479    41,  332,   44,  334,  335,  336,   41,  383,  339,  340,
1480    41,  342,  343,  344,  345,   41,   44,   44,   41,   44,
1481     0,    0,   41,   41,  386,  125,   93,   41,   44,   41,
1482   123,  123,  363,   41,  365,  125,  677,  794,  602,  652,
1483   761,  191,  820,  449,   48,  832,  248,    0,  442,   54,
1484   859,  168,  419,  753,  395,    6,  387,  388,  319,  431,
1485   766,  163,  138,  394,  395,  396,  397,  398,  399,  400,
1486   401,  402,  403,  404,  405,  406,  407,  408,  409,  410,
1487   411,  340,  629,  454,   -1,   -1,   -1,   -1,   41,   -1,
1488    -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1489    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1490    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,   -1,
1491    -1,   -1,   -1,   -1,   -1,   -1,  268,  269,  270,  271,
1492   272,  273,  274,  275,  276,  277,  278,  279,   91,   -1,
1493    -1,  283,  284,  285,   -1,   -1,   -1,  289,  290,  291,
1494   292,  293,  294,  295,  296,  297,   -1,  299,  300,  301,
1495   302,  303,  304,  305,   -1,  307,   -1,   -1,   -1,   -1,
1496    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1497   322,   -1,   -1,   -1,   -1,   -1,   -1,  329,  330,   -1,
1498   332,   -1,  334,  335,  336,   -1,   -1,  339,  340,   -1,
1499   342,  343,  344,  345,    0,   -1,   -1,   -1,   -1,   -1,
1500    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1501    -1,  363,   -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,
1502    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1503    -1,   -1,   -1,   -1,   -1,  387,  388,   -1,   44,   -1,
1504    -1,   -1,  394,  395,  396,  397,  398,  399,  400,  401,
1505   402,  403,  404,  405,  406,  407,  408,  409,  410,  411,
1506    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1507    -1,   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,
1508    -1,   -1,   -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,
1509    -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,
1510    -1,   -1,   -1,   -1,   -1,  268,  269,  270,  271,  272,
1511   273,  274,  275,  276,  277,  278,  279,  123,   -1,  125,
1512   283,  284,  285,   -1,   -1,   -1,  289,  290,  291,  292,
1513   293,  294,  295,  296,  297,   -1,  299,  300,  301,  302,
1514   303,  304,  305,   -1,  307,   -1,   -1,   -1,   -1,   -1,
1515    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,
1516    -1,   -1,   -1,   -1,   -1,   -1,  329,  330,   -1,  332,
1517    -1,  334,  335,  336,   -1,   -1,  339,  340,   -1,  342,
1518   343,  344,  345,    0,   -1,   -1,   -1,   -1,   -1,   -1,
1519    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1520   363,   -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1521    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1522    -1,   -1,   -1,   -1,  387,  388,   -1,   44,   -1,   -1,
1523    -1,  394,  395,  396,  397,  398,  399,  400,  401,  402,
1524   403,  404,  405,  406,  407,  408,  409,  410,  411,   -1,
1525    -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,
1526    -1,   -1,  268,  269,  270,  271,  272,  273,  274,  275,
1527   276,  277,  278,  279,   91,   -1,   -1,  283,  284,  285,
1528    -1,   -1,   -1,  289,  290,  291,  292,  293,  294,  295,
1529   296,  297,   -1,  299,  300,  301,  302,  303,  304,  305,
1530    -1,  307,   -1,   -1,   -1,   -1,  123,   -1,  125,   -1,
1531    -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,
1532    -1,   -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,
1533   336,   -1,   -1,  339,  340,   -1,  342,  343,  344,  345,
1534     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  312,
1535   313,  314,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,
1536    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1537    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1538    -1,  387,  388,   -1,   44,   -1,   -1,   -1,  394,  395,
1539   396,  397,  398,  399,  400,  401,  402,  403,  404,  405,
1540   406,  407,  408,  409,  410,  411,  369,  370,  371,  372,
1541   373,   -1,  375,  376,  377,  378,  379,  380,  381,   -1,
1542    -1,   -1,   -1,   40,   -1,   -1,   -1,   -1,   -1,   -1,
1543    -1,   91,   -1,   -1,   -1,   -1,   -1,  400,  401,   -1,
1544    -1,   -1,   -1,  260,   -1,   -1,   -1,  410,   -1,   -1,
1545    -1,  268,  269,  270,  271,  272,  273,  274,  275,  276,
1546   277,  278,  279,  123,   -1,  125,  283,  284,  285,   -1,
1547    -1,   -1,  289,  290,  291,  292,  293,  294,  295,  296,
1548   297,   -1,  299,  300,  301,  302,  303,  304,  305,   -1,
1549   307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1550    -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,
1551    -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,  336,
1552    -1,   -1,  339,  340,   -1,  342,  343,  344,  345,    0,
1553    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1554    -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,   -1,
1555    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1556    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1557   387,  388,   -1,   44,   -1,   -1,   -1,  394,  395,  396,
1558   397,  398,  399,  400,  401,  402,  403,  404,  405,  406,
1559   407,  408,  409,  410,  411,   -1,   -1,   -1,   -1,   -1,
1560   260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,  269,
1561   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
1562    91,   -1,   -1,  283,  284,  285,   -1,   -1,   -1,  289,
1563   290,  291,  292,  293,  294,  295,  296,  297,   -1,  299,
1564   300,  301,  302,  303,  304,  305,   -1,  307,   -1,   -1,
1565    -1,   -1,  123,   -1,  125,   -1,   -1,   -1,   -1,   -1,
1566    -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,  329,
1567   330,   -1,  332,   -1,  334,  335,  336,   -1,   -1,  339,
1568   340,   -1,  342,  343,  344,  345,    0,   -1,   -1,   -1,
1569    -1,   -1,   -1,   -1,   -1,   -1,  313,  314,   -1,   -1,
1570    -1,   -1,   -1,  363,   -1,  365,   -1,   -1,   -1,   -1,
1571    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1572    -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,  388,   -1,
1573    -1,   -1,   -1,   -1,  394,  395,  396,  397,  398,  399,
1574   400,  401,  402,  403,  404,  405,  406,  407,  408,  409,
1575   410,  411,  369,  370,  371,  372,  373,   -1,  375,  376,
1576   377,  378,  379,  380,  381,   -1,   -1,   -1,   -1,   -1,
1577    -1,   -1,   -1,   -1,   -1,   -1,   -1,   91,   -1,   -1,
1578    -1,   -1,   -1,  400,  401,   -1,   -1,   -1,   -1,  260,
1579    -1,   -1,   -1,  410,   -1,   -1,   -1,  268,  269,  270,
1580   271,  272,  273,  274,  275,  276,  277,  278,  279,  123,
1581    -1,  125,  283,  284,  285,   -1,   -1,   -1,  289,  290,
1582   291,  292,  293,  294,  295,  296,  297,   -1,  299,  300,
1583   301,  302,  303,  304,  305,   -1,  307,   -1,   -1,   -1,
1584    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1585    -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,  329,  330,
1586    -1,  332,   -1,  334,  335,  336,   -1,   -1,  339,  340,
1587    -1,  342,  343,  344,  345,    0,   -1,   -1,   -1,   -1,
1588    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1589    -1,   -1,  363,   -1,  365,   -1,   -1,   -1,   -1,   -1,
1590    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1591    -1,   -1,   -1,   -1,   -1,   -1,  387,  388,   -1,   -1,
1592    -1,   -1,   -1,  394,  395,  396,  397,  398,  399,  400,
1593   401,  402,  403,  404,  405,  406,  407,  408,  409,  410,
1594   411,   -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,
1595    -1,   -1,   -1,   -1,  268,  269,  270,  271,  272,  273,
1596   274,  275,  276,  277,  278,  279,   91,   -1,   -1,  283,
1597   284,  285,   -1,   -1,   -1,  289,  290,  291,  292,  293,
1598   294,  295,  296,  297,   -1,  299,  300,  301,  302,  303,
1599   304,  305,   -1,  307,   -1,   -1,   -1,   -1,  123,   -1,
1600   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,
1601    -1,   -1,   -1,   -1,   -1,  329,  330,   -1,  332,   -1,
1602   334,  335,  336,   -1,   -1,  339,  340,   -1,  342,  343,
1603   344,  345,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1604    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,
1605    -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1606    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1607    -1,   -1,   -1,  387,  388,   -1,   -1,   -1,   -1,   -1,
1608   394,  395,  396,  397,  398,  399,  400,  401,  402,  403,
1609   404,  405,  406,  407,  408,  409,  410,  411,   -1,   -1,
1610    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1611    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1612    -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,   -1,   -1,
1613    -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,
1614    -1,   -1,   -1,  268,  269,  270,  271,  272,  273,  274,
1615   275,  276,  277,  278,  279,   -1,   -1,  125,  283,  284,
1616   285,   -1,   -1,   -1,  289,  290,  291,  292,  293,  294,
1617   295,  296,  297,   -1,  299,  300,  301,  302,  303,  304,
1618   305,   -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1619    -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,
1620    -1,   -1,   -1,   -1,  329,  330,   -1,  332,   -1,  334,
1621   335,  336,   -1,   -1,  339,  340,   -1,  342,  343,  344,
1622   345,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1623    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,
1624   365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1625    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1626    -1,   -1,  387,  388,   -1,   -1,   -1,   -1,   -1,  394,
1627   395,  396,  397,  398,  399,  400,  401,  402,  403,  404,
1628   405,  406,  407,  408,  409,  410,  411,   -1,   -1,   -1,
1629    -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1630   268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
1631   278,  279,   91,   -1,   -1,  283,  284,  285,   -1,   -1,
1632    -1,  289,  290,  291,  292,  293,  294,  295,  296,  297,
1633    -1,  299,  300,  301,  302,  303,  304,  305,   -1,  307,
1634    -1,   -1,   -1,   -1,  123,   -1,  125,   -1,   -1,   -1,
1635    -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,
1636    -1,  329,  330,  331,  332,   -1,  334,  335,  336,   -1,
1637    -1,  339,  340,   -1,  342,  343,  344,  345,    0,   -1,
1638    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1639    -1,   -1,   -1,   -1,   -1,  363,   -1,  365,   -1,   -1,
1640    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1641    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,
1642   388,   -1,   -1,   -1,   -1,   -1,  394,  395,  396,  397,
1643   398,  399,  400,  401,  402,  403,  404,  405,  406,  407,
1644   408,  409,  410,  411,   -1,   -1,   -1,   -1,   -1,   -1,
1645    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1646    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   91,
1647    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1648    -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,
1649   269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
1650   279,  123,   -1,  125,  283,  284,  285,   -1,   -1,   -1,
1651   289,  290,  291,  292,  293,  294,  295,  296,  297,   -1,
1652   299,  300,  301,  302,  303,  304,  305,   -1,  307,   -1,
1653    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1654    -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,
1655   329,  330,   -1,  332,   -1,  334,  335,  336,   -1,   -1,
1656   339,  340,   -1,  342,  343,  344,  345,    0,   -1,   -1,
1657    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1658    -1,   -1,   -1,   -1,  363,   -1,  365,   -1,   -1,   -1,
1659    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1660    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,  388,
1661    -1,   -1,   -1,   -1,   -1,  394,  395,  396,  397,  398,
1662   399,  400,  401,  402,  403,  404,  405,  406,  407,  408,
1663   409,  410,  411,   -1,   -1,   -1,   -1,   -1,  260,   -1,
1664    -1,   -1,   -1,   -1,   -1,   -1,  268,  269,  270,  271,
1665   272,  273,  274,  275,  276,  277,  278,  279,   91,   -1,
1666    -1,  283,  284,  285,   -1,   -1,   -1,  289,  290,  291,
1667   292,  293,  294,  295,  296,  297,   -1,  299,  300,  301,
1668   302,  303,  304,  305,   -1,  307,   -1,   -1,   -1,   -1,
1669   123,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1670   322,   -1,   -1,   -1,   -1,   -1,   -1,  329,  330,   -1,
1671   332,   -1,  334,  335,  336,   -1,   -1,  339,  340,   -1,
1672   342,  343,  344,  345,    0,   -1,   -1,   -1,   -1,   -1,
1673    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1674    -1,  363,   -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,
1675    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1676    -1,   -1,   -1,   -1,   -1,  387,  388,   -1,   -1,   -1,
1677    -1,   -1,  394,  395,  396,  397,  398,  399,  400,  401,
1678   402,  403,  404,  405,  406,  407,  408,  409,  410,  411,
1679    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1680    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1681    -1,   -1,   -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,
1682    -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,
1683    -1,   -1,   -1,   -1,   -1,  268,  269,  270,  271,  272,
1684   273,  274,  275,  276,  277,  278,  279,   -1,   -1,  125,
1685   283,  284,  285,   -1,   -1,   -1,  289,  290,  291,  292,
1686   293,  294,  295,  296,  297,   -1,  299,  300,  301,  302,
1687   303,  304,  305,   -1,  307,   -1,   -1,   -1,   -1,   -1,
1688    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,
1689    -1,   -1,   -1,   -1,   -1,   -1,  329,  330,   -1,  332,
1690    -1,  334,  335,  336,   -1,   -1,  339,  340,   -1,  342,
1691   343,  344,  345,    0,   -1,   -1,   -1,   -1,   -1,   -1,
1692    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1693   363,   -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1694    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1695    -1,   -1,   -1,   -1,  387,  388,   -1,   -1,   -1,   -1,
1696    -1,  394,  395,  396,  397,  398,  399,  400,  401,  402,
1697   403,  404,  405,  406,  407,  408,  409,  410,  411,   -1,
1698    -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,
1699    -1,   -1,  268,  269,  270,  271,  272,  273,  274,  275,
1700   276,  277,  278,  279,   91,   -1,   -1,  283,  284,  285,
1701    -1,   -1,   -1,  289,  290,  291,  292,  293,  294,  295,
1702   296,  297,   -1,  299,  300,  301,  302,  303,  304,  305,
1703    -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,
1704    -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,
1705    -1,   -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,
1706   336,   -1,   -1,  339,  340,   -1,  342,  343,  344,  345,
1707     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1708    -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,
1709    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1710    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1711    -1,  387,  388,   -1,   -1,   -1,   -1,   -1,  394,  395,
1712   396,  397,  398,  399,  400,  401,  402,  403,  404,  405,
1713   406,  407,  408,  409,  410,  411,   -1,   -1,   -1,   -1,
1714    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1715    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1716    -1,   91,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1717    -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,
1718    -1,  268,  269,  270,  271,  272,  273,  274,  275,  276,
1719   277,  278,  279,   -1,   -1,  125,  283,  284,  285,   -1,
1720    -1,   -1,  289,  290,  291,  292,  293,  294,  295,  296,
1721   297,   -1,  299,  300,  301,  302,  303,  304,  305,   -1,
1722   307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1723    -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,
1724    -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,  336,
1725    -1,   -1,  339,  340,   -1,  342,  343,  344,  345,    0,
1726    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1727    -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,   -1,
1728    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1729    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1730   387,  388,   -1,   -1,   -1,   -1,   -1,  394,  395,  396,
1731   397,  398,  399,  400,  401,  402,  403,  404,  405,  406,
1732   407,  408,  409,  410,  411,   -1,   -1,   -1,   -1,   -1,
1733   260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,  269,
1734   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
1735    91,   -1,   -1,  283,  284,  285,   -1,   -1,   -1,  289,
1736   290,  291,  292,  293,  294,  295,  296,  297,   -1,  299,
1737   300,  301,  302,  303,  304,  305,   -1,  307,   -1,   -1,
1738    -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,
1739    -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,  329,
1740   330,   -1,  332,   -1,  334,  335,  336,   -1,   -1,  339,
1741   340,   -1,  342,  343,  344,  345,    0,   -1,   -1,   -1,
1742    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1743    -1,   -1,   -1,  363,   -1,  365,   -1,   -1,   -1,   -1,
1744    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1745    -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,  388,   -1,
1746    -1,   -1,   -1,   -1,  394,  395,  396,  397,  398,  399,
1747   400,  401,  402,  403,  404,  405,  406,  407,  408,  409,
1748   410,  411,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1749    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1750    -1,   -1,   -1,   -1,   -1,   -1,   -1,   91,   -1,   -1,
1751    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,
1752    -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,  269,  270,
1753   271,  272,  273,  274,  275,  276,  277,  278,  279,   -1,
1754    -1,  125,  283,  284,  285,   -1,   -1,   -1,  289,  290,
1755   291,  292,  293,  294,  295,  296,  297,   -1,  299,  300,
1756   301,  302,  303,  304,  305,   -1,  307,   -1,   -1,   -1,
1757    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1758    -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,  329,  330,
1759    -1,  332,   -1,  334,  335,  336,   -1,   -1,  339,  340,
1760    -1,  342,  343,  344,  345,    0,   -1,   -1,   -1,   -1,
1761    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1762    -1,   -1,  363,   -1,  365,   -1,   -1,   -1,   -1,   -1,
1763    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1764    -1,   -1,   -1,   -1,   -1,   -1,  387,  388,   -1,   -1,
1765    -1,   -1,   -1,  394,  395,  396,  397,  398,  399,  400,
1766   401,  402,  403,  404,  405,  406,  407,  408,  409,  410,
1767   411,   -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,
1768    -1,   -1,   -1,   -1,  268,  269,  270,  271,  272,  273,
1769   274,  275,  276,  277,  278,  279,   91,   -1,   -1,  283,
1770   284,  285,   -1,   -1,   -1,  289,  290,  291,  292,  293,
1771   294,  295,  296,  297,   -1,  299,  300,  301,  302,  303,
1772   304,  305,   -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,
1773   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,
1774    -1,   -1,   -1,   -1,   -1,  329,  330,   -1,  332,   -1,
1775   334,  335,  336,   -1,   -1,  339,  340,   -1,  342,  343,
1776   344,  345,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1777    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,
1778    -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1779    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1780    -1,   -1,   -1,  387,  388,   -1,   -1,   -1,   -1,   -1,
1781   394,  395,  396,  397,  398,  399,  400,  401,  402,  403,
1782   404,  405,  406,  407,  408,  409,  410,  411,   -1,   -1,
1783    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1784    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1785    -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,   -1,   -1,
1786    -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,
1787    -1,   -1,   -1,  268,  269,  270,  271,  272,  273,  274,
1788   275,  276,  277,  278,  279,   -1,   -1,  125,  283,  284,
1789   285,   -1,   -1,   -1,  289,  290,  291,  292,  293,  294,
1790   295,  296,  297,   -1,  299,  300,  301,  302,  303,  304,
1791   305,   -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1792    -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,
1793    -1,   -1,   -1,   -1,  329,  330,   -1,  332,   -1,  334,
1794   335,  336,   -1,   -1,  339,  340,   -1,  342,  343,  344,
1795   345,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1796    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,
1797   365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1798    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1799    -1,   -1,  387,  388,   -1,   -1,   -1,   -1,   -1,  394,
1800   395,  396,  397,  398,  399,  400,  401,  402,  403,  404,
1801   405,  406,  407,  408,  409,  410,  411,   -1,   -1,   -1,
1802    -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1803   268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
1804   278,  279,   91,   -1,   -1,  283,  284,  285,   -1,   -1,
1805    -1,  289,  290,  291,  292,  293,  294,  295,  296,  297,
1806    -1,  299,  300,  301,  302,  303,  304,  305,   -1,  307,
1807    -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
1808    -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,
1809    -1,  329,  330,   -1,  332,   -1,  334,  335,  336,   -1,
1810    -1,  339,  340,   -1,  342,  343,  344,  345,    0,   -1,
1811    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1812    -1,   -1,   -1,   -1,   -1,  363,   -1,  365,   -1,   -1,
1813    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1814    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,
1815   388,   -1,   -1,   -1,   -1,   -1,  394,  395,  396,  397,
1816   398,  399,  400,  401,  402,  403,  404,  405,  406,  407,
1817   408,  409,  410,  411,   -1,   -1,   -1,   -1,   -1,   -1,
1818    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1819    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   91,
1820    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1821    -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,
1822   269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
1823   279,   -1,   -1,  125,  283,  284,  285,   -1,   -1,   -1,
1824   289,  290,  291,  292,  293,  294,  295,  296,  297,   -1,
1825   299,  300,  301,  302,  303,  304,  305,   -1,  307,   -1,
1826    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1827    -1,   -1,   -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,
1828   329,  330,   -1,  332,   -1,  334,  335,  336,   -1,   -1,
1829   339,  340,   -1,  342,  343,  344,  345,    0,   -1,   -1,
1830    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1831    -1,   -1,   -1,   -1,  363,   -1,  365,   -1,   -1,   -1,
1832    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1833    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,  388,
1834    -1,   -1,   -1,   -1,   -1,  394,  395,  396,  397,  398,
1835   399,  400,  401,  402,  403,  404,  405,  406,  407,  408,
1836   409,  410,  411,   -1,   -1,   -1,   -1,   -1,  260,   -1,
1837    -1,   -1,   -1,   -1,   -1,   -1,  268,  269,  270,  271,
1838   272,  273,  274,  275,  276,  277,  278,  279,   91,   -1,
1839    -1,  283,  284,  285,   -1,   -1,   -1,  289,  290,  291,
1840   292,  293,  294,  295,  296,  297,   -1,  299,  300,  301,
1841   302,  303,  304,  305,   -1,  307,   -1,   -1,   -1,   -1,
1842    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1843   322,   -1,   -1,   -1,   -1,   -1,   -1,  329,  330,   -1,
1844   332,   -1,  334,  335,  336,   -1,   -1,  339,  340,   -1,
1845   342,  343,  344,  345,    0,   -1,   -1,   -1,   -1,   -1,
1846    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1847    -1,  363,   -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,
1848    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1849    -1,   -1,   -1,   -1,   -1,  387,  388,   -1,   -1,   -1,
1850    -1,   -1,  394,  395,  396,  397,  398,  399,  400,  401,
1851   402,  403,  404,  405,  406,  407,  408,  409,  410,  411,
1852    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1853    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1854    -1,   -1,   -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,
1855    -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,
1856    -1,   -1,   -1,   -1,   -1,  268,  269,  270,  271,  272,
1857   273,  274,  275,  276,  277,  278,  279,   -1,   -1,  125,
1858   283,  284,  285,   -1,   -1,   -1,  289,  290,  291,  292,
1859   293,  294,  295,  296,  297,   -1,  299,  300,  301,  302,
1860   303,  304,  305,   -1,  307,   -1,   -1,   -1,   -1,   -1,
1861    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  322,
1862    -1,   -1,   -1,   -1,   -1,   -1,  329,  330,   -1,  332,
1863    -1,  334,  335,  336,   -1,   -1,  339,  340,   -1,  342,
1864   343,  344,  345,    0,   -1,   -1,   -1,   -1,   -1,   -1,
1865    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1866   363,   -1,  365,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1867    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1868    -1,   -1,   -1,   -1,  387,  388,   -1,   -1,   -1,   -1,
1869    -1,  394,  395,  396,  397,  398,  399,  400,  401,  402,
1870   403,  404,  405,  406,  407,  408,  409,  410,  411,   -1,
1871    -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,
1872    -1,   -1,  268,  269,  270,  271,  272,  273,  274,  275,
1873   276,  277,  278,  279,   91,   -1,   -1,  283,  284,  285,
1874    -1,   -1,   -1,  289,  290,  291,  292,  293,  294,  295,
1875   296,  297,   -1,  299,  300,  301,  302,  303,  304,  305,
1876    -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,
1877    -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,
1878    -1,   -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,
1879   336,   -1,   -1,  339,  340,   -1,  342,  343,  344,  345,
1880     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1881    -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,
1882    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1883    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1884    -1,  387,  388,   -1,   -1,   -1,   -1,   -1,  394,  395,
1885   396,  397,  398,  399,  400,  401,  402,  403,  404,  405,
1886   406,  407,  408,  409,  410,  411,   -1,   -1,   -1,   -1,
1887    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1888    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1889    -1,   91,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1890    -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,
1891    -1,  268,  269,  270,  271,  272,  273,  274,  275,  276,
1892   277,  278,  279,   -1,   -1,  125,  283,  284,  285,   -1,
1893    -1,   -1,  289,  290,  291,  292,  293,  294,  295,  296,
1894   297,   -1,  299,  300,  301,  302,  303,  304,  305,   -1,
1895   307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1896    -1,   -1,   -1,   -1,    0,  322,   -1,   -1,   -1,   -1,
1897    -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,  336,
1898    -1,   -1,  339,  340,   -1,  342,  343,  344,  345,   -1,
1899    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1900    -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,   -1,
1901    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1902    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1903   387,  388,   -1,   -1,   -1,   -1,   -1,  394,  395,  396,
1904   397,  398,  399,  400,  401,  402,  403,  404,  405,  406,
1905   407,  408,  409,  410,  411,   91,   -1,   -1,   -1,   -1,
1906   260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,  269,
1907   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
1908    -1,   -1,   -1,  283,  284,  285,   -1,   -1,   -1,  289,
1909   290,  291,  292,  293,  294,  295,  296,  297,   -1,  299,
1910   300,  301,  302,  303,  304,  305,   -1,  307,   -1,   -1,
1911    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1912    -1,    0,  322,   -1,   -1,   -1,   -1,   -1,   -1,  329,
1913   330,   -1,  332,   -1,  334,  335,  336,   -1,   -1,  339,
1914   340,   -1,  342,  343,  344,  345,   -1,   -1,   -1,   -1,
1915    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1916    -1,   -1,   -1,  363,   -1,  365,   -1,   -1,   -1,   -1,
1917    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1918    -1,   -1,   -1,   -1,   -1,   -1,   -1,  387,  388,   -1,
1919    -1,   -1,   -1,   -1,  394,  395,  396,  397,  398,  399,
1920   400,  401,  402,  403,  404,  405,  406,  407,  408,  409,
1921   410,  411,   91,   -1,   40,   -1,   -1,   -1,   -1,   -1,
1922    -1,   -1,   -1,   -1,  260,   -1,   -1,   40,   -1,   -1,
1923    -1,   -1,  268,  269,  270,  271,  272,  273,  274,  275,
1924   276,  277,  278,  279,   -1,   -1,   -1,  283,  284,  285,
1925    -1,   -1,   -1,  289,  290,  291,  292,  293,  294,  295,
1926   296,  297,   -1,  299,  300,  301,  302,  303,  304,  305,
1927    -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1928    -1,   -1,   -1,   -1,   -1,   -1,  322,   -1,   -1,   -1,
1929    -1,   -1,   -1,  329,  330,   -1,  332,   -1,  334,  335,
1930   336,   -1,   -1,  339,  340,   -1,  342,   -1,  344,   -1,
1931    -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
1932    -1,   -1,   -1,   -1,   -1,   -1,   -1,  363,   -1,  365,
1933    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1934    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1935    -1,  387,  388,   -1,   -1,   -1,   -1,   -1,  394,  395,
1936   396,  397,  398,  399,  400,  401,  402,  403,  404,  405,
1937   406,  407,  408,  409,  410,  411,   -1,   -1,   -1,   -1,
1938    -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  268,
1939   269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
1940   279,   -1,   -1,   -1,  283,  284,  285,   -1,   -1,   -1,
1941   289,  290,  291,  292,  293,  294,  295,  296,  297,   -1,
1942   299,  300,  301,  302,  303,  304,  305,   -1,  307,   -1,
1943    -1,  257,   -1,   -1,   -1,  261,   -1,   -1,   -1,   -1,
1944    -1,   -1,   -1,  322,  257,  258,   -1,   -1,   -1,   -1,
1945   329,  330,   -1,  332,   -1,  334,  335,  336,   -1,   -1,
1946   339,  340,   -1,  342,   -1,  344,   -1,   -1,   -1,   -1,
1947    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1948    -1,   -1,   -1,   -1,  363,   -1,  365,  313,  314,   -1,
1949    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1950   313,  314,   -1,   -1,   -1,   -1,   -1,   -1,  387,  388,
1951    91,   -1,   -1,   -1,   -1,  394,  395,  396,  397,  398,
1952   399,  400,  401,  402,  403,  404,  405,  406,  407,  408,
1953   409,  410,  411,   -1,  258,   -1,   -1,   -1,   -1,   -1,
1954    -1,   -1,   -1,  369,  370,  371,  372,  373,   -1,  375,
1955   376,  377,  378,  379,  380,  381,  369,  370,  371,  372,
1956   373,   -1,  375,  376,  377,  378,  379,  380,  381,   -1,
1957    -1,   -1,   -1,   -1,  400,  401,   -1,   -1,  404,  405,
1958   315,  316,   -1,   -1,  410,   -1,   -1,  400,  401,  313,
1959   314,  326,  327,  328,   -1,   -1,   -1,  410,   -1,   -1,
1960    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1961    -1,   -1,   -1,   -1,  349,   -1,  351,  352,  353,  354,
1962   355,  356,  357,  358,  359,  360,   -1,   -1,   -1,   -1,
1963    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1964    -1,   -1,   -1,   -1,   -1,  369,  370,  371,  372,  373,
1965   385,  375,  376,  377,  378,  379,  380,  381,   -1,   -1,
1966    -1,  396,  397,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1967    -1,   -1,   -1,   -1,   -1,   -1,  400,  401,   -1,  260,
1968    -1,   -1,   -1,   -1,   -1,   -1,  410,  268,   -1,   -1,
1969   271,  272,  273,  274,  275,  276,  277,  278,  279,   -1,
1970    -1,   -1,  283,  284,  285,   -1,   -1,   -1,  289,  290,
1971   291,  292,  293,  294,  295,  296,  297,   -1,  299,  300,
1972   301,  302,  303,  304,  305,   -1,  307,   -1,   -1,   -1,
1973    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1974    -1,  322,   -1,   -1,   -1,   -1,   -1,   -1,  329,  330,
1975    -1,  332,   -1,  334,  335,  336,   -1,   -1,  339,  340,
1976    -1,  342,   -1,  344,   -1,   -1,   -1,   -1,   -1,   -1,
1977    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1978    -1,   -1,  363,   -1,  365,   -1,   -1,   -1,   -1,   -1,
1979    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1980    -1,   -1,   -1,   -1,   -1,   -1,  387,  388,   -1,   -1,
1981    -1,   -1,   -1,  394,  395,  396,  397,  398,  399,  400,
1982   401,  402,  403,  404,  405,  406,  407,  408,  409,  410,
1983   411,
1984 };
1985 #define YYFINAL 3
1986 #ifndef YYDEBUG
1987 #define YYDEBUG 0
1988 #endif
1989 #define YYMAXTOKEN 430
1990 #if YYDEBUG
1991 char *yyname[] = {
1992 "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1993 0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,0,
1994 0,0,0,0,"':'",0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1995 0,"'['",0,"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",
1996 "'|'","'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1997 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1998 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1999 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"CHAR","INTEGER","BOOLEAN","PERCENT",
2000 "SPERCENT","MINUS_INTEGER","PLUS_INTEGER","MAZE_GRID_ID","SOLID_FILL_ID",
2001 "MINES_ID","ROGUELEV_ID","MESSAGE_ID","MAZE_ID","LEVEL_ID","LEV_INIT_ID",
2002 "GEOMETRY_ID","NOMAP_ID","OBJECT_ID","COBJECT_ID","MONSTER_ID","TRAP_ID",
2003 "DOOR_ID","DRAWBRIDGE_ID","object_ID","monster_ID","terrain_ID","MAZEWALK_ID",
2004 "WALLIFY_ID","REGION_ID","FILLING","IRREGULAR","JOINED","ALTAR_ID","LADDER_ID",
2005 "STAIR_ID","NON_DIGGABLE_ID","NON_PASSWALL_ID","ROOM_ID","PORTAL_ID",
2006 "TELEPRT_ID","BRANCH_ID","LEV","MINERALIZE_ID","CORRIDOR_ID","GOLD_ID",
2007 "ENGRAVING_ID","FOUNTAIN_ID","POOL_ID","SINK_ID","NONE","RAND_CORRIDOR_ID",
2008 "DOOR_STATE","LIGHT_STATE","CURSE_TYPE","ENGRAVING_TYPE","DIRECTION",
2009 "RANDOM_TYPE","RANDOM_TYPE_BRACKET","A_REGISTER","ALIGNMENT","LEFT_OR_RIGHT",
2010 "CENTER","TOP_OR_BOT","ALTAR_TYPE","UP_OR_DOWN","SUBROOM_ID","NAME_ID",
2011 "FLAGS_ID","FLAG_TYPE","MON_ATTITUDE","MON_ALERTNESS","MON_APPEARANCE",
2012 "ROOMDOOR_ID","IF_ID","ELSE_ID","TERRAIN_ID","HORIZ_OR_VERT",
2013 "REPLACE_TERRAIN_ID","EXIT_ID","SHUFFLE_ID","QUANTITY_ID","BURIED_ID","LOOP_ID",
2014 "FOR_ID","TO_ID","SWITCH_ID","CASE_ID","BREAK_ID","DEFAULT_ID","ERODED_ID",
2015 "TRAPPED_STATE","RECHARGED_ID","INVIS_ID","GREASED_ID","FEMALE_ID",
2016 "CANCELLED_ID","REVIVED_ID","AVENGE_ID","FLEEING_ID","BLINDED_ID",
2017 "PARALYZED_ID","STUNNED_ID","CONFUSED_ID","SEENTRAPS_ID","ALL_ID","MONTYPE_ID",
2018 "GRAVE_ID","ERODEPROOF_ID","FUNCTION_ID","MSG_OUTPUT_TYPE","COMPARE_TYPE",
2019 "UNKNOWN_TYPE","rect_ID","fillrect_ID","line_ID","randline_ID","grow_ID",
2020 "selection_ID","flood_ID","rndcoord_ID","circle_ID","ellipse_ID","filter_ID",
2021 "complement_ID","gradient_ID","GRADIENT_TYPE","LIMITED","HUMIDITY_TYPE",
2022 "STRING","MAP_ID","NQSTRING","VARSTRING","CFUNC","CFUNC_INT","CFUNC_STR",
2023 "CFUNC_COORD","CFUNC_REGION","VARSTRING_INT","VARSTRING_INT_ARRAY",
2024 "VARSTRING_STRING","VARSTRING_STRING_ARRAY","VARSTRING_VAR",
2025 "VARSTRING_VAR_ARRAY","VARSTRING_COORD","VARSTRING_COORD_ARRAY",
2026 "VARSTRING_REGION","VARSTRING_REGION_ARRAY","VARSTRING_MAPCHAR",
2027 "VARSTRING_MAPCHAR_ARRAY","VARSTRING_MONST","VARSTRING_MONST_ARRAY",
2028 "VARSTRING_OBJ","VARSTRING_OBJ_ARRAY","VARSTRING_SEL","VARSTRING_SEL_ARRAY",
2029 "METHOD_INT","METHOD_INT_ARRAY","METHOD_STRING","METHOD_STRING_ARRAY",
2030 "METHOD_VAR","METHOD_VAR_ARRAY","METHOD_COORD","METHOD_COORD_ARRAY",
2031 "METHOD_REGION","METHOD_REGION_ARRAY","METHOD_MAPCHAR","METHOD_MAPCHAR_ARRAY",
2032 "METHOD_MONST","METHOD_MONST_ARRAY","METHOD_OBJ","METHOD_OBJ_ARRAY",
2033 "METHOD_SEL","METHOD_SEL_ARRAY","DICE",
2034 };
2035 char *yyrule[] = {
2036 "$accept : file",
2037 "file :",
2038 "file : levels",
2039 "levels : level",
2040 "levels : level levels",
2041 "level : level_def flags levstatements",
2042 "level_def : LEVEL_ID ':' STRING",
2043 "level_def : MAZE_ID ':' STRING ',' mazefiller",
2044 "mazefiller : RANDOM_TYPE",
2045 "mazefiller : CHAR",
2046 "lev_init : LEV_INIT_ID ':' SOLID_FILL_ID ',' terrain_type",
2047 "lev_init : LEV_INIT_ID ':' MAZE_GRID_ID ',' CHAR",
2048 "lev_init : LEV_INIT_ID ':' ROGUELEV_ID",
2049 "lev_init : LEV_INIT_ID ':' MINES_ID ',' CHAR ',' CHAR ',' BOOLEAN ',' BOOLEAN ',' light_state ',' walled opt_fillchar",
2050 "opt_limited :",
2051 "opt_limited : ',' LIMITED",
2052 "opt_coord_or_var :",
2053 "opt_coord_or_var : ',' coord_or_var",
2054 "opt_fillchar :",
2055 "opt_fillchar : ',' CHAR",
2056 "walled : BOOLEAN",
2057 "walled : RANDOM_TYPE",
2058 "flags :",
2059 "flags : FLAGS_ID ':' flag_list",
2060 "flag_list : FLAG_TYPE ',' flag_list",
2061 "flag_list : FLAG_TYPE",
2062 "levstatements :",
2063 "levstatements : levstatement levstatements",
2064 "stmt_block : '{' levstatements '}'",
2065 "levstatement : message",
2066 "levstatement : lev_init",
2067 "levstatement : altar_detail",
2068 "levstatement : grave_detail",
2069 "levstatement : branch_region",
2070 "levstatement : corridor",
2071 "levstatement : variable_define",
2072 "levstatement : shuffle_detail",
2073 "levstatement : diggable_detail",
2074 "levstatement : door_detail",
2075 "levstatement : drawbridge_detail",
2076 "levstatement : engraving_detail",
2077 "levstatement : mineralize",
2078 "levstatement : fountain_detail",
2079 "levstatement : gold_detail",
2080 "levstatement : switchstatement",
2081 "levstatement : forstatement",
2082 "levstatement : loopstatement",
2083 "levstatement : ifstatement",
2084 "levstatement : chancestatement",
2085 "levstatement : exitstatement",
2086 "levstatement : breakstatement",
2087 "levstatement : function_define",
2088 "levstatement : function_call",
2089 "levstatement : ladder_detail",
2090 "levstatement : map_definition",
2091 "levstatement : mazewalk_detail",
2092 "levstatement : monster_detail",
2093 "levstatement : object_detail",
2094 "levstatement : passwall_detail",
2095 "levstatement : pool_detail",
2096 "levstatement : portal_region",
2097 "levstatement : random_corridors",
2098 "levstatement : region_detail",
2099 "levstatement : room_def",
2100 "levstatement : subroom_def",
2101 "levstatement : sink_detail",
2102 "levstatement : terrain_detail",
2103 "levstatement : replace_terrain_detail",
2104 "levstatement : stair_detail",
2105 "levstatement : stair_region",
2106 "levstatement : teleprt_region",
2107 "levstatement : trap_detail",
2108 "levstatement : wallify_detail",
2109 "any_var_array : VARSTRING_INT_ARRAY",
2110 "any_var_array : VARSTRING_STRING_ARRAY",
2111 "any_var_array : VARSTRING_VAR_ARRAY",
2112 "any_var_array : VARSTRING_COORD_ARRAY",
2113 "any_var_array : VARSTRING_REGION_ARRAY",
2114 "any_var_array : VARSTRING_MAPCHAR_ARRAY",
2115 "any_var_array : VARSTRING_MONST_ARRAY",
2116 "any_var_array : VARSTRING_OBJ_ARRAY",
2117 "any_var_array : VARSTRING_SEL_ARRAY",
2118 "any_var : VARSTRING_INT",
2119 "any_var : VARSTRING_STRING",
2120 "any_var : VARSTRING_VAR",
2121 "any_var : VARSTRING_COORD",
2122 "any_var : VARSTRING_REGION",
2123 "any_var : VARSTRING_MAPCHAR",
2124 "any_var : VARSTRING_MONST",
2125 "any_var : VARSTRING_OBJ",
2126 "any_var : VARSTRING_SEL",
2127 "any_var_or_arr : any_var_array",
2128 "any_var_or_arr : any_var",
2129 "any_var_or_arr : VARSTRING",
2130 "any_var_or_unk : VARSTRING",
2131 "any_var_or_unk : any_var",
2132 "shuffle_detail : SHUFFLE_ID ':' any_var_array",
2133 "variable_define : any_var_or_arr '=' math_expr_var",
2134 "variable_define : any_var_or_arr '=' selection_ID ':' ter_selection",
2135 "variable_define : any_var_or_arr '=' string_expr",
2136 "variable_define : any_var_or_arr '=' terrainid ':' mapchar_or_var",
2137 "variable_define : any_var_or_arr '=' monsterid ':' monster_or_var",
2138 "variable_define : any_var_or_arr '=' objectid ':' object_or_var",
2139 "variable_define : any_var_or_arr '=' coord_or_var",
2140 "variable_define : any_var_or_arr '=' region_or_var",
2141 "variable_define : any_var_or_arr '=' '{' integer_list '}'",
2142 "variable_define : any_var_or_arr '=' '{' encodecoord_list '}'",
2143 "variable_define : any_var_or_arr '=' '{' encoderegion_list '}'",
2144 "variable_define : any_var_or_arr '=' terrainid ':' '{' mapchar_list '}'",
2145 "variable_define : any_var_or_arr '=' monsterid ':' '{' encodemonster_list '}'",
2146 "variable_define : any_var_or_arr '=' objectid ':' '{' encodeobj_list '}'",
2147 "variable_define : any_var_or_arr '=' '{' string_list '}'",
2148 "encodeobj_list : encodeobj",
2149 "encodeobj_list : encodeobj_list ',' encodeobj",
2150 "encodemonster_list : encodemonster",
2151 "encodemonster_list : encodemonster_list ',' encodemonster",
2152 "mapchar_list : mapchar",
2153 "mapchar_list : mapchar_list ',' mapchar",
2154 "encoderegion_list : encoderegion",
2155 "encoderegion_list : encoderegion_list ',' encoderegion",
2156 "encodecoord_list : encodecoord",
2157 "encodecoord_list : encodecoord_list ',' encodecoord",
2158 "integer_list : math_expr_var",
2159 "integer_list : integer_list ',' math_expr_var",
2160 "string_list : string_expr",
2161 "string_list : string_list ',' string_expr",
2162 "$$1 :",
2163 "$$2 :",
2164 "function_define : FUNCTION_ID NQSTRING '(' $$1 func_params_list ')' $$2 stmt_block",
2165 "function_call : NQSTRING '(' func_call_params_list ')'",
2166 "exitstatement : EXIT_ID",
2167 "opt_percent :",
2168 "opt_percent : PERCENT",
2169 "comparestmt : PERCENT",
2170 "comparestmt : '[' math_expr_var COMPARE_TYPE math_expr_var ']'",
2171 "comparestmt : '[' math_expr_var ']'",
2172 "$$3 :",
2173 "$$4 :",
2174 "switchstatement : SWITCH_ID $$3 '[' integer_or_var ']' $$4 '{' switchcases '}'",
2175 "switchcases :",
2176 "switchcases : switchcase switchcases",
2177 "$$5 :",
2178 "switchcase : CASE_ID all_integers ':' $$5 levstatements",
2179 "$$6 :",
2180 "switchcase : DEFAULT_ID ':' $$6 levstatements",
2181 "breakstatement : BREAK_ID",
2182 "for_to_span : '.' '.'",
2183 "for_to_span : TO_ID",
2184 "forstmt_start : FOR_ID any_var_or_unk '=' math_expr_var for_to_span math_expr_var",
2185 "$$7 :",
2186 "forstatement : forstmt_start $$7 stmt_block",
2187 "$$8 :",
2188 "loopstatement : LOOP_ID '[' integer_or_var ']' $$8 stmt_block",
2189 "$$9 :",
2190 "chancestatement : comparestmt ':' $$9 levstatement",
2191 "$$10 :",
2192 "ifstatement : IF_ID comparestmt $$10 if_ending",
2193 "if_ending : stmt_block",
2194 "$$11 :",
2195 "if_ending : stmt_block $$11 ELSE_ID stmt_block",
2196 "message : MESSAGE_ID ':' string_expr",
2197 "random_corridors : RAND_CORRIDOR_ID",
2198 "random_corridors : RAND_CORRIDOR_ID ':' all_integers",
2199 "random_corridors : RAND_CORRIDOR_ID ':' RANDOM_TYPE",
2200 "corridor : CORRIDOR_ID ':' corr_spec ',' corr_spec",
2201 "corridor : CORRIDOR_ID ':' corr_spec ',' all_integers",
2202 "corr_spec : '(' INTEGER ',' DIRECTION ',' door_pos ')'",
2203 "room_begin : room_type opt_percent ',' light_state",
2204 "$$12 :",
2205 "subroom_def : SUBROOM_ID ':' room_begin ',' subroom_pos ',' room_size optroomregionflags $$12 stmt_block",
2206 "$$13 :",
2207 "room_def : ROOM_ID ':' room_begin ',' room_pos ',' room_align ',' room_size optroomregionflags $$13 stmt_block",
2208 "roomfill :",
2209 "roomfill : ',' BOOLEAN",
2210 "room_pos : '(' INTEGER ',' INTEGER ')'",
2211 "room_pos : RANDOM_TYPE",
2212 "subroom_pos : '(' INTEGER ',' INTEGER ')'",
2213 "subroom_pos : RANDOM_TYPE",
2214 "room_align : '(' h_justif ',' v_justif ')'",
2215 "room_align : RANDOM_TYPE",
2216 "room_size : '(' INTEGER ',' INTEGER ')'",
2217 "room_size : RANDOM_TYPE",
2218 "door_detail : ROOMDOOR_ID ':' secret ',' door_state ',' door_wall ',' door_pos",
2219 "door_detail : DOOR_ID ':' door_state ',' ter_selection",
2220 "secret : BOOLEAN",
2221 "secret : RANDOM_TYPE",
2222 "door_wall : dir_list",
2223 "door_wall : RANDOM_TYPE",
2224 "dir_list : DIRECTION",
2225 "dir_list : DIRECTION '|' dir_list",
2226 "door_pos : INTEGER",
2227 "door_pos : RANDOM_TYPE",
2228 "map_definition : NOMAP_ID",
2229 "map_definition : GEOMETRY_ID ':' h_justif ',' v_justif roomfill MAP_ID",
2230 "map_definition : GEOMETRY_ID ':' coord_or_var roomfill MAP_ID",
2231 "h_justif : LEFT_OR_RIGHT",
2232 "h_justif : CENTER",
2233 "v_justif : TOP_OR_BOT",
2234 "v_justif : CENTER",
2235 "monster_detail : MONSTER_ID ':' monster_desc",
2236 "$$14 :",
2237 "monster_detail : MONSTER_ID ':' monster_desc $$14 stmt_block",
2238 "monster_desc : monster_or_var ',' coord_or_var monster_infos",
2239 "monster_infos :",
2240 "monster_infos : monster_infos ',' monster_info",
2241 "monster_info : string_expr",
2242 "monster_info : MON_ATTITUDE",
2243 "monster_info : MON_ALERTNESS",
2244 "monster_info : alignment_prfx",
2245 "monster_info : MON_APPEARANCE string_expr",
2246 "monster_info : FEMALE_ID",
2247 "monster_info : INVIS_ID",
2248 "monster_info : CANCELLED_ID",
2249 "monster_info : REVIVED_ID",
2250 "monster_info : AVENGE_ID",
2251 "monster_info : FLEEING_ID ':' integer_or_var",
2252 "monster_info : BLINDED_ID ':' integer_or_var",
2253 "monster_info : PARALYZED_ID ':' integer_or_var",
2254 "monster_info : STUNNED_ID",
2255 "monster_info : CONFUSED_ID",
2256 "monster_info : SEENTRAPS_ID ':' seen_trap_mask",
2257 "seen_trap_mask : STRING",
2258 "seen_trap_mask : ALL_ID",
2259 "seen_trap_mask : STRING '|' seen_trap_mask",
2260 "object_detail : OBJECT_ID ':' object_desc",
2261 "$$15 :",
2262 "object_detail : COBJECT_ID ':' object_desc $$15 stmt_block",
2263 "object_desc : object_or_var object_infos",
2264 "object_infos :",
2265 "object_infos : object_infos ',' object_info",
2266 "object_info : CURSE_TYPE",
2267 "object_info : MONTYPE_ID ':' monster_or_var",
2268 "object_info : all_ints_push",
2269 "object_info : NAME_ID ':' string_expr",
2270 "object_info : QUANTITY_ID ':' integer_or_var",
2271 "object_info : BURIED_ID",
2272 "object_info : LIGHT_STATE",
2273 "object_info : ERODED_ID ':' integer_or_var",
2274 "object_info : ERODEPROOF_ID",
2275 "object_info : DOOR_STATE",
2276 "object_info : TRAPPED_STATE",
2277 "object_info : RECHARGED_ID ':' integer_or_var",
2278 "object_info : INVIS_ID",
2279 "object_info : GREASED_ID",
2280 "object_info : coord_or_var",
2281 "trap_detail : TRAP_ID ':' trap_name ',' coord_or_var",
2282 "drawbridge_detail : DRAWBRIDGE_ID ':' coord_or_var ',' DIRECTION ',' door_state",
2283 "mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION",
2284 "mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION ',' BOOLEAN opt_fillchar",
2285 "wallify_detail : WALLIFY_ID",
2286 "wallify_detail : WALLIFY_ID ':' ter_selection",
2287 "ladder_detail : LADDER_ID ':' coord_or_var ',' UP_OR_DOWN",
2288 "stair_detail : STAIR_ID ':' coord_or_var ',' UP_OR_DOWN",
2289 "stair_region : STAIR_ID ':' lev_region ',' lev_region ',' UP_OR_DOWN",
2290 "portal_region : PORTAL_ID ':' lev_region ',' lev_region ',' STRING",
2291 "teleprt_region : TELEPRT_ID ':' lev_region ',' lev_region teleprt_detail",
2292 "branch_region : BRANCH_ID ':' lev_region ',' lev_region",
2293 "teleprt_detail :",
2294 "teleprt_detail : ',' UP_OR_DOWN",
2295 "fountain_detail : FOUNTAIN_ID ':' ter_selection",
2296 "sink_detail : SINK_ID ':' ter_selection",
2297 "pool_detail : POOL_ID ':' ter_selection",
2298 "terrain_type : CHAR",
2299 "terrain_type : '(' CHAR ',' light_state ')'",
2300 "replace_terrain_detail : REPLACE_TERRAIN_ID ':' region_or_var ',' mapchar_or_var ',' mapchar_or_var ',' SPERCENT",
2301 "terrain_detail : TERRAIN_ID ':' ter_selection ',' mapchar_or_var",
2302 "diggable_detail : NON_DIGGABLE_ID ':' region_or_var",
2303 "passwall_detail : NON_PASSWALL_ID ':' region_or_var",
2304 "$$16 :",
2305 "region_detail : REGION_ID ':' region_or_var ',' light_state ',' room_type optroomregionflags $$16 region_detail_end",
2306 "region_detail_end :",
2307 "region_detail_end : stmt_block",
2308 "altar_detail : ALTAR_ID ':' coord_or_var ',' alignment ',' altar_type",
2309 "grave_detail : GRAVE_ID ':' coord_or_var ',' string_expr",
2310 "grave_detail : GRAVE_ID ':' coord_or_var ',' RANDOM_TYPE",
2311 "grave_detail : GRAVE_ID ':' coord_or_var",
2312 "gold_detail : GOLD_ID ':' math_expr_var ',' coord_or_var",
2313 "engraving_detail : ENGRAVING_ID ':' coord_or_var ',' engraving_type ',' string_expr",
2314 "mineralize : MINERALIZE_ID ':' integer_or_var ',' integer_or_var ',' integer_or_var ',' integer_or_var",
2315 "mineralize : MINERALIZE_ID",
2316 "trap_name : STRING",
2317 "trap_name : RANDOM_TYPE",
2318 "room_type : STRING",
2319 "room_type : RANDOM_TYPE",
2320 "optroomregionflags :",
2321 "optroomregionflags : ',' roomregionflags",
2322 "roomregionflags : roomregionflag",
2323 "roomregionflags : roomregionflag ',' roomregionflags",
2324 "roomregionflag : FILLING",
2325 "roomregionflag : IRREGULAR",
2326 "roomregionflag : JOINED",
2327 "door_state : DOOR_STATE",
2328 "door_state : RANDOM_TYPE",
2329 "light_state : LIGHT_STATE",
2330 "light_state : RANDOM_TYPE",
2331 "alignment : ALIGNMENT",
2332 "alignment : a_register",
2333 "alignment : RANDOM_TYPE",
2334 "alignment_prfx : ALIGNMENT",
2335 "alignment_prfx : a_register",
2336 "alignment_prfx : A_REGISTER ':' RANDOM_TYPE",
2337 "altar_type : ALTAR_TYPE",
2338 "altar_type : RANDOM_TYPE",
2339 "a_register : A_REGISTER '[' INTEGER ']'",
2340 "string_or_var : STRING",
2341 "string_or_var : VARSTRING_STRING",
2342 "string_or_var : VARSTRING_STRING_ARRAY '[' math_expr_var ']'",
2343 "integer_or_var : math_expr_var",
2344 "coord_or_var : encodecoord",
2345 "coord_or_var : rndcoord_ID '(' ter_selection ')'",
2346 "coord_or_var : VARSTRING_COORD",
2347 "coord_or_var : VARSTRING_COORD_ARRAY '[' math_expr_var ']'",
2348 "encodecoord : '(' INTEGER ',' INTEGER ')'",
2349 "encodecoord : RANDOM_TYPE",
2350 "encodecoord : RANDOM_TYPE_BRACKET humidity_flags ']'",
2351 "humidity_flags : HUMIDITY_TYPE",
2352 "humidity_flags : HUMIDITY_TYPE ',' humidity_flags",
2353 "region_or_var : encoderegion",
2354 "region_or_var : VARSTRING_REGION",
2355 "region_or_var : VARSTRING_REGION_ARRAY '[' math_expr_var ']'",
2356 "encoderegion : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2357 "mapchar_or_var : mapchar",
2358 "mapchar_or_var : VARSTRING_MAPCHAR",
2359 "mapchar_or_var : VARSTRING_MAPCHAR_ARRAY '[' math_expr_var ']'",
2360 "mapchar : CHAR",
2361 "mapchar : '(' CHAR ',' light_state ')'",
2362 "monster_or_var : encodemonster",
2363 "monster_or_var : VARSTRING_MONST",
2364 "monster_or_var : VARSTRING_MONST_ARRAY '[' math_expr_var ']'",
2365 "encodemonster : STRING",
2366 "encodemonster : CHAR",
2367 "encodemonster : '(' CHAR ',' STRING ')'",
2368 "encodemonster : RANDOM_TYPE",
2369 "object_or_var : encodeobj",
2370 "object_or_var : VARSTRING_OBJ",
2371 "object_or_var : VARSTRING_OBJ_ARRAY '[' math_expr_var ']'",
2372 "encodeobj : STRING",
2373 "encodeobj : CHAR",
2374 "encodeobj : '(' CHAR ',' STRING ')'",
2375 "encodeobj : RANDOM_TYPE",
2376 "string_expr : string_or_var",
2377 "string_expr : string_expr '.' string_or_var",
2378 "math_expr_var : INTEGER",
2379 "math_expr_var : dice",
2380 "math_expr_var : '(' MINUS_INTEGER ')'",
2381 "math_expr_var : VARSTRING_INT",
2382 "math_expr_var : VARSTRING_INT_ARRAY '[' math_expr_var ']'",
2383 "math_expr_var : math_expr_var '+' math_expr_var",
2384 "math_expr_var : math_expr_var '-' math_expr_var",
2385 "math_expr_var : math_expr_var '*' math_expr_var",
2386 "math_expr_var : math_expr_var '/' math_expr_var",
2387 "math_expr_var : math_expr_var '%' math_expr_var",
2388 "math_expr_var : '(' math_expr_var ')'",
2389 "func_param_type : CFUNC_INT",
2390 "func_param_type : CFUNC_STR",
2391 "func_param_part : any_var_or_arr ':' func_param_type",
2392 "func_param_list : func_param_part",
2393 "func_param_list : func_param_list ',' func_param_part",
2394 "func_params_list :",
2395 "func_params_list : func_param_list",
2396 "func_call_param_part : math_expr_var",
2397 "func_call_param_part : string_expr",
2398 "func_call_param_list : func_call_param_part",
2399 "func_call_param_list : func_call_param_list ',' func_call_param_part",
2400 "func_call_params_list :",
2401 "func_call_params_list : func_call_param_list",
2402 "ter_selection_x : coord_or_var",
2403 "ter_selection_x : rect_ID region_or_var",
2404 "ter_selection_x : fillrect_ID region_or_var",
2405 "ter_selection_x : line_ID coord_or_var ',' coord_or_var",
2406 "ter_selection_x : randline_ID coord_or_var ',' coord_or_var ',' math_expr_var",
2407 "ter_selection_x : grow_ID '(' ter_selection ')'",
2408 "ter_selection_x : grow_ID '(' dir_list ',' ter_selection ')'",
2409 "ter_selection_x : filter_ID '(' SPERCENT ',' ter_selection ')'",
2410 "ter_selection_x : filter_ID '(' ter_selection ',' ter_selection ')'",
2411 "ter_selection_x : filter_ID '(' mapchar_or_var ',' ter_selection ')'",
2412 "ter_selection_x : flood_ID coord_or_var",
2413 "ter_selection_x : circle_ID '(' coord_or_var ',' math_expr_var ')'",
2414 "ter_selection_x : circle_ID '(' coord_or_var ',' math_expr_var ',' FILLING ')'",
2415 "ter_selection_x : ellipse_ID '(' coord_or_var ',' math_expr_var ',' math_expr_var ')'",
2416 "ter_selection_x : ellipse_ID '(' coord_or_var ',' math_expr_var ',' math_expr_var ',' FILLING ')'",
2417 "ter_selection_x : gradient_ID '(' GRADIENT_TYPE ',' '(' math_expr_var '-' math_expr_var opt_limited ')' ',' coord_or_var opt_coord_or_var ')'",
2418 "ter_selection_x : complement_ID ter_selection_x",
2419 "ter_selection_x : VARSTRING_SEL",
2420 "ter_selection_x : '(' ter_selection ')'",
2421 "ter_selection : ter_selection_x",
2422 "ter_selection : ter_selection_x '&' ter_selection",
2423 "dice : DICE",
2424 "all_integers : MINUS_INTEGER",
2425 "all_integers : PLUS_INTEGER",
2426 "all_integers : INTEGER",
2427 "all_ints_push : MINUS_INTEGER",
2428 "all_ints_push : PLUS_INTEGER",
2429 "all_ints_push : INTEGER",
2430 "all_ints_push : dice",
2431 "objectid : object_ID",
2432 "objectid : OBJECT_ID",
2433 "monsterid : monster_ID",
2434 "monsterid : MONSTER_ID",
2435 "terrainid : terrain_ID",
2436 "terrainid : TERRAIN_ID",
2437 "engraving_type : ENGRAVING_TYPE",
2438 "engraving_type : RANDOM_TYPE",
2439 "lev_region : region",
2440 "lev_region : LEV '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2441 "region : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2442 };
2443 #endif
2444 #ifdef YYSTACKSIZE
2445 #undef YYMAXDEPTH
2446 #define YYMAXDEPTH YYSTACKSIZE
2447 #else
2448 #ifdef YYMAXDEPTH
2449 #define YYSTACKSIZE YYMAXDEPTH
2450 #else
2451 #define YYSTACKSIZE 500
2452 #define YYMAXDEPTH 500
2453 #endif
2454 #endif
2455 int yydebug;
2456 int yynerrs;
2457 int yyerrflag;
2458 int yychar;
2459 short *yyssp;
2460 YYSTYPE *yyvsp;
2461 YYSTYPE yyval;
2462 YYSTYPE yylval;
2463 short yyss[YYSTACKSIZE];
2464 YYSTYPE yyvs[YYSTACKSIZE];
2465 #define yystacksize YYSTACKSIZE
2466
2467 /*lev_comp.y*/
2468 #define YYABORT goto yyabort
2469 #define YYREJECT goto yyabort
2470 #define YYACCEPT goto yyaccept
2471 #define YYERROR goto yyerrlab
2472 int
2473 yyparse()
2474 {
2475     register int yym, yyn, yystate;
2476 #if YYDEBUG
2477     register char *yys;
2478     extern char *getenv();
2479
2480     if ((yys = getenv("YYDEBUG")) != 0)
2481     {
2482         yyn = *yys;
2483         if (yyn >= '0' && yyn <= '9')
2484             yydebug = yyn - '0';
2485     }
2486 #endif
2487
2488     yynerrs = 0;
2489     yyerrflag = 0;
2490     yychar = (-1);
2491
2492     yyssp = yyss;
2493     yyvsp = yyvs;
2494     *yyssp = yystate = 0;
2495
2496 yyloop:
2497     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
2498     if (yychar < 0)
2499     {
2500         if ((yychar = yylex()) < 0) yychar = 0;
2501 #if YYDEBUG
2502         if (yydebug)
2503         {
2504             yys = 0;
2505             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2506             if (!yys) yys = "illegal-symbol";
2507             printf("%sdebug: state %d, reading %d (%s)\n",
2508                     YYPREFIX, yystate, yychar, yys);
2509         }
2510 #endif
2511     }
2512     if ((yyn = yysindex[yystate]) != 0 && (yyn += yychar) >= 0 &&
2513             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
2514     {
2515 #if YYDEBUG
2516         if (yydebug)
2517             printf("%sdebug: state %d, shifting to state %d\n",
2518                     YYPREFIX, yystate, yytable[yyn]);
2519 #endif
2520         if (yyssp >= yyss + yystacksize - 1)
2521         {
2522             goto yyoverflow;
2523         }
2524         *++yyssp = yystate = yytable[yyn];
2525         *++yyvsp = yylval;
2526         yychar = (-1);
2527         if (yyerrflag > 0)  --yyerrflag;
2528         goto yyloop;
2529     }
2530     if ((yyn = yyrindex[yystate]) != 0 && (yyn += yychar) >= 0 &&
2531             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
2532     {
2533         yyn = yytable[yyn];
2534         goto yyreduce;
2535     }
2536     if (yyerrflag) goto yyinrecovery;
2537     goto yynewerror;
2538 yynewerror:
2539     yyerror("syntax error");
2540     goto yyerrlab;
2541 yyerrlab:
2542     ++yynerrs;
2543 yyinrecovery:
2544     if (yyerrflag < 3)
2545     {
2546         yyerrflag = 3;
2547         for (;;)
2548         {
2549             if ((yyn = yysindex[*yyssp]) != 0 && (yyn += YYERRCODE) >= 0 &&
2550                     yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
2551             {
2552 #if YYDEBUG
2553                 if (yydebug)
2554                     printf("%sdebug: state %d, error recovery shifting\
2555  to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
2556 #endif
2557                 if (yyssp >= yyss + yystacksize - 1)
2558                 {
2559                     goto yyoverflow;
2560                 }
2561                 *++yyssp = yystate = yytable[yyn];
2562                 *++yyvsp = yylval;
2563                 goto yyloop;
2564             }
2565             else
2566             {
2567 #if YYDEBUG
2568                 if (yydebug)
2569                     printf("%sdebug: error recovery discarding state %d\n",
2570                             YYPREFIX, *yyssp);
2571 #endif
2572                 if (yyssp <= yyss) goto yyabort;
2573                 --yyssp;
2574                 --yyvsp;
2575             }
2576         }
2577     }
2578     else
2579     {
2580         if (yychar == 0) goto yyabort;
2581 #if YYDEBUG
2582         if (yydebug)
2583         {
2584             yys = 0;
2585             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2586             if (!yys) yys = "illegal-symbol";
2587             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
2588                     YYPREFIX, yystate, yychar, yys);
2589         }
2590 #endif
2591         yychar = (-1);
2592         goto yyloop;
2593     }
2594 yyreduce:
2595 #if YYDEBUG
2596     if (yydebug)
2597         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
2598                 YYPREFIX, yystate, yyn, yyrule[yyn]);
2599 #endif
2600     yym = yylen[yyn];
2601     yyval = yyvsp[1-yym];
2602     switch (yyn)
2603     {
2604 case 5:
2605 {
2606                         if (fatal_error > 0) {
2607                                 (void) fprintf(stderr,
2608                                 "%s: %d errors detected for level \"%s\". No output created!\n",
2609                                                fname, fatal_error, yyvsp[-2].map);
2610                                 fatal_error = 0;
2611                                 got_errors++;
2612                         } else if (!got_errors) {
2613                                 if (!write_level_file(yyvsp[-2].map, splev)) {
2614                                     lc_error("Can't write output file for '%s'!", yyvsp[-2].map);
2615                                     exit(EXIT_FAILURE);
2616                                 }
2617                         }
2618                         Free(yyvsp[-2].map);
2619                         Free(splev);
2620                         splev = NULL;
2621                         vardef_free_all(variable_definitions);
2622                         variable_definitions = NULL;
2623                   }
2624 break;
2625 case 6:
2626 {
2627                       start_level_def(&splev, yyvsp[0].map);
2628                       yyval.map = yyvsp[0].map;
2629                   }
2630 break;
2631 case 7:
2632 {
2633                       start_level_def(&splev, yyvsp[-2].map);
2634                       if (yyvsp[0].i == -1) {
2635                           add_opvars(splev, "iiiiiiiio",
2636                                      VA_PASS9(LVLINIT_MAZEGRID,HWALL,0,0,
2637                                               0,0,0,0, SPO_INITLEVEL));
2638                       } else {
2639                           long bg = what_map_char((char) yyvsp[0].i);
2640                           add_opvars(splev, "iiiiiiiio",
2641                                      VA_PASS9(LVLINIT_SOLIDFILL, bg, 0,0,
2642                                               0,0,0,0, SPO_INITLEVEL));
2643                       }
2644                       add_opvars(splev, "io",
2645                                  VA_PASS2(MAZELEVEL, SPO_LEVEL_FLAGS));
2646                       max_x_map = COLNO-1;
2647                       max_y_map = ROWNO;
2648                       yyval.map = yyvsp[-2].map;
2649                   }
2650 break;
2651 case 8:
2652 {
2653                       yyval.i = -1;
2654                   }
2655 break;
2656 case 9:
2657 {
2658                       yyval.i = what_map_char((char) yyvsp[0].i);
2659                   }
2660 break;
2661 case 10:
2662 {
2663                       long filling = yyvsp[0].terr.ter;
2664                       if (filling == INVALID_TYPE || filling >= MAX_TYPE)
2665                           lc_error("INIT_MAP: Invalid fill char type.");
2666                       add_opvars(splev, "iiiiiiiio",
2667                                  LVLINIT_SOLIDFILL,filling,0,(long)yyvsp[0].terr.lit, 0,0,0,0, SPO_INITLEVEL);
2668                       max_x_map = COLNO-1;
2669                       max_y_map = ROWNO;
2670                   }
2671 break;
2672 case 11:
2673 {
2674                       long filling = what_map_char((char) yyvsp[0].i);
2675                       if (filling == INVALID_TYPE || filling >= MAX_TYPE)
2676                           lc_error("INIT_MAP: Invalid fill char type.");
2677                       add_opvars(splev, "iiiiiiiio",
2678                                  VA_PASS9(LVLINIT_MAZEGRID,filling,0,0,
2679                                           0,0,0,0, SPO_INITLEVEL));
2680                       max_x_map = COLNO-1;
2681                       max_y_map = ROWNO;
2682                   }
2683 break;
2684 case 12:
2685 {
2686                       add_opvars(splev, "iiiiiiiio",
2687                                  VA_PASS9(LVLINIT_ROGUE,0,0,0,
2688                                           0,0,0,0, SPO_INITLEVEL));
2689                   }
2690 break;
2691 case 13:
2692 {
2693                       long fg = what_map_char((char) yyvsp[-11].i);
2694                       long bg = what_map_char((char) yyvsp[-9].i);
2695                       long smoothed = yyvsp[-7].i;
2696                       long joined = yyvsp[-5].i;
2697                       long lit = yyvsp[-3].i;
2698                       long walled = yyvsp[-1].i;
2699                       long filling = yyvsp[0].i;
2700                       if (fg == INVALID_TYPE || fg >= MAX_TYPE)
2701                           lc_error("INIT_MAP: Invalid foreground type.");
2702                       if (bg == INVALID_TYPE || bg >= MAX_TYPE)
2703                           lc_error("INIT_MAP: Invalid background type.");
2704                       if (joined && fg != CORR && fg != ROOM)
2705                           lc_error("INIT_MAP: Invalid foreground type for joined map.");
2706
2707                       if (filling == INVALID_TYPE)
2708                           lc_error("INIT_MAP: Invalid fill char type.");
2709
2710                       add_opvars(splev, "iiiiiiiio",
2711                                  VA_PASS9(LVLINIT_MINES,filling,walled,lit,
2712                                           joined,smoothed,bg,fg,
2713                                           SPO_INITLEVEL));
2714                         max_x_map = COLNO-1;
2715                         max_y_map = ROWNO;
2716                   }
2717 break;
2718 case 14:
2719 {
2720                       yyval.i = 0;
2721                   }
2722 break;
2723 case 15:
2724 {
2725                       yyval.i = yyvsp[0].i;
2726                   }
2727 break;
2728 case 16:
2729 {
2730                       add_opvars(splev, "o", VA_PASS1(SPO_COPY));
2731                       yyval.i = 0;
2732                   }
2733 break;
2734 case 17:
2735 {
2736                       yyval.i = 1;
2737                   }
2738 break;
2739 case 18:
2740 {
2741                       yyval.i = -1;
2742                   }
2743 break;
2744 case 19:
2745 {
2746                       yyval.i = what_map_char((char) yyvsp[0].i);
2747                   }
2748 break;
2749 case 22:
2750 {
2751                       add_opvars(splev, "io", VA_PASS2(0, SPO_LEVEL_FLAGS));
2752                   }
2753 break;
2754 case 23:
2755 {
2756                       add_opvars(splev, "io", VA_PASS2(yyvsp[0].i, SPO_LEVEL_FLAGS));
2757                   }
2758 break;
2759 case 24:
2760 {
2761                       yyval.i = (yyvsp[-2].i | yyvsp[0].i);
2762                   }
2763 break;
2764 case 25:
2765 {
2766                       yyval.i = yyvsp[0].i;
2767                   }
2768 break;
2769 case 26:
2770 {
2771                       yyval.i = 0;
2772                   }
2773 break;
2774 case 27:
2775 {
2776                       yyval.i = 1 + yyvsp[0].i;
2777                   }
2778 break;
2779 case 28:
2780 {
2781                       yyval.i = yyvsp[-1].i;
2782                   }
2783 break;
2784 case 96:
2785 {
2786                       struct lc_vardefs *vd;
2787                       if ((vd = vardef_defined(variable_definitions, yyvsp[0].map, 1))) {
2788                           if (!(vd->var_type & SPOVAR_ARRAY))
2789                               lc_error("Trying to shuffle non-array variable '%s'", yyvsp[0].map);
2790                       } else lc_error("Trying to shuffle undefined variable '%s'", yyvsp[0].map);
2791                       add_opvars(splev, "so", VA_PASS2(yyvsp[0].map, SPO_SHUFFLE_ARRAY));
2792                       Free(yyvsp[0].map);
2793                   }
2794 break;
2795 case 97:
2796 {
2797                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_INT);
2798                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2799                       Free(yyvsp[-2].map);
2800                   }
2801 break;
2802 case 98:
2803 {
2804                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_SEL);
2805                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2806                       Free(yyvsp[-4].map);
2807                   }
2808 break;
2809 case 99:
2810 {
2811                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_STRING);
2812                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2813                       Free(yyvsp[-2].map);
2814                   }
2815 break;
2816 case 100:
2817 {
2818                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_MAPCHAR);
2819                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2820                       Free(yyvsp[-4].map);
2821                   }
2822 break;
2823 case 101:
2824 {
2825                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_MONST);
2826                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2827                       Free(yyvsp[-4].map);
2828                   }
2829 break;
2830 case 102:
2831 {
2832                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_OBJ);
2833                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2834                       Free(yyvsp[-4].map);
2835                   }
2836 break;
2837 case 103:
2838 {
2839                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_COORD);
2840                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2841                       Free(yyvsp[-2].map);
2842                   }
2843 break;
2844 case 104:
2845 {
2846                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_REGION);
2847                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2848                       Free(yyvsp[-2].map);
2849                   }
2850 break;
2851 case 105:
2852 {
2853                       long n_items = yyvsp[-1].i;
2854                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_INT|SPOVAR_ARRAY);
2855                       add_opvars(splev, "iso",
2856                                  VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2857                       Free(yyvsp[-4].map);
2858                   }
2859 break;
2860 case 106:
2861 {
2862                       long n_items = yyvsp[-1].i;
2863                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_COORD|SPOVAR_ARRAY);
2864                       add_opvars(splev, "iso",
2865                                  VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2866                       Free(yyvsp[-4].map);
2867                   }
2868 break;
2869 case 107:
2870 {
2871                       long n_items = yyvsp[-1].i;
2872                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_REGION|SPOVAR_ARRAY);
2873                       add_opvars(splev, "iso",
2874                                  VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2875                       Free(yyvsp[-4].map);
2876                   }
2877 break;
2878 case 108:
2879 {
2880                       long n_items = yyvsp[-1].i;
2881                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_MAPCHAR|SPOVAR_ARRAY);
2882                       add_opvars(splev, "iso",
2883                                  VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2884                       Free(yyvsp[-6].map);
2885                   }
2886 break;
2887 case 109:
2888 {
2889                       long n_items = yyvsp[-1].i;
2890                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_MONST|SPOVAR_ARRAY);
2891                       add_opvars(splev, "iso",
2892                                  VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2893                       Free(yyvsp[-6].map);
2894                   }
2895 break;
2896 case 110:
2897 {
2898                       long n_items = yyvsp[-1].i;
2899                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_OBJ|SPOVAR_ARRAY);
2900                       add_opvars(splev, "iso",
2901                                  VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2902                       Free(yyvsp[-6].map);
2903                   }
2904 break;
2905 case 111:
2906 {
2907                       long n_items = yyvsp[-1].i;
2908                       variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_STRING|SPOVAR_ARRAY);
2909                       add_opvars(splev, "iso",
2910                                  VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2911                       Free(yyvsp[-4].map);
2912                   }
2913 break;
2914 case 112:
2915 {
2916                       add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
2917                       yyval.i = 1;
2918                   }
2919 break;
2920 case 113:
2921 {
2922                       add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
2923                       yyval.i = 1 + yyvsp[-2].i;
2924                   }
2925 break;
2926 case 114:
2927 {
2928                       add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
2929                       yyval.i = 1;
2930                   }
2931 break;
2932 case 115:
2933 {
2934                       add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
2935                       yyval.i = 1 + yyvsp[-2].i;
2936                   }
2937 break;
2938 case 116:
2939 {
2940                       add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
2941                       yyval.i = 1;
2942                   }
2943 break;
2944 case 117:
2945 {
2946                       add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
2947                       yyval.i = 1 + yyvsp[-2].i;
2948                   }
2949 break;
2950 case 118:
2951 {
2952                       yyval.i = 1;
2953                   }
2954 break;
2955 case 119:
2956 {
2957                       yyval.i = 1 + yyvsp[-2].i;
2958                   }
2959 break;
2960 case 120:
2961 {
2962                       add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
2963                       yyval.i = 1;
2964                   }
2965 break;
2966 case 121:
2967 {
2968                       add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
2969                       yyval.i = 1 + yyvsp[-2].i;
2970                   }
2971 break;
2972 case 122:
2973 {
2974                       yyval.i = 1;
2975                   }
2976 break;
2977 case 123:
2978 {
2979                       yyval.i = 1 + yyvsp[-2].i;
2980                   }
2981 break;
2982 case 124:
2983 {
2984                       yyval.i = 1;
2985                   }
2986 break;
2987 case 125:
2988 {
2989                       yyval.i = 1 + yyvsp[-2].i;
2990                   }
2991 break;
2992 case 126:
2993 {
2994                       struct lc_funcdefs *funcdef;
2995
2996                       if (in_function_definition)
2997                           lc_error("Recursively defined functions not allowed (function %s).", yyvsp[-1].map);
2998
2999                       in_function_definition++;
3000
3001                       if (funcdef_defined(function_definitions, yyvsp[-1].map, 1))
3002                           lc_error("Function '%s' already defined once.", yyvsp[-1].map);
3003
3004                       funcdef = funcdef_new(-1, yyvsp[-1].map);
3005                       funcdef->next = function_definitions;
3006                       function_definitions = funcdef;
3007                       function_splev_backup = splev;
3008                       splev = &(funcdef->code);
3009                       Free(yyvsp[-1].map);
3010                       curr_function = funcdef;
3011                       function_tmp_var_defs = variable_definitions;
3012                       variable_definitions = NULL;
3013                   }
3014 break;
3015 case 127:
3016 {
3017                       /* nothing */
3018                   }
3019 break;
3020 case 128:
3021 {
3022                       add_opvars(splev, "io", VA_PASS2(0, SPO_RETURN));
3023                       splev = function_splev_backup;
3024                       in_function_definition--;
3025                       curr_function = NULL;
3026                       vardef_free_all(variable_definitions);
3027                       variable_definitions = function_tmp_var_defs;
3028                   }
3029 break;
3030 case 129:
3031 {
3032                       struct lc_funcdefs *tmpfunc;
3033                       tmpfunc = funcdef_defined(function_definitions, yyvsp[-3].map, 1);
3034                       if (tmpfunc) {
3035                           long l;
3036                           long nparams = strlen( yyvsp[-1].map );
3037                           char *fparamstr = funcdef_paramtypes(tmpfunc);
3038                           if (strcmp(yyvsp[-1].map, fparamstr)) {
3039                               char *tmps = strdup(decode_parm_str(fparamstr));
3040                               lc_error("Function '%s' requires params '%s', got '%s' instead.", yyvsp[-3].map, tmps, decode_parm_str(yyvsp[-1].map));
3041                               Free(tmps);
3042                           }
3043                           Free(fparamstr);
3044                           Free(yyvsp[-1].map);
3045                           if (!(tmpfunc->n_called)) {
3046                               /* we haven't called the function yet, so insert it in the code */
3047                               struct opvar *jmp = New(struct opvar);
3048                               set_opvar_int(jmp, splev->n_opcodes+1);
3049                               add_opcode(splev, SPO_PUSH, jmp);
3050                               add_opcode(splev, SPO_JMP, NULL); /* we must jump past it first, then CALL it, due to RETURN. */
3051
3052                               tmpfunc->addr = splev->n_opcodes;
3053
3054                               { /* init function parameter variables */
3055                                   struct lc_funcdefs_parm *tfp = tmpfunc->params;
3056                                   while (tfp) {
3057                                       add_opvars(splev, "iso",
3058                                                  VA_PASS3(0, tfp->name,
3059                                                           SPO_VAR_INIT));
3060                                       tfp = tfp->next;
3061                                   }
3062                               }
3063
3064                               splev_add_from(splev, &(tmpfunc->code));
3065                               set_opvar_int(jmp, splev->n_opcodes - jmp->vardata.l);
3066                           }
3067                           l = tmpfunc->addr - splev->n_opcodes - 2;
3068                           add_opvars(splev, "iio",
3069                                      VA_PASS3(nparams, l, SPO_CALL));
3070                           tmpfunc->n_called++;
3071                       } else {
3072                           lc_error("Function '%s' not defined.", yyvsp[-3].map);
3073                       }
3074                       Free(yyvsp[-3].map);
3075                   }
3076 break;
3077 case 130:
3078 {
3079                       add_opcode(splev, SPO_EXIT, NULL);
3080                   }
3081 break;
3082 case 131:
3083 {
3084                       yyval.i = 100;
3085                   }
3086 break;
3087 case 132:
3088 {
3089                       yyval.i = yyvsp[0].i;
3090                   }
3091 break;
3092 case 133:
3093 {
3094                       /* val > rn2(100) */
3095                       add_opvars(splev, "iio",
3096                                  VA_PASS3((long)yyvsp[0].i, 100, SPO_RN2));
3097                       yyval.i = SPO_JG;
3098                   }
3099 break;
3100 case 134:
3101 {
3102                       yyval.i = yyvsp[-2].i;
3103                   }
3104 break;
3105 case 135:
3106 {
3107                       /* boolean, explicit foo != 0 */
3108                       add_opvars(splev, "i", VA_PASS1(0));
3109                       yyval.i = SPO_JNE;
3110                   }
3111 break;
3112 case 136:
3113 {
3114                       is_inconstant_number = 0;
3115                   }
3116 break;
3117 case 137:
3118 {
3119                       struct opvar *chkjmp;
3120                       if (in_switch_statement > 0)
3121                           lc_error("Cannot nest switch-statements.");
3122
3123                       in_switch_statement++;
3124
3125                       n_switch_case_list = 0;
3126                       switch_default_case = NULL;
3127
3128                       if (!is_inconstant_number)
3129                           add_opvars(splev, "o", VA_PASS1(SPO_RN2));
3130                       is_inconstant_number = 0;
3131
3132                       chkjmp = New(struct opvar);
3133                       set_opvar_int(chkjmp, splev->n_opcodes+1);
3134                       switch_check_jump = chkjmp;
3135                       add_opcode(splev, SPO_PUSH, chkjmp);
3136                       add_opcode(splev, SPO_JMP, NULL);
3137                       break_stmt_start();
3138                   }
3139 break;
3140 case 138:
3141 {
3142                       struct opvar *endjump = New(struct opvar);
3143                       int i;
3144
3145                       set_opvar_int(endjump, splev->n_opcodes+1);
3146
3147                       add_opcode(splev, SPO_PUSH, endjump);
3148                       add_opcode(splev, SPO_JMP, NULL);
3149
3150                       set_opvar_int(switch_check_jump,
3151                              splev->n_opcodes - switch_check_jump->vardata.l);
3152
3153                       for (i = 0; i < n_switch_case_list; i++) {
3154                           add_opvars(splev, "oio",
3155                                      VA_PASS3(SPO_COPY,
3156                                               switch_case_value[i], SPO_CMP));
3157                           set_opvar_int(switch_case_list[i],
3158                          switch_case_list[i]->vardata.l - splev->n_opcodes-1);
3159                           add_opcode(splev, SPO_PUSH, switch_case_list[i]);
3160                           add_opcode(splev, SPO_JE, NULL);
3161                       }
3162
3163                       if (switch_default_case) {
3164                           set_opvar_int(switch_default_case,
3165                          switch_default_case->vardata.l - splev->n_opcodes-1);
3166                           add_opcode(splev, SPO_PUSH, switch_default_case);
3167                           add_opcode(splev, SPO_JMP, NULL);
3168                       }
3169
3170                       set_opvar_int(endjump, splev->n_opcodes - endjump->vardata.l);
3171
3172                       break_stmt_end(splev);
3173
3174                       add_opcode(splev, SPO_POP, NULL); /* get rid of the value in stack */
3175                       in_switch_statement--;
3176
3177
3178                   }
3179 break;
3180 case 141:
3181 {
3182                       if (n_switch_case_list < MAX_SWITCH_CASES) {
3183                           struct opvar *tmppush = New(struct opvar);
3184                           set_opvar_int(tmppush, splev->n_opcodes);
3185                           switch_case_value[n_switch_case_list] = yyvsp[-1].i;
3186                           switch_case_list[n_switch_case_list++] = tmppush;
3187                       } else lc_error("Too many cases in a switch.");
3188                   }
3189 break;
3190 case 142:
3191 {
3192                   }
3193 break;
3194 case 143:
3195 {
3196                       struct opvar *tmppush = New(struct opvar);
3197
3198                       if (switch_default_case)
3199                           lc_error("Switch default case already used.");
3200
3201                       set_opvar_int(tmppush, splev->n_opcodes);
3202                       switch_default_case = tmppush;
3203                   }
3204 break;
3205 case 144:
3206 {
3207                   }
3208 break;
3209 case 145:
3210 {
3211                       if (!allow_break_statements)
3212                           lc_error("Cannot use BREAK outside a statement block.");
3213                       else {
3214                           break_stmt_new(splev, splev->n_opcodes);
3215                       }
3216                   }
3217 break;
3218 case 148:
3219 {
3220                       char buf[256], buf2[256];
3221
3222                       if (n_forloops >= MAX_NESTED_IFS) {
3223                           lc_error("FOR: Too deeply nested loops.");
3224                           n_forloops = MAX_NESTED_IFS - 1;
3225                       }
3226
3227                       /* first, define a variable for the for-loop end value */
3228                       Sprintf(buf, "%s end", yyvsp[-4].map);
3229                       /* the value of which is already in stack (the 2nd math_expr) */
3230                       add_opvars(splev, "iso", VA_PASS3(0, buf, SPO_VAR_INIT));
3231
3232                       variable_definitions = add_vardef_type(variable_definitions,
3233                                                              yyvsp[-4].map, SPOVAR_INT);
3234                       /* define the for-loop variable. value is in stack (1st math_expr) */
3235                       add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
3236
3237                       /* calculate value for the loop "step" variable */
3238                       Sprintf(buf2, "%s step", yyvsp[-4].map);
3239                       /* end - start */
3240                       add_opvars(splev, "vvo",
3241                                  VA_PASS3(buf, yyvsp[-4].map, SPO_MATH_SUB));
3242                       /* sign of that */
3243                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_SIGN));
3244                       /* save the sign into the step var */
3245                       add_opvars(splev, "iso",
3246                                  VA_PASS3(0, buf2, SPO_VAR_INIT));
3247
3248                       forloop_list[n_forloops].varname = strdup(yyvsp[-4].map);
3249                       forloop_list[n_forloops].jmp_point = splev->n_opcodes;
3250
3251                       n_forloops++;
3252                       Free(yyvsp[-4].map);
3253                   }
3254 break;
3255 case 149:
3256 {
3257                       /* nothing */
3258                       break_stmt_start();
3259                   }
3260 break;
3261 case 150:
3262 {
3263                       char buf[256], buf2[256];
3264
3265                       n_forloops--;
3266                       Sprintf(buf, "%s step", forloop_list[n_forloops].varname);
3267                       Sprintf(buf2, "%s end", forloop_list[n_forloops].varname);
3268                       /* compare for-loop var to end value */
3269                       add_opvars(splev, "vvo",
3270                                  VA_PASS3(forloop_list[n_forloops].varname,
3271                                           buf2, SPO_CMP));
3272                       /* var + step */
3273                       add_opvars(splev, "vvo",
3274                                 VA_PASS3(buf, forloop_list[n_forloops].varname,
3275                                          SPO_MATH_ADD));
3276                       /* for-loop var = (for-loop var + step) */
3277                       add_opvars(splev, "iso",
3278                                  VA_PASS3(0, forloop_list[n_forloops].varname,
3279                                           SPO_VAR_INIT));
3280                       /* jump back if compared values were not equal */
3281                       add_opvars(splev, "io",
3282                                  VA_PASS2(
3283                     forloop_list[n_forloops].jmp_point - splev->n_opcodes - 1,
3284                                           SPO_JNE));
3285                       Free(forloop_list[n_forloops].varname);
3286                       break_stmt_end(splev);
3287                   }
3288 break;
3289 case 151:
3290 {
3291                       struct opvar *tmppush = New(struct opvar);
3292
3293                       if (n_if_list >= MAX_NESTED_IFS) {
3294                           lc_error("LOOP: Too deeply nested conditionals.");
3295                           n_if_list = MAX_NESTED_IFS - 1;
3296                       }
3297                       set_opvar_int(tmppush, splev->n_opcodes);
3298                       if_list[n_if_list++] = tmppush;
3299
3300                       add_opvars(splev, "o", VA_PASS1(SPO_DEC));
3301                       break_stmt_start();
3302                   }
3303 break;
3304 case 152:
3305 {
3306                       struct opvar *tmppush;
3307
3308                       add_opvars(splev, "oio", VA_PASS3(SPO_COPY, 0, SPO_CMP));
3309
3310                       tmppush = (struct opvar *) if_list[--n_if_list];
3311                       set_opvar_int(tmppush, tmppush->vardata.l - splev->n_opcodes-1);
3312                       add_opcode(splev, SPO_PUSH, tmppush);
3313                       add_opcode(splev, SPO_JG, NULL);
3314                       add_opcode(splev, SPO_POP, NULL); /* get rid of the count value in stack */
3315                       break_stmt_end(splev);
3316                   }
3317 break;
3318 case 153:
3319 {
3320                       struct opvar *tmppush2 = New(struct opvar);
3321
3322                       if (n_if_list >= MAX_NESTED_IFS) {
3323                           lc_error("IF: Too deeply nested conditionals.");
3324                           n_if_list = MAX_NESTED_IFS - 1;
3325                       }
3326
3327                       add_opcode(splev, SPO_CMP, NULL);
3328
3329                       set_opvar_int(tmppush2, splev->n_opcodes+1);
3330
3331                       if_list[n_if_list++] = tmppush2;
3332
3333                       add_opcode(splev, SPO_PUSH, tmppush2);
3334
3335                       add_opcode(splev, reverse_jmp_opcode( yyvsp[-1].i ), NULL);
3336
3337                   }
3338 break;
3339 case 154:
3340 {
3341                       if (n_if_list > 0) {
3342                           struct opvar *tmppush;
3343                           tmppush = (struct opvar *) if_list[--n_if_list];
3344                           set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3345                       } else lc_error("IF: Huh?!  No start address?");
3346                   }
3347 break;
3348 case 155:
3349 {
3350                       struct opvar *tmppush2 = New(struct opvar);
3351
3352                       if (n_if_list >= MAX_NESTED_IFS) {
3353                           lc_error("IF: Too deeply nested conditionals.");
3354                           n_if_list = MAX_NESTED_IFS - 1;
3355                       }
3356
3357                       add_opcode(splev, SPO_CMP, NULL);
3358
3359                       set_opvar_int(tmppush2, splev->n_opcodes+1);
3360
3361                       if_list[n_if_list++] = tmppush2;
3362
3363                       add_opcode(splev, SPO_PUSH, tmppush2);
3364
3365                       add_opcode(splev, reverse_jmp_opcode( yyvsp[0].i ), NULL);
3366
3367                   }
3368 break;
3369 case 156:
3370 {
3371                      /* do nothing */
3372                   }
3373 break;
3374 case 157:
3375 {
3376                       if (n_if_list > 0) {
3377                           struct opvar *tmppush;
3378                           tmppush = (struct opvar *) if_list[--n_if_list];
3379                           set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3380                       } else lc_error("IF: Huh?!  No start address?");
3381                   }
3382 break;
3383 case 158:
3384 {
3385                       if (n_if_list > 0) {
3386                           struct opvar *tmppush = New(struct opvar);
3387                           struct opvar *tmppush2;
3388
3389                           set_opvar_int(tmppush, splev->n_opcodes+1);
3390                           add_opcode(splev, SPO_PUSH, tmppush);
3391
3392                           add_opcode(splev, SPO_JMP, NULL);
3393
3394                           tmppush2 = (struct opvar *) if_list[--n_if_list];
3395
3396                           set_opvar_int(tmppush2, splev->n_opcodes - tmppush2->vardata.l);
3397                           if_list[n_if_list++] = tmppush;
3398                       } else lc_error("IF: Huh?!  No else-part address?");
3399                   }
3400 break;
3401 case 159:
3402 {
3403                       if (n_if_list > 0) {
3404                           struct opvar *tmppush;
3405                           tmppush = (struct opvar *) if_list[--n_if_list];
3406                           set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3407                       } else lc_error("IF: Huh?! No end address?");
3408                   }
3409 break;
3410 case 160:
3411 {
3412                       add_opvars(splev, "o", VA_PASS1(SPO_MESSAGE));
3413                   }
3414 break;
3415 case 161:
3416 {
3417                       add_opvars(splev, "iiiiiio",
3418                               VA_PASS7(-1,  0, -1, -1, -1, -1, SPO_CORRIDOR));
3419                   }
3420 break;
3421 case 162:
3422 {
3423                       add_opvars(splev, "iiiiiio",
3424                               VA_PASS7(-1, yyvsp[0].i, -1, -1, -1, -1, SPO_CORRIDOR));
3425                   }
3426 break;
3427 case 163:
3428 {
3429                       add_opvars(splev, "iiiiiio",
3430                               VA_PASS7(-1, -1, -1, -1, -1, -1, SPO_CORRIDOR));
3431                   }
3432 break;
3433 case 164:
3434 {
3435                       add_opvars(splev, "iiiiiio",
3436                                  VA_PASS7(yyvsp[-2].corpos.room, yyvsp[-2].corpos.door, yyvsp[-2].corpos.wall,
3437                                           yyvsp[0].corpos.room, yyvsp[0].corpos.door, yyvsp[0].corpos.wall,
3438                                           SPO_CORRIDOR));
3439                   }
3440 break;
3441 case 165:
3442 {
3443                       add_opvars(splev, "iiiiiio",
3444                                  VA_PASS7(yyvsp[-2].corpos.room, yyvsp[-2].corpos.door, yyvsp[-2].corpos.wall,
3445                                           -1, -1, (long)yyvsp[0].i,
3446                                           SPO_CORRIDOR));
3447                   }
3448 break;
3449 case 166:
3450 {
3451                         yyval.corpos.room = yyvsp[-5].i;
3452                         yyval.corpos.wall = yyvsp[-3].i;
3453                         yyval.corpos.door = yyvsp[-1].i;
3454                   }
3455 break;
3456 case 167:
3457 {
3458                       if ((yyvsp[-2].i < 100) && (yyvsp[-3].i == OROOM))
3459                           lc_error("Only typed rooms can have a chance.");
3460                       else {
3461                           add_opvars(splev, "iii",
3462                                      VA_PASS3((long)yyvsp[-3].i, (long)yyvsp[-2].i, (long)yyvsp[0].i));
3463                       }
3464                   }
3465 break;
3466 case 168:
3467 {
3468                       long rflags = yyvsp[0].i;
3469
3470                       if (rflags == -1) rflags = (1 << 0);
3471                       add_opvars(splev, "iiiiiiio",
3472                                  VA_PASS8(rflags, ERR, ERR,
3473                                           yyvsp[-3].crd.x, yyvsp[-3].crd.y, yyvsp[-1].sze.width, yyvsp[-1].sze.height,
3474                                           SPO_SUBROOM));
3475                       break_stmt_start();
3476                   }
3477 break;
3478 case 169:
3479 {
3480                       break_stmt_end(splev);
3481                       add_opcode(splev, SPO_ENDROOM, NULL);
3482                   }
3483 break;
3484 case 170:
3485 {
3486                       long rflags = yyvsp[-2].i;
3487
3488                       if (rflags == -1) rflags = (1 << 0);
3489                       add_opvars(splev, "iiiiiiio",
3490                                  VA_PASS8(rflags,
3491                                           yyvsp[-3].crd.x, yyvsp[-3].crd.y, yyvsp[-5].crd.x, yyvsp[-5].crd.y,
3492                                           yyvsp[-1].sze.width, yyvsp[-1].sze.height, SPO_ROOM));
3493                       break_stmt_start();
3494                   }
3495 break;
3496 case 171:
3497 {
3498                       break_stmt_end(splev);
3499                       add_opcode(splev, SPO_ENDROOM, NULL);
3500                   }
3501 break;
3502 case 172:
3503 {
3504                         yyval.i = 1;
3505                   }
3506 break;
3507 case 173:
3508 {
3509                         yyval.i = yyvsp[0].i;
3510                   }
3511 break;
3512 case 174:
3513 {
3514                         if ( yyvsp[-3].i < 1 || yyvsp[-3].i > 5 ||
3515                             yyvsp[-1].i < 1 || yyvsp[-1].i > 5 ) {
3516                             lc_error("Room positions should be between 1-5: (%li,%li)!", yyvsp[-3].i, yyvsp[-1].i);
3517                         } else {
3518                             yyval.crd.x = yyvsp[-3].i;
3519                             yyval.crd.y = yyvsp[-1].i;
3520                         }
3521                   }
3522 break;
3523 case 175:
3524 {
3525                         yyval.crd.x = yyval.crd.y = ERR;
3526                   }
3527 break;
3528 case 176:
3529 {
3530                         if ( yyvsp[-3].i < 0 || yyvsp[-1].i < 0) {
3531                             lc_error("Invalid subroom position (%li,%li)!", yyvsp[-3].i, yyvsp[-1].i);
3532                         } else {
3533                             yyval.crd.x = yyvsp[-3].i;
3534                             yyval.crd.y = yyvsp[-1].i;
3535                         }
3536                   }
3537 break;
3538 case 177:
3539 {
3540                         yyval.crd.x = yyval.crd.y = ERR;
3541                   }
3542 break;
3543 case 178:
3544 {
3545                       yyval.crd.x = yyvsp[-3].i;
3546                       yyval.crd.y = yyvsp[-1].i;
3547                   }
3548 break;
3549 case 179:
3550 {
3551                       yyval.crd.x = yyval.crd.y = ERR;
3552                   }
3553 break;
3554 case 180:
3555 {
3556                         yyval.sze.width = yyvsp[-3].i;
3557                         yyval.sze.height = yyvsp[-1].i;
3558                   }
3559 break;
3560 case 181:
3561 {
3562                         yyval.sze.height = yyval.sze.width = ERR;
3563                   }
3564 break;
3565 case 182:
3566 {
3567                         /* ERR means random here */
3568                         if (yyvsp[-2].i == ERR && yyvsp[0].i != ERR) {
3569                             lc_error("If the door wall is random, so must be its pos!");
3570                         } else {
3571                             add_opvars(splev, "iiiio",
3572                                        VA_PASS5((long)yyvsp[0].i, (long)yyvsp[-4].i, (long)yyvsp[-6].i,
3573                                                 (long)yyvsp[-2].i, SPO_ROOM_DOOR));
3574                         }
3575                   }
3576 break;
3577 case 183:
3578 {
3579                       add_opvars(splev, "io", VA_PASS2((long)yyvsp[-2].i, SPO_DOOR));
3580                   }
3581 break;
3582 case 188:
3583 {
3584                       yyval.i = yyvsp[0].i;
3585                   }
3586 break;
3587 case 189:
3588 {
3589                       yyval.i = (yyvsp[-2].i | yyvsp[0].i);
3590                   }
3591 break;
3592 case 192:
3593 {
3594                       add_opvars(splev, "ciisiio",
3595                                  VA_PASS7(0, 0, 1, (char *)0, 0, 0, SPO_MAP));
3596                       max_x_map = COLNO-1;
3597                       max_y_map = ROWNO;
3598                   }
3599 break;
3600 case 193:
3601 {
3602                       add_opvars(splev, "cii",
3603                                  VA_PASS3(SP_COORD_PACK((yyvsp[-4].i),(yyvsp[-2].i)),
3604                                           1, (long)yyvsp[-1].i));
3605                       scan_map(yyvsp[0].map, splev);
3606                       Free(yyvsp[0].map);
3607                   }
3608 break;
3609 case 194:
3610 {
3611                       add_opvars(splev, "ii", VA_PASS2(2, (long)yyvsp[-1].i));
3612                       scan_map(yyvsp[0].map, splev);
3613                       Free(yyvsp[0].map);
3614                   }
3615 break;
3616 case 199:
3617 {
3618                       add_opvars(splev, "io", VA_PASS2(0, SPO_MONSTER));
3619                   }
3620 break;
3621 case 200:
3622 {
3623                       add_opvars(splev, "io", VA_PASS2(1, SPO_MONSTER));
3624                       in_container_obj++;
3625                       break_stmt_start();
3626                   }
3627 break;
3628 case 201:
3629 {
3630                      break_stmt_end(splev);
3631                      in_container_obj--;
3632                      add_opvars(splev, "o", VA_PASS1(SPO_END_MONINVENT));
3633                  }
3634 break;
3635 case 202:
3636 {
3637                       /* nothing */
3638                   }
3639 break;
3640 case 203:
3641 {
3642                       struct opvar *stopit = New(struct opvar);
3643                       set_opvar_int(stopit, SP_M_V_END);
3644                       add_opcode(splev, SPO_PUSH, stopit);
3645                       yyval.i = 0x0000;
3646                   }
3647 break;
3648 case 204:
3649 {
3650                       if (( yyvsp[-2].i & yyvsp[0].i ))
3651                           lc_error("MONSTER extra info defined twice.");
3652                       yyval.i = ( yyvsp[-2].i | yyvsp[0].i );
3653                   }
3654 break;
3655 case 205:
3656 {
3657                       add_opvars(splev, "i", VA_PASS1(SP_M_V_NAME));
3658                       yyval.i = 0x0001;
3659                   }
3660 break;
3661 case 206:
3662 {
3663                       add_opvars(splev, "ii",
3664                                  VA_PASS2((long)yyvsp[0].i, SP_M_V_PEACEFUL));
3665                       yyval.i = 0x0002;
3666                   }
3667 break;
3668 case 207:
3669 {
3670                       add_opvars(splev, "ii",
3671                                  VA_PASS2((long)yyvsp[0].i, SP_M_V_ASLEEP));
3672                       yyval.i = 0x0004;
3673                   }
3674 break;
3675 case 208:
3676 {
3677                       add_opvars(splev, "ii",
3678                                  VA_PASS2((long)yyvsp[0].i, SP_M_V_ALIGN));
3679                       yyval.i = 0x0008;
3680                   }
3681 break;
3682 case 209:
3683 {
3684                       add_opvars(splev, "ii",
3685                                  VA_PASS2((long)yyvsp[-1].i, SP_M_V_APPEAR));
3686                       yyval.i = 0x0010;
3687                   }
3688 break;
3689 case 210:
3690 {
3691                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_FEMALE));
3692                       yyval.i = 0x0020;
3693                   }
3694 break;
3695 case 211:
3696 {
3697                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_INVIS));
3698                       yyval.i = 0x0040;
3699                   }
3700 break;
3701 case 212:
3702 {
3703                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_CANCELLED));
3704                       yyval.i = 0x0080;
3705                   }
3706 break;
3707 case 213:
3708 {
3709                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_REVIVED));
3710                       yyval.i = 0x0100;
3711                   }
3712 break;
3713 case 214:
3714 {
3715                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_AVENGE));
3716                       yyval.i = 0x0200;
3717                   }
3718 break;
3719 case 215:
3720 {
3721                       add_opvars(splev, "i", VA_PASS1(SP_M_V_FLEEING));
3722                       yyval.i = 0x0400;
3723                   }
3724 break;
3725 case 216:
3726 {
3727                       add_opvars(splev, "i", VA_PASS1(SP_M_V_BLINDED));
3728                       yyval.i = 0x0800;
3729                   }
3730 break;
3731 case 217:
3732 {
3733                       add_opvars(splev, "i", VA_PASS1(SP_M_V_PARALYZED));
3734                       yyval.i = 0x1000;
3735                   }
3736 break;
3737 case 218:
3738 {
3739                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_STUNNED));
3740                       yyval.i = 0x2000;
3741                   }
3742 break;
3743 case 219:
3744 {
3745                       add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_CONFUSED));
3746                       yyval.i = 0x4000;
3747                   }
3748 break;
3749 case 220:
3750 {
3751                       add_opvars(splev, "ii",
3752                                  VA_PASS2((long)yyvsp[0].i, SP_M_V_SEENTRAPS));
3753                       yyval.i = 0x8000;
3754                   }
3755 break;
3756 case 221:
3757 {
3758                       int token = get_trap_type(yyvsp[0].map);
3759                       if (token == ERR || token == 0)
3760                           lc_error("Unknown trap type '%s'!", yyvsp[0].map);
3761                       Free(yyvsp[0].map);
3762                       yyval.i = (1L << (token - 1));
3763                   }
3764 break;
3765 case 222:
3766 {
3767                       yyval.i = (long) ~0;
3768                   }
3769 break;
3770 case 223:
3771 {
3772                       int token = get_trap_type(yyvsp[-2].map);
3773                       if (token == ERR || token == 0)
3774                           lc_error("Unknown trap type '%s'!", yyvsp[-2].map);
3775
3776                       if ((1L << (token - 1)) & yyvsp[0].i)
3777                           lc_error("Monster seen_traps, trap '%s' listed twice.", yyvsp[-2].map);
3778                       Free(yyvsp[-2].map);
3779                       yyval.i = ((1L << (token - 1)) | yyvsp[0].i);
3780                   }
3781 break;
3782 case 224:
3783 {
3784                       long cnt = 0;
3785                       if (in_container_obj) cnt |= SP_OBJ_CONTENT;
3786                       add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
3787                   }
3788 break;
3789 case 225:
3790 {
3791                       long cnt = SP_OBJ_CONTAINER;
3792                       if (in_container_obj) cnt |= SP_OBJ_CONTENT;
3793                       add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
3794                       in_container_obj++;
3795                       break_stmt_start();
3796                   }
3797 break;
3798 case 226:
3799 {
3800                      break_stmt_end(splev);
3801                      in_container_obj--;
3802                      add_opcode(splev, SPO_POP_CONTAINER, NULL);
3803                  }
3804 break;
3805 case 227:
3806 {
3807                       if (( yyvsp[0].i & 0x4000) && in_container_obj)
3808                           lc_error("Object cannot have a coord when contained.");
3809                       else if (!( yyvsp[0].i & 0x4000) && !in_container_obj)
3810                           lc_error("Object needs a coord when not contained.");
3811                   }
3812 break;
3813 case 228:
3814 {
3815                       struct opvar *stopit = New(struct opvar);
3816                       set_opvar_int(stopit, SP_O_V_END);
3817                       add_opcode(splev, SPO_PUSH, stopit);
3818                       yyval.i = 0x00;
3819                   }
3820 break;
3821 case 229:
3822 {
3823                       if (( yyvsp[-2].i & yyvsp[0].i ))
3824                           lc_error("OBJECT extra info '%s' defined twice.", curr_token);
3825                       yyval.i = ( yyvsp[-2].i | yyvsp[0].i );
3826                   }
3827 break;
3828 case 230:
3829 {
3830                       add_opvars(splev, "ii",
3831                                  VA_PASS2((long)yyvsp[0].i, SP_O_V_CURSE));
3832                       yyval.i = 0x0001;
3833                   }
3834 break;
3835 case 231:
3836 {
3837                       add_opvars(splev, "i", VA_PASS1(SP_O_V_CORPSENM));
3838                       yyval.i = 0x0002;
3839                   }
3840 break;
3841 case 232:
3842 {
3843                       add_opvars(splev, "i", VA_PASS1(SP_O_V_SPE));
3844                       yyval.i = 0x0004;
3845                   }
3846 break;
3847 case 233:
3848 {
3849                       add_opvars(splev, "i", VA_PASS1(SP_O_V_NAME));
3850                       yyval.i = 0x0008;
3851                   }
3852 break;
3853 case 234:
3854 {
3855                       add_opvars(splev, "i", VA_PASS1(SP_O_V_QUAN));
3856                       yyval.i = 0x0010;
3857                   }
3858 break;
3859 case 235:
3860 {
3861                       add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_BURIED));
3862                       yyval.i = 0x0020;
3863                   }
3864 break;
3865 case 236:
3866 {
3867                       add_opvars(splev, "ii", VA_PASS2((long)yyvsp[0].i, SP_O_V_LIT));
3868                       yyval.i = 0x0040;
3869                   }
3870 break;
3871 case 237:
3872 {
3873                       add_opvars(splev, "i", VA_PASS1(SP_O_V_ERODED));
3874                       yyval.i = 0x0080;
3875                   }
3876 break;
3877 case 238:
3878 {
3879                       add_opvars(splev, "ii", VA_PASS2(-1, SP_O_V_ERODED));
3880                       yyval.i = 0x0080;
3881                   }
3882 break;
3883 case 239:
3884 {
3885                       if (yyvsp[0].i == D_LOCKED) {
3886                           add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_LOCKED));
3887                           yyval.i = 0x0100;
3888                       } else if (yyvsp[0].i == D_BROKEN) {
3889                           add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_BROKEN));
3890                           yyval.i = 0x0200;
3891                       } else
3892                           lc_error("DOOR state can only be locked or broken.");
3893                   }
3894 break;
3895 case 240:
3896 {
3897                       add_opvars(splev, "ii", VA_PASS2(yyvsp[0].i, SP_O_V_TRAPPED));
3898                       yyval.i = 0x0400;
3899                   }
3900 break;
3901 case 241:
3902 {
3903                       add_opvars(splev, "i", VA_PASS1(SP_O_V_RECHARGED));
3904                       yyval.i = 0x0800;
3905                   }
3906 break;
3907 case 242:
3908 {
3909                       add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_INVIS));
3910                       yyval.i = 0x1000;
3911                   }
3912 break;
3913 case 243:
3914 {
3915                       add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_GREASED));
3916                       yyval.i = 0x2000;
3917                   }
3918 break;
3919 case 244:
3920 {
3921                       add_opvars(splev, "i", VA_PASS1(SP_O_V_COORD));
3922                       yyval.i = 0x4000;
3923                   }
3924 break;
3925 case 245:
3926 {
3927                       add_opvars(splev, "io", VA_PASS2((long)yyvsp[-2].i, SPO_TRAP));
3928                   }
3929 break;
3930 case 246:
3931 {
3932                        long dir, state = 0;
3933
3934                        /* convert dir from a DIRECTION to a DB_DIR */
3935                        dir = yyvsp[-2].i;
3936                        switch (dir) {
3937                        case W_NORTH: dir = DB_NORTH; break;
3938                        case W_SOUTH: dir = DB_SOUTH; break;
3939                        case W_EAST:  dir = DB_EAST;  break;
3940                        case W_WEST:  dir = DB_WEST;  break;
3941                        default:
3942                            lc_error("Invalid drawbridge direction.");
3943                            break;
3944                        }
3945
3946                        if ( yyvsp[0].i == D_ISOPEN )
3947                            state = 1;
3948                        else if ( yyvsp[0].i == D_CLOSED )
3949                            state = 0;
3950                        else if ( yyvsp[0].i == -1 )
3951                            state = -1;
3952                        else
3953                            lc_error("A drawbridge can only be open, closed or random!");
3954                        add_opvars(splev, "iio",
3955                                   VA_PASS3(state, dir, SPO_DRAWBRIDGE));
3956                    }
3957 break;
3958 case 247:
3959 {
3960                       add_opvars(splev, "iiio",
3961                                  VA_PASS4((long)yyvsp[0].i, 1, 0, SPO_MAZEWALK));
3962                   }
3963 break;
3964 case 248:
3965 {
3966                       add_opvars(splev, "iiio",
3967                                  VA_PASS4((long)yyvsp[-3].i, (long)yyvsp[-1].i,
3968                                           (long)yyvsp[0].i, SPO_MAZEWALK));
3969                   }
3970 break;
3971 case 249:
3972 {
3973                       add_opvars(splev, "rio",
3974                                  VA_PASS3(SP_REGION_PACK(-1,-1,-1,-1),
3975                                           0, SPO_WALLIFY));
3976                   }
3977 break;
3978 case 250:
3979 {
3980                       add_opvars(splev, "io", VA_PASS2(1, SPO_WALLIFY));
3981                   }
3982 break;
3983 case 251:
3984 {
3985                       add_opvars(splev, "io",
3986                                  VA_PASS2((long)yyvsp[0].i, SPO_LADDER));
3987                   }
3988 break;
3989 case 252:
3990 {
3991                       add_opvars(splev, "io",
3992                                  VA_PASS2((long)yyvsp[0].i, SPO_STAIR));
3993                   }
3994 break;
3995 case 253:
3996 {
3997                       add_opvars(splev, "iiiii iiiii iiso",
3998                                  VA_PASS14(yyvsp[-4].lregn.x1, yyvsp[-4].lregn.y1, yyvsp[-4].lregn.x2, yyvsp[-4].lregn.y2, yyvsp[-4].lregn.area,
3999                                            yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4000                                      (long) ((yyvsp[0].i) ? LR_UPSTAIR : LR_DOWNSTAIR),
4001                                            0, (char *) 0, SPO_LEVREGION));
4002                   }
4003 break;
4004 case 254:
4005 {
4006                       add_opvars(splev, "iiiii iiiii iiso",
4007                                  VA_PASS14(yyvsp[-4].lregn.x1, yyvsp[-4].lregn.y1, yyvsp[-4].lregn.x2, yyvsp[-4].lregn.y2, yyvsp[-4].lregn.area,
4008                                            yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4009                                            LR_PORTAL, 0, yyvsp[0].map, SPO_LEVREGION));
4010                       Free(yyvsp[0].map);
4011                   }
4012 break;
4013 case 255:
4014 {
4015                       long rtyp = 0;
4016                       switch(yyvsp[0].i) {
4017                       case -1: rtyp = LR_TELE; break;
4018                       case  0: rtyp = LR_DOWNTELE; break;
4019                       case  1: rtyp = LR_UPTELE; break;
4020                       }
4021                       add_opvars(splev, "iiiii iiiii iiso",
4022                                  VA_PASS14(yyvsp[-3].lregn.x1, yyvsp[-3].lregn.y1, yyvsp[-3].lregn.x2, yyvsp[-3].lregn.y2, yyvsp[-3].lregn.area,
4023                                            yyvsp[-1].lregn.x1, yyvsp[-1].lregn.y1, yyvsp[-1].lregn.x2, yyvsp[-1].lregn.y2, yyvsp[-1].lregn.area,
4024                                            rtyp, 0, (char *)0, SPO_LEVREGION));
4025                   }
4026 break;
4027 case 256:
4028 {
4029                       add_opvars(splev, "iiiii iiiii iiso",
4030                                  VA_PASS14(yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4031                                            yyvsp[0].lregn.x1, yyvsp[0].lregn.y1, yyvsp[0].lregn.x2, yyvsp[0].lregn.y2, yyvsp[0].lregn.area,
4032                                            (long) LR_BRANCH, 0,
4033                                            (char *) 0, SPO_LEVREGION));
4034                   }
4035 break;
4036 case 257:
4037 {
4038                         yyval.i = -1;
4039                   }
4040 break;
4041 case 258:
4042 {
4043                         yyval.i = yyvsp[0].i;
4044                   }
4045 break;
4046 case 259:
4047 {
4048                       add_opvars(splev, "o", VA_PASS1(SPO_FOUNTAIN));
4049                   }
4050 break;
4051 case 260:
4052 {
4053                       add_opvars(splev, "o", VA_PASS1(SPO_SINK));
4054                   }
4055 break;
4056 case 261:
4057 {
4058                       add_opvars(splev, "o", VA_PASS1(SPO_POOL));
4059                   }
4060 break;
4061 case 262:
4062 {
4063                       yyval.terr.lit = -2;
4064                       yyval.terr.ter = what_map_char((char) yyvsp[0].i);
4065                   }
4066 break;
4067 case 263:
4068 {
4069                       yyval.terr.lit = yyvsp[-1].i;
4070                       yyval.terr.ter = what_map_char((char) yyvsp[-3].i);
4071                   }
4072 break;
4073 case 264:
4074 {
4075                       add_opvars(splev, "io",
4076                                  VA_PASS2(yyvsp[0].i, SPO_REPLACETERRAIN));
4077                   }
4078 break;
4079 case 265:
4080 {
4081                      add_opvars(splev, "o", VA_PASS1(SPO_TERRAIN));
4082                  }
4083 break;
4084 case 266:
4085 {
4086                       add_opvars(splev, "o", VA_PASS1(SPO_NON_DIGGABLE));
4087                   }
4088 break;
4089 case 267:
4090 {
4091                       add_opvars(splev, "o", VA_PASS1(SPO_NON_PASSWALL));
4092                   }
4093 break;
4094 case 268:
4095 {
4096                       long irr;
4097                       long rt = yyvsp[-1].i;
4098                       long rflags = yyvsp[0].i;
4099
4100                       if (rflags == -1) rflags = (1 << 0);
4101                       if (!(rflags & 1)) rt += MAXRTYPE+1;
4102                       irr = ((rflags & 2) != 0);
4103                       add_opvars(splev, "iiio",
4104                                  VA_PASS4((long)yyvsp[-3].i, rt, rflags, SPO_REGION));
4105                       yyval.i = (irr || (rflags & 1) || rt != OROOM);
4106                       break_stmt_start();
4107                   }
4108 break;
4109 case 269:
4110 {
4111                       break_stmt_end(splev);
4112                       if ( yyvsp[-1].i ) {
4113                           add_opcode(splev, SPO_ENDROOM, NULL);
4114                       } else if ( yyvsp[0].i )
4115                           lc_error("Cannot use lev statements in non-permanent REGION");
4116                   }
4117 break;
4118 case 270:
4119 {
4120                       yyval.i = 0;
4121                   }
4122 break;
4123 case 271:
4124 {
4125                       yyval.i = yyvsp[0].i;
4126                   }
4127 break;
4128 case 272:
4129 {
4130                       add_opvars(splev, "iio",
4131                                  VA_PASS3((long)yyvsp[0].i, (long)yyvsp[-2].i, SPO_ALTAR));
4132                   }
4133 break;
4134 case 273:
4135 {
4136                       add_opvars(splev, "io", VA_PASS2(2, SPO_GRAVE));
4137                   }
4138 break;
4139 case 274:
4140 {
4141                       add_opvars(splev, "sio",
4142                                  VA_PASS3((char *)0, 1, SPO_GRAVE));
4143                   }
4144 break;
4145 case 275:
4146 {
4147                       add_opvars(splev, "sio",
4148                                  VA_PASS3((char *)0, 0, SPO_GRAVE));
4149                   }
4150 break;
4151 case 276:
4152 {
4153                       add_opvars(splev, "o", VA_PASS1(SPO_GOLD));
4154                   }
4155 break;
4156 case 277:
4157 {
4158                       add_opvars(splev, "io",
4159                                  VA_PASS2((long)yyvsp[-2].i, SPO_ENGRAVING));
4160                   }
4161 break;
4162 case 278:
4163 {
4164                       add_opvars(splev, "o", VA_PASS1(SPO_MINERALIZE));
4165                   }
4166 break;
4167 case 279:
4168 {
4169                       add_opvars(splev, "iiiio",
4170                                  VA_PASS5(-1L, -1L, -1L, -1L, SPO_MINERALIZE));
4171                   }
4172 break;
4173 case 280:
4174 {
4175                         int token = get_trap_type(yyvsp[0].map);
4176                         if (token == ERR)
4177                             lc_error("Unknown trap type '%s'!", yyvsp[0].map);
4178                         yyval.i = token;
4179                         Free(yyvsp[0].map);
4180                   }
4181 break;
4182 case 282:
4183 {
4184                         int token = get_room_type(yyvsp[0].map);
4185                         if (token == ERR) {
4186                             lc_warning("Unknown room type \"%s\"!  Making ordinary room...", yyvsp[0].map);
4187                                 yyval.i = OROOM;
4188                         } else
4189                                 yyval.i = token;
4190                         Free(yyvsp[0].map);
4191                   }
4192 break;
4193 case 284:
4194 {
4195                         yyval.i = -1;
4196                   }
4197 break;
4198 case 285:
4199 {
4200                         yyval.i = yyvsp[0].i;
4201                   }
4202 break;
4203 case 286:
4204 {
4205                         yyval.i = yyvsp[0].i;
4206                   }
4207 break;
4208 case 287:
4209 {
4210                         yyval.i = yyvsp[-2].i | yyvsp[0].i;
4211                   }
4212 break;
4213 case 288:
4214 {
4215                       yyval.i = (yyvsp[0].i << 0);
4216                   }
4217 break;
4218 case 289:
4219 {
4220                       yyval.i = (yyvsp[0].i << 1);
4221                   }
4222 break;
4223 case 290:
4224 {
4225                       yyval.i = (yyvsp[0].i << 2);
4226                   }
4227 break;
4228 case 297:
4229 {
4230                         yyval.i = - MAX_REGISTERS - 1;
4231                   }
4232 break;
4233 case 300:
4234 {
4235                         yyval.i = - MAX_REGISTERS - 1;
4236                   }
4237 break;
4238 case 303:
4239 {
4240                         if ( yyvsp[-1].i >= 3 )
4241                                 lc_error("Register Index overflow!");
4242                         else
4243                                 yyval.i = - yyvsp[-1].i - 1;
4244                   }
4245 break;
4246 case 304:
4247 {
4248                       add_opvars(splev, "s", VA_PASS1(yyvsp[0].map));
4249                       Free(yyvsp[0].map);
4250                   }
4251 break;
4252 case 305:
4253 {
4254                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_STRING);
4255                       vardef_used(variable_definitions, yyvsp[0].map);
4256                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4257                       Free(yyvsp[0].map);
4258                   }
4259 break;
4260 case 306:
4261 {
4262                       check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_STRING|SPOVAR_ARRAY);
4263                       vardef_used(variable_definitions, yyvsp[-3].map);
4264                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4265                       Free(yyvsp[-3].map);
4266                   }
4267 break;
4268 case 307:
4269 {
4270                       /* nothing */
4271                   }
4272 break;
4273 case 308:
4274 {
4275                       add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
4276                   }
4277 break;
4278 case 309:
4279 {
4280                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDCOORD));
4281                   }
4282 break;
4283 case 310:
4284 {
4285                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_COORD);
4286                       vardef_used(variable_definitions, yyvsp[0].map);
4287                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4288                       Free(yyvsp[0].map);
4289                   }
4290 break;
4291 case 311:
4292 {
4293                       check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_COORD|SPOVAR_ARRAY);
4294                       vardef_used(variable_definitions, yyvsp[-3].map);
4295                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4296                       Free(yyvsp[-3].map);
4297                   }
4298 break;
4299 case 312:
4300 {
4301                       if (yyvsp[-3].i < 0 || yyvsp[-1].i < 0 || yyvsp[-3].i >= COLNO || yyvsp[-1].i >= ROWNO)
4302                           lc_error("Coordinates (%li,%li) out of map range!", yyvsp[-3].i, yyvsp[-1].i);
4303                       yyval.i = SP_COORD_PACK(yyvsp[-3].i, yyvsp[-1].i);
4304                   }
4305 break;
4306 case 313:
4307 {
4308                       yyval.i = SP_COORD_PACK_RANDOM(0);
4309                   }
4310 break;
4311 case 314:
4312 {
4313                       yyval.i = SP_COORD_PACK_RANDOM( yyvsp[-1].i );
4314                   }
4315 break;
4316 case 315:
4317 {
4318                       yyval.i = yyvsp[0].i;
4319                   }
4320 break;
4321 case 316:
4322 {
4323                       if ((yyvsp[-2].i & yyvsp[0].i))
4324                           lc_warning("Humidity flag used twice.");
4325                       yyval.i = (yyvsp[-2].i | yyvsp[0].i);
4326                   }
4327 break;
4328 case 317:
4329 {
4330                       /* nothing */
4331                   }
4332 break;
4333 case 318:
4334 {
4335                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_REGION);
4336                       vardef_used(variable_definitions, yyvsp[0].map);
4337                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4338                       Free(yyvsp[0].map);
4339                   }
4340 break;
4341 case 319:
4342 {
4343                       check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_REGION|SPOVAR_ARRAY);
4344                       vardef_used(variable_definitions, yyvsp[-3].map);
4345                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4346                       Free(yyvsp[-3].map);
4347                   }
4348 break;
4349 case 320:
4350 {
4351                       long r = SP_REGION_PACK(yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4352                       if ( yyvsp[-7].i > yyvsp[-3].i || yyvsp[-5].i > yyvsp[-1].i )
4353                           lc_error("Region start > end: (%li,%li,%li,%li)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4354
4355                       add_opvars(splev, "r", VA_PASS1(r));
4356                       yyval.i = r;
4357                   }
4358 break;
4359 case 321:
4360 {
4361                       add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
4362                   }
4363 break;
4364 case 322:
4365 {
4366                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_MAPCHAR);
4367                       vardef_used(variable_definitions, yyvsp[0].map);
4368                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4369                       Free(yyvsp[0].map);
4370                   }
4371 break;
4372 case 323:
4373 {
4374                       check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_MAPCHAR|SPOVAR_ARRAY);
4375                       vardef_used(variable_definitions, yyvsp[-3].map);
4376                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4377                       Free(yyvsp[-3].map);
4378                   }
4379 break;
4380 case 324:
4381 {
4382                       if (what_map_char((char) yyvsp[0].i) != INVALID_TYPE)
4383                           yyval.i = SP_MAPCHAR_PACK(what_map_char((char) yyvsp[0].i), -2);
4384                       else {
4385                           lc_error("Unknown map char type '%c'!", yyvsp[0].i);
4386                           yyval.i = SP_MAPCHAR_PACK(STONE, -2);
4387                       }
4388                   }
4389 break;
4390 case 325:
4391 {
4392                       if (what_map_char((char) yyvsp[-3].i) != INVALID_TYPE)
4393                           yyval.i = SP_MAPCHAR_PACK(what_map_char((char) yyvsp[-3].i), yyvsp[-1].i);
4394                       else {
4395                           lc_error("Unknown map char type '%c'!", yyvsp[-3].i);
4396                           yyval.i = SP_MAPCHAR_PACK(STONE, yyvsp[-1].i);
4397                       }
4398                   }
4399 break;
4400 case 326:
4401 {
4402                       add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
4403                   }
4404 break;
4405 case 327:
4406 {
4407                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_MONST);
4408                       vardef_used(variable_definitions, yyvsp[0].map);
4409                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4410                       Free(yyvsp[0].map);
4411                   }
4412 break;
4413 case 328:
4414 {
4415                       check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_MONST|SPOVAR_ARRAY);
4416                       vardef_used(variable_definitions, yyvsp[-3].map);
4417                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4418                       Free(yyvsp[-3].map);
4419                   }
4420 break;
4421 case 329:
4422 {
4423                       long m = get_monster_id(yyvsp[0].map, (char)0);
4424                       if (m == ERR) {
4425                           lc_error("Unknown monster \"%s\"!", yyvsp[0].map);
4426                           yyval.i = -1;
4427                       } else
4428                           yyval.i = SP_MONST_PACK(m,
4429                                          def_monsyms[(int) mons[m].mlet].sym);
4430                       Free(yyvsp[0].map);
4431                   }
4432 break;
4433 case 330:
4434 {
4435                         if (check_monster_char((char) yyvsp[0].i))
4436                             yyval.i = SP_MONST_PACK(-1, yyvsp[0].i);
4437                         else {
4438                             lc_error("Unknown monster class '%c'!", yyvsp[0].i);
4439                             yyval.i = -1;
4440                         }
4441                   }
4442 break;
4443 case 331:
4444 {
4445                       long m = get_monster_id(yyvsp[-1].map, (char) yyvsp[-3].i);
4446                       if (m == ERR) {
4447                           lc_error("Unknown monster ('%c', \"%s\")!", yyvsp[-3].i, yyvsp[-1].map);
4448                           yyval.i = -1;
4449                       } else
4450                           yyval.i = SP_MONST_PACK(m, yyvsp[-3].i);
4451                       Free(yyvsp[-1].map);
4452                   }
4453 break;
4454 case 332:
4455 {
4456                       yyval.i = -1;
4457                   }
4458 break;
4459 case 333:
4460 {
4461                       add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
4462                   }
4463 break;
4464 case 334:
4465 {
4466                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_OBJ);
4467                       vardef_used(variable_definitions, yyvsp[0].map);
4468                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4469                       Free(yyvsp[0].map);
4470                   }
4471 break;
4472 case 335:
4473 {
4474                       check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_OBJ|SPOVAR_ARRAY);
4475                       vardef_used(variable_definitions, yyvsp[-3].map);
4476                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4477                       Free(yyvsp[-3].map);
4478                   }
4479 break;
4480 case 336:
4481 {
4482                       long m = get_object_id(yyvsp[0].map, (char)0);
4483                       if (m == ERR) {
4484                           lc_error("Unknown object \"%s\"!", yyvsp[0].map);
4485                           yyval.i = -1;
4486                       } else
4487                           yyval.i = SP_OBJ_PACK(m, 1); /* obj class != 0 to force generation of a specific item */
4488                       Free(yyvsp[0].map);
4489                   }
4490 break;
4491 case 337:
4492 {
4493                         if (check_object_char((char) yyvsp[0].i))
4494                             yyval.i = SP_OBJ_PACK(-1, yyvsp[0].i);
4495                         else {
4496                             lc_error("Unknown object class '%c'!", yyvsp[0].i);
4497                             yyval.i = -1;
4498                         }
4499                   }
4500 break;
4501 case 338:
4502 {
4503                       long m = get_object_id(yyvsp[-1].map, (char) yyvsp[-3].i);
4504                       if (m == ERR) {
4505                           lc_error("Unknown object ('%c', \"%s\")!", yyvsp[-3].i, yyvsp[-1].map);
4506                           yyval.i = -1;
4507                       } else
4508                           yyval.i = SP_OBJ_PACK(m, yyvsp[-3].i);
4509                       Free(yyvsp[-1].map);
4510                   }
4511 break;
4512 case 339:
4513 {
4514                       yyval.i = -1;
4515                   }
4516 break;
4517 case 340:
4518 { }
4519 break;
4520 case 341:
4521 {
4522                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_ADD));
4523                   }
4524 break;
4525 case 342:
4526 {
4527                       add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4528                   }
4529 break;
4530 case 343:
4531 {
4532                       is_inconstant_number = 1;
4533                   }
4534 break;
4535 case 344:
4536 {
4537                       add_opvars(splev, "i", VA_PASS1(yyvsp[-1].i));
4538                   }
4539 break;
4540 case 345:
4541 {
4542                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_INT);
4543                       vardef_used(variable_definitions, yyvsp[0].map);
4544                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4545                       Free(yyvsp[0].map);
4546                       is_inconstant_number = 1;
4547                   }
4548 break;
4549 case 346:
4550 {
4551                       check_vardef_type(variable_definitions,
4552                                         yyvsp[-3].map, SPOVAR_INT|SPOVAR_ARRAY);
4553                       vardef_used(variable_definitions, yyvsp[-3].map);
4554                       add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4555                       Free(yyvsp[-3].map);
4556                       is_inconstant_number = 1;
4557                   }
4558 break;
4559 case 347:
4560 {
4561                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_ADD));
4562                   }
4563 break;
4564 case 348:
4565 {
4566                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_SUB));
4567                   }
4568 break;
4569 case 349:
4570 {
4571                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_MUL));
4572                   }
4573 break;
4574 case 350:
4575 {
4576                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_DIV));
4577                   }
4578 break;
4579 case 351:
4580 {
4581                       add_opvars(splev, "o", VA_PASS1(SPO_MATH_MOD));
4582                   }
4583 break;
4584 case 352:
4585 { }
4586 break;
4587 case 353:
4588 {
4589                       if (!strcmp("int", yyvsp[0].map) || !strcmp("integer", yyvsp[0].map)) {
4590                           yyval.i = (int)'i';
4591                       } else
4592                           lc_error("Unknown function parameter type '%s'", yyvsp[0].map);
4593                   }
4594 break;
4595 case 354:
4596 {
4597                       if (!strcmp("str", yyvsp[0].map) || !strcmp("string", yyvsp[0].map)) {
4598                           yyval.i = (int)'s';
4599                       } else
4600                           lc_error("Unknown function parameter type '%s'", yyvsp[0].map);
4601                   }
4602 break;
4603 case 355:
4604 {
4605                       struct lc_funcdefs_parm *tmp = New(struct lc_funcdefs_parm);
4606
4607                       if (!curr_function) {
4608                           lc_error("Function parameters outside function definition.");
4609                       } else if (!tmp) {
4610                           lc_error("Could not alloc function params.");
4611                       } else {
4612                           long vt = SPOVAR_NULL;
4613
4614                           tmp->name = strdup(yyvsp[-2].map);
4615                           tmp->parmtype = (char) yyvsp[0].i;
4616                           tmp->next = curr_function->params;
4617                           curr_function->params = tmp;
4618                           curr_function->n_params++;
4619                           switch (tmp->parmtype) {
4620                           case 'i':
4621                               vt = SPOVAR_INT;
4622                               break;
4623                           case 's':
4624                               vt = SPOVAR_STRING;
4625                               break;
4626                           default:
4627                               lc_error("Unknown func param conversion.");
4628                               break;
4629                           }
4630                           variable_definitions = add_vardef_type(
4631                                                          variable_definitions,
4632                                                                  yyvsp[-2].map, vt);
4633                       }
4634                       Free(yyvsp[-2].map);
4635                   }
4636 break;
4637 case 360:
4638 {
4639                               yyval.i = (int)'i';
4640                           }
4641 break;
4642 case 361:
4643 {
4644                               yyval.i = (int)'s';
4645                           }
4646 break;
4647 case 362:
4648 {
4649                               char tmpbuf[2];
4650                               tmpbuf[0] = (char) yyvsp[0].i;
4651                               tmpbuf[1] = '\0';
4652                               yyval.map = strdup(tmpbuf);
4653                           }
4654 break;
4655 case 363:
4656 {
4657                               long len = strlen( yyvsp[-2].map );
4658                               char *tmp = (char *) alloc(len + 2);
4659                               sprintf(tmp, "%c%s", (char) yyvsp[0].i, yyvsp[-2].map );
4660                               Free( yyvsp[-2].map );
4661                               yyval.map = tmp;
4662                           }
4663 break;
4664 case 364:
4665 {
4666                               yyval.map = strdup("");
4667                           }
4668 break;
4669 case 365:
4670 {
4671                               char *tmp = strdup( yyvsp[0].map );
4672                               Free( yyvsp[0].map );
4673                               yyval.map = tmp;
4674                           }
4675 break;
4676 case 366:
4677 {
4678                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_POINT));
4679                   }
4680 break;
4681 case 367:
4682 {
4683                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_RECT));
4684                   }
4685 break;
4686 case 368:
4687 {
4688                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_FILLRECT));
4689                   }
4690 break;
4691 case 369:
4692 {
4693                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_LINE));
4694                   }
4695 break;
4696 case 370:
4697 {
4698                       /* randline (x1,y1),(x2,y2), roughness */
4699                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDLINE));
4700                   }
4701 break;
4702 case 371:
4703 {
4704                       add_opvars(splev, "io", VA_PASS2(W_ANY, SPO_SEL_GROW));
4705                   }
4706 break;
4707 case 372:
4708 {
4709                       add_opvars(splev, "io", VA_PASS2(yyvsp[-3].i, SPO_SEL_GROW));
4710                   }
4711 break;
4712 case 373:
4713 {
4714                       add_opvars(splev, "iio",
4715                              VA_PASS3(yyvsp[-3].i, SPOFILTER_PERCENT, SPO_SEL_FILTER));
4716                   }
4717 break;
4718 case 374:
4719 {
4720                       add_opvars(splev, "io",
4721                                VA_PASS2(SPOFILTER_SELECTION, SPO_SEL_FILTER));
4722                   }
4723 break;
4724 case 375:
4725 {
4726                       add_opvars(splev, "io",
4727                                  VA_PASS2(SPOFILTER_MAPCHAR, SPO_SEL_FILTER));
4728                   }
4729 break;
4730 case 376:
4731 {
4732                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_FLOOD));
4733                   }
4734 break;
4735 case 377:
4736 {
4737                       add_opvars(splev, "oio",
4738                                  VA_PASS3(SPO_COPY, 1, SPO_SEL_ELLIPSE));
4739                   }
4740 break;
4741 case 378:
4742 {
4743                       add_opvars(splev, "oio",
4744                                  VA_PASS3(SPO_COPY, yyvsp[-1].i, SPO_SEL_ELLIPSE));
4745                   }
4746 break;
4747 case 379:
4748 {
4749                       add_opvars(splev, "io", VA_PASS2(1, SPO_SEL_ELLIPSE));
4750                   }
4751 break;
4752 case 380:
4753 {
4754                       add_opvars(splev, "io", VA_PASS2(yyvsp[-1].i, SPO_SEL_ELLIPSE));
4755                   }
4756 break;
4757 case 381:
4758 {
4759                       add_opvars(splev, "iio",
4760                                  VA_PASS3(yyvsp[-5].i, yyvsp[-11].i, SPO_SEL_GRADIENT));
4761                   }
4762 break;
4763 case 382:
4764 {
4765                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_COMPLEMENT));
4766                   }
4767 break;
4768 case 383:
4769 {
4770                       check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_SEL);
4771                       vardef_used(variable_definitions, yyvsp[0].map);
4772                       add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4773                       Free(yyvsp[0].map);
4774                   }
4775 break;
4776 case 384:
4777 {
4778                       /* nothing */
4779                   }
4780 break;
4781 case 385:
4782 {
4783                       /* nothing */
4784                   }
4785 break;
4786 case 386:
4787 {
4788                       add_opvars(splev, "o", VA_PASS1(SPO_SEL_ADD));
4789                   }
4790 break;
4791 case 387:
4792 {
4793                       add_opvars(splev, "iio",
4794                                  VA_PASS3(yyvsp[0].dice.num, yyvsp[0].dice.die, SPO_DICE));
4795                   }
4796 break;
4797 case 391:
4798 {
4799                       add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4800                   }
4801 break;
4802 case 392:
4803 {
4804                       add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4805                   }
4806 break;
4807 case 393:
4808 {
4809                       add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4810                   }
4811 break;
4812 case 394:
4813 {
4814                       /* nothing */
4815                   }
4816 break;
4817 case 403:
4818 {
4819                         yyval.lregn = yyvsp[0].lregn;
4820                   }
4821 break;
4822 case 404:
4823 {
4824                         if (yyvsp[-7].i <= 0 || yyvsp[-7].i >= COLNO)
4825                             lc_error(
4826                           "Region (%ld,%ld,%ld,%ld) out of level range (x1)!",
4827                                      yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4828                         else if (yyvsp[-5].i < 0 || yyvsp[-5].i >= ROWNO)
4829                             lc_error(
4830                           "Region (%ld,%ld,%ld,%ld) out of level range (y1)!",
4831                                      yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4832                         else if (yyvsp[-3].i <= 0 || yyvsp[-3].i >= COLNO)
4833                             lc_error(
4834                           "Region (%ld,%ld,%ld,%ld) out of level range (x2)!",
4835                                      yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4836                         else if (yyvsp[-1].i < 0 || yyvsp[-1].i >= ROWNO)
4837                             lc_error(
4838                           "Region (%ld,%ld,%ld,%ld) out of level range (y2)!",
4839                                      yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4840                         yyval.lregn.x1 = yyvsp[-7].i;
4841                         yyval.lregn.y1 = yyvsp[-5].i;
4842                         yyval.lregn.x2 = yyvsp[-3].i;
4843                         yyval.lregn.y2 = yyvsp[-1].i;
4844                         yyval.lregn.area = 1;
4845                   }
4846 break;
4847 case 405:
4848 {
4849 /* This series of if statements is a hack for MSC 5.1.  It seems that its
4850    tiny little brain cannot compile if these are all one big if statement. */
4851                         if (yyvsp[-7].i < 0 || yyvsp[-7].i > (int) max_x_map)
4852                             lc_error(
4853                             "Region (%ld,%ld,%ld,%ld) out of map range (x1)!",
4854                                      yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4855                         else if (yyvsp[-5].i < 0 || yyvsp[-5].i > (int) max_y_map)
4856                             lc_error(
4857                             "Region (%ld,%ld,%ld,%ld) out of map range (y1)!",
4858                                      yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4859                         else if (yyvsp[-3].i < 0 || yyvsp[-3].i > (int) max_x_map)
4860                             lc_error(
4861                             "Region (%ld,%ld,%ld,%ld) out of map range (x2)!",
4862                                      yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4863                         else if (yyvsp[-1].i < 0 || yyvsp[-1].i > (int) max_y_map)
4864                             lc_error(
4865                             "Region (%ld,%ld,%ld,%ld) out of map range (y2)!",
4866                                      yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4867                         yyval.lregn.area = 0;
4868                         yyval.lregn.x1 = yyvsp[-7].i;
4869                         yyval.lregn.y1 = yyvsp[-5].i;
4870                         yyval.lregn.x2 = yyvsp[-3].i;
4871                         yyval.lregn.y2 = yyvsp[-1].i;
4872                   }
4873 break;
4874     }
4875     yyssp -= yym;
4876     yystate = *yyssp;
4877     yyvsp -= yym;
4878     yym = yylhs[yyn];
4879     if (yystate == 0 && yym == 0)
4880     {
4881 #if YYDEBUG
4882         if (yydebug)
4883             printf("%sdebug: after reduction, shifting from state 0 to\
4884  state %d\n", YYPREFIX, YYFINAL);
4885 #endif
4886         yystate = YYFINAL;
4887         *++yyssp = YYFINAL;
4888         *++yyvsp = yyval;
4889         if (yychar < 0)
4890         {
4891             if ((yychar = yylex()) < 0) yychar = 0;
4892 #if YYDEBUG
4893             if (yydebug)
4894             {
4895                 yys = 0;
4896                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
4897                 if (!yys) yys = "illegal-symbol";
4898                 printf("%sdebug: state %d, reading %d (%s)\n",
4899                         YYPREFIX, YYFINAL, yychar, yys);
4900             }
4901 #endif
4902         }
4903         if (yychar == 0) goto yyaccept;
4904         goto yyloop;
4905     }
4906     if ((yyn = yygindex[yym]) != 0 && (yyn += yystate) >= 0 &&
4907             yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
4908         yystate = yytable[yyn];
4909     else
4910         yystate = yydgoto[yym];
4911 #if YYDEBUG
4912     if (yydebug)
4913         printf("%sdebug: after reduction, shifting from state %d \
4914 to state %d\n", YYPREFIX, *yyssp, yystate);
4915 #endif
4916     if (yyssp >= yyss + yystacksize - 1)
4917     {
4918         goto yyoverflow;
4919     }
4920     *++yyssp = yystate;
4921     *++yyvsp = yyval;
4922     goto yyloop;
4923 yyoverflow:
4924     yyerror("yacc stack overflow");
4925 yyabort:
4926     return (1);
4927 yyaccept:
4928     return (0);
4929 }