1 /* A lexical scanner generated by flex */
3 /* Scanner skeleton version:
4 * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
8 #define YY_FLEX_MAJOR_VERSION 2
9 #define YY_FLEX_MINOR_VERSION 5
14 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
29 /* Use prototypes in function declarations. */
32 /* The "const" storage-class-modifier is valid. */
35 #else /* ! __cplusplus */
43 #endif /* ! __cplusplus */
62 #define YY_PROTO(proto) proto
64 #define YY_PROTO(proto) ()
68 /* Returned upon end-of-file. */
71 /* Promotes a possibly negative, possibly signed char to an unsigned
72 * integer for use as an array index. If the signed char is negative,
73 * we want to instead treat it as an 8-bit unsigned char, hence the
76 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
78 /* Enter a start condition. This macro really ought to take a parameter,
79 * but we do it the disgusting crufty way forced on us by the ()-less
80 * definition of BEGIN.
82 #define BEGIN yy_start = 1 + 2 *
84 /* Translate the current start state into a value that can be later handed
85 * to BEGIN to return to the state. The YYSTATE alias is for lex
88 #define YY_START ((yy_start - 1) / 2)
89 #define YYSTATE YY_START
91 /* Action number for EOF rule of a given start state. */
92 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
94 /* Special action meaning "start processing a new file". */
95 #define YY_NEW_FILE yyrestart( yyin )
97 #define YY_END_OF_BUFFER_CHAR 0
99 /* Size of default input buffer. */
100 #define YY_BUF_SIZE 16384
102 typedef struct yy_buffer_state *YY_BUFFER_STATE;
105 extern FILE *yyin, *yyout;
107 #define EOB_ACT_CONTINUE_SCAN 0
108 #define EOB_ACT_END_OF_FILE 1
109 #define EOB_ACT_LAST_MATCH 2
111 /* The funky do-while in the following #define is used to turn the definition
112 * int a single C statement (which needs a semi-colon terminator). This
113 * avoids problems with code like:
115 * if ( condition_holds )
118 * do_something_else();
120 * Prior to using the do-while the compiler would get upset at the
121 * "else" because it interpreted the "if" statement as being all
122 * done when it reached the ';' after the yyless() call.
125 /* Return all but the first 'n' matched characters back to the input stream. */
130 /* Undo effects of setting up yytext. */ \
131 *yy_cp = yy_hold_char; \
132 YY_RESTORE_YY_MORE_OFFSET \
133 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
134 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
138 #define unput(c) yyunput( c, yytext_ptr )
140 /* The following is because we cannot portably get our hands on size_t
141 * (without autoconf's help, which isn't available because we want
142 * flex-generated scanners to compile on their own).
144 typedef unsigned int yy_size_t;
147 struct yy_buffer_state
151 char *yy_ch_buf; /* input buffer */
152 char *yy_buf_pos; /* current position in input buffer */
154 /* Size of input buffer in bytes, not including room for EOB
157 yy_size_t yy_buf_size;
159 /* Number of characters read into yy_ch_buf, not including EOB
164 /* Whether we "own" the buffer - i.e., we know we created it,
165 * and can realloc() it to grow it, and should free() it to
168 int yy_is_our_buffer;
170 /* Whether this is an "interactive" input source; if so, and
171 * if we're using stdio for input, then we want to use getc()
172 * instead of fread(), to make sure we stop fetching input after
175 int yy_is_interactive;
177 /* Whether we're considered to be at the beginning of a line.
178 * If so, '^' rules will be active on the next match, otherwise
183 /* Whether to try to fill the input buffer when we reach the
188 int yy_buffer_status;
189 #define YY_BUFFER_NEW 0
190 #define YY_BUFFER_NORMAL 1
191 /* When an EOF's been seen but there's still some text to process
192 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
193 * shouldn't try reading from the input source any more. We might
194 * still have a bunch of tokens to match, though, because of
195 * possible backing-up.
197 * When we actually see the EOF, we change the status to "new"
198 * (via yyrestart()), so that the user can continue scanning by
199 * just pointing yyin at a new input file.
201 #define YY_BUFFER_EOF_PENDING 2
204 static YY_BUFFER_STATE yy_current_buffer = 0;
206 /* We provide macros for accessing buffer states in case in the
207 * future we want to put the buffer states in a more general
210 #define YY_CURRENT_BUFFER yy_current_buffer
213 /* yy_hold_char holds the character lost when yytext is formed. */
214 static char yy_hold_char;
216 static int yy_n_chars; /* number of characters read into yy_ch_buf */
221 /* Points to current character in buffer. */
222 static char *yy_c_buf_p = (char *) 0;
223 static int yy_init = 1; /* whether we need to initialize */
224 static int yy_start = 0; /* start state number */
226 /* Flag which is used to allow yywrap()'s to do buffer switches
227 * instead of setting up a fresh yyin. A bit of a hack ...
229 static int yy_did_buffer_switch_on_eof;
231 void yyrestart YY_PROTO(( FILE *input_file ));
233 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
234 void yy_load_buffer_state YY_PROTO(( void ));
235 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
236 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
237 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
238 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
239 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
241 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
242 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
243 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
245 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
246 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
247 static void yy_flex_free YY_PROTO(( void * ));
249 #define yy_new_buffer yy_create_buffer
251 #define yy_set_interactive(is_interactive) \
253 if ( ! yy_current_buffer ) \
254 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
255 yy_current_buffer->yy_is_interactive = is_interactive; \
258 #define yy_set_bol(at_bol) \
260 if ( ! yy_current_buffer ) \
261 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
262 yy_current_buffer->yy_at_bol = at_bol; \
265 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
268 #define YY_USES_REJECT
269 typedef unsigned char YY_CHAR;
270 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
271 typedef int yy_state_type;
273 #define yytext_ptr yytext
275 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
276 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
277 static int yy_get_next_buffer YY_PROTO(( void ));
278 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
280 /* Done after the current pattern has been matched and before the
281 * corresponding action - sets up yytext.
283 #define YY_DO_BEFORE_ACTION \
284 yytext_ptr = yy_bp; \
285 yyleng = (int) (yy_cp - yy_bp); \
286 yy_hold_char = *yy_cp; \
290 #define YY_NUM_RULES 42
291 #define YY_END_OF_BUFFER 43
292 static yyconst short int yy_acclist[709] =
294 43, 41, 42, 41, 42, 41, 42, 40, 41, 42,
295 41, 42, 25, 41, 42, 41, 42, 40, 41, 42,
296 40, 41, 42,16410, 40, 41, 42,16410, 41, 42,
297 40, 41, 42, 40, 41, 42, 40, 41, 42, 40,
298 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
299 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
300 40, 41, 42, 40, 41, 42, 40, 41, 42, 41,
301 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
302 40, 41, 42, 40, 41, 42, 40, 41, 42, 40,
303 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
305 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
306 40, 41, 42, 40, 41, 42, 41, 42, 41, 42,
307 40, 41, 42, 40, 41, 42, 40, 41, 42,16410,
308 40, 41, 42,16410, 41, 42, 40, 41, 42, 40,
309 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
310 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
311 40, 41, 42, 40, 41, 42, 40, 41, 42, 40,
312 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
313 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
314 40, 41, 42, 40, 41, 42, 40, 41, 42, 40,
316 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
317 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
318 41, 42, 33, 40, 17, 40, 9, 40, 40, 40,
319 16410, 8218, 40, 35, 40, 40, 40, 40, 40, 40,
320 40, 40, 40, 40, 40, 9, 40, 40, 40, 40,
321 40, 40, 40, 36, 40, 3, 40, 40, 4, 40,
322 40, 40, 3, 40, 40, 4, 40, 40, 40, 40,
323 40, 40, 9, 40, 40, 34, 40, 40, 9, 40,
324 40, 40,16410, 8218, 40, 40, 40, 40, 40, 40,
325 40, 40, 40, 40, 40, 40, 9, 40, 40, 40,
327 40, 40, 40, 40, 40, 3, 40, 40, 4, 40,
328 40, 40, 3, 40, 40, 4, 40, 40, 40, 40,
329 40, 40, 9, 40, 40, 15, 9, 40, 23, 40,
330 23, 8, 40, 8218, 22, 40, 22, 24, 40, 40,
331 40, 6, 40, 40, 40, 40, 40, 40, 40, 9,
332 40, 40, 40, 40, 40, 20, 40, 4, 40, 40,
333 3, 40, 3, 40, 40, 4, 5, 40, 4, 40,
334 40, 4, 40, 40, 3, 40, 40, 4, 4, 40,
335 5, 6, 40, 4, 40, 40, 40, 9, 40, 40,
336 34, 39, 9, 40, 23, 40, 8, 40, 22, 40,
338 35, 40, 40, 40, 6, 40, 40, 40, 40, 40,
339 40, 40, 9, 40, 40, 40, 40, 40, 20, 40,
340 4, 40, 40, 3, 40, 3, 40, 40, 5, 40,
341 4, 40, 40, 4, 40, 40, 3, 40, 40, 4,
342 40, 5, 6, 40, 4, 40, 40, 40, 9, 40,
343 40, 38, 38, 37, 25, 25, 40, 6, 40, 7,
344 40, 6, 10, 40, 40, 40, 40, 19, 40, 40,
345 21, 40, 16, 40, 40, 40, 40, 40, 20, 20,
346 40, 20, 40, 36, 3, 3, 2, 40, 5, 4,
347 5, 40, 40, 4, 4, 40, 2, 7, 40, 5,
349 6, 5, 6, 40, 5, 40, 40, 40, 25, 39,
350 40, 6, 40, 7, 40, 40, 40, 40, 40, 19,
351 40, 40, 21, 40, 16, 40, 40, 40, 40, 40,
352 20, 40, 20, 20, 40, 2, 40, 5, 40, 40,
353 4, 40, 2, 7, 40, 5, 6, 40, 5, 40,
354 40, 40, 7, 1, 40, 40, 40, 19, 40, 40,
355 40, 21, 21, 40, 21, 40, 40, 40, 40, 30,
356 36, 2, 2, 40, 5, 4, 5, 5, 40, 2,
357 7, 39, 1, 40, 40, 40, 19, 40, 40, 40,
358 21, 40, 21, 21, 40, 40, 40, 40, 20, 39,
360 2, 40, 5, 40, 27, 38, 23, 23, 22, 22,
361 24, 24, 1, 1, 40, 20, 21, 40, 40, 40,
362 11, 40, 40, 28, 36, 30, 2, 2, 5, 27,
363 34, 39, 39, 1, 40, 40, 40, 40, 21, 39,
364 11, 40, 40, 20, 39, 18, 24, 1, 1, 20,
365 21, 19, 40, 40, 40, 11, 40, 40, 40, 40,
366 21, 39, 40, 11, 40, 40, 12, 40, 40, 40,
367 40, 12, 40, 40, 14, 40, 40, 40, 14, 40,
368 40, 40, 39, 40, 40, 40, 40, 39, 39, 40,
369 40, 31, 40, 39, 39, 31, 40, 13, 31, 32,
371 32, 35, 39, 39, 31, 39, 34, 29
374 static yyconst short int yy_accept[736] =
376 1, 1, 1, 2, 4, 6, 8, 11, 13, 16,
377 18, 21, 25, 29, 31, 34, 37, 40, 43, 46,
378 49, 52, 55, 58, 61, 64, 67, 70, 72, 75,
379 78, 81, 84, 87, 90, 93, 96, 99, 102, 105,
380 108, 111, 114, 117, 119, 121, 124, 127, 131, 135,
381 137, 140, 143, 146, 149, 152, 155, 158, 161, 164,
382 167, 170, 173, 176, 179, 182, 185, 188, 191, 194,
383 197, 200, 203, 206, 209, 212, 215, 218, 221, 223,
384 223, 224, 225, 225, 225, 225, 225, 226, 226, 226,
385 227, 227, 229, 229, 229, 229, 230, 230, 230, 232,
387 232, 234, 234, 235, 236, 236, 237, 237, 237, 238,
388 238, 239, 240, 241, 242, 243, 244, 245, 246, 248,
389 249, 250, 251, 252, 253, 254, 254, 254, 254, 254,
390 255, 256, 258, 258, 259, 261, 262, 263, 265, 265,
391 266, 268, 269, 270, 271, 272, 273, 275, 276, 276,
392 276, 276, 277, 277, 278, 278, 279, 281, 281, 282,
393 284, 284, 286, 286, 287, 288, 288, 289, 290, 291,
394 292, 293, 294, 295, 296, 297, 299, 300, 301, 302,
395 303, 304, 305, 306, 308, 308, 309, 311, 312, 313,
396 315, 315, 316, 318, 319, 320, 321, 322, 323, 325,
398 326, 326, 326, 326, 326, 326, 326, 326, 326, 326,
399 326, 326, 327, 327, 327, 327, 329, 331, 332, 334,
400 335, 335, 335, 335, 337, 338, 339, 340, 340, 341,
401 341, 342, 342, 342, 344, 344, 344, 344, 344, 345,
402 346, 347, 348, 349, 350, 352, 353, 354, 355, 356,
403 358, 358, 358, 358, 358, 360, 360, 361, 361, 361,
404 363, 365, 366, 367, 367, 369, 369, 371, 372, 374,
405 375, 375, 377, 378, 379, 381, 384, 386, 387, 388,
406 390, 391, 392, 392, 392, 392, 392, 393, 395, 397,
407 399, 401, 401, 402, 402, 403, 404, 404, 405, 407,
409 408, 409, 410, 411, 412, 413, 415, 416, 417, 418,
410 419, 421, 423, 424, 424, 426, 428, 429, 431, 433,
411 434, 436, 437, 437, 439, 440, 442, 445, 447, 448,
412 449, 451, 452, 452, 452, 453, 454, 454, 454, 455,
413 455, 455, 456, 456, 457, 457, 457, 457, 458, 458,
414 458, 458, 458, 458, 458, 458, 460, 460, 460, 462,
415 463, 464, 465, 465, 466, 466, 466, 466, 466, 467,
416 468, 470, 470, 471, 473, 475, 476, 477, 478, 479,
417 480, 482, 484, 484, 484, 484, 484, 485, 486, 486,
418 487, 489, 490, 491, 491, 491, 491, 493, 494, 495,
420 495, 497, 497, 500, 502, 505, 507, 508, 509, 509,
421 510, 510, 510, 510, 510, 511, 511, 512, 512, 512,
422 514, 516, 517, 517, 518, 519, 520, 522, 523, 525,
423 527, 528, 529, 530, 531, 533, 534, 536, 538, 540,
424 541, 543, 546, 549, 551, 552, 553, 553, 553, 553,
425 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
426 554, 556, 556, 556, 556, 556, 557, 558, 558, 560,
427 560, 561, 562, 563, 565, 567, 568, 569, 570, 570,
428 570, 572, 572, 572, 573, 573, 573, 575, 576, 576,
429 577, 578, 578, 580, 580, 582, 582, 582, 582, 582,
431 582, 582, 583, 583, 583, 585, 586, 587, 589, 590,
432 591, 593, 594, 596, 597, 598, 599, 601, 603, 605,
433 605, 605, 607, 607, 607, 608, 608, 609, 609, 610,
434 610, 611, 611, 612, 612, 613, 613, 613, 614, 614,
435 614, 616, 616, 616, 618, 618, 619, 619, 619, 619,
436 619, 619, 620, 621, 623, 624, 626, 626, 627, 628,
437 629, 630, 630, 630, 632, 632, 632, 633, 634, 634,
438 634, 636, 637, 638, 639, 641, 643, 644, 646, 646,
439 647, 647, 647, 647, 648, 649, 650, 650, 650, 650,
440 652, 652, 652, 653, 653, 653, 653, 653, 654, 655,
442 656, 658, 659, 659, 659, 659, 659, 659, 660, 661,
443 663, 664, 666, 667, 667, 667, 667, 667, 667, 667,
444 668, 668, 668, 668, 668, 669, 670, 670, 670, 670,
445 670, 671, 672, 672, 672, 672, 672, 673, 673, 673,
446 673, 674, 675, 677, 677, 677, 677, 677, 678, 678,
447 679, 681, 681, 681, 681, 681, 682, 683, 683, 683,
448 683, 683, 684, 685, 686, 686, 686, 686, 686, 686,
449 687, 688, 688, 688, 688, 688, 689, 690, 691, 692,
450 692, 692, 692, 692, 692, 694, 694, 694, 694, 694,
451 695, 696, 698, 698, 698, 699, 699, 700, 700, 701,
453 701, 701, 703, 703, 704, 705, 705, 705, 705, 705,
454 707, 707, 707, 707, 707, 707, 707, 707, 707, 707,
455 707, 707, 707, 707, 707, 707, 707, 707, 707, 707,
456 707, 707, 708, 709, 709
459 static yyconst int yy_ec[256] =
461 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
462 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
463 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
464 1, 4, 1, 5, 6, 7, 8, 1, 9, 10,
465 11, 12, 13, 1, 14, 15, 16, 17, 18, 19,
466 20, 20, 20, 20, 20, 20, 20, 21, 22, 1,
467 23, 1, 1, 24, 25, 26, 27, 28, 29, 30,
468 31, 32, 33, 33, 34, 35, 36, 37, 38, 39,
469 40, 41, 42, 33, 43, 33, 44, 45, 33, 33,
470 46, 1, 47, 1, 48, 1, 49, 50, 51, 52,
472 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
473 63, 64, 40, 65, 66, 67, 68, 33, 69, 45,
474 70, 33, 71, 1, 72, 1, 1, 1, 1, 1,
475 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
476 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
477 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
478 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
479 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
480 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
481 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
483 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
484 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
485 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
486 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
487 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
491 static yyconst int yy_meta[73] =
493 1, 2, 3, 2, 1, 1, 1, 1, 4, 5,
494 6, 1, 1, 7, 1, 1, 8, 8, 8, 8,
495 9, 1, 10, 1, 11, 11, 11, 12, 12, 12,
496 12, 12, 4, 11, 4, 4, 11, 12, 12, 11,
497 11, 4, 4, 12, 7, 1, 1, 1, 13, 13,
498 13, 14, 15, 14, 14, 14, 14, 14, 13, 14,
499 4, 11, 12, 12, 11, 4, 4, 4, 4, 4,
503 static yyconst short int yy_base[824] =
505 0, 72, 2710, 5057, 120, 129, 0, 140, 2705, 138,
506 149, 169, 160, 2705, 226, 157, 2651, 151, 2679, 130,
507 2639, 131, 227, 271, 2648, 2633, 244, 331, 390, 447,
508 203, 239, 332, 338, 375, 340, 370, 428, 430, 249,
509 2650, 201, 254, 397, 2694, 147, 253, 506, 344, 257,
510 568, 189, 2641, 229, 2672, 339, 294, 248, 335, 620,
511 2642, 284, 574, 667, 724, 318, 640, 555, 608, 709,
512 590, 610, 690, 746, 761, 462, 449, 644, 577, 2639,
513 455, 0, 2683, 303, 781, 309, 5057, 2679, 439, 354,
514 2673, 2673, 2671, 419, 692, 2671, 491, 160, 809, 2670,
516 0, 2683, 5057, 782, 0, 829, 0, 0, 499, 862,
517 712, 582, 2636, 2641, 2615, 2616, 736, 2640, 2639, 717,
518 797, 2627, 769, 829, 2613, 2627, 927, 336, 999, 5057,
519 1023, 1074, 0, 1091, 1142, 834, 1159, 1206, 0, 1218,
520 1265, 838, 847, 842, 2606, 2609, 2608, 2613, 303, 2597,
521 890, 2664, 2663, 572, 2662, 594, 633, 298, 634, 1324,
522 401, 688, 429, 1386, 1433, 2661, 851, 927, 900, 903,
523 751, 689, 892, 946, 2626, 946, 951, 960, 973, 968,
524 972, 690, 1445, 1496, 2659, 1513, 1565, 1010, 1582, 1629,
525 2658, 1641, 1688, 1018, 1036, 1040, 972, 1003, 1023, 694,
527 804, 2596, 446, 503, 518, 2649, 542, 1153, 1167, 2648,
528 2586, 5057, 2649, 2648, 2647, 2636, 2643, 2638, 0, 5057,
529 2632, 2627, 2626, 2625, 2624, 808, 1023, 1045, 1073, 0,
530 1072, 1085, 1136, 1735, 2570, 2563, 2576, 2571, 1179, 1229,
531 2554, 1154, 930, 2569, 2607, 0, 2563, 2559, 1214, 1795,
532 569, 1240, 605, 1867, 1930, 0, 1947, 0, 2608, 2606,
533 1218, 1204, 1278, 0, 1998, 2606, 755, 398, 1272, 2015,
534 0, 1288, 1317, 1395, 1379, 2062, 1405, 1391, 2564, 2600,
535 2546, 5057, 1446, 750, 2608, 127, 2608, 885, 1185, 996,
536 1447, 789, 2606, 1238, 1410, 2114, 2602, 1452, 2161, 1602,
538 1652, 1181, 1707, 1458, 1506, 1412, 0, 1100, 1179, 1637,
539 2221, 2285, 2302, 2601, 1101, 1701, 1706, 2353, 1523, 1580,
540 1383, 2370, 2600, 1742, 1748, 1457, 2417, 1803, 1816, 1411,
541 1499, 1608, 1103, 2550, 5057, 817, 834, 2591, 5057, 1828,
542 2590, 2589, 2527, 2526, 2579, 2578, 2577, 2577, 388, 2576,
543 349, 2575, 890, 1761, 1029, 0, 1326, 1560, 0, 5057,
544 5057, 2429, 1436, 1590, 2525, 2525, 2522, 2522, 2528, 2522,
545 815, 503, 841, 2489, 0, 2542, 2524, 2525, 2522, 0,
546 2561, 2633, 858, 907, 910, 1727, 2565, 2553, 1645, 5057,
547 2696, 1760, 1085, 618, 1805, 2549, 1241, 1003, 2505, 2493,
549 0, 1759, 0, 1834, 2752, 1875, 1834, 2491, 1882, 2549,
550 1901, 1902, 2503, 2488, 2547, 434, 1522, 653, 953, 1219,
551 1291, 2809, 2545, 1912, 1875, 1888, 1899, 1572, 2869, 1505,
552 1519, 1604, 1898, 1915, 2941, 2544, 3013, 3077, 1916, 1951,
553 1591, 0, 3133, 1967, 2025, 1841, 1663, 2494, 2535, 1637,
554 2534, 2472, 2532, 2469, 2529, 2467, 2520, 1748, 1924, 5057,
555 3189, 2483, 2479, 2479, 2474, 2526, 1268, 1972, 2525, 870,
556 2498, 2473, 0, 3254, 3326, 2463, 2463, 2519, 1299, 1946,
557 5057, 2515, 1971, 1097, 1394, 1506, 2508, 1319, 1239, 5057,
558 2454, 2439, 0, 2483, 1817, 2013, 2474, 1582, 2448, 2400,
560 2393, 1048, 1250, 1594, 3389, 2005, 2020, 2073, 2069, 1937,
561 3454, 2440, 3526, 2041, 1956, 2075, 2440, 2084, 2010, 2077,
562 430, 5057, 2114, 2425, 2424, 2360, 2345, 2405, 2403, 2341,
563 2339, 2397, 2394, 2328, 2326, 2379, 2373, 1850, 2076, 2077,
564 2380, 2325, 2315, 2035, 2311, 2293, 2330, 2286, 2267, 2304,
565 2279, 2288, 2263, 2044, 2278, 5057, 2008, 5057, 2312, 5057,
566 5057, 2306, 2123, 2296, 2238, 2232, 2283, 1861, 872, 1450,
567 2118, 2127, 2135, 2136, 2278, 2137, 2129, 2273, 2177, 5057,
568 2187, 2142, 2203, 2200, 2177, 5057, 2125, 2129, 2103, 5057,
569 2089, 2136, 2126, 2064, 2105, 2066, 1992, 2011, 1986, 1984,
571 0, 1960, 2180, 1990, 1924, 1065, 1113, 2229, 2175, 1960,
572 2172, 2083, 2180, 2191, 1900, 1933, 1299, 1883, 1859, 2126,
573 1806, 1072, 1787, 1760, 3598, 1728, 1719, 1697, 1506, 1747,
574 3670, 2230, 2232, 1665, 1664, 1616, 5057, 1582, 1880, 1999,
575 3742, 2081, 0, 1530, 1479, 1752, 1163, 3814, 2244, 2160,
576 2244, 2252, 1487, 1478, 2229, 1476, 1419, 1392, 1372, 1591,
577 1710, 2254, 1312, 1271, 2256, 1158, 1136, 2225, 2227, 1106,
578 942, 906, 918, 1045, 1456, 2259, 2315, 875, 756, 2293,
579 2211, 733, 2243, 2248, 0, 701, 584, 603, 1827, 2312,
580 2314, 0, 2299, 538, 5057, 421, 2242, 473, 5057, 304,
582 315, 5057, 2151, 2378, 2346, 2302, 234, 206, 1795, 2379,
583 2317, 203, 1623, 1642, 1664, 1887, 2369, 2370, 2382, 2383,
584 2434, 2436, 2437, 2442, 2443, 2444, 2446, 2449, 2450, 2514,
585 2030, 159, 5057, 5057, 3883, 3898, 3913, 3928, 3943, 3955,
586 3970, 3985, 3999, 4002, 4005, 4008, 4023, 4038, 4041, 4044,
587 4059, 4074, 4086, 4101, 4116, 4131, 4146, 4161, 4176, 4191,
588 4194, 4209, 4224, 4239, 4254, 4269, 1899, 4272, 4283, 2048,
589 4286, 4301, 4316, 4328, 4343, 4358, 4373, 4388, 4403, 4418,
590 4433, 4448, 4457, 4472, 4487, 4502, 4517, 4532, 4547, 4562,
591 4573, 4588, 4603, 4618, 4633, 4648, 4663, 4678, 4693, 4708,
593 4723, 4738, 4753, 4768, 4783, 4798, 4813, 4828, 4839, 4852,
594 4867, 4882, 4897, 4908, 4921, 4936, 4951, 4966, 4981, 4996,
598 static yyconst short int yy_def[824] =
600 734, 734, 734, 734, 734, 734, 735, 736, 734, 734,
601 735, 734, 12, 737, 735, 15, 15, 15, 15, 15,
602 735, 15, 15, 735, 15, 735, 15, 738, 15, 15,
603 29, 29, 29, 29, 29, 29, 29, 29, 30, 29,
604 735, 735, 735, 739, 734, 740, 740, 734, 48, 737,
605 740, 51, 51, 51, 51, 51, 740, 51, 51, 740,
606 51, 740, 51, 51, 51, 64, 64, 64, 64, 64,
607 64, 64, 64, 65, 64, 740, 740, 740, 739, 734,
608 734, 735, 741, 742, 741, 734, 734, 734, 734, 735,
609 734, 735, 734, 743, 743, 735, 743, 734, 12, 734,
611 735, 737, 734, 735, 744, 735, 745, 746, 106, 734,
612 106, 106, 735, 735, 735, 735, 106, 104, 735, 735,
613 106, 735, 106, 106, 735, 747, 738, 747, 748, 734,
614 735, 735, 749, 735, 735, 735, 735, 132, 750, 735,
615 135, 106, 106, 735, 735, 735, 735, 735, 739, 751,
616 739, 734, 752, 753, 734, 753, 753, 734, 753, 734,
617 734, 753, 754, 753, 164, 745, 165, 165, 165, 753,
618 753, 753, 753, 165, 164, 753, 753, 165, 753, 165,
619 165, 753, 164, 164, 749, 164, 753, 753, 164, 184,
620 750, 164, 187, 165, 165, 753, 753, 753, 753, 753,
622 739, 734, 755, 756, 756, 757, 758, 755, 755, 759,
623 760, 734, 734, 734, 734, 735, 735, 734, 735, 734,
624 734, 734, 734, 735, 734, 734, 735, 734, 106, 761,
625 735, 734, 734, 735, 734, 734, 734, 734, 735, 735,
626 735, 735, 735, 735, 735, 234, 735, 735, 735, 762,
627 763, 764, 765, 766, 735, 767, 735, 768, 767, 735,
628 735, 735, 769, 770, 735, 770, 735, 735, 255, 735,
629 771, 735, 735, 770, 255, 265, 735, 735, 735, 735,
630 735, 734, 739, 734, 772, 734, 773, 774, 774, 774,
631 774, 775, 772, 776, 774, 774, 761, 774, 296, 774,
633 774, 774, 774, 774, 774, 774, 299, 774, 774, 774,
634 777, 774, 296, 768, 774, 774, 774, 312, 774, 774,
635 312, 296, 771, 774, 774, 312, 318, 774, 774, 774,
636 774, 774, 739, 734, 734, 778, 778, 779, 734, 780,
637 781, 781, 782, 782, 734, 734, 734, 735, 734, 734,
638 734, 734, 734, 734, 734, 735, 783, 734, 735, 734,
639 734, 735, 783, 735, 734, 734, 734, 734, 735, 735,
640 735, 734, 735, 784, 735, 735, 735, 735, 735, 785,
641 786, 786, 787, 787, 788, 789, 790, 734, 734, 734,
642 735, 791, 734, 734, 791, 395, 735, 735, 734, 734,
644 735, 734, 391, 395, 391, 735, 735, 735, 739, 734,
645 734, 734, 734, 734, 792, 734, 774, 793, 793, 774,
646 774, 774, 363, 774, 774, 774, 774, 774, 794, 774,
647 774, 774, 774, 774, 795, 785, 795, 774, 774, 774,
648 774, 438, 438, 774, 774, 774, 739, 734, 796, 797,
649 798, 799, 800, 801, 802, 803, 734, 734, 734, 734,
650 735, 734, 734, 734, 734, 735, 735, 734, 735, 734,
651 735, 735, 804, 805, 805, 735, 735, 735, 806, 807,
652 734, 808, 734, 809, 809, 809, 735, 734, 734, 734,
653 734, 734, 735, 734, 809, 739, 734, 734, 734, 734,
655 734, 810, 811, 811, 438, 774, 774, 774, 774, 774,
656 812, 804, 812, 774, 774, 774, 813, 774, 774, 739,
657 734, 734, 797, 798, 798, 799, 799, 800, 800, 801,
658 801, 802, 802, 803, 803, 734, 734, 814, 814, 814,
659 735, 734, 734, 734, 734, 735, 815, 734, 734, 734,
660 734, 735, 735, 735, 735, 734, 734, 734, 734, 734,
661 734, 734, 739, 734, 734, 734, 810, 810, 811, 811,
662 774, 774, 774, 774, 816, 774, 774, 813, 739, 734,
663 734, 797, 734, 734, 734, 734, 734, 734, 734, 734,
664 734, 815, 815, 734, 734, 734, 734, 735, 735, 735,
666 735, 735, 739, 734, 734, 811, 811, 774, 774, 816,
667 774, 774, 774, 739, 734, 734, 734, 734, 734, 734,
668 734, 734, 734, 734, 817, 735, 734, 734, 811, 811,
669 818, 774, 739, 734, 734, 734, 734, 734, 819, 819,
670 817, 641, 735, 734, 734, 811, 811, 818, 819, 648,
671 774, 739, 734, 734, 819, 641, 641, 734, 734, 811,
672 811, 820, 648, 648, 739, 734, 734, 819, 819, 641,
673 641, 734, 734, 811, 811, 820, 820, 648, 648, 739,
674 734, 734, 819, 819, 641, 821, 734, 822, 811, 820,
675 820, 648, 739, 734, 734, 734, 819, 821, 734, 734,
677 822, 734, 811, 820, 820, 739, 734, 734, 811, 820,
678 739, 734, 811, 739, 823, 823, 823, 823, 823, 823,
679 823, 823, 823, 823, 823, 823, 823, 823, 823, 823,
680 823, 734, 734, 0, 734, 734, 734, 734, 734, 734,
681 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
682 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
683 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
684 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
685 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
686 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
688 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
689 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
693 static yyconst short int yy_nxt[5130] =
695 4, 4, 4, 5, 4, 4, 6, 4, 7, 8,
696 4, 9, 10, 7, 4, 4, 11, 12, 13, 13,
697 4, 14, 4, 4, 15, 16, 17, 18, 19, 19,
698 20, 19, 7, 19, 21, 22, 15, 23, 24, 15,
699 25, 26, 7, 27, 7, 28, 4, 4, 29, 30,
700 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
701 41, 15, 42, 24, 25, 26, 7, 7, 43, 7,
702 44, 4, 4, 4, 4, 5, 4, 45, 6, 45,
703 7, 8, 4, 9, 10, 46, 4, 4, 47, 48,
704 49, 49, 4, 50, 4, 4, 51, 52, 53, 54,
706 55, 55, 56, 55, 46, 55, 57, 58, 51, 59,
707 60, 51, 61, 62, 46, 63, 46, 28, 4, 4,
708 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
709 74, 75, 76, 51, 77, 60, 61, 62, 46, 46,
710 78, 46, 79, 4, 80, 81, 81, 81, 81, 84,
711 87, 88, 89, 734, 734, 82, 85, 85, 85, 85,
712 110, 733, 90, 94, 91, 92, 114, 155, 80, 93,
713 94, 94, 95, 82, 734, 734, 225, 82, 226, 117,
714 734, 413, 96, 97, 98, 99, 99, 99, 99, 100,
715 414, 115, 110, 101, 101, 101, 101, 101, 101, 101,
717 101, 82, 101, 82, 82, 101, 101, 101, 101, 101,
718 82, 82, 101, 82, 146, 113, 111, 101, 101, 101,
719 101, 101, 101, 101, 101, 101, 101, 101, 101, 82,
720 101, 101, 101, 101, 82, 82, 82, 82, 82, 104,
721 118, 105, 106, 106, 106, 106, 107, 110, 168, 108,
722 734, 136, 734, 135, 135, 686, 89, 110, 144, 103,
723 163, 82, 734, 147, 119, 712, 156, 734, 91, 157,
724 104, 734, 734, 158, 109, 109, 109, 109, 109, 109,
725 109, 109, 109, 109, 109, 109, 105, 136, 136, 135,
726 135, 135, 82, 170, 108, 580, 174, 136, 136, 123,
728 124, 287, 82, 113, 155, 150, 125, 135, 135, 148,
729 125, 116, 206, 207, 155, 218, 125, 702, 210, 120,
730 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
731 120, 126, 127, 127, 127, 126, 126, 126, 126, 126,
732 126, 126, 126, 126, 128, 126, 126, 94, 175, 251,
733 179, 126, 126, 126, 126, 734, 173, 154, 734, 734,
734 708, 734, 734, 734, 155, 225, 188, 226, 187, 187,
735 216, 217, 176, 196, 152, 171, 126, 130, 126, 211,
736 136, 136, 130, 135, 135, 135, 136, 136, 136, 136,
737 135, 135, 135, 734, 135, 135, 135, 451, 734, 150,
739 172, 126, 126, 131, 287, 734, 132, 132, 132, 132,
740 133, 114, 400, 151, 151, 151, 151, 225, 136, 136,
741 94, 94, 94, 136, 136, 135, 135, 135, 135, 135,
742 135, 293, 294, 734, 134, 502, 115, 502, 135, 135,
743 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
744 110, 734, 213, 734, 214, 204, 335, 82, 452, 215,
745 137, 401, 198, 138, 138, 138, 138, 139, 152, 155,
746 82, 81, 81, 81, 81, 699, 136, 136, 142, 142,
747 142, 580, 155, 707, 135, 135, 135, 141, 141, 141,
748 581, 140, 94, 94, 94, 141, 141, 141, 142, 142,
750 142, 142, 142, 142, 142, 142, 143, 94, 94, 95,
751 197, 199, 206, 336, 82, 234, 234, 234, 234, 159,
752 97, 98, 160, 160, 160, 160, 161, 206, 336, 470,
753 162, 162, 162, 162, 162, 162, 162, 162, 154, 162,
754 154, 154, 162, 162, 162, 162, 162, 154, 154, 162,
755 154, 338, 339, 470, 162, 162, 162, 162, 162, 162,
756 162, 162, 162, 162, 162, 162, 154, 162, 162, 162,
757 162, 154, 154, 154, 154, 154, 82, 110, 734, 150,
758 82, 164, 384, 105, 165, 165, 165, 165, 166, 695,
759 201, 108, 155, 151, 151, 151, 151, 734, 234, 234,
761 234, 234, 82, 188, 188, 702, 187, 187, 187, 386,
762 288, 289, 164, 734, 155, 130, 167, 167, 167, 167,
763 167, 167, 167, 167, 167, 167, 167, 167, 82, 180,
764 181, 734, 400, 734, 240, 105, 182, 700, 188, 188,
765 155, 82, 82, 108, 187, 187, 187, 110, 152, 290,
766 291, 387, 82, 155, 155, 103, 188, 188, 188, 188,
767 187, 187, 187, 734, 155, 187, 187, 187, 177, 177,
768 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
769 183, 490, 734, 184, 184, 184, 184, 185, 188, 188,
770 187, 187, 187, 94, 94, 94, 82, 82, 82, 200,
772 182, 503, 82, 699, 170, 221, 182, 222, 155, 155,
773 155, 186, 223, 734, 155, 187, 187, 188, 188, 188,
774 188, 188, 188, 188, 188, 188, 188, 110, 234, 234,
775 234, 234, 734, 246, 246, 246, 246, 189, 188, 188,
776 190, 190, 190, 190, 191, 171, 187, 187, 187, 734,
777 332, 311, 234, 234, 234, 234, 303, 188, 188, 82,
778 239, 410, 187, 187, 187, 399, 411, 412, 192, 734,
779 172, 155, 193, 193, 193, 194, 194, 194, 194, 194,
780 194, 194, 194, 195, 734, 234, 234, 234, 234, 696,
781 204, 293, 294, 303, 194, 194, 194, 208, 208, 208,
783 208, 209, 244, 193, 193, 193, 150, 268, 692, 188,
784 188, 354, 94, 234, 234, 234, 234, 333, 468, 187,
785 187, 355, 82, 173, 734, 249, 338, 339, 355, 734,
786 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
787 227, 227, 229, 338, 339, 234, 234, 234, 234, 230,
788 265, 265, 265, 265, 276, 276, 276, 276, 265, 265,
789 265, 265, 247, 276, 276, 276, 276, 299, 299, 299,
790 299, 384, 471, 229, 103, 152, 469, 231, 231, 231,
791 231, 231, 231, 231, 231, 231, 231, 231, 231, 235,
792 250, 236, 150, 82, 279, 239, 472, 237, 417, 453,
794 82, 550, 238, 692, 130, 155, 151, 151, 151, 151,
795 283, 82, 155, 235, 386, 236, 299, 299, 299, 299,
796 479, 687, 237, 155, 606, 551, 238, 126, 127, 127,
797 127, 126, 126, 126, 126, 126, 126, 126, 126, 126,
798 126, 126, 126, 299, 299, 299, 299, 126, 126, 126,
799 126, 302, 301, 130, 82, 103, 387, 304, 686, 82,
800 454, 152, 299, 299, 299, 299, 155, 307, 307, 307,
801 307, 155, 126, 130, 126, 300, 299, 299, 299, 299,
802 82, 82, 374, 290, 299, 299, 299, 299, 299, 299,
803 299, 299, 155, 155, 685, 374, 374, 126, 126, 126,
805 252, 252, 252, 253, 82, 126, 126, 126, 126, 126,
806 126, 82, 305, 126, 126, 504, 155, 492, 82, 126,
807 126, 309, 126, 155, 310, 308, 318, 318, 318, 318,
808 155, 82, 457, 311, 327, 327, 327, 327, 305, 356,
809 356, 356, 356, 155, 126, 130, 458, 103, 82, 568,
810 416, 568, 327, 327, 327, 327, 318, 318, 318, 318,
811 155, 357, 357, 357, 357, 331, 493, 103, 629, 126,
812 126, 255, 255, 255, 255, 255, 255, 255, 255, 255,
813 255, 255, 255, 256, 300, 290, 82, 257, 359, 359,
814 359, 359, 330, 734, 258, 399, 259, 688, 260, 260,
816 260, 360, 360, 360, 360, 150, 485, 260, 82, 82,
817 260, 390, 548, 260, 260, 103, 447, 82, 257, 486,
818 155, 155, 261, 261, 261, 262, 262, 262, 262, 262,
819 262, 262, 261, 262, 685, 260, 548, 394, 260, 135,
820 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
821 135, 264, 361, 361, 361, 361, 432, 372, 265, 265,
822 265, 265, 204, 335, 266, 103, 267, 267, 267, 208,
823 208, 208, 208, 209, 152, 267, 204, 335, 267, 630,
824 373, 267, 267, 340, 340, 340, 340, 82, 349, 82,
825 267, 267, 267, 82, 268, 359, 359, 359, 359, 155,
827 267, 155, 682, 267, 373, 155, 267, 269, 269, 269,
828 269, 269, 269, 269, 269, 269, 269, 269, 269, 270,
829 391, 391, 391, 391, 681, 661, 271, 82, 390, 369,
830 359, 359, 359, 359, 391, 391, 391, 391, 433, 155,
831 103, 252, 252, 252, 253, 359, 359, 359, 359, 427,
832 270, 491, 103, 492, 272, 272, 272, 273, 273, 273,
833 273, 273, 273, 273, 272, 273, 275, 275, 275, 275,
834 275, 275, 275, 275, 275, 275, 275, 275, 229, 370,
835 379, 276, 276, 276, 276, 230, 130, 264, 356, 356,
836 356, 356, 418, 398, 392, 392, 392, 392, 390, 82,
838 266, 419, 561, 546, 403, 403, 403, 403, 455, 229,
839 569, 155, 479, 277, 277, 277, 231, 278, 231, 231,
840 231, 231, 231, 277, 231, 94, 94, 94, 546, 491,
841 394, 679, 82, 403, 403, 403, 403, 154, 97, 363,
842 160, 160, 160, 160, 155, 556, 363, 678, 162, 162,
843 162, 162, 162, 162, 162, 162, 154, 162, 154, 154,
844 162, 162, 162, 162, 162, 154, 154, 162, 154, 456,
845 363, 489, 162, 162, 162, 162, 162, 162, 162, 162,
846 162, 162, 162, 162, 154, 162, 162, 162, 162, 154,
847 154, 154, 154, 154, 82, 405, 405, 405, 405, 420,
849 420, 420, 420, 734, 264, 400, 155, 359, 359, 359,
850 359, 404, 404, 404, 404, 399, 734, 266, 82, 82,
851 82, 359, 359, 359, 359, 431, 420, 420, 420, 420,
852 155, 155, 155, 673, 295, 295, 295, 295, 295, 295,
853 295, 295, 295, 295, 295, 295, 296, 394, 150, 734,
854 353, 672, 103, 297, 401, 82, 734, 268, 103, 689,
855 82, 426, 409, 409, 409, 409, 82, 155, 421, 421,
856 421, 421, 155, 443, 443, 443, 443, 296, 155, 671,
857 734, 298, 298, 298, 298, 298, 298, 298, 298, 298,
858 298, 298, 298, 312, 312, 312, 312, 312, 312, 312,
860 312, 312, 312, 312, 312, 256, 607, 82, 103, 313,
861 429, 670, 446, 82, 82, 485, 314, 152, 259, 155,
862 315, 315, 315, 429, 429, 155, 155, 82, 734, 315,
863 82, 82, 315, 399, 667, 315, 315, 666, 290, 155,
864 313, 659, 155, 155, 316, 316, 316, 317, 317, 317,
865 317, 317, 317, 317, 316, 317, 290, 315, 430, 646,
866 315, 187, 187, 187, 187, 187, 187, 187, 187, 187,
867 187, 187, 187, 82, 264, 320, 460, 460, 460, 460,
868 82, 318, 318, 318, 318, 155, 658, 266, 82, 319,
869 319, 319, 155, 103, 400, 221, 103, 222, 319, 82,
871 155, 319, 223, 509, 319, 319, 461, 461, 461, 461,
872 82, 155, 82, 319, 319, 319, 82, 320, 421, 421,
873 421, 421, 155, 319, 155, 103, 319, 510, 155, 319,
874 321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
875 321, 321, 322, 441, 715, 82, 204, 522, 654, 323,
876 674, 523, 425, 421, 421, 421, 421, 155, 514, 570,
877 82, 484, 484, 484, 484, 150, 717, 637, 421, 421,
878 421, 421, 155, 322, 434, 688, 520, 324, 324, 324,
879 325, 325, 325, 325, 325, 325, 325, 324, 325, 326,
880 326, 326, 326, 326, 326, 326, 326, 326, 326, 326,
882 326, 296, 426, 434, 327, 327, 327, 327, 297, 82,
883 372, 390, 103, 152, 82, 82, 653, 438, 438, 438,
884 438, 155, 438, 438, 438, 438, 155, 155, 480, 480,
885 480, 580, 296, 428, 152, 282, 328, 328, 328, 298,
886 329, 298, 298, 298, 298, 298, 328, 298, 362, 103,
887 82, 536, 390, 645, 103, 363, 82, 428, 442, 442,
888 442, 442, 155, 537, 442, 442, 442, 442, 155, 395,
889 455, 675, 644, 481, 355, 495, 495, 495, 495, 362,
890 643, 355, 396, 364, 364, 364, 364, 364, 364, 364,
891 364, 364, 364, 364, 364, 380, 380, 103, 380, 380,
893 380, 380, 380, 647, 380, 380, 380, 380, 660, 380,
894 380, 82, 489, 399, 734, 380, 380, 380, 380, 421,
895 421, 421, 421, 155, 82, 639, 485, 734, 639, 103,
896 400, 456, 421, 421, 421, 421, 155, 204, 335, 486,
897 380, 380, 380, 395, 450, 450, 450, 450, 492, 82,
898 461, 461, 461, 461, 713, 320, 396, 734, 638, 539,
899 382, 155, 568, 416, 568, 380, 380, 126, 252, 252,
900 252, 253, 540, 126, 126, 126, 126, 126, 126, 441,
901 703, 126, 126, 82, 150, 491, 489, 126, 126, 717,
902 126, 461, 461, 461, 461, 155, 82, 493, 496, 496,
904 496, 496, 468, 290, 89, 498, 82, 82, 155, 388,
905 655, 388, 126, 130, 497, 499, 91, 98, 155, 155,
906 82, 93, 100, 82, 82, 620, 491, 398, 505, 505,
907 505, 505, 155, 506, 655, 155, 155, 126, 126, 264,
908 538, 538, 538, 538, 635, 82, 507, 480, 480, 480,
909 515, 584, 266, 152, 267, 267, 267, 155, 282, 82,
910 508, 634, 416, 267, 82, 492, 267, 516, 440, 267,
911 267, 155, 557, 557, 557, 82, 155, 491, 267, 267,
912 267, 547, 268, 505, 505, 505, 505, 155, 267, 574,
913 628, 267, 481, 627, 267, 262, 262, 262, 262, 262,
915 262, 262, 262, 262, 262, 262, 262, 395, 110, 557,
916 557, 557, 548, 82, 519, 150, 577, 558, 82, 440,
917 396, 549, 397, 397, 397, 155, 626, 563, 82, 655,
918 155, 397, 717, 82, 397, 601, 548, 397, 397, 492,
919 155, 505, 505, 505, 505, 155, 397, 397, 397, 82,
920 398, 625, 625, 655, 558, 572, 397, 624, 393, 397,
921 393, 155, 397, 273, 273, 273, 273, 273, 273, 273,
922 273, 273, 273, 273, 273, 362, 468, 82, 110, 150,
923 572, 82, 363, 82, 564, 734, 539, 589, 519, 155,
924 579, 82, 82, 155, 560, 155, 600, 573, 734, 734,
926 590, 732, 576, 155, 155, 656, 362, 623, 622, 601,
927 406, 406, 406, 364, 407, 364, 364, 364, 364, 364,
928 406, 364, 82, 204, 335, 150, 82, 621, 586, 657,
929 582, 582, 582, 582, 155, 82, 593, 82, 155, 603,
930 603, 603, 603, 82, 82, 82, 593, 155, 152, 155,
931 620, 204, 522, 103, 590, 155, 155, 155, 582, 582,
932 582, 582, 298, 298, 298, 298, 298, 298, 298, 298,
933 298, 298, 298, 298, 422, 197, 608, 613, 636, 150,
934 82, 423, 150, 82, 663, 619, 618, 586, 82, 611,
935 614, 637, 155, 150, 152, 155, 603, 603, 603, 603,
937 155, 609, 612, 617, 633, 422, 616, 709, 664, 424,
938 424, 424, 424, 424, 424, 424, 424, 424, 424, 424,
939 424, 380, 380, 612, 380, 380, 380, 380, 380, 381,
940 380, 380, 380, 380, 150, 380, 380, 82, 82, 615,
941 631, 436, 380, 380, 380, 652, 632, 662, 152, 155,
942 155, 564, 82, 668, 150, 655, 416, 655, 150, 655,
943 683, 416, 152, 694, 155, 665, 380, 380, 380, 680,
944 631, 697, 655, 655, 655, 416, 695, 669, 655, 655,
945 416, 655, 651, 655, 677, 416, 437, 684, 605, 677,
946 604, 380, 380, 82, 264, 150, 655, 655, 655, 284,
948 697, 150, 655, 152, 150, 155, 693, 266, 677, 319,
949 319, 319, 706, 677, 416, 711, 416, 416, 319, 150,
950 561, 319, 560, 152, 319, 319, 602, 152, 599, 598,
951 714, 597, 596, 319, 319, 319, 595, 320, 594, 690,
952 593, 145, 677, 319, 677, 677, 319, 704, 416, 319,
953 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
954 317, 317, 395, 691, 152, 591, 677, 588, 677, 677,
955 152, 717, 717, 152, 705, 396, 677, 439, 439, 439,
956 416, 416, 718, 719, 717, 717, 439, 587, 152, 439,
957 586, 584, 439, 439, 583, 720, 721, 535, 710, 535,
959 677, 439, 439, 439, 533, 440, 710, 533, 677, 677,
960 531, 439, 531, 529, 439, 529, 527, 439, 325, 325,
961 325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
962 422, 527, 677, 677, 525, 525, 717, 423, 717, 717,
963 282, 282, 416, 575, 717, 717, 717, 722, 717, 723,
964 724, 717, 717, 282, 282, 725, 726, 727, 566, 728,
965 565, 422, 729, 730, 225, 444, 444, 444, 424, 445,
966 424, 424, 424, 424, 424, 444, 424, 364, 364, 364,
967 364, 364, 364, 364, 364, 364, 364, 364, 364, 473,
968 473, 218, 473, 473, 473, 473, 473, 490, 473, 473,
970 473, 473, 562, 473, 473, 282, 489, 282, 282, 473,
971 473, 473, 473, 282, 282, 282, 717, 282, 560, 483,
972 282, 282, 110, 555, 554, 553, 552, 731, 468, 110,
973 545, 544, 543, 542, 473, 473, 473, 458, 535, 533,
974 531, 475, 529, 527, 525, 207, 521, 517, 287, 416,
975 501, 500, 86, 219, 475, 475, 494, 394, 395, 473,
976 473, 380, 380, 390, 380, 380, 380, 380, 380, 483,
977 380, 380, 380, 380, 478, 380, 380, 477, 476, 219,
978 467, 380, 380, 380, 380, 282, 466, 465, 464, 463,
979 462, 225, 225, 219, 218, 218, 218, 344, 344, 342,
981 342, 207, 448, 287, 287, 287, 380, 380, 380, 286,
982 416, 286, 379, 408, 370, 264, 390, 256, 378, 377,
983 376, 375, 371, 368, 367, 366, 365, 353, 353, 352,
984 351, 380, 380, 380, 380, 350, 380, 380, 380, 380,
985 380, 349, 380, 380, 380, 380, 349, 380, 380, 348,
986 347, 346, 345, 380, 380, 380, 380, 344, 342, 335,
987 334, 287, 287, 306, 287, 287, 286, 284, 282, 281,
988 219, 280, 244, 130, 250, 248, 219, 245, 380, 380,
989 380, 243, 242, 242, 241, 103, 225, 224, 218, 219,
990 218, 212, 204, 202, 178, 734, 169, 153, 145, 122,
992 121, 116, 734, 380, 380, 485, 112, 103, 86, 734,
993 734, 734, 734, 734, 734, 734, 734, 734, 486, 734,
994 487, 487, 487, 734, 734, 734, 734, 734, 734, 487,
995 734, 734, 487, 734, 734, 487, 487, 734, 734, 734,
996 734, 734, 734, 734, 487, 487, 487, 734, 734, 734,
997 734, 734, 734, 734, 487, 734, 734, 487, 734, 734,
998 487, 395, 734, 734, 734, 734, 734, 734, 734, 734,
999 734, 734, 734, 734, 396, 734, 397, 397, 397, 734,
1000 734, 734, 734, 734, 734, 397, 734, 734, 397, 734,
1001 734, 397, 397, 734, 734, 734, 734, 734, 734, 734,
1003 397, 397, 397, 734, 398, 734, 734, 734, 734, 734,
1004 397, 734, 734, 397, 734, 734, 397, 82, 734, 734,
1005 734, 734, 734, 734, 734, 734, 734, 734, 734, 155,
1006 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1007 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1008 734, 734, 734, 734, 734, 734, 734, 424, 424, 424,
1009 424, 424, 424, 424, 424, 424, 424, 424, 424, 473,
1010 473, 734, 473, 473, 473, 473, 473, 474, 473, 473,
1011 473, 473, 734, 473, 473, 734, 734, 734, 734, 512,
1012 473, 473, 473, 734, 734, 734, 734, 734, 734, 734,
1014 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1015 734, 734, 734, 734, 473, 473, 473, 734, 734, 734,
1016 734, 513, 734, 734, 734, 734, 734, 734, 734, 734,
1017 734, 734, 734, 734, 513, 513, 734, 734, 734, 473,
1018 473, 380, 380, 734, 380, 380, 380, 380, 380, 381,
1019 380, 380, 380, 380, 734, 380, 380, 734, 734, 734,
1020 734, 436, 380, 380, 380, 734, 734, 734, 734, 734,
1021 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1022 734, 734, 734, 734, 734, 734, 380, 380, 380, 734,
1023 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1025 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1026 734, 380, 380, 380, 380, 734, 380, 380, 380, 380,
1027 380, 381, 380, 380, 380, 380, 734, 380, 380, 734,
1028 734, 734, 734, 436, 380, 380, 380, 734, 734, 734,
1029 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1030 734, 734, 734, 734, 734, 734, 734, 734, 380, 380,
1031 380, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1032 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1033 734, 734, 734, 380, 380, 82, 485, 734, 734, 734,
1034 734, 734, 734, 734, 734, 734, 734, 155, 734, 486,
1036 734, 518, 518, 518, 734, 734, 734, 734, 734, 734,
1037 518, 734, 734, 518, 734, 734, 518, 518, 734, 734,
1038 734, 734, 734, 734, 734, 518, 518, 518, 734, 734,
1039 734, 734, 734, 734, 734, 518, 734, 734, 518, 734,
1040 734, 518, 395, 734, 734, 734, 734, 734, 734, 734,
1041 734, 734, 734, 734, 734, 396, 734, 439, 439, 439,
1042 734, 734, 734, 734, 734, 734, 439, 734, 734, 439,
1043 734, 734, 439, 439, 734, 734, 734, 734, 734, 734,
1044 734, 439, 439, 439, 734, 440, 734, 734, 734, 734,
1045 734, 439, 734, 734, 439, 734, 734, 439, 539, 734,
1047 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1048 734, 540, 734, 541, 541, 541, 734, 734, 734, 734,
1049 734, 734, 541, 734, 734, 541, 734, 734, 541, 541,
1050 734, 734, 734, 734, 734, 734, 734, 541, 541, 541,
1051 734, 734, 734, 734, 734, 734, 734, 541, 734, 734,
1052 541, 734, 734, 541, 473, 473, 734, 473, 473, 473,
1053 473, 473, 734, 473, 473, 473, 473, 734, 473, 473,
1054 734, 734, 734, 734, 473, 473, 473, 473, 734, 734,
1055 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1056 734, 734, 734, 734, 734, 734, 734, 734, 734, 473,
1058 473, 473, 734, 734, 734, 734, 734, 734, 734, 734,
1059 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1060 734, 734, 734, 734, 473, 473, 473, 473, 734, 473,
1061 473, 473, 473, 473, 734, 473, 473, 473, 473, 734,
1062 473, 473, 734, 734, 734, 734, 473, 473, 473, 473,
1063 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1064 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1065 734, 473, 473, 473, 734, 734, 734, 734, 475, 734,
1066 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1067 734, 475, 475, 734, 734, 734, 473, 473, 539, 734,
1069 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1070 734, 540, 734, 571, 571, 571, 734, 734, 734, 734,
1071 734, 734, 571, 734, 734, 571, 734, 734, 571, 571,
1072 734, 734, 734, 734, 734, 734, 734, 571, 571, 571,
1073 734, 734, 734, 734, 734, 734, 734, 571, 734, 734,
1074 571, 734, 734, 571, 473, 473, 734, 473, 473, 473,
1075 473, 473, 474, 473, 473, 473, 473, 734, 473, 473,
1076 734, 734, 734, 734, 512, 473, 473, 473, 734, 734,
1077 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1078 734, 734, 734, 734, 734, 734, 734, 734, 734, 473,
1080 473, 473, 734, 734, 734, 734, 734, 734, 734, 734,
1081 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1082 734, 734, 734, 734, 473, 473, 473, 473, 734, 473,
1083 473, 473, 473, 473, 474, 473, 473, 473, 473, 734,
1084 473, 473, 734, 734, 734, 734, 512, 473, 473, 473,
1085 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1086 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1087 734, 473, 473, 473, 734, 734, 734, 734, 513, 734,
1088 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1089 734, 513, 513, 734, 734, 734, 473, 473, 640, 640,
1091 734, 640, 640, 640, 640, 640, 734, 640, 640, 640,
1092 640, 734, 640, 640, 734, 734, 734, 734, 640, 640,
1093 640, 640, 734, 734, 734, 734, 734, 734, 642, 734,
1094 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1095 734, 734, 734, 640, 640, 640, 734, 734, 734, 734,
1096 734, 734, 642, 734, 734, 734, 734, 734, 734, 734,
1097 734, 734, 734, 734, 734, 734, 734, 734, 640, 640,
1098 640, 640, 734, 640, 640, 640, 640, 640, 641, 640,
1099 640, 640, 640, 734, 640, 640, 734, 734, 734, 734,
1100 649, 640, 640, 640, 734, 734, 734, 734, 734, 734,
1102 650, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1103 734, 734, 734, 734, 734, 640, 640, 640, 734, 734,
1104 734, 734, 734, 734, 650, 734, 734, 734, 734, 734,
1105 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1106 640, 640, 640, 640, 734, 640, 640, 640, 640, 640,
1107 734, 640, 640, 640, 640, 734, 640, 640, 734, 734,
1108 734, 734, 640, 640, 640, 640, 734, 734, 734, 734,
1109 734, 734, 642, 734, 734, 734, 734, 734, 734, 734,
1110 734, 734, 734, 734, 734, 734, 734, 640, 640, 640,
1111 734, 734, 734, 734, 734, 734, 642, 734, 734, 734,
1113 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1114 734, 734, 640, 640, 640, 640, 734, 640, 640, 640,
1115 640, 640, 641, 640, 640, 640, 640, 734, 640, 640,
1116 734, 734, 734, 734, 649, 640, 640, 640, 734, 734,
1117 734, 734, 734, 734, 650, 734, 734, 734, 734, 734,
1118 734, 734, 734, 734, 734, 734, 734, 734, 734, 640,
1119 640, 640, 734, 734, 734, 734, 734, 734, 650, 734,
1120 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1121 734, 734, 734, 734, 640, 640, 82, 734, 734, 82,
1122 82, 734, 734, 82, 82, 82, 82, 82, 83, 83,
1124 83, 83, 83, 734, 83, 83, 83, 83, 83, 83,
1125 83, 83, 83, 102, 102, 102, 102, 102, 102, 102,
1126 102, 102, 102, 102, 102, 102, 102, 102, 129, 129,
1127 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
1128 129, 129, 129, 149, 149, 149, 149, 149, 149, 149,
1129 149, 149, 149, 149, 149, 149, 149, 149, 154, 734,
1130 734, 154, 154, 154, 734, 154, 154, 154, 154, 154,
1131 203, 203, 203, 203, 203, 734, 203, 203, 203, 203,
1132 203, 203, 203, 203, 203, 205, 205, 205, 205, 205,
1133 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
1135 220, 220, 734, 734, 734, 734, 734, 734, 734, 220,
1136 220, 220, 220, 220, 228, 228, 228, 232, 232, 232,
1137 233, 233, 233, 126, 126, 126, 126, 126, 126, 126,
1138 126, 126, 126, 126, 126, 126, 126, 126, 254, 254,
1139 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
1140 254, 254, 254, 263, 263, 263, 274, 274, 274, 150,
1141 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1142 150, 150, 150, 150, 285, 285, 285, 285, 285, 285,
1143 285, 285, 285, 285, 285, 285, 285, 285, 285, 154,
1144 734, 734, 154, 154, 154, 734, 154, 154, 154, 154,
1146 154, 292, 292, 292, 292, 292, 292, 292, 292, 292,
1147 292, 292, 292, 292, 292, 292, 203, 203, 203, 203,
1148 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
1149 203, 205, 205, 205, 205, 205, 205, 205, 205, 205,
1150 205, 205, 205, 205, 205, 205, 206, 206, 206, 206,
1151 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
1152 206, 337, 337, 337, 337, 337, 337, 337, 337, 337,
1153 337, 337, 337, 337, 337, 337, 341, 341, 734, 341,
1154 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
1155 341, 343, 343, 734, 343, 343, 343, 343, 343, 343,
1157 343, 343, 343, 343, 343, 343, 358, 358, 358, 381,
1158 381, 734, 381, 381, 381, 381, 381, 381, 381, 381,
1159 381, 381, 381, 381, 383, 383, 383, 383, 383, 383,
1160 383, 383, 383, 383, 383, 383, 383, 383, 383, 126,
1161 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1162 126, 126, 126, 126, 385, 385, 385, 385, 385, 385,
1163 385, 385, 385, 385, 385, 385, 385, 385, 385, 254,
1164 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
1165 254, 254, 254, 254, 389, 389, 389, 393, 734, 734,
1166 393, 734, 393, 393, 734, 393, 734, 393, 402, 402,
1168 402, 285, 285, 285, 285, 285, 285, 285, 285, 285,
1169 285, 285, 285, 285, 285, 285, 415, 415, 415, 415,
1170 415, 415, 415, 415, 415, 415, 415, 415, 415, 415,
1171 415, 154, 734, 734, 154, 154, 154, 734, 154, 154,
1172 154, 154, 154, 292, 292, 292, 292, 292, 292, 292,
1173 292, 292, 292, 292, 292, 292, 292, 292, 102, 102,
1174 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1175 102, 102, 102, 435, 435, 734, 435, 435, 435, 435,
1176 435, 435, 435, 435, 435, 435, 435, 435, 337, 337,
1177 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
1179 337, 337, 337, 449, 449, 449, 449, 734, 449, 449,
1180 449, 449, 449, 449, 449, 449, 449, 449, 203, 203,
1181 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
1182 203, 203, 203, 341, 341, 734, 341, 341, 341, 341,
1183 341, 341, 341, 341, 341, 341, 341, 341, 343, 343,
1184 734, 343, 343, 343, 343, 343, 343, 343, 343, 343,
1185 343, 343, 343, 459, 734, 459, 734, 734, 734, 459,
1186 459, 459, 474, 474, 734, 474, 474, 474, 474, 474,
1187 474, 474, 474, 474, 474, 474, 474, 380, 380, 734,
1188 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
1190 380, 380, 381, 381, 734, 381, 381, 381, 381, 381,
1191 381, 381, 381, 381, 381, 381, 381, 383, 383, 383,
1192 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
1193 383, 383, 385, 385, 385, 385, 385, 385, 385, 385,
1194 385, 385, 385, 385, 385, 385, 385, 126, 126, 126,
1195 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1196 126, 126, 482, 482, 482, 482, 482, 482, 482, 482,
1197 482, 482, 482, 482, 482, 482, 482, 488, 734, 734,
1198 734, 734, 488, 488, 734, 488, 734, 488, 415, 415,
1199 415, 415, 415, 415, 415, 415, 415, 415, 415, 415,
1201 415, 415, 415, 102, 102, 102, 102, 102, 102, 102,
1202 102, 102, 102, 102, 102, 102, 102, 102, 511, 511,
1203 734, 511, 511, 511, 511, 511, 511, 511, 511, 511,
1204 511, 511, 511, 435, 435, 734, 435, 435, 435, 435,
1205 435, 435, 435, 435, 435, 435, 435, 435, 449, 449,
1206 449, 449, 734, 449, 449, 449, 449, 449, 449, 449,
1207 449, 449, 449, 203, 203, 203, 203, 203, 203, 203,
1208 203, 203, 203, 203, 203, 203, 203, 203, 524, 524,
1209 734, 524, 524, 524, 524, 524, 524, 524, 524, 524,
1210 524, 524, 524, 526, 526, 734, 526, 526, 526, 526,
1212 526, 526, 526, 526, 526, 526, 526, 526, 528, 528,
1213 734, 528, 528, 528, 528, 528, 528, 528, 528, 528,
1214 528, 528, 528, 530, 530, 734, 530, 530, 530, 530,
1215 530, 530, 530, 530, 530, 530, 530, 530, 532, 532,
1216 734, 532, 532, 532, 532, 532, 532, 532, 532, 532,
1217 532, 532, 532, 534, 534, 734, 534, 534, 534, 534,
1218 534, 534, 534, 534, 534, 534, 534, 534, 473, 473,
1219 734, 473, 473, 473, 473, 473, 473, 473, 473, 473,
1220 473, 473, 473, 474, 474, 734, 474, 474, 474, 474,
1221 474, 474, 474, 474, 474, 474, 474, 474, 383, 383,
1223 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
1224 383, 383, 383, 126, 126, 126, 126, 126, 126, 126,
1225 126, 126, 126, 126, 126, 126, 126, 126, 482, 482,
1226 482, 482, 482, 482, 482, 482, 482, 482, 482, 482,
1227 482, 482, 482, 559, 734, 734, 734, 734, 559, 559,
1228 734, 559, 567, 567, 567, 567, 567, 567, 567, 567,
1229 567, 567, 567, 567, 567, 567, 567, 102, 102, 102,
1230 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1231 102, 102, 511, 511, 734, 511, 511, 511, 511, 511,
1232 511, 511, 511, 511, 511, 511, 511, 578, 578, 578,
1234 578, 578, 578, 578, 578, 578, 578, 578, 578, 578,
1235 578, 578, 585, 734, 734, 734, 734, 585, 585, 734,
1236 585, 592, 592, 734, 592, 592, 592, 592, 592, 592,
1237 592, 592, 592, 592, 592, 592, 610, 610, 610, 610,
1238 610, 610, 610, 610, 610, 610, 610, 610, 610, 610,
1239 610, 641, 641, 734, 641, 641, 641, 641, 641, 641,
1240 641, 641, 641, 641, 641, 641, 648, 648, 734, 648,
1241 648, 648, 648, 648, 648, 648, 648, 648, 648, 648,
1242 648, 640, 640, 734, 640, 640, 640, 640, 640, 640,
1243 640, 640, 640, 640, 640, 640, 676, 676, 676, 676,
1245 676, 676, 676, 676, 676, 676, 676, 676, 676, 676,
1246 676, 698, 698, 698, 698, 698, 698, 698, 698, 698,
1247 698, 698, 698, 698, 698, 698, 701, 701, 701, 701,
1248 701, 701, 701, 701, 701, 701, 701, 701, 701, 701,
1249 701, 716, 716, 716, 716, 716, 716, 716, 716, 716,
1250 716, 716, 716, 716, 716, 716, 3, 734, 734, 734,
1251 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1252 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1253 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1254 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1256 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1257 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1258 734, 734, 734, 734, 734, 734, 734, 734, 734
1261 static yyconst short int yy_chk[5130] =
1263 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1264 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1265 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1266 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1267 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1268 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1269 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1270 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
1271 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1272 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1274 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1275 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1276 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1277 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1278 2, 2, 2, 2, 5, 6, 6, 6, 6, 8,
1279 10, 10, 11, 20, 22, 46, 8, 8, 8, 8,
1280 16, 732, 11, 13, 11, 11, 20, 46, 5, 11,
1281 12, 12, 12, 13, 18, 13, 98, 12, 98, 22,
1282 13, 286, 12, 12, 12, 12, 12, 12, 12, 12,
1283 286, 20, 52, 12, 12, 12, 12, 12, 12, 12,
1285 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1286 12, 12, 12, 12, 42, 18, 16, 12, 12, 12,
1287 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1288 12, 12, 12, 12, 12, 12, 12, 12, 12, 15,
1289 23, 15, 15, 15, 15, 15, 15, 27, 52, 15,
1290 23, 31, 54, 31, 31, 712, 47, 43, 31, 50,
1291 50, 47, 32, 42, 23, 708, 47, 27, 47, 47,
1292 15, 58, 40, 47, 15, 15, 15, 15, 15, 15,
1293 15, 15, 15, 15, 15, 15, 24, 32, 32, 32,
1294 32, 32, 62, 54, 24, 707, 58, 40, 40, 27,
1296 27, 158, 57, 32, 62, 149, 27, 40, 40, 43,
1297 43, 40, 84, 84, 57, 158, 43, 701, 86, 24,
1298 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
1299 24, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1300 28, 28, 28, 28, 28, 28, 28, 49, 59, 128,
1301 62, 28, 28, 28, 28, 33, 57, 49, 59, 49,
1302 700, 34, 56, 36, 49, 351, 66, 351, 66, 66,
1303 90, 90, 59, 66, 149, 56, 28, 28, 28, 86,
1304 33, 33, 128, 33, 33, 33, 34, 34, 36, 36,
1305 34, 34, 34, 37, 36, 36, 36, 349, 35, 44,
1307 56, 28, 28, 29, 161, 29, 29, 29, 29, 29,
1308 29, 35, 268, 44, 44, 44, 44, 161, 37, 37,
1309 94, 94, 94, 35, 35, 37, 37, 37, 35, 35,
1310 35, 163, 163, 39, 29, 416, 35, 416, 29, 29,
1311 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1312 30, 38, 89, 39, 89, 203, 203, 77, 349, 89,
1313 30, 268, 77, 30, 30, 30, 30, 30, 44, 77,
1314 76, 81, 81, 81, 81, 698, 38, 38, 39, 39,
1315 39, 521, 76, 696, 38, 38, 38, 39, 39, 39,
1316 521, 30, 97, 97, 97, 30, 30, 30, 30, 30,
1318 30, 30, 30, 30, 30, 30, 30, 48, 48, 48,
1319 76, 77, 204, 204, 48, 109, 109, 109, 109, 48,
1320 48, 48, 48, 48, 48, 48, 48, 205, 205, 372,
1321 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
1322 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
1323 48, 207, 207, 372, 48, 48, 48, 48, 48, 48,
1324 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
1325 48, 48, 48, 48, 48, 48, 51, 63, 68, 79,
1326 154, 51, 251, 51, 51, 51, 51, 51, 51, 694,
1327 79, 51, 154, 79, 79, 79, 79, 63, 112, 112,
1329 112, 112, 156, 68, 68, 688, 68, 68, 68, 253,
1330 156, 156, 51, 71, 156, 251, 51, 51, 51, 51,
1331 51, 51, 51, 51, 51, 51, 51, 51, 60, 63,
1332 63, 69, 394, 72, 112, 60, 63, 687, 71, 71,
1333 60, 157, 159, 60, 71, 71, 71, 78, 79, 157,
1334 159, 253, 78, 157, 159, 418, 69, 69, 72, 72,
1335 69, 69, 69, 67, 78, 72, 72, 72, 60, 60,
1336 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
1337 64, 394, 64, 64, 64, 64, 64, 64, 67, 67,
1338 67, 67, 67, 95, 95, 95, 162, 172, 182, 78,
1340 78, 418, 200, 686, 67, 95, 78, 95, 162, 172,
1341 182, 64, 95, 73, 200, 64, 64, 64, 64, 64,
1342 64, 64, 64, 64, 64, 64, 64, 65, 111, 111,
1343 111, 111, 70, 120, 120, 120, 120, 65, 73, 73,
1344 65, 65, 65, 65, 65, 70, 73, 73, 73, 74,
1345 200, 182, 117, 117, 117, 117, 172, 70, 70, 171,
1346 111, 284, 70, 70, 70, 267, 284, 284, 65, 74,
1347 70, 171, 65, 65, 65, 65, 65, 65, 65, 65,
1348 65, 65, 65, 65, 75, 123, 123, 123, 123, 682,
1349 85, 292, 292, 171, 74, 74, 74, 85, 85, 85,
1351 85, 85, 117, 74, 74, 74, 201, 267, 679, 75,
1352 75, 226, 99, 121, 121, 121, 121, 201, 371, 75,
1353 75, 226, 99, 75, 99, 123, 336, 336, 226, 99,
1354 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1355 104, 104, 106, 337, 337, 124, 124, 124, 124, 106,
1356 136, 136, 136, 136, 142, 142, 142, 142, 144, 144,
1357 144, 144, 121, 143, 143, 143, 143, 167, 167, 167,
1358 167, 383, 373, 106, 569, 201, 371, 106, 106, 106,
1359 106, 106, 106, 106, 106, 106, 106, 106, 106, 110,
1360 124, 110, 151, 288, 144, 143, 373, 110, 288, 353,
1362 173, 470, 110, 678, 383, 288, 151, 151, 151, 151,
1363 151, 170, 173, 110, 385, 110, 169, 169, 169, 169,
1364 384, 673, 110, 170, 569, 470, 110, 127, 127, 127,
1365 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
1366 127, 127, 127, 168, 168, 168, 168, 127, 127, 127,
1367 127, 170, 169, 384, 176, 419, 385, 173, 672, 177,
1368 353, 151, 174, 174, 174, 174, 176, 177, 177, 177,
1369 177, 177, 127, 127, 127, 168, 178, 178, 178, 178,
1370 197, 179, 243, 176, 180, 180, 180, 180, 181, 181,
1371 181, 181, 197, 179, 671, 243, 243, 127, 127, 129,
1373 129, 129, 129, 129, 290, 129, 129, 129, 129, 129,
1374 129, 198, 174, 129, 129, 419, 290, 398, 188, 129,
1375 129, 179, 129, 198, 180, 178, 188, 188, 188, 188,
1376 188, 199, 355, 181, 194, 194, 194, 194, 197, 227,
1377 227, 227, 227, 199, 129, 129, 355, 674, 196, 502,
1378 502, 502, 195, 195, 195, 195, 196, 196, 196, 196,
1379 196, 228, 228, 228, 228, 198, 398, 606, 606, 129,
1380 129, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1381 131, 131, 131, 132, 195, 199, 229, 132, 231, 231,
1382 231, 231, 196, 229, 132, 393, 132, 674, 132, 132,
1384 132, 232, 232, 232, 232, 333, 484, 132, 308, 315,
1385 132, 315, 622, 132, 132, 607, 333, 229, 132, 484,
1386 308, 315, 132, 132, 132, 132, 132, 132, 132, 132,
1387 132, 132, 132, 132, 670, 132, 622, 393, 132, 134,
1388 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1389 134, 135, 233, 233, 233, 233, 308, 242, 135, 135,
1390 135, 135, 208, 208, 135, 647, 135, 135, 135, 208,
1391 208, 208, 208, 208, 333, 135, 209, 209, 135, 607,
1392 242, 135, 135, 209, 209, 209, 209, 309, 289, 302,
1393 135, 135, 135, 289, 135, 239, 239, 239, 239, 309,
1395 135, 302, 667, 135, 242, 289, 135, 137, 137, 137,
1396 137, 137, 137, 137, 137, 137, 137, 137, 137, 138,
1397 262, 262, 262, 262, 666, 647, 138, 420, 261, 239,
1398 249, 249, 249, 249, 261, 261, 261, 261, 309, 420,
1399 294, 252, 252, 252, 252, 240, 240, 240, 240, 302,
1400 138, 397, 503, 489, 138, 138, 138, 138, 138, 138,
1401 138, 138, 138, 138, 138, 138, 140, 140, 140, 140,
1402 140, 140, 140, 140, 140, 140, 140, 140, 141, 240,
1403 249, 141, 141, 141, 141, 141, 252, 263, 269, 269,
1404 269, 269, 294, 397, 263, 263, 263, 263, 272, 421,
1406 263, 294, 489, 467, 272, 272, 272, 272, 617, 141,
1407 503, 421, 479, 141, 141, 141, 141, 141, 141, 141,
1408 141, 141, 141, 141, 141, 160, 160, 160, 467, 488,
1409 263, 664, 160, 273, 273, 273, 273, 160, 160, 357,
1410 160, 160, 160, 160, 160, 479, 357, 663, 160, 160,
1411 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
1412 160, 160, 160, 160, 160, 160, 160, 160, 160, 617,
1413 357, 488, 160, 160, 160, 160, 160, 160, 160, 160,
1414 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
1415 160, 160, 160, 160, 164, 275, 275, 275, 275, 321,
1417 321, 321, 321, 485, 274, 278, 164, 278, 278, 278,
1418 278, 274, 274, 274, 274, 277, 485, 274, 295, 330,
1419 306, 277, 277, 277, 277, 306, 295, 295, 295, 295,
1420 295, 330, 306, 659, 164, 164, 164, 164, 164, 164,
1421 164, 164, 164, 164, 164, 164, 165, 274, 283, 363,
1422 291, 658, 570, 165, 278, 291, 363, 277, 675, 675,
1423 298, 330, 283, 283, 283, 283, 304, 291, 298, 298,
1424 298, 298, 298, 326, 326, 326, 326, 165, 304, 657,
1425 363, 165, 165, 165, 165, 165, 165, 165, 165, 165,
1426 165, 165, 165, 183, 183, 183, 183, 183, 183, 183,
1428 183, 183, 183, 183, 183, 184, 570, 331, 629, 184,
1429 304, 656, 331, 430, 305, 486, 184, 283, 184, 331,
1430 184, 184, 184, 304, 304, 430, 305, 431, 486, 184,
1431 417, 319, 184, 319, 654, 184, 184, 653, 417, 431,
1432 184, 645, 417, 319, 184, 184, 184, 184, 184, 184,
1433 184, 184, 184, 184, 184, 184, 431, 184, 305, 629,
1434 184, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1435 186, 186, 186, 187, 187, 319, 358, 358, 358, 358,
1436 428, 187, 187, 187, 187, 187, 644, 187, 320, 187,
1437 187, 187, 428, 660, 320, 498, 504, 498, 187, 441,
1439 320, 187, 498, 428, 187, 187, 364, 364, 364, 364,
1440 300, 441, 432, 187, 187, 187, 332, 187, 300, 300,
1441 300, 300, 300, 187, 432, 713, 187, 428, 332, 187,
1442 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
1443 189, 189, 190, 320, 714, 310, 450, 450, 638, 190,
1444 660, 450, 300, 310, 310, 310, 310, 310, 432, 504,
1445 301, 389, 389, 389, 389, 447, 715, 636, 301, 301,
1446 301, 301, 301, 190, 332, 713, 447, 190, 190, 190,
1447 190, 190, 190, 190, 190, 190, 190, 190, 190, 192,
1448 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
1450 192, 193, 301, 310, 193, 193, 193, 193, 193, 316,
1451 303, 316, 661, 714, 317, 303, 635, 316, 316, 316,
1452 316, 316, 317, 317, 317, 317, 317, 303, 386, 386,
1453 386, 634, 193, 303, 447, 715, 193, 193, 193, 193,
1454 193, 193, 193, 193, 193, 193, 193, 193, 234, 630,
1455 324, 458, 324, 628, 646, 234, 325, 303, 324, 324,
1456 324, 324, 324, 458, 325, 325, 325, 325, 325, 392,
1457 354, 661, 627, 386, 354, 402, 402, 402, 402, 234,
1458 626, 354, 392, 234, 234, 234, 234, 234, 234, 234,
1459 234, 234, 234, 234, 234, 250, 250, 709, 250, 250,
1461 250, 250, 250, 630, 250, 250, 250, 250, 646, 250,
1462 250, 328, 392, 328, 395, 250, 250, 250, 250, 328,
1463 328, 328, 328, 328, 329, 624, 495, 395, 623, 689,
1464 329, 354, 329, 329, 329, 329, 329, 340, 340, 495,
1465 250, 250, 250, 404, 340, 340, 340, 340, 407, 446,
1466 407, 407, 407, 407, 709, 328, 404, 395, 621, 538,
1467 250, 446, 568, 568, 568, 250, 250, 254, 254, 254,
1468 254, 254, 538, 254, 254, 254, 254, 254, 254, 329,
1469 689, 254, 254, 425, 409, 406, 404, 254, 254, 716,
1470 254, 406, 406, 406, 406, 425, 426, 407, 409, 409,
1472 409, 409, 427, 446, 411, 412, 433, 427, 426, 767,
1473 639, 767, 254, 254, 411, 412, 411, 412, 433, 427,
1474 424, 411, 412, 434, 439, 619, 439, 406, 424, 424,
1475 424, 424, 424, 425, 639, 434, 439, 254, 254, 255,
1476 459, 459, 459, 459, 618, 510, 426, 480, 480, 480,
1477 433, 616, 255, 409, 255, 255, 255, 510, 716, 440,
1478 427, 615, 610, 255, 515, 440, 255, 434, 439, 255,
1479 255, 440, 483, 483, 483, 444, 515, 444, 255, 255,
1480 255, 468, 255, 444, 444, 444, 444, 444, 255, 510,
1481 605, 255, 480, 604, 255, 257, 257, 257, 257, 257,
1483 257, 257, 257, 257, 257, 257, 257, 265, 506, 557,
1484 557, 557, 468, 506, 440, 496, 515, 483, 519, 444,
1485 265, 468, 265, 265, 265, 506, 602, 496, 507, 640,
1486 519, 265, 731, 445, 265, 600, 468, 265, 265, 445,
1487 507, 445, 445, 445, 445, 445, 265, 265, 265, 514,
1488 265, 599, 598, 640, 557, 507, 265, 597, 770, 265,
1489 770, 514, 265, 270, 270, 270, 270, 270, 270, 270,
1490 270, 270, 270, 270, 270, 276, 508, 509, 516, 520,
1491 507, 508, 276, 516, 496, 539, 540, 544, 445, 509,
1492 520, 612, 518, 508, 518, 516, 554, 509, 539, 540,
1494 544, 731, 514, 612, 518, 642, 276, 596, 595, 554,
1495 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
1496 276, 276, 296, 523, 523, 563, 571, 594, 571, 642,
1497 523, 523, 523, 523, 296, 572, 593, 577, 571, 563,
1498 563, 563, 563, 573, 574, 576, 592, 572, 520, 577,
1499 591, 582, 582, 703, 589, 573, 574, 576, 582, 582,
1500 582, 582, 296, 296, 296, 296, 296, 296, 296, 296,
1501 296, 296, 296, 296, 299, 572, 573, 577, 620, 579,
1502 611, 299, 603, 609, 650, 588, 587, 585, 613, 576,
1503 579, 620, 611, 614, 563, 609, 603, 603, 603, 603,
1505 613, 574, 576, 584, 614, 299, 583, 703, 650, 299,
1506 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
1507 299, 311, 311, 611, 311, 311, 311, 311, 311, 311,
1508 311, 311, 311, 311, 633, 311, 311, 608, 632, 581,
1509 609, 311, 311, 311, 311, 633, 613, 649, 579, 608,
1510 632, 603, 651, 655, 652, 668, 662, 669, 665, 655,
1511 668, 676, 614, 681, 651, 652, 311, 311, 311, 665,
1512 608, 683, 697, 683, 649, 578, 681, 655, 684, 668,
1513 575, 669, 632, 655, 662, 567, 311, 669, 566, 676,
1514 565, 311, 311, 312, 312, 680, 697, 683, 649, 564,
1516 684, 693, 684, 633, 706, 312, 680, 312, 662, 312,
1517 312, 312, 693, 676, 690, 706, 691, 677, 312, 711,
1518 562, 312, 559, 652, 312, 312, 555, 665, 553, 552,
1519 711, 551, 550, 312, 312, 312, 549, 312, 548, 677,
1520 547, 546, 690, 312, 691, 677, 312, 690, 705, 312,
1521 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
1522 313, 313, 318, 677, 680, 545, 690, 543, 691, 677,
1523 693, 717, 718, 706, 691, 318, 705, 318, 318, 318,
1524 704, 710, 717, 718, 719, 720, 318, 542, 711, 318,
1525 541, 537, 318, 318, 536, 719, 720, 535, 705, 534,
1527 705, 318, 318, 318, 533, 318, 704, 532, 704, 710,
1528 531, 318, 530, 529, 318, 528, 527, 318, 322, 322,
1529 322, 322, 322, 322, 322, 322, 322, 322, 322, 322,
1530 327, 526, 704, 710, 525, 524, 721, 327, 722, 723,
1531 717, 718, 517, 512, 724, 725, 726, 721, 727, 722,
1532 723, 728, 729, 719, 720, 724, 725, 726, 501, 727,
1533 500, 327, 728, 729, 499, 327, 327, 327, 327, 327,
1534 327, 327, 327, 327, 327, 327, 327, 362, 362, 362,
1535 362, 362, 362, 362, 362, 362, 362, 362, 362, 374,
1536 374, 497, 374, 374, 374, 374, 374, 494, 374, 374,
1538 374, 374, 492, 374, 374, 721, 491, 722, 723, 374,
1539 374, 374, 374, 724, 725, 726, 730, 727, 487, 482,
1540 728, 729, 478, 477, 476, 472, 471, 730, 469, 466,
1541 465, 464, 463, 462, 374, 374, 374, 457, 456, 455,
1542 454, 374, 453, 452, 451, 449, 448, 436, 423, 415,
1543 414, 413, 410, 408, 374, 374, 400, 399, 396, 374,
1544 374, 381, 381, 388, 381, 381, 381, 381, 381, 387,
1545 381, 381, 381, 381, 379, 381, 381, 378, 377, 376,
1546 370, 381, 381, 381, 381, 730, 369, 368, 367, 366,
1547 365, 352, 350, 348, 347, 346, 345, 344, 343, 342,
1549 341, 338, 334, 323, 314, 297, 381, 381, 381, 293,
1550 287, 285, 281, 280, 279, 266, 260, 259, 248, 247,
1551 245, 244, 241, 238, 237, 236, 235, 225, 224, 223,
1552 222, 381, 381, 382, 382, 221, 382, 382, 382, 382,
1553 382, 218, 382, 382, 382, 382, 217, 382, 382, 216,
1554 215, 214, 213, 382, 382, 382, 382, 211, 210, 206,
1555 202, 191, 185, 175, 166, 155, 153, 152, 150, 148,
1556 147, 146, 145, 126, 125, 122, 119, 118, 382, 382,
1557 382, 116, 115, 114, 113, 102, 100, 96, 93, 92,
1558 91, 88, 83, 80, 61, 55, 53, 45, 41, 26,
1560 25, 21, 19, 382, 382, 391, 17, 14, 9, 3,
1561 0, 0, 0, 0, 0, 0, 0, 0, 391, 0,
1562 391, 391, 391, 0, 0, 0, 0, 0, 0, 391,
1563 0, 0, 391, 0, 0, 391, 391, 0, 0, 0,
1564 0, 0, 0, 0, 391, 391, 391, 0, 0, 0,
1565 0, 0, 0, 0, 391, 0, 0, 391, 0, 0,
1566 391, 405, 0, 0, 0, 0, 0, 0, 0, 0,
1567 0, 0, 0, 0, 405, 0, 405, 405, 405, 0,
1568 0, 0, 0, 0, 0, 405, 0, 0, 405, 0,
1569 0, 405, 405, 0, 0, 0, 0, 0, 0, 0,
1571 405, 405, 405, 0, 405, 0, 0, 0, 0, 0,
1572 405, 0, 0, 405, 0, 0, 405, 422, 0, 0,
1573 0, 0, 0, 0, 0, 0, 0, 0, 0, 422,
1574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1576 0, 0, 0, 0, 0, 0, 0, 422, 422, 422,
1577 422, 422, 422, 422, 422, 422, 422, 422, 422, 429,
1578 429, 0, 429, 429, 429, 429, 429, 429, 429, 429,
1579 429, 429, 0, 429, 429, 0, 0, 0, 0, 429,
1580 429, 429, 429, 0, 0, 0, 0, 0, 0, 0,
1582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1583 0, 0, 0, 0, 429, 429, 429, 0, 0, 0,
1584 0, 429, 0, 0, 0, 0, 0, 0, 0, 0,
1585 0, 0, 0, 0, 429, 429, 0, 0, 0, 429,
1586 429, 435, 435, 0, 435, 435, 435, 435, 435, 435,
1587 435, 435, 435, 435, 0, 435, 435, 0, 0, 0,
1588 0, 435, 435, 435, 435, 0, 0, 0, 0, 0,
1589 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1590 0, 0, 0, 0, 0, 0, 435, 435, 435, 0,
1591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1594 0, 435, 435, 437, 437, 0, 437, 437, 437, 437,
1595 437, 437, 437, 437, 437, 437, 0, 437, 437, 0,
1596 0, 0, 0, 437, 437, 437, 437, 0, 0, 0,
1597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1598 0, 0, 0, 0, 0, 0, 0, 0, 437, 437,
1599 437, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1601 0, 0, 0, 437, 437, 438, 438, 0, 0, 0,
1602 0, 0, 0, 0, 0, 0, 0, 438, 0, 438,
1604 0, 438, 438, 438, 0, 0, 0, 0, 0, 0,
1605 438, 0, 0, 438, 0, 0, 438, 438, 0, 0,
1606 0, 0, 0, 0, 0, 438, 438, 438, 0, 0,
1607 0, 0, 0, 0, 0, 438, 0, 0, 438, 0,
1608 0, 438, 443, 0, 0, 0, 0, 0, 0, 0,
1609 0, 0, 0, 0, 0, 443, 0, 443, 443, 443,
1610 0, 0, 0, 0, 0, 0, 443, 0, 0, 443,
1611 0, 0, 443, 443, 0, 0, 0, 0, 0, 0,
1612 0, 443, 443, 443, 0, 443, 0, 0, 0, 0,
1613 0, 443, 0, 0, 443, 0, 0, 443, 461, 0,
1615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1616 0, 461, 0, 461, 461, 461, 0, 0, 0, 0,
1617 0, 0, 461, 0, 0, 461, 0, 0, 461, 461,
1618 0, 0, 0, 0, 0, 0, 0, 461, 461, 461,
1619 0, 0, 0, 0, 0, 0, 0, 461, 0, 0,
1620 461, 0, 0, 461, 474, 474, 0, 474, 474, 474,
1621 474, 474, 0, 474, 474, 474, 474, 0, 474, 474,
1622 0, 0, 0, 0, 474, 474, 474, 474, 0, 0,
1623 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1624 0, 0, 0, 0, 0, 0, 0, 0, 0, 474,
1626 474, 474, 0, 0, 0, 0, 0, 0, 0, 0,
1627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1628 0, 0, 0, 0, 474, 474, 475, 475, 0, 475,
1629 475, 475, 475, 475, 0, 475, 475, 475, 475, 0,
1630 475, 475, 0, 0, 0, 0, 475, 475, 475, 475,
1631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1633 0, 475, 475, 475, 0, 0, 0, 0, 475, 0,
1634 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1635 0, 475, 475, 0, 0, 0, 475, 475, 505, 0,
1637 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1638 0, 505, 0, 505, 505, 505, 0, 0, 0, 0,
1639 0, 0, 505, 0, 0, 505, 0, 0, 505, 505,
1640 0, 0, 0, 0, 0, 0, 0, 505, 505, 505,
1641 0, 0, 0, 0, 0, 0, 0, 505, 0, 0,
1642 505, 0, 0, 505, 511, 511, 0, 511, 511, 511,
1643 511, 511, 511, 511, 511, 511, 511, 0, 511, 511,
1644 0, 0, 0, 0, 511, 511, 511, 511, 0, 0,
1645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1646 0, 0, 0, 0, 0, 0, 0, 0, 0, 511,
1648 511, 511, 0, 0, 0, 0, 0, 0, 0, 0,
1649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1650 0, 0, 0, 0, 511, 511, 513, 513, 0, 513,
1651 513, 513, 513, 513, 513, 513, 513, 513, 513, 0,
1652 513, 513, 0, 0, 0, 0, 513, 513, 513, 513,
1653 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1654 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1655 0, 513, 513, 513, 0, 0, 0, 0, 513, 0,
1656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1657 0, 513, 513, 0, 0, 0, 513, 513, 625, 625,
1659 0, 625, 625, 625, 625, 625, 0, 625, 625, 625,
1660 625, 0, 625, 625, 0, 0, 0, 0, 625, 625,
1661 625, 625, 0, 0, 0, 0, 0, 0, 625, 0,
1662 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1663 0, 0, 0, 625, 625, 625, 0, 0, 0, 0,
1664 0, 0, 625, 0, 0, 0, 0, 0, 0, 0,
1665 0, 0, 0, 0, 0, 0, 0, 0, 625, 625,
1666 631, 631, 0, 631, 631, 631, 631, 631, 631, 631,
1667 631, 631, 631, 0, 631, 631, 0, 0, 0, 0,
1668 631, 631, 631, 631, 0, 0, 0, 0, 0, 0,
1670 631, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1671 0, 0, 0, 0, 0, 631, 631, 631, 0, 0,
1672 0, 0, 0, 0, 631, 0, 0, 0, 0, 0,
1673 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1674 631, 631, 641, 641, 0, 641, 641, 641, 641, 641,
1675 0, 641, 641, 641, 641, 0, 641, 641, 0, 0,
1676 0, 0, 641, 641, 641, 641, 0, 0, 0, 0,
1677 0, 0, 641, 0, 0, 0, 0, 0, 0, 0,
1678 0, 0, 0, 0, 0, 0, 0, 641, 641, 641,
1679 0, 0, 0, 0, 0, 0, 641, 0, 0, 0,
1681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1682 0, 0, 641, 641, 648, 648, 0, 648, 648, 648,
1683 648, 648, 648, 648, 648, 648, 648, 0, 648, 648,
1684 0, 0, 0, 0, 648, 648, 648, 648, 0, 0,
1685 0, 0, 0, 0, 648, 0, 0, 0, 0, 0,
1686 0, 0, 0, 0, 0, 0, 0, 0, 0, 648,
1687 648, 648, 0, 0, 0, 0, 0, 0, 648, 0,
1688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1689 0, 0, 0, 0, 648, 648, 735, 0, 0, 735,
1690 735, 0, 0, 735, 735, 735, 735, 735, 736, 736,
1692 736, 736, 736, 0, 736, 736, 736, 736, 736, 736,
1693 736, 736, 736, 737, 737, 737, 737, 737, 737, 737,
1694 737, 737, 737, 737, 737, 737, 737, 737, 738, 738,
1695 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1696 738, 738, 738, 739, 739, 739, 739, 739, 739, 739,
1697 739, 739, 739, 739, 739, 739, 739, 739, 740, 0,
1698 0, 740, 740, 740, 0, 740, 740, 740, 740, 740,
1699 741, 741, 741, 741, 741, 0, 741, 741, 741, 741,
1700 741, 741, 741, 741, 741, 742, 742, 742, 742, 742,
1701 742, 742, 742, 742, 742, 742, 742, 742, 742, 742,
1703 743, 743, 0, 0, 0, 0, 0, 0, 0, 743,
1704 743, 743, 743, 743, 744, 744, 744, 745, 745, 745,
1705 746, 746, 746, 747, 747, 747, 747, 747, 747, 747,
1706 747, 747, 747, 747, 747, 747, 747, 747, 748, 748,
1707 748, 748, 748, 748, 748, 748, 748, 748, 748, 748,
1708 748, 748, 748, 749, 749, 749, 750, 750, 750, 751,
1709 751, 751, 751, 751, 751, 751, 751, 751, 751, 751,
1710 751, 751, 751, 751, 752, 752, 752, 752, 752, 752,
1711 752, 752, 752, 752, 752, 752, 752, 752, 752, 753,
1712 0, 0, 753, 753, 753, 0, 753, 753, 753, 753,
1714 753, 754, 754, 754, 754, 754, 754, 754, 754, 754,
1715 754, 754, 754, 754, 754, 754, 755, 755, 755, 755,
1716 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
1717 755, 756, 756, 756, 756, 756, 756, 756, 756, 756,
1718 756, 756, 756, 756, 756, 756, 757, 757, 757, 757,
1719 757, 757, 757, 757, 757, 757, 757, 757, 757, 757,
1720 757, 758, 758, 758, 758, 758, 758, 758, 758, 758,
1721 758, 758, 758, 758, 758, 758, 759, 759, 0, 759,
1722 759, 759, 759, 759, 759, 759, 759, 759, 759, 759,
1723 759, 760, 760, 0, 760, 760, 760, 760, 760, 760,
1725 760, 760, 760, 760, 760, 760, 761, 761, 761, 762,
1726 762, 0, 762, 762, 762, 762, 762, 762, 762, 762,
1727 762, 762, 762, 762, 763, 763, 763, 763, 763, 763,
1728 763, 763, 763, 763, 763, 763, 763, 763, 763, 764,
1729 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,
1730 764, 764, 764, 764, 765, 765, 765, 765, 765, 765,
1731 765, 765, 765, 765, 765, 765, 765, 765, 765, 766,
1732 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
1733 766, 766, 766, 766, 768, 768, 768, 769, 0, 0,
1734 769, 0, 769, 769, 0, 769, 0, 769, 771, 771,
1736 771, 772, 772, 772, 772, 772, 772, 772, 772, 772,
1737 772, 772, 772, 772, 772, 772, 773, 773, 773, 773,
1738 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
1739 773, 774, 0, 0, 774, 774, 774, 0, 774, 774,
1740 774, 774, 774, 775, 775, 775, 775, 775, 775, 775,
1741 775, 775, 775, 775, 775, 775, 775, 775, 776, 776,
1742 776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
1743 776, 776, 776, 777, 777, 0, 777, 777, 777, 777,
1744 777, 777, 777, 777, 777, 777, 777, 777, 778, 778,
1745 778, 778, 778, 778, 778, 778, 778, 778, 778, 778,
1747 778, 778, 778, 779, 779, 779, 779, 0, 779, 779,
1748 779, 779, 779, 779, 779, 779, 779, 779, 780, 780,
1749 780, 780, 780, 780, 780, 780, 780, 780, 780, 780,
1750 780, 780, 780, 781, 781, 0, 781, 781, 781, 781,
1751 781, 781, 781, 781, 781, 781, 781, 781, 782, 782,
1752 0, 782, 782, 782, 782, 782, 782, 782, 782, 782,
1753 782, 782, 782, 783, 0, 783, 0, 0, 0, 783,
1754 783, 783, 784, 784, 0, 784, 784, 784, 784, 784,
1755 784, 784, 784, 784, 784, 784, 784, 785, 785, 0,
1756 785, 785, 785, 785, 785, 785, 785, 785, 785, 785,
1758 785, 785, 786, 786, 0, 786, 786, 786, 786, 786,
1759 786, 786, 786, 786, 786, 786, 786, 787, 787, 787,
1760 787, 787, 787, 787, 787, 787, 787, 787, 787, 787,
1761 787, 787, 788, 788, 788, 788, 788, 788, 788, 788,
1762 788, 788, 788, 788, 788, 788, 788, 789, 789, 789,
1763 789, 789, 789, 789, 789, 789, 789, 789, 789, 789,
1764 789, 789, 790, 790, 790, 790, 790, 790, 790, 790,
1765 790, 790, 790, 790, 790, 790, 790, 791, 0, 0,
1766 0, 0, 791, 791, 0, 791, 0, 791, 792, 792,
1767 792, 792, 792, 792, 792, 792, 792, 792, 792, 792,
1769 792, 792, 792, 793, 793, 793, 793, 793, 793, 793,
1770 793, 793, 793, 793, 793, 793, 793, 793, 794, 794,
1771 0, 794, 794, 794, 794, 794, 794, 794, 794, 794,
1772 794, 794, 794, 795, 795, 0, 795, 795, 795, 795,
1773 795, 795, 795, 795, 795, 795, 795, 795, 796, 796,
1774 796, 796, 0, 796, 796, 796, 796, 796, 796, 796,
1775 796, 796, 796, 797, 797, 797, 797, 797, 797, 797,
1776 797, 797, 797, 797, 797, 797, 797, 797, 798, 798,
1777 0, 798, 798, 798, 798, 798, 798, 798, 798, 798,
1778 798, 798, 798, 799, 799, 0, 799, 799, 799, 799,
1780 799, 799, 799, 799, 799, 799, 799, 799, 800, 800,
1781 0, 800, 800, 800, 800, 800, 800, 800, 800, 800,
1782 800, 800, 800, 801, 801, 0, 801, 801, 801, 801,
1783 801, 801, 801, 801, 801, 801, 801, 801, 802, 802,
1784 0, 802, 802, 802, 802, 802, 802, 802, 802, 802,
1785 802, 802, 802, 803, 803, 0, 803, 803, 803, 803,
1786 803, 803, 803, 803, 803, 803, 803, 803, 804, 804,
1787 0, 804, 804, 804, 804, 804, 804, 804, 804, 804,
1788 804, 804, 804, 805, 805, 0, 805, 805, 805, 805,
1789 805, 805, 805, 805, 805, 805, 805, 805, 806, 806,
1791 806, 806, 806, 806, 806, 806, 806, 806, 806, 806,
1792 806, 806, 806, 807, 807, 807, 807, 807, 807, 807,
1793 807, 807, 807, 807, 807, 807, 807, 807, 808, 808,
1794 808, 808, 808, 808, 808, 808, 808, 808, 808, 808,
1795 808, 808, 808, 809, 0, 0, 0, 0, 809, 809,
1796 0, 809, 810, 810, 810, 810, 810, 810, 810, 810,
1797 810, 810, 810, 810, 810, 810, 810, 811, 811, 811,
1798 811, 811, 811, 811, 811, 811, 811, 811, 811, 811,
1799 811, 811, 812, 812, 0, 812, 812, 812, 812, 812,
1800 812, 812, 812, 812, 812, 812, 812, 813, 813, 813,
1802 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1803 813, 813, 814, 0, 0, 0, 0, 814, 814, 0,
1804 814, 815, 815, 0, 815, 815, 815, 815, 815, 815,
1805 815, 815, 815, 815, 815, 815, 816, 816, 816, 816,
1806 816, 816, 816, 816, 816, 816, 816, 816, 816, 816,
1807 816, 817, 817, 0, 817, 817, 817, 817, 817, 817,
1808 817, 817, 817, 817, 817, 817, 818, 818, 0, 818,
1809 818, 818, 818, 818, 818, 818, 818, 818, 818, 818,
1810 818, 819, 819, 0, 819, 819, 819, 819, 819, 819,
1811 819, 819, 819, 819, 819, 819, 820, 820, 820, 820,
1813 820, 820, 820, 820, 820, 820, 820, 820, 820, 820,
1814 820, 821, 821, 821, 821, 821, 821, 821, 821, 821,
1815 821, 821, 821, 821, 821, 821, 822, 822, 822, 822,
1816 822, 822, 822, 822, 822, 822, 822, 822, 822, 822,
1817 822, 823, 823, 823, 823, 823, 823, 823, 823, 823,
1818 823, 823, 823, 823, 823, 823, 734, 734, 734, 734,
1819 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1820 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1821 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1822 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1824 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1825 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1826 734, 734, 734, 734, 734, 734, 734, 734, 734
1829 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
1830 static char *yy_full_match;
1832 static int yy_looking_for_trail_begin = 0;
1833 static int yy_full_lp;
1834 static int *yy_full_state;
1835 #define YY_TRAILING_MASK 0x2000
1836 #define YY_TRAILING_HEAD_MASK 0x4000
1839 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
1840 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
1841 yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \
1842 yy_state_ptr = yy_full_state; /* restore orig. state */ \
1843 yy_current_state = *yy_state_ptr; /* restore curr. state */ \
1847 #define yymore() yymore_used_but_not_detected
1848 #define YY_MORE_ADJ 0
1849 #define YY_RESTORE_YY_MORE_OFFSET
1853 * parser.l -- lex parser of algebraic chess moves for XBoard
1854 * $Id: parser.l,v 2.1 2003/10/27 19:21:00 mann Exp $
1856 * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
1857 * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
1859 * The following terms apply to Digital Equipment Corporation's copyright
1860 * interest in XBoard:
1861 * ------------------------------------------------------------------------
1862 * All Rights Reserved
1864 * Permission to use, copy, modify, and distribute this software and its
1865 * documentation for any purpose and without fee is hereby granted,
1866 * provided that the above copyright notice appear in all copies and that
1867 * both that copyright notice and this permission notice appear in
1868 * supporting documentation, and that the name of Digital not be
1869 * used in advertising or publicity pertaining to distribution of the
1870 * software without specific, written prior permission.
1872 * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
1873 * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
1874 * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
1875 * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
1876 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
1877 * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
1879 * ------------------------------------------------------------------------
1881 * The following terms apply to the enhanced version of XBoard distributed
1882 * by the Free Software Foundation:
1883 * ------------------------------------------------------------------------
1884 * This program is free software; you can redistribute it and/or modify
1885 * it under the terms of the GNU General Public License as published by
1886 * the Free Software Foundation; either version 2 of the License, or
1887 * (at your option) any later version.
1889 * This program is distributed in the hope that it will be useful,
1890 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1891 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1892 * GNU General Public License for more details.
1894 * You should have received a copy of the GNU General Public License
1895 * along with this program; if not, write to the Free Software
1896 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1897 * ------------------------------------------------------------------------
1900 /* This parser handles all forms of promotion.
1901 * The parser resolves ambiguous moves by searching and check-testing.
1902 * It also parses comments of the form [anything] or (anything).
1907 #define NO_CONSTRAINT -1
1910 #define UNPUT_BUF_SIZE YYLMAX
1913 /* yytext is probably a char*, but could be a char[]. yy_text is set
1914 in YY_DECL below, because if yytext is a char*, its value is not
1917 #else /*!FLEX_SCANNER*/
1918 /* yytext is definitely a char[], so yy_text can be set here, statically. */
1919 char *yy_text = (char *) yytext;
1925 #define YY_INPUT(buf, result, max_size) my_yy_input(buf, &result, max_size)
1928 int _yylex YY_PROTO((void)); \
1929 int yylex YY_PROTO((void)) \
1931 int result = _yylex(); \
1932 yy_text = (char *) yytext; \
1935 int _yylex YY_PROTO((void))
1943 /* The includes must be here, below the #undef input */
1948 # include <stdlib.h>
1949 # include <string.h>
1950 #else /* not STDC_HEADERS */
1952 # include <string.h>
1953 # else /* not HAVE_STRING_H */
1954 # include <strings.h>
1955 # endif /* not HAVE_STRING_H */
1956 #endif /* not STDC_HEADERS */
1959 # include <unistd.h>
1962 #if defined(_amigados)
1965 # include <fcntl.h> /* isatty() prototype */
1966 # endif /* HAVE_FCNTL_H */
1967 #endif /* defined(_amigados) */
1970 #include "backend.h"
1971 #include "frontend.h"
1975 extern int PosFlags P((int));
1977 extern Board boards[MAX_MOVES];
1979 int yyskipmoves = FALSE;
1980 char currentMoveString[YYLMAX];
1981 #ifndef FLEX_SCANNER
1982 char unputBuffer[UNPUT_BUF_SIZE];
1987 void my_yy_input P((char *buf, int *result, int max_size));
1988 #else /*!FLEX_SCANNER*/
1989 static int input P((void));
1990 static void output P((int ch));
1991 static void unput P((int ch));
1992 int yylook P((void));
1993 int yyback P((int *, int));
1996 int yywrap P((void));
1997 extern void CopyBoard P((Board to, Board from));
2000 /* Macros after this point can all be overridden by user definitions in
2004 #ifndef YY_SKIP_YYWRAP
2006 extern "C" int yywrap YY_PROTO(( void ));
2008 extern int yywrap YY_PROTO(( void ));
2013 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
2017 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
2020 #ifdef YY_NEED_STRLEN
2021 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
2026 static int yyinput YY_PROTO(( void ));
2028 static int input YY_PROTO(( void ));
2033 static int yy_start_stack_ptr = 0;
2034 static int yy_start_stack_depth = 0;
2035 static int *yy_start_stack = 0;
2036 #ifndef YY_NO_PUSH_STATE
2037 static void yy_push_state YY_PROTO(( int new_state ));
2039 #ifndef YY_NO_POP_STATE
2040 static void yy_pop_state YY_PROTO(( void ));
2042 #ifndef YY_NO_TOP_STATE
2043 static int yy_top_state YY_PROTO(( void ));
2047 #define YY_NO_PUSH_STATE 1
2048 #define YY_NO_POP_STATE 1
2049 #define YY_NO_TOP_STATE 1
2052 #ifdef YY_MALLOC_DECL
2060 /* Just try to get by without declaring the routines. This will fail
2061 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
2062 * or sizeof(void*) != sizeof(int).
2067 /* Amount of stuff to slurp up with each read. */
2068 #ifndef YY_READ_BUF_SIZE
2069 #define YY_READ_BUF_SIZE 8192
2072 /* Copy whatever the last rule matched to the standard output. */
2075 /* This used to be an fputs(), but since the string might contain NUL's,
2076 * we now use fwrite().
2078 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
2081 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2082 * is returned in "result".
2085 #define YY_INPUT(buf,result,max_size) \
2086 if ( yy_current_buffer->yy_is_interactive ) \
2089 for ( n = 0; n < max_size && \
2090 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
2091 buf[n] = (char) c; \
2093 buf[n++] = (char) c; \
2094 if ( c == EOF && ferror( yyin ) ) \
2095 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2101 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
2103 if( errno != EINTR) \
2105 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2114 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2115 * we don't want an extra ';' after the "return" because that will cause
2116 * some compilers to complain about unreachable statements.
2119 #define yyterminate() return YY_NULL
2122 /* Number of entries by which start-condition stack grows. */
2123 #ifndef YY_START_STACK_INCR
2124 #define YY_START_STACK_INCR 25
2127 /* Report a fatal error. */
2128 #ifndef YY_FATAL_ERROR
2129 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2132 /* Default declaration of generated scanner - a define so the user can
2133 * easily add parameters.
2136 #define YY_DECL int yylex YY_PROTO(( void ))
2139 /* Code executed at the beginning of each rule, after yytext and yyleng
2142 #ifndef YY_USER_ACTION
2143 #define YY_USER_ACTION
2146 /* Code executed at the end of each rule. */
2148 #define YY_BREAK break;
2151 #define YY_RULE_SETUP \
2153 yy_current_buffer->yy_at_bol = \
2154 (yytext[yyleng - 1] == '\n'); \
2159 register yy_state_type yy_current_state;
2160 register char *yy_cp, *yy_bp;
2161 register int yy_act;
2175 yy_start = 1; /* first start state */
2183 if ( ! yy_current_buffer )
2185 yy_create_buffer( yyin, YY_BUF_SIZE );
2187 yy_load_buffer_state();
2190 while ( 1 ) /* loops until end-of-file is reached */
2194 /* Support of yytext. */
2195 *yy_cp = yy_hold_char;
2197 /* yy_bp points to the position in yy_ch_buf of the start of
2202 yy_current_state = yy_start;
2203 yy_current_state += YY_AT_BOL();
2204 yy_state_ptr = yy_state_buf;
2205 *yy_state_ptr++ = yy_current_state;
2209 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2210 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2212 yy_current_state = (int) yy_def[yy_current_state];
2213 if ( yy_current_state >= 735 )
2214 yy_c = yy_meta[(unsigned int) yy_c];
2216 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2217 *yy_state_ptr++ = yy_current_state;
2220 while ( yy_base[yy_current_state] != 5057 );
2223 yy_current_state = *--yy_state_ptr;
2224 yy_lp = yy_accept[yy_current_state];
2225 find_rule: /* we branch to this label when backing up */
2226 for ( ; ; ) /* until we find what rule we matched */
2228 if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
2230 yy_act = yy_acclist[yy_lp];
2231 if ( yy_act & YY_TRAILING_HEAD_MASK ||
2232 yy_looking_for_trail_begin )
2234 if ( yy_act == yy_looking_for_trail_begin )
2236 yy_looking_for_trail_begin = 0;
2237 yy_act &= ~YY_TRAILING_HEAD_MASK;
2241 else if ( yy_act & YY_TRAILING_MASK )
2243 yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
2244 yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
2248 yy_full_match = yy_cp;
2249 yy_full_state = yy_state_ptr;
2257 yy_current_state = *--yy_state_ptr;
2258 yy_lp = yy_accept[yy_current_state];
2261 YY_DO_BEFORE_ACTION;
2264 do_action: /* This label is used only to access EOF actions. */
2268 { /* beginning of action switch */
2273 * Fully-qualified algebraic move, possibly with promotion
2274 * [HGM] Bigger-than-8x8 boards must rely on long algebraic formats
2275 * where I allowed piece types A & C (also as promotions)
2276 * files a-l and ranks 0-9
2278 int skip1 = 0, skip2 = 0;
2282 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2285 if (yytext[1] == '/') skip1 = 1;
2287 /* remove the [xX:-] */
2288 if ((yytext[3+skip1] == 'x') || (yytext[3+skip1] == 'X') ||
2289 (yytext[3+skip1] == '-') || (yytext[3+skip1] == ':')) skip2 = 1;
2291 currentMoveString[0] = yytext[1+skip1];
2292 currentMoveString[1] = yytext[2+skip1];
2293 currentMoveString[2] = yytext[3+skip1+skip2];
2294 currentMoveString[3] = yytext[4+skip1+skip2];
2295 currentMoveString[4] = NULLCHAR;
2297 if (yyleng-skip1-skip2 > 5) {
2298 if (yytext[yyleng-1] == ')') {
2299 currentMoveString[4] = ToLower(yytext[yyleng-2]);
2301 currentMoveString[4] = ToLower(yytext[yyleng-1]);
2303 currentMoveString[5] = NULLCHAR;
2306 if (appData.debugMode) {
2307 fprintf(debugFP, "parser: %s\n", currentMoveString);
2309 /* [HGM] do not allow values beyond board size */
2310 if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
2311 currentMoveString[0] - AAA >= BOARD_WIDTH ||
2312 currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2313 currentMoveString[2] - AAA >= BOARD_WIDTH )
2316 piece = boards[yyboardindex]
2317 [currentMoveString[1] - ONE][currentMoveString[0] - AAA];
2318 if (ToLower(yytext[0]) != ToLower(PieceToChar(piece)))
2319 return (int) IllegalMove;
2321 result = LegalityTest(boards[yyboardindex],
2322 PosFlags(yyboardindex), EP_UNKNOWN,
2323 initialRights, /* [HGM] assume all castlings allowed */
2324 currentMoveString[1] - ONE,
2325 currentMoveString[0] - AAA,
2326 currentMoveString[3] - ONE,
2327 currentMoveString[2] - AAA,
2328 currentMoveString[4]);
2330 if (currentMoveString[4] == NULLCHAR &&
2331 (result == WhitePromotionQueen || result == BlackPromotionQueen)) {
2332 currentMoveString[4] = 'q';
2333 currentMoveString[5] = NULLCHAR;
2336 return (int) result;
2343 * Simple algebraic move, possibly with promotion
2344 * [HGM] Bigger-than-8x8 boards must rely on this format
2345 * where I allowed piece types A & C (also as promotions)
2346 * files a-l and ranks 0-9
2351 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2353 /* remove the [xX:-] */
2354 if ((yytext[2] == 'x') || (yytext[2] == 'X') ||
2355 (yytext[2] == '-') || (yytext[2] == ':')) skip = 1;
2357 currentMoveString[0] = yytext[0];
2358 currentMoveString[1] = yytext[1];
2359 currentMoveString[2] = yytext[2+skip];
2360 currentMoveString[3] = yytext[3+skip];
2361 currentMoveString[4] = NULLCHAR;
2363 if (yyleng-skip > 4) {
2364 if (yytext[yyleng-1] == ')') {
2365 currentMoveString[4] = ToLower(yytext[yyleng-2]);
2367 currentMoveString[4] = ToLower(yytext[yyleng-1]);
2369 currentMoveString[5] = NULLCHAR;
2372 /* [HGM] do not allow values beyond board size */
2373 if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
2374 currentMoveString[0] - AAA >= BOARD_WIDTH ||
2375 currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2376 currentMoveString[2] - AAA >= BOARD_WIDTH )
2379 result = LegalityTest(boards[yyboardindex],
2380 PosFlags(yyboardindex), EP_UNKNOWN,
2381 initialRights, /* [HGM] assume all castlings allowed */
2382 currentMoveString[1] - ONE,
2383 currentMoveString[0] - AAA,
2384 currentMoveString[3] - ONE,
2385 currentMoveString[2] - AAA,
2386 currentMoveString[4]);
2388 if (currentMoveString[4] == NULLCHAR &&
2389 (result == WhitePromotionQueen || result == BlackPromotionQueen)) {
2390 currentMoveString[4] = 'q';
2391 currentMoveString[5] = NULLCHAR;
2394 return (int) result;
2401 * Pawn move, possibly with promotion
2403 DisambiguateClosure cl;
2406 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2408 /* remove the =() */
2409 if (yytext[2] == '=') skip++;
2410 if (yytext[2+skip] == '(') skip++;
2412 cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
2414 cl.ffIn = yytext[0] - AAA;
2415 cl.rtIn = yytext[1] - ONE;
2416 cl.ftIn = yytext[0] - AAA;
2417 cl.promoCharIn = yytext[2+skip];
2419 /* [HGM] do not allow values beyond board size */
2420 if(cl.rtIn >= BOARD_HEIGHT ||
2421 cl.ffIn >= BOARD_WIDTH ||
2422 cl.ftIn >= BOARD_WIDTH )
2426 Disambiguate(boards[yyboardindex],
2427 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2429 currentMoveString[0] = cl.ff + AAA;
2430 currentMoveString[1] = cl.rf + ONE;
2431 currentMoveString[2] = cl.ft + AAA;
2432 currentMoveString[3] = cl.rt + ONE;
2433 currentMoveString[4] = cl.promoChar;
2434 currentMoveString[5] = NULLCHAR;
2436 return (int) cl.kind;
2443 * Pawn capture, possibly with promotion, possibly ambiguous
2445 DisambiguateClosure cl;
2446 int skip1 = 0, skip2 = 0;
2448 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2450 /* remove trailing ep or e.p. (nonstandard PGN) */
2451 if (yytext[yyleng-1] == 'p') {
2453 yytext[yyleng] = NULLCHAR;
2454 } else if (yytext[yyleng-1] == '.') {
2456 yytext[yyleng] = NULLCHAR;
2459 /* remove the [xX:-] and =() */
2460 if ((yytext[1] == 'x') || (yytext[1] == 'X')
2461 || (yytext[1] == ':') || (yytext[1] == '-')) skip1 = 1;
2462 if (yytext[2+skip1] == '=') skip2++;
2463 if (yytext[2+skip1+skip2] == '(') skip2++;
2465 cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
2467 cl.ffIn = yytext[0] - AAA;
2469 cl.ftIn = yytext[1+skip1] - AAA;
2470 cl.promoCharIn = yytext[2+skip1+skip2];
2472 /* [HGM] do not allow values beyond board size */
2473 if(cl.ffIn >= BOARD_WIDTH ||
2474 cl.ftIn >= BOARD_WIDTH )
2477 Disambiguate(boards[yyboardindex],
2478 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2480 currentMoveString[0] = cl.ff + AAA;
2481 currentMoveString[1] = cl.rf + ONE;
2482 currentMoveString[2] = cl.ft + AAA;
2483 currentMoveString[3] = cl.rt + ONE;
2484 currentMoveString[4] = cl.promoChar;
2485 currentMoveString[5] = NULLCHAR;
2487 return (int) cl.kind;
2494 * unambiguously abbreviated Pawn capture, possibly with promotion
2499 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2501 /* remove trailing ep or e.p. (nonstandard PGN) */
2502 if (yytext[yyleng-1] == 'p') {
2504 yytext[yyleng] = NULLCHAR;
2505 } else if (yytext[yyleng-1] == '.') {
2507 yytext[yyleng] = NULLCHAR;
2510 /* remove the [xX:-] */
2511 if ((yytext[1] == 'x') || (yytext[1] == 'X')
2512 || (yytext[1] == ':') || (yytext[1] == '-')) skip = 1;
2514 currentMoveString[0] = yytext[0];
2515 currentMoveString[2] = yytext[1+skip];
2516 currentMoveString[3] = yytext[2+skip];
2518 /* [HGM] do not allow values beyond board size */
2519 if(currentMoveString[0] - AAA >= BOARD_WIDTH ||
2520 currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2521 currentMoveString[2] - AAA >= BOARD_WIDTH )
2524 if (gameInfo.variant == VariantXiangqi && /* [HGM] In Xiangqi rank stays same */
2525 currentMoveString[0] != currentMoveString[2] ) {
2526 if (yytext[2+skip] == ONE) return (int) ImpossibleMove;
2527 currentMoveString[1] = yytext[2+skip];
2529 if (WhiteOnMove(yyboardindex)) {
2530 if (yytext[2+skip] == ONE) return (int) ImpossibleMove;
2531 currentMoveString[1] = yytext[2+skip] - 1;
2533 currentMoveString[1] = currentMoveString[3] + 1;
2534 if (currentMoveString[3] == ONE+BOARD_HEIGHT-1) return (int) ImpossibleMove;
2536 if (yyleng-skip > 3) {
2537 if (yytext[yyleng-1] == ')')
2538 currentMoveString[4] = ToLower(yytext[yyleng-2]);
2540 currentMoveString[4] = ToLower(yytext[yyleng-1]);
2541 currentMoveString[5] = NULLCHAR;
2543 currentMoveString[4] = NULLCHAR;
2546 result = LegalityTest(boards[yyboardindex],
2547 PosFlags(yyboardindex), EP_UNKNOWN,
2548 initialRights, /* [HGM] assume all castlings allowed */
2549 currentMoveString[1] - ONE,
2550 currentMoveString[0] - AAA,
2551 currentMoveString[3] - ONE,
2552 currentMoveString[2] - AAA,
2553 currentMoveString[4]);
2555 if (currentMoveString[4] == NULLCHAR &&
2556 (result == WhitePromotionQueen || result == BlackPromotionQueen)) {
2557 currentMoveString[4] = 'q';
2558 currentMoveString[5] = NULLCHAR;
2561 if (result != IllegalMove) return (int) result;
2563 /* Special case: improperly written en passant capture */
2564 if (WhiteOnMove(yyboardindex)) {
2565 if (currentMoveString[3] == '5') {
2566 currentMoveString[1] = '5';
2567 currentMoveString[3] = '6';
2569 return (int) IllegalMove;
2572 if (currentMoveString[3] == '4') {
2573 currentMoveString[1] = '4';
2574 currentMoveString[3] = '3';
2576 return (int) IllegalMove;
2580 result = LegalityTest(boards[yyboardindex],
2581 PosFlags(yyboardindex), EP_UNKNOWN,
2582 initialRights, /* [HGM] assume all castlings allowed */
2583 currentMoveString[1] - ONE,
2584 currentMoveString[0] - AAA,
2585 currentMoveString[3] - ONE,
2586 currentMoveString[2] - AAA,
2587 currentMoveString[4]);
2589 if (result == WhiteCapturesEnPassant || result == BlackCapturesEnPassant)
2590 return (int) result;
2592 return (int) IllegalMove;
2599 * piece move, possibly ambiguous
2601 DisambiguateClosure cl;
2604 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2606 /* remove the [xX:-] */
2607 if ((yytext[1] == 'x') || (yytext[1] == 'X')
2608 || (yytext[1] == ':') || (yytext[1] == '-')) skip = 1;
2610 if (WhiteOnMove(yyboardindex)) {
2611 cl.pieceIn = CharToPiece(ToUpper(yytext[0]));
2613 cl.pieceIn = CharToPiece(ToLower(yytext[0]));
2617 cl.rtIn = yytext[2+skip] - ONE;
2618 cl.ftIn = yytext[1+skip] - AAA;
2619 cl.promoCharIn = NULLCHAR;
2621 /* [HGM] but do not allow values beyond board size */
2622 if(cl.rtIn >= BOARD_HEIGHT ||
2623 cl.ftIn >= BOARD_WIDTH )
2626 Disambiguate(boards[yyboardindex],
2627 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2629 currentMoveString[0] = cl.ff + AAA;
2630 currentMoveString[1] = cl.rf + ONE;
2631 currentMoveString[2] = cl.ft + AAA;
2632 currentMoveString[3] = cl.rt + ONE;
2633 currentMoveString[4] = cl.promoChar;
2634 currentMoveString[5] = NULLCHAR;
2636 return (int) cl.kind;
2643 * piece move with rank or file disambiguator
2645 DisambiguateClosure cl;
2648 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2650 /* remove the [xX:-] */
2651 if ((yytext[2] == 'x') || (yytext[2] == 'X')
2652 || (yytext[2] == ':') || (yytext[2] == '-')) skip = 1;
2654 if (WhiteOnMove(yyboardindex)) {
2655 cl.pieceIn = CharToPiece(ToUpper(yytext[0]));
2657 cl.pieceIn = CharToPiece(ToLower(yytext[0]));
2659 if (isalpha(yytext[1])) {
2661 cl.ffIn = yytext[1] - AAA;
2663 cl.rfIn = yytext[1] - ONE;
2666 cl.rtIn = yytext[3+skip] - ONE;
2667 cl.ftIn = yytext[2+skip] - AAA;
2668 cl.promoCharIn = NULLCHAR;
2670 /* [HGM] do not allow values beyond board size */
2671 if(cl.rtIn >= BOARD_HEIGHT ||
2672 cl.rfIn >= BOARD_HEIGHT ||
2673 cl.ffIn >= BOARD_WIDTH ||
2674 cl.ftIn >= BOARD_WIDTH )
2677 Disambiguate(boards[yyboardindex],
2678 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2680 currentMoveString[0] = cl.ff + AAA;
2681 currentMoveString[1] = cl.rf + ONE;
2682 currentMoveString[2] = cl.ft + AAA;
2683 currentMoveString[3] = cl.rt + ONE;
2684 currentMoveString[4] = cl.promoChar;
2685 currentMoveString[5] = NULLCHAR;
2687 return (int) cl.kind;
2695 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2697 /* [HGM] all squares referenced to board edges in stead of absolute */
2698 if (WhiteOnMove(yyboardindex)) {
2699 if (boards[yyboardindex][0][(BOARD_WIDTH-1)>>1] == WhiteKing) {
2700 /* ICS wild castling */
2702 ff = (BOARD_WIDTH-1)>>1;
2705 sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
2708 ff = BOARD_WIDTH>>1;
2711 sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
2714 if (boards[yyboardindex][BOARD_HEIGHT-1][3] == BlackKing) {
2715 /* ICS wild castling */
2716 rf = BOARD_HEIGHT-1;
2717 ff = (BOARD_WIDTH-1)>>1;
2718 rt = BOARD_HEIGHT-1;
2720 sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
2722 rf = BOARD_HEIGHT-1;
2723 ff = BOARD_WIDTH>>1;
2724 rt = BOARD_HEIGHT-1;
2726 sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
2729 return (int) LegalityTest(boards[yyboardindex],
2730 PosFlags(yyboardindex), EP_UNKNOWN,
2731 initialRights, /* [HGM] assume all castlings allowed */
2732 rf, ff, rt, ft, NULLCHAR);
2740 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2742 if (WhiteOnMove(yyboardindex)) {
2743 if (boards[yyboardindex][0][(BOARD_WIDTH-1)>>1] == WhiteKing) {
2744 /* ICS wild castling */
2746 ff = (BOARD_WIDTH-1)>>1;
2749 sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
2752 ff = BOARD_WIDTH>>1;
2755 sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
2758 if (boards[yyboardindex][BOARD_HEIGHT-1][(BOARD_WIDTH-1)>>1] == BlackKing) {
2759 /* ICS wild castling */
2760 rf = BOARD_HEIGHT-1;
2761 ff = (BOARD_WIDTH-1)>>1;
2762 rt = BOARD_HEIGHT-1;
2764 sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
2766 rf = BOARD_HEIGHT-1;
2767 ff = BOARD_WIDTH>>1;
2768 rt = BOARD_HEIGHT-1;
2770 sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
2773 return (int) LegalityTest(boards[yyboardindex],
2774 PosFlags(yyboardindex), EP_UNKNOWN,
2775 initialRights, /* [HGM] assume all castlings allowed */
2776 rf, ff, rt, ft, NULLCHAR);
2782 /* Bughouse piece drop. No legality checking for now. */
2783 currentMoveString[1] = '@';
2784 currentMoveString[2] = yytext[2];
2785 currentMoveString[3] = yytext[3];
2786 currentMoveString[4] = NULLCHAR;
2788 if (appData.debugMode) {
2789 fprintf(debugFP, "Drop: %s\n", currentMoveString);
2791 /* [HGM] do not allow values beyond board size */
2792 if(currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2793 currentMoveString[2] - AAA >= BOARD_WIDTH )
2796 if (WhiteOnMove(yyboardindex)) {
2797 currentMoveString[0] = ToUpper(yytext[0]);
2798 return (int) WhiteDrop;
2800 currentMoveString[0] = ToLower(yytext[0]);
2801 return (int) BlackDrop;
2808 if (WhiteOnMove(yyboardindex))
2809 return (int) BlackWins;
2811 return (int) WhiteWins;
2817 return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
2823 return (int) GameUnfinished;
2829 return (int) GameIsDrawn;
2835 return (int) GameIsDrawn;
2841 if (WhiteOnMove(yyboardindex))
2842 return (int) BlackWins;
2844 return (int) WhiteWins;
2850 if (WhiteOnMove(yyboardindex))
2851 return (int) BlackWins;
2853 return (int) WhiteWins;
2859 return (int) GameIsDrawn;
2865 return (int) GameIsDrawn;
2871 return (int) (ToUpper(yytext[0]) == 'W' ? WhiteWins : BlackWins);
2877 return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
2883 return (int) WhiteWins;
2889 return (int) BlackWins;
2895 return (int) GameIsDrawn;
2901 return (int) GameUnfinished;
2908 if ((yyleng == 1) && (yytext[0] == '1'))
2909 return (int) MoveNumberOne;
2915 /* elapsed time indication, e.g. (0:12) or {10:21.071} */
2916 return (int) ElapsedTime;
2922 /* position diagram enclosed in [-- --] */
2923 return (int) PositionDiagram;
2927 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2928 yy_c_buf_p = yy_cp -= 1;
2929 YY_DO_BEFORE_ACTION; /* set up yytext again */
2932 /* position diagram enclosed in {-- --} */
2933 return (int) PositionDiagram;
2939 return (int) PGNTag;
2945 return (int) GNUChessGame;
2949 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2950 yy_c_buf_p = yy_cp -= 1;
2951 YY_DO_BEFORE_ACTION; /* set up yytext again */
2954 return (int) XBoardGame;
2959 { /* numeric annotation glyph */
2965 { /* anything in {} */
2966 return (int) Comment;
2970 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2971 yy_c_buf_p = yy_cp -= 1;
2972 YY_DO_BEFORE_ACTION; /* set up yytext again */
2974 { /* ; to end of line */
2975 return (int) Comment;
2980 { /* anything in [] */
2981 return (int) Comment;
2987 return (int) Comment;
2992 { /* >=2 chars in () */
2993 return (int) Comment;
2999 /* Skip mail headers */
3005 /* Skip random words */
3011 /* Skip everything else */
3018 case YY_STATE_EOF(INITIAL):
3021 case YY_END_OF_BUFFER:
3023 /* Amount of text matched not including the EOB char. */
3024 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
3026 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3027 *yy_cp = yy_hold_char;
3028 YY_RESTORE_YY_MORE_OFFSET
3030 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
3032 /* We're scanning a new file or input source. It's
3033 * possible that this happened because the user
3034 * just pointed yyin at a new source and called
3035 * yylex(). If so, then we have to assure
3036 * consistency between yy_current_buffer and our
3037 * globals. Here is the right place to do so, because
3038 * this is the first action (other than possibly a
3039 * back-up) that will match for the new input source.
3041 yy_n_chars = yy_current_buffer->yy_n_chars;
3042 yy_current_buffer->yy_input_file = yyin;
3043 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
3046 /* Note that here we test for yy_c_buf_p "<=" to the position
3047 * of the first EOB in the buffer, since yy_c_buf_p will
3048 * already have been incremented past the NUL character
3049 * (since all states make transitions on EOB to the
3050 * end-of-buffer state). Contrast this with the test
3053 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
3054 { /* This was really a NUL. */
3055 yy_state_type yy_next_state;
3057 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
3059 yy_current_state = yy_get_previous_state();
3061 /* Okay, we're now positioned to make the NUL
3062 * transition. We couldn't have
3063 * yy_get_previous_state() go ahead and do it
3064 * for us because it doesn't know how to deal
3065 * with the possibility of jamming (and we don't
3066 * want to build jamming into it because then it
3067 * will run more slowly).
3070 yy_next_state = yy_try_NUL_trans( yy_current_state );
3072 yy_bp = yytext_ptr + YY_MORE_ADJ;
3074 if ( yy_next_state )
3076 /* Consume the NUL. */
3077 yy_cp = ++yy_c_buf_p;
3078 yy_current_state = yy_next_state;
3085 goto yy_find_action;
3089 else switch ( yy_get_next_buffer() )
3091 case EOB_ACT_END_OF_FILE:
3093 yy_did_buffer_switch_on_eof = 0;
3097 /* Note: because we've taken care in
3098 * yy_get_next_buffer() to have set up
3099 * yytext, we can now set up
3100 * yy_c_buf_p so that if some total
3101 * hoser (like flex itself) wants to
3102 * call the scanner after we return the
3103 * YY_NULL, it'll still work - another
3104 * YY_NULL will get returned.
3106 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
3108 yy_act = YY_STATE_EOF(YY_START);
3114 if ( ! yy_did_buffer_switch_on_eof )
3120 case EOB_ACT_CONTINUE_SCAN:
3122 yytext_ptr + yy_amount_of_matched_text;
3124 yy_current_state = yy_get_previous_state();
3127 yy_bp = yytext_ptr + YY_MORE_ADJ;
3130 case EOB_ACT_LAST_MATCH:
3132 &yy_current_buffer->yy_ch_buf[yy_n_chars];
3134 yy_current_state = yy_get_previous_state();
3137 yy_bp = yytext_ptr + YY_MORE_ADJ;
3138 goto yy_find_action;
3145 "fatal flex scanner internal error--no action found" );
3146 } /* end of action switch */
3147 } /* end of scanning one token */
3148 } /* end of yylex */
3151 /* yy_get_next_buffer - try to read in a new buffer
3153 * Returns a code representing an action:
3154 * EOB_ACT_LAST_MATCH -
3155 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3156 * EOB_ACT_END_OF_FILE - end of file
3159 static int yy_get_next_buffer()
3161 register char *dest = yy_current_buffer->yy_ch_buf;
3162 register char *source = yytext_ptr;
3163 register int number_to_move, i;
3166 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
3168 "fatal flex scanner internal error--end of buffer missed" );
3170 if ( yy_current_buffer->yy_fill_buffer == 0 )
3171 { /* Don't try to fill the buffer, so this is an EOF. */
3172 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
3174 /* We matched a single character, the EOB, so
3175 * treat this as a final EOF.
3177 return EOB_ACT_END_OF_FILE;
3182 /* We matched some text prior to the EOB, first
3185 return EOB_ACT_LAST_MATCH;
3189 /* Try to read more data. */
3191 /* First move last chars to start of buffer. */
3192 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
3194 for ( i = 0; i < number_to_move; ++i )
3195 *(dest++) = *(source++);
3197 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3198 /* don't do the read, it's not guaranteed to return an EOF,
3201 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
3206 yy_current_buffer->yy_buf_size - number_to_move - 1;
3208 while ( num_to_read <= 0 )
3209 { /* Not enough room in the buffer - grow it. */
3210 #ifdef YY_USES_REJECT
3212 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
3215 /* just a shorter name for the current buffer */
3216 YY_BUFFER_STATE b = yy_current_buffer;
3218 int yy_c_buf_p_offset =
3219 (int) (yy_c_buf_p - b->yy_ch_buf);
3221 if ( b->yy_is_our_buffer )
3223 int new_size = b->yy_buf_size * 2;
3225 if ( new_size <= 0 )
3226 b->yy_buf_size += b->yy_buf_size / 8;
3228 b->yy_buf_size *= 2;
3230 b->yy_ch_buf = (char *)
3231 /* Include room in for 2 EOB chars. */
3232 yy_flex_realloc( (void *) b->yy_ch_buf,
3233 b->yy_buf_size + 2 );
3236 /* Can't grow it, we don't own it. */
3239 if ( ! b->yy_ch_buf )
3241 "fatal error - scanner input buffer overflow" );
3243 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
3245 num_to_read = yy_current_buffer->yy_buf_size -
3250 if ( num_to_read > YY_READ_BUF_SIZE )
3251 num_to_read = YY_READ_BUF_SIZE;
3253 /* Read in more data. */
3254 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
3255 yy_n_chars, num_to_read );
3257 yy_current_buffer->yy_n_chars = yy_n_chars;
3260 if ( yy_n_chars == 0 )
3262 if ( number_to_move == YY_MORE_ADJ )
3264 ret_val = EOB_ACT_END_OF_FILE;
3270 ret_val = EOB_ACT_LAST_MATCH;
3271 yy_current_buffer->yy_buffer_status =
3272 YY_BUFFER_EOF_PENDING;
3277 ret_val = EOB_ACT_CONTINUE_SCAN;
3279 yy_n_chars += number_to_move;
3280 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
3281 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
3283 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
3289 /* yy_get_previous_state - get the state just before the EOB char was reached */
3291 static yy_state_type yy_get_previous_state()
3293 register yy_state_type yy_current_state;
3294 register char *yy_cp;
3296 yy_current_state = yy_start;
3297 yy_current_state += YY_AT_BOL();
3298 yy_state_ptr = yy_state_buf;
3299 *yy_state_ptr++ = yy_current_state;
3301 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
3303 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3304 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3306 yy_current_state = (int) yy_def[yy_current_state];
3307 if ( yy_current_state >= 735 )
3308 yy_c = yy_meta[(unsigned int) yy_c];
3310 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3311 *yy_state_ptr++ = yy_current_state;
3314 return yy_current_state;
3318 /* yy_try_NUL_trans - try to make a transition on the NUL character
3321 * next_state = yy_try_NUL_trans( current_state );
3324 #ifdef YY_USE_PROTOS
3325 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
3327 static yy_state_type yy_try_NUL_trans( yy_current_state )
3328 yy_state_type yy_current_state;
3331 register int yy_is_jam;
3333 register YY_CHAR yy_c = 1;
3334 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3336 yy_current_state = (int) yy_def[yy_current_state];
3337 if ( yy_current_state >= 735 )
3338 yy_c = yy_meta[(unsigned int) yy_c];
3340 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3341 yy_is_jam = (yy_current_state == 734);
3343 *yy_state_ptr++ = yy_current_state;
3345 return yy_is_jam ? 0 : yy_current_state;
3350 #ifdef YY_USE_PROTOS
3351 static void yyunput( int c, register char *yy_bp )
3353 static void yyunput( c, yy_bp )
3355 register char *yy_bp;
3358 register char *yy_cp = yy_c_buf_p;
3360 /* undo effects of setting up yytext */
3361 *yy_cp = yy_hold_char;
3363 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3364 { /* need to shift things up to make room */
3365 /* +2 for EOB chars. */
3366 register int number_to_move = yy_n_chars + 2;
3367 register char *dest = &yy_current_buffer->yy_ch_buf[
3368 yy_current_buffer->yy_buf_size + 2];
3369 register char *source =
3370 &yy_current_buffer->yy_ch_buf[number_to_move];
3372 while ( source > yy_current_buffer->yy_ch_buf )
3373 *--dest = *--source;
3375 yy_cp += (int) (dest - source);
3376 yy_bp += (int) (dest - source);
3377 yy_current_buffer->yy_n_chars =
3378 yy_n_chars = yy_current_buffer->yy_buf_size;
3380 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3381 YY_FATAL_ERROR( "flex scanner push-back overflow" );
3384 *--yy_cp = (char) c;
3388 yy_hold_char = *yy_cp;
3391 #endif /* ifndef YY_NO_UNPUT */
3395 static int yyinput()
3402 *yy_c_buf_p = yy_hold_char;
3404 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
3406 /* yy_c_buf_p now points to the character we want to return.
3407 * If this occurs *before* the EOB characters, then it's a
3408 * valid NUL; if not, then we've hit the end of the buffer.
3410 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
3411 /* This was really a NUL. */
3415 { /* need more input */
3416 int offset = yy_c_buf_p - yytext_ptr;
3419 switch ( yy_get_next_buffer() )
3421 case EOB_ACT_LAST_MATCH:
3422 /* This happens because yy_g_n_b()
3423 * sees that we've accumulated a
3424 * token and flags that we need to
3425 * try matching the token before
3426 * proceeding. But for input(),
3427 * there's no matching to consider.
3428 * So convert the EOB_ACT_LAST_MATCH
3429 * to EOB_ACT_END_OF_FILE.
3432 /* Reset buffer status. */
3437 case EOB_ACT_END_OF_FILE:
3442 if ( ! yy_did_buffer_switch_on_eof )
3451 case EOB_ACT_CONTINUE_SCAN:
3452 yy_c_buf_p = yytext_ptr + offset;
3458 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
3459 *yy_c_buf_p = '\0'; /* preserve yytext */
3460 yy_hold_char = *++yy_c_buf_p;
3462 yy_current_buffer->yy_at_bol = (c == '\n');
3468 #ifdef YY_USE_PROTOS
3469 void yyrestart( FILE *input_file )
3471 void yyrestart( input_file )
3475 if ( ! yy_current_buffer )
3476 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
3478 yy_init_buffer( yy_current_buffer, input_file );
3479 yy_load_buffer_state();
3483 #ifdef YY_USE_PROTOS
3484 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
3486 void yy_switch_to_buffer( new_buffer )
3487 YY_BUFFER_STATE new_buffer;
3490 if ( yy_current_buffer == new_buffer )
3493 if ( yy_current_buffer )
3495 /* Flush out information for old buffer. */
3496 *yy_c_buf_p = yy_hold_char;
3497 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
3498 yy_current_buffer->yy_n_chars = yy_n_chars;
3501 yy_current_buffer = new_buffer;
3502 yy_load_buffer_state();
3504 /* We don't actually know whether we did this switch during
3505 * EOF (yywrap()) processing, but the only time this flag
3506 * is looked at is after yywrap() is called, so it's safe
3507 * to go ahead and always set it.
3509 yy_did_buffer_switch_on_eof = 1;
3513 #ifdef YY_USE_PROTOS
3514 void yy_load_buffer_state( void )
3516 void yy_load_buffer_state()
3519 yy_n_chars = yy_current_buffer->yy_n_chars;
3520 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
3521 yyin = yy_current_buffer->yy_input_file;
3522 yy_hold_char = *yy_c_buf_p;
3526 #ifdef YY_USE_PROTOS
3527 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
3529 YY_BUFFER_STATE yy_create_buffer( file, size )
3536 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3538 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3540 b->yy_buf_size = size;
3542 /* yy_ch_buf has to be 2 characters longer than the size given because
3543 * we need to put in 2 end-of-buffer characters.
3545 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
3546 if ( ! b->yy_ch_buf )
3547 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3549 b->yy_is_our_buffer = 1;
3551 yy_init_buffer( b, file );
3557 #ifdef YY_USE_PROTOS
3558 void yy_delete_buffer( YY_BUFFER_STATE b )
3560 void yy_delete_buffer( b )
3567 if ( b == yy_current_buffer )