2 /* static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; */
3 /* static char nhsccsid[] = "@(#)yaccpar 1.9.0-nh (NetHack) 12/03/2015"; */
8 #define YYSUBMINOR "0-nh"
10 #define yyclearin (yychar=(-1))
11 #define yyerrok (yyerrflag=0)
12 #define YYRECOVERING (yyerrflag!=0)
14 /* NetHack 3.6 lev_comp.y $NHDT-Date: 1449233826 2015/12/04 12:57:06 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.19 $ */
15 /* Copyright (c) 1989 by Jean-Christophe Collet */
16 /* NetHack may be freely redistributed. See license for details. */
19 * This file contains the Level Compiler code
20 * It may handle special mazes & special room-levels
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...).
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.
33 #pragma alloca /* keep leading space! */
36 #define SPEC_LEV /* for USE_OLDARGS (sp_lev.h) */
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.
45 #define MAX_OF_TYPE 128
47 #define MAX_NESTED_IFS 20
48 #define MAX_SWITCH_CASES 20
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)
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);
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 *));
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 *,char *, int));
83 extern char *FDECL(funcdef_paramtypes, (struct lc_funcdefs *));
84 extern char *FDECL(decode_parm_str, (char *));
86 extern struct lc_vardefs *FDECL(vardef_new,(long,char *));
87 extern void FDECL(vardef_free_all,(struct lc_vardefs *));
88 extern struct lc_vardefs *FDECL(vardef_defined,(struct lc_vardefs *,char *, int));
90 extern void NDECL(break_stmt_start);
91 extern void FDECL(break_stmt_end, (sp_lev *));
92 extern void FDECL(break_stmt_new, (sp_lev *, long));
94 extern void FDECL(splev_add_from, (sp_lev *, sp_lev *));
96 extern void FDECL(check_vardef_type, (struct lc_vardefs *, char *, long));
97 extern void FDECL(vardef_used, (struct lc_vardefs *, char *));
98 extern struct lc_vardefs *FDECL(add_vardef_type, (struct lc_vardefs *, char *, long));
100 extern int FDECL(reverse_jmp_opcode, (int));
111 static struct forloopdef forloop_list[MAX_NESTED_IFS];
112 static short n_forloops = 0;
115 sp_lev *splev = NULL;
117 static struct opvar *if_list[MAX_NESTED_IFS];
119 static short n_if_list = 0;
121 unsigned int max_x_map, max_y_map;
122 int obj_containment = 0;
124 int in_container_obj = 0;
126 /* integer value is possibly an inconstant value (eg. dice notation or a variable) */
127 int is_inconstant_number = 0;
129 int in_switch_statement = 0;
130 static struct opvar *switch_check_jump = NULL;
131 static struct opvar *switch_default_case = NULL;
132 static struct opvar *switch_case_list[MAX_SWITCH_CASES];
133 static long switch_case_value[MAX_SWITCH_CASES];
134 int n_switch_case_list = 0;
136 int allow_break_statements = 0;
137 struct lc_breakdef *break_list = NULL;
139 extern struct lc_vardefs *variable_definitions;
142 struct lc_vardefs *function_tmp_var_defs = NULL;
143 extern struct lc_funcdefs *function_definitions;
144 struct lc_funcdefs *curr_function = NULL;
145 struct lc_funcdefs_parm * curr_function_param = NULL;
146 int in_function_definition = 0;
147 sp_lev *function_splev_backup = NULL;
149 extern int fatal_error;
150 extern int got_errors;
151 extern int line_number;
152 extern const char *fname;
154 extern char curr_token[512];
198 #define MINUS_INTEGER 262
199 #define PLUS_INTEGER 263
200 #define MAZE_GRID_ID 264
201 #define SOLID_FILL_ID 265
203 #define ROGUELEV_ID 267
204 #define MESSAGE_ID 268
207 #define LEV_INIT_ID 271
208 #define GEOMETRY_ID 272
210 #define OBJECT_ID 274
211 #define COBJECT_ID 275
212 #define MONSTER_ID 276
215 #define DRAWBRIDGE_ID 279
216 #define object_ID 280
217 #define monster_ID 281
218 #define terrain_ID 282
219 #define MAZEWALK_ID 283
220 #define WALLIFY_ID 284
221 #define REGION_ID 285
223 #define IRREGULAR 287
226 #define LADDER_ID 290
228 #define NON_DIGGABLE_ID 292
229 #define NON_PASSWALL_ID 293
231 #define PORTAL_ID 295
232 #define TELEPRT_ID 296
233 #define BRANCH_ID 297
235 #define MINERALIZE_ID 299
236 #define CORRIDOR_ID 300
238 #define ENGRAVING_ID 302
239 #define FOUNTAIN_ID 303
243 #define RAND_CORRIDOR_ID 307
244 #define DOOR_STATE 308
245 #define LIGHT_STATE 309
246 #define CURSE_TYPE 310
247 #define ENGRAVING_TYPE 311
248 #define DIRECTION 312
249 #define RANDOM_TYPE 313
250 #define RANDOM_TYPE_BRACKET 314
251 #define A_REGISTER 315
252 #define ALIGNMENT 316
253 #define LEFT_OR_RIGHT 317
255 #define TOP_OR_BOT 319
256 #define ALTAR_TYPE 320
257 #define UP_OR_DOWN 321
258 #define SUBROOM_ID 322
261 #define FLAG_TYPE 325
262 #define MON_ATTITUDE 326
263 #define MON_ALERTNESS 327
264 #define MON_APPEARANCE 328
265 #define ROOMDOOR_ID 329
268 #define TERRAIN_ID 332
269 #define HORIZ_OR_VERT 333
270 #define REPLACE_TERRAIN_ID 334
272 #define SHUFFLE_ID 336
273 #define QUANTITY_ID 337
274 #define BURIED_ID 338
278 #define SWITCH_ID 342
281 #define DEFAULT_ID 345
282 #define ERODED_ID 346
283 #define TRAPPED_STATE 347
284 #define RECHARGED_ID 348
286 #define GREASED_ID 350
287 #define FEMALE_ID 351
288 #define CANCELLED_ID 352
289 #define REVIVED_ID 353
290 #define AVENGE_ID 354
291 #define FLEEING_ID 355
292 #define BLINDED_ID 356
293 #define PARALYZED_ID 357
294 #define STUNNED_ID 358
295 #define CONFUSED_ID 359
296 #define SEENTRAPS_ID 360
298 #define MONTYPE_ID 362
300 #define ERODEPROOF_ID 364
301 #define FUNCTION_ID 365
302 #define MSG_OUTPUT_TYPE 366
303 #define COMPARE_TYPE 367
304 #define UNKNOWN_TYPE 368
306 #define fillrect_ID 370
308 #define randline_ID 372
310 #define selection_ID 374
312 #define rndcoord_ID 376
313 #define circle_ID 377
314 #define ellipse_ID 378
315 #define filter_ID 379
316 #define complement_ID 380
317 #define gradient_ID 381
318 #define GRADIENT_TYPE 382
320 #define HUMIDITY_TYPE 384
324 #define VARSTRING 388
326 #define CFUNC_INT 390
327 #define CFUNC_STR 391
328 #define CFUNC_COORD 392
329 #define CFUNC_REGION 393
330 #define VARSTRING_INT 394
331 #define VARSTRING_INT_ARRAY 395
332 #define VARSTRING_STRING 396
333 #define VARSTRING_STRING_ARRAY 397
334 #define VARSTRING_VAR 398
335 #define VARSTRING_VAR_ARRAY 399
336 #define VARSTRING_COORD 400
337 #define VARSTRING_COORD_ARRAY 401
338 #define VARSTRING_REGION 402
339 #define VARSTRING_REGION_ARRAY 403
340 #define VARSTRING_MAPCHAR 404
341 #define VARSTRING_MAPCHAR_ARRAY 405
342 #define VARSTRING_MONST 406
343 #define VARSTRING_MONST_ARRAY 407
344 #define VARSTRING_OBJ 408
345 #define VARSTRING_OBJ_ARRAY 409
346 #define VARSTRING_SEL 410
347 #define VARSTRING_SEL_ARRAY 411
348 #define METHOD_INT 412
349 #define METHOD_INT_ARRAY 413
350 #define METHOD_STRING 414
351 #define METHOD_STRING_ARRAY 415
352 #define METHOD_VAR 416
353 #define METHOD_VAR_ARRAY 417
354 #define METHOD_COORD 418
355 #define METHOD_COORD_ARRAY 419
356 #define METHOD_REGION 420
357 #define METHOD_REGION_ARRAY 421
358 #define METHOD_MAPCHAR 422
359 #define METHOD_MAPCHAR_ARRAY 423
360 #define METHOD_MONST 424
361 #define METHOD_MONST_ARRAY 425
362 #define METHOD_OBJ 426
363 #define METHOD_OBJ_ARRAY 427
364 #define METHOD_SEL 428
365 #define METHOD_SEL_ARRAY 429
367 #define YYERRCODE 256
368 short yylhs[] = { -1,
369 0, 0, 73, 73, 74, 57, 57, 56, 56, 76,
370 76, 76, 76, 55, 55, 54, 54, 46, 46, 14,
371 14, 75, 75, 26, 26, 22, 22, 23, 78, 78,
372 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
373 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
374 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
375 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
376 78, 78, 59, 59, 59, 59, 59, 59, 59, 59,
377 59, 58, 58, 58, 58, 58, 58, 58, 58, 58,
378 60, 60, 60, 61, 61, 85, 84, 84, 84, 84,
379 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
380 84, 38, 38, 44, 44, 43, 43, 42, 42, 41,
381 41, 39, 39, 40, 40, 129, 130, 100, 101, 98,
382 45, 45, 31, 31, 31, 131, 133, 93, 134, 134,
383 136, 135, 137, 135, 99, 138, 138, 139, 140, 94,
384 141, 95, 142, 97, 144, 96, 143, 145, 143, 79,
385 110, 110, 110, 83, 83, 65, 146, 147, 113, 148,
386 112, 10, 10, 68, 68, 69, 69, 70, 70, 71,
387 71, 87, 87, 15, 15, 13, 13, 16, 16, 11,
388 11, 103, 103, 103, 1, 1, 2, 2, 105, 150,
389 105, 149, 20, 20, 21, 21, 21, 21, 21, 21,
390 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
391 35, 35, 35, 106, 152, 106, 151, 18, 18, 19,
392 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
393 19, 19, 19, 19, 120, 88, 104, 104, 121, 121,
394 102, 117, 118, 109, 119, 82, 17, 17, 91, 114,
395 108, 72, 72, 116, 115, 86, 107, 154, 111, 24,
396 24, 80, 81, 81, 81, 92, 89, 90, 90, 3,
397 3, 4, 4, 29, 29, 28, 28, 27, 27, 27,
398 5, 5, 6, 6, 7, 7, 7, 12, 12, 12,
399 8, 8, 9, 155, 155, 155, 132, 77, 77, 77,
400 77, 32, 32, 32, 30, 30, 127, 127, 127, 33,
401 124, 124, 124, 34, 34, 125, 125, 125, 36, 36,
402 36, 36, 126, 126, 126, 37, 37, 37, 37, 123,
403 123, 122, 122, 122, 122, 122, 122, 122, 122, 122,
404 122, 122, 50, 50, 157, 158, 158, 128, 128, 64,
405 64, 63, 63, 62, 62, 49, 49, 49, 49, 49,
406 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
407 49, 49, 49, 49, 48, 48, 156, 47, 47, 47,
408 153, 153, 153, 153, 51, 51, 52, 52, 53, 53,
412 0, 1, 1, 2, 3, 3, 5, 1, 1, 5,
413 5, 3, 16, 0, 2, 0, 2, 0, 2, 1,
414 1, 0, 3, 3, 1, 0, 2, 3, 1, 1,
415 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
416 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
417 1, 1, 1, 1, 1, 1, 1, 1, 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, 3, 3, 5, 3, 5,
422 5, 5, 3, 3, 5, 5, 5, 7, 7, 7,
423 5, 1, 3, 1, 3, 1, 3, 1, 3, 1,
424 3, 1, 3, 1, 3, 0, 0, 8, 4, 1,
425 0, 1, 1, 5, 3, 0, 0, 9, 0, 2,
426 0, 5, 0, 4, 1, 2, 1, 6, 0, 3,
427 0, 6, 0, 4, 0, 4, 1, 0, 4, 3,
428 1, 3, 3, 5, 5, 7, 4, 0, 10, 0,
429 12, 0, 2, 5, 1, 5, 1, 5, 1, 5,
430 1, 9, 5, 1, 1, 1, 1, 1, 3, 1,
431 1, 1, 7, 5, 1, 1, 1, 1, 3, 0,
432 5, 4, 0, 3, 1, 1, 1, 1, 2, 1,
433 1, 1, 1, 1, 3, 3, 3, 1, 1, 3,
434 1, 1, 3, 3, 0, 5, 2, 0, 3, 1,
435 3, 1, 3, 3, 1, 1, 3, 1, 1, 1,
436 3, 1, 1, 1, 5, 7, 5, 8, 1, 3,
437 5, 5, 7, 7, 6, 5, 0, 2, 3, 3,
438 3, 1, 5, 9, 5, 3, 3, 0, 10, 0,
439 1, 7, 5, 5, 3, 5, 7, 9, 1, 1,
440 1, 1, 1, 0, 2, 1, 3, 1, 1, 1,
441 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
442 1, 1, 4, 1, 1, 4, 1, 1, 4, 1,
443 4, 5, 1, 3, 1, 3, 1, 1, 4, 9,
444 1, 1, 4, 1, 5, 1, 1, 4, 1, 1,
445 5, 1, 1, 1, 4, 1, 1, 5, 1, 1,
446 3, 1, 1, 3, 1, 4, 3, 3, 3, 3,
447 3, 3, 1, 1, 3, 1, 3, 0, 1, 1,
448 1, 1, 3, 0, 1, 1, 2, 2, 4, 6,
449 4, 6, 6, 6, 6, 2, 6, 8, 8, 10,
450 14, 2, 1, 3, 1, 3, 1, 1, 1, 1,
451 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
454 short yydefred[] = { 0,
455 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
456 4, 0, 6, 0, 133, 0, 0, 0, 192, 0,
457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
460 130, 0, 0, 0, 136, 145, 0, 0, 0, 0,
461 93, 82, 73, 83, 74, 84, 75, 85, 76, 86,
462 77, 87, 78, 88, 79, 89, 80, 90, 81, 5,
463 0, 92, 91, 0, 30, 0, 29, 31, 32, 33,
464 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
465 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
466 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
467 64, 65, 66, 67, 68, 69, 70, 71, 72, 149,
468 0, 0, 23, 0, 0, 0, 0, 0, 0, 0,
469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
471 0, 0, 0, 0, 155, 0, 0, 0, 0, 94,
472 95, 0, 0, 0, 0, 342, 0, 345, 0, 387,
473 0, 343, 0, 153, 0, 27, 0, 9, 8, 7,
474 0, 304, 305, 0, 0, 340, 0, 0, 0, 12,
475 313, 0, 195, 196, 0, 0, 310, 0, 0, 308,
476 0, 337, 339, 0, 336, 334, 0, 333, 228, 224,
477 225, 330, 332, 0, 329, 327, 0, 326, 0, 0,
478 281, 280, 0, 291, 292, 0, 0, 0, 0, 0,
479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
480 383, 250, 0, 366, 0, 318, 0, 317, 0, 0,
481 0, 0, 0, 403, 0, 0, 266, 267, 283, 282,
482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
483 0, 0, 259, 261, 260, 390, 388, 389, 163, 162,
484 0, 184, 185, 0, 0, 0, 0, 96, 0, 0,
485 0, 0, 126, 0, 0, 0, 0, 135, 0, 0,
486 0, 0, 0, 0, 0, 362, 0, 0, 0, 396,
487 398, 395, 397, 399, 400, 0, 0, 0, 0, 0,
488 0, 103, 0, 0, 104, 0, 150, 24, 0, 0,
489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
490 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
491 0, 0, 0, 367, 368, 0, 0, 0, 376, 0,
492 0, 0, 382, 0, 0, 0, 0, 0, 0, 0,
493 0, 0, 0, 0, 0, 132, 0, 0, 0, 0,
494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
495 156, 0, 0, 151, 0, 0, 0, 0, 344, 352,
496 0, 0, 0, 0, 349, 350, 351, 129, 0, 154,
497 0, 0, 120, 118, 0, 0, 0, 0, 0, 0,
498 0, 0, 0, 0, 0, 341, 11, 262, 0, 10,
499 0, 0, 314, 0, 0, 0, 198, 197, 0, 173,
500 194, 0, 0, 0, 226, 0, 0, 203, 201, 245,
501 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
502 324, 0, 0, 322, 0, 321, 0, 0, 0, 384,
503 386, 0, 0, 293, 294, 0, 297, 0, 295, 0,
504 296, 251, 0, 0, 0, 252, 0, 175, 0, 0,
505 0, 0, 0, 256, 0, 0, 165, 164, 276, 401,
506 402, 0, 177, 0, 0, 0, 0, 0, 265, 0,
507 0, 147, 0, 0, 137, 274, 0, 0, 0, 356,
508 0, 346, 134, 363, 98, 0, 0, 105, 0, 111,
509 0, 106, 0, 107, 0, 102, 0, 101, 0, 100,
510 28, 306, 0, 0, 316, 309, 0, 311, 0, 0,
511 335, 393, 391, 392, 239, 236, 230, 0, 0, 235,
512 0, 240, 0, 242, 243, 0, 238, 229, 244, 232,
513 394, 0, 328, 0, 0, 0, 369, 0, 0, 0,
514 371, 0, 0, 0, 0, 0, 0, 0, 0, 0,
515 319, 0, 0, 0, 0, 0, 0, 167, 0, 0,
516 0, 0, 0, 255, 0, 0, 0, 0, 0, 0,
517 0, 0, 152, 146, 0, 0, 0, 127, 0, 0,
518 0, 0, 121, 119, 112, 0, 114, 0, 116, 0,
519 0, 0, 312, 193, 338, 0, 0, 0, 0, 0,
520 331, 0, 246, 0, 0, 189, 0, 0, 0, 0,
521 0, 0, 0, 0, 0, 0, 0, 0, 302, 301,
522 272, 0, 0, 253, 0, 179, 0, 0, 254, 258,
523 0, 0, 0, 0, 181, 0, 0, 187, 0, 186,
524 159, 0, 0, 353, 354, 355, 0, 357, 0, 110,
525 0, 109, 0, 108, 0, 0, 0, 234, 237, 241,
526 231, 0, 298, 206, 207, 0, 211, 210, 212, 213,
527 214, 0, 0, 0, 218, 219, 0, 299, 208, 204,
528 0, 0, 248, 0, 372, 0, 377, 0, 373, 0,
529 323, 374, 375, 0, 0, 0, 268, 303, 0, 0,
530 0, 0, 0, 0, 190, 191, 0, 0, 0, 168,
531 0, 0, 0, 0, 0, 0, 128, 113, 115, 117,
532 263, 0, 0, 0, 0, 0, 0, 0, 19, 0,
533 0, 325, 0, 0, 288, 289, 290, 0, 285, 0,
534 0, 0, 174, 0, 0, 278, 166, 176, 0, 0,
535 182, 264, 0, 143, 138, 140, 0, 300, 215, 216,
536 217, 222, 0, 220, 378, 0, 379, 0, 0, 0,
537 271, 269, 0, 0, 0, 170, 0, 169, 141, 0,
538 0, 0, 0, 0, 0, 320, 287, 0, 405, 178,
539 0, 180, 0, 144, 0, 223, 380, 15, 0, 404,
540 171, 142, 0, 0, 0, 0, 20, 21, 0, 0,
543 short yydgoto[] = { 3,
544 209, 449, 233, 271, 236, 486, 490, 671, 491, 351,
545 757, 729, 689, 859, 294, 467, 614, 354, 578, 584,
546 730, 80, 337, 822, 512, 133, 788, 789, 747, 345,
547 81, 210, 258, 476, 814, 228, 218, 636, 425, 426,
548 427, 428, 640, 638, 387, 733, 290, 375, 253, 696,
549 329, 330, 331, 861, 835, 190, 4, 82, 83, 84,
550 172, 314, 315, 316, 280, 264, 265, 500, 515, 678,
551 687, 440, 5, 6, 10, 85, 254, 86, 87, 88,
552 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
553 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
554 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
555 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
556 129, 277, 318, 478, 229, 219, 259, 529, 408, 697,
557 173, 278, 626, 765, 766, 843, 830, 524, 130, 187,
558 521, 319, 401, 295, 517, 272, 800, 841, 230, 359,
559 220, 355, 580, 790, 196, 182, 530, 531,
561 short yysindex[] = { 68,
562 17, 31, 0, -217, 0, 68, -257, -226, 112, 5680,
563 0, 136, 0, -136, 0, 170, 185, 201, 0, 225,
564 229, 238, 244, 248, 251, 255, 266, 272, 275, 283,
565 304, 309, 346, 366, 378, 380, 382, 383, 396, 397,
566 398, 400, 401, 404, 405, 413, 415, -46, 417, 420,
567 0, 426, 108, 489, 0, 0, 428, 101, -35, 449,
568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
570 432, 0, 0, 430, 0, 5680, 0, 0, 0, 0,
571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
575 -190, 450, 0, -234, 62, -13, 41, 41, 40, -252,
576 -121, 109, 109, 1644, -34, 109, 109, 92, -34, -34,
577 -249, -20, -20, -20, -35, 458, -35, 109, 1644, 1644,
578 1644, -160, -249, -174, 0, 1644, -34, 288, -35, 0,
579 0, 439, 414, 109, 467, 0, -22, 0, 421, 0,
580 -9, 0, -14, 0, 163, 0, 385, 0, 0, 0,
581 -136, 0, 0, 423, 465, 0, 471, 473, 475, 0,
582 0, 137, 0, 0, 490, 271, 0, 441, 496, 0,
583 503, 0, 0, 276, 0, 0, 452, 0, 0, 0,
584 0, 0, 0, 292, 0, 0, 470, 0, 512, 0,
585 0, 0, 518, 0, 0, 523, 524, 526, -34, -34,
586 109, 109, 540, 109, 542, 544, 545, 1644, 548, 5537,
587 0, 0, 533, 0, 331, 0, 500, 0, 555, 558,
588 559, 564, 347, 0, 571, 582, 0, 0, 0, 0,
589 367, 584, 379, 592, 594, 595, 141, 596, 402, 597,
590 588, 611, 0, 0, 0, 0, 0, 0, 0, 0,
591 617, 0, 0, 628, 385, 638, 640, 0, 593, -35,
592 -35, 644, 0, 649, 159, -35, -35, 0, -35, -35,
593 -35, -35, -35, 651, 650, 0, 141, 465, 5680, 0,
594 0, 0, 0, 0, 0, 642, -1, 4, 643, 647,
595 653, 0, 141, 465, 0, 5680, 0, 0, -35, -234,
596 445, 14, 455, 654, 614, 1644, 678, -35, 38, 476,
597 338, 682, -35, 688, 385, 690, -35, 109, 385, 109,
598 1644, 424, 431, 0, 0, 694, 696, 1298, 0, 109,
599 109, 5435, 0, 360, 704, 1644, 702, -35, -165, -83,
600 429, 491, 703, -20, 433, 0, 707, -24, 708, -20,
601 -20, -20, -35, 709, 10, 109, -91, -19, -121, 0,
602 0, 9, 9, 0, 45, 655, -254, 560, 0, 0,
603 75, 148, 79, 79, 0, 0, 0, 0, -14, 0,
604 1644, 711, 0, 0, 16, 25, 27, 29, 141, 465,
605 22, -10, -28, 631, 427, 0, 0, 0, 501, 0,
606 715, 137, 0, 719, 505, 459, 0, 0, 503, 0,
607 0, 381, 499, 2, 0, 403, 508, 0, 0, 0,
608 0, 721, 723, 109, 109, 662, 743, 748, 746, 749,
609 0, 750, 5448, 0, 701, 0, 751, 752, 753, 0,
610 0, 554, 536, 0, 0, 754, 0, 726, 0, 774,
611 0, 0, 775, 579, 785, 0, -165, 0, 581, 796,
612 583, 798, 800, 0, 802, 535, 0, 0, 0, 0,
613 0, 804, 0, 591, 806, 807, 521, 598, 0, 810,
614 385, 0, 811, -35, 0, 0, 465, 801, 815, 0,
615 814, 0, 0, 0, 0, 604, -35, 0, -234, 0,
616 -21, 0, 824, 0, 57, 0, 98, 0, 23, 0,
617 0, 0, 825, 621, 0, 0, 827, 0, 493, 839,
618 0, 0, 0, 0, 0, 0, 0, 823, 826, 0,
619 828, 0, 830, 0, 0, 832, 0, 0, 0, 0,
620 0, 841, 0, 848, -121, 641, 0, 857, 590, 1644,
621 0, -35, -35, 1644, 859, -35, 1644, 1644, 864, 861,
622 0, -249, 648, -148, 652, 135, 586, 0, 867, -5,
623 868, 528, 587, 0, -35, 870, -234, 871, 6, 72,
624 385, 9, 0, 0, 141, 793, 1, 0, 560, 166,
625 141, 465, 0, 0, 0, 32, 0, 33, 0, 35,
626 -165, 873, 0, 0, 0, -234, -35, -35, -35, 40,
627 0, 5526, 0, 876, -35, 0, 880, 174, 686, 881,
628 -165, 569, 882, 883, -35, 685, 900, 852, 0, 0,
629 0, 902, 691, 0, 693, 0, 110, 908, 0, 0,
630 928, -184, 465, 716, 0, 717, 900, 0, 929, 0,
631 0, 932, 90, 0, 0, 0, 385, 0, 57, 0,
632 98, 0, 23, 0, 936, 722, 465, 0, 0, 0,
633 0, 56, 0, 0, 0, -234, 0, 0, 0, 0,
634 0, 920, 921, 924, 0, 0, 925, 0, 0, 0,
635 465, 727, 0, 141, 0, 699, 0, -35, 0, 945,
636 0, 0, 0, 481, 943, 59, 0, 0, 744, 957,
637 965, 963, 6, -35, 0, 0, 967, 977, 982, 0,
638 -184, 767, -50, 971, 905, 90, 0, 0, 0, 0,
639 0, 987, 724, 465, -35, -35, -35, -261, 0, 991,
640 576, 0, -35, 777, 0, 0, 0, 989, 0, 385,
641 992, 780, 0, 38, 900, 0, 0, 0, 781, 385,
642 0, 0, 983, 0, 0, 0, 784, 0, 0, 0,
643 0, 0, 916, 0, 0, 758, 0, 93, 1004, 59,
644 0, 0, 788, 1006, 1007, 0, 1010, 0, 0, 5680,
645 1009, -261, 1016, 675, 1020, 0, 0, 1025, 0, 0,
646 385, 0, 5680, 0, -165, 0, 0, 0, 1023, 0,
647 0, 0, 1024, 109, -149, 1026, 0, 0, 876, 109,
650 short yyrindex[] = { 1071,
651 0, 0, 0, 5225, 0, 1072, 0, 0, 0, 53,
652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
653 0, 0, 0, 0, 0, 0, 2985, 0, 0, 0,
654 0, 0, 0, 0, 0, 0, 0, 3174, 0, 0,
655 0, 0, 0, 0, 3331, 0, 0, 0, 0, 0,
656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
658 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
659 0, 0, 0, 0, 0, 182, 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, 0, 0, 0, 0, 0,
663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
664 0, 5382, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
669 0, 0, 1032, 0, 0, 0, 0, 0, 0, 0,
670 0, 0, 0, 0, 3520, 0, 0, 0, 0, 0,
671 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
672 689, 0, 0, 0, 0, 0, 0, 0, 0, 0,
673 0, 0, 0, 0, 0, 0, 0, 0, 0, 1947,
674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
676 0, 0, 1098, 0, 0, 0, 0, 0, 0, 0,
677 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
678 136, 0, 0, 0, 0, 0, 720, 0, 0, 0,
679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
681 0, 3677, 0, 0, 0, 0, 0, 0, 0, 0,
682 0, 0, 0, 0, 1033, 0, 241, 247, 0, 0,
683 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
684 0, 0, 3866, 4023, 0, 951, 0, 0, 0, 0,
685 0, 0, 0, 984, 0, 0, 0, 0, 0, 0,
686 0, 0, 0, 2136, 0, 0, 0, 0, 0, 0,
687 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
689 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
690 0, 0, 0, 0, 0, 0, 0, 0, 0, 2293,
691 0, 0, 0, 0, 0, 0, 0, 1037, 0, 0,
692 0, 0, 374, 531, 0, 0, 0, 0, 0, 0,
693 0, 553, 0, 0, 0, 0, 0, 0, 42, 49,
694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
695 0, 0, 0, 0, 0, 0, 0, 0, 689, 0,
696 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
697 0, 0, 4212, 0, 0, 1035, 0, 0, 0, 0,
698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
699 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
700 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
701 0, 0, 4369, 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, 4558, 0, 0, 0,
704 1039, 0, 0, 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, 0, 0, 0, 0,
707 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
709 0, 0, 0, 2482, 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, 0, 0, 0, 0, 0, 0, 0,
713 0, 0, 0, 0, 958, 0, 0, 0, 0, 0,
714 50, 52, 0, 0, 0, 0, 0, 0, 0, 0,
715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
716 0, 0, 0, 4715, 0, 0, 0, 0, 0, 0,
717 0, 0, 0, 0, 0, 0, 2639, 0, 0, 0,
718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
719 0, 0, 4904, 0, 0, 0, 959, 0, 0, 0,
720 0, 0, 961, 0, 0, 0, 0, 0, 0, 0,
721 0, 0, 0, 0, 0, 0, 1255, 0, 0, 0,
722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
723 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
724 1444, 0, 0, 909, 0, 0, 0, 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 0, 0, 0, 0, 0, 961, 0, 0, 0, 0,
728 0, 0, 0, 1601, 0, 0, 0, 0, 0, 0,
729 0, 0, 0, 0, 0, 0, 0, 2828, 0, 5061,
730 0, 0, 0, 0, 959, 0, 0, 0, 0, 0,
731 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
732 0, 0, 1790, 0, 0, 0, 0, 128, 0, 0,
733 0, 0, 0, 0, 0, 0, 0, 0, 0, -69,
734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
735 0, 0, -69, 0, 0, 0, 0, 0, 0, 0,
736 0, 0, 0, 0, 0, 1043, 0, 0, 4715, 0,
739 short yygindex[] = { 0,
740 410, 294, 0, 487, -329, -480, 0, 0, 438, 645,
741 330, 0, 0, 0, 0, -474, 0, 0, 0, 0,
742 0, -86, -287, 0, 0, 901, 0, 273, -629, 657,
743 1047, -296, -297, -509, 264, -504, -494, 0, 0, 0,
744 0, 0, 0, 0, 0, 242, -384, -137, 849, 0,
745 0, 0, 0, 0, 0, 0, 0, 1046, 934, -371,
746 0, 0, 0, 684, 710, 0, -48, 0, 0, 0,
747 351, 0, 1100, 0, 0, 0, -133, 790, 0, 0,
748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
750 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
752 0, -58, -130, -355, -375, 679, -84, 0, 0, 0,
753 0, -167, 0, 345, 0, 0, 0, 0, 0, 0,
754 0, 0, 0, 0, 0, 949, 0, 0, 0, 0,
755 975, 0, 0, 0, 792, 680, 504, 0,
757 #define YYTABLESIZE 6091
758 short yytable[] = { 186,
759 181, 299, 211, 195, 177, 255, 252, 400, 237, 238,
760 507, 518, 260, 261, 266, 499, 608, 177, 206, 273,
761 514, 283, 284, 285, 282, 177, 206, 313, 296, 224,
762 424, 423, 311, 309, 677, 310, 528, 312, 177, 639,
763 302, 206, 637, 327, 59, 686, 519, 520, 518, 279,
764 635, 332, 26, 439, 334, 26, 548, 760, 526, 537,
765 231, 214, 518, 269, 267, 268, 188, 455, 539, 516,
766 541, 459, 543, 755, 7, 699, 701, 550, 703, 224,
767 214, 313, 297, 308, 292, 122, 311, 309, 8, 310,
768 523, 312, 124, 123, 549, 125, 214, 286, 281, 812,
769 335, 287, 288, 274, 275, 276, 9, 366, 367, 857,
770 369, 313, 547, 773, 656, 313, 311, 309, 305, 310,
771 311, 312, 189, 813, 317, 312, 333, 12, 756, 313,
772 192, 263, 232, 406, 311, 270, 834, 224, 293, 312,
773 538, 193, 194, 484, 545, 690, 603, 485, 206, 540,
774 192, 542, 289, 544, 364, 365, 700, 702, 13, 704,
775 705, 193, 194, 858, 669, 826, 122, 532, 14, 14,
776 348, 670, 348, 124, 123, 643, 125, 313, 673, 131,
777 740, 26, 311, 309, 313, 310, 234, 312, 132, 311,
778 309, 235, 310, 770, 312, 313, 769, 430, 169, 410,
779 311, 309, 327, 310, 768, 312, 643, 286, 444, 666,
780 313, 287, 288, 15, 737, 311, 309, 736, 310, 510,
781 312, 511, 176, 461, 458, 505, 460, 134, 471, 487,
782 468, 488, 489, 623, 477, 176, 469, 470, 481, 304,
783 533, 405, 135, 176, 633, 634, 222, 411, 412, 434,
784 413, 414, 415, 416, 417, 653, 422, 528, 136, 562,
785 304, 176, 509, 563, 564, 471, 692, 286, 305, 429,
786 438, 287, 288, 26, 711, 26, 527, 262, 212, 471,
787 435, 360, 137, 535, 360, 328, 138, 361, 498, 446,
788 361, 201, 202, 513, 453, 139, 222, 212, 457, 201,
789 202, 140, 223, 203, 204, 141, 26, 676, 142, 565,
790 566, 567, 143, 212, 201, 202, 201, 202, 685, 483,
791 579, 26, 26, 144, 568, 197, 198, 199, 200, 145,
792 587, 588, 146, 691, 213, 495, 1, 2, 569, 570,
793 147, 502, 503, 504, 785, 786, 787, 571, 572, 573,
794 574, 575, 223, 213, 222, 447, 448, 307, 178, 179,
795 317, 148, 205, 576, 853, 577, 149, 256, 257, 213,
796 192, 178, 179, 347, 225, 474, 475, 205, 803, 178,
797 179, 193, 194, 466, 688, 522, 207, 208, 192, 262,
798 694, 695, 178, 179, 180, 226, 227, 178, 179, 193,
799 194, 207, 208, 150, 201, 202, 215, 180, 632, 767,
800 223, 347, 474, 475, 347, 180, 347, 347, 347, 347,
801 176, 201, 202, 151, 225, 215, 203, 204, 180, 216,
802 217, 180, 763, 180, 764, 152, 320, 153, 321, 154,
803 155, 215, 322, 323, 324, 226, 227, 681, 216, 217,
804 26, 26, 657, 156, 157, 158, 660, 159, 160, 663,
805 664, 161, 162, 313, 347, 625, 347, 205, 311, 309,
806 163, 310, 164, 312, 166, 201, 202, 167, 631, 708,
807 709, 710, 225, 168, 205, 174, 683, 175, 183, 184,
808 185, 207, 208, 191, 325, 313, 347, 279, 347, 300,
809 311, 309, 821, 310, 301, 312, 303, 336, 207, 208,
810 340, 306, 828, 339, 341, 707, 342, 313, 343, 552,
811 344, 731, 311, 309, 26, 783, 26, 312, 347, 346,
812 348, 348, 352, 658, 659, 313, 326, 662, 205, 349,
813 311, 309, 353, 310, 313, 312, 350, 192, 356, 311,
814 309, 558, 310, 851, 312, 358, 178, 179, 193, 194,
815 357, 360, 207, 208, 256, 257, 361, 362, 348, 363,
816 376, 348, 313, 348, 348, 348, 348, 311, 309, 368,
817 310, 370, 312, 371, 372, 774, 796, 374, 377, 342,
818 378, 561, 180, 342, 342, 342, 734, 342, 379, 342,
819 583, 380, 381, 382, 383, 313, 744, 809, 810, 811,
820 311, 309, 313, 310, 384, 312, 817, 311, 309, 816,
821 310, 348, 312, 348, 313, 385, 386, 388, 601, 311,
822 309, 396, 310, 347, 312, 390, 389, 391, 392, 393,
823 395, 347, 347, 347, 347, 347, 347, 347, 347, 347,
824 347, 347, 347, 348, 397, 348, 347, 347, 347, 394,
825 398, 741, 347, 347, 347, 347, 347, 347, 347, 347,
826 347, 399, 347, 347, 347, 347, 347, 347, 347, 781,
827 347, 402, 63, 403, 65, 404, 67, 407, 69, 409,
828 71, 418, 73, 419, 75, 347, 77, 442, 79, 421,
829 431, 437, 347, 347, 432, 347, 443, 347, 347, 347,
830 433, 441, 347, 347, 347, 347, 347, 347, 347, 307,
831 856, 445, 313, 451, 818, 452, 863, 311, 309, 738,
832 310, 454, 312, 456, 450, 462, 347, 464, 347, 465,
833 347, 479, 463, 844, 480, 482, 494, 525, 493, 492,
834 497, 501, 506, 496, 536, 551, 852, 553, 554, 556,
835 347, 347, 557, 307, 585, 560, 586, 347, 347, 347,
836 347, 347, 347, 347, 347, 347, 347, 347, 347, 347,
837 347, 347, 347, 347, 347, 589, 590, 582, 591, 592,
838 348, 596, 593, 594, 597, 598, 599, 602, 348, 348,
839 348, 348, 348, 348, 348, 348, 348, 348, 348, 348,
840 307, 600, 307, 348, 348, 348, 603, 604, 605, 348,
841 348, 348, 348, 348, 348, 348, 348, 348, 607, 348,
842 348, 348, 348, 348, 348, 348, 606, 348, 609, 610,
843 611, 612, 307, 613, 307, 615, 616, 617, 618, 619,
844 620, 621, 348, 622, 595, 628, 624, 629, 627, 348,
845 348, 630, 348, 255, 348, 348, 348, 643, 641, 348,
846 348, 348, 348, 348, 348, 348, 170, 642, 644, 645,
847 646, 651, 62, 647, 64, 648, 66, 649, 68, 650,
848 70, 652, 72, 348, 74, 348, 76, 348, 78, 654,
849 655, 466, 661, 665, 666, 668, 674, 680, 370, 672,
850 675, 673, 679, 682, 684, 693, 706, 348, 348, 732,
851 735, 739, 742, 743, 348, 348, 348, 348, 348, 348,
852 348, 348, 348, 348, 348, 348, 348, 348, 348, 348,
853 348, 348, 745, 746, 748, 749, 370, 61, 750, 370,
854 751, 753, 370, 62, 63, 64, 65, 66, 67, 68,
855 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
856 79, 754, 761, 758, 759, 762, 771, 775, 776, 307,
857 772, 777, 778, 779, 780, 782, 784, 307, 307, 307,
858 307, 307, 307, 307, 307, 307, 307, 307, 307, 370,
859 792, 791, 307, 307, 307, 793, 794, 797, 307, 307,
860 307, 307, 307, 307, 307, 307, 307, 798, 307, 307,
861 307, 307, 307, 307, 307, 799, 307, 802, 804, 805,
862 807, 815, 820, 370, 819, 823, 808, 824, 827, 832,
863 829, 307, 831, 833, 836, 838, 839, 840, 307, 307,
864 842, 307, 845, 307, 307, 307, 847, 848, 307, 307,
865 849, 307, 307, 307, 307, 850, 854, 855, 864, 860,
866 1, 3, 364, 365, 172, 26, 315, 358, 188, 359,
867 148, 284, 307, 16, 307, 139, 752, 825, 667, 728,
868 801, 338, 837, 559, 165, 846, 373, 385, 555, 171,
869 862, 298, 534, 795, 508, 11, 307, 307, 420, 546,
870 806, 291, 221, 307, 307, 307, 307, 307, 307, 307,
871 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
872 307, 436, 698, 581, 0, 0, 0, 0, 385, 0,
873 0, 385, 0, 0, 0, 0, 0, 0, 0, 0,
874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
875 0, 0, 0, 0, 0, 0, 0, 0, 370, 0,
876 0, 0, 0, 0, 0, 0, 370, 370, 370, 370,
877 370, 370, 370, 370, 370, 370, 370, 370, 385, 0,
878 0, 370, 370, 370, 0, 0, 0, 370, 370, 370,
879 370, 370, 370, 370, 370, 370, 0, 370, 370, 370,
880 370, 370, 370, 370, 0, 370, 0, 0, 0, 0,
881 0, 0, 385, 0, 0, 0, 0, 0, 0, 0,
882 370, 0, 0, 0, 0, 0, 0, 370, 370, 0,
883 370, 0, 370, 370, 370, 0, 0, 370, 370, 0,
884 370, 370, 370, 370, 233, 0, 0, 0, 0, 0,
885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
886 0, 370, 0, 370, 0, 0, 0, 0, 0, 0,
887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
888 0, 0, 0, 0, 0, 370, 370, 0, 233, 0,
889 0, 0, 370, 370, 370, 370, 370, 370, 370, 370,
890 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
892 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
893 0, 0, 0, 0, 0, 233, 0, 0, 0, 0,
894 0, 0, 0, 0, 0, 0, 0, 385, 0, 0,
895 0, 0, 0, 0, 0, 385, 385, 385, 385, 385,
896 385, 385, 385, 385, 385, 385, 385, 233, 0, 233,
897 385, 385, 385, 0, 0, 0, 385, 385, 385, 385,
898 385, 385, 385, 385, 385, 0, 385, 385, 385, 385,
899 385, 385, 385, 0, 385, 0, 0, 0, 0, 0,
900 0, 0, 0, 0, 0, 0, 0, 0, 0, 385,
901 0, 0, 0, 0, 0, 0, 385, 385, 0, 385,
902 0, 385, 385, 385, 0, 0, 385, 385, 0, 385,
903 385, 385, 385, 205, 0, 0, 0, 0, 0, 0,
904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
905 385, 0, 385, 0, 0, 0, 0, 0, 0, 0,
906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
907 0, 0, 0, 0, 385, 385, 0, 205, 0, 0,
908 0, 385, 385, 385, 385, 385, 385, 385, 385, 385,
909 385, 385, 385, 385, 385, 385, 385, 385, 385, 0,
910 0, 0, 0, 0, 233, 0, 0, 0, 0, 0,
911 0, 0, 233, 233, 233, 233, 233, 233, 233, 233,
912 233, 233, 233, 233, 205, 0, 0, 233, 233, 233,
913 0, 0, 0, 233, 233, 233, 233, 233, 233, 233,
914 233, 233, 0, 233, 233, 233, 233, 233, 233, 233,
915 0, 233, 0, 0, 0, 0, 205, 0, 205, 0,
916 0, 0, 0, 0, 0, 0, 233, 0, 0, 0,
917 0, 0, 0, 233, 233, 0, 233, 0, 233, 233,
918 233, 0, 0, 233, 233, 0, 233, 233, 233, 233,
919 209, 0, 0, 0, 0, 0, 0, 0, 0, 466,
920 201, 202, 0, 0, 0, 0, 0, 233, 0, 233,
921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
923 0, 233, 233, 0, 209, 0, 0, 0, 233, 233,
924 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
925 233, 233, 233, 233, 233, 233, 239, 240, 241, 242,
926 243, 0, 244, 205, 245, 246, 247, 248, 249, 0,
927 0, 0, 0, 250, 0, 0, 0, 0, 0, 0,
928 0, 209, 0, 0, 0, 0, 0, 207, 208, 0,
929 0, 0, 0, 205, 0, 0, 0, 251, 0, 0,
930 0, 205, 205, 205, 205, 205, 205, 205, 205, 205,
931 205, 205, 205, 209, 0, 209, 205, 205, 205, 0,
932 0, 0, 205, 205, 205, 205, 205, 205, 205, 205,
933 205, 0, 205, 205, 205, 205, 205, 205, 205, 0,
934 205, 0, 0, 0, 0, 0, 0, 0, 0, 0,
935 0, 0, 0, 0, 0, 205, 0, 0, 0, 0,
936 0, 0, 205, 205, 0, 205, 0, 205, 205, 205,
937 0, 0, 205, 205, 0, 205, 205, 205, 205, 221,
938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
939 0, 0, 0, 0, 0, 0, 205, 0, 205, 0,
940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
942 205, 205, 0, 221, 0, 0, 0, 205, 205, 205,
943 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
944 205, 205, 205, 205, 205, 0, 0, 0, 0, 0,
945 209, 0, 0, 0, 0, 0, 0, 0, 209, 209,
946 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
947 221, 0, 0, 209, 209, 209, 0, 0, 0, 209,
948 209, 209, 209, 209, 209, 209, 209, 209, 0, 209,
949 209, 209, 209, 209, 209, 209, 0, 209, 0, 0,
950 0, 0, 221, 0, 221, 0, 0, 0, 0, 0,
951 0, 0, 209, 0, 0, 0, 0, 0, 0, 209,
952 209, 0, 209, 0, 209, 209, 209, 0, 0, 209,
953 209, 0, 209, 209, 209, 209, 199, 0, 0, 0,
954 0, 0, 0, 0, 0, 0, 201, 202, 0, 0,
955 0, 0, 0, 209, 0, 209, 0, 0, 0, 0,
956 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
957 0, 0, 0, 0, 0, 0, 0, 209, 209, 0,
958 0, 0, 0, 0, 209, 209, 209, 209, 209, 209,
959 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
960 209, 209, 239, 240, 241, 242, 243, 0, 244, 205,
961 245, 246, 247, 248, 249, 0, 0, 0, 0, 0,
962 0, 0, 0, 0, 0, 0, 0, 199, 0, 0,
963 0, 0, 0, 207, 208, 0, 0, 0, 0, 221,
964 0, 0, 0, 251, 0, 0, 0, 221, 221, 221,
965 221, 221, 221, 221, 221, 221, 221, 221, 221, 200,
966 0, 199, 221, 221, 221, 0, 0, 0, 221, 221,
967 221, 221, 221, 221, 221, 221, 221, 0, 221, 221,
968 221, 221, 221, 221, 221, 0, 221, 0, 0, 0,
969 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
970 0, 221, 0, 0, 0, 0, 0, 0, 221, 221,
971 0, 221, 0, 221, 221, 221, 0, 0, 221, 221,
972 0, 221, 221, 221, 221, 227, 0, 0, 0, 0,
973 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
974 0, 0, 221, 0, 221, 0, 0, 0, 0, 0,
975 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
976 0, 0, 0, 0, 0, 0, 221, 221, 0, 0,
977 0, 0, 0, 221, 221, 221, 221, 221, 221, 221,
978 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
979 221, 0, 0, 0, 0, 0, 199, 0, 0, 0,
980 0, 0, 0, 0, 199, 199, 199, 199, 199, 199,
981 199, 199, 199, 199, 199, 199, 227, 0, 0, 199,
982 199, 199, 0, 0, 0, 199, 199, 199, 199, 199,
983 199, 199, 199, 199, 0, 199, 199, 199, 199, 199,
984 199, 199, 0, 199, 0, 0, 0, 0, 227, 0,
985 227, 0, 0, 0, 0, 0, 0, 0, 199, 0,
986 0, 0, 0, 0, 0, 199, 199, 0, 199, 0,
987 199, 199, 199, 0, 0, 199, 199, 0, 199, 199,
988 199, 199, 157, 0, 0, 0, 0, 0, 0, 0,
989 0, 0, 0, 0, 0, 0, 0, 0, 0, 199,
990 0, 199, 0, 0, 0, 0, 0, 0, 0, 0,
991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
992 0, 0, 0, 199, 199, 0, 0, 0, 0, 0,
993 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
994 199, 199, 199, 199, 199, 199, 199, 199, 0, 0,
995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
997 0, 0, 0, 157, 0, 0, 0, 0, 0, 0,
998 0, 0, 0, 0, 0, 227, 0, 0, 0, 0,
999 0, 0, 0, 227, 227, 227, 227, 227, 227, 227,
1000 227, 227, 227, 227, 227, 0, 0, 157, 227, 227,
1001 227, 0, 0, 0, 227, 227, 227, 227, 227, 227,
1002 227, 227, 227, 0, 227, 227, 227, 227, 227, 227,
1003 227, 0, 227, 0, 0, 0, 0, 0, 0, 0,
1004 0, 0, 0, 0, 0, 0, 0, 227, 0, 0,
1005 0, 0, 0, 0, 227, 227, 0, 227, 0, 227,
1006 227, 227, 0, 0, 227, 227, 0, 227, 227, 227,
1007 227, 202, 0, 0, 0, 0, 0, 0, 0, 0,
1008 0, 0, 0, 0, 0, 0, 0, 0, 227, 0,
1009 227, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1010 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1011 0, 0, 227, 227, 0, 0, 0, 0, 0, 227,
1012 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1013 227, 227, 227, 227, 227, 227, 227, 0, 0, 0,
1014 0, 0, 157, 0, 0, 0, 0, 0, 0, 0,
1015 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1016 157, 157, 202, 0, 0, 157, 157, 157, 0, 0,
1017 0, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1018 0, 157, 157, 157, 157, 157, 157, 157, 0, 157,
1019 0, 0, 0, 0, 202, 0, 202, 0, 0, 0,
1020 0, 0, 0, 0, 157, 0, 0, 0, 0, 0,
1021 0, 157, 157, 158, 157, 0, 157, 157, 157, 0,
1022 0, 157, 157, 0, 157, 157, 157, 157, 284, 0,
1023 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1024 0, 0, 0, 0, 0, 157, 0, 157, 0, 0,
1025 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1026 0, 0, 0, 0, 0, 0, 0, 0, 0, 157,
1027 157, 0, 0, 0, 0, 0, 157, 157, 157, 157,
1028 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1029 157, 157, 157, 157, 0, 0, 0, 0, 0, 0,
1030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1031 0, 0, 0, 0, 0, 0, 0, 0, 0, 284,
1032 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1033 0, 202, 0, 0, 0, 0, 0, 0, 0, 202,
1034 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
1035 202, 284, 0, 284, 202, 202, 202, 0, 0, 0,
1036 202, 202, 202, 202, 202, 202, 202, 202, 202, 0,
1037 202, 202, 202, 202, 202, 202, 202, 0, 202, 0,
1038 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1039 0, 0, 0, 202, 0, 0, 0, 0, 0, 0,
1040 202, 202, 0, 202, 0, 202, 202, 202, 0, 0,
1041 202, 202, 0, 202, 202, 202, 202, 286, 0, 0,
1042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1043 0, 0, 0, 0, 202, 0, 202, 0, 0, 0,
1044 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1045 0, 0, 0, 0, 0, 0, 0, 0, 202, 202,
1046 0, 0, 0, 0, 0, 202, 202, 202, 202, 202,
1047 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
1048 202, 202, 202, 0, 0, 0, 0, 0, 284, 0,
1049 0, 0, 0, 0, 0, 0, 284, 284, 284, 284,
1050 284, 284, 284, 284, 284, 284, 284, 284, 286, 0,
1051 0, 284, 284, 284, 0, 0, 0, 284, 284, 284,
1052 284, 284, 284, 284, 284, 284, 0, 284, 284, 284,
1053 284, 284, 284, 284, 0, 284, 0, 0, 0, 0,
1054 286, 0, 286, 0, 0, 0, 0, 0, 0, 0,
1055 284, 0, 0, 0, 0, 0, 0, 284, 284, 0,
1056 284, 0, 284, 284, 284, 0, 0, 284, 284, 0,
1057 284, 284, 284, 284, 249, 0, 0, 0, 0, 0,
1058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1059 0, 284, 0, 284, 0, 0, 0, 0, 0, 0,
1060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1061 0, 0, 0, 0, 0, 284, 284, 0, 0, 0,
1062 0, 0, 284, 284, 284, 284, 284, 284, 284, 284,
1063 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
1064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1066 0, 0, 0, 0, 0, 249, 0, 0, 0, 0,
1067 0, 0, 0, 0, 0, 0, 0, 286, 0, 0,
1068 0, 0, 0, 0, 0, 286, 286, 286, 286, 286,
1069 286, 286, 286, 286, 286, 286, 286, 0, 0, 249,
1070 286, 286, 286, 0, 0, 0, 286, 286, 286, 286,
1071 286, 286, 286, 286, 286, 0, 286, 286, 286, 286,
1072 286, 286, 286, 0, 286, 0, 0, 0, 0, 0,
1073 0, 0, 0, 0, 0, 0, 0, 0, 0, 286,
1074 0, 0, 0, 0, 0, 0, 286, 286, 0, 286,
1075 0, 286, 286, 286, 0, 0, 286, 286, 0, 286,
1076 286, 286, 286, 279, 0, 0, 0, 0, 0, 0,
1077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1078 286, 0, 286, 0, 0, 0, 0, 0, 0, 0,
1079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1080 0, 0, 0, 0, 286, 286, 0, 0, 0, 0,
1081 0, 286, 286, 286, 286, 286, 286, 286, 286, 286,
1082 286, 286, 286, 286, 286, 286, 286, 286, 286, 0,
1083 0, 0, 0, 0, 249, 0, 0, 0, 0, 0,
1084 0, 0, 249, 249, 249, 249, 249, 249, 249, 249,
1085 249, 249, 249, 249, 279, 0, 0, 249, 249, 249,
1086 0, 0, 0, 249, 249, 249, 249, 249, 249, 249,
1087 249, 249, 0, 249, 249, 249, 249, 249, 249, 249,
1088 0, 249, 0, 0, 0, 0, 0, 0, 279, 0,
1089 0, 0, 0, 0, 0, 0, 249, 0, 0, 0,
1090 0, 0, 0, 249, 249, 0, 249, 0, 249, 249,
1091 249, 0, 0, 249, 249, 0, 249, 249, 249, 249,
1092 161, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1093 0, 0, 0, 0, 0, 0, 0, 249, 0, 249,
1094 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1096 0, 249, 249, 0, 0, 0, 0, 0, 249, 249,
1097 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1098 249, 249, 249, 249, 249, 249, 0, 0, 0, 0,
1099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1101 0, 161, 0, 0, 0, 0, 0, 0, 0, 0,
1102 0, 0, 0, 279, 0, 0, 0, 0, 0, 0,
1103 0, 279, 279, 279, 279, 279, 279, 279, 279, 279,
1104 279, 279, 279, 0, 0, 161, 279, 279, 279, 0,
1105 0, 0, 279, 279, 279, 279, 279, 279, 279, 279,
1106 279, 0, 279, 279, 279, 279, 279, 279, 279, 0,
1107 279, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1108 0, 0, 0, 0, 0, 279, 0, 0, 0, 0,
1109 0, 0, 279, 279, 0, 279, 0, 279, 279, 279,
1110 0, 0, 279, 279, 0, 279, 279, 279, 279, 160,
1111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1112 0, 0, 0, 0, 0, 0, 279, 0, 279, 0,
1113 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1115 279, 279, 0, 0, 0, 0, 0, 279, 279, 279,
1116 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
1117 279, 279, 279, 279, 279, 0, 0, 0, 0, 0,
1118 161, 0, 0, 0, 0, 0, 0, 0, 161, 161,
1119 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1120 160, 0, 0, 161, 161, 161, 0, 0, 0, 161,
1121 161, 161, 161, 161, 161, 161, 161, 161, 0, 161,
1122 161, 161, 161, 161, 161, 161, 0, 161, 0, 0,
1123 0, 0, 0, 0, 160, 0, 0, 0, 0, 0,
1124 0, 0, 161, 0, 0, 0, 0, 0, 0, 161,
1125 161, 0, 161, 0, 161, 161, 161, 0, 0, 161,
1126 161, 0, 161, 161, 161, 161, 275, 0, 0, 0,
1127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1128 0, 0, 0, 161, 0, 161, 0, 0, 0, 0,
1129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1130 0, 0, 0, 0, 0, 0, 0, 161, 161, 0,
1131 0, 0, 0, 0, 161, 161, 161, 161, 161, 161,
1132 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1133 161, 161, 0, 0, 0, 0, 0, 0, 0, 0,
1134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1135 0, 0, 0, 0, 0, 0, 0, 275, 0, 0,
1136 0, 0, 0, 0, 0, 0, 0, 0, 0, 160,
1137 0, 0, 0, 0, 0, 0, 0, 160, 160, 160,
1138 160, 160, 160, 160, 160, 160, 160, 160, 160, 0,
1139 0, 275, 160, 160, 160, 0, 0, 0, 160, 160,
1140 160, 160, 160, 160, 160, 160, 160, 0, 160, 160,
1141 160, 160, 160, 160, 160, 0, 160, 0, 0, 0,
1142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1143 0, 160, 0, 0, 0, 0, 0, 0, 160, 160,
1144 0, 160, 0, 160, 160, 160, 0, 0, 160, 160,
1145 0, 160, 160, 160, 160, 97, 0, 0, 0, 0,
1146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1147 0, 0, 160, 0, 160, 0, 0, 0, 0, 0,
1148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1149 0, 0, 0, 0, 0, 0, 160, 160, 0, 0,
1150 0, 0, 0, 160, 160, 160, 160, 160, 160, 160,
1151 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
1152 160, 0, 0, 0, 0, 0, 275, 0, 0, 0,
1153 0, 0, 0, 0, 275, 275, 275, 275, 275, 275,
1154 275, 275, 275, 275, 275, 275, 97, 0, 0, 275,
1155 275, 275, 0, 0, 0, 275, 275, 275, 275, 275,
1156 275, 275, 275, 275, 0, 275, 275, 275, 275, 275,
1157 275, 275, 0, 275, 0, 0, 0, 0, 0, 0,
1158 97, 0, 0, 0, 0, 0, 0, 0, 275, 0,
1159 0, 0, 0, 0, 0, 275, 275, 0, 275, 0,
1160 275, 275, 275, 0, 0, 275, 275, 0, 275, 275,
1161 275, 275, 99, 0, 0, 0, 0, 0, 0, 0,
1162 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
1163 0, 275, 0, 0, 0, 0, 0, 0, 0, 0,
1164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1165 0, 0, 0, 275, 275, 0, 0, 0, 0, 0,
1166 275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
1167 275, 275, 275, 275, 275, 275, 275, 275, 0, 0,
1168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1169 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1170 0, 0, 0, 99, 0, 0, 0, 0, 0, 0,
1171 0, 0, 0, 0, 0, 97, 0, 0, 0, 0,
1172 0, 0, 0, 97, 97, 97, 97, 97, 97, 97,
1173 97, 97, 97, 97, 97, 0, 0, 99, 97, 97,
1174 97, 0, 0, 0, 97, 97, 97, 97, 97, 97,
1175 97, 97, 97, 0, 97, 97, 97, 97, 97, 97,
1176 97, 0, 97, 0, 0, 0, 0, 0, 0, 0,
1177 0, 0, 0, 0, 0, 0, 0, 97, 0, 0,
1178 0, 0, 0, 0, 97, 97, 0, 97, 0, 97,
1179 97, 97, 0, 0, 97, 97, 0, 97, 97, 97,
1180 97, 247, 0, 0, 0, 0, 0, 0, 0, 0,
1181 0, 0, 0, 0, 0, 0, 0, 0, 97, 0,
1182 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1184 0, 0, 97, 97, 0, 0, 0, 0, 0, 97,
1185 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1186 97, 97, 97, 97, 97, 97, 97, 0, 0, 0,
1187 0, 0, 99, 0, 0, 0, 0, 0, 0, 0,
1188 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1189 99, 99, 247, 0, 0, 99, 99, 99, 0, 0,
1190 0, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1191 0, 99, 99, 99, 99, 99, 99, 99, 0, 99,
1192 0, 0, 0, 0, 0, 0, 247, 0, 0, 0,
1193 0, 0, 0, 0, 99, 0, 0, 0, 0, 0,
1194 0, 99, 99, 0, 99, 0, 99, 99, 99, 0,
1195 0, 99, 99, 0, 99, 99, 99, 99, 257, 0,
1196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1197 0, 0, 0, 0, 0, 99, 0, 99, 0, 0,
1198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1199 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,
1200 99, 0, 0, 0, 0, 0, 99, 99, 99, 99,
1201 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1202 99, 99, 99, 99, 0, 0, 0, 0, 0, 0,
1203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1204 0, 0, 0, 0, 0, 0, 0, 0, 0, 257,
1205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1206 0, 247, 0, 0, 0, 0, 0, 0, 0, 247,
1207 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
1208 247, 0, 0, 257, 247, 247, 247, 0, 0, 0,
1209 247, 247, 247, 247, 247, 247, 247, 247, 247, 0,
1210 247, 247, 247, 247, 247, 247, 247, 0, 247, 0,
1211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1212 0, 0, 0, 247, 0, 0, 0, 0, 0, 0,
1213 247, 247, 0, 247, 0, 247, 247, 247, 0, 0,
1214 247, 247, 0, 247, 247, 247, 247, 273, 0, 0,
1215 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1216 0, 0, 0, 0, 247, 0, 247, 0, 0, 0,
1217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1218 0, 0, 0, 0, 0, 0, 0, 0, 247, 247,
1219 0, 0, 0, 0, 0, 247, 247, 247, 247, 247,
1220 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
1221 247, 247, 247, 0, 0, 0, 0, 0, 257, 0,
1222 0, 0, 0, 0, 0, 0, 257, 257, 257, 257,
1223 257, 257, 257, 257, 257, 257, 257, 257, 273, 0,
1224 0, 257, 257, 257, 0, 0, 0, 257, 257, 257,
1225 257, 257, 257, 257, 257, 257, 0, 257, 257, 257,
1226 257, 257, 257, 257, 0, 257, 0, 0, 0, 0,
1227 0, 0, 273, 0, 0, 0, 0, 0, 0, 0,
1228 257, 0, 0, 0, 0, 0, 0, 257, 257, 0,
1229 257, 0, 257, 257, 257, 0, 0, 257, 257, 0,
1230 257, 257, 257, 257, 18, 0, 0, 0, 0, 0,
1231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1232 0, 257, 0, 257, 0, 0, 0, 0, 0, 0,
1233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1234 0, 0, 0, 0, 0, 257, 257, 0, 0, 0,
1235 0, 0, 257, 257, 257, 257, 257, 257, 257, 257,
1236 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
1237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1238 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1239 0, 0, 0, 0, 0, 18, 0, 0, 0, 0,
1240 0, 0, 0, 0, 0, 0, 0, 273, 0, 0,
1241 0, 0, 0, 0, 0, 273, 273, 273, 273, 273,
1242 273, 273, 273, 273, 273, 273, 273, 0, 0, 18,
1243 273, 273, 273, 0, 0, 0, 273, 273, 273, 273,
1244 273, 273, 273, 273, 273, 0, 273, 273, 273, 273,
1245 273, 273, 273, 0, 273, 0, 0, 0, 0, 0,
1246 0, 0, 0, 0, 0, 0, 0, 0, 0, 273,
1247 0, 0, 0, 0, 0, 0, 273, 273, 0, 273,
1248 0, 273, 273, 273, 0, 0, 273, 273, 0, 273,
1249 273, 273, 273, 277, 0, 0, 0, 0, 0, 0,
1250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1251 273, 0, 273, 0, 0, 0, 0, 0, 0, 0,
1252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1253 0, 0, 0, 0, 273, 273, 0, 0, 0, 0,
1254 0, 273, 273, 273, 273, 273, 273, 273, 273, 273,
1255 273, 273, 273, 273, 273, 273, 273, 273, 273, 0,
1256 0, 0, 0, 0, 18, 0, 0, 0, 0, 0,
1257 0, 0, 18, 18, 18, 18, 18, 18, 18, 18,
1258 18, 18, 18, 18, 277, 0, 0, 18, 18, 18,
1259 0, 0, 0, 18, 18, 18, 18, 18, 18, 18,
1260 18, 18, 0, 18, 18, 18, 18, 18, 18, 18,
1261 0, 18, 0, 0, 0, 0, 0, 0, 277, 0,
1262 0, 0, 0, 0, 0, 0, 18, 0, 0, 0,
1263 0, 0, 0, 18, 18, 0, 18, 0, 18, 18,
1264 18, 0, 0, 18, 18, 0, 18, 18, 18, 18,
1265 270, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1266 0, 0, 0, 0, 0, 0, 0, 18, 0, 18,
1267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1269 0, 18, 18, 0, 0, 0, 0, 0, 18, 18,
1270 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1271 18, 18, 18, 18, 18, 18, 0, 0, 0, 0,
1272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1274 0, 270, 0, 0, 0, 0, 0, 0, 0, 0,
1275 0, 0, 0, 277, 0, 0, 0, 0, 0, 0,
1276 0, 277, 277, 277, 277, 277, 277, 277, 277, 277,
1277 277, 277, 277, 0, 0, 270, 277, 277, 277, 0,
1278 0, 0, 277, 277, 277, 277, 277, 277, 277, 277,
1279 277, 0, 277, 277, 277, 277, 277, 277, 277, 0,
1280 277, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1281 0, 0, 0, 0, 22, 277, 0, 0, 0, 0,
1282 0, 0, 277, 277, 0, 277, 0, 277, 277, 277,
1283 0, 0, 277, 277, 0, 277, 277, 277, 277, 0,
1284 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1285 0, 0, 0, 0, 0, 0, 277, 0, 277, 0,
1286 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1287 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1288 277, 277, 0, 0, 0, 0, 0, 277, 277, 277,
1289 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
1290 277, 277, 277, 277, 277, 22, 0, 0, 0, 0,
1291 270, 0, 0, 0, 0, 0, 0, 0, 270, 270,
1292 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
1293 0, 0, 0, 270, 270, 270, 0, 0, 0, 270,
1294 270, 270, 270, 270, 270, 270, 270, 270, 0, 270,
1295 270, 270, 270, 270, 270, 270, 0, 270, 0, 0,
1296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1297 0, 25, 270, 0, 0, 0, 0, 0, 0, 270,
1298 270, 0, 270, 0, 270, 270, 270, 0, 0, 270,
1299 270, 0, 270, 270, 270, 270, 0, 0, 0, 0,
1300 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1301 0, 0, 0, 270, 0, 270, 0, 0, 0, 0,
1302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1303 0, 0, 0, 0, 0, 0, 0, 270, 270, 0,
1304 0, 0, 0, 0, 270, 270, 270, 270, 270, 270,
1305 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
1306 270, 270, 25, 0, 473, 0, 0, 0, 0, 0,
1307 0, 0, 0, 0, 22, 0, 0, 250, 0, 0,
1308 0, 0, 22, 22, 22, 22, 22, 22, 22, 22,
1309 22, 22, 22, 22, 0, 0, 0, 22, 22, 22,
1310 0, 0, 0, 22, 22, 22, 22, 22, 22, 22,
1311 22, 22, 0, 22, 22, 22, 22, 22, 22, 22,
1312 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
1313 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
1314 0, 0, 0, 22, 22, 0, 22, 0, 22, 22,
1315 22, 0, 0, 22, 22, 0, 22, 0, 22, 0,
1316 0, 0, 0, 0, 0, 0, 250, 0, 0, 0,
1317 0, 0, 0, 0, 0, 0, 0, 22, 0, 22,
1318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1320 0, 22, 22, 0, 0, 0, 0, 0, 22, 22,
1321 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1322 22, 22, 22, 22, 22, 22, 0, 0, 0, 0,
1323 0, 25, 0, 0, 0, 0, 0, 0, 0, 25,
1324 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1325 25, 0, 0, 0, 25, 25, 25, 0, 0, 0,
1326 25, 25, 25, 25, 25, 25, 25, 25, 25, 0,
1327 25, 25, 25, 25, 25, 25, 25, 0, 25, 0,
1328 0, 471, 0, 0, 0, 472, 0, 0, 0, 0,
1329 0, 0, 0, 25, 595, 347, 0, 0, 0, 0,
1330 25, 25, 0, 25, 0, 25, 25, 25, 0, 0,
1331 25, 25, 0, 25, 0, 25, 0, 0, 0, 0,
1332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1333 0, 0, 0, 0, 25, 0, 25, 201, 202, 0,
1334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1335 201, 202, 0, 0, 0, 0, 0, 0, 25, 25,
1336 59, 0, 0, 0, 0, 25, 25, 25, 25, 25,
1337 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1338 25, 25, 25, 0, 347, 0, 0, 0, 0, 0,
1339 0, 0, 0, 239, 240, 241, 242, 243, 0, 244,
1340 205, 245, 246, 247, 248, 249, 239, 240, 241, 242,
1341 243, 0, 244, 205, 245, 246, 247, 248, 249, 0,
1342 0, 0, 0, 0, 207, 208, 0, 0, 474, 475,
1343 712, 713, 0, 0, 251, 0, 0, 207, 208, 201,
1344 202, 714, 715, 716, 0, 0, 0, 251, 0, 0,
1345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1346 0, 0, 0, 0, 717, 0, 718, 719, 720, 721,
1347 722, 723, 724, 725, 726, 727, 0, 0, 0, 0,
1348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1349 0, 0, 0, 0, 0, 239, 240, 241, 242, 243,
1350 192, 244, 205, 245, 246, 247, 248, 249, 0, 0,
1351 0, 193, 194, 0, 0, 0, 0, 0, 0, 0,
1352 0, 0, 0, 0, 0, 0, 207, 208, 0, 15,
1353 0, 0, 0, 0, 0, 0, 251, 16, 0, 0,
1354 17, 18, 19, 20, 21, 22, 23, 24, 25, 0,
1355 0, 0, 26, 27, 28, 0, 0, 0, 29, 30,
1356 31, 32, 33, 34, 35, 36, 37, 0, 38, 39,
1357 40, 41, 42, 43, 44, 0, 45, 0, 0, 0,
1358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1359 0, 46, 0, 0, 0, 0, 0, 0, 47, 48,
1360 0, 49, 0, 50, 51, 52, 0, 0, 53, 54,
1361 0, 55, 0, 56, 0, 0, 0, 0, 0, 0,
1362 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1363 0, 0, 57, 0, 58, 0, 0, 0, 0, 0,
1364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1365 0, 0, 0, 0, 0, 0, 60, 61, 0, 0,
1366 0, 0, 0, 62, 63, 64, 65, 66, 67, 68,
1367 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1370 short yycheck[] = { 86,
1371 59, 169, 136, 134, 40, 40, 144, 295, 142, 143,
1372 395, 40, 146, 147, 148, 40, 497, 40, 40, 40,
1373 40, 159, 160, 161, 158, 40, 40, 37, 166, 40,
1374 328, 328, 42, 43, 40, 45, 408, 47, 40, 549,
1375 174, 40, 547, 40, 91, 40, 402, 403, 40, 40,
1376 545, 185, 0, 40, 185, 125, 432, 687, 313, 44,
1377 313, 40, 40, 313, 149, 150, 257, 355, 44, 399,
1378 44, 359, 44, 258, 58, 44, 44, 433, 44, 40,
1379 40, 37, 167, 93, 259, 44, 42, 43, 58, 45,
1380 46, 47, 44, 44, 123, 44, 40, 258, 157, 361,
1381 185, 262, 263, 152, 153, 154, 324, 241, 242, 259,
1382 244, 37, 123, 58, 589, 37, 42, 43, 177, 45,
1383 42, 47, 313, 385, 183, 47, 185, 385, 313, 37,
1384 385, 40, 385, 301, 42, 385, 44, 40, 313, 47,
1385 125, 396, 397, 309, 123, 620, 91, 313, 40, 125,
1386 385, 125, 313, 125, 239, 240, 125, 125, 385, 125,
1387 641, 396, 397, 313, 313, 795, 125, 93, 41, 58,
1388 43, 320, 45, 125, 125, 41, 125, 37, 44, 44,
1389 661, 0, 42, 43, 37, 45, 308, 47, 325, 42,
1390 43, 313, 45, 703, 47, 37, 701, 328, 91, 41,
1391 42, 43, 40, 45, 699, 47, 41, 258, 346, 44,
1392 37, 262, 263, 260, 41, 42, 43, 44, 45, 311,
1393 47, 313, 258, 361, 358, 393, 360, 58, 257, 313,
1394 368, 315, 316, 521, 372, 258, 370, 371, 376, 262,
1395 93, 300, 58, 258, 541, 543, 257, 306, 307, 336,
1396 309, 310, 311, 312, 313, 585, 258, 629, 58, 258,
1397 262, 258, 396, 262, 263, 257, 622, 258, 327, 328,
1398 257, 262, 263, 343, 650, 345, 407, 298, 257, 257,
1399 339, 41, 58, 421, 44, 123, 58, 41, 313, 348,
1400 44, 313, 314, 313, 353, 58, 257, 257, 357, 313,
1401 314, 58, 313, 317, 318, 58, 125, 313, 58, 308,
1402 309, 310, 58, 257, 313, 314, 313, 314, 313, 378,
1403 454, 269, 270, 58, 323, 264, 265, 266, 267, 58,
1404 464, 465, 58, 621, 313, 384, 269, 270, 337, 338,
1405 58, 390, 391, 392, 286, 287, 288, 346, 347, 348,
1406 349, 350, 313, 313, 257, 318, 319, 367, 394, 395,
1407 419, 58, 376, 362, 845, 364, 58, 402, 403, 313,
1408 385, 394, 395, 0, 385, 404, 405, 376, 763, 394,
1409 395, 396, 397, 312, 313, 341, 400, 401, 385, 298,
1410 390, 391, 394, 395, 430, 406, 407, 394, 395, 396,
1411 397, 400, 401, 58, 313, 314, 385, 430, 539, 697,
1412 313, 38, 404, 405, 41, 430, 43, 44, 45, 46,
1413 258, 313, 314, 58, 385, 385, 317, 318, 430, 408,
1414 409, 430, 343, 430, 345, 58, 274, 58, 276, 58,
1415 58, 385, 280, 281, 282, 406, 407, 615, 408, 409,
1416 269, 270, 590, 58, 58, 58, 594, 58, 58, 597,
1417 598, 58, 58, 37, 91, 524, 93, 376, 42, 43,
1418 58, 45, 58, 47, 58, 313, 314, 58, 537, 647,
1419 648, 649, 385, 58, 376, 58, 617, 387, 40, 58,
1420 61, 400, 401, 44, 332, 37, 123, 40, 125, 61,
1421 42, 43, 790, 45, 91, 47, 40, 123, 400, 401,
1422 46, 91, 800, 91, 44, 646, 44, 37, 44, 93,
1423 384, 652, 42, 43, 343, 45, 345, 47, 258, 40,
1424 0, 91, 257, 592, 593, 37, 374, 596, 376, 44,
1425 42, 43, 91, 45, 37, 47, 44, 385, 257, 42,
1426 43, 93, 45, 841, 47, 44, 394, 395, 396, 397,
1427 91, 44, 400, 401, 402, 403, 44, 44, 38, 44,
1428 38, 41, 37, 43, 44, 45, 46, 42, 43, 40,
1429 45, 40, 47, 40, 40, 716, 754, 40, 258, 37,
1430 91, 93, 430, 41, 42, 43, 655, 45, 44, 47,
1431 93, 44, 44, 40, 258, 37, 665, 775, 776, 777,
1432 42, 43, 37, 45, 44, 47, 41, 42, 43, 44,
1433 45, 91, 47, 93, 37, 44, 260, 44, 93, 42,
1434 43, 44, 45, 260, 47, 44, 258, 44, 44, 44,
1435 44, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1436 277, 278, 279, 123, 44, 125, 283, 284, 285, 258,
1437 44, 93, 289, 290, 291, 292, 293, 294, 295, 296,
1438 297, 44, 299, 300, 301, 302, 303, 304, 305, 738,
1439 307, 44, 395, 44, 397, 93, 399, 44, 401, 41,
1440 403, 41, 405, 44, 407, 322, 409, 44, 411, 58,
1441 58, 257, 329, 330, 58, 332, 93, 334, 335, 336,
1442 58, 257, 339, 340, 341, 342, 343, 344, 345, 0,
1443 854, 44, 37, 386, 783, 44, 860, 42, 43, 44,
1444 45, 44, 47, 44, 259, 312, 363, 44, 365, 44,
1445 367, 382, 312, 830, 41, 44, 44, 93, 258, 321,
1446 44, 44, 44, 321, 44, 125, 843, 257, 44, 41,
1447 387, 388, 258, 44, 44, 385, 44, 394, 395, 396,
1448 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1449 407, 408, 409, 410, 411, 124, 44, 385, 41, 44,
1450 260, 91, 44, 44, 44, 44, 44, 44, 268, 269,
1451 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1452 91, 258, 93, 283, 284, 285, 91, 44, 44, 289,
1453 290, 291, 292, 293, 294, 295, 296, 297, 44, 299,
1454 300, 301, 302, 303, 304, 305, 258, 307, 258, 44,
1455 258, 44, 123, 44, 125, 44, 312, 44, 258, 44,
1456 44, 331, 322, 44, 257, 41, 46, 44, 58, 329,
1457 330, 258, 332, 40, 334, 335, 336, 41, 44, 339,
1458 340, 341, 342, 343, 344, 345, 388, 257, 386, 41,
1459 58, 41, 394, 58, 396, 58, 398, 58, 400, 58,
1460 402, 44, 404, 363, 406, 365, 408, 367, 410, 259,
1461 44, 312, 44, 40, 44, 258, 321, 321, 0, 258,
1462 44, 44, 385, 44, 44, 123, 44, 387, 388, 44,
1463 41, 41, 41, 41, 394, 395, 396, 397, 398, 399,
1464 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1465 410, 411, 258, 44, 93, 44, 38, 388, 258, 41,
1466 258, 44, 44, 394, 395, 396, 397, 398, 399, 400,
1467 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1468 411, 44, 44, 258, 258, 44, 41, 58, 58, 260,
1469 259, 58, 58, 257, 286, 41, 44, 268, 269, 270,
1470 271, 272, 273, 274, 275, 276, 277, 278, 279, 91,
1471 44, 258, 283, 284, 285, 41, 44, 41, 289, 290,
1472 291, 292, 293, 294, 295, 296, 297, 41, 299, 300,
1473 301, 302, 303, 304, 305, 44, 307, 261, 58, 125,
1474 44, 41, 44, 125, 258, 44, 313, 258, 258, 124,
1475 58, 322, 259, 286, 41, 258, 41, 41, 329, 330,
1476 41, 332, 44, 334, 335, 336, 41, 383, 339, 340,
1477 41, 342, 343, 344, 345, 41, 44, 44, 41, 44,
1478 0, 0, 41, 41, 386, 125, 93, 41, 44, 41,
1479 123, 123, 363, 41, 365, 125, 677, 794, 602, 652,
1480 761, 191, 820, 449, 48, 832, 248, 0, 442, 54,
1481 859, 168, 419, 753, 395, 6, 387, 388, 319, 431,
1482 766, 163, 138, 394, 395, 396, 397, 398, 399, 400,
1483 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1484 411, 340, 629, 454, -1, -1, -1, -1, 41, -1,
1485 -1, 44, -1, -1, -1, -1, -1, -1, -1, -1,
1486 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1487 -1, -1, -1, -1, -1, -1, -1, -1, 260, -1,
1488 -1, -1, -1, -1, -1, -1, 268, 269, 270, 271,
1489 272, 273, 274, 275, 276, 277, 278, 279, 91, -1,
1490 -1, 283, 284, 285, -1, -1, -1, 289, 290, 291,
1491 292, 293, 294, 295, 296, 297, -1, 299, 300, 301,
1492 302, 303, 304, 305, -1, 307, -1, -1, -1, -1,
1493 -1, -1, 125, -1, -1, -1, -1, -1, -1, -1,
1494 322, -1, -1, -1, -1, -1, -1, 329, 330, -1,
1495 332, -1, 334, 335, 336, -1, -1, 339, 340, -1,
1496 342, 343, 344, 345, 0, -1, -1, -1, -1, -1,
1497 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1498 -1, 363, -1, 365, -1, -1, -1, -1, -1, -1,
1499 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1500 -1, -1, -1, -1, -1, 387, 388, -1, 44, -1,
1501 -1, -1, 394, 395, 396, 397, 398, 399, 400, 401,
1502 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
1503 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1504 -1, -1, -1, -1, -1, -1, -1, 40, -1, -1,
1505 -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
1506 -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
1507 -1, -1, -1, -1, -1, 268, 269, 270, 271, 272,
1508 273, 274, 275, 276, 277, 278, 279, 123, -1, 125,
1509 283, 284, 285, -1, -1, -1, 289, 290, 291, 292,
1510 293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
1511 303, 304, 305, -1, 307, -1, -1, -1, -1, -1,
1512 -1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
1513 -1, -1, -1, -1, -1, -1, 329, 330, -1, 332,
1514 -1, 334, 335, 336, -1, -1, 339, 340, -1, 342,
1515 343, 344, 345, 0, -1, -1, -1, -1, -1, -1,
1516 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1517 363, -1, 365, -1, -1, -1, -1, -1, -1, -1,
1518 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1519 -1, -1, -1, -1, 387, 388, -1, 44, -1, -1,
1520 -1, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1521 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
1522 -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
1523 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1524 276, 277, 278, 279, 91, -1, -1, 283, 284, 285,
1525 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1526 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1527 -1, 307, -1, -1, -1, -1, 123, -1, 125, -1,
1528 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1529 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1530 336, -1, -1, 339, 340, -1, 342, 343, 344, 345,
1531 0, -1, -1, -1, -1, -1, -1, -1, -1, 312,
1532 313, 314, -1, -1, -1, -1, -1, 363, -1, 365,
1533 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1534 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1535 -1, 387, 388, -1, 44, -1, -1, -1, 394, 395,
1536 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1537 406, 407, 408, 409, 410, 411, 369, 370, 371, 372,
1538 373, -1, 375, 376, 377, 378, 379, 380, 381, -1,
1539 -1, -1, -1, 40, -1, -1, -1, -1, -1, -1,
1540 -1, 91, -1, -1, -1, -1, -1, 400, 401, -1,
1541 -1, -1, -1, 260, -1, -1, -1, 410, -1, -1,
1542 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1543 277, 278, 279, 123, -1, 125, 283, 284, 285, -1,
1544 -1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
1545 297, -1, 299, 300, 301, 302, 303, 304, 305, -1,
1546 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1547 -1, -1, -1, -1, -1, 322, -1, -1, -1, -1,
1548 -1, -1, 329, 330, -1, 332, -1, 334, 335, 336,
1549 -1, -1, 339, 340, -1, 342, 343, 344, 345, 0,
1550 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1551 -1, -1, -1, -1, -1, -1, 363, -1, 365, -1,
1552 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1553 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1554 387, 388, -1, 44, -1, -1, -1, 394, 395, 396,
1555 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1556 407, 408, 409, 410, 411, -1, -1, -1, -1, -1,
1557 260, -1, -1, -1, -1, -1, -1, -1, 268, 269,
1558 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1559 91, -1, -1, 283, 284, 285, -1, -1, -1, 289,
1560 290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
1561 300, 301, 302, 303, 304, 305, -1, 307, -1, -1,
1562 -1, -1, 123, -1, 125, -1, -1, -1, -1, -1,
1563 -1, -1, 322, -1, -1, -1, -1, -1, -1, 329,
1564 330, -1, 332, -1, 334, 335, 336, -1, -1, 339,
1565 340, -1, 342, 343, 344, 345, 0, -1, -1, -1,
1566 -1, -1, -1, -1, -1, -1, 313, 314, -1, -1,
1567 -1, -1, -1, 363, -1, 365, -1, -1, -1, -1,
1568 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1569 -1, -1, -1, -1, -1, -1, -1, 387, 388, -1,
1570 -1, -1, -1, -1, 394, 395, 396, 397, 398, 399,
1571 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1572 410, 411, 369, 370, 371, 372, 373, -1, 375, 376,
1573 377, 378, 379, 380, 381, -1, -1, -1, -1, -1,
1574 -1, -1, -1, -1, -1, -1, -1, 91, -1, -1,
1575 -1, -1, -1, 400, 401, -1, -1, -1, -1, 260,
1576 -1, -1, -1, 410, -1, -1, -1, 268, 269, 270,
1577 271, 272, 273, 274, 275, 276, 277, 278, 279, 123,
1578 -1, 125, 283, 284, 285, -1, -1, -1, 289, 290,
1579 291, 292, 293, 294, 295, 296, 297, -1, 299, 300,
1580 301, 302, 303, 304, 305, -1, 307, -1, -1, -1,
1581 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1582 -1, 322, -1, -1, -1, -1, -1, -1, 329, 330,
1583 -1, 332, -1, 334, 335, 336, -1, -1, 339, 340,
1584 -1, 342, 343, 344, 345, 0, -1, -1, -1, -1,
1585 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1586 -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
1587 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1588 -1, -1, -1, -1, -1, -1, 387, 388, -1, -1,
1589 -1, -1, -1, 394, 395, 396, 397, 398, 399, 400,
1590 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1591 411, -1, -1, -1, -1, -1, 260, -1, -1, -1,
1592 -1, -1, -1, -1, 268, 269, 270, 271, 272, 273,
1593 274, 275, 276, 277, 278, 279, 91, -1, -1, 283,
1594 284, 285, -1, -1, -1, 289, 290, 291, 292, 293,
1595 294, 295, 296, 297, -1, 299, 300, 301, 302, 303,
1596 304, 305, -1, 307, -1, -1, -1, -1, 123, -1,
1597 125, -1, -1, -1, -1, -1, -1, -1, 322, -1,
1598 -1, -1, -1, -1, -1, 329, 330, -1, 332, -1,
1599 334, 335, 336, -1, -1, 339, 340, -1, 342, 343,
1600 344, 345, 0, -1, -1, -1, -1, -1, -1, -1,
1601 -1, -1, -1, -1, -1, -1, -1, -1, -1, 363,
1602 -1, 365, -1, -1, -1, -1, -1, -1, -1, -1,
1603 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1604 -1, -1, -1, 387, 388, -1, -1, -1, -1, -1,
1605 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
1606 404, 405, 406, 407, 408, 409, 410, 411, -1, -1,
1607 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1608 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1609 -1, -1, -1, 91, -1, -1, -1, -1, -1, -1,
1610 -1, -1, -1, -1, -1, 260, -1, -1, -1, -1,
1611 -1, -1, -1, 268, 269, 270, 271, 272, 273, 274,
1612 275, 276, 277, 278, 279, -1, -1, 125, 283, 284,
1613 285, -1, -1, -1, 289, 290, 291, 292, 293, 294,
1614 295, 296, 297, -1, 299, 300, 301, 302, 303, 304,
1615 305, -1, 307, -1, -1, -1, -1, -1, -1, -1,
1616 -1, -1, -1, -1, -1, -1, -1, 322, -1, -1,
1617 -1, -1, -1, -1, 329, 330, -1, 332, -1, 334,
1618 335, 336, -1, -1, 339, 340, -1, 342, 343, 344,
1619 345, 0, -1, -1, -1, -1, -1, -1, -1, -1,
1620 -1, -1, -1, -1, -1, -1, -1, -1, 363, -1,
1621 365, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1622 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1623 -1, -1, 387, 388, -1, -1, -1, -1, -1, 394,
1624 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1625 405, 406, 407, 408, 409, 410, 411, -1, -1, -1,
1626 -1, -1, 260, -1, -1, -1, -1, -1, -1, -1,
1627 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1628 278, 279, 91, -1, -1, 283, 284, 285, -1, -1,
1629 -1, 289, 290, 291, 292, 293, 294, 295, 296, 297,
1630 -1, 299, 300, 301, 302, 303, 304, 305, -1, 307,
1631 -1, -1, -1, -1, 123, -1, 125, -1, -1, -1,
1632 -1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
1633 -1, 329, 330, 331, 332, -1, 334, 335, 336, -1,
1634 -1, 339, 340, -1, 342, 343, 344, 345, 0, -1,
1635 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1636 -1, -1, -1, -1, -1, 363, -1, 365, -1, -1,
1637 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1638 -1, -1, -1, -1, -1, -1, -1, -1, -1, 387,
1639 388, -1, -1, -1, -1, -1, 394, 395, 396, 397,
1640 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
1641 408, 409, 410, 411, -1, -1, -1, -1, -1, -1,
1642 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1643 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
1644 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1645 -1, 260, -1, -1, -1, -1, -1, -1, -1, 268,
1646 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
1647 279, 123, -1, 125, 283, 284, 285, -1, -1, -1,
1648 289, 290, 291, 292, 293, 294, 295, 296, 297, -1,
1649 299, 300, 301, 302, 303, 304, 305, -1, 307, -1,
1650 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1651 -1, -1, -1, 322, -1, -1, -1, -1, -1, -1,
1652 329, 330, -1, 332, -1, 334, 335, 336, -1, -1,
1653 339, 340, -1, 342, 343, 344, 345, 0, -1, -1,
1654 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1655 -1, -1, -1, -1, 363, -1, 365, -1, -1, -1,
1656 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1657 -1, -1, -1, -1, -1, -1, -1, -1, 387, 388,
1658 -1, -1, -1, -1, -1, 394, 395, 396, 397, 398,
1659 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1660 409, 410, 411, -1, -1, -1, -1, -1, 260, -1,
1661 -1, -1, -1, -1, -1, -1, 268, 269, 270, 271,
1662 272, 273, 274, 275, 276, 277, 278, 279, 91, -1,
1663 -1, 283, 284, 285, -1, -1, -1, 289, 290, 291,
1664 292, 293, 294, 295, 296, 297, -1, 299, 300, 301,
1665 302, 303, 304, 305, -1, 307, -1, -1, -1, -1,
1666 123, -1, 125, -1, -1, -1, -1, -1, -1, -1,
1667 322, -1, -1, -1, -1, -1, -1, 329, 330, -1,
1668 332, -1, 334, 335, 336, -1, -1, 339, 340, -1,
1669 342, 343, 344, 345, 0, -1, -1, -1, -1, -1,
1670 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1671 -1, 363, -1, 365, -1, -1, -1, -1, -1, -1,
1672 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1673 -1, -1, -1, -1, -1, 387, 388, -1, -1, -1,
1674 -1, -1, 394, 395, 396, 397, 398, 399, 400, 401,
1675 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
1676 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1677 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1678 -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
1679 -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
1680 -1, -1, -1, -1, -1, 268, 269, 270, 271, 272,
1681 273, 274, 275, 276, 277, 278, 279, -1, -1, 125,
1682 283, 284, 285, -1, -1, -1, 289, 290, 291, 292,
1683 293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
1684 303, 304, 305, -1, 307, -1, -1, -1, -1, -1,
1685 -1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
1686 -1, -1, -1, -1, -1, -1, 329, 330, -1, 332,
1687 -1, 334, 335, 336, -1, -1, 339, 340, -1, 342,
1688 343, 344, 345, 0, -1, -1, -1, -1, -1, -1,
1689 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1690 363, -1, 365, -1, -1, -1, -1, -1, -1, -1,
1691 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1692 -1, -1, -1, -1, 387, 388, -1, -1, -1, -1,
1693 -1, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1694 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
1695 -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
1696 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1697 276, 277, 278, 279, 91, -1, -1, 283, 284, 285,
1698 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1699 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1700 -1, 307, -1, -1, -1, -1, -1, -1, 125, -1,
1701 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1702 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1703 336, -1, -1, 339, 340, -1, 342, 343, 344, 345,
1704 0, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1705 -1, -1, -1, -1, -1, -1, -1, 363, -1, 365,
1706 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1707 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1708 -1, 387, 388, -1, -1, -1, -1, -1, 394, 395,
1709 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1710 406, 407, 408, 409, 410, 411, -1, -1, -1, -1,
1711 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1712 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1713 -1, 91, -1, -1, -1, -1, -1, -1, -1, -1,
1714 -1, -1, -1, 260, -1, -1, -1, -1, -1, -1,
1715 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1716 277, 278, 279, -1, -1, 125, 283, 284, 285, -1,
1717 -1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
1718 297, -1, 299, 300, 301, 302, 303, 304, 305, -1,
1719 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1720 -1, -1, -1, -1, -1, 322, -1, -1, -1, -1,
1721 -1, -1, 329, 330, -1, 332, -1, 334, 335, 336,
1722 -1, -1, 339, 340, -1, 342, 343, 344, 345, 0,
1723 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1724 -1, -1, -1, -1, -1, -1, 363, -1, 365, -1,
1725 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1726 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1727 387, 388, -1, -1, -1, -1, -1, 394, 395, 396,
1728 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1729 407, 408, 409, 410, 411, -1, -1, -1, -1, -1,
1730 260, -1, -1, -1, -1, -1, -1, -1, 268, 269,
1731 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1732 91, -1, -1, 283, 284, 285, -1, -1, -1, 289,
1733 290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
1734 300, 301, 302, 303, 304, 305, -1, 307, -1, -1,
1735 -1, -1, -1, -1, 125, -1, -1, -1, -1, -1,
1736 -1, -1, 322, -1, -1, -1, -1, -1, -1, 329,
1737 330, -1, 332, -1, 334, 335, 336, -1, -1, 339,
1738 340, -1, 342, 343, 344, 345, 0, -1, -1, -1,
1739 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1740 -1, -1, -1, 363, -1, 365, -1, -1, -1, -1,
1741 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1742 -1, -1, -1, -1, -1, -1, -1, 387, 388, -1,
1743 -1, -1, -1, -1, 394, 395, 396, 397, 398, 399,
1744 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1745 410, 411, -1, -1, -1, -1, -1, -1, -1, -1,
1746 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1747 -1, -1, -1, -1, -1, -1, -1, 91, -1, -1,
1748 -1, -1, -1, -1, -1, -1, -1, -1, -1, 260,
1749 -1, -1, -1, -1, -1, -1, -1, 268, 269, 270,
1750 271, 272, 273, 274, 275, 276, 277, 278, 279, -1,
1751 -1, 125, 283, 284, 285, -1, -1, -1, 289, 290,
1752 291, 292, 293, 294, 295, 296, 297, -1, 299, 300,
1753 301, 302, 303, 304, 305, -1, 307, -1, -1, -1,
1754 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1755 -1, 322, -1, -1, -1, -1, -1, -1, 329, 330,
1756 -1, 332, -1, 334, 335, 336, -1, -1, 339, 340,
1757 -1, 342, 343, 344, 345, 0, -1, -1, -1, -1,
1758 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1759 -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
1760 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1761 -1, -1, -1, -1, -1, -1, 387, 388, -1, -1,
1762 -1, -1, -1, 394, 395, 396, 397, 398, 399, 400,
1763 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1764 411, -1, -1, -1, -1, -1, 260, -1, -1, -1,
1765 -1, -1, -1, -1, 268, 269, 270, 271, 272, 273,
1766 274, 275, 276, 277, 278, 279, 91, -1, -1, 283,
1767 284, 285, -1, -1, -1, 289, 290, 291, 292, 293,
1768 294, 295, 296, 297, -1, 299, 300, 301, 302, 303,
1769 304, 305, -1, 307, -1, -1, -1, -1, -1, -1,
1770 125, -1, -1, -1, -1, -1, -1, -1, 322, -1,
1771 -1, -1, -1, -1, -1, 329, 330, -1, 332, -1,
1772 334, 335, 336, -1, -1, 339, 340, -1, 342, 343,
1773 344, 345, 0, -1, -1, -1, -1, -1, -1, -1,
1774 -1, -1, -1, -1, -1, -1, -1, -1, -1, 363,
1775 -1, 365, -1, -1, -1, -1, -1, -1, -1, -1,
1776 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1777 -1, -1, -1, 387, 388, -1, -1, -1, -1, -1,
1778 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
1779 404, 405, 406, 407, 408, 409, 410, 411, -1, -1,
1780 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1781 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1782 -1, -1, -1, 91, -1, -1, -1, -1, -1, -1,
1783 -1, -1, -1, -1, -1, 260, -1, -1, -1, -1,
1784 -1, -1, -1, 268, 269, 270, 271, 272, 273, 274,
1785 275, 276, 277, 278, 279, -1, -1, 125, 283, 284,
1786 285, -1, -1, -1, 289, 290, 291, 292, 293, 294,
1787 295, 296, 297, -1, 299, 300, 301, 302, 303, 304,
1788 305, -1, 307, -1, -1, -1, -1, -1, -1, -1,
1789 -1, -1, -1, -1, -1, -1, -1, 322, -1, -1,
1790 -1, -1, -1, -1, 329, 330, -1, 332, -1, 334,
1791 335, 336, -1, -1, 339, 340, -1, 342, 343, 344,
1792 345, 0, -1, -1, -1, -1, -1, -1, -1, -1,
1793 -1, -1, -1, -1, -1, -1, -1, -1, 363, -1,
1794 365, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1795 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1796 -1, -1, 387, 388, -1, -1, -1, -1, -1, 394,
1797 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1798 405, 406, 407, 408, 409, 410, 411, -1, -1, -1,
1799 -1, -1, 260, -1, -1, -1, -1, -1, -1, -1,
1800 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1801 278, 279, 91, -1, -1, 283, 284, 285, -1, -1,
1802 -1, 289, 290, 291, 292, 293, 294, 295, 296, 297,
1803 -1, 299, 300, 301, 302, 303, 304, 305, -1, 307,
1804 -1, -1, -1, -1, -1, -1, 125, -1, -1, -1,
1805 -1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
1806 -1, 329, 330, -1, 332, -1, 334, 335, 336, -1,
1807 -1, 339, 340, -1, 342, 343, 344, 345, 0, -1,
1808 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1809 -1, -1, -1, -1, -1, 363, -1, 365, -1, -1,
1810 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1811 -1, -1, -1, -1, -1, -1, -1, -1, -1, 387,
1812 388, -1, -1, -1, -1, -1, 394, 395, 396, 397,
1813 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
1814 408, 409, 410, 411, -1, -1, -1, -1, -1, -1,
1815 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1816 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
1817 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1818 -1, 260, -1, -1, -1, -1, -1, -1, -1, 268,
1819 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
1820 279, -1, -1, 125, 283, 284, 285, -1, -1, -1,
1821 289, 290, 291, 292, 293, 294, 295, 296, 297, -1,
1822 299, 300, 301, 302, 303, 304, 305, -1, 307, -1,
1823 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1824 -1, -1, -1, 322, -1, -1, -1, -1, -1, -1,
1825 329, 330, -1, 332, -1, 334, 335, 336, -1, -1,
1826 339, 340, -1, 342, 343, 344, 345, 0, -1, -1,
1827 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1828 -1, -1, -1, -1, 363, -1, 365, -1, -1, -1,
1829 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1830 -1, -1, -1, -1, -1, -1, -1, -1, 387, 388,
1831 -1, -1, -1, -1, -1, 394, 395, 396, 397, 398,
1832 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1833 409, 410, 411, -1, -1, -1, -1, -1, 260, -1,
1834 -1, -1, -1, -1, -1, -1, 268, 269, 270, 271,
1835 272, 273, 274, 275, 276, 277, 278, 279, 91, -1,
1836 -1, 283, 284, 285, -1, -1, -1, 289, 290, 291,
1837 292, 293, 294, 295, 296, 297, -1, 299, 300, 301,
1838 302, 303, 304, 305, -1, 307, -1, -1, -1, -1,
1839 -1, -1, 125, -1, -1, -1, -1, -1, -1, -1,
1840 322, -1, -1, -1, -1, -1, -1, 329, 330, -1,
1841 332, -1, 334, 335, 336, -1, -1, 339, 340, -1,
1842 342, 343, 344, 345, 0, -1, -1, -1, -1, -1,
1843 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1844 -1, 363, -1, 365, -1, -1, -1, -1, -1, -1,
1845 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1846 -1, -1, -1, -1, -1, 387, 388, -1, -1, -1,
1847 -1, -1, 394, 395, 396, 397, 398, 399, 400, 401,
1848 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
1849 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1850 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1851 -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
1852 -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
1853 -1, -1, -1, -1, -1, 268, 269, 270, 271, 272,
1854 273, 274, 275, 276, 277, 278, 279, -1, -1, 125,
1855 283, 284, 285, -1, -1, -1, 289, 290, 291, 292,
1856 293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
1857 303, 304, 305, -1, 307, -1, -1, -1, -1, -1,
1858 -1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
1859 -1, -1, -1, -1, -1, -1, 329, 330, -1, 332,
1860 -1, 334, 335, 336, -1, -1, 339, 340, -1, 342,
1861 343, 344, 345, 0, -1, -1, -1, -1, -1, -1,
1862 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1863 363, -1, 365, -1, -1, -1, -1, -1, -1, -1,
1864 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1865 -1, -1, -1, -1, 387, 388, -1, -1, -1, -1,
1866 -1, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1867 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
1868 -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
1869 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1870 276, 277, 278, 279, 91, -1, -1, 283, 284, 285,
1871 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1872 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1873 -1, 307, -1, -1, -1, -1, -1, -1, 125, -1,
1874 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1875 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1876 336, -1, -1, 339, 340, -1, 342, 343, 344, 345,
1877 0, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1878 -1, -1, -1, -1, -1, -1, -1, 363, -1, 365,
1879 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1880 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1881 -1, 387, 388, -1, -1, -1, -1, -1, 394, 395,
1882 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1883 406, 407, 408, 409, 410, 411, -1, -1, -1, -1,
1884 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1885 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1886 -1, 91, -1, -1, -1, -1, -1, -1, -1, -1,
1887 -1, -1, -1, 260, -1, -1, -1, -1, -1, -1,
1888 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1889 277, 278, 279, -1, -1, 125, 283, 284, 285, -1,
1890 -1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
1891 297, -1, 299, 300, 301, 302, 303, 304, 305, -1,
1892 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1893 -1, -1, -1, -1, 0, 322, -1, -1, -1, -1,
1894 -1, -1, 329, 330, -1, 332, -1, 334, 335, 336,
1895 -1, -1, 339, 340, -1, 342, 343, 344, 345, -1,
1896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1897 -1, -1, -1, -1, -1, -1, 363, -1, 365, -1,
1898 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1899 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1900 387, 388, -1, -1, -1, -1, -1, 394, 395, 396,
1901 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1902 407, 408, 409, 410, 411, 91, -1, -1, -1, -1,
1903 260, -1, -1, -1, -1, -1, -1, -1, 268, 269,
1904 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1905 -1, -1, -1, 283, 284, 285, -1, -1, -1, 289,
1906 290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
1907 300, 301, 302, 303, 304, 305, -1, 307, -1, -1,
1908 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1909 -1, 0, 322, -1, -1, -1, -1, -1, -1, 329,
1910 330, -1, 332, -1, 334, 335, 336, -1, -1, 339,
1911 340, -1, 342, 343, 344, 345, -1, -1, -1, -1,
1912 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1913 -1, -1, -1, 363, -1, 365, -1, -1, -1, -1,
1914 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1915 -1, -1, -1, -1, -1, -1, -1, 387, 388, -1,
1916 -1, -1, -1, -1, 394, 395, 396, 397, 398, 399,
1917 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1918 410, 411, 91, -1, 40, -1, -1, -1, -1, -1,
1919 -1, -1, -1, -1, 260, -1, -1, 40, -1, -1,
1920 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1921 276, 277, 278, 279, -1, -1, -1, 283, 284, 285,
1922 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1923 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1924 -1, 307, -1, -1, -1, -1, -1, -1, -1, -1,
1925 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1926 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1927 336, -1, -1, 339, 340, -1, 342, -1, 344, -1,
1928 -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
1929 -1, -1, -1, -1, -1, -1, -1, 363, -1, 365,
1930 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1931 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1932 -1, 387, 388, -1, -1, -1, -1, -1, 394, 395,
1933 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1934 406, 407, 408, 409, 410, 411, -1, -1, -1, -1,
1935 -1, 260, -1, -1, -1, -1, -1, -1, -1, 268,
1936 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
1937 279, -1, -1, -1, 283, 284, 285, -1, -1, -1,
1938 289, 290, 291, 292, 293, 294, 295, 296, 297, -1,
1939 299, 300, 301, 302, 303, 304, 305, -1, 307, -1,
1940 -1, 257, -1, -1, -1, 261, -1, -1, -1, -1,
1941 -1, -1, -1, 322, 257, 258, -1, -1, -1, -1,
1942 329, 330, -1, 332, -1, 334, 335, 336, -1, -1,
1943 339, 340, -1, 342, -1, 344, -1, -1, -1, -1,
1944 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1945 -1, -1, -1, -1, 363, -1, 365, 313, 314, -1,
1946 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1947 313, 314, -1, -1, -1, -1, -1, -1, 387, 388,
1948 91, -1, -1, -1, -1, 394, 395, 396, 397, 398,
1949 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1950 409, 410, 411, -1, 258, -1, -1, -1, -1, -1,
1951 -1, -1, -1, 369, 370, 371, 372, 373, -1, 375,
1952 376, 377, 378, 379, 380, 381, 369, 370, 371, 372,
1953 373, -1, 375, 376, 377, 378, 379, 380, 381, -1,
1954 -1, -1, -1, -1, 400, 401, -1, -1, 404, 405,
1955 315, 316, -1, -1, 410, -1, -1, 400, 401, 313,
1956 314, 326, 327, 328, -1, -1, -1, 410, -1, -1,
1957 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1958 -1, -1, -1, -1, 349, -1, 351, 352, 353, 354,
1959 355, 356, 357, 358, 359, 360, -1, -1, -1, -1,
1960 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1961 -1, -1, -1, -1, -1, 369, 370, 371, 372, 373,
1962 385, 375, 376, 377, 378, 379, 380, 381, -1, -1,
1963 -1, 396, 397, -1, -1, -1, -1, -1, -1, -1,
1964 -1, -1, -1, -1, -1, -1, 400, 401, -1, 260,
1965 -1, -1, -1, -1, -1, -1, 410, 268, -1, -1,
1966 271, 272, 273, 274, 275, 276, 277, 278, 279, -1,
1967 -1, -1, 283, 284, 285, -1, -1, -1, 289, 290,
1968 291, 292, 293, 294, 295, 296, 297, -1, 299, 300,
1969 301, 302, 303, 304, 305, -1, 307, -1, -1, -1,
1970 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1971 -1, 322, -1, -1, -1, -1, -1, -1, 329, 330,
1972 -1, 332, -1, 334, 335, 336, -1, -1, 339, 340,
1973 -1, 342, -1, 344, -1, -1, -1, -1, -1, -1,
1974 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1975 -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
1976 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1977 -1, -1, -1, -1, -1, -1, 387, 388, -1, -1,
1978 -1, -1, -1, 394, 395, 396, 397, 398, 399, 400,
1979 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1986 #define YYMAXTOKEN 430
1989 "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,
1990 0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,0,
1991 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,
1992 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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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,"CHAR","INTEGER","BOOLEAN","PERCENT",
1997 "SPERCENT","MINUS_INTEGER","PLUS_INTEGER","MAZE_GRID_ID","SOLID_FILL_ID",
1998 "MINES_ID","ROGUELEV_ID","MESSAGE_ID","MAZE_ID","LEVEL_ID","LEV_INIT_ID",
1999 "GEOMETRY_ID","NOMAP_ID","OBJECT_ID","COBJECT_ID","MONSTER_ID","TRAP_ID",
2000 "DOOR_ID","DRAWBRIDGE_ID","object_ID","monster_ID","terrain_ID","MAZEWALK_ID",
2001 "WALLIFY_ID","REGION_ID","FILLING","IRREGULAR","JOINED","ALTAR_ID","LADDER_ID",
2002 "STAIR_ID","NON_DIGGABLE_ID","NON_PASSWALL_ID","ROOM_ID","PORTAL_ID",
2003 "TELEPRT_ID","BRANCH_ID","LEV","MINERALIZE_ID","CORRIDOR_ID","GOLD_ID",
2004 "ENGRAVING_ID","FOUNTAIN_ID","POOL_ID","SINK_ID","NONE","RAND_CORRIDOR_ID",
2005 "DOOR_STATE","LIGHT_STATE","CURSE_TYPE","ENGRAVING_TYPE","DIRECTION",
2006 "RANDOM_TYPE","RANDOM_TYPE_BRACKET","A_REGISTER","ALIGNMENT","LEFT_OR_RIGHT",
2007 "CENTER","TOP_OR_BOT","ALTAR_TYPE","UP_OR_DOWN","SUBROOM_ID","NAME_ID",
2008 "FLAGS_ID","FLAG_TYPE","MON_ATTITUDE","MON_ALERTNESS","MON_APPEARANCE",
2009 "ROOMDOOR_ID","IF_ID","ELSE_ID","TERRAIN_ID","HORIZ_OR_VERT",
2010 "REPLACE_TERRAIN_ID","EXIT_ID","SHUFFLE_ID","QUANTITY_ID","BURIED_ID","LOOP_ID",
2011 "FOR_ID","TO_ID","SWITCH_ID","CASE_ID","BREAK_ID","DEFAULT_ID","ERODED_ID",
2012 "TRAPPED_STATE","RECHARGED_ID","INVIS_ID","GREASED_ID","FEMALE_ID",
2013 "CANCELLED_ID","REVIVED_ID","AVENGE_ID","FLEEING_ID","BLINDED_ID",
2014 "PARALYZED_ID","STUNNED_ID","CONFUSED_ID","SEENTRAPS_ID","ALL_ID","MONTYPE_ID",
2015 "GRAVE_ID","ERODEPROOF_ID","FUNCTION_ID","MSG_OUTPUT_TYPE","COMPARE_TYPE",
2016 "UNKNOWN_TYPE","rect_ID","fillrect_ID","line_ID","randline_ID","grow_ID",
2017 "selection_ID","flood_ID","rndcoord_ID","circle_ID","ellipse_ID","filter_ID",
2018 "complement_ID","gradient_ID","GRADIENT_TYPE","LIMITED","HUMIDITY_TYPE",
2019 "STRING","MAP_ID","NQSTRING","VARSTRING","CFUNC","CFUNC_INT","CFUNC_STR",
2020 "CFUNC_COORD","CFUNC_REGION","VARSTRING_INT","VARSTRING_INT_ARRAY",
2021 "VARSTRING_STRING","VARSTRING_STRING_ARRAY","VARSTRING_VAR",
2022 "VARSTRING_VAR_ARRAY","VARSTRING_COORD","VARSTRING_COORD_ARRAY",
2023 "VARSTRING_REGION","VARSTRING_REGION_ARRAY","VARSTRING_MAPCHAR",
2024 "VARSTRING_MAPCHAR_ARRAY","VARSTRING_MONST","VARSTRING_MONST_ARRAY",
2025 "VARSTRING_OBJ","VARSTRING_OBJ_ARRAY","VARSTRING_SEL","VARSTRING_SEL_ARRAY",
2026 "METHOD_INT","METHOD_INT_ARRAY","METHOD_STRING","METHOD_STRING_ARRAY",
2027 "METHOD_VAR","METHOD_VAR_ARRAY","METHOD_COORD","METHOD_COORD_ARRAY",
2028 "METHOD_REGION","METHOD_REGION_ARRAY","METHOD_MAPCHAR","METHOD_MAPCHAR_ARRAY",
2029 "METHOD_MONST","METHOD_MONST_ARRAY","METHOD_OBJ","METHOD_OBJ_ARRAY",
2030 "METHOD_SEL","METHOD_SEL_ARRAY","DICE",
2037 "levels : level levels",
2038 "level : level_def flags levstatements",
2039 "level_def : LEVEL_ID ':' STRING",
2040 "level_def : MAZE_ID ':' STRING ',' mazefiller",
2041 "mazefiller : RANDOM_TYPE",
2042 "mazefiller : CHAR",
2043 "lev_init : LEV_INIT_ID ':' SOLID_FILL_ID ',' terrain_type",
2044 "lev_init : LEV_INIT_ID ':' MAZE_GRID_ID ',' CHAR",
2045 "lev_init : LEV_INIT_ID ':' ROGUELEV_ID",
2046 "lev_init : LEV_INIT_ID ':' MINES_ID ',' CHAR ',' CHAR ',' BOOLEAN ',' BOOLEAN ',' light_state ',' walled opt_fillchar",
2048 "opt_limited : ',' LIMITED",
2049 "opt_coord_or_var :",
2050 "opt_coord_or_var : ',' coord_or_var",
2052 "opt_fillchar : ',' CHAR",
2054 "walled : RANDOM_TYPE",
2056 "flags : FLAGS_ID ':' flag_list",
2057 "flag_list : FLAG_TYPE ',' flag_list",
2058 "flag_list : FLAG_TYPE",
2060 "levstatements : levstatement levstatements",
2061 "stmt_block : '{' levstatements '}'",
2062 "levstatement : message",
2063 "levstatement : lev_init",
2064 "levstatement : altar_detail",
2065 "levstatement : grave_detail",
2066 "levstatement : branch_region",
2067 "levstatement : corridor",
2068 "levstatement : variable_define",
2069 "levstatement : shuffle_detail",
2070 "levstatement : diggable_detail",
2071 "levstatement : door_detail",
2072 "levstatement : drawbridge_detail",
2073 "levstatement : engraving_detail",
2074 "levstatement : mineralize",
2075 "levstatement : fountain_detail",
2076 "levstatement : gold_detail",
2077 "levstatement : switchstatement",
2078 "levstatement : forstatement",
2079 "levstatement : loopstatement",
2080 "levstatement : ifstatement",
2081 "levstatement : chancestatement",
2082 "levstatement : exitstatement",
2083 "levstatement : breakstatement",
2084 "levstatement : function_define",
2085 "levstatement : function_call",
2086 "levstatement : ladder_detail",
2087 "levstatement : map_definition",
2088 "levstatement : mazewalk_detail",
2089 "levstatement : monster_detail",
2090 "levstatement : object_detail",
2091 "levstatement : passwall_detail",
2092 "levstatement : pool_detail",
2093 "levstatement : portal_region",
2094 "levstatement : random_corridors",
2095 "levstatement : region_detail",
2096 "levstatement : room_def",
2097 "levstatement : subroom_def",
2098 "levstatement : sink_detail",
2099 "levstatement : terrain_detail",
2100 "levstatement : replace_terrain_detail",
2101 "levstatement : stair_detail",
2102 "levstatement : stair_region",
2103 "levstatement : teleprt_region",
2104 "levstatement : trap_detail",
2105 "levstatement : wallify_detail",
2106 "any_var_array : VARSTRING_INT_ARRAY",
2107 "any_var_array : VARSTRING_STRING_ARRAY",
2108 "any_var_array : VARSTRING_VAR_ARRAY",
2109 "any_var_array : VARSTRING_COORD_ARRAY",
2110 "any_var_array : VARSTRING_REGION_ARRAY",
2111 "any_var_array : VARSTRING_MAPCHAR_ARRAY",
2112 "any_var_array : VARSTRING_MONST_ARRAY",
2113 "any_var_array : VARSTRING_OBJ_ARRAY",
2114 "any_var_array : VARSTRING_SEL_ARRAY",
2115 "any_var : VARSTRING_INT",
2116 "any_var : VARSTRING_STRING",
2117 "any_var : VARSTRING_VAR",
2118 "any_var : VARSTRING_COORD",
2119 "any_var : VARSTRING_REGION",
2120 "any_var : VARSTRING_MAPCHAR",
2121 "any_var : VARSTRING_MONST",
2122 "any_var : VARSTRING_OBJ",
2123 "any_var : VARSTRING_SEL",
2124 "any_var_or_arr : any_var_array",
2125 "any_var_or_arr : any_var",
2126 "any_var_or_arr : VARSTRING",
2127 "any_var_or_unk : VARSTRING",
2128 "any_var_or_unk : any_var",
2129 "shuffle_detail : SHUFFLE_ID ':' any_var_array",
2130 "variable_define : any_var_or_arr '=' math_expr_var",
2131 "variable_define : any_var_or_arr '=' selection_ID ':' ter_selection",
2132 "variable_define : any_var_or_arr '=' string_expr",
2133 "variable_define : any_var_or_arr '=' terrainid ':' mapchar_or_var",
2134 "variable_define : any_var_or_arr '=' monsterid ':' monster_or_var",
2135 "variable_define : any_var_or_arr '=' objectid ':' object_or_var",
2136 "variable_define : any_var_or_arr '=' coord_or_var",
2137 "variable_define : any_var_or_arr '=' region_or_var",
2138 "variable_define : any_var_or_arr '=' '{' integer_list '}'",
2139 "variable_define : any_var_or_arr '=' '{' encodecoord_list '}'",
2140 "variable_define : any_var_or_arr '=' '{' encoderegion_list '}'",
2141 "variable_define : any_var_or_arr '=' terrainid ':' '{' mapchar_list '}'",
2142 "variable_define : any_var_or_arr '=' monsterid ':' '{' encodemonster_list '}'",
2143 "variable_define : any_var_or_arr '=' objectid ':' '{' encodeobj_list '}'",
2144 "variable_define : any_var_or_arr '=' '{' string_list '}'",
2145 "encodeobj_list : encodeobj",
2146 "encodeobj_list : encodeobj_list ',' encodeobj",
2147 "encodemonster_list : encodemonster",
2148 "encodemonster_list : encodemonster_list ',' encodemonster",
2149 "mapchar_list : mapchar",
2150 "mapchar_list : mapchar_list ',' mapchar",
2151 "encoderegion_list : encoderegion",
2152 "encoderegion_list : encoderegion_list ',' encoderegion",
2153 "encodecoord_list : encodecoord",
2154 "encodecoord_list : encodecoord_list ',' encodecoord",
2155 "integer_list : math_expr_var",
2156 "integer_list : integer_list ',' math_expr_var",
2157 "string_list : string_expr",
2158 "string_list : string_list ',' string_expr",
2161 "function_define : FUNCTION_ID NQSTRING '(' $$1 func_params_list ')' $$2 stmt_block",
2162 "function_call : NQSTRING '(' func_call_params_list ')'",
2163 "exitstatement : EXIT_ID",
2165 "opt_percent : PERCENT",
2166 "comparestmt : PERCENT",
2167 "comparestmt : '[' math_expr_var COMPARE_TYPE math_expr_var ']'",
2168 "comparestmt : '[' math_expr_var ']'",
2171 "switchstatement : SWITCH_ID $$3 '[' integer_or_var ']' $$4 '{' switchcases '}'",
2173 "switchcases : switchcase switchcases",
2175 "switchcase : CASE_ID all_integers ':' $$5 levstatements",
2177 "switchcase : DEFAULT_ID ':' $$6 levstatements",
2178 "breakstatement : BREAK_ID",
2179 "for_to_span : '.' '.'",
2180 "for_to_span : TO_ID",
2181 "forstmt_start : FOR_ID any_var_or_unk '=' math_expr_var for_to_span math_expr_var",
2183 "forstatement : forstmt_start $$7 stmt_block",
2185 "loopstatement : LOOP_ID '[' integer_or_var ']' $$8 stmt_block",
2187 "chancestatement : comparestmt ':' $$9 levstatement",
2189 "ifstatement : IF_ID comparestmt $$10 if_ending",
2190 "if_ending : stmt_block",
2192 "if_ending : stmt_block $$11 ELSE_ID stmt_block",
2193 "message : MESSAGE_ID ':' string_expr",
2194 "random_corridors : RAND_CORRIDOR_ID",
2195 "random_corridors : RAND_CORRIDOR_ID ':' all_integers",
2196 "random_corridors : RAND_CORRIDOR_ID ':' RANDOM_TYPE",
2197 "corridor : CORRIDOR_ID ':' corr_spec ',' corr_spec",
2198 "corridor : CORRIDOR_ID ':' corr_spec ',' all_integers",
2199 "corr_spec : '(' INTEGER ',' DIRECTION ',' door_pos ')'",
2200 "room_begin : room_type opt_percent ',' light_state",
2202 "subroom_def : SUBROOM_ID ':' room_begin ',' subroom_pos ',' room_size optroomregionflags $$12 stmt_block",
2204 "room_def : ROOM_ID ':' room_begin ',' room_pos ',' room_align ',' room_size optroomregionflags $$13 stmt_block",
2206 "roomfill : ',' BOOLEAN",
2207 "room_pos : '(' INTEGER ',' INTEGER ')'",
2208 "room_pos : RANDOM_TYPE",
2209 "subroom_pos : '(' INTEGER ',' INTEGER ')'",
2210 "subroom_pos : RANDOM_TYPE",
2211 "room_align : '(' h_justif ',' v_justif ')'",
2212 "room_align : RANDOM_TYPE",
2213 "room_size : '(' INTEGER ',' INTEGER ')'",
2214 "room_size : RANDOM_TYPE",
2215 "door_detail : ROOMDOOR_ID ':' secret ',' door_state ',' door_wall ',' door_pos",
2216 "door_detail : DOOR_ID ':' door_state ',' ter_selection",
2218 "secret : RANDOM_TYPE",
2219 "door_wall : dir_list",
2220 "door_wall : RANDOM_TYPE",
2221 "dir_list : DIRECTION",
2222 "dir_list : DIRECTION '|' dir_list",
2223 "door_pos : INTEGER",
2224 "door_pos : RANDOM_TYPE",
2225 "map_definition : NOMAP_ID",
2226 "map_definition : GEOMETRY_ID ':' h_justif ',' v_justif roomfill MAP_ID",
2227 "map_definition : GEOMETRY_ID ':' coord_or_var roomfill MAP_ID",
2228 "h_justif : LEFT_OR_RIGHT",
2229 "h_justif : CENTER",
2230 "v_justif : TOP_OR_BOT",
2231 "v_justif : CENTER",
2232 "monster_detail : MONSTER_ID ':' monster_desc",
2234 "monster_detail : MONSTER_ID ':' monster_desc $$14 stmt_block",
2235 "monster_desc : monster_or_var ',' coord_or_var monster_infos",
2237 "monster_infos : monster_infos ',' monster_info",
2238 "monster_info : string_expr",
2239 "monster_info : MON_ATTITUDE",
2240 "monster_info : MON_ALERTNESS",
2241 "monster_info : alignment_prfx",
2242 "monster_info : MON_APPEARANCE string_expr",
2243 "monster_info : FEMALE_ID",
2244 "monster_info : INVIS_ID",
2245 "monster_info : CANCELLED_ID",
2246 "monster_info : REVIVED_ID",
2247 "monster_info : AVENGE_ID",
2248 "monster_info : FLEEING_ID ':' integer_or_var",
2249 "monster_info : BLINDED_ID ':' integer_or_var",
2250 "monster_info : PARALYZED_ID ':' integer_or_var",
2251 "monster_info : STUNNED_ID",
2252 "monster_info : CONFUSED_ID",
2253 "monster_info : SEENTRAPS_ID ':' seen_trap_mask",
2254 "seen_trap_mask : STRING",
2255 "seen_trap_mask : ALL_ID",
2256 "seen_trap_mask : STRING '|' seen_trap_mask",
2257 "object_detail : OBJECT_ID ':' object_desc",
2259 "object_detail : COBJECT_ID ':' object_desc $$15 stmt_block",
2260 "object_desc : object_or_var object_infos",
2262 "object_infos : object_infos ',' object_info",
2263 "object_info : CURSE_TYPE",
2264 "object_info : MONTYPE_ID ':' monster_or_var",
2265 "object_info : all_ints_push",
2266 "object_info : NAME_ID ':' string_expr",
2267 "object_info : QUANTITY_ID ':' integer_or_var",
2268 "object_info : BURIED_ID",
2269 "object_info : LIGHT_STATE",
2270 "object_info : ERODED_ID ':' integer_or_var",
2271 "object_info : ERODEPROOF_ID",
2272 "object_info : DOOR_STATE",
2273 "object_info : TRAPPED_STATE",
2274 "object_info : RECHARGED_ID ':' integer_or_var",
2275 "object_info : INVIS_ID",
2276 "object_info : GREASED_ID",
2277 "object_info : coord_or_var",
2278 "trap_detail : TRAP_ID ':' trap_name ',' coord_or_var",
2279 "drawbridge_detail : DRAWBRIDGE_ID ':' coord_or_var ',' DIRECTION ',' door_state",
2280 "mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION",
2281 "mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION ',' BOOLEAN opt_fillchar",
2282 "wallify_detail : WALLIFY_ID",
2283 "wallify_detail : WALLIFY_ID ':' ter_selection",
2284 "ladder_detail : LADDER_ID ':' coord_or_var ',' UP_OR_DOWN",
2285 "stair_detail : STAIR_ID ':' coord_or_var ',' UP_OR_DOWN",
2286 "stair_region : STAIR_ID ':' lev_region ',' lev_region ',' UP_OR_DOWN",
2287 "portal_region : PORTAL_ID ':' lev_region ',' lev_region ',' STRING",
2288 "teleprt_region : TELEPRT_ID ':' lev_region ',' lev_region teleprt_detail",
2289 "branch_region : BRANCH_ID ':' lev_region ',' lev_region",
2291 "teleprt_detail : ',' UP_OR_DOWN",
2292 "fountain_detail : FOUNTAIN_ID ':' ter_selection",
2293 "sink_detail : SINK_ID ':' ter_selection",
2294 "pool_detail : POOL_ID ':' ter_selection",
2295 "terrain_type : CHAR",
2296 "terrain_type : '(' CHAR ',' light_state ')'",
2297 "replace_terrain_detail : REPLACE_TERRAIN_ID ':' region_or_var ',' mapchar_or_var ',' mapchar_or_var ',' SPERCENT",
2298 "terrain_detail : TERRAIN_ID ':' ter_selection ',' mapchar_or_var",
2299 "diggable_detail : NON_DIGGABLE_ID ':' region_or_var",
2300 "passwall_detail : NON_PASSWALL_ID ':' region_or_var",
2302 "region_detail : REGION_ID ':' region_or_var ',' light_state ',' room_type optroomregionflags $$16 region_detail_end",
2303 "region_detail_end :",
2304 "region_detail_end : stmt_block",
2305 "altar_detail : ALTAR_ID ':' coord_or_var ',' alignment ',' altar_type",
2306 "grave_detail : GRAVE_ID ':' coord_or_var ',' string_expr",
2307 "grave_detail : GRAVE_ID ':' coord_or_var ',' RANDOM_TYPE",
2308 "grave_detail : GRAVE_ID ':' coord_or_var",
2309 "gold_detail : GOLD_ID ':' math_expr_var ',' coord_or_var",
2310 "engraving_detail : ENGRAVING_ID ':' coord_or_var ',' engraving_type ',' string_expr",
2311 "mineralize : MINERALIZE_ID ':' integer_or_var ',' integer_or_var ',' integer_or_var ',' integer_or_var",
2312 "mineralize : MINERALIZE_ID",
2313 "trap_name : STRING",
2314 "trap_name : RANDOM_TYPE",
2315 "room_type : STRING",
2316 "room_type : RANDOM_TYPE",
2317 "optroomregionflags :",
2318 "optroomregionflags : ',' roomregionflags",
2319 "roomregionflags : roomregionflag",
2320 "roomregionflags : roomregionflag ',' roomregionflags",
2321 "roomregionflag : FILLING",
2322 "roomregionflag : IRREGULAR",
2323 "roomregionflag : JOINED",
2324 "door_state : DOOR_STATE",
2325 "door_state : RANDOM_TYPE",
2326 "light_state : LIGHT_STATE",
2327 "light_state : RANDOM_TYPE",
2328 "alignment : ALIGNMENT",
2329 "alignment : a_register",
2330 "alignment : RANDOM_TYPE",
2331 "alignment_prfx : ALIGNMENT",
2332 "alignment_prfx : a_register",
2333 "alignment_prfx : A_REGISTER ':' RANDOM_TYPE",
2334 "altar_type : ALTAR_TYPE",
2335 "altar_type : RANDOM_TYPE",
2336 "a_register : A_REGISTER '[' INTEGER ']'",
2337 "string_or_var : STRING",
2338 "string_or_var : VARSTRING_STRING",
2339 "string_or_var : VARSTRING_STRING_ARRAY '[' math_expr_var ']'",
2340 "integer_or_var : math_expr_var",
2341 "coord_or_var : encodecoord",
2342 "coord_or_var : rndcoord_ID '(' ter_selection ')'",
2343 "coord_or_var : VARSTRING_COORD",
2344 "coord_or_var : VARSTRING_COORD_ARRAY '[' math_expr_var ']'",
2345 "encodecoord : '(' INTEGER ',' INTEGER ')'",
2346 "encodecoord : RANDOM_TYPE",
2347 "encodecoord : RANDOM_TYPE_BRACKET humidity_flags ']'",
2348 "humidity_flags : HUMIDITY_TYPE",
2349 "humidity_flags : HUMIDITY_TYPE ',' humidity_flags",
2350 "region_or_var : encoderegion",
2351 "region_or_var : VARSTRING_REGION",
2352 "region_or_var : VARSTRING_REGION_ARRAY '[' math_expr_var ']'",
2353 "encoderegion : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2354 "mapchar_or_var : mapchar",
2355 "mapchar_or_var : VARSTRING_MAPCHAR",
2356 "mapchar_or_var : VARSTRING_MAPCHAR_ARRAY '[' math_expr_var ']'",
2358 "mapchar : '(' CHAR ',' light_state ')'",
2359 "monster_or_var : encodemonster",
2360 "monster_or_var : VARSTRING_MONST",
2361 "monster_or_var : VARSTRING_MONST_ARRAY '[' math_expr_var ']'",
2362 "encodemonster : STRING",
2363 "encodemonster : CHAR",
2364 "encodemonster : '(' CHAR ',' STRING ')'",
2365 "encodemonster : RANDOM_TYPE",
2366 "object_or_var : encodeobj",
2367 "object_or_var : VARSTRING_OBJ",
2368 "object_or_var : VARSTRING_OBJ_ARRAY '[' math_expr_var ']'",
2369 "encodeobj : STRING",
2371 "encodeobj : '(' CHAR ',' STRING ')'",
2372 "encodeobj : RANDOM_TYPE",
2373 "string_expr : string_or_var",
2374 "string_expr : string_expr '.' string_or_var",
2375 "math_expr_var : INTEGER",
2376 "math_expr_var : dice",
2377 "math_expr_var : '(' MINUS_INTEGER ')'",
2378 "math_expr_var : VARSTRING_INT",
2379 "math_expr_var : VARSTRING_INT_ARRAY '[' math_expr_var ']'",
2380 "math_expr_var : math_expr_var '+' math_expr_var",
2381 "math_expr_var : math_expr_var '-' math_expr_var",
2382 "math_expr_var : math_expr_var '*' 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 ')'",
2386 "func_param_type : CFUNC_INT",
2387 "func_param_type : CFUNC_STR",
2388 "func_param_part : any_var_or_arr ':' func_param_type",
2389 "func_param_list : func_param_part",
2390 "func_param_list : func_param_list ',' func_param_part",
2391 "func_params_list :",
2392 "func_params_list : func_param_list",
2393 "func_call_param_part : math_expr_var",
2394 "func_call_param_part : string_expr",
2395 "func_call_param_list : func_call_param_part",
2396 "func_call_param_list : func_call_param_list ',' func_call_param_part",
2397 "func_call_params_list :",
2398 "func_call_params_list : func_call_param_list",
2399 "ter_selection_x : coord_or_var",
2400 "ter_selection_x : rect_ID region_or_var",
2401 "ter_selection_x : fillrect_ID region_or_var",
2402 "ter_selection_x : line_ID coord_or_var ',' coord_or_var",
2403 "ter_selection_x : randline_ID coord_or_var ',' coord_or_var ',' math_expr_var",
2404 "ter_selection_x : grow_ID '(' ter_selection ')'",
2405 "ter_selection_x : grow_ID '(' dir_list ',' ter_selection ')'",
2406 "ter_selection_x : filter_ID '(' SPERCENT ',' ter_selection ')'",
2407 "ter_selection_x : filter_ID '(' ter_selection ',' ter_selection ')'",
2408 "ter_selection_x : filter_ID '(' mapchar_or_var ',' ter_selection ')'",
2409 "ter_selection_x : flood_ID coord_or_var",
2410 "ter_selection_x : circle_ID '(' coord_or_var ',' math_expr_var ')'",
2411 "ter_selection_x : circle_ID '(' coord_or_var ',' math_expr_var ',' FILLING ')'",
2412 "ter_selection_x : ellipse_ID '(' coord_or_var ',' math_expr_var ',' math_expr_var ')'",
2413 "ter_selection_x : ellipse_ID '(' coord_or_var ',' math_expr_var ',' math_expr_var ',' FILLING ')'",
2414 "ter_selection_x : gradient_ID '(' GRADIENT_TYPE ',' '(' math_expr_var '-' math_expr_var opt_limited ')' ',' coord_or_var opt_coord_or_var ')'",
2415 "ter_selection_x : complement_ID ter_selection_x",
2416 "ter_selection_x : VARSTRING_SEL",
2417 "ter_selection_x : '(' ter_selection ')'",
2418 "ter_selection : ter_selection_x",
2419 "ter_selection : ter_selection_x '&' ter_selection",
2421 "all_integers : MINUS_INTEGER",
2422 "all_integers : PLUS_INTEGER",
2423 "all_integers : INTEGER",
2424 "all_ints_push : MINUS_INTEGER",
2425 "all_ints_push : PLUS_INTEGER",
2426 "all_ints_push : INTEGER",
2427 "all_ints_push : dice",
2428 "objectid : object_ID",
2429 "objectid : OBJECT_ID",
2430 "monsterid : monster_ID",
2431 "monsterid : MONSTER_ID",
2432 "terrainid : terrain_ID",
2433 "terrainid : TERRAIN_ID",
2434 "engraving_type : ENGRAVING_TYPE",
2435 "engraving_type : RANDOM_TYPE",
2436 "lev_region : region",
2437 "lev_region : LEV '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2438 "region : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2443 #define YYMAXDEPTH YYSTACKSIZE
2446 #define YYSTACKSIZE YYMAXDEPTH
2448 #define YYSTACKSIZE 500
2449 #define YYMAXDEPTH 500
2460 short yyss[YYSTACKSIZE];
2461 YYSTYPE yyvs[YYSTACKSIZE];
2462 #define yystacksize YYSTACKSIZE
2465 #define YYABORT goto yyabort
2466 #define YYREJECT goto yyabort
2467 #define YYACCEPT goto yyaccept
2468 #define YYERROR goto yyerrlab
2472 register int yym, yyn, yystate;
2475 extern char *getenv();
2477 if ((yys = getenv("YYDEBUG")) != 0)
2480 if (yyn >= '0' && yyn <= '9')
2481 yydebug = yyn - '0';
2491 *yyssp = yystate = 0;
2494 if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
2497 if ((yychar = yylex()) < 0) yychar = 0;
2502 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2503 if (!yys) yys = "illegal-symbol";
2504 printf("%sdebug: state %d, reading %d (%s)\n",
2505 YYPREFIX, yystate, yychar, yys);
2509 if ((yyn = yysindex[yystate]) != 0 && (yyn += yychar) >= 0 &&
2510 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
2514 printf("%sdebug: state %d, shifting to state %d\n",
2515 YYPREFIX, yystate, yytable[yyn]);
2517 if (yyssp >= yyss + yystacksize - 1)
2521 *++yyssp = yystate = yytable[yyn];
2524 if (yyerrflag > 0) --yyerrflag;
2527 if ((yyn = yyrindex[yystate]) != 0 && (yyn += yychar) >= 0 &&
2528 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
2533 if (yyerrflag) goto yyinrecovery;
2536 yyerror("syntax error");
2546 if ((yyn = yysindex[*yyssp]) != 0 && (yyn += YYERRCODE) >= 0 &&
2547 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
2551 printf("%sdebug: state %d, error recovery shifting\
2552 to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
2554 if (yyssp >= yyss + yystacksize - 1)
2558 *++yyssp = yystate = yytable[yyn];
2566 printf("%sdebug: error recovery discarding state %d\n",
2569 if (yyssp <= yyss) goto yyabort;
2577 if (yychar == 0) goto yyabort;
2582 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2583 if (!yys) yys = "illegal-symbol";
2584 printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
2585 YYPREFIX, yystate, yychar, yys);
2594 printf("%sdebug: state %d, reducing by rule %d (%s)\n",
2595 YYPREFIX, yystate, yyn, yyrule[yyn]);
2598 yyval = yyvsp[1-yym];
2603 if (fatal_error > 0) {
2604 (void) fprintf(stderr,
2605 "%s: %d errors detected for level \"%s\". No output created!\n",
2606 fname, fatal_error, yyvsp[-2].map);
2609 } else if (!got_errors) {
2610 if (!write_level_file(yyvsp[-2].map, splev)) {
2611 lc_error("Can't write output file for '%s'!", yyvsp[-2].map);
2615 Free(yyvsp[-2].map);
2618 vardef_free_all(variable_definitions);
2619 variable_definitions = NULL;
2624 start_level_def(&splev, yyvsp[0].map);
2625 yyval.map = yyvsp[0].map;
2630 start_level_def(&splev, yyvsp[-2].map);
2631 if (yyvsp[0].i == -1) {
2632 add_opvars(splev, "iiiiiiiio",
2633 VA_PASS9(LVLINIT_MAZEGRID,HWALL,0,0,
2634 0,0,0,0, SPO_INITLEVEL));
2636 long bg = what_map_char((char) yyvsp[0].i);
2637 add_opvars(splev, "iiiiiiiio",
2638 VA_PASS9(LVLINIT_SOLIDFILL, bg, 0,0,
2639 0,0,0,0, SPO_INITLEVEL));
2641 add_opvars(splev, "io",
2642 VA_PASS2(MAZELEVEL, SPO_LEVEL_FLAGS));
2643 max_x_map = COLNO-1;
2645 yyval.map = yyvsp[-2].map;
2655 yyval.i = what_map_char((char) yyvsp[0].i);
2660 long filling = yyvsp[0].terr.ter;
2661 if (filling == INVALID_TYPE || filling >= MAX_TYPE)
2662 lc_error("INIT_MAP: Invalid fill char type.");
2663 add_opvars(splev, "iiiiiiiio",
2664 LVLINIT_SOLIDFILL,filling,0,(long)yyvsp[0].terr.lit, 0,0,0,0, SPO_INITLEVEL);
2665 max_x_map = COLNO-1;
2671 long filling = what_map_char((char) yyvsp[0].i);
2672 if (filling == INVALID_TYPE || filling >= MAX_TYPE)
2673 lc_error("INIT_MAP: Invalid fill char type.");
2674 add_opvars(splev, "iiiiiiiio",
2675 VA_PASS9(LVLINIT_MAZEGRID,filling,0,0,
2676 0,0,0,0, SPO_INITLEVEL));
2677 max_x_map = COLNO-1;
2683 add_opvars(splev, "iiiiiiiio",
2684 VA_PASS9(LVLINIT_ROGUE,0,0,0,
2685 0,0,0,0, SPO_INITLEVEL));
2690 long fg = what_map_char((char) yyvsp[-11].i);
2691 long bg = what_map_char((char) yyvsp[-9].i);
2692 long smoothed = yyvsp[-7].i;
2693 long joined = yyvsp[-5].i;
2694 long lit = yyvsp[-3].i;
2695 long walled = yyvsp[-1].i;
2696 long filling = yyvsp[0].i;
2697 if (fg == INVALID_TYPE || fg >= MAX_TYPE)
2698 lc_error("INIT_MAP: Invalid foreground type.");
2699 if (bg == INVALID_TYPE || bg >= MAX_TYPE)
2700 lc_error("INIT_MAP: Invalid background type.");
2701 if (joined && fg != CORR && fg != ROOM)
2702 lc_error("INIT_MAP: Invalid foreground type for joined map.");
2704 if (filling == INVALID_TYPE)
2705 lc_error("INIT_MAP: Invalid fill char type.");
2707 add_opvars(splev, "iiiiiiiio",
2708 VA_PASS9(LVLINIT_MINES,filling,walled,lit,
2709 joined,smoothed,bg,fg,
2711 max_x_map = COLNO-1;
2722 yyval.i = yyvsp[0].i;
2727 add_opvars(splev, "o", VA_PASS1(SPO_COPY));
2743 yyval.i = what_map_char((char) yyvsp[0].i);
2748 add_opvars(splev, "io", VA_PASS2(0, SPO_LEVEL_FLAGS));
2753 add_opvars(splev, "io", VA_PASS2(yyvsp[0].i, SPO_LEVEL_FLAGS));
2758 yyval.i = (yyvsp[-2].i | yyvsp[0].i);
2763 yyval.i = yyvsp[0].i;
2773 yyval.i = 1 + yyvsp[0].i;
2778 yyval.i = yyvsp[-1].i;
2783 struct lc_vardefs *vd;
2784 if ((vd = vardef_defined(variable_definitions, yyvsp[0].map, 1))) {
2785 if (!(vd->var_type & SPOVAR_ARRAY))
2786 lc_error("Trying to shuffle non-array variable '%s'", yyvsp[0].map);
2787 } else lc_error("Trying to shuffle undefined variable '%s'", yyvsp[0].map);
2788 add_opvars(splev, "so", VA_PASS2(yyvsp[0].map, SPO_SHUFFLE_ARRAY));
2794 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_INT);
2795 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2796 Free(yyvsp[-2].map);
2801 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_SEL);
2802 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2803 Free(yyvsp[-4].map);
2808 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_STRING);
2809 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2810 Free(yyvsp[-2].map);
2815 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_MAPCHAR);
2816 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2817 Free(yyvsp[-4].map);
2822 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_MONST);
2823 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2824 Free(yyvsp[-4].map);
2829 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_OBJ);
2830 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2831 Free(yyvsp[-4].map);
2836 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_COORD);
2837 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2838 Free(yyvsp[-2].map);
2843 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_REGION);
2844 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2845 Free(yyvsp[-2].map);
2850 long n_items = yyvsp[-1].i;
2851 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_INT|SPOVAR_ARRAY);
2852 add_opvars(splev, "iso",
2853 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2854 Free(yyvsp[-4].map);
2859 long n_items = yyvsp[-1].i;
2860 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_COORD|SPOVAR_ARRAY);
2861 add_opvars(splev, "iso",
2862 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2863 Free(yyvsp[-4].map);
2868 long n_items = yyvsp[-1].i;
2869 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_REGION|SPOVAR_ARRAY);
2870 add_opvars(splev, "iso",
2871 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2872 Free(yyvsp[-4].map);
2877 long n_items = yyvsp[-1].i;
2878 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_MAPCHAR|SPOVAR_ARRAY);
2879 add_opvars(splev, "iso",
2880 VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2881 Free(yyvsp[-6].map);
2886 long n_items = yyvsp[-1].i;
2887 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_MONST|SPOVAR_ARRAY);
2888 add_opvars(splev, "iso",
2889 VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2890 Free(yyvsp[-6].map);
2895 long n_items = yyvsp[-1].i;
2896 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_OBJ|SPOVAR_ARRAY);
2897 add_opvars(splev, "iso",
2898 VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2899 Free(yyvsp[-6].map);
2904 long n_items = yyvsp[-1].i;
2905 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_STRING|SPOVAR_ARRAY);
2906 add_opvars(splev, "iso",
2907 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2908 Free(yyvsp[-4].map);
2913 add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
2919 add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
2920 yyval.i = 1 + yyvsp[-2].i;
2925 add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
2931 add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
2932 yyval.i = 1 + yyvsp[-2].i;
2937 add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
2943 add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
2944 yyval.i = 1 + yyvsp[-2].i;
2954 yyval.i = 1 + yyvsp[-2].i;
2959 add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
2965 add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
2966 yyval.i = 1 + yyvsp[-2].i;
2976 yyval.i = 1 + yyvsp[-2].i;
2986 yyval.i = 1 + yyvsp[-2].i;
2991 struct lc_funcdefs *funcdef;
2993 if (in_function_definition)
2994 lc_error("Recursively defined functions not allowed (function %s).", yyvsp[-1].map);
2996 in_function_definition++;
2998 if (funcdef_defined(function_definitions, yyvsp[-1].map, 1))
2999 lc_error("Function '%s' already defined once.", yyvsp[-1].map);
3001 funcdef = funcdef_new(-1, yyvsp[-1].map);
3002 funcdef->next = function_definitions;
3003 function_definitions = funcdef;
3004 function_splev_backup = splev;
3005 splev = &(funcdef->code);
3006 Free(yyvsp[-1].map);
3007 curr_function = funcdef;
3008 function_tmp_var_defs = variable_definitions;
3009 variable_definitions = NULL;
3019 add_opvars(splev, "io", VA_PASS2(0, SPO_RETURN));
3020 splev = function_splev_backup;
3021 in_function_definition--;
3022 curr_function = NULL;
3023 vardef_free_all(variable_definitions);
3024 variable_definitions = function_tmp_var_defs;
3029 struct lc_funcdefs *tmpfunc;
3030 tmpfunc = funcdef_defined(function_definitions, yyvsp[-3].map, 1);
3033 long nparams = strlen( yyvsp[-1].map );
3034 char *fparamstr = funcdef_paramtypes(tmpfunc);
3035 if (strcmp(yyvsp[-1].map, fparamstr)) {
3036 char *tmps = strdup(decode_parm_str(fparamstr));
3037 lc_error("Function '%s' requires params '%s', got '%s' instead.", yyvsp[-3].map, tmps, decode_parm_str(yyvsp[-1].map));
3041 Free(yyvsp[-1].map);
3042 if (!(tmpfunc->n_called)) {
3043 /* we haven't called the function yet, so insert it in the code */
3044 struct opvar *jmp = New(struct opvar);
3045 set_opvar_int(jmp, splev->n_opcodes+1);
3046 add_opcode(splev, SPO_PUSH, jmp);
3047 add_opcode(splev, SPO_JMP, NULL); /* we must jump past it first, then CALL it, due to RETURN. */
3049 tmpfunc->addr = splev->n_opcodes;
3051 { /* init function parameter variables */
3052 struct lc_funcdefs_parm *tfp = tmpfunc->params;
3054 add_opvars(splev, "iso",
3055 VA_PASS3(0, tfp->name,
3061 splev_add_from(splev, &(tmpfunc->code));
3062 set_opvar_int(jmp, splev->n_opcodes - jmp->vardata.l);
3064 l = tmpfunc->addr - splev->n_opcodes - 2;
3065 add_opvars(splev, "iio",
3066 VA_PASS3(nparams, l, SPO_CALL));
3067 tmpfunc->n_called++;
3069 lc_error("Function '%s' not defined.", yyvsp[-3].map);
3071 Free(yyvsp[-3].map);
3076 add_opcode(splev, SPO_EXIT, NULL);
3086 yyval.i = yyvsp[0].i;
3091 /* val > rn2(100) */
3092 add_opvars(splev, "iio",
3093 VA_PASS3((long)yyvsp[0].i, 100, SPO_RN2));
3099 yyval.i = yyvsp[-2].i;
3104 /* boolean, explicit foo != 0 */
3105 add_opvars(splev, "i", VA_PASS1(0));
3111 is_inconstant_number = 0;
3116 struct opvar *chkjmp;
3117 if (in_switch_statement > 0)
3118 lc_error("Cannot nest switch-statements.");
3120 in_switch_statement++;
3122 n_switch_case_list = 0;
3123 switch_default_case = NULL;
3125 if (!is_inconstant_number)
3126 add_opvars(splev, "o", VA_PASS1(SPO_RN2));
3127 is_inconstant_number = 0;
3129 chkjmp = New(struct opvar);
3130 set_opvar_int(chkjmp, splev->n_opcodes+1);
3131 switch_check_jump = chkjmp;
3132 add_opcode(splev, SPO_PUSH, chkjmp);
3133 add_opcode(splev, SPO_JMP, NULL);
3139 struct opvar *endjump = New(struct opvar);
3142 set_opvar_int(endjump, splev->n_opcodes+1);
3144 add_opcode(splev, SPO_PUSH, endjump);
3145 add_opcode(splev, SPO_JMP, NULL);
3147 set_opvar_int(switch_check_jump,
3148 splev->n_opcodes - switch_check_jump->vardata.l);
3150 for (i = 0; i < n_switch_case_list; i++) {
3151 add_opvars(splev, "oio",
3153 switch_case_value[i], SPO_CMP));
3154 set_opvar_int(switch_case_list[i],
3155 switch_case_list[i]->vardata.l - splev->n_opcodes-1);
3156 add_opcode(splev, SPO_PUSH, switch_case_list[i]);
3157 add_opcode(splev, SPO_JE, NULL);
3160 if (switch_default_case) {
3161 set_opvar_int(switch_default_case,
3162 switch_default_case->vardata.l - splev->n_opcodes-1);
3163 add_opcode(splev, SPO_PUSH, switch_default_case);
3164 add_opcode(splev, SPO_JMP, NULL);
3167 set_opvar_int(endjump, splev->n_opcodes - endjump->vardata.l);
3169 break_stmt_end(splev);
3171 add_opcode(splev, SPO_POP, NULL); /* get rid of the value in stack */
3172 in_switch_statement--;
3179 if (n_switch_case_list < MAX_SWITCH_CASES) {
3180 struct opvar *tmppush = New(struct opvar);
3181 set_opvar_int(tmppush, splev->n_opcodes);
3182 switch_case_value[n_switch_case_list] = yyvsp[-1].i;
3183 switch_case_list[n_switch_case_list++] = tmppush;
3184 } else lc_error("Too many cases in a switch.");
3193 struct opvar *tmppush = New(struct opvar);
3195 if (switch_default_case)
3196 lc_error("Switch default case already used.");
3198 set_opvar_int(tmppush, splev->n_opcodes);
3199 switch_default_case = tmppush;
3208 if (!allow_break_statements)
3209 lc_error("Cannot use BREAK outside a statement block.");
3211 break_stmt_new(splev, splev->n_opcodes);
3217 char buf[256], buf2[256];
3219 if (n_forloops >= MAX_NESTED_IFS) {
3220 lc_error("FOR: Too deeply nested loops.");
3221 n_forloops = MAX_NESTED_IFS - 1;
3224 /* first, define a variable for the for-loop end value */
3225 snprintf(buf, 255, "%s end", yyvsp[-4].map);
3226 /* the value of which is already in stack (the 2nd math_expr) */
3227 add_opvars(splev, "iso", VA_PASS3(0, buf, SPO_VAR_INIT));
3229 variable_definitions = add_vardef_type(variable_definitions,
3230 yyvsp[-4].map, SPOVAR_INT);
3231 /* define the for-loop variable. value is in stack (1st math_expr) */
3232 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
3234 /* calculate value for the loop "step" variable */
3235 snprintf(buf2, 255, "%s step", yyvsp[-4].map);
3237 add_opvars(splev, "vvo",
3238 VA_PASS3(buf, yyvsp[-4].map, SPO_MATH_SUB));
3240 add_opvars(splev, "o", VA_PASS1(SPO_MATH_SIGN));
3241 /* save the sign into the step var */
3242 add_opvars(splev, "iso",
3243 VA_PASS3(0, buf2, SPO_VAR_INIT));
3245 forloop_list[n_forloops].varname = strdup(yyvsp[-4].map);
3246 forloop_list[n_forloops].jmp_point = splev->n_opcodes;
3249 Free(yyvsp[-4].map);
3260 char buf[256], buf2[256];
3262 snprintf(buf, 255, "%s step", forloop_list[n_forloops].varname);
3263 snprintf(buf2, 255, "%s end", forloop_list[n_forloops].varname);
3264 /* compare for-loop var to end value */
3265 add_opvars(splev, "vvo",
3266 VA_PASS3(forloop_list[n_forloops].varname,
3269 add_opvars(splev, "vvo",
3270 VA_PASS3(buf, forloop_list[n_forloops].varname,
3272 /* for-loop var = (for-loop var + step) */
3273 add_opvars(splev, "iso",
3274 VA_PASS3(0, forloop_list[n_forloops].varname,
3276 /* jump back if compared values were not equal */
3277 add_opvars(splev, "io",
3279 forloop_list[n_forloops].jmp_point - splev->n_opcodes - 1,
3281 Free(forloop_list[n_forloops].varname);
3282 break_stmt_end(splev);
3287 struct opvar *tmppush = New(struct opvar);
3289 if (n_if_list >= MAX_NESTED_IFS) {
3290 lc_error("LOOP: Too deeply nested conditionals.");
3291 n_if_list = MAX_NESTED_IFS - 1;
3293 set_opvar_int(tmppush, splev->n_opcodes);
3294 if_list[n_if_list++] = tmppush;
3296 add_opvars(splev, "o", VA_PASS1(SPO_DEC));
3302 struct opvar *tmppush;
3304 add_opvars(splev, "oio", VA_PASS3(SPO_COPY, 0, SPO_CMP));
3306 tmppush = (struct opvar *) if_list[--n_if_list];
3307 set_opvar_int(tmppush, tmppush->vardata.l - splev->n_opcodes-1);
3308 add_opcode(splev, SPO_PUSH, tmppush);
3309 add_opcode(splev, SPO_JG, NULL);
3310 add_opcode(splev, SPO_POP, NULL); /* get rid of the count value in stack */
3311 break_stmt_end(splev);
3316 struct opvar *tmppush2 = New(struct opvar);
3318 if (n_if_list >= MAX_NESTED_IFS) {
3319 lc_error("IF: Too deeply nested conditionals.");
3320 n_if_list = MAX_NESTED_IFS - 1;
3323 add_opcode(splev, SPO_CMP, NULL);
3325 set_opvar_int(tmppush2, splev->n_opcodes+1);
3327 if_list[n_if_list++] = tmppush2;
3329 add_opcode(splev, SPO_PUSH, tmppush2);
3331 add_opcode(splev, reverse_jmp_opcode( yyvsp[-1].i ), NULL);
3337 if (n_if_list > 0) {
3338 struct opvar *tmppush;
3339 tmppush = (struct opvar *) if_list[--n_if_list];
3340 set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3341 } else lc_error("IF: Huh?! No start address?");
3346 struct opvar *tmppush2 = New(struct opvar);
3348 if (n_if_list >= MAX_NESTED_IFS) {
3349 lc_error("IF: Too deeply nested conditionals.");
3350 n_if_list = MAX_NESTED_IFS - 1;
3353 add_opcode(splev, SPO_CMP, NULL);
3355 set_opvar_int(tmppush2, splev->n_opcodes+1);
3357 if_list[n_if_list++] = tmppush2;
3359 add_opcode(splev, SPO_PUSH, tmppush2);
3361 add_opcode(splev, reverse_jmp_opcode( yyvsp[0].i ), NULL);
3372 if (n_if_list > 0) {
3373 struct opvar *tmppush;
3374 tmppush = (struct opvar *) if_list[--n_if_list];
3375 set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3376 } else lc_error("IF: Huh?! No start address?");
3381 if (n_if_list > 0) {
3382 struct opvar *tmppush = New(struct opvar);
3383 struct opvar *tmppush2;
3385 set_opvar_int(tmppush, splev->n_opcodes+1);
3386 add_opcode(splev, SPO_PUSH, tmppush);
3388 add_opcode(splev, SPO_JMP, NULL);
3390 tmppush2 = (struct opvar *) if_list[--n_if_list];
3392 set_opvar_int(tmppush2, splev->n_opcodes - tmppush2->vardata.l);
3393 if_list[n_if_list++] = tmppush;
3394 } else lc_error("IF: Huh?! No else-part address?");
3399 if (n_if_list > 0) {
3400 struct opvar *tmppush;
3401 tmppush = (struct opvar *) if_list[--n_if_list];
3402 set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3403 } else lc_error("IF: Huh?! No end address?");
3408 add_opvars(splev, "o", VA_PASS1(SPO_MESSAGE));
3413 add_opvars(splev, "iiiiiio",
3414 VA_PASS7(-1, 0, -1, -1, -1, -1, SPO_CORRIDOR));
3419 add_opvars(splev, "iiiiiio",
3420 VA_PASS7(-1, yyvsp[0].i, -1, -1, -1, -1, SPO_CORRIDOR));
3425 add_opvars(splev, "iiiiiio",
3426 VA_PASS7(-1, -1, -1, -1, -1, -1, SPO_CORRIDOR));
3431 add_opvars(splev, "iiiiiio",
3432 VA_PASS7(yyvsp[-2].corpos.room, yyvsp[-2].corpos.door, yyvsp[-2].corpos.wall,
3433 yyvsp[0].corpos.room, yyvsp[0].corpos.door, yyvsp[0].corpos.wall,
3439 add_opvars(splev, "iiiiiio",
3440 VA_PASS7(yyvsp[-2].corpos.room, yyvsp[-2].corpos.door, yyvsp[-2].corpos.wall,
3441 -1, -1, (long)yyvsp[0].i,
3447 yyval.corpos.room = yyvsp[-5].i;
3448 yyval.corpos.wall = yyvsp[-3].i;
3449 yyval.corpos.door = yyvsp[-1].i;
3454 if ((yyvsp[-2].i < 100) && (yyvsp[-3].i == OROOM))
3455 lc_error("Only typed rooms can have a chance.");
3457 add_opvars(splev, "iii",
3458 VA_PASS3((long)yyvsp[-3].i, (long)yyvsp[-2].i, (long)yyvsp[0].i));
3464 long rflags = yyvsp[0].i;
3466 if (rflags == -1) rflags = (1 << 0);
3467 add_opvars(splev, "iiiiiiio",
3468 VA_PASS8(rflags, ERR, ERR,
3469 yyvsp[-3].crd.x, yyvsp[-3].crd.y, yyvsp[-1].sze.width, yyvsp[-1].sze.height,
3476 break_stmt_end(splev);
3477 add_opcode(splev, SPO_ENDROOM, NULL);
3482 long rflags = yyvsp[-2].i;
3484 if (rflags == -1) rflags = (1 << 0);
3485 add_opvars(splev, "iiiiiiio",
3487 yyvsp[-3].crd.x, yyvsp[-3].crd.y, yyvsp[-5].crd.x, yyvsp[-5].crd.y,
3488 yyvsp[-1].sze.width, yyvsp[-1].sze.height, SPO_ROOM));
3494 break_stmt_end(splev);
3495 add_opcode(splev, SPO_ENDROOM, NULL);
3505 yyval.i = yyvsp[0].i;
3510 if ( yyvsp[-3].i < 1 || yyvsp[-3].i > 5 ||
3511 yyvsp[-1].i < 1 || yyvsp[-1].i > 5 ) {
3512 lc_error("Room positions should be between 1-5: (%li,%li)!", yyvsp[-3].i, yyvsp[-1].i);
3514 yyval.crd.x = yyvsp[-3].i;
3515 yyval.crd.y = yyvsp[-1].i;
3521 yyval.crd.x = yyval.crd.y = ERR;
3526 if ( yyvsp[-3].i < 0 || yyvsp[-1].i < 0) {
3527 lc_error("Invalid subroom position (%li,%li)!", yyvsp[-3].i, yyvsp[-1].i);
3529 yyval.crd.x = yyvsp[-3].i;
3530 yyval.crd.y = yyvsp[-1].i;
3536 yyval.crd.x = yyval.crd.y = ERR;
3541 yyval.crd.x = yyvsp[-3].i;
3542 yyval.crd.y = yyvsp[-1].i;
3547 yyval.crd.x = yyval.crd.y = ERR;
3552 yyval.sze.width = yyvsp[-3].i;
3553 yyval.sze.height = yyvsp[-1].i;
3558 yyval.sze.height = yyval.sze.width = ERR;
3563 /* ERR means random here */
3564 if (yyvsp[-2].i == ERR && yyvsp[0].i != ERR) {
3565 lc_error("If the door wall is random, so must be its pos!");
3567 add_opvars(splev, "iiiio",
3568 VA_PASS5((long)yyvsp[0].i, (long)yyvsp[-4].i, (long)yyvsp[-6].i,
3569 (long)yyvsp[-2].i, SPO_ROOM_DOOR));
3575 add_opvars(splev, "io", VA_PASS2((long)yyvsp[-2].i, SPO_DOOR));
3580 yyval.i = yyvsp[0].i;
3585 yyval.i = (yyvsp[-2].i | yyvsp[0].i);
3590 add_opvars(splev, "ciisiio",
3591 VA_PASS7(0, 0, 1, (char *)0, 0, 0, SPO_MAP));
3592 max_x_map = COLNO-1;
3598 add_opvars(splev, "cii",
3599 VA_PASS3(SP_COORD_PACK((yyvsp[-4].i),(yyvsp[-2].i)),
3600 1, (long)yyvsp[-1].i));
3601 scan_map(yyvsp[0].map, splev);
3607 add_opvars(splev, "ii", VA_PASS2(2, (long)yyvsp[-1].i));
3608 scan_map(yyvsp[0].map, splev);
3614 add_opvars(splev, "io", VA_PASS2(0, SPO_MONSTER));
3619 add_opvars(splev, "io", VA_PASS2(1, SPO_MONSTER));
3626 break_stmt_end(splev);
3628 add_opvars(splev, "o", VA_PASS1(SPO_END_MONINVENT));
3638 struct opvar *stopit = New(struct opvar);
3639 set_opvar_int(stopit, SP_M_V_END);
3640 add_opcode(splev, SPO_PUSH, stopit);
3646 if (( yyvsp[-2].i & yyvsp[0].i ))
3647 lc_error("MONSTER extra info defined twice.");
3648 yyval.i = ( yyvsp[-2].i | yyvsp[0].i );
3653 add_opvars(splev, "i", VA_PASS1(SP_M_V_NAME));
3659 add_opvars(splev, "ii",
3660 VA_PASS2((long)yyvsp[0].i, SP_M_V_PEACEFUL));
3666 add_opvars(splev, "ii",
3667 VA_PASS2((long)yyvsp[0].i, SP_M_V_ASLEEP));
3673 add_opvars(splev, "ii",
3674 VA_PASS2((long)yyvsp[0].i, SP_M_V_ALIGN));
3680 add_opvars(splev, "ii",
3681 VA_PASS2((long)yyvsp[-1].i, SP_M_V_APPEAR));
3687 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_FEMALE));
3693 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_INVIS));
3699 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_CANCELLED));
3705 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_REVIVED));
3711 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_AVENGE));
3717 add_opvars(splev, "i", VA_PASS1(SP_M_V_FLEEING));
3723 add_opvars(splev, "i", VA_PASS1(SP_M_V_BLINDED));
3729 add_opvars(splev, "i", VA_PASS1(SP_M_V_PARALYZED));
3735 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_STUNNED));
3741 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_CONFUSED));
3747 add_opvars(splev, "ii",
3748 VA_PASS2((long)yyvsp[0].i, SP_M_V_SEENTRAPS));
3754 int token = get_trap_type(yyvsp[0].map);
3755 if (token == ERR || token == 0)
3756 lc_error("Unknown trap type '%s'!", yyvsp[0].map);
3758 yyval.i = (1L << (token - 1));
3763 yyval.i = (long) ~0;
3768 int token = get_trap_type(yyvsp[-2].map);
3769 if (token == ERR || token == 0)
3770 lc_error("Unknown trap type '%s'!", yyvsp[-2].map);
3772 if ((1L << (token - 1)) & yyvsp[0].i)
3773 lc_error("Monster seen_traps, trap '%s' listed twice.", yyvsp[-2].map);
3774 Free(yyvsp[-2].map);
3775 yyval.i = ((1L << (token - 1)) | yyvsp[0].i);
3781 if (in_container_obj) cnt |= SP_OBJ_CONTENT;
3782 add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
3787 long cnt = SP_OBJ_CONTAINER;
3788 if (in_container_obj) cnt |= SP_OBJ_CONTENT;
3789 add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
3796 break_stmt_end(splev);
3798 add_opcode(splev, SPO_POP_CONTAINER, NULL);
3803 if (( yyvsp[0].i & 0x4000) && in_container_obj)
3804 lc_error("Object cannot have a coord when contained.");
3805 else if (!( yyvsp[0].i & 0x4000) && !in_container_obj)
3806 lc_error("Object needs a coord when not contained.");
3811 struct opvar *stopit = New(struct opvar);
3812 set_opvar_int(stopit, SP_O_V_END);
3813 add_opcode(splev, SPO_PUSH, stopit);
3819 if (( yyvsp[-2].i & yyvsp[0].i ))
3820 lc_error("OBJECT extra info '%s' defined twice.", curr_token);
3821 yyval.i = ( yyvsp[-2].i | yyvsp[0].i );
3826 add_opvars(splev, "ii",
3827 VA_PASS2((long)yyvsp[0].i, SP_O_V_CURSE));
3833 add_opvars(splev, "i", VA_PASS1(SP_O_V_CORPSENM));
3839 add_opvars(splev, "i", VA_PASS1(SP_O_V_SPE));
3845 add_opvars(splev, "i", VA_PASS1(SP_O_V_NAME));
3851 add_opvars(splev, "i", VA_PASS1(SP_O_V_QUAN));
3857 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_BURIED));
3863 add_opvars(splev, "ii", VA_PASS2((long)yyvsp[0].i, SP_O_V_LIT));
3869 add_opvars(splev, "i", VA_PASS1(SP_O_V_ERODED));
3875 add_opvars(splev, "ii", VA_PASS2(-1, SP_O_V_ERODED));
3881 if (yyvsp[0].i == D_LOCKED) {
3882 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_LOCKED));
3884 } else if (yyvsp[0].i == D_BROKEN) {
3885 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_BROKEN));
3888 lc_error("DOOR state can only be locked or broken.");
3893 add_opvars(splev, "ii", VA_PASS2(yyvsp[0].i, SP_O_V_TRAPPED));
3899 add_opvars(splev, "i", VA_PASS1(SP_O_V_RECHARGED));
3905 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_INVIS));
3911 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_GREASED));
3917 add_opvars(splev, "i", VA_PASS1(SP_O_V_COORD));
3923 add_opvars(splev, "io", VA_PASS2((long)yyvsp[-2].i, SPO_TRAP));
3928 long dir, state = 0;
3930 /* convert dir from a DIRECTION to a DB_DIR */
3933 case W_NORTH: dir = DB_NORTH; break;
3934 case W_SOUTH: dir = DB_SOUTH; break;
3935 case W_EAST: dir = DB_EAST; break;
3936 case W_WEST: dir = DB_WEST; break;
3938 lc_error("Invalid drawbridge direction.");
3942 if ( yyvsp[0].i == D_ISOPEN )
3944 else if ( yyvsp[0].i == D_CLOSED )
3946 else if ( yyvsp[0].i == -1 )
3949 lc_error("A drawbridge can only be open, closed or random!");
3950 add_opvars(splev, "iio",
3951 VA_PASS3(state, dir, SPO_DRAWBRIDGE));
3956 add_opvars(splev, "iiio",
3957 VA_PASS4((long)yyvsp[0].i, 1, 0, SPO_MAZEWALK));
3962 add_opvars(splev, "iiio",
3963 VA_PASS4((long)yyvsp[-3].i, (long)yyvsp[-1].i,
3964 (long)yyvsp[0].i, SPO_MAZEWALK));
3969 add_opvars(splev, "rio",
3970 VA_PASS3(SP_REGION_PACK(-1,-1,-1,-1),
3976 add_opvars(splev, "io", VA_PASS2(1, SPO_WALLIFY));
3981 add_opvars(splev, "io",
3982 VA_PASS2((long)yyvsp[0].i, SPO_LADDER));
3987 add_opvars(splev, "io",
3988 VA_PASS2((long)yyvsp[0].i, SPO_STAIR));
3993 add_opvars(splev, "iiiii iiiii iiso",
3994 VA_PASS14(yyvsp[-4].lregn.x1, yyvsp[-4].lregn.y1, yyvsp[-4].lregn.x2, yyvsp[-4].lregn.y2, yyvsp[-4].lregn.area,
3995 yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
3996 (long)((yyvsp[0].i) ? LR_UPSTAIR : LR_DOWNSTAIR),
3997 0, (char *)0, SPO_LEVREGION));
4002 add_opvars(splev, "iiiii iiiii iiso",
4003 VA_PASS14(yyvsp[-4].lregn.x1, yyvsp[-4].lregn.y1, yyvsp[-4].lregn.x2, yyvsp[-4].lregn.y2, yyvsp[-4].lregn.area,
4004 yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4005 LR_PORTAL, 0, yyvsp[0].map, SPO_LEVREGION));
4012 switch(yyvsp[0].i) {
4013 case -1: rtyp = LR_TELE; break;
4014 case 0: rtyp = LR_DOWNTELE; break;
4015 case 1: rtyp = LR_UPTELE; break;
4017 add_opvars(splev, "iiiii iiiii iiso",
4018 VA_PASS14(yyvsp[-3].lregn.x1, yyvsp[-3].lregn.y1, yyvsp[-3].lregn.x2, yyvsp[-3].lregn.y2, yyvsp[-3].lregn.area,
4019 yyvsp[-1].lregn.x1, yyvsp[-1].lregn.y1, yyvsp[-1].lregn.x2, yyvsp[-1].lregn.y2, yyvsp[-1].lregn.area,
4020 rtyp, 0, (char *)0, SPO_LEVREGION));
4025 add_opvars(splev, "iiiii iiiii iiso",
4026 VA_PASS14(yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4027 yyvsp[0].lregn.x1, yyvsp[0].lregn.y1, yyvsp[0].lregn.x2, yyvsp[0].lregn.y2, yyvsp[0].lregn.area,
4029 (char *)0, SPO_LEVREGION));
4039 yyval.i = yyvsp[0].i;
4044 add_opvars(splev, "o", VA_PASS1(SPO_FOUNTAIN));
4049 add_opvars(splev, "o", VA_PASS1(SPO_SINK));
4054 add_opvars(splev, "o", VA_PASS1(SPO_POOL));
4059 yyval.terr.lit = -2;
4060 yyval.terr.ter = what_map_char((char) yyvsp[0].i);
4065 yyval.terr.lit = yyvsp[-1].i;
4066 yyval.terr.ter = what_map_char((char) yyvsp[-3].i);
4071 add_opvars(splev, "io",
4072 VA_PASS2(yyvsp[0].i, SPO_REPLACETERRAIN));
4077 add_opvars(splev, "o", VA_PASS1(SPO_TERRAIN));
4082 add_opvars(splev, "o", VA_PASS1(SPO_NON_DIGGABLE));
4087 add_opvars(splev, "o", VA_PASS1(SPO_NON_PASSWALL));
4093 long rt = yyvsp[-1].i;
4094 long rflags = yyvsp[0].i;
4096 if (rflags == -1) rflags = (1 << 0);
4097 if (!(rflags & 1)) rt += MAXRTYPE+1;
4098 irr = ((rflags & 2) != 0);
4099 add_opvars(splev, "iiio",
4100 VA_PASS4((long)yyvsp[-3].i, rt, rflags, SPO_REGION));
4101 yyval.i = (irr || (rflags & 1) || rt != OROOM);
4107 break_stmt_end(splev);
4108 if ( yyvsp[-1].i ) {
4109 add_opcode(splev, SPO_ENDROOM, NULL);
4110 } else if ( yyvsp[0].i )
4111 lc_error("Cannot use lev statements in non-permanent REGION");
4121 yyval.i = yyvsp[0].i;
4126 add_opvars(splev, "iio",
4127 VA_PASS3((long)yyvsp[0].i, (long)yyvsp[-2].i, SPO_ALTAR));
4132 add_opvars(splev, "io", VA_PASS2(2, SPO_GRAVE));
4137 add_opvars(splev, "sio",
4138 VA_PASS3((char *)0, 1, SPO_GRAVE));
4143 add_opvars(splev, "sio",
4144 VA_PASS3((char *)0, 0, SPO_GRAVE));
4149 add_opvars(splev, "o", VA_PASS1(SPO_GOLD));
4154 add_opvars(splev, "io",
4155 VA_PASS2((long)yyvsp[-2].i, SPO_ENGRAVING));
4160 add_opvars(splev, "o", VA_PASS1(SPO_MINERALIZE));
4165 add_opvars(splev, "iiiio",
4166 VA_PASS5(-1L, -1L, -1L, -1L, SPO_MINERALIZE));
4171 int token = get_trap_type(yyvsp[0].map);
4173 lc_error("Unknown trap type '%s'!", yyvsp[0].map);
4180 int token = get_room_type(yyvsp[0].map);
4182 lc_warning("Unknown room type \"%s\"! Making ordinary room...", yyvsp[0].map);
4196 yyval.i = yyvsp[0].i;
4201 yyval.i = yyvsp[0].i;
4206 yyval.i = yyvsp[-2].i | yyvsp[0].i;
4211 yyval.i = (yyvsp[0].i << 0);
4216 yyval.i = (yyvsp[0].i << 1);
4221 yyval.i = (yyvsp[0].i << 2);
4226 yyval.i = - MAX_REGISTERS - 1;
4231 yyval.i = - MAX_REGISTERS - 1;
4236 if ( yyvsp[-1].i >= 3 )
4237 lc_error("Register Index overflow!");
4239 yyval.i = - yyvsp[-1].i - 1;
4244 add_opvars(splev, "s", VA_PASS1(yyvsp[0].map));
4250 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_STRING);
4251 vardef_used(variable_definitions, yyvsp[0].map);
4252 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4258 check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_STRING|SPOVAR_ARRAY);
4259 vardef_used(variable_definitions, yyvsp[-3].map);
4260 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4261 Free(yyvsp[-3].map);
4271 add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
4276 add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDCOORD));
4281 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_COORD);
4282 vardef_used(variable_definitions, yyvsp[0].map);
4283 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4289 check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_COORD|SPOVAR_ARRAY);
4290 vardef_used(variable_definitions, yyvsp[-3].map);
4291 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4292 Free(yyvsp[-3].map);
4297 if (yyvsp[-3].i < 0 || yyvsp[-1].i < 0 || yyvsp[-3].i >= COLNO || yyvsp[-1].i >= ROWNO)
4298 lc_error("Coordinates (%li,%li) out of map range!", yyvsp[-3].i, yyvsp[-1].i);
4299 yyval.i = SP_COORD_PACK(yyvsp[-3].i, yyvsp[-1].i);
4304 yyval.i = SP_COORD_PACK_RANDOM(0);
4309 yyval.i = SP_COORD_PACK_RANDOM( yyvsp[-1].i );
4314 yyval.i = yyvsp[0].i;
4319 if ((yyvsp[-2].i & yyvsp[0].i))
4320 lc_warning("Humidity flag used twice.");
4321 yyval.i = (yyvsp[-2].i | yyvsp[0].i);
4331 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_REGION);
4332 vardef_used(variable_definitions, yyvsp[0].map);
4333 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4339 check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_REGION|SPOVAR_ARRAY);
4340 vardef_used(variable_definitions, yyvsp[-3].map);
4341 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4342 Free(yyvsp[-3].map);
4347 long r = SP_REGION_PACK(yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4348 if ( yyvsp[-7].i > yyvsp[-3].i || yyvsp[-5].i > yyvsp[-1].i )
4349 lc_error("Region start > end: (%li,%li,%li,%li)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4351 add_opvars(splev, "r", VA_PASS1(r));
4357 add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
4362 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_MAPCHAR);
4363 vardef_used(variable_definitions, yyvsp[0].map);
4364 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4370 check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_MAPCHAR|SPOVAR_ARRAY);
4371 vardef_used(variable_definitions, yyvsp[-3].map);
4372 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4373 Free(yyvsp[-3].map);
4378 if (what_map_char((char) yyvsp[0].i) != INVALID_TYPE)
4379 yyval.i = SP_MAPCHAR_PACK(what_map_char((char) yyvsp[0].i), -2);
4381 lc_error("Unknown map char type '%c'!", yyvsp[0].i);
4382 yyval.i = SP_MAPCHAR_PACK(STONE, -2);
4388 if (what_map_char((char) yyvsp[-3].i) != INVALID_TYPE)
4389 yyval.i = SP_MAPCHAR_PACK(what_map_char((char) yyvsp[-3].i), yyvsp[-1].i);
4391 lc_error("Unknown map char type '%c'!", yyvsp[-3].i);
4392 yyval.i = SP_MAPCHAR_PACK(STONE, yyvsp[-1].i);
4398 add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
4403 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_MONST);
4404 vardef_used(variable_definitions, yyvsp[0].map);
4405 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4411 check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_MONST|SPOVAR_ARRAY);
4412 vardef_used(variable_definitions, yyvsp[-3].map);
4413 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4414 Free(yyvsp[-3].map);
4419 long m = get_monster_id(yyvsp[0].map, (char)0);
4421 lc_error("Unknown monster \"%s\"!", yyvsp[0].map);
4424 yyval.i = SP_MONST_PACK(m, def_monsyms[(int)mons[m].mlet].sym);
4430 if (check_monster_char((char) yyvsp[0].i))
4431 yyval.i = SP_MONST_PACK(-1, yyvsp[0].i);
4433 lc_error("Unknown monster class '%c'!", yyvsp[0].i);
4440 long m = get_monster_id(yyvsp[-1].map, (char) yyvsp[-3].i);
4442 lc_error("Unknown monster ('%c', \"%s\")!", yyvsp[-3].i, yyvsp[-1].map);
4445 yyval.i = SP_MONST_PACK(m, yyvsp[-3].i);
4446 Free(yyvsp[-1].map);
4456 add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
4461 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_OBJ);
4462 vardef_used(variable_definitions, yyvsp[0].map);
4463 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4469 check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_OBJ|SPOVAR_ARRAY);
4470 vardef_used(variable_definitions, yyvsp[-3].map);
4471 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4472 Free(yyvsp[-3].map);
4477 long m = get_object_id(yyvsp[0].map, (char)0);
4479 lc_error("Unknown object \"%s\"!", yyvsp[0].map);
4482 yyval.i = SP_OBJ_PACK(m, 1); /* obj class != 0 to force generation of a specific item */
4488 if (check_object_char((char) yyvsp[0].i))
4489 yyval.i = SP_OBJ_PACK(-1, yyvsp[0].i);
4491 lc_error("Unknown object class '%c'!", yyvsp[0].i);
4498 long m = get_object_id(yyvsp[-1].map, (char) yyvsp[-3].i);
4500 lc_error("Unknown object ('%c', \"%s\")!", yyvsp[-3].i, yyvsp[-1].map);
4503 yyval.i = SP_OBJ_PACK(m, yyvsp[-3].i);
4504 Free(yyvsp[-1].map);
4517 add_opvars(splev, "o", VA_PASS1(SPO_MATH_ADD));
4522 add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4527 is_inconstant_number = 1;
4532 add_opvars(splev, "i", VA_PASS1(yyvsp[-1].i));
4537 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_INT);
4538 vardef_used(variable_definitions, yyvsp[0].map);
4539 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4541 is_inconstant_number = 1;
4546 check_vardef_type(variable_definitions,
4547 yyvsp[-3].map, SPOVAR_INT|SPOVAR_ARRAY);
4548 vardef_used(variable_definitions, yyvsp[-3].map);
4549 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4550 Free(yyvsp[-3].map);
4551 is_inconstant_number = 1;
4556 add_opvars(splev, "o", VA_PASS1(SPO_MATH_ADD));
4561 add_opvars(splev, "o", VA_PASS1(SPO_MATH_SUB));
4566 add_opvars(splev, "o", VA_PASS1(SPO_MATH_MUL));
4571 add_opvars(splev, "o", VA_PASS1(SPO_MATH_DIV));
4576 add_opvars(splev, "o", VA_PASS1(SPO_MATH_MOD));
4584 if (!strcmp("int", yyvsp[0].map) || !strcmp("integer", yyvsp[0].map)) {
4587 lc_error("Unknown function parameter type '%s'", yyvsp[0].map);
4592 if (!strcmp("str", yyvsp[0].map) || !strcmp("string", yyvsp[0].map)) {
4595 lc_error("Unknown function parameter type '%s'", yyvsp[0].map);
4600 struct lc_funcdefs_parm *tmp = New(struct lc_funcdefs_parm);
4602 if (!curr_function) {
4603 lc_error("Function parameters outside function definition.");
4605 lc_error("Could not alloc function params.");
4608 tmp->name = strdup(yyvsp[-2].map);
4609 tmp->parmtype = (char) yyvsp[0].i;
4610 tmp->next = curr_function->params;
4611 curr_function->params = tmp;
4612 curr_function->n_params++;
4613 switch (tmp->parmtype) {
4614 case 'i': vt = SPOVAR_INT; break;
4615 case 's': vt = SPOVAR_STRING; break;
4616 default: lc_error("Unknown func param conversion."); break;
4618 variable_definitions = add_vardef_type(
4619 variable_definitions,
4622 Free(yyvsp[-2].map);
4638 tmpbuf[0] = (char) yyvsp[0].i;
4640 yyval.map = strdup(tmpbuf);
4645 long len = strlen( yyvsp[-2].map );
4646 char *tmp = (char *)alloc(len + 2);
4647 sprintf(tmp, "%c%s", (char) yyvsp[0].i, yyvsp[-2].map );
4648 Free( yyvsp[-2].map );
4654 yyval.map = strdup("");
4659 char *tmp = strdup( yyvsp[0].map );
4660 Free( yyvsp[0].map );
4666 add_opvars(splev, "o", VA_PASS1(SPO_SEL_POINT));
4671 add_opvars(splev, "o", VA_PASS1(SPO_SEL_RECT));
4676 add_opvars(splev, "o", VA_PASS1(SPO_SEL_FILLRECT));
4681 add_opvars(splev, "o", VA_PASS1(SPO_SEL_LINE));
4686 /* randline (x1,y1),(x2,y2), roughness */
4687 add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDLINE));
4692 add_opvars(splev, "io", VA_PASS2(W_ANY, SPO_SEL_GROW));
4697 add_opvars(splev, "io", VA_PASS2(yyvsp[-3].i, SPO_SEL_GROW));
4702 add_opvars(splev, "iio",
4703 VA_PASS3(yyvsp[-3].i, SPOFILTER_PERCENT, SPO_SEL_FILTER));
4708 add_opvars(splev, "io",
4709 VA_PASS2(SPOFILTER_SELECTION, SPO_SEL_FILTER));
4714 add_opvars(splev, "io",
4715 VA_PASS2(SPOFILTER_MAPCHAR, SPO_SEL_FILTER));
4720 add_opvars(splev, "o", VA_PASS1(SPO_SEL_FLOOD));
4725 add_opvars(splev, "oio",
4726 VA_PASS3(SPO_COPY, 1, SPO_SEL_ELLIPSE));
4731 add_opvars(splev, "oio",
4732 VA_PASS3(SPO_COPY, yyvsp[-1].i, SPO_SEL_ELLIPSE));
4737 add_opvars(splev, "io", VA_PASS2(1, SPO_SEL_ELLIPSE));
4742 add_opvars(splev, "io", VA_PASS2(yyvsp[-1].i, SPO_SEL_ELLIPSE));
4747 add_opvars(splev, "iio",
4748 VA_PASS3(yyvsp[-5].i, yyvsp[-11].i, SPO_SEL_GRADIENT));
4753 add_opvars(splev, "o", VA_PASS1(SPO_SEL_COMPLEMENT));
4758 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_SEL);
4759 vardef_used(variable_definitions, yyvsp[0].map);
4760 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4776 add_opvars(splev, "o", VA_PASS1(SPO_SEL_ADD));
4781 add_opvars(splev, "iio",
4782 VA_PASS3(yyvsp[0].dice.num, yyvsp[0].dice.die, SPO_DICE));
4787 add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4792 add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4797 add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4807 yyval.lregn = yyvsp[0].lregn;
4812 if (yyvsp[-7].i <= 0 || yyvsp[-7].i >= COLNO)
4813 lc_error("Region (%li,%li,%li,%li) out of level range (x1)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4814 else if (yyvsp[-5].i < 0 || yyvsp[-5].i >= ROWNO)
4815 lc_error("Region (%li,%li,%li,%li) out of level range (y1)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4816 else if (yyvsp[-3].i <= 0 || yyvsp[-3].i >= COLNO)
4817 lc_error("Region (%li,%li,%li,%li) out of level range (x2)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4818 else if (yyvsp[-1].i < 0 || yyvsp[-1].i >= ROWNO)
4819 lc_error("Region (%li,%li,%li,%li) out of level range (y2)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4820 yyval.lregn.x1 = yyvsp[-7].i;
4821 yyval.lregn.y1 = yyvsp[-5].i;
4822 yyval.lregn.x2 = yyvsp[-3].i;
4823 yyval.lregn.y2 = yyvsp[-1].i;
4824 yyval.lregn.area = 1;
4829 /* This series of if statements is a hack for MSC 5.1. It seems that its
4830 tiny little brain cannot compile if these are all one big if statement. */
4831 if (yyvsp[-7].i < 0 || yyvsp[-7].i > (int)max_x_map)
4832 lc_error("Region (%li,%li,%li,%li) out of map range (x1)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4833 else if (yyvsp[-5].i < 0 || yyvsp[-5].i > (int)max_y_map)
4834 lc_error("Region (%li,%li,%li,%li) out of map range (y1)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4835 else if (yyvsp[-3].i < 0 || yyvsp[-3].i > (int)max_x_map)
4836 lc_error("Region (%li,%li,%li,%li) out of map range (x2)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4837 else if (yyvsp[-1].i < 0 || yyvsp[-1].i > (int)max_y_map)
4838 lc_error("Region (%li,%li,%li,%li) out of map range (y2)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4839 yyval.lregn.area = 0;
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;
4851 if (yystate == 0 && yym == 0)
4855 printf("%sdebug: after reduction, shifting from state 0 to\
4856 state %d\n", YYPREFIX, YYFINAL);
4863 if ((yychar = yylex()) < 0) yychar = 0;
4868 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
4869 if (!yys) yys = "illegal-symbol";
4870 printf("%sdebug: state %d, reading %d (%s)\n",
4871 YYPREFIX, YYFINAL, yychar, yys);
4875 if (yychar == 0) goto yyaccept;
4878 if ((yyn = yygindex[yym]) != 0 && (yyn += yystate) >= 0 &&
4879 yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
4880 yystate = yytable[yyn];
4882 yystate = yydgoto[yym];
4885 printf("%sdebug: after reduction, shifting from state %d \
4886 to state %d\n", YYPREFIX, *yyssp, yystate);
4888 if (yyssp >= yyss + yystacksize - 1)
4896 yyerror("yacc stack overflow");