comparison tests/agcl/contrib/good/bug-I158.c @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:13d2b8934445
1 /*
2 YABASIC --- a tiny integrated Basic Compiler/Interpreter
3
4 BISON - part
5
6 this Program is subject to the GNU General Public License;
7 see the file yabasic.c for details.
8 */
9
10
11 #undef WINDOWS
12 #include "yabasic.h" /* definitions of yabasic */
13 #include <malloc.h>
14
15 #if HAVE_ALLOCA_H
16 #include <alloca.h>
17 #endif
18
19 void __yy_bcopy(char *,char *,int); /* prototype missing */
20
21 int yylineno=1;
22 int yylex(void);
23
24
25 /*
26 * AnaGram, A System for Syntax Directed Programming
27 * File generated by: ...
28 *
29 * AnaGram Parsing Engine
30 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
31 *
32 * This software is provided 'as-is', without any express or implied
33 * warranty. In no event will the authors be held liable for any damages
34 * arising from the use of this software.
35 *
36 * Permission is granted to anyone to use this software for any purpose,
37 * including commercial applications, and to alter it and redistribute it
38 * freely, subject to the following restrictions:
39 *
40 * 1. The origin of this software must not be misrepresented; you must not
41 * claim that you wrote the original software. If you use this software
42 * in a product, an acknowledgment in the product documentation would be
43 * appreciated but is not required.
44 * 2. Altered source versions must be plainly marked as such, and must not be
45 * misrepresented as being the original software.
46 * 3. This notice may not be removed or altered from any source distribution.
47 */
48
49 #ifndef BUG-I158_H
50 #include "bug-I158.h"
51 #endif
52
53 #ifndef BUG-I158_H
54 #error Mismatched header file
55 #endif
56
57 #include <ctype.h>
58 #include <stdio.h>
59
60 #define RULE_CONTEXT (&((PCB).cs[(PCB).ssx]))
61 #define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx])
62 #define CONTEXT ((PCB).cs[(PCB).ssx])
63
64
65
66 bug-I158_pcb_type bug-I158_pcb;
67 #define PCB bug-I158_pcb
68 #define CHANGE_REDUCTION(x) bug-I158_change_reduction(bug-I158_##x##_token)
69 int bug-I158_change_reduction(bug-I158_token_type);
70
71
72 #ifndef CONVERT_CASE
73 #define CONVERT_CASE(c) (c)
74 #endif
75 #ifndef TAB_SPACING
76 #define TAB_SPACING 8
77 #endif
78
79 #define ag_rp_1(x, e) (x*pow(10,e))
80
81 #define ag_rp_2(x, e) (x*pow(10,-e))
82
83 #define ag_rp_3(i, f) (i+f)
84
85 #define ag_rp_4(f) (f)
86
87 #define ag_rp_5(d) (d-'0')
88
89 #define ag_rp_6(x, d) (10*x + d-'0')
90
91 #define ag_rp_7(d) ((d-'0')/10.)
92
93 #define ag_rp_8(d, f) ((d-'0' + f)/10.)
94
95 #define ag_rp_9(d) (d-'0')
96
97 #define ag_rp_10(x, d) (10*x + d-'0')
98
99 #define ag_rp_11(c) (pushChar(c), 1)
100
101 #define ag_rp_12(k, c) (pushChar(c), k+1)
102
103 #define ag_rp_13(k) (strdup(popString(k)))
104
105 #define ag_rp_14(k) (pushChar('$'), strdup(popString(k+1)))
106
107 #define ag_rp_15(k) (strdup(popString(k)))
108
109 #define ag_rp_16(d) (pushChar(d), 1)
110
111 #define ag_rp_17(k, d) (pushChar(d), k+1)
112
113 #define ag_rp_18(k) (strdup(popString(k)))
114
115 #define ag_rp_19(k) (strdup(popString(k)))
116
117 static void ag_rp_20(void) {
118 /* Line -, bug-I158.syn */
119 if (errorlevel<=ERROR) {YYABORT;}
120 }
121
122 static void ag_rp_21(void) {
123 /* Line -, bug-I158.syn */
124 yylineno+=$3;
125 }
126
127 static void ag_rp_22(void) {
128 /* Line -, bug-I158.syn */
129 create_goto($2);
130 }
131
132 static void ag_rp_23(void) {
133 /* Line -, bug-I158.syn */
134 create_gosub($2);
135 }
136
137 static void ag_rp_24(void) {
138 /* Line -, bug-I158.syn */
139 create_exception(TRUE);
140 }
141
142 static void ag_rp_25(void) {
143 /* Line -, bug-I158.syn */
144 create_exception(FALSE);
145 }
146
147 static void ag_rp_26(void) {
148 /* Line -, bug-I158.syn */
149 create_skipper();
150 }
151
152 static void ag_rp_27(void) {
153 /* Line -, bug-I158.syn */
154 create_nop();
155 }
156
157 static void ag_rp_28(void) {
158 /* Line -, bug-I158.syn */
159 create_skipper();
160 }
161
162 static void ag_rp_29(void) {
163 /* Line -, bug-I158.syn */
164 create_nop();
165 }
166
167 static void ag_rp_30(void) {
168 /* Line -, bug-I158.syn */
169 create_label($2);
170 }
171
172 static void ag_rp_31(void) {
173 /* Line -, bug-I158.syn */
174 create_myopen($2,'+');
175 }
176
177 static void ag_rp_32(void) {
178 /* Line -, bug-I158.syn */
179 create_myopen($2,'-');
180 }
181
182 static void ag_rp_33(void) {
183 /* Line -, bug-I158.syn */
184 create_myclose($2);
185 }
186
187 static void ag_rp_34(void) {
188 /* Line -, bug-I158.syn */
189 create_revert(FALSE);
190 }
191
192 static void ag_rp_35(void) {
193 /* Line -, bug-I158.syn */
194 lastinput->args=0;
195 }
196
197 static void ag_rp_36(void) {
198 /* Line -, bug-I158.syn */
199 create_restore("");
200 }
201
202 static void ag_rp_37(void) {
203 /* Line -, bug-I158.syn */
204 create_restore($2);
205 }
206
207 static void ag_rp_38(void) {
208 /* Line -, bug-I158.syn */
209 create_return();
210 }
211
212 static void ag_rp_39(void) {
213 /* Line -, bug-I158.syn */
214 create_openwin(FALSE);
215 }
216
217 static void ag_rp_40(void) {
218 /* Line -, bug-I158.syn */
219 create_openwin(TRUE);
220 }
221
222 static void ag_rp_41(void) {
223 /* Line -, bug-I158.syn */
224 create_dot();
225 }
226
227 static void ag_rp_42(void) {
228 /* Line -, bug-I158.syn */
229 create_line('l');
230 }
231
232 static void ag_rp_43(void) {
233 /* Line -, bug-I158.syn */
234 create_circle()
235 }
236
237 static void ag_rp_44(void) {
238 /* Line -, bug-I158.syn */
239 create_text(TRUE);
240 }
241
242 static void ag_rp_45(void) {
243 /* Line -, bug-I158.syn */
244 create_text(FALSE);
245 }
246
247 static void ag_rp_46(void) {
248 /* Line -, bug-I158.syn */
249 create_makemap();
250 }
251
252 static void ag_rp_47(void) {
253 /* Line -, bug-I158.syn */
254 create_line('a');
255 }
256
257 static void ag_rp_48(void) {
258 /* Line -, bug-I158.syn */
259 create_tick(1);
260 }
261
262 static void ag_rp_49(void) {
263 /* Line -, bug-I158.syn */
264 create_tick(3);
265 }
266
267 static void ag_rp_50(void) {
268 /* Line -, bug-I158.syn */
269 create_tick(0);
270 }
271
272 static void ag_rp_51(void) {
273 /* Line -, bug-I158.syn */
274 create_tick(2);
275 }
276
277 static void ag_rp_52(void) {
278 /* Line -, bug-I158.syn */
279 create_closewin();
280 }
281
282 static void ag_rp_53(void) {
283 /* Line -, bug-I158.syn */
284 create_clearwin();
285 }
286
287 static void ag_rp_54(void) {
288 /* Line -, bug-I158.syn */
289 create_clearscreen();
290 }
291
292 static void ag_rp_55(void) {
293 /* Line -, bug-I158.syn */
294 create_openprinter(0);
295 }
296
297 static void ag_rp_56(void) {
298 /* Line -, bug-I158.syn */
299 create_openprinter(1);
300 }
301
302 static void ag_rp_57(void) {
303 /* Line -, bug-I158.syn */
304 create_closeprinter();
305 }
306
307 static void ag_rp_58(void) {
308 /* Line -, bug-I158.syn */
309 create_mywait();
310 }
311
312 static void ag_rp_59(void) {
313 /* Line -, bug-I158.syn */
314 create_bell();
315 }
316
317 static void ag_rp_60(void) {
318 /* Line -, bug-I158.syn */
319 create_function(MYINKEY); create_popstrsym(NULL);
320 }
321
322 static void ag_rp_61(void) {
323 /* Line -, bug-I158.syn */
324 create_function(MYSYSTEM2);
325 create_popdblsym(NULL);
326 }
327
328 static void ag_rp_62(void) {
329 /* Line -, bug-I158.syn */
330 create_poke('s');
331 }
332
333 static void ag_rp_63(void) {
334 /* Line -, bug-I158.syn */
335 create_poke('d');
336 }
337
338 static void ag_rp_64(void) {
339 /* Line -, bug-I158.syn */
340 create_myend();
341 }
342
343 static void ag_rp_65(void) {
344 /* Line -, bug-I158.syn */
345 create_popstrsym($1);
346 }
347
348 static void ag_rp_66(void) {
349 /* Line -, bug-I158.syn */
350 create_pushstrptr($3);
351 }
352
353 static void ag_rp_67(void) {
354 /* Line -, bug-I158.syn */
355 create_changestring(MYMID);
356 }
357
358 static void ag_rp_68(void) {
359 /* Line -, bug-I158.syn */
360 create_pushstrptr($3);
361 }
362
363 static void ag_rp_69(void) {
364 /* Line -, bug-I158.syn */
365 create_changestring(MYLEFT);
366 }
367
368 static void ag_rp_70(void) {
369 /* Line -, bug-I158.syn */
370 create_pushstrptr($3);
371 }
372
373 static void ag_rp_71(void) {
374 /* Line -, bug-I158.syn */
375 create_changestring(MYRIGHT);
376 }
377
378 static void ag_rp_72(void) {
379 /* Line -, bug-I158.syn */
380 pushcounter();
381 }
382
383 static void ag_rp_73(void) {
384 /* Line -, bug-I158.syn */
385 create_doarray($1,ASSIGNSTRINGARRAY);
386 }
387
388 static void ag_rp_74(void) {
389 /* Line -, bug-I158.syn */
390 pushcounter();
391 }
392
393 static void ag_rp_75(void) {
394 /* Line -, bug-I158.syn */
395 create_doarray($3,GETSTRINGPOINTER);
396 }
397
398 static void ag_rp_76(void) {
399 /* Line -, bug-I158.syn */
400 create_changestring(MYMID);
401 }
402
403 static void ag_rp_77(void) {
404 /* Line -, bug-I158.syn */
405 pushcounter();
406 }
407
408 static void ag_rp_78(void) {
409 /* Line -, bug-I158.syn */
410 create_doarray($3,GETSTRINGPOINTER);
411 }
412
413 static void ag_rp_79(void) {
414 /* Line -, bug-I158.syn */
415 create_changestring(MYLEFT);
416 }
417
418 static void ag_rp_80(void) {
419 /* Line -, bug-I158.syn */
420 pushcounter();
421 }
422
423 static void ag_rp_81(void) {
424 /* Line -, bug-I158.syn */
425 create_doarray($3,GETSTRINGPOINTER);
426 }
427
428 static void ag_rp_82(void) {
429 /* Line -, bug-I158.syn */
430 create_changestring(MYRIGHT);
431 }
432
433 static void ag_rp_83(void) {
434 /* Line -, bug-I158.syn */
435 create_pushstrsym($1);
436 }
437
438 static void ag_rp_84(void) {
439 /* Line -, bug-I158.syn */
440 if ($1==NULL) {error(ERROR,"String not terminated");create_pushstr("");} else {create_pushstr($1);}
441 }
442
443 static void ag_rp_85(void) {
444 /* Line -, bug-I158.syn */
445 create_concat();
446 }
447
448 static void ag_rp_86(void) {
449 /* Line -, bug-I158.syn */
450 pushcounter();
451 }
452
453 static void ag_rp_87(void) {
454 /* Line -, bug-I158.syn */
455 create_doarray($1,CALLSTRINGARRAY);
456 }
457
458 static void ag_rp_88(void) {
459 /* Line -, bug-I158.syn */
460 create_function(MYLEFT);
461 }
462
463 static void ag_rp_89(void) {
464 /* Line -, bug-I158.syn */
465 create_function(MYRIGHT);
466 }
467
468 static void ag_rp_90(void) {
469 /* Line -, bug-I158.syn */
470 create_function(MYMID);
471 }
472
473 static void ag_rp_91(void) {
474 /* Line -, bug-I158.syn */
475 create_function(MYSTR);
476 }
477
478 static void ag_rp_92(void) {
479 /* Line -, bug-I158.syn */
480 create_function(MYSTR2);
481 }
482
483 static void ag_rp_93(void) {
484 /* Line -, bug-I158.syn */
485 create_function(MYINKEY);
486 }
487
488 static void ag_rp_94(void) {
489 /* Line -, bug-I158.syn */
490 create_function(MYCHR);
491 }
492
493 static void ag_rp_95(void) {
494 /* Line -, bug-I158.syn */
495 create_function(MYUPPER);
496 }
497
498 static void ag_rp_96(void) {
499 /* Line -, bug-I158.syn */
500 create_function(MYLOWER);
501 }
502
503 static void ag_rp_97(void) {
504 /* Line -, bug-I158.syn */
505 create_function(MYLTRIM);
506 }
507
508 static void ag_rp_98(void) {
509 /* Line -, bug-I158.syn */
510 create_function(MYRTRIM);
511 }
512
513 static void ag_rp_99(void) {
514 /* Line -, bug-I158.syn */
515 create_function(MYTRIM);
516 }
517
518 static void ag_rp_100(void) {
519 /* Line -, bug-I158.syn */
520 create_function(MYSYSTEM);
521 }
522
523 static void ag_rp_101(void) {
524 /* Line -, bug-I158.syn */
525 create_function(MYDATE);
526 }
527
528 static void ag_rp_102(void) {
529 /* Line -, bug-I158.syn */
530 create_function(MYTIME);
531 }
532
533 static void ag_rp_103(void) {
534 /* Line -, bug-I158.syn */
535 create_function(MYPEEK2);
536 }
537
538 static void ag_rp_104(void) {
539 /* Line -, bug-I158.syn */
540 create_popdblsym($1);
541 }
542
543 static void ag_rp_105(void) {
544 /* Line -, bug-I158.syn */
545 pushcounter();
546 }
547
548 static void ag_rp_106(void) {
549 /* Line -, bug-I158.syn */
550 create_doarray($1,ASSIGNARRAY);
551 }
552
553 static void ag_rp_107(void) {
554 /* Line -, bug-I158.syn */
555 create_pushdbl($1);
556 }
557
558 static void ag_rp_108(void) {
559 /* Line -, bug-I158.syn */
560 create_pushdblsym($1);
561 }
562
563 static void ag_rp_109(void) {
564 /* Line -, bug-I158.syn */
565 pushcounter();
566 }
567
568 static void ag_rp_110(void) {
569 /* Line -, bug-I158.syn */
570 create_doarray($1,CALLARRAY);
571 }
572
573 static void ag_rp_111(void) {
574 /* Line -, bug-I158.syn */
575 create_dblbin('+');
576 }
577
578 static void ag_rp_112(void) {
579 /* Line -, bug-I158.syn */
580 create_dblbin('-');
581 }
582
583 static void ag_rp_113(void) {
584 /* Line -, bug-I158.syn */
585 create_dblbin('*');
586 }
587
588 static void ag_rp_114(void) {
589 /* Line -, bug-I158.syn */
590 create_dblbin('/');
591 }
592
593 static void ag_rp_115(void) {
594 /* Line -, bug-I158.syn */
595 create_dblbin('^');
596 }
597
598 static void ag_rp_116(void) {
599 /* Line -, bug-I158.syn */
600 create_negate();
601 }
602
603 static void ag_rp_117(void) {
604 /* Line -, bug-I158.syn */
605 create_map();
606 }
607
608 static void ag_rp_118(void) {
609 /* Line -, bug-I158.syn */
610 create_function(MYSIN);
611 }
612
613 static void ag_rp_119(void) {
614 /* Line -, bug-I158.syn */
615 create_function(MYASIN);
616 }
617
618 static void ag_rp_120(void) {
619 /* Line -, bug-I158.syn */
620 create_function(MYCOS);
621 }
622
623 static void ag_rp_121(void) {
624 /* Line -, bug-I158.syn */
625 create_function(MYACOS);
626 }
627
628 static void ag_rp_122(void) {
629 /* Line -, bug-I158.syn */
630 create_function(MYTAN);
631 }
632
633 static void ag_rp_123(void) {
634 /* Line -, bug-I158.syn */
635 create_function(MYATAN);
636 }
637
638 static void ag_rp_124(void) {
639 /* Line -, bug-I158.syn */
640 create_function(MYATAN2);
641 }
642
643 static void ag_rp_125(void) {
644 /* Line -, bug-I158.syn */
645 create_function(MYEXP);
646 }
647
648 static void ag_rp_126(void) {
649 /* Line -, bug-I158.syn */
650 create_function(MYLOG);
651 }
652
653 static void ag_rp_127(void) {
654 /* Line -, bug-I158.syn */
655 create_function(MYSQRT);
656 }
657
658 static void ag_rp_128(void) {
659 /* Line -, bug-I158.syn */
660 create_function(MYINT);
661 }
662
663 static void ag_rp_129(void) {
664 /* Line -, bug-I158.syn */
665 create_function(MYFRAC);
666 }
667
668 static void ag_rp_130(void) {
669 /* Line -, bug-I158.syn */
670 create_function(MYMOD);
671 }
672
673 static void ag_rp_131(void) {
674 /* Line -, bug-I158.syn */
675 create_function(MYRAN);
676 }
677
678 static void ag_rp_132(void) {
679 /* Line -, bug-I158.syn */
680 create_function(MYRAN2);
681 }
682
683 static void ag_rp_133(void) {
684 /* Line -, bug-I158.syn */
685 create_function(MYMIN);
686 }
687
688 static void ag_rp_134(void) {
689 /* Line -, bug-I158.syn */
690 create_function(MYMAX);
691 }
692
693 static void ag_rp_135(void) {
694 /* Line -, bug-I158.syn */
695 create_function(MYXMAP);
696 }
697
698 static void ag_rp_136(void) {
699 /* Line -, bug-I158.syn */
700 create_function(MYYMAP);
701 }
702
703 static void ag_rp_137(void) {
704 /* Line -, bug-I158.syn */
705 create_function(MYLEN);
706 }
707
708 static void ag_rp_138(void) {
709 /* Line -, bug-I158.syn */
710 create_function(MYVAL);
711 }
712
713 static void ag_rp_139(void) {
714 /* Line -, bug-I158.syn */
715 create_function(MYASC);
716 }
717
718 static void ag_rp_140(void) {
719 /* Line -, bug-I158.syn */
720 create_function(MYINSTR);
721 }
722
723 static void ag_rp_141(void) {
724 /* Line -, bug-I158.syn */
725 create_function(MYSYSTEM2);
726 }
727
728 static void ag_rp_142(void) {
729 /* Line -, bug-I158.syn */
730 create_function(MYPEEK);
731 }
732
733 static double ag_rp_143(void) {
734 /* Line -, bug-I158.syn */
735 $$=$1;
736 }
737
738 static double ag_rp_144(void) {
739 /* Line -, bug-I158.syn */
740 $$=$2;
741 }
742
743 static double ag_rp_145(void) {
744 /* Line -, bug-I158.syn */
745 $$=-$2;
746 }
747
748 static double ag_rp_146(void) {
749 /* Line -, bug-I158.syn */
750 $$=$1;
751 }
752
753 static double ag_rp_147(void) {
754 /* Line -, bug-I158.syn */
755 $$=atoi($1);
756 }
757
758 static int ag_rp_148(void) {
759 /* Line -, bug-I158.syn */
760 $$=atoi($1);
761 }
762
763 static char * ag_rp_149(void) {
764 /* Line -, bug-I158.syn */
765 $$=$1;
766 }
767
768 static char * ag_rp_150(void) {
769 /* Line -, bug-I158.syn */
770 $$=$1;
771 }
772
773 static void ag_rp_151(void) {
774 /* Line -, bug-I158.syn */
775 pushcounter();
776 }
777
778 static void ag_rp_152(void) {
779 /* Line -, bug-I158.syn */
780 create_dim($1,'d');
781 }
782
783 static void ag_rp_153(void) {
784 /* Line -, bug-I158.syn */
785 pushcounter();
786 }
787
788 static void ag_rp_154(void) {
789 /* Line -, bug-I158.syn */
790 create_dim($3,'d');
791 }
792
793 static void ag_rp_155(void) {
794 /* Line -, bug-I158.syn */
795 pushcounter();
796 }
797
798 static void ag_rp_156(void) {
799 /* Line -, bug-I158.syn */
800 create_dim($1,'s');
801 }
802
803 static void ag_rp_157(void) {
804 /* Line -, bug-I158.syn */
805 pushcounter();
806 }
807
808 static void ag_rp_158(void) {
809 /* Line -, bug-I158.syn */
810 create_dim($3,'s');
811 }
812
813 static void ag_rp_159(void) {
814 /* Line -, bug-I158.syn */
815 inccounter();
816 }
817
818 static void ag_rp_160(void) {
819 /* Line -, bug-I158.syn */
820 inccounter();
821 }
822
823 static void ag_rp_161(void) {
824 /* Line -, bug-I158.syn */
825 pushname($2);create_popdblsym($2);pushgoto();
826 create_pushdblsym($2);
827 }
828
829 static void ag_rp_162(void) {
830 /* Line -, bug-I158.syn */
831 create_dblrelop(($8>0)?'{':'}');
832 create_decide();
833 pushlabel();
834 }
835
836 static void ag_rp_163(void) {
837 /* Line -, bug-I158.syn */
838 yylineno+=$10;
839 }
840
841 static void ag_rp_164(void) {
842 /* Line -, bug-I158.syn */
843 create_pushdbl($8);
844 create_pushdblsym($2);
845 create_dblbin('+');
846 create_popdblsym($2);
847 swap();popgoto();poplabel();
848 }
849
850 static void ag_rp_165(void) {
851 /* Line -, bug-I158.syn */
852 end_of_file=TRUE;
853 error(ERROR,"'next'-statement is missing"); YYABORT;
854 }
855
856 static double ag_rp_166(void) {
857 /* Line -, bug-I158.syn */
858 $$=1.0;
859 }
860
861 static double ag_rp_167(void) {
862 /* Line -, bug-I158.syn */
863 $$=$2;
864 }
865
866 static void ag_rp_168(void) {
867 /* Line -, bug-I158.syn */
868 pop();
869 }
870
871 static void ag_rp_169(void) {
872 /* Line -, bug-I158.syn */
873 if (strcmp(pop()->pointer,$1))
874 {error(ERROR,"'for' and 'next' do not match"); YYABORT;}
875
876 }
877
878 static void ag_rp_170(void) {
879 /* Line -, bug-I158.syn */
880 create_decide();pushlabel();
881 }
882
883 static void ag_rp_171(void) {
884 /* Line -, bug-I158.syn */
885 pushlabel();swap();poplabel();
886 }
887
888 static void ag_rp_172(void) {
889 /* Line -, bug-I158.syn */
890 poplabel();
891 }
892
893 static void ag_rp_173(void) {
894 /* Line -, bug-I158.syn */
895 end_of_file=TRUE;
896 error(ERROR,"'endif'-statement is missing"); YYABORT;
897 }
898
899 static void ag_rp_174(void) {
900 /* Line -, bug-I158.syn */
901 create_boole('|');
902 }
903
904 static void ag_rp_175(void) {
905 /* Line -, bug-I158.syn */
906 create_boole('&');
907 }
908
909 static void ag_rp_176(void) {
910 /* Line -, bug-I158.syn */
911 create_boole('!');
912 }
913
914 static void ag_rp_177(void) {
915 /* Line -, bug-I158.syn */
916 create_strrelop('=');
917 }
918
919 static void ag_rp_178(void) {
920 /* Line -, bug-I158.syn */
921 create_strrelop('!');
922 }
923
924 static void ag_rp_179(void) {
925 /* Line -, bug-I158.syn */
926 create_strrelop('<');
927 }
928
929 static void ag_rp_180(void) {
930 /* Line -, bug-I158.syn */
931 create_strrelop('{');
932 }
933
934 static void ag_rp_181(void) {
935 /* Line -, bug-I158.syn */
936 create_strrelop('>');
937 }
938
939 static void ag_rp_182(void) {
940 /* Line -, bug-I158.syn */
941 create_strrelop('}');
942 }
943
944 static void ag_rp_183(void) {
945 /* Line -, bug-I158.syn */
946 create_dblrelop('=');
947 }
948
949 static void ag_rp_184(void) {
950 /* Line -, bug-I158.syn */
951 create_dblrelop('!');
952 }
953
954 static void ag_rp_185(void) {
955 /* Line -, bug-I158.syn */
956 create_dblrelop('<');
957 }
958
959 static void ag_rp_186(void) {
960 /* Line -, bug-I158.syn */
961 create_dblrelop('{');
962 }
963
964 static void ag_rp_187(void) {
965 /* Line -, bug-I158.syn */
966 create_dblrelop('>');
967 }
968
969 static void ag_rp_188(void) {
970 /* Line -, bug-I158.syn */
971 create_dblrelop('}');
972 }
973
974 static void ag_rp_189(void) {
975 /* Line -, bug-I158.syn */
976 create_testeof($3);
977 }
978
979 static void ag_rp_190(void) {
980 /* Line -, bug-I158.syn */
981 create_myread('d');create_popdblsym($1);
982 }
983
984 static void ag_rp_191(void) {
985 /* Line -, bug-I158.syn */
986 pushcounter();
987 }
988
989 static void ag_rp_192(void) {
990 /* Line -, bug-I158.syn */
991 create_myread('d');create_doarray($1,ASSIGNARRAY);
992 }
993
994 static void ag_rp_193(void) {
995 /* Line -, bug-I158.syn */
996 create_myread('s');create_popstrsym($1);
997 }
998
999 static void ag_rp_194(void) {
1000 /* Line -, bug-I158.syn */
1001 pushcounter();
1002 }
1003
1004 static void ag_rp_195(void) {
1005 /* Line -, bug-I158.syn */
1006 create_myread('s');create_doarray($1,ASSIGNSTRINGARRAY);
1007 }
1008
1009 static void ag_rp_196(void) {
1010 /* Line -, bug-I158.syn */
1011 create_readdata('d');create_popdblsym($1);
1012 }
1013
1014 static void ag_rp_197(void) {
1015 /* Line -, bug-I158.syn */
1016 pushcounter();
1017 }
1018
1019 static void ag_rp_198(void) {
1020 /* Line -, bug-I158.syn */
1021 create_readdata('d');create_doarray($1,ASSIGNARRAY);
1022 }
1023
1024 static void ag_rp_199(void) {
1025 /* Line -, bug-I158.syn */
1026 create_readdata('s');create_popstrsym($1);
1027 }
1028
1029 static void ag_rp_200(void) {
1030 /* Line -, bug-I158.syn */
1031 pushcounter();
1032 }
1033
1034 static void ag_rp_201(void) {
1035 /* Line -, bug-I158.syn */
1036 create_readdata('s');create_doarray($1,ASSIGNSTRINGARRAY);
1037 }
1038
1039 static void ag_rp_202(void) {
1040 /* Line -, bug-I158.syn */
1041 create_strdata($1);
1042 }
1043
1044 static void ag_rp_203(void) {
1045 /* Line -, bug-I158.syn */
1046 create_dbldata($1);
1047 }
1048
1049 static void ag_rp_204(void) {
1050 /* Line -, bug-I158.syn */
1051 create_strdata($3);
1052 }
1053
1054 static void ag_rp_205(void) {
1055 /* Line -, bug-I158.syn */
1056 create_dbldata($3);
1057 }
1058
1059 static void ag_rp_206(void) {
1060 /* Line -, bug-I158.syn */
1061 create_print('d');
1062 }
1063
1064 static void ag_rp_207(void) {
1065 /* Line -, bug-I158.syn */
1066 create_print('d');
1067 }
1068
1069 static void ag_rp_208(void) {
1070 /* Line -, bug-I158.syn */
1071 create_print('s');
1072 }
1073
1074 static void ag_rp_209(void) {
1075 /* Line -, bug-I158.syn */
1076 create_print('s');
1077 }
1078
1079 static void ag_rp_210(void) {
1080 /* Line -, bug-I158.syn */
1081 create_myswitch(0);create_readline(NULL);
1082 }
1083
1084 static void ag_rp_211(void) {
1085 /* Line -, bug-I158.syn */
1086 create_myswitch(0);create_readline(NULL);
1087 }
1088
1089 static void ag_rp_212(void) {
1090 /* Line -, bug-I158.syn */
1091 create_myswitch(0);
1092 }
1093
1094 static void ag_rp_213(void) {
1095 /* Line -, bug-I158.syn */
1096 create_myswitch(0);
1097 }
1098
1099 static void ag_rp_214(void) {
1100 /* Line -, bug-I158.syn */
1101 create_myswitch(0);
1102 }
1103
1104 static void ag_rp_215(void) {
1105 /* Line -, bug-I158.syn */
1106 create_revert(TRUE);create_myswitch(0);
1107 }
1108
1109 static void ag_rp_216(void) {
1110 /* Line -, bug-I158.syn */
1111 create_myswitch(0);
1112 }
1113
1114 static void ag_rp_217(void) {
1115 /* Line -, bug-I158.syn */
1116 create_revert(TRUE);create_myswitch(0);
1117 }
1118
1119 static void ag_rp_218(void) {
1120 /* Line -, bug-I158.syn */
1121 create_readline($1);
1122 }
1123
1124 static void ag_rp_219(void) {
1125 /* Line -, bug-I158.syn */
1126 create_mymove();
1127 }
1128
1129 static void ag_rp_220(void) {
1130 /* Line -, bug-I158.syn */
1131 create_myswitch($2);
1132 }
1133
1134 static int ag_rp_221(void) {
1135 /* Line -, bug-I158.syn */
1136 $$=$2;
1137 }
1138
1139 static int ag_rp_222(void) {
1140 /* Line -, bug-I158.syn */
1141 $$=$1;
1142 }
1143
1144 static void ag_rp_223(void) {
1145 /* Line -, bug-I158.syn */
1146 create_print('n');
1147 }
1148
1149 static void ag_rp_224(void) {
1150 /* Line -, bug-I158.syn */
1151 create_goto($1);create_findnop();
1152 }
1153
1154 static void ag_rp_225(void) {
1155 /* Line -, bug-I158.syn */
1156 create_goto($3);create_findnop();
1157 }
1158
1159 static void ag_rp_226(void) {
1160 /* Line -, bug-I158.syn */
1161 create_gosub($1);create_findnop();
1162 }
1163
1164 static void ag_rp_227(void) {
1165 /* Line -, bug-I158.syn */
1166 create_gosub($3);create_findnop();
1167 }
1168
1169
1170 #define READ_COUNTS
1171 #define WRITE_COUNTS
1172 #undef V
1173 #define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i]))
1174 #undef VS
1175 #define VS(i) (PCB).vs[(PCB).ssx + i]
1176
1177 #ifndef GET_CONTEXT
1178 #define GET_CONTEXT CONTEXT = (PCB).input_context
1179 #endif
1180
1181 typedef enum {
1182 ag_action_1,
1183 ag_action_2,
1184 ag_action_3,
1185 ag_action_4,
1186 ag_action_5,
1187 ag_action_6,
1188 ag_action_7,
1189 ag_action_8,
1190 ag_action_9,
1191 ag_action_10,
1192 ag_action_11,
1193 ag_action_12
1194 } ag_parser_action;
1195
1196
1197 #ifndef NULL_VALUE_INITIALIZER
1198 #define NULL_VALUE_INITIALIZER = { 0 }
1199 #endif
1200
1201 static bug-I158_vs_type const ag_null_value NULL_VALUE_INITIALIZER;
1202
1203 static const unsigned char ag_rpx[] = {
1204 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11,
1205 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, 20, 21, 0, 0, 0, 0,
1206 0, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 35, 0,
1207 0, 36, 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1208 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
1209 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 0, 84, 85, 86,
1210 87, 0, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,103,
1211 104,105,106,107, 0,108,109,110, 0,111,112,113,114,115,116, 0,117,118,
1212 119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,
1213 137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,
1214 155,156,157,158,159,160,161,162,163,164, 0, 0,165,166,167,168,169,170,
1215 171,172, 0, 0,173, 0,174,175,176,177,178,179,180,181,182,183,184,185,
1216 186,187,188,189, 0, 0, 0, 0,190,191,192,193,194,195, 0, 0,196,197,
1217 198,199,200,201,202,203,204,205, 0,206,207,208,209,210, 0,211,212, 0,
1218 213, 0,214, 0,215,216,217,218,219,220,221,222,223, 0,224,225,226,227
1219 };
1220
1221 static const unsigned char ag_key_itt[] = {
1222 0
1223 };
1224
1225 static const unsigned short ag_key_pt[] = {
1226 0
1227 };
1228
1229 static const unsigned char ag_key_ch[] = {
1230 0, 83, 84,255, 79,255, 70, 71,255, 83, 84,255, 79,255, 71, 83, 84,255,
1231 84,255, 83, 84,255, 79,255, 71,255, 83,255, 78,255
1232 };
1233
1234 static const unsigned char ag_key_act[] = {
1235 0,3,3,4,2,4,3,2,4,3,3,4,2,4,2,3,3,4,3,4,3,3,4,2,4,2,4,3,4,3,4
1236 };
1237
1238 static const unsigned char ag_key_parm[] = {
1239 0,135,134, 0, 0, 0,176, 0, 0,135,134, 0, 0, 0, 0,184,153, 0,
1240 153, 0,135,134, 0, 0, 0, 0, 0,184, 0,183, 0
1241 };
1242
1243 static const unsigned char ag_key_jmp[] = {
1244 0, 3, 6, 0, 1, 0, 0, 4, 0, 8, 11, 0, 9, 0, 12, 13, 17, 0,
1245 19, 0, 21, 24, 0, 20, 0, 23, 0, 26, 0, 30, 0
1246 };
1247
1248 static const unsigned char ag_key_index[] = {
1249 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1251 0, 0, 14, 0, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1253 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 14, 0,
1254 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,
1255 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1256 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 14, 14, 0, 0, 0, 0, 0, 0,
1257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0,
1259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1263 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1265 0, 0, 0, 0, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1266 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0,
1267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1268 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0,
1269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1272 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1273 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 29, 0,
1275 0, 0, 0, 0, 0, 0, 0, 0, 0
1276 };
1277
1278 static const unsigned char ag_key_ends[] = {
1279 79,82,0, 85,66,0, 79,0, 85,66,0, 79,0, 84,69,80,0, 79,0,
1280 79,0, 85,66,0, 79,0, 84,69,80,0, 69,88,84,0,
1281 };
1282 #define AG_TCV(x) (((int)(x) >= -1 && (int)(x) <= 255) ? ag_tcv[(x) + 1] : 0)
1283
1284 static const unsigned char ag_tcv[] = {
1285 125,125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0,
1286 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,
1287 202, 26, 0, 0, 0,154,155,118, 12,141, 15, 17,119, 20, 20, 20, 20, 20,
1288 20, 20, 20, 20, 20, 0,203, 0, 0, 0, 0, 0,204,204,204,204, 11,204,
1289 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,
1290 204,204, 0, 0, 0,120, 0, 0,204,204,204,204, 11,204,204,204,204,204,
1291 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, 0, 0,
1292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1293 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1297 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1299 0, 0, 0, 0, 0
1300 };
1301
1302 #ifndef SYNTAX_ERROR
1303 #define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \
1304 (PCB).error_message, (PCB).line, (PCB).column)
1305 #endif
1306
1307 #ifndef FIRST_LINE
1308 #define FIRST_LINE 1
1309 #endif
1310
1311 #ifndef FIRST_COLUMN
1312 #define FIRST_COLUMN 1
1313 #endif
1314
1315 #ifndef PARSER_STACK_OVERFLOW
1316 #define PARSER_STACK_OVERFLOW {fprintf(stderr, \
1317 "\nParser stack overflow, line %d, column %d\n",\
1318 (PCB).line, (PCB).column);}
1319 #endif
1320
1321 #ifndef REDUCTION_TOKEN_ERROR
1322 #define REDUCTION_TOKEN_ERROR {fprintf(stderr, \
1323 "\nReduction token error, line %d, column %d\n", \
1324 (PCB).line, (PCB).column);}
1325 #endif
1326
1327
1328 typedef enum
1329 {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key,
1330 ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words;
1331
1332 #ifndef GET_INPUT
1333 #define GET_INPUT ((PCB).input_code = getchar())
1334 #endif
1335
1336
1337 static int ag_look_ahead(void) {
1338 if ((PCB).rx < (PCB).fx) {
1339 return CONVERT_CASE((PCB).lab[(PCB).rx++]);
1340 }
1341 GET_INPUT;
1342 (PCB).fx++;
1343 return CONVERT_CASE((PCB).lab[(PCB).rx++] = (PCB).input_code);
1344 }
1345
1346 static void ag_get_key_word(int ag_k) {
1347 int save_index = (PCB).rx;
1348 const unsigned char *sp;
1349 int ag_ch;
1350 while (1) {
1351 switch (ag_key_act[ag_k]) {
1352 case ag_cf_end_key:
1353 sp = ag_key_ends + ag_key_jmp[ag_k];
1354 do {
1355 if ((ag_ch = *sp++) == 0) {
1356 int ag_k1 = ag_key_parm[ag_k];
1357 int ag_k2 = ag_key_pt[ag_k1];
1358 if (ag_key_itt[ag_k2 + ag_look_ahead()]) goto ag_fail;
1359 (PCB).rx--;
1360 (PCB).token_number = (bug-I158_token_type) ag_key_pt[ag_k1 + 1];
1361 return;
1362 }
1363 } while (ag_look_ahead() == ag_ch);
1364 goto ag_fail;
1365 case ag_end_key:
1366 sp = ag_key_ends + ag_key_jmp[ag_k];
1367 do {
1368 if ((ag_ch = *sp++) == 0) {
1369 (PCB).token_number = (bug-I158_token_type) ag_key_parm[ag_k];
1370 return;
1371 }
1372 } while (ag_look_ahead() == ag_ch);
1373 case ag_no_match_key:
1374 ag_fail:
1375 (PCB).rx = save_index;
1376 return;
1377 case ag_cf_set_key: {
1378 int ag_k1 = ag_key_parm[ag_k];
1379 int ag_k2 = ag_key_pt[ag_k1];
1380 ag_k = ag_key_jmp[ag_k];
1381 if (ag_key_itt[ag_k2 + (ag_ch = ag_look_ahead())]) break;
1382 save_index = --(PCB).rx;
1383 (PCB).token_number = (bug-I158_token_type) ag_key_pt[ag_k1+1];
1384 break;
1385 }
1386 case ag_set_key:
1387 save_index = (PCB).rx;
1388 (PCB).token_number = (bug-I158_token_type) ag_key_parm[ag_k];
1389 case ag_jmp_key:
1390 ag_k = ag_key_jmp[ag_k];
1391 ag_ch = ag_look_ahead();
1392 break;
1393 case ag_accept_key:
1394 (PCB).token_number = (bug-I158_token_type) ag_key_parm[ag_k];
1395 return;
1396 case ag_cf_accept_key: {
1397 int ag_k1 = ag_key_parm[ag_k];
1398 int ag_k2 = ag_key_pt[ag_k1];
1399 if (ag_key_itt[ag_k2 + ag_look_ahead()]) (PCB).rx = save_index;
1400 else {
1401 (PCB).rx--;
1402 (PCB).token_number = (bug-I158_token_type) ag_key_pt[ag_k1+1];
1403 }
1404 return;
1405 }
1406 default:
1407 /* not reachable; here to suppress compiler warnings */
1408 goto ag_fail;
1409 }
1410 if (ag_ch <= 255) while (ag_key_ch[ag_k] < ag_ch) ag_k++;
1411 if (ag_ch > 255 || ag_key_ch[ag_k] != ag_ch) {
1412 (PCB).rx = save_index;
1413 return;
1414 }
1415 }
1416 }
1417
1418
1419 #ifndef AG_NEWLINE
1420 #define AG_NEWLINE 10
1421 #endif
1422
1423 #ifndef AG_RETURN
1424 #define AG_RETURN 13
1425 #endif
1426
1427 #ifndef AG_FORMFEED
1428 #define AG_FORMFEED 12
1429 #endif
1430
1431 #ifndef AG_TABCHAR
1432 #define AG_TABCHAR 9
1433 #endif
1434
1435 static void ag_track(void) {
1436 int ag_k = 0;
1437 while (ag_k < (PCB).rx) {
1438 int ag_ch = (PCB).lab[ag_k++];
1439 switch (ag_ch) {
1440 case AG_NEWLINE:
1441 (PCB).column = 1, (PCB).line++;
1442 case AG_RETURN:
1443 case AG_FORMFEED:
1444 break;
1445 case AG_TABCHAR:
1446 (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING);
1447 break;
1448 default:
1449 (PCB).column++;
1450 }
1451 }
1452 ag_k = 0;
1453 while ((PCB).rx < (PCB).fx) (PCB).lab[ag_k++] = (PCB).lab[(PCB).rx++];
1454 (PCB).fx = ag_k;
1455 (PCB).rx = 0;
1456 }
1457
1458
1459 static void ag_prot(void) {
1460 int ag_k;
1461 ag_k = 128 - ++(PCB).btsx;
1462 if (ag_k <= (PCB).ssx) {
1463 (PCB).exit_flag = AG_STACK_ERROR_CODE;
1464 PARSER_STACK_OVERFLOW;
1465 return;
1466 }
1467 (PCB).bts[(PCB).btsx] = (PCB).sn;
1468 (PCB).bts[ag_k] = (PCB).ssx;
1469 (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx];
1470 (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx];
1471 }
1472
1473 static void ag_undo(void) {
1474 if ((PCB).drt == -1) return;
1475 while ((PCB).btsx) {
1476 int ag_k = 128 - (PCB).btsx;
1477 (PCB).sn = (PCB).bts[(PCB).btsx--];
1478 (PCB).ssx = (PCB).bts[ag_k];
1479 (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k];
1480 (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k];
1481 }
1482 (PCB).token_number = (bug-I158_token_type) (PCB).drt;
1483 (PCB).ssx = (PCB).dssx;
1484 (PCB).sn = (PCB).dsn;
1485 (PCB).drt = -1;
1486 }
1487
1488
1489 static const unsigned char ag_tstt[] = {
1490 126,125,0,123,124,
1491 7,0,127,
1492 125,0,
1493 7,0,
1494 204,176,135,134,125,115,112,102,98,97,96,79,78,77,74,73,72,70,69,68,67,65,
1495 64,63,62,61,48,47,46,45,44,43,39,35,34,11,0,128,
1496 204,176,135,134,125,115,112,102,98,97,96,79,78,77,74,73,72,70,69,68,67,65,
1497 64,63,62,61,48,47,46,45,44,43,39,35,34,11,0,21,24,25,129,130,131,132,
1498 133,
1499 204,26,20,11,0,
1500 204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
1501 99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30,
1502 20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185,
1503 204,11,0,21,24,
1504 154,60,0,
1505 154,0,
1506 154,0,
1507 154,0,
1508 154,60,0,
1509 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1510 25,29,142,167,
1511 154,0,
1512 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1513 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1514 66,50,0,
1515 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1516 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
1517 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1518 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
1519 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1520 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
1521 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1522 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1523 204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
1524 99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,75,74,30,20,
1525 17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,152,167,170,
1526 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1527 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
1528 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1529 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
1530 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1531 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
1532 204,11,0,21,24,25,151,
1533 204,20,11,0,5,21,24,27,28,
1534 30,20,17,15,12,0,2,3,9,10,16,27,28,29,150,
1535 204,11,0,21,24,25,149,194,
1536 204,202,49,30,11,0,147,197,198,199,
1537 204,203,202,154,141,125,117,116,114,113,112,111,110,109,108,107,106,105,104,
1538 103,102,101,100,99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,
1539 80,76,75,51,49,30,20,17,15,11,0,143,197,198,
1540 202,71,66,20,0,4,6,27,28,
1541 202,71,66,20,0,4,6,27,28,
1542 204,20,11,0,5,21,24,27,28,
1543 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1544 76,75,36,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1545 204,20,11,0,5,21,24,27,28,
1546 204,20,11,0,5,21,24,27,28,
1547 203,184,155,153,141,135,134,125,120,119,118,60,59,58,57,56,55,53,52,40,20,
1548 17,15,12,11,7,0,
1549 20,0,18,
1550 203,184,155,153,141,135,134,125,120,119,118,60,59,58,57,56,55,53,52,40,20,
1551 17,15,12,11,7,0,19,
1552 20,0,
1553 11,0,
1554 154,0,
1555 154,0,
1556 154,0,
1557 154,0,
1558 154,0,
1559 154,0,
1560 154,0,
1561 154,0,
1562 154,0,
1563 154,0,
1564 154,0,
1565 154,0,
1566 154,0,
1567 154,0,
1568 154,0,
1569 154,0,
1570 154,0,
1571 154,0,
1572 154,0,
1573 154,0,
1574 154,0,
1575 154,0,
1576 154,0,
1577 31,0,
1578 154,0,
1579 154,0,
1580 154,0,
1581 154,0,
1582 154,0,
1583 154,0,
1584 154,0,
1585 154,0,
1586 154,0,
1587 154,0,
1588 154,0,
1589 154,0,
1590 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1591 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1592 154,0,
1593 154,0,
1594 154,0,
1595 120,119,118,60,59,58,57,56,55,15,12,0,
1596 60,59,58,57,56,55,12,0,
1597 204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
1598 99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30,
1599 20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185,
1600 204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
1601 99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30,
1602 20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185,
1603 53,52,40,0,186,
1604 204,20,11,0,
1605 60,0,
1606 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1607 76,75,20,17,15,11,0,169,
1608 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1609 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1610 204,11,0,21,25,
1611 204,11,0,21,25,
1612 204,11,0,21,25,
1613 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1614 76,75,20,17,15,11,0,159,
1615 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1616 25,29,142,167,
1617 204,26,20,11,0,
1618 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1619 25,29,142,167,
1620 141,12,0,
1621 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1622 25,29,142,167,
1623 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1624 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1625 120,119,118,15,12,0,
1626 154,0,
1627 141,120,119,118,15,12,0,
1628 141,0,
1629 141,0,
1630 153,0,
1631 141,120,119,118,15,12,0,
1632 141,0,
1633 204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
1634 99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,75,30,20,17,
1635 15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,
1636 141,12,0,
1637 141,0,
1638 153,0,
1639 154,0,
1640 154,0,
1641 141,0,
1642 20,17,0,3,9,10,16,27,28,
1643 20,17,0,3,9,10,16,27,28,
1644 141,0,
1645 154,0,
1646 154,0,
1647 141,0,
1648 154,0,
1649 20,0,4,27,28,
1650 30,0,29,200,
1651 204,30,11,0,201,
1652 204,11,0,21,24,25,148,191,
1653 49,0,198,
1654 204,203,154,141,125,117,116,114,113,112,111,110,109,108,107,106,105,104,103,
1655 102,101,100,99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,
1656 75,30,20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,144,167,170,
1657 20,0,4,27,28,
1658 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1659 25,29,142,167,
1660 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1661 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1662 141,0,
1663 135,134,120,119,118,15,12,0,
1664 38,37,0,
1665 20,0,18,
1666 20,0,18,
1667 20,15,12,0,13,
1668 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1669 25,29,142,167,
1670 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1671 25,29,142,167,
1672 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1673 25,29,142,167,
1674 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1675 25,29,142,167,
1676 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1677 25,29,142,167,
1678 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1679 25,29,142,167,
1680 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1681 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1682 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1683 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1684 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1685 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1686 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1687 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1688 204,155,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,
1689 81,80,76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1690 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1691 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1692 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1693 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1694 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1695 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1696 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1697 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1698 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1699 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1700 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1701 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1702 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1703 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1704 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1705 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1706 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1707 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1708 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1709 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1710 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1711 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1712 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1713 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1714 32,30,0,
1715 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1716 25,29,142,167,
1717 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1718 25,29,142,167,
1719 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1720 25,29,142,167,
1721 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1722 25,29,142,167,
1723 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1724 25,29,142,167,
1725 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1726 25,29,142,167,
1727 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1728 25,29,142,167,
1729 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1730 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1731 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1732 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1733 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1734 25,29,142,167,
1735 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1736 25,29,142,167,
1737 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1738 25,29,142,167,
1739 120,119,118,0,
1740 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1741 76,75,20,17,15,11,0,171,
1742 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1743 76,75,20,17,15,11,0,168,
1744 202,20,0,4,6,27,28,
1745 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1746 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1747 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1748 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1749 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1750 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1751 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1752 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1753 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1754 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1755 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1756 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1757 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1758 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1759 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1760 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1761 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1762 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1763 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1764 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1765 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1766 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1767 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1768 25,29,142,167,
1769 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1770 25,29,142,167,
1771 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1772 25,29,142,167,
1773 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1774 25,29,142,167,
1775 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1776 25,29,142,167,
1777 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1778 25,29,142,167,
1779 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1780 25,29,142,167,
1781 0,
1782 155,53,52,0,
1783 155,120,119,118,60,59,58,57,56,55,15,12,0,
1784 155,60,59,58,57,56,55,12,0,
1785 204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
1786 99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30,
1787 20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185,
1788 204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
1789 99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,76,75,54,30,
1790 20,17,15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,185,
1791 40,0,
1792 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1793 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1794 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1795 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
1796 120,119,118,15,12,0,
1797 154,141,0,158,
1798 154,141,0,157,
1799 154,141,0,156,
1800 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1801 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
1802 12,0,
1803 155,12,0,
1804 204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
1805 99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,75,30,20,17,
1806 15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,
1807 155,12,0,
1808 155,120,119,118,15,12,0,
1809 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1810 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1811 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1812 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1813 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1814 25,29,142,167,
1815 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1816 25,29,142,167,
1817 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1818 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
1819 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1820 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1821 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1822 25,29,142,167,
1823 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1824 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
1825 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1826 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1827 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1828 76,75,74,20,17,15,11,0,3,9,10,16,21,24,27,28,136,152,170,
1829 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1830 76,75,20,17,15,11,0,174,
1831 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1832 76,75,20,17,15,11,0,172,
1833 204,11,0,21,24,25,
1834 30,20,17,15,12,0,2,3,9,10,16,27,28,29,
1835 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1836 76,75,20,17,15,11,0,196,
1837 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1838 76,75,20,17,15,11,0,195,
1839 204,11,0,21,24,25,194,
1840 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1841 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1842 30,0,29,200,
1843 154,0,
1844 154,0,
1845 141,0,
1846 12,0,
1847 120,119,118,15,12,0,
1848 203,141,125,0,145,
1849 12,0,
1850 141,120,119,118,15,12,0,
1851 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1852 25,29,142,167,
1853 204,20,11,0,139,
1854 204,20,11,0,137,
1855 20,0,14,
1856 20,0,14,
1857 155,12,0,
1858 155,12,0,
1859 141,12,0,
1860 155,12,0,
1861 155,12,0,
1862 155,12,0,
1863 155,120,119,118,15,12,0,
1864 155,120,119,118,15,12,0,
1865 141,120,119,118,15,12,0,
1866 141,120,119,118,15,12,0,
1867 155,120,119,118,15,12,0,
1868 141,120,119,118,15,12,0,
1869 155,120,119,118,15,12,0,
1870 155,120,119,118,15,12,0,
1871 155,120,119,118,15,12,0,
1872 155,120,119,118,15,12,0,
1873 155,120,119,118,15,12,0,
1874 155,141,120,119,118,15,12,0,
1875 155,120,119,118,15,12,0,
1876 155,120,119,118,15,12,0,
1877 155,120,119,118,15,12,0,
1878 155,120,119,118,15,12,0,
1879 155,120,119,118,15,12,0,
1880 155,12,0,
1881 155,12,0,
1882 155,12,0,
1883 155,12,0,
1884 155,12,0,
1885 155,12,0,
1886 155,12,0,
1887 155,120,119,118,15,12,0,
1888 155,141,120,119,118,15,12,0,
1889 141,12,0,
1890 141,12,0,
1891 141,12,0,
1892 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1893 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
1894 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1895 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
1896 155,0,
1897 120,119,118,15,12,0,
1898 120,119,118,15,12,0,
1899 120,119,118,15,12,0,
1900 120,119,118,15,12,0,
1901 120,119,118,15,12,0,
1902 120,119,118,15,12,0,
1903 0,
1904 120,0,
1905 120,0,
1906 120,119,118,0,
1907 120,119,118,0,
1908 12,0,
1909 12,0,
1910 12,0,
1911 12,0,
1912 12,0,
1913 12,0,
1914 0,
1915 0,
1916 52,0,
1917 126,0,
1918 153,120,119,118,15,12,0,177,
1919 120,119,118,15,12,0,
1920 155,141,0,
1921 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1922 76,75,20,17,15,11,0,165,
1923 141,0,
1924 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1925 76,75,20,17,15,11,0,163,
1926 141,0,
1927 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1928 76,75,20,17,15,11,0,161,
1929 141,0,
1930 155,141,0,
1931 120,119,118,15,12,0,
1932 12,0,
1933 141,120,119,118,15,12,0,
1934 120,119,118,15,12,0,
1935 12,0,
1936 12,0,
1937 141,120,119,118,15,12,0,
1938 12,0,
1939 120,119,118,15,12,0,
1940 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1941 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
1942 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1943 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
1944 154,0,
1945 154,0,
1946 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1947 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
1948 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1949 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
1950 141,120,119,118,15,12,0,
1951 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1952 76,75,20,17,15,11,0,193,
1953 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1954 76,75,20,17,15,11,0,192,
1955 204,11,0,21,24,25,148,191,
1956 204,154,117,116,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,
1957 99,98,97,96,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,76,75,30,20,17,
1958 15,11,0,3,9,10,16,21,24,25,27,28,29,136,142,167,170,
1959 203,125,0,146,
1960 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1961 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1962 141,12,0,
1963 204,20,11,0,5,21,24,27,28,140,
1964 204,20,11,0,5,21,24,27,28,138,
1965 20,0,
1966 20,0,
1967 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1968 25,29,142,167,
1969 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1970 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1971 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1972 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1973 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1974 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1975 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1976 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1977 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
1978 25,29,142,167,
1979 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1980 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1981 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1982 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1983 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1984 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1985 155,141,0,
1986 155,141,0,
1987 42,41,8,0,187,
1988 153,0,
1989 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1990 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1991 60,0,
1992 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1993 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
1994 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1995 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
1996 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1997 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
1998 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
1999 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2000 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2001 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
2002 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2003 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2004 60,0,
2005 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2006 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2007 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2008 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2009 155,141,0,
2010 155,141,0,
2011 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2012 76,75,20,17,15,11,0,175,
2013 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2014 76,75,20,17,15,11,0,173,
2015 155,141,0,
2016 155,141,0,
2017 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2018 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2019 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2020 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
2021 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2022 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
2023 12,0,
2024 120,119,118,15,12,0,
2025 141,120,119,118,15,12,0,
2026 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
2027 25,29,142,167,
2028 141,0,
2029 141,0,
2030 155,12,0,
2031 155,120,119,118,15,12,0,
2032 155,120,119,118,15,12,0,
2033 155,120,119,118,15,12,0,
2034 155,120,119,118,15,12,0,
2035 155,12,0,
2036 141,120,119,118,15,12,0,
2037 155,120,119,118,15,12,0,
2038 155,120,119,118,15,12,0,
2039 42,41,8,0,188,
2040 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2041 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2042 120,119,118,15,12,0,
2043 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2044 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2045 155,141,0,
2046 155,120,119,118,15,12,0,
2047 155,141,0,
2048 155,120,119,118,15,12,0,
2049 155,141,0,
2050 141,120,119,118,15,12,0,
2051 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
2052 25,29,142,167,
2053 155,120,119,118,15,12,0,
2054 141,120,119,118,15,12,0,
2055 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2056 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
2057 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2058 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,160,170,
2059 155,120,119,118,15,12,0,
2060 155,141,0,
2061 155,141,0,
2062 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
2063 25,29,142,167,
2064 12,0,
2065 204,20,11,0,5,21,24,27,28,
2066 204,20,11,0,5,21,24,27,28,
2067 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2068 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2069 126,0,
2070 42,8,0,189,
2071 184,120,119,118,15,12,7,0,1,
2072 120,119,118,15,12,0,
2073 141,0,166,
2074 60,0,
2075 141,0,164,
2076 60,0,
2077 141,0,162,
2078 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2079 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2080 12,0,
2081 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2082 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2083 155,141,0,
2084 155,141,0,
2085 12,0,
2086 155,120,119,118,15,12,0,
2087 42,8,0,190,
2088 20,17,15,12,0,2,3,9,10,16,27,28,
2089 7,0,178,
2090 141,0,
2091 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
2092 25,29,142,167,
2093 141,0,
2094 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
2095 25,29,142,167,
2096 141,0,
2097 155,120,119,118,15,12,0,
2098 153,120,119,118,15,12,0,
2099 7,0,
2100 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2101 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2102 12,0,
2103 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2104 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2105 12,0,
2106 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2107 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2108 60,0,
2109 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2110 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2111 126,0,179,
2112 155,120,119,118,15,12,0,
2113 155,120,119,118,15,12,0,
2114 141,120,119,118,15,12,0,
2115 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
2116 25,29,142,167,
2117 141,120,119,118,15,12,0,
2118 126,0,
2119 60,0,
2120 60,0,
2121 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2122 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2123 12,0,
2124 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2125 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2126 183,8,0,180,
2127 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
2128 25,29,142,167,
2129 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
2130 25,29,142,167,
2131 155,120,119,118,15,12,0,
2132 141,120,119,118,15,12,0,
2133 183,8,0,181,
2134 12,0,
2135 12,0,
2136 60,0,
2137 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2138 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2139 204,125,11,0,21,24,182,
2140 204,154,117,116,114,111,109,108,107,106,105,103,102,101,98,97,96,30,11,0,21,
2141 25,29,142,167,
2142 141,120,119,118,15,12,0,
2143 12,0,
2144 204,154,113,112,110,104,100,99,95,94,93,92,91,90,88,87,86,85,84,83,82,81,80,
2145 76,75,20,17,15,11,0,3,9,10,16,21,24,27,28,136,170,
2146 120,119,118,15,12,0,
2147
2148 };
2149
2150
2151 static unsigned const char ag_astt[7483] = {
2152 1,8,7,0,1,4,7,1,3,7,1,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2153 4,4,4,4,4,4,4,4,4,4,4,7,1,2,1,1,1,5,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,
2154 1,1,2,1,2,1,1,1,1,1,1,2,7,1,1,1,3,3,3,3,3,10,2,10,10,4,2,1,2,2,1,1,1,1,1,1,
2155 1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2156 7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,2,2,7,1,1,1,1,7,1,7,1,7,1,7,1,1,7,2,1,2,2,
2157 1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
2158 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,2,7,2,1,1,1,1,1,1,1,
2159 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,
2160 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,
2161 1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,
2162 1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,
2163 2,2,1,1,1,1,2,1,1,1,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,
2164 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,2,1,
2165 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,
2166 1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,
2167 1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2168 2,7,2,2,1,1,1,1,2,1,1,2,1,2,2,7,1,1,1,1,2,2,2,4,2,1,2,2,1,1,1,1,1,1,7,2,2,
2169 2,1,1,2,1,2,1,2,2,7,1,1,1,1,1,4,1,1,4,4,7,1,1,1,1,4,4,1,4,4,4,4,4,4,4,4,4,
2170 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,
2171 4,4,7,1,1,2,1,2,2,2,7,2,2,2,1,1,1,1,2,7,2,1,2,1,2,2,2,7,2,1,2,2,1,2,1,1,1,
2172 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,
2173 2,2,2,7,2,1,2,2,1,2,2,2,7,2,1,2,2,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2174 4,4,4,4,4,4,4,7,1,7,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,10,1,5,5,5,5,
2175 7,3,10,4,1,5,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,
2176 7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,
2177 1,7,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,
2178 1,1,1,2,1,1,1,1,4,1,4,1,7,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,7,2,1,2,2,
2179 1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2180 1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,
2181 1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,
2182 1,1,1,2,1,2,1,1,1,1,1,1,1,4,7,1,10,10,10,4,1,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2183 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2184 1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,2,7,1,1,2,2,7,1,1,2,2,7,1,1,4,4,
2185 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,1,2,2,1,1,1,1,
2186 1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,10,2,10,10,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,
2187 1,1,1,1,2,7,1,1,2,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,
2188 1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,
2189 1,2,1,1,1,1,1,1,1,1,4,1,7,1,1,1,1,1,1,7,1,4,1,4,1,7,1,1,1,1,1,1,7,1,7,2,1,
2190 2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2191 1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,7,1,7,1,7,1,7,1,7,1,5,1,1,7,
2192 2,2,1,1,2,1,1,1,7,2,2,1,1,2,1,1,5,1,4,1,4,1,5,1,7,2,7,2,2,1,1,7,2,3,4,4,4,
2193 7,1,2,2,7,1,1,1,2,1,1,4,2,2,5,1,8,5,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,
2194 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,2,1,1,
2195 1,1,1,2,7,2,2,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,4,1,1,2,1,1,2,1,1,1,
2196 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,
2197 7,1,1,1,1,1,1,1,7,2,2,7,1,4,2,1,5,2,8,1,1,7,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,
2198 1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,
2199 1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,
2200 1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,
2201 2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,
2202 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,
2203 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,
2204 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,
2205 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,
2206 2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,
2207 2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,
2208 1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,
2209 2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2210 1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2211 1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2212 1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2213 1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2214 1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,
2215 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,
2216 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,
2217 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,
2218 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,
2219 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,
2220 1,1,1,2,2,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,
2221 1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,
2222 2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,
2223 1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,
2224 1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,1,1,
2225 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,
2226 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,
2227 1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,
2228 1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,
2229 2,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,
2230 1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,2,7,2,1,
2231 2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,
2232 1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,
2233 1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2234 7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2235 1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2236 1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2237 1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2238 1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
2239 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,
2240 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,
2241 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,
2242 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,
2243 2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,
2244 1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,
2245 1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,
2246 1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,
2247 2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,4,3,1,1,7,3,1,1,1,1,1,1,
2248 1,1,1,1,1,7,3,1,1,1,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,
2249 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,2,1,
2250 1,1,1,1,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2251 1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,7,2,1,1,1,1,
2252 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,
2253 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,
2254 1,1,1,1,1,1,1,4,1,4,7,1,1,4,7,1,1,4,7,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2255 1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,1,4,3,1,7,2,1,2,2,1,1,1,1,
2256 1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2257 7,2,2,1,1,1,1,1,2,1,2,1,1,1,1,2,1,7,3,1,1,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,
2258 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,
2259 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,2,2,1,1,
2260 1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,
2261 2,7,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2262 7,2,2,1,1,1,1,2,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2263 1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,
2264 2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,
2265 1,1,1,2,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2266 7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2267 1,1,1,2,7,2,2,1,1,1,1,2,1,1,2,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2268 4,4,4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2269 4,4,7,1,2,2,7,1,1,1,1,1,1,1,1,7,2,2,2,1,1,2,1,2,4,4,4,4,4,4,4,4,4,4,4,4,4,
2270 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2271 4,4,4,4,4,4,4,4,4,4,7,1,2,2,7,1,1,1,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2272 1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,7,2,3,1,4,1,4,1,5,1,4,1,1,1,
2273 1,1,4,4,1,4,7,1,1,4,1,1,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,
2274 1,1,2,1,1,4,4,4,7,1,4,4,4,7,1,2,7,1,2,7,1,2,1,7,2,1,7,1,1,7,2,1,7,2,1,7,2,
2275 1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,7,2,1,1,1,1,1,7,
2276 1,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,
2277 1,1,1,1,7,2,1,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,
2278 1,1,1,7,2,1,1,1,1,1,7,2,1,7,2,1,7,2,1,7,2,1,7,2,1,7,2,1,7,2,1,7,2,1,1,1,1,
2279 1,7,2,1,1,1,1,1,1,7,1,1,7,1,1,7,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2280 1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
2281 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,7,1,1,1,1,1,4,1,1,
2282 1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,4,4,1,4,1,4,1,1,1,4,
2283 1,1,1,4,1,4,1,4,1,4,1,4,1,4,1,4,4,4,1,4,1,7,4,1,1,1,1,1,7,1,1,1,1,1,1,4,1,
2284 1,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,4,4,
2285 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,4,4,4,4,4,4,
2286 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,1,7,1,1,1,1,1,4,1,
2287 4,1,1,1,1,1,1,7,1,1,1,1,1,5,1,4,1,4,1,1,1,1,1,1,7,1,4,1,1,1,1,1,4,2,1,1,1,
2288 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,
2289 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,
2290 1,1,1,1,1,7,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2291 7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2292 1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2293 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2294 4,4,4,4,4,4,4,4,4,7,1,2,2,7,1,1,1,3,1,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,
2295 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,1,2,1,
2296 2,1,1,1,1,3,4,7,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2297 2,7,2,2,1,1,1,1,2,1,1,1,1,1,4,2,2,2,7,2,1,2,2,1,1,2,2,2,7,2,1,2,2,1,1,10,4,
2298 10,4,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,
2299 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,
2300 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,
2301 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,
2302 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,
2303 1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,
2304 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,
2305 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,
2306 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,
2307 1,7,2,1,7,4,4,4,7,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2308 1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2309 1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2310 1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,
2311 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,
2312 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,
2313 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,
2314 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,
2315 1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,
2316 1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,
2317 2,1,1,1,1,2,1,1,1,2,1,7,2,1,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2318 4,4,4,4,4,4,4,7,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2319 4,7,1,2,1,7,2,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2320 2,7,2,2,1,1,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2321 1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2322 1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,1,4,1,1,1,1,1,4,1,1,1,1,1,1,4,2,1,
2323 2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,4,1,4,2,1,7,2,1,1,1,1,1,7,
2324 2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,7,1,1,1,1,1,1,7,2,1,1,1,1,1,
2325 7,2,1,1,1,1,1,7,5,1,5,7,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2326 1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,1,1,1,1,4,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2327 1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,
2328 7,1,1,1,1,1,1,7,1,1,7,1,1,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,
2329 7,1,1,2,1,1,2,1,1,1,1,1,7,1,1,1,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2330 1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,
2331 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,7,2,1,
2332 7,2,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,4,2,2,2,7,2,1,
2333 2,2,1,2,2,2,7,2,1,2,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2334 1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,3,7,4,4,7,1,1,1,1,1,1,1,4,7,1,1,1,1,1,1,4,4,
2335 7,1,1,7,4,7,1,1,7,4,7,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2336 1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,4,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2337 1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,1,7,2,1,7,1,4,2,1,1,1,1,1,7,3,2,
2338 7,3,1,1,1,1,7,2,2,2,1,1,2,1,4,7,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,
2339 2,7,1,1,2,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,7,1,
2340 1,1,1,1,1,7,1,1,1,1,1,1,7,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2341 1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,4,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2342 1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,4,2,1,1,1,1,1,1,1,1,1,1,1,
2343 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,7,2,1,1,1,1,1,1,
2344 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,4,7,1,1,
2345 1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,7,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,
2346 1,2,7,1,1,2,1,1,1,1,1,1,1,1,7,1,7,1,7,1,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2347 1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,1,4,2,1,1,1,1,1,1,1,1,1,1,
2348 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,4,4,7,1,2,1,2,2,
2349 1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,
2350 1,1,2,7,1,1,2,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,7,1,2,7,1,1,4,1,4,1,7,2,1,1,1,
2351 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,1,1,2,1,1,1,2,
2352 4,2,7,1,2,3,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,2,7,1,1,2,1,1,1,1,1,1,1,1,
2353 7,1,4,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,7,2,2,1,1,
2354 1,1,2,1,1,1,1,1,1,1,1,4
2355 };
2356
2357
2358 static const unsigned short ag_pstt[] = {
2359 1,2,0,0,2,
2360 30,1,3,
2361 28,2,
2362 4,3,
2363 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,
2364 31,31,31,31,31,31,31,31,31,31,31,4,5,
2365 17,8,36,37,33,14,15,80,12,10,11,18,19,20,21,79,16,17,22,23,25,32,33,27,28,
2366 29,84,26,57,24,30,31,7,35,34,17,5,6,9,13,32,32,32,32,32,
2367 18,20,18,18,19,
2368 17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
2369 48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,7,
2370 129,171,42,40,6,80,81,172,41,105,83,84,84,83,87,
2371 17,17,8,88,89,
2372 90,91,9,
2373 92,10,
2374 93,11,
2375 94,12,
2376 95,96,13,
2377 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,14,97,81,105,99,
2378 99,
2379 100,15,
2380 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2381 38,39,79,17,16,129,171,42,40,88,80,172,41,102,102,
2382 73,74,17,
2383 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2384 103,38,39,79,17,18,129,171,42,40,88,80,172,41,104,105,104,
2385 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2386 103,38,39,79,17,19,129,171,42,40,88,80,172,41,104,106,104,
2387 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2388 103,38,39,79,17,20,129,171,42,40,88,80,172,41,104,107,104,
2389 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2390 38,39,79,17,21,129,171,42,40,88,80,172,41,108,108,
2391 17,110,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
2392 48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,103,66,38,39,79,17,22,
2393 129,171,42,40,6,80,81,172,41,105,104,111,109,111,104,
2394 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2395 103,38,39,79,17,23,129,171,42,40,88,80,172,41,104,112,104,
2396 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2397 103,38,39,79,17,24,129,171,42,40,88,80,172,41,104,113,104,
2398 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2399 103,38,39,79,17,25,129,171,42,40,88,80,172,41,104,61,104,
2400 17,17,26,6,115,114,116,
2401 17,22,17,55,56,88,175,174,41,
2402 66,38,39,117,118,28,239,168,171,42,40,172,41,238,119,
2403 17,17,29,6,121,120,122,122,
2404 247,124,123,250,247,30,127,127,126,125,
2405 254,254,124,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,
2406 254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,
2407 254,254,254,254,254,254,254,128,123,254,254,254,254,254,31,129,129,257,
2408 130,77,72,22,32,263,49,173,41,
2409 130,131,132,22,33,263,133,173,41,
2410 17,22,17,34,46,88,175,174,41,
2411 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2412 135,38,39,79,17,35,129,171,42,40,88,80,172,41,134,134,
2413 17,22,17,36,39,88,175,174,41,
2414 17,22,17,37,38,88,175,174,41,
2415 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
2416 11,38,
2417 136,39,10,
2418 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,12,137,7,7,7,7,40,9,
2419 23,21,
2420 138,1,
2421 139,43,
2422 140,44,
2423 141,45,
2424 142,46,
2425 143,47,
2426 144,48,
2427 145,49,
2428 146,50,
2429 147,51,
2430 148,52,
2431 149,53,
2432 150,54,
2433 151,55,
2434 152,56,
2435 153,57,
2436 154,58,
2437 155,59,
2438 156,60,
2439 157,61,
2440 158,62,
2441 159,63,
2442 160,64,
2443 161,65,
2444 162,66,
2445 163,67,
2446 164,68,
2447 165,69,
2448 166,70,
2449 167,71,
2450 168,72,
2451 169,73,
2452 170,74,
2453 171,75,
2454 172,76,
2455 173,77,
2456 174,78,
2457 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2458 38,39,79,17,79,129,171,42,40,88,80,172,41,175,175,
2459 176,131,
2460 177,103,
2461 178,82,
2462 185,186,187,184,180,182,179,181,183,188,189,83,
2463 195,191,193,190,192,194,196,84,
2464 17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
2465 48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,85,
2466 129,171,42,40,6,80,81,172,41,105,83,84,84,83,197,
2467 17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
2468 48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,86,
2469 129,171,42,40,6,80,81,172,41,105,199,200,200,199,198,
2470 202,201,197,87,203,
2471 18,18,18,19,
2472 204,89,
2473 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,
2474 127,127,127,127,127,127,127,127,127,127,90,205,
2475 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2476 38,39,79,17,91,129,171,42,40,88,80,172,41,206,206,
2477 17,17,92,97,207,
2478 17,17,93,97,208,
2479 17,17,94,97,209,
2480 92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
2481 92,92,92,92,95,210,
2482 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,96,97,81,105,
2483 211,211,
2484 18,20,18,18,97,
2485 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,98,97,81,105,
2486 212,212,
2487 213,196,99,
2488 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,100,97,81,105,
2489 214,214,
2490 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2491 38,39,79,17,101,129,171,42,40,88,80,172,41,215,215,
2492 185,186,187,188,189,78,
2493 216,103,
2494 217,185,186,187,188,189,104,
2495 218,71,
2496 219,70,
2497 220,107,
2498 221,185,186,187,188,189,108,
2499 222,109,
2500 17,110,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
2501 48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,66,38,39,79,17,110,129,
2502 171,42,40,6,80,81,172,41,105,215,212,212,215,
2503 223,196,111,
2504 224,112,
2505 225,113,
2506 226,114,
2507 227,115,
2508 228,58,
2509 38,39,117,170,171,42,40,172,41,
2510 38,39,118,169,171,42,40,172,41,
2511 229,54,
2512 230,235,
2513 231,232,
2514 232,53,
2515 233,123,
2516 22,124,261,173,41,
2517 66,125,259,251,
2518 249,252,249,126,234,
2519 17,17,127,6,236,235,52,237,
2520 123,256,258,
2521 17,242,110,240,242,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,
2522 76,77,78,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,66,38,39,79,
2523 17,129,129,171,42,40,6,80,81,172,41,105,239,238,240,238,239,
2524 22,130,262,173,41,
2525 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,75,97,81,105,
2526 241,241,
2527 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2528 38,39,79,17,132,129,171,42,40,88,80,172,41,242,242,
2529 243,133,
2530 244,245,185,186,187,188,189,134,
2531 41,40,135,
2532 136,13,14,
2533 136,8,6,
2534 247,246,247,138,247,
2535 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,139,97,81,105,
2536 248,248,
2537 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,140,97,81,105,
2538 249,249,
2539 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,141,97,81,105,
2540 250,250,
2541 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,142,97,81,105,
2542 251,251,
2543 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,143,97,81,105,
2544 252,252,
2545 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,144,97,81,105,
2546 253,253,
2547 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2548 38,39,79,17,145,129,171,42,40,88,80,172,41,254,254,
2549 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2550 38,39,79,17,146,129,171,42,40,88,80,172,41,255,255,
2551 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2552 38,39,79,17,147,129,171,42,40,88,80,172,41,256,256,
2553 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2554 38,39,79,17,148,129,171,42,40,88,80,172,41,257,257,
2555 17,157,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,
2556 49,50,38,39,79,17,149,129,171,42,40,88,80,172,41,258,258,
2557 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2558 38,39,79,17,150,129,171,42,40,88,80,172,41,259,259,
2559 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2560 38,39,79,17,151,129,171,42,40,88,80,172,41,260,260,
2561 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2562 38,39,79,17,152,129,171,42,40,88,80,172,41,261,261,
2563 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2564 38,39,79,17,153,129,171,42,40,88,80,172,41,262,262,
2565 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2566 38,39,79,17,154,129,171,42,40,88,80,172,41,263,263,
2567 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2568 38,39,79,17,155,129,171,42,40,88,80,172,41,264,264,
2569 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2570 38,39,79,17,156,129,171,42,40,88,80,172,41,265,265,
2571 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2572 38,39,79,17,157,129,171,42,40,88,80,172,41,266,266,
2573 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2574 38,39,79,17,158,129,171,42,40,88,80,172,41,267,267,
2575 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2576 38,39,79,17,159,129,171,42,40,88,80,172,41,268,268,
2577 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2578 38,39,79,17,160,129,171,42,40,88,80,172,41,269,269,
2579 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2580 38,39,79,17,161,129,171,42,40,88,80,172,41,270,270,
2581 25,24,162,
2582 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,163,97,81,105,
2583 271,271,
2584 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,164,97,81,105,
2585 272,272,
2586 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,165,97,81,105,
2587 273,273,
2588 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,166,97,81,105,
2589 274,274,
2590 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,167,97,81,105,
2591 275,275,
2592 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,168,97,81,105,
2593 276,276,
2594 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,169,97,81,105,
2595 277,277,
2596 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2597 38,39,79,17,170,129,171,42,40,88,80,172,41,278,278,
2598 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2599 38,39,79,17,171,129,171,42,40,88,80,172,41,279,279,
2600 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,172,97,81,105,
2601 280,280,
2602 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,173,97,81,105,
2603 281,281,
2604 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,174,97,81,105,
2605 282,282,
2606 185,186,187,140,
2607 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,
2608 132,132,132,132,132,132,132,132,132,132,176,283,
2609 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,
2610 107,107,107,107,107,107,107,107,107,107,177,284,
2611 130,22,178,263,285,173,41,
2612 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2613 38,39,79,17,179,129,171,42,40,88,80,172,41,286,286,
2614 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2615 38,39,79,17,180,129,171,42,40,88,80,172,41,287,287,
2616 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2617 38,39,79,17,181,129,171,42,40,88,80,172,41,288,288,
2618 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2619 38,39,79,17,182,129,171,42,40,88,80,172,41,289,289,
2620 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2621 38,39,79,17,183,129,171,42,40,88,80,172,41,290,290,
2622 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2623 38,39,79,17,184,129,171,42,40,88,80,172,41,291,291,
2624 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2625 38,39,79,17,185,129,171,42,40,88,80,172,41,292,292,
2626 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2627 38,39,79,17,186,129,171,42,40,88,80,172,41,293,293,
2628 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2629 38,39,79,17,187,129,171,42,40,88,80,172,41,294,294,
2630 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2631 38,39,79,17,188,129,171,42,40,88,80,172,41,295,295,
2632 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2633 38,39,79,17,189,129,171,42,40,88,80,172,41,296,296,
2634 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,190,97,81,105,
2635 297,297,
2636 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,191,97,81,105,
2637 298,298,
2638 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,192,97,81,105,
2639 299,299,
2640 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,193,97,81,105,
2641 300,300,
2642 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,194,97,81,105,
2643 301,301,
2644 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,195,97,81,105,
2645 302,302,
2646 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,196,97,81,105,
2647 303,303,
2648 206,
2649 203,202,201,198,
2650 134,185,186,187,184,180,182,179,181,183,188,189,199,
2651 109,195,191,193,190,192,194,196,200,
2652 17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
2653 48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,
2654 201,129,171,42,40,6,80,81,172,41,105,83,84,84,83,304,
2655 17,86,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
2656 48,53,54,55,56,82,57,58,59,60,61,62,63,64,65,49,50,85,66,38,39,79,17,
2657 202,129,171,42,40,6,80,81,172,41,105,83,84,84,83,305,
2658 306,203,
2659 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2660 38,39,79,17,204,129,171,42,40,88,80,172,41,307,307,
2661 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2662 38,39,79,17,205,129,171,42,40,88,80,172,41,308,309,308,
2663 185,186,187,188,189,126,
2664 310,90,207,311,
2665 312,88,208,313,
2666 314,86,209,315,
2667 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2668 38,39,79,17,210,129,171,42,40,88,80,172,41,308,316,308,
2669 196,85,
2670 109,196,212,
2671 17,110,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
2672 48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,66,38,39,79,17,213,129,
2673 171,42,40,6,80,81,172,41,105,317,318,318,317,
2674 81,196,214,
2675 134,185,186,187,188,189,215,
2676 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2677 38,39,79,17,216,129,171,42,40,88,80,172,41,319,319,
2678 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2679 38,39,79,17,217,129,171,42,40,88,80,172,41,320,320,
2680 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,218,97,81,105,
2681 321,321,
2682 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,219,97,81,105,
2683 322,322,
2684 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2685 103,38,39,79,17,220,129,171,42,40,88,80,172,41,104,67,104,
2686 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2687 38,39,79,17,221,129,171,42,40,88,80,172,41,323,323,
2688 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,222,97,81,105,
2689 324,324,
2690 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2691 103,38,39,79,17,223,129,171,42,40,88,80,172,41,104,64,104,
2692 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2693 38,39,79,17,224,129,171,42,40,88,80,172,41,325,325,
2694 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2695 103,38,39,79,17,225,129,171,42,40,88,80,172,41,104,62,104,
2696 180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,
2697 180,180,180,180,180,180,180,180,180,180,226,326,
2698 176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,
2699 176,176,176,176,176,176,176,176,176,176,227,327,
2700 17,17,228,6,329,328,
2701 66,38,39,117,118,229,241,168,171,42,40,172,41,240,
2702 236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
2703 236,236,236,236,236,236,236,236,236,236,230,330,
2704 233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,
2705 233,233,233,233,233,233,233,233,233,233,231,331,
2706 17,17,232,6,121,120,231,
2707 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2708 38,39,79,17,233,129,171,42,40,88,80,172,41,332,332,
2709 66,234,259,253,
2710 333,227,
2711 334,224,
2712 335,222,
2713 196,245,
2714 185,186,187,188,189,243,
2715 50,336,50,240,337,
2716 196,76,
2717 338,185,186,187,188,189,242,
2718 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,243,97,81,105,
2719 339,339,
2720 44,44,44,244,340,
2721 42,42,42,245,341,
2722 15,246,342,
2723 15,247,343,
2724 167,196,248,
2725 166,196,249,
2726 344,196,250,
2727 164,196,251,
2728 163,196,252,
2729 162,196,253,
2730 161,185,186,187,188,189,254,
2731 160,185,186,187,188,189,255,
2732 345,185,186,187,188,189,256,
2733 346,185,186,187,188,189,257,
2734 156,185,186,187,188,189,258,
2735 347,185,186,187,188,189,259,
2736 154,185,186,187,188,189,260,
2737 153,185,186,187,188,189,261,
2738 152,185,186,187,188,189,262,
2739 151,185,186,187,188,189,263,
2740 150,185,186,187,188,189,264,
2741 148,348,185,186,187,188,189,265,
2742 147,185,186,187,188,189,266,
2743 146,185,186,187,188,189,267,
2744 145,185,186,187,188,189,268,
2745 144,185,186,187,188,189,269,
2746 143,185,186,187,188,189,270,
2747 125,196,271,
2748 122,196,272,
2749 121,196,273,
2750 120,196,274,
2751 119,196,275,
2752 118,196,276,
2753 117,196,277,
2754 116,185,186,187,188,189,278,
2755 113,349,185,186,187,188,189,279,
2756 350,196,280,
2757 351,196,281,
2758 352,196,282,
2759 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2760 38,39,79,17,283,129,171,42,40,88,80,172,41,308,353,308,
2761 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2762 38,39,79,17,284,129,171,42,40,88,80,172,41,308,354,308,
2763 219,285,
2764 185,186,187,188,189,218,
2765 185,186,187,188,189,217,
2766 185,186,187,188,189,216,
2767 185,186,187,188,189,215,
2768 185,186,187,188,189,214,
2769 185,186,187,188,189,213,
2770 139,
2771 185,138,
2772 185,137,
2773 185,186,187,136,
2774 185,186,187,135,
2775 196,212,
2776 196,211,
2777 196,210,
2778 196,209,
2779 196,208,
2780 196,207,
2781 106,
2782 205,
2783 201,204,
2784 355,306,
2785 186,185,186,187,188,189,307,356,
2786 185,186,187,188,189,184,
2787 358,357,309,
2788 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
2789 100,100,100,100,100,100,100,100,100,100,310,359,
2790 360,311,
2791 97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,
2792 97,97,97,97,312,361,
2793 362,313,
2794 94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,
2795 94,94,94,94,314,363,
2796 364,315,
2797 365,357,316,
2798 185,186,187,188,189,83,
2799 196,82,
2800 366,185,186,187,188,189,319,
2801 185,186,187,188,189,141,
2802 196,69,
2803 196,68,
2804 367,185,186,187,188,189,323,
2805 196,65,
2806 185,186,187,188,189,63,
2807 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2808 38,39,79,17,326,129,171,42,40,88,80,172,41,308,368,308,
2809 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2810 38,39,79,17,327,129,171,42,40,88,80,172,41,308,369,308,
2811 370,328,
2812 371,329,
2813 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2814 38,39,79,17,330,129,171,42,40,88,80,172,41,308,372,308,
2815 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2816 38,39,79,17,331,129,171,42,40,88,80,172,41,308,373,308,
2817 374,185,186,187,188,189,332,
2818 228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,
2819 228,228,228,228,228,228,228,228,228,228,333,375,
2820 225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,
2821 225,225,225,225,225,225,225,225,225,225,334,376,
2822 17,17,335,6,236,235,223,237,
2823 17,110,124,123,67,43,44,68,45,70,71,69,72,73,46,74,115,75,51,52,76,77,78,47,
2824 48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,66,38,39,79,17,336,129,
2825 171,42,40,6,80,81,172,41,105,378,377,377,378,
2826 51,264,337,51,
2827 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2828 38,39,79,17,338,129,171,42,40,88,80,172,41,379,379,
2829 380,196,48,
2830 17,22,17,340,268,88,175,174,41,381,
2831 17,22,17,341,266,88,175,174,41,382,
2832 16,5,
2833 16,4,
2834 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,344,97,81,105,
2835 383,383,
2836 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2837 38,39,79,17,345,129,171,42,40,88,80,172,41,384,384,
2838 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2839 38,39,79,17,346,129,171,42,40,88,80,172,41,385,385,
2840 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2841 38,39,79,17,347,129,171,42,40,88,80,172,41,386,386,
2842 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2843 38,39,79,17,348,129,171,42,40,88,80,172,41,387,387,
2844 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,349,97,81,105,
2845 388,388,
2846 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2847 38,39,79,17,350,129,171,42,40,88,80,172,41,389,389,
2848 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2849 38,39,79,17,351,129,171,42,40,88,80,172,41,390,390,
2850 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2851 38,39,79,17,352,129,171,42,40,88,80,172,41,391,391,
2852 133,357,353,
2853 108,357,354,
2854 198,198,198,355,392,
2855 393,356,
2856 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2857 38,39,79,17,357,129,171,42,40,88,80,172,41,394,394,
2858 395,358,
2859 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2860 38,39,79,17,359,129,171,42,40,88,80,172,41,308,396,308,
2861 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2862 38,39,79,17,360,129,171,42,40,88,80,172,41,397,397,
2863 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2864 38,39,79,17,361,129,171,42,40,88,80,172,41,308,398,308,
2865 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2866 38,39,79,17,362,129,171,42,40,88,80,172,41,399,399,
2867 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2868 38,39,79,17,363,129,171,42,40,88,80,172,41,308,400,308,
2869 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2870 38,39,79,17,364,129,171,42,40,88,80,172,41,401,401,
2871 402,365,
2872 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2873 38,39,79,17,366,129,171,42,40,88,80,172,41,403,403,
2874 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2875 38,39,79,17,367,129,171,42,40,88,80,172,41,404,404,
2876 181,357,368,
2877 177,357,369,
2878 182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,
2879 182,182,182,182,182,182,182,182,182,182,370,405,
2880 178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,
2881 178,178,178,178,178,178,178,178,178,178,371,406,
2882 237,357,372,
2883 234,357,373,
2884 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2885 38,39,79,17,374,129,171,42,40,88,80,172,41,407,407,
2886 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2887 38,39,79,17,375,129,171,42,40,88,80,172,41,308,408,308,
2888 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2889 38,39,79,17,376,129,171,42,40,88,80,172,41,308,409,308,
2890 196,246,
2891 185,186,187,188,189,244,
2892 410,185,186,187,188,189,59,
2893 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,380,97,81,105,
2894 411,411,
2895 412,45,
2896 413,43,
2897 165,196,383,
2898 159,185,186,187,188,189,384,
2899 158,185,186,187,188,189,385,
2900 155,185,186,187,188,189,386,
2901 149,185,186,187,188,189,387,
2902 114,196,388,
2903 414,185,186,187,188,189,389,
2904 111,185,186,187,188,189,390,
2905 110,185,186,187,188,189,391,
2906 220,415,220,392,416,
2907 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2908 38,39,79,17,393,129,171,42,40,88,80,172,41,417,417,
2909 185,186,187,188,189,185,
2910 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2911 38,39,79,17,395,129,171,42,40,88,80,172,41,418,418,
2912 419,357,396,
2913 420,185,186,187,188,189,397,
2914 421,357,398,
2915 422,185,186,187,188,189,399,
2916 423,357,400,
2917 424,185,186,187,188,189,401,
2918 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,402,97,81,105,
2919 425,425,
2920 142,185,186,187,188,189,403,
2921 426,185,186,187,188,189,404,
2922 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2923 38,39,79,17,405,129,171,42,40,88,80,172,41,308,427,308,
2924 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2925 38,39,79,17,406,129,171,42,40,88,80,172,41,308,428,308,
2926 260,185,186,187,188,189,407,
2927 229,357,408,
2928 226,357,409,
2929 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,410,97,81,105,
2930 429,429,
2931 196,47,
2932 17,22,17,412,269,88,175,174,41,
2933 17,22,17,413,267,88,175,174,41,
2934 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2935 38,39,79,17,414,129,171,42,40,88,80,172,41,430,430,
2936 221,415,
2937 199,199,416,431,
2938 432,185,186,187,188,189,193,417,433,
2939 185,186,187,188,189,128,
2940 101,419,434,
2941 435,420,
2942 98,421,436,
2943 437,422,
2944 95,423,438,
2945 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2946 38,39,79,17,424,129,171,42,40,88,80,172,41,439,439,
2947 196,93,
2948 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2949 38,39,79,17,426,129,171,42,40,88,80,172,41,440,440,
2950 183,357,427,
2951 179,357,428,
2952 196,60,
2953 112,185,186,187,188,189,430,
2954 200,202,431,200,
2955 38,39,117,118,432,194,168,171,42,40,172,41,
2956 187,433,441,
2957 442,434,
2958 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,435,97,81,105,
2959 443,443,
2960 444,436,
2961 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,437,97,81,105,
2962 445,445,
2963 446,438,
2964 447,185,186,187,188,189,439,
2965 448,185,186,187,188,189,440,
2966 449,441,
2967 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2968 38,39,79,17,442,129,171,42,40,88,80,172,41,450,450,
2969 196,91,
2970 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2971 38,39,79,17,444,129,171,42,40,88,80,172,41,451,451,
2972 196,89,
2973 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2974 38,39,79,17,446,129,171,42,40,88,80,172,41,452,452,
2975 453,447,
2976 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2977 38,39,79,17,448,129,171,42,40,88,80,172,41,454,454,
2978 188,449,455,
2979 456,185,186,187,188,189,450,
2980 457,185,186,187,188,189,451,
2981 458,185,186,187,188,189,452,
2982 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,453,97,81,105,
2983 459,459,
2984 460,185,186,187,188,189,454,
2985 461,455,
2986 462,456,
2987 463,457,
2988 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2989 38,39,79,17,458,129,171,42,40,88,80,172,41,464,464,
2990 196,87,
2991 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
2992 38,39,79,17,460,129,171,42,40,88,80,172,41,465,465,
2993 189,189,461,466,
2994 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,462,97,81,105,
2995 467,467,
2996 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,463,97,81,105,
2997 468,468,
2998 469,185,186,187,188,189,464,
2999 470,185,186,187,188,189,465,
3000 471,192,466,471,
3001 196,102,
3002 196,99,
3003 472,469,
3004 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
3005 38,39,79,17,470,129,171,42,40,88,80,172,41,473,473,
3006 17,195,17,471,88,196,190,
3007 17,98,124,123,67,68,70,71,69,72,73,74,115,75,76,77,78,66,17,472,97,81,105,
3008 474,474,
3009 475,185,186,187,188,189,473,
3010 196,96,
3011 17,101,43,44,45,46,51,52,47,48,53,54,55,56,57,58,59,60,61,62,63,64,65,49,50,
3012 38,39,79,17,475,129,171,42,40,88,80,172,41,476,476,
3013 185,186,187,188,189,66,
3014
3015 };
3016
3017
3018 static const unsigned short ag_sbt[] = {
3019 0, 5, 8, 10, 12, 50, 95, 100, 163, 168, 171, 173, 175, 177,
3020 180, 205, 207, 247, 250, 292, 334, 376, 416, 478, 520, 562, 604, 611,
3021 620, 635, 643, 653, 708, 717, 726, 735, 776, 785, 794, 821, 824, 852,
3022 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880,
3023 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, 908,
3024 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 968, 970, 972, 974,
3025 986, 994,1057,1120,1125,1129,1131,1162,1202,1207,1212,1217,1248,1273,
3026 1278,1303,1306,1331,1371,1377,1379,1386,1388,1390,1392,1399,1401,1461,
3027 1464,1466,1468,1470,1472,1474,1483,1492,1494,1496,1498,1500,1502,1507,
3028 1511,1516,1524,1527,1591,1596,1621,1661,1663,1671,1674,1677,1680,1685,
3029 1710,1735,1760,1785,1810,1835,1875,1915,1955,1995,2036,2076,2116,2156,
3030 2196,2236,2276,2316,2356,2396,2436,2476,2516,2519,2544,2569,2594,2619,
3031 2644,2669,2694,2734,2774,2799,2824,2849,2853,2884,2915,2922,2962,3002,
3032 3042,3082,3122,3162,3202,3242,3282,3322,3362,3387,3412,3437,3462,3487,
3033 3512,3537,3538,3542,3555,3564,3627,3690,3692,3732,3773,3779,3783,3787,
3034 3791,3832,3834,3837,3897,3900,3907,3947,3987,4012,4037,4079,4119,4144,
3035 4186,4226,4268,4299,4330,4336,4350,4381,4412,4419,4459,4463,4465,4467,
3036 4469,4471,4477,4482,4484,4491,4516,4521,4526,4529,4532,4535,4538,4541,
3037 4544,4547,4550,4557,4564,4571,4578,4585,4592,4599,4606,4613,4620,4627,
3038 4635,4642,4649,4656,4663,4670,4673,4676,4679,4682,4685,4688,4691,4698,
3039 4706,4709,4712,4715,4756,4797,4799,4805,4811,4817,4823,4829,4835,4836,
3040 4838,4840,4844,4848,4850,4852,4854,4856,4858,4860,4861,4862,4864,4866,
3041 4874,4880,4883,4914,4916,4947,4949,4980,4982,4985,4991,4993,5000,5006,
3042 5008,5010,5017,5019,5025,5066,5107,5109,5111,5152,5193,5200,5231,5262,
3043 5270,5330,5334,5374,5377,5387,5397,5399,5401,5426,5466,5506,5546,5586,
3044 5611,5651,5691,5731,5734,5737,5742,5744,5784,5786,5827,5867,5908,5948,
3045 5989,6029,6031,6071,6111,6114,6117,6148,6179,6182,6185,6225,6266,6307,
3046 6309,6315,6322,6347,6349,6351,6354,6361,6368,6375,6382,6385,6392,6399,
3047 6406,6411,6451,6457,6497,6500,6507,6510,6517,6520,6527,6552,6559,6566,
3048 6607,6648,6655,6658,6661,6686,6688,6697,6706,6746,6748,6752,6761,6767,
3049 6770,6772,6775,6777,6780,6820,6822,6862,6865,6868,6870,6877,6881,6893,
3050 6896,6898,6923,6925,6950,6952,6959,6966,6968,7008,7010,7050,7052,7092,
3051 7094,7134,7137,7144,7151,7158,7183,7190,7192,7194,7196,7236,7238,7278,
3052 7282,7307,7332,7339,7346,7350,7352,7354,7356,7396,7403,7428,7435,7437,
3053 7477,7483
3054 };
3055
3056
3057 static const unsigned short ag_sbe[] = {
3058 2, 6, 9, 11, 48, 86, 99, 147, 165, 170, 172, 174, 176, 179,
3059 199, 206, 236, 249, 280, 322, 364, 405, 462, 508, 550, 592, 606, 614,
3060 625, 637, 648, 704, 712, 721, 729, 765, 779, 788, 820, 822, 850, 853,
3061 855, 857, 859, 861, 863, 865, 867, 869, 871, 873, 875, 877, 879, 881,
3062 883, 885, 887, 889, 891, 893, 895, 897, 899, 901, 903, 905, 907, 909,
3063 911, 913, 915, 917, 919, 921, 923, 925, 927, 957, 969, 971, 973, 985,
3064 993,1041,1104,1123,1128,1130,1160,1191,1204,1209,1214,1246,1267,1277,
3065 1297,1305,1325,1360,1376,1378,1385,1387,1389,1391,1398,1400,1446,1463,
3066 1465,1467,1469,1471,1473,1476,1485,1493,1495,1497,1499,1501,1503,1508,
3067 1514,1518,1525,1575,1592,1615,1650,1662,1670,1673,1675,1678,1683,1704,
3068 1729,1754,1779,1804,1829,1864,1904,1944,1984,2025,2065,2105,2145,2185,
3069 2225,2265,2305,2345,2385,2425,2465,2505,2518,2538,2563,2588,2613,2638,
3070 2663,2688,2723,2763,2793,2818,2843,2852,2882,2913,2917,2951,2991,3031,
3071 3071,3111,3151,3191,3231,3271,3311,3351,3381,3406,3431,3456,3481,3506,
3072 3531,3537,3541,3554,3563,3611,3674,3691,3721,3761,3778,3781,3785,3789,
3073 3820,3833,3836,3882,3899,3906,3936,3976,4006,4031,4067,4108,4138,4174,
3074 4215,4256,4297,4328,4332,4341,4379,4410,4414,4448,4460,4464,4466,4468,
3075 4470,4476,4480,4483,4490,4510,4519,4524,4527,4530,4534,4537,4540,4543,
3076 4546,4549,4556,4563,4570,4577,4584,4591,4598,4605,4612,4619,4626,4634,
3077 4641,4648,4655,4662,4669,4672,4675,4678,4681,4684,4687,4690,4697,4705,
3078 4708,4711,4714,4744,4785,4798,4804,4810,4816,4822,4828,4834,4835,4837,
3079 4839,4843,4847,4849,4851,4853,4855,4857,4859,4860,4861,4863,4865,4872,
3080 4879,4882,4912,4915,4945,4948,4978,4981,4984,4990,4992,4999,5005,5007,
3081 5009,5016,5018,5024,5054,5095,5108,5110,5140,5181,5199,5229,5260,5264,
3082 5315,5332,5363,5376,5380,5390,5398,5400,5420,5455,5495,5535,5575,5605,
3083 5640,5680,5720,5733,5736,5740,5743,5773,5785,5815,5856,5896,5937,5977,
3084 6018,6030,6060,6100,6113,6116,6146,6177,6181,6184,6214,6254,6295,6308,
3085 6314,6321,6341,6348,6350,6353,6360,6367,6374,6381,6384,6391,6398,6405,
3086 6409,6440,6456,6486,6499,6506,6509,6516,6519,6526,6546,6558,6565,6595,
3087 6636,6654,6657,6660,6680,6687,6691,6700,6735,6747,6750,6759,6766,6768,
3088 6771,6773,6776,6778,6809,6821,6851,6864,6867,6869,6876,6879,6885,6894,
3089 6897,6917,6924,6944,6951,6958,6965,6967,6997,7009,7039,7051,7081,7093,
3090 7123,7135,7143,7150,7157,7177,7189,7191,7193,7195,7225,7237,7267,7280,
3091 7301,7326,7338,7345,7348,7351,7353,7355,7385,7399,7422,7434,7436,7466,
3092 7482,7483
3093 };
3094
3095
3096 static const unsigned char ag_fl[] = {
3097 1,1,0,1,4,4,3,0,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,2,3,3,1,2,2,0,0,0,5,0,1,
3098 1,1,1,2,2,3,3,0,5,0,5,2,6,4,2,0,5,3,2,2,1,2,1,2,5,7,2,4,4,4,4,16,4,4,4,
3099 2,2,2,2,2,2,3,2,2,1,1,4,4,4,1,3,0,11,0,9,0,9,0,7,0,0,15,0,0,13,0,0,13,
3100 1,1,1,3,0,5,3,6,6,8,4,6,1,4,4,4,4,4,4,4,1,1,4,3,0,7,1,1,1,0,5,3,3,3,3,
3101 3,3,2,3,6,4,4,4,4,4,4,6,4,4,4,4,4,6,4,3,6,6,4,4,4,4,4,6,4,4,1,2,2,1,1,
3102 1,1,1,0,5,0,7,0,5,0,7,1,3,0,0,0,0,15,1,1,0,2,0,1,0,0,0,9,1,1,3,3,3,2,3,
3103 3,3,3,3,3,3,3,3,3,3,3,4,0,2,1,3,1,0,5,1,0,5,1,3,1,0,5,1,0,5,1,1,3,3,0,
3104 1,3,1,3,0,1,1,0,2,0,3,0,1,1,1,2,1,6,2,2,1,0,1,1,3,1,3
3105 };
3106
3107 static const unsigned char ag_ptt[] = {
3108 0, 9, 13, 13, 9, 9, 10, 19, 19, 10, 10, 16, 16, 18, 18, 14, 14, 21,
3109 21, 24, 25, 27, 28, 28, 29, 29,122,122,123,124,127,128,124,129,129,129,
3110 129,129,129,129,129,129,137,129,139,129,129,129,129,129,145,129,129,129,
3111 129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
3112 129,129,129,129,129,129,129,129,129,129,129,129,129,130,156,130,157,130,
3113 158,130,159,130,161,162,130,163,164,130,165,166,130,142,142,142,142,168,
3114 142,142,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,
3115 131,169,131,136,136,136,171,136,136,136,136,136,136,136,136,152,152,170,
3116 170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,
3117 170,170,170,170,170,170, 2, 2, 2, 3, 3, 4, 5, 5,172,151,173,151,
3118 174,151,175,151,160,160,177,178,179,180,132,181,181, 1, 1,182,182,186,
3119 187,189,133,190,190,185,185,185,185,185,185,185,185,185,185,185,185,185,
3120 185,185,185,185,188,188,148,148,191,192,191,191,193,191,149,149,194,195,
3121 194,194,196,194,150,150,150,150,144,144,144,144,144,147,147,147,199,147,
3122 201,147,143,143,143,143,143,200,198,197, 6, 6,146,146,138,138,140,140
3123 };
3124
3125 static const unsigned char *ag_valid(int ag_k) {
3126 const unsigned char *ag_tp = &ag_tstt[ag_sbt[(PCB).sn+1]];
3127 while (*--ag_tp != (unsigned char) ag_k) if (*ag_tp == 0) return NULL;
3128 return ag_tp;
3129 }
3130
3131 int bug-I158_change_reduction(bug-I158_token_type ag_k) {
3132 if (!ag_valid(ag_k)) return 0;
3133 (PCB).reduction_token = ag_k;
3134 return 1;
3135 }
3136
3137 static void ag_default(const int *ag_tp) {
3138 (PCB).ag_dsn = (PCB).sn;
3139 (PCB).ag_dtl = ag_tp;
3140 while (!ag_valid((bug-I158_token_type) *ag_tp)) ag_tp++;
3141 (PCB).reduction_token = (bug-I158_token_type) *ag_tp;
3142 }
3143
3144
3145
3146 static void ag_ra(void)
3147 {
3148 switch(ag_rpx[(PCB).ag_ap]) {
3149 case 1: ag_rp_1(V(0,(void *)), V(3,(int *))); break;
3150 case 2: ag_rp_2(V(0,(void *)), V(3,(int *))); break;
3151 case 3: ag_rp_3(V(0,(void *)), V(2,(void *))); break;
3152 case 4: ag_rp_4(V(1,(void *))); break;
3153 case 5: ag_rp_5(V(0,(int *))); break;
3154 case 6: ag_rp_6(V(0,(void *)), V(1,(int *))); break;
3155 case 7: ag_rp_7(V(0,(int *))); break;
3156 case 8: ag_rp_8(V(0,(int *)), V(1,(void *))); break;
3157 case 9: V(0,(int *)) = ag_rp_9(V(0,(int *))); break;
3158 case 10: V(0,(int *)) = ag_rp_10(V(0,(int *)), V(1,(int *))); break;
3159 case 11: V(0,(int *)) = ag_rp_11(V(0,(int *))); break;
3160 case 12: V(0,(int *)) = ag_rp_12(V(0,(int *)), V(1,(int *))); break;
3161 case 13: V(0,(char * *)) = ag_rp_13(V(0,(int *))); break;
3162 case 14: V(0,(char * *)) = ag_rp_14(V(0,(int *))); break;
3163 case 15: V(0,(char * *)) = ag_rp_15(V(0,(int *))); break;
3164 case 16: V(0,(int *)) = ag_rp_16(V(0,(int *))); break;
3165 case 17: V(0,(int *)) = ag_rp_17(V(0,(int *)), V(1,(int *))); break;
3166 case 18: V(0,(char * *)) = ag_rp_18(V(1,(int *))); break;
3167 case 19: V(0,(char * *)) = ag_rp_19(V(1,(int *))); break;
3168 case 20: ag_rp_20(); break;
3169 case 21: ag_rp_21(); break;
3170 case 22: ag_rp_22(); break;
3171 case 23: ag_rp_23(); break;
3172 case 24: ag_rp_24(); break;
3173 case 25: ag_rp_25(); break;
3174 case 26: ag_rp_26(); break;
3175 case 27: ag_rp_27(); break;
3176 case 28: ag_rp_28(); break;
3177 case 29: ag_rp_29(); break;
3178 case 30: ag_rp_30(); break;
3179 case 31: ag_rp_31(); break;
3180 case 32: ag_rp_32(); break;
3181 case 33: ag_rp_33(); break;
3182 case 34: ag_rp_34(); break;
3183 case 35: ag_rp_35(); break;
3184 case 36: ag_rp_36(); break;
3185 case 37: ag_rp_37(); break;
3186 case 38: ag_rp_38(); break;
3187 case 39: ag_rp_39(); break;
3188 case 40: ag_rp_40(); break;
3189 case 41: ag_rp_41(); break;
3190 case 42: ag_rp_42(); break;
3191 case 43: ag_rp_43(); break;
3192 case 44: ag_rp_44(); break;
3193 case 45: ag_rp_45(); break;
3194 case 46: ag_rp_46(); break;
3195 case 47: ag_rp_47(); break;
3196 case 48: ag_rp_48(); break;
3197 case 49: ag_rp_49(); break;
3198 case 50: ag_rp_50(); break;
3199 case 51: ag_rp_51(); break;
3200 case 52: ag_rp_52(); break;
3201 case 53: ag_rp_53(); break;
3202 case 54: ag_rp_54(); break;
3203 case 55: ag_rp_55(); break;
3204 case 56: ag_rp_56(); break;
3205 case 57: ag_rp_57(); break;
3206 case 58: ag_rp_58(); break;
3207 case 59: ag_rp_59(); break;
3208 case 60: ag_rp_60(); break;
3209 case 61: ag_rp_61(); break;
3210 case 62: ag_rp_62(); break;
3211 case 63: ag_rp_63(); break;
3212 case 64: ag_rp_64(); break;
3213 case 65: ag_rp_65(); break;
3214 case 66: ag_rp_66(); break;
3215 case 67: ag_rp_67(); break;
3216 case 68: ag_rp_68(); break;
3217 case 69: ag_rp_69(); break;
3218 case 70: ag_rp_70(); break;
3219 case 71: ag_rp_71(); break;
3220 case 72: ag_rp_72(); break;
3221 case 73: ag_rp_73(); break;
3222 case 74: ag_rp_74(); break;
3223 case 75: ag_rp_75(); break;
3224 case 76: ag_rp_76(); break;
3225 case 77: ag_rp_77(); break;
3226 case 78: ag_rp_78(); break;
3227 case 79: ag_rp_79(); break;
3228 case 80: ag_rp_80(); break;
3229 case 81: ag_rp_81(); break;
3230 case 82: ag_rp_82(); break;
3231 case 83: ag_rp_83(); break;
3232 case 84: ag_rp_84(); break;
3233 case 85: ag_rp_85(); break;
3234 case 86: ag_rp_86(); break;
3235 case 87: ag_rp_87(); break;
3236 case 88: ag_rp_88(); break;
3237 case 89: ag_rp_89(); break;
3238 case 90: ag_rp_90(); break;
3239 case 91: ag_rp_91(); break;
3240 case 92: ag_rp_92(); break;
3241 case 93: ag_rp_93(); break;
3242 case 94: ag_rp_94(); break;
3243 case 95: ag_rp_95(); break;
3244 case 96: ag_rp_96(); break;
3245 case 97: ag_rp_97(); break;
3246 case 98: ag_rp_98(); break;
3247 case 99: ag_rp_99(); break;
3248 case 100: ag_rp_100(); break;
3249 case 101: ag_rp_101(); break;
3250 case 102: ag_rp_102(); break;
3251 case 103: ag_rp_103(); break;
3252 case 104: ag_rp_104(); break;
3253 case 105: ag_rp_105(); break;
3254 case 106: ag_rp_106(); break;
3255 case 107: ag_rp_107(); break;
3256 case 108: ag_rp_108(); break;
3257 case 109: ag_rp_109(); break;
3258 case 110: ag_rp_110(); break;
3259 case 111: ag_rp_111(); break;
3260 case 112: ag_rp_112(); break;
3261 case 113: ag_rp_113(); break;
3262 case 114: ag_rp_114(); break;
3263 case 115: ag_rp_115(); break;
3264 case 116: ag_rp_116(); break;
3265 case 117: ag_rp_117(); break;
3266 case 118: ag_rp_118(); break;
3267 case 119: ag_rp_119(); break;
3268 case 120: ag_rp_120(); break;
3269 case 121: ag_rp_121(); break;
3270 case 122: ag_rp_122(); break;
3271 case 123: ag_rp_123(); break;
3272 case 124: ag_rp_124(); break;
3273 case 125: ag_rp_125(); break;
3274 case 126: ag_rp_126(); break;
3275 case 127: ag_rp_127(); break;
3276 case 128: ag_rp_128(); break;
3277 case 129: ag_rp_129(); break;
3278 case 130: ag_rp_130(); break;
3279 case 131: ag_rp_131(); break;
3280 case 132: ag_rp_132(); break;
3281 case 133: ag_rp_133(); break;
3282 case 134: ag_rp_134(); break;
3283 case 135: ag_rp_135(); break;
3284 case 136: ag_rp_136(); break;
3285 case 137: ag_rp_137(); break;
3286 case 138: ag_rp_138(); break;
3287 case 139: ag_rp_139(); break;
3288 case 140: ag_rp_140(); break;
3289 case 141: ag_rp_141(); break;
3290 case 142: ag_rp_142(); break;
3291 case 143: V(0,(double *)) = ag_rp_143(); break;
3292 case 144: V(0,(double *)) = ag_rp_144(); break;
3293 case 145: V(0,(double *)) = ag_rp_145(); break;
3294 case 146: V(0,(double *)) = ag_rp_146(); break;
3295 case 147: V(0,(double *)) = ag_rp_147(); break;
3296 case 148: V(0,(int *)) = ag_rp_148(); break;
3297 case 149: V(0,(char * *)) = ag_rp_149(); break;
3298 case 150: V(0,(char * *)) = ag_rp_150(); break;
3299 case 151: ag_rp_151(); break;
3300 case 152: ag_rp_152(); break;
3301 case 153: ag_rp_153(); break;
3302 case 154: ag_rp_154(); break;
3303 case 155: ag_rp_155(); break;
3304 case 156: ag_rp_156(); break;
3305 case 157: ag_rp_157(); break;
3306 case 158: ag_rp_158(); break;
3307 case 159: ag_rp_159(); break;
3308 case 160: ag_rp_160(); break;
3309 case 161: ag_rp_161(); break;
3310 case 162: ag_rp_162(); break;
3311 case 163: ag_rp_163(); break;
3312 case 164: ag_rp_164(); break;
3313 case 165: ag_rp_165(); break;
3314 case 166: V(0,(double *)) = ag_rp_166(); break;
3315 case 167: V(0,(double *)) = ag_rp_167(); break;
3316 case 168: ag_rp_168(); break;
3317 case 169: ag_rp_169(); break;
3318 case 170: ag_rp_170(); break;
3319 case 171: ag_rp_171(); break;
3320 case 172: ag_rp_172(); break;
3321 case 173: ag_rp_173(); break;
3322 case 174: ag_rp_174(); break;
3323 case 175: ag_rp_175(); break;
3324 case 176: ag_rp_176(); break;
3325 case 177: ag_rp_177(); break;
3326 case 178: ag_rp_178(); break;
3327 case 179: ag_rp_179(); break;
3328 case 180: ag_rp_180(); break;
3329 case 181: ag_rp_181(); break;
3330 case 182: ag_rp_182(); break;
3331 case 183: ag_rp_183(); break;
3332 case 184: ag_rp_184(); break;
3333 case 185: ag_rp_185(); break;
3334 case 186: ag_rp_186(); break;
3335 case 187: ag_rp_187(); break;
3336 case 188: ag_rp_188(); break;
3337 case 189: ag_rp_189(); break;
3338 case 190: ag_rp_190(); break;
3339 case 191: ag_rp_191(); break;
3340 case 192: ag_rp_192(); break;
3341 case 193: ag_rp_193(); break;
3342 case 194: ag_rp_194(); break;
3343 case 195: ag_rp_195(); break;
3344 case 196: ag_rp_196(); break;
3345 case 197: ag_rp_197(); break;
3346 case 198: ag_rp_198(); break;
3347 case 199: ag_rp_199(); break;
3348 case 200: ag_rp_200(); break;
3349 case 201: ag_rp_201(); break;
3350 case 202: ag_rp_202(); break;
3351 case 203: ag_rp_203(); break;
3352 case 204: ag_rp_204(); break;
3353 case 205: ag_rp_205(); break;
3354 case 206: ag_rp_206(); break;
3355 case 207: ag_rp_207(); break;
3356 case 208: ag_rp_208(); break;
3357 case 209: ag_rp_209(); break;
3358 case 210: ag_rp_210(); break;
3359 case 211: ag_rp_211(); break;
3360 case 212: ag_rp_212(); break;
3361 case 213: ag_rp_213(); break;
3362 case 214: ag_rp_214(); break;
3363 case 215: ag_rp_215(); break;
3364 case 216: ag_rp_216(); break;
3365 case 217: ag_rp_217(); break;
3366 case 218: ag_rp_218(); break;
3367 case 219: ag_rp_219(); break;
3368 case 220: ag_rp_220(); break;
3369 case 221: V(0,(int *)) = ag_rp_221(); break;
3370 case 222: V(0,(int *)) = ag_rp_222(); break;
3371 case 223: ag_rp_223(); break;
3372 case 224: ag_rp_224(); break;
3373 case 225: ag_rp_225(); break;
3374 case 226: ag_rp_226(); break;
3375 case 227: ag_rp_227(); break;
3376 }
3377 }
3378
3379 #define TOKEN_NAMES bug-I158_token_names
3380 const char *const bug-I158_token_names[205] = {
3381 "program",
3382 "step_part",
3383 "const",
3384 "number",
3385 "intnum",
3386 "symbol_or_lineno",
3387 "hashed_number",
3388 "SEP",
3389 "EOFILE",
3390 "FNUM",
3391 "simple real",
3392 "",
3393 "'+'",
3394 "",
3395 "exponent",
3396 "'-'",
3397 "integer part",
3398 "'.'",
3399 "fraction part",
3400 "",
3401 "digit",
3402 "name",
3403 "letter",
3404 "",
3405 "SYMBOL",
3406 "STRSYM",
3407 "'$'",
3408 "DIGITS",
3409 "digit string",
3410 "STRING",
3411 "'\\\"'",
3412 "string text",
3413 "'\\n'",
3414 "GOSUB",
3415 "LABEL",
3416 "ON",
3417 "INTERRUPT",
3418 "BREAK",
3419 "CONTINUE",
3420 "IF",
3421 "THEN",
3422 "ELSE",
3423 "ENDIF",
3424 "PRINT",
3425 "INPUT",
3426 "LINE",
3427 "RETURN",
3428 "DIM",
3429 "END",
3430 "AT",
3431 "SCREEN",
3432 "REVERSE",
3433 "AND",
3434 "OR",
3435 "NOT",
3436 "NE",
3437 "LE",
3438 "GE",
3439 "LT",
3440 "GT",
3441 "EQ",
3442 "READ",
3443 "DATA",
3444 "RESTORE",
3445 "OPEN",
3446 "CLOSE",
3447 "WINDOW",
3448 "DOT",
3449 "CIRCLE",
3450 "TEXT",
3451 "CLEAR",
3452 "PRINTER",
3453 "WAIT",
3454 "BELL",
3455 "MAP",
3456 "XMAP",
3457 "YMAP",
3458 "ARROW",
3459 "XTICK",
3460 "YTICK",
3461 "SIN",
3462 "ASIN",
3463 "COS",
3464 "ACOS",
3465 "TAN",
3466 "ATAN",
3467 "EXP",
3468 "LOG",
3469 "SQRT",
3470 "MYEOF",
3471 "INT",
3472 "FRAC",
3473 "MOD",
3474 "RAN",
3475 "LEN",
3476 "VAL",
3477 "LEFT",
3478 "RIGHT",
3479 "MID",
3480 "MIN",
3481 "MAX",
3482 "STR",
3483 "INKEY",
3484 "CHR",
3485 "ASC",
3486 "UPPER",
3487 "LOWER",
3488 "TRIM",
3489 "LTRIM",
3490 "RTRIM",
3491 "INSTR",
3492 "SYSTEM",
3493 "SYSTEM2",
3494 "PEEK",
3495 "PEEK2",
3496 "POKE",
3497 "DATE",
3498 "TIME",
3499 "'*'",
3500 "'/'",
3501 "'^'",
3502 "UMINUS",
3503 "NAME",
3504 "program",
3505 "statement list",
3506 "eof",
3507 "statement_list",
3508 "",
3509 "",
3510 "statement",
3511 "string_assignment",
3512 "assignment",
3513 "for_loop",
3514 "if_clause",
3515 "\"GOTO\"",
3516 "\"GOSUB\"",
3517 "expression",
3518 "",
3519 "goto_list",
3520 "",
3521 "gosub_list",
3522 "','",
3523 "string_expression",
3524 "printintro",
3525 "printlist",
3526 "",
3527 "semicolon",
3528 "inputintro",
3529 "inputlist",
3530 "readlist",
3531 "datalist",
3532 "dimlist",
3533 "mapping",
3534 "\"TO\"",
3535 "'('",
3536 "')'",
3537 "",
3538 "",
3539 "",
3540 "",
3541 "indexlist",
3542 "",
3543 "",
3544 "",
3545 "",
3546 "",
3547 "",
3548 "string_function",
3549 "",
3550 "",
3551 "function",
3552 "",
3553 "",
3554 "",
3555 "",
3556 "",
3557 "\"FOR\"",
3558 "",
3559 "",
3560 "",
3561 "",
3562 "next_or_eofile",
3563 "next_symbol",
3564 "\"NEXT\"",
3565 "\"STEP\"",
3566 "condition",
3567 "",
3568 "",
3569 "else_part",
3570 "",
3571 "endif_or_eof",
3572 "input",
3573 "",
3574 "",
3575 "readitem",
3576 "",
3577 "",
3578 "stream",
3579 "position",
3580 "",
3581 "prompt",
3582 "",
3583 "'#'",
3584 "';'",
3585 "",
3586
3587 };
3588
3589 #ifndef MISSING_FORMAT
3590 #define MISSING_FORMAT "Missing %s"
3591 #endif
3592 #ifndef UNEXPECTED_FORMAT
3593 #define UNEXPECTED_FORMAT "Unexpected %s"
3594 #endif
3595 #ifndef UNNAMED_TOKEN
3596 #define UNNAMED_TOKEN "input"
3597 #endif
3598
3599
3600 static void ag_diagnose(void) {
3601 int ag_snd = (PCB).sn;
3602 int ag_k = ag_sbt[ag_snd];
3603
3604 if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) {
3605 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
3606 }
3607 else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8
3608 && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1
3609 && *TOKEN_NAMES[ag_tstt[ag_k]]) {
3610 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
3611 }
3612 else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) {
3613 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]);
3614 }
3615 else if (isprint((*(PCB).lab)) && (*(PCB).lab) != '\\') {
3616 char buf[20];
3617 sprintf(buf, "\'%c\'", (char) (*(PCB).lab));
3618 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf);
3619 }
3620 else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN);
3621 (PCB).error_message = (PCB).ag_msg;
3622
3623
3624 }
3625 static int ag_action_1_r_proc(void);
3626 static int ag_action_2_r_proc(void);
3627 static int ag_action_3_r_proc(void);
3628 static int ag_action_4_r_proc(void);
3629 static int ag_action_1_s_proc(void);
3630 static int ag_action_3_s_proc(void);
3631 static int ag_action_1_proc(void);
3632 static int ag_action_2_proc(void);
3633 static int ag_action_3_proc(void);
3634 static int ag_action_4_proc(void);
3635 static int ag_action_5_proc(void);
3636 static int ag_action_6_proc(void);
3637 static int ag_action_7_proc(void);
3638 static int ag_action_8_proc(void);
3639 static int ag_action_9_proc(void);
3640 static int ag_action_10_proc(void);
3641 static int ag_action_11_proc(void);
3642 static int ag_action_8_proc(void);
3643
3644
3645 static int (*const ag_r_procs_scan[])(void) = {
3646 ag_action_1_r_proc,
3647 ag_action_2_r_proc,
3648 ag_action_3_r_proc,
3649 ag_action_4_r_proc
3650 };
3651
3652 static int (*const ag_s_procs_scan[])(void) = {
3653 ag_action_1_s_proc,
3654 ag_action_2_r_proc,
3655 ag_action_3_s_proc,
3656 ag_action_4_r_proc
3657 };
3658
3659 static int (*const ag_gt_procs_scan[])(void) = {
3660 ag_action_1_proc,
3661 ag_action_2_proc,
3662 ag_action_3_proc,
3663 ag_action_4_proc,
3664 ag_action_5_proc,
3665 ag_action_6_proc,
3666 ag_action_7_proc,
3667 ag_action_8_proc,
3668 ag_action_9_proc,
3669 ag_action_10_proc,
3670 ag_action_11_proc,
3671 ag_action_8_proc
3672 };
3673
3674
3675 static int ag_action_10_proc(void) {
3676 int ag_t = (PCB).token_number;
3677 (PCB).btsx = 0, (PCB).drt = -1;
3678 do {
3679 ag_track();
3680 if ((PCB).rx < (PCB).fx) {
3681 (PCB).input_code = (PCB).lab[(PCB).rx++];
3682 (PCB).token_number = (bug-I158_token_type) AG_TCV((PCB).input_code);}
3683 else {
3684 GET_INPUT;
3685 (PCB).lab[(PCB).fx++] = (PCB).input_code;
3686 (PCB).token_number = (bug-I158_token_type) AG_TCV((PCB).input_code);
3687 (PCB).rx++;
3688 }
3689 if (ag_key_index[(PCB).sn]) {
3690 unsigned ag_k = ag_key_index[(PCB).sn];
3691 int ag_ch = CONVERT_CASE((PCB).input_code);
3692 if (ag_ch < 255) {
3693 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
3694 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
3695 }
3696 }
3697 } while ((PCB).token_number == (bug-I158_token_type) ag_t);
3698 (PCB).rx = 0;
3699 return 1;
3700 }
3701
3702 static int ag_action_11_proc(void) {
3703 int ag_t = (PCB).token_number;
3704
3705 (PCB).btsx = 0, (PCB).drt = -1;
3706 do {
3707 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab;
3708 (PCB).ssx--;
3709 ag_track();
3710 ag_ra();
3711 if ((PCB).exit_flag != AG_RUNNING_CODE) return 0;
3712 (PCB).ssx++;
3713 if ((PCB).rx < (PCB).fx) {
3714 (PCB).input_code = (PCB).lab[(PCB).rx++];
3715 (PCB).token_number = (bug-I158_token_type) AG_TCV((PCB).input_code);}
3716 else {
3717 GET_INPUT;
3718 (PCB).lab[(PCB).fx++] = (PCB).input_code;
3719 (PCB).token_number = (bug-I158_token_type) AG_TCV((PCB).input_code);
3720 (PCB).rx++;
3721 }
3722 if (ag_key_index[(PCB).sn]) {
3723 unsigned ag_k = ag_key_index[(PCB).sn];
3724 int ag_ch = CONVERT_CASE((PCB).input_code);
3725 if (ag_ch < 255) {
3726 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
3727 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
3728 }
3729 }
3730 }
3731 while ((PCB).token_number == (bug-I158_token_type) ag_t);
3732 (PCB).rx = 0;
3733 return 1;
3734 }
3735
3736 static int ag_action_3_r_proc(void) {
3737 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3738 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3739 (PCB).btsx = 0, (PCB).drt = -1;
3740 (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap];
3741 ag_ra();
3742 return (PCB).exit_flag == AG_RUNNING_CODE;
3743 }
3744
3745 static int ag_action_3_s_proc(void) {
3746 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3747 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3748 (PCB).btsx = 0, (PCB).drt = -1;
3749 (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap];
3750 ag_ra();
3751 return (PCB).exit_flag == AG_RUNNING_CODE;
3752 }
3753
3754 static int ag_action_4_r_proc(void) {
3755 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3756 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3757 (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap];
3758 return 1;
3759 }
3760
3761 static int ag_action_2_proc(void) {
3762 (PCB).btsx = 0, (PCB).drt = -1;
3763 if ((PCB).ssx >= 128) {
3764 (PCB).exit_flag = AG_STACK_ERROR_CODE;
3765 PARSER_STACK_OVERFLOW;
3766 }
3767 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab;
3768 (PCB).ss[(PCB).ssx] = (PCB).sn;
3769 (PCB).ssx++;
3770 (PCB).sn = (PCB).ag_ap;
3771 ag_track();
3772 return 0;
3773 }
3774
3775 static int ag_action_9_proc(void) {
3776 if ((PCB).drt == -1) {
3777 (PCB).drt=(PCB).token_number;
3778 (PCB).dssx=(PCB).ssx;
3779 (PCB).dsn=(PCB).sn;
3780 }
3781 ag_prot();
3782 (PCB).vs[(PCB).ssx] = ag_null_value;
3783 (PCB).ss[(PCB).ssx] = (PCB).sn;
3784 (PCB).ssx++;
3785 (PCB).sn = (PCB).ag_ap;
3786 (PCB).rx = 0;
3787 return (PCB).exit_flag == AG_RUNNING_CODE;
3788 }
3789
3790 static int ag_action_2_r_proc(void) {
3791 (PCB).ssx++;
3792 (PCB).sn = (PCB).ag_ap;
3793 return 0;
3794 }
3795
3796 static int ag_action_7_proc(void) {
3797 --(PCB).ssx;
3798 (PCB).rx = 0;
3799 (PCB).exit_flag = AG_SUCCESS_CODE;
3800 return 0;
3801 }
3802
3803 static int ag_action_1_proc(void) {
3804 ag_track();
3805 (PCB).exit_flag = AG_SUCCESS_CODE;
3806 return 0;
3807 }
3808
3809 static int ag_action_1_r_proc(void) {
3810 (PCB).exit_flag = AG_SUCCESS_CODE;
3811 return 0;
3812 }
3813
3814 static int ag_action_1_s_proc(void) {
3815 (PCB).exit_flag = AG_SUCCESS_CODE;
3816 return 0;
3817 }
3818
3819 static int ag_action_4_proc(void) {
3820 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3821 (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap];
3822 (PCB).btsx = 0, (PCB).drt = -1;
3823 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab;
3824 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3825 else (PCB).ss[(PCB).ssx] = (PCB).sn;
3826 ag_track();
3827 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3828 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3829 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3830 do {
3831 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3832 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3833 else ag_t2 = ag_tx;
3834 } while (ag_t1 < ag_t2);
3835 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3836 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3837 REDUCTION_TOKEN_ERROR; break;}
3838 (PCB).ag_ap = ag_pstt[ag_t1];
3839 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
3840 }
3841 return 0;
3842 }
3843
3844 static int ag_action_3_proc(void) {
3845 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3846 (PCB).btsx = 0, (PCB).drt = -1;
3847 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).lab;
3848 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3849 else (PCB).ss[(PCB).ssx] = (PCB).sn;
3850 ag_track();
3851 (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap];
3852 ag_ra();
3853 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3854 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3855 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3856 do {
3857 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3858 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3859 else ag_t2 = ag_tx;
3860 } while (ag_t1 < ag_t2);
3861 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3862 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3863 REDUCTION_TOKEN_ERROR; break;}
3864 (PCB).ag_ap = ag_pstt[ag_t1];
3865 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
3866 }
3867 return 0;
3868 }
3869
3870 static int ag_action_8_proc(void) {
3871 ag_undo();
3872 (PCB).rx = 0;
3873 (PCB).exit_flag = AG_SYNTAX_ERROR_CODE;
3874 ag_diagnose();
3875 SYNTAX_ERROR;
3876 {(PCB).rx = 1; ag_track();}
3877 return (PCB).exit_flag == AG_RUNNING_CODE;
3878 }
3879
3880 static int ag_action_5_proc(void) {
3881 int ag_sd = ag_fl[(PCB).ag_ap];
3882 (PCB).btsx = 0, (PCB).drt = -1;
3883 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3884 else {
3885 (PCB).ss[(PCB).ssx] = (PCB).sn;
3886 }
3887 (PCB).rx = 0;
3888 (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap];
3889 ag_ra();
3890 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3891 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3892 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3893 do {
3894 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3895 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3896 else ag_t2 = ag_tx;
3897 } while (ag_t1 < ag_t2);
3898 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3899 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3900 REDUCTION_TOKEN_ERROR; break;}
3901 (PCB).ag_ap = ag_pstt[ag_t1];
3902 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
3903 }
3904 return (PCB).exit_flag == AG_RUNNING_CODE;
3905 }
3906
3907 static int ag_action_6_proc(void) {
3908 int ag_sd = ag_fl[(PCB).ag_ap];
3909 (PCB).reduction_token = (bug-I158_token_type) ag_ptt[(PCB).ag_ap];
3910 if ((PCB).drt == -1) {
3911 (PCB).drt=(PCB).token_number;
3912 (PCB).dssx=(PCB).ssx;
3913 (PCB).dsn=(PCB).sn;
3914 }
3915 if (ag_sd) {
3916 (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3917 }
3918 else {
3919 ag_prot();
3920 (PCB).vs[(PCB).ssx] = ag_null_value;
3921 (PCB).ss[(PCB).ssx] = (PCB).sn;
3922 }
3923 (PCB).rx = 0;
3924 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3925 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3926 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3927 do {
3928 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3929 if (ag_tstt[ag_tx] < (unsigned char)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3930 else ag_t2 = ag_tx;
3931 } while (ag_t1 < ag_t2);
3932 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3933 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3934 REDUCTION_TOKEN_ERROR; break;}
3935 (PCB).ag_ap = ag_pstt[ag_t1];
3936 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
3937 }
3938 return (PCB).exit_flag == AG_RUNNING_CODE;
3939 }
3940
3941
3942 void init_bug-I158(void) {
3943 (PCB).rx = (PCB).fx = 0;
3944 (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0;
3945 (PCB).exit_flag = AG_RUNNING_CODE;
3946 (PCB).line = FIRST_LINE;
3947 (PCB).column = FIRST_COLUMN;
3948 (PCB).btsx = 0, (PCB).drt = -1;
3949 }
3950
3951 void bug-I158(void) {
3952 init_bug-I158();
3953 (PCB).exit_flag = AG_RUNNING_CODE;
3954 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3955 unsigned ag_t1 = ag_sbt[(PCB).sn];
3956 if (ag_tstt[ag_t1]) {
3957 unsigned ag_t2 = ag_sbe[(PCB).sn] - 1;
3958 if ((PCB).rx < (PCB).fx) {
3959 (PCB).input_code = (PCB).lab[(PCB).rx++];
3960 (PCB).token_number = (bug-I158_token_type) AG_TCV((PCB).input_code);}
3961 else {
3962 GET_INPUT;
3963 (PCB).lab[(PCB).fx++] = (PCB).input_code;
3964 (PCB).token_number = (bug-I158_token_type) AG_TCV((PCB).input_code);
3965 (PCB).rx++;
3966 }
3967 if (ag_key_index[(PCB).sn]) {
3968 unsigned ag_k = ag_key_index[(PCB).sn];
3969 int ag_ch = CONVERT_CASE((PCB).input_code);
3970 if (ag_ch < 255) {
3971 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
3972 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
3973 }
3974 }
3975 do {
3976 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3977 if (ag_tstt[ag_tx] > (unsigned char)(PCB).token_number)
3978 ag_t1 = ag_tx + 1;
3979 else ag_t2 = ag_tx;
3980 } while (ag_t1 < ag_t2);
3981 if (ag_tstt[ag_t1] != (unsigned char)(PCB).token_number)
3982 ag_t1 = ag_sbe[(PCB).sn];
3983 }
3984 (PCB).ag_ap = ag_pstt[ag_t1];
3985 (ag_gt_procs_scan[ag_astt[ag_t1]])();
3986 }
3987 }
3988
3989