* Added autoconf test for Miquel van Smoorenburg's liblockfile
[mmh] / zotnet / tws / dtimep.c-lexed
1 #include <stdio.h>
2 static int start_cond = 0;
3 #define BEGIN start_cond =
4 struct yysvf { 
5         struct yywork *yystoff;
6         struct yysvf *yyother;
7         int *yystops;};
8 # define Z 2
9 #include <h/nmh.h>
10 #include <tws.h>
11 #if !defined(HAVE_TM_GMTOFF) && !defined(HAVE_TZSET)
12 # include <sys/timeb.h>
13 #endif
14
15 #if !defined(HAVE_TM_GMTOFF) && defined(HAVE_TZSET)
16 extern int  daylight;
17 extern long timezone;
18 extern char *tzname[];
19 #endif
20
21
22 # line 49 "./dtimep.lex"
23 /*
24  * Patchable flag that says how to interpret NN/NN/NN dates. When
25  * true, we do it European style: DD/MM/YY. When false, we do it
26  * American style: MM/DD/YY.  Of course, these are all non-RFC822
27  * compliant.
28  */
29 int europeandate = 0;
30
31
32 # line 57 "./dtimep.lex"
33 /*
34  * Table to convert month names to numeric month.  We use the
35  * fact that the low order 5 bits of the sum of the 2nd & 3rd
36  * characters of the name is a hash with no collisions for the 12
37  * valid month names.  (The mask to 5 bits maps any combination of
38  * upper and lower case into the same hash value).
39  */
40 static int month_map[] = {
41         0,
42         6,      /* 1 - Jul */
43         3,      /* 2 - Apr */
44         5,      /* 3 - Jun */
45         0,
46         10,     /* 5 - Nov */
47         0,
48         1,      /* 7 - Feb */
49         11,     /* 8 - Dec */
50         0,
51         0,
52         0,
53         0,
54         0,
55         0,
56         0,      /*15 - Jan */
57         0,
58         0,
59         0,
60         2,      /*19 - Mar */
61         0,
62         8,      /*21 - Sep */
63         0,
64         9,      /*23 - Oct */
65         0,
66         0,
67         4,      /*26 - May */
68         0,
69         7       /*28 - Aug */
70 };
71
72 # line 95 "./dtimep.lex"
73 /*
74  * Same trick for day-of-week using the hash function
75  *  (c1 & 7) + (c2 & 4)
76  */
77 static int day_map[] = {
78         0,
79         0,
80         0,
81         6,      /* 3 - Sat */
82         4,      /* 4 - Thu */
83         0,
84         5,      /* 6 - Fri */
85         0,      /* 7 - Sun */
86         2,      /* 8 - Tue */
87         1       /* 9 - Mon */,
88         0,
89         3       /*11 - Wed */
90 };
91 #define SETDAY  { tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)];\
92                 tw.tw_flags &= ~TW_SDAY; tw.tw_flags |= TW_SEXP;\
93                 cp += 2; }
94 #define SETMONTH { tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; gotdate++;\
95                  cp += 2;\
96                  SKIPD;}
97 #define CVT1OR2 (i=(*cp++ - '0'), isdigit(*cp)? i*10 + (*cp++ - '0') : i)
98 #define CVT2      ((cp[0] - '0')*10 + (cp[1] - '0'))
99 #define CVT4    ((((cp[0] - '0')*10 + (cp[1] - '0'))*10 + \
100                                       (cp[2] - '0'))*10 + (cp[3] - '0'))
101 #define SKIPD   { while ( !isdigit(*cp++) ) ;  --cp; }
102 #define EXPZONE { tw.tw_flags &= ~TW_SZONE; tw.tw_flags |= TW_SZEXP; }
103 #define ZONE(x) { tw.tw_zone=(x); EXPZONE; }
104 #define ZONED(x) { ZONE(x); tw.tw_flags |= TW_DST; }
105 #define LC(c)   (isupper (c) ? tolower (c) : (c))
106
107 #ifdef DSTXXX
108 # ifdef TIME_WITH_SYS_TIME
109 #  include <sys/time.h>
110 #  include <time.h>
111 # else
112 #  ifdef HAVE_SYS_TIME_H
113 #   include <sys/time.h>
114 #  else
115 #   include <time.h>
116 #  endif
117 # endif
118
119 static void
120 zonehack (struct tws *tw)
121 {
122     register struct tm *tm;
123
124     if (dmktime (tw) == (time_t) -1)
125         return;
126
127     tm = localtime (&tw->tw_clock);
128     if (tm->tm_isdst) {
129         tw->tw_flags |= TW_DST;
130         tw->tw_zone -= 60;
131     }
132 }
133 #endif  /* DSTXXX */
134 struct tws *
135 dparsetime (char *str)
136 {
137         register int i;
138         static struct tws tw;
139         register char *cp;
140         register int gotdate = 0;
141         time_t tclock;
142
143 #ifdef HAVE_TM_GMTOFF
144         struct tm *tm;
145         time_t clock;
146 #else
147 # ifndef HAVE_TZSET
148         struct timeb tb;
149 # endif /* not HAVE_TZSET */
150 #endif /* HAVE_TM_GMTOFF */
151
152         start_cond = 0;
153
154         /* Zero out the struct. */
155         memset( (char *) &tw, 0, sizeof(tw));
156
157         /* Set default time zone. */
158 #ifdef HAVE_TM_GMTOFF
159         time (&clock);
160         tm = localtime(&clock);
161         tw.tw_zone = tm->tm_gmtoff / 60;
162         if (tm->tm_isdst)                       /* if DST is in effect */
163                 tw.tw_zone -= 60;               /* reset to normal offset */
164 #else
165 # ifdef HAVE_TZSET
166         tzset();
167         tw.tw_zone = -(timezone / 60);
168 # else
169         ftime(&tb);
170         tw.tw_zone = -tb.timezone;
171 # endif /* HAVE_TZSET */
172 #endif /* HAVE_TM_GMTOFF */
173
174         while (isspace(*str))
175                 str++;
176         while (1)
177                 switch (cp = str, *cp ? lex_string( &str, start_cond) : 0) {
178
179                 case -1:
180                         if (!gotdate || tw.tw_year == 0)
181                                 return (struct tws *)0;
182                         /* fall through */
183                 case 0:
184                         if (tw.tw_year == 0) {
185                                 /* Set default year. */
186                                 time (&tclock);
187                                 tw.tw_year = localtime(&tclock)->tm_year + 1900;
188                         } else if (tw.tw_year < 100) {
189                                 /* assume no 2-digit years > 1999 */
190                                 tw.tw_year += 1900;
191                         }
192                         return &tw;
193
194 #ifdef __cplusplus
195 /* to avoid CC and lint complaining yyfussy not being used ...*/
196 static int __lex_hack = 0;
197 if (__lex_hack) goto yyfussy;
198 #endif
199 case 1:
200
201 # line 219 "./dtimep.lex"
202                         SETDAY;
203 break;
204 case 2:
205
206 # line 220 "./dtimep.lex"
207                 {
208                                         cp++;
209                                         SETDAY;
210                                         }
211 break;
212 case 3:
213
214 # line 224 "./dtimep.lex"
215 {
216                                         if (europeandate) {
217                                                 /* European: DD/MM/YY */
218                                                 tw.tw_mday = CVT1OR2;
219                                                 cp++;
220                                                 tw.tw_mon  = CVT1OR2 - 1;
221                                         } else {
222                                                 /* American: MM/DD/YY */
223                                                 tw.tw_mon  = CVT1OR2 - 1;
224                                                 cp++;
225                                                 tw.tw_mday = CVT1OR2;
226                                         }
227                                         cp++;
228                                         for (i = 0; isdigit(*cp); )
229                                                 i = i*10 + (*cp++ - '0');
230                                         tw.tw_year = i;
231                                         gotdate++;      /* XXX */
232                                         }
233 break;
234 case 4:
235
236 # line 242 "./dtimep.lex"
237                 {
238                                         if (europeandate) {
239                                                 tw.tw_mday = CVT1OR2; cp++;
240                                                 tw.tw_mon  = CVT1OR2 - 1;
241                                         } else {
242                                                 tw.tw_mon = CVT1OR2 - 1; cp++;
243                                                 tw.tw_mday  = CVT1OR2;
244                                         }
245                                         gotdate++;
246                                         }
247 break;
248 case 5:
249
250 # line 252 "./dtimep.lex"
251 {
252                                         tw.tw_mday = CVT1OR2;
253                                         while ( !isalpha(*cp++) )
254                                                 ;
255                                         SETMONTH;
256                                         for (i = 0; isdigit(*cp); )
257                                                 i = i*10 + (*cp++ - '0');
258                                         tw.tw_year = i;
259 #ifdef FIX_NON_Y2K_COMPLIANT_MUA_DATES
260                                         /* handle broken mua's that don't add
261                                            1900, or just use the last two
262                                            digits.  Assume no email before
263                                            1972. */
264                                         if (tw.tw_year < 72)
265                                                 tw.tw_year += 100;
266                                         if (tw.tw_year < 1900)
267                                                 tw.tw_year += 1900;
268 #endif /* FIX_NON_Y2K_COMPLIANT_MUA_DATES */
269                                         }
270 break;
271 case 6:
272
273 # line 271 "./dtimep.lex"
274               {
275                                         tw.tw_mday = CVT1OR2;
276                                         while ( ! isalpha( *cp++ ) )
277                                                 ;
278                                         SETMONTH;
279                                         }
280 break;
281 case 7:
282
283 # line 277 "./dtimep.lex"
284 {
285                                         cp++;
286                                         SETMONTH;
287                                         tw.tw_mday = CVT1OR2;
288                                         SKIPD;
289                                         for (i = 0; isdigit(*cp); )
290                                                 i = i*10 + (*cp++ - '0');
291                                         tw.tw_year = i;
292                                         }
293 break;
294 case 8:
295
296 # line 286 "./dtimep.lex"
297                 {
298                                         cp++;
299                                         SETMONTH;
300                                         tw.tw_mday = CVT1OR2;
301                                         }
302 break;
303 case 9:
304
305 # line 292 "./dtimep.lex"
306         {       /* hack: ctime w/o TZ */
307                                         tw.tw_hour = CVT1OR2; cp++;
308                                         tw.tw_min  = CVT1OR2; cp++;
309                                         tw.tw_sec  = CVT1OR2;
310                                         SKIPD;
311                                         tw.tw_year = CVT4; cp+=4;
312                                         }
313 break;
314 case 10:
315
316 # line 299 "./dtimep.lex"
317                         {
318                                         tw.tw_hour = CVT1OR2; cp++;
319                                         tw.tw_min  = CVT1OR2; cp++;
320                                         tw.tw_sec  = CVT1OR2;
321                                         BEGIN Z;
322                                         }
323 break;
324 case 11:
325
326 # line 305 "./dtimep.lex"
327                         {
328                                         tw.tw_hour = CVT1OR2; cp++;
329                                         tw.tw_min = CVT1OR2;
330                                         BEGIN Z;
331                                         }
332 break;
333 case 12:
334
335 # line 310 "./dtimep.lex"
336                         {
337                                         tw.tw_hour = CVT1OR2; cp++;
338                                         if (tw.tw_hour == 12)
339                                                 tw.tw_hour = 0;
340                                         tw.tw_min  = CVT1OR2;
341                                         BEGIN Z;
342                                         }
343 break;
344 case 13:
345
346 # line 317 "./dtimep.lex"
347                 {
348                                         tw.tw_hour = CVT1OR2; cp++;
349                                         if (tw.tw_hour == 12)
350                                                 tw.tw_hour = 0;
351                                         tw.tw_min  = CVT1OR2; cp++;
352                                         tw.tw_sec  = CVT1OR2;
353                                         BEGIN Z;
354                                         }
355 break;
356 case 14:
357
358 # line 325 "./dtimep.lex"
359                         {
360                                         tw.tw_hour = CVT1OR2; cp++;
361                                         if (tw.tw_hour != 12)
362                                                 tw.tw_hour += 12;
363                                         tw.tw_min  = CVT1OR2;
364                                         BEGIN Z;
365                                         }
366 break;
367 case 15:
368
369 # line 332 "./dtimep.lex"
370                 {
371                                         tw.tw_hour = CVT1OR2; cp++;
372                                         if (tw.tw_hour != 12)
373                                                 tw.tw_hour += 12;
374                                         tw.tw_min  = CVT1OR2; cp++;
375                                         tw.tw_sec  = CVT1OR2;
376                                         BEGIN Z;
377                                         }
378 break;
379 case 16:
380
381 # line 340 "./dtimep.lex"
382                 {
383                                         tw.tw_hour = CVT2; cp+=2;
384                                         tw.tw_min  = CVT2; cp+=2;
385                                         tw.tw_sec  = CVT2; cp+=2;
386                                         BEGIN Z;
387                                         }
388 break;
389 case 17:
390
391 # line 346 "./dtimep.lex"
392                         {
393                                         /*
394                                          * Luckly, 4 digit times in the range
395                                          * 1960-1999 aren't legal as hour
396                                          * and minutes.
397                                          */
398                                         tw.tw_year = CVT4; cp+=4;
399                                         }
400 break;
401 case 18:
402
403 # line 354 "./dtimep.lex"
404                 {
405                                         if (tw.tw_hour || tw.tw_min 
406                                                             || tw.tw_sec) {
407                                             tw.tw_year = CVT4; cp+=4;
408                                             tw.tw_zone = 0;
409                                         } else {
410                                             tw.tw_hour = CVT2; cp+=2;
411                                             tw.tw_min  = CVT2; cp+=2;
412                                             BEGIN Z;
413                                         }
414                                         }
415 break;
416 case 19:
417
418 # line 365 "./dtimep.lex"
419                         ZONE(0 * 60);
420 break;
421 case 20:
422
423 # line 366 "./dtimep.lex"
424                         ZONE(0 * 60);
425 break;
426 case 21:
427
428 # line 367 "./dtimep.lex"
429                         ZONE(2 * 60);
430 break;
431 case 22:
432
433 # line 368 "./dtimep.lex"
434                         ZONED(2 * 60);
435 break;
436 case 23:
437
438 # line 369 "./dtimep.lex"
439                         ZONE(-5 * 60);
440 break;
441 case 24:
442
443 # line 370 "./dtimep.lex"
444                         ZONED(-5 * 60);
445 break;
446 case 25:
447
448 # line 371 "./dtimep.lex"
449                         ZONE(-6 * 60);
450 break;
451 case 26:
452
453 # line 372 "./dtimep.lex"
454                         ZONED(-6 * 60);
455 break;
456 case 27:
457
458 # line 373 "./dtimep.lex"
459                         ZONE(-7 * 60);
460 break;
461 case 28:
462
463 # line 374 "./dtimep.lex"
464                         ZONED(-7 * 60);
465 break;
466 case 29:
467
468 # line 375 "./dtimep.lex"
469                         ZONE(-8 * 60);
470 break;
471 case 30:
472
473 # line 376 "./dtimep.lex"
474                         ZONED(-8 * 60);
475 break;
476 case 31:
477
478 # line 377 "./dtimep.lex"
479                         ZONE(-(3 * 60 + 30));
480 break;
481 case 32:
482
483 # line 378 "./dtimep.lex"
484                         ZONE(-4 * 60);
485 break;
486 case 33:
487
488 # line 379 "./dtimep.lex"
489                         ZONED(-4 * 60);
490 break;
491 case 34:
492
493 # line 380 "./dtimep.lex"
494                         ZONE(-9 * 60);
495 break;
496 case 35:
497
498 # line 381 "./dtimep.lex"
499                         ZONED(-9 * 60);
500 break;
501 case 36:
502
503 # line 382 "./dtimep.lex"
504                         ZONE(-10 * 60);
505 break;
506 case 37:
507
508 # line 383 "./dtimep.lex"
509                         ZONED(-10 * 60);
510 break;
511 case 38:
512
513 # line 384 "./dtimep.lex"
514                         ZONED(-1 * 60);
515 break;
516 case 39:
517
518 # line 385 "./dtimep.lex"
519                         {
520                                         tw.tw_zone = 60 * (('a'-1) - LC(*cp));
521                                         EXPZONE; 
522                                         }
523 break;
524 case 40:
525
526 # line 389 "./dtimep.lex"
527                         {
528                                         tw.tw_zone = 60 * ('a' - LC(*cp));
529                                         EXPZONE; 
530                                         }
531 break;
532 case 41:
533
534 # line 393 "./dtimep.lex"
535                         {
536                                         tw.tw_zone = 60 * (LC(*cp) - 'm');
537                                         EXPZONE; 
538                                         }
539 break;
540 case 42:
541
542 # line 397 "./dtimep.lex"
543                 {
544                                         cp++;
545                                         tw.tw_zone = ((cp[0] * 10 + cp[1])
546                                                      -('0' * 10   + '0'))*60
547                                                     +((cp[2] * 10 + cp[3])
548                                                      -('0' * 10   + '0'));
549                                         EXPZONE;
550 #ifdef  DSTXXX
551                                         zonehack (&tw);
552 #endif  /* DSTXXX */
553                                         cp += 4;
554                                         }
555 break;
556 case 43:
557
558 # line 409 "./dtimep.lex"
559                 {
560                                         cp++;
561                                         tw.tw_zone = (('0' * 10   + '0')
562                                                      -(cp[0] * 10 + cp[1]))*60
563                                                     +(('0' * 10   + '0')
564                                                      -(cp[2] * 10 + cp[3]));
565                                         EXPZONE;
566 #ifdef  DSTXXX
567                                         zonehack (&tw);
568 #endif  /* DSTXXX */
569                                         cp += 4;
570                                         }
571 break;
572 case 44:
573
574 # line 421 "./dtimep.lex"
575                 {
576                                         SKIPD;
577                                         tw.tw_year = CVT4; cp+=4;
578                                         }
579 break;
580 case 45:
581
582 # line 425 "./dtimep.lex"
583 case 46:
584
585 # line 426 "./dtimep.lex"
586 ;
587 break;
588         default: return(0);
589 } }
590 /* end of yylex */
591 int yyvstop[] = {
592 0,
593
594 46,
595 0, 
596
597 45,
598 0, 
599
600 46,
601 0, 
602
603 39,
604 0, 
605
606 39,
607 0, 
608
609 39,
610 0, 
611
612 39,
613 0, 
614
615 39,
616 0, 
617
618 39,
619 0, 
620
621 39,
622 0, 
623
624 39,
625 0, 
626
627 39,
628 0, 
629
630 40,
631 0, 
632
633 40,
634 0, 
635
636 41,
637 0, 
638
639 41,
640 0, 
641
642 41,
643 0, 
644
645 41,
646 0, 
647
648 41,
649 0, 
650
651 41,
652 0, 
653
654 41,
655 0, 
656
657 41,
658 0, 
659
660 41,
661 0, 
662
663 19,
664 0, 
665
666 4,
667 0, 
668
669 4,
670 0, 
671
672 11,
673 0, 
674
675 1,
676 0, 
677
678 1,
679 0, 
680
681 1,
682 0, 
683
684 1,
685 0, 
686
687 1,
688 0, 
689
690 1,
691 0, 
692
693 1,
694 0, 
695
696 33,
697 0, 
698
699 32,
700 0, 
701
702 38,
703 0, 
704
705 26,
706 0, 
707
708 25,
709 0, 
710
711 24,
712 0, 
713
714 23,
715 0, 
716
717 20,
718 0, 
719
720 37,
721 0, 
722
723 36,
724 0, 
725
726 22,
727 0, 
728
729 21,
730 0, 
731
732 28,
733 0, 
734
735 27,
736 0, 
737
738 31,
739 0, 
740
741 30,
742 0, 
743
744 29,
745 0, 
746
747 35,
748 0, 
749
750 34,
751 0, 
752
753 4,
754 0, 
755
756 4,
757 0, 
758
759 4,
760 0, 
761
762 18,
763 0, 
764
765 11,
766 0, 
767
768 11,
769 0, 
770
771 6,
772 0, 
773
774 6,
775 0, 
776
777 6,
778 0, 
779
780 6,
781 0, 
782
783 6,
784 0, 
785
786 6,
787 0, 
788
789 6,
790 0, 
791
792 6,
793 0, 
794
795 6,
796 0, 
797
798 6,
799 0, 
800
801 6,
802 0, 
803
804 6,
805 0, 
806
807 17,
808 18,
809 0, 
810
811 1,
812 0, 
813
814 2,
815 0, 
816
817 18,
818 0, 
819
820 10,
821 0, 
822
823 12,
824 0, 
825
826 14,
827 0, 
828
829 6,
830 0, 
831
832 17,
833 18,
834 0, 
835
836 8,
837 0, 
838
839 44,
840 0, 
841
842 42,
843 0, 
844
845 43,
846 0, 
847
848 2,
849 0, 
850
851 3,
852 0, 
853
854 16,
855 0, 
856
857 10,
858 0, 
859
860 10,
861 0, 
862
863 5,
864 0, 
865
866 8,
867 0, 
868
869 8,
870 0, 
871
872 1,
873 0, 
874
875 3,
876 0, 
877
878 3,
879 0, 
880
881 13,
882 0, 
883
884 15,
885 0, 
886
887 6,
888 0, 
889
890 5,
891 0, 
892
893 5,
894 0, 
895
896 5,
897 0, 
898
899 5,
900 0, 
901
902 7,
903 0, 
904
905 9,
906 0, 
907
908 7,
909 0, 
910
911 7,
912 0, 
913 0};
914 # define YYTYPE int
915 struct yywork { YYTYPE verify, advance; } yycrank[] = {
916 0,0,    0,0,    0,0,    0,0,    
917 0,0,    0,0,    0,0,    0,0,    
918 0,0,    0,0,    1,5,    1,6,    
919 5,5,    0,0,    0,0,    0,0,    
920 0,0,    0,0,    0,0,    0,0,    
921 0,0,    0,0,    0,0,    0,0,    
922 0,0,    0,0,    0,0,    0,0,    
923 0,0,    0,0,    0,0,    0,0,    
924 0,0,    1,5,    0,0,    5,5,    
925 3,21,   3,6,    0,0,    0,0,    
926 0,0,    1,7,    0,0,    0,0,    
927 0,0,    0,0,    0,0,    0,0,    
928 0,0,    1,8,    1,9,    1,8,    
929 1,10,   1,10,   1,10,   1,10,   
930 1,10,   1,10,   1,10,   3,21,   
931 9,63,   22,83,  22,83,  0,0,    
932 0,0,    0,0,    0,0,    3,7,    
933 0,0,    0,0,    3,22,   0,0,    
934 3,23,   0,0,    0,0,    3,8,    
935 3,9,    3,8,    3,10,   3,10,   
936 3,10,   3,10,   3,10,   3,10,   
937 3,10,   10,64,  10,64,  10,64,  
938 10,64,  10,64,  10,64,  10,64,  
939 10,64,  10,64,  10,64,  0,0,    
940 0,0,    0,0,    1,11,   15,72,  
941 59,143, 1,12,   14,70,  1,13,   
942 12,67,  13,68,  17,75,  1,14,   
943 19,79,  20,81,  1,15,   1,16,   
944 1,17,   15,73,  11,65,  16,74,  
945 1,18,   1,19,   13,69,  11,66,  
946 1,20,   19,80,  14,71,  25,99,  
947 3,24,   3,25,   3,26,   3,27,   
948 3,28,   3,29,   3,30,   3,31,   
949 3,32,   3,33,   3,34,   3,34,   
950 3,35,   3,36,   3,37,   3,38,   
951 3,39,   3,39,   3,40,   3,41,   
952 3,42,   3,39,   3,43,   3,39,   
953 3,44,   7,45,   8,50,   18,76,  
954 26,100, 28,102, 30,104, 18,77,  
955 7,46,   24,97,  42,114, 45,117, 
956 31,105, 21,21,  7,47,   7,48,   
957 23,84,  23,84,  7,49,   26,101, 
958 28,103, 24,65,  38,112, 18,78,  
959 24,98,  8,50,   24,66,  31,106, 
960 36,74,  46,118, 49,123, 56,139, 
961 36,111, 57,140, 55,137, 60,144, 
962 21,21,  38,113, 8,51,   55,138, 
963 8,52,   8,53,   8,53,   8,53,   
964 8,53,   8,53,   8,53,   8,53,   
965 8,53,   8,53,   8,53,   8,54,   
966 21,82,  21,82,  21,82,  21,82,  
967 21,82,  21,82,  21,82,  21,82,  
968 21,82,  21,82,  47,119, 61,145, 
969 62,146, 23,85,  23,86,  23,87,  
970 44,115, 23,88,  35,72,  23,89,  
971 23,90,  35,109, 23,91,  50,50,  
972 33,70,  23,92,  23,93,  33,107, 
973 23,94,  58,141, 47,120, 44,116, 
974 35,73,  23,95,  65,148, 48,121, 
975 35,110, 23,96,  8,55,   51,124, 
976 66,149, 8,56,   33,108, 8,57,   
977 33,71,  67,150, 50,50,  8,58,   
978 48,122, 58,142, 8,59,   8,60,   
979 8,61,   68,151, 69,152, 70,153, 
980 8,62,   73,158, 71,154, 50,124, 
981 71,155, 74,159, 51,124, 52,134, 
982 52,134, 52,134, 52,134, 52,134, 
983 52,134, 52,134, 52,134, 52,134, 
984 52,134, 75,160, 76,161, 77,162, 
985 78,163, 79,164, 51,133, 51,133, 
986 51,133, 51,133, 51,133, 51,133, 
987 51,133, 51,133, 51,133, 51,133, 
988 53,135, 53,135, 53,135, 53,135, 
989 53,135, 53,135, 53,135, 53,135, 
990 53,135, 53,135, 54,136, 54,136, 
991 54,136, 54,136, 54,136, 54,136, 
992 54,136, 54,136, 54,136, 54,136, 
993 72,156, 80,165, 81,166, 50,125, 
994 93,111, 85,97,  50,126, 72,157, 
995 50,127, 97,170, 91,107, 92,109, 
996 50,128, 64,50,  98,171, 50,129, 
997 50,130, 50,131, 99,172, 51,55,  
998 85,98,  50,132, 51,56,  100,173,        
999 51,57,  91,108, 92,110, 101,174,        
1000 51,58,  102,175,        103,176,        51,59,  
1001 51,60,  51,61,  104,177,        105,178,        
1002 64,50,  51,62,  63,135, 63,135, 
1003 63,135, 63,135, 63,135, 63,135, 
1004 63,147, 63,147, 63,147, 63,147, 
1005 106,179,        64,51,  107,180,        64,52,  
1006 82,167, 82,167, 82,167, 82,167, 
1007 82,167, 82,167, 82,167, 82,167, 
1008 82,167, 82,167, 64,54,  83,168, 
1009 83,168, 83,168, 83,168, 83,168, 
1010 83,168, 83,168, 83,168, 83,168, 
1011 83,168, 84,169, 84,169, 84,169, 
1012 84,169, 84,169, 84,169, 84,169, 
1013 84,169, 84,169, 84,169, 108,181,        
1014 109,182,        110,183,        111,184,        112,185,        
1015 113,186,        115,187,        116,188,        117,189,        
1016 118,190,        119,191,        120,192,        121,193,        
1017 122,194,        123,195,        124,124,        126,198,        
1018 125,196,        64,55,  127,199,        128,200,        
1019 64,56,  125,197,        64,57,  129,202,        
1020 130,203,        131,204,        64,58,  132,205,        
1021 133,206,        64,59,  64,60,  64,61,  
1022 137,216,        138,217,        139,218,        64,62,  
1023 140,219,        124,124,        141,220,        128,201,        
1024 134,206,        135,210,        135,210,        135,210,        
1025 135,210,        135,210,        135,210,        135,210,        
1026 135,210,        135,210,        135,210,        133,206,        
1027 142,221,        143,223,        142,222,        144,225,        
1028 145,226,        146,227,        153,236,        155,157,        
1029 143,224,        158,238,        159,239,        134,206,        
1030 133,207,        160,240,        162,242,        133,208,        
1031 133,208,        133,208,        133,208,        133,208,        
1032 133,208,        133,208,        133,208,        133,208,        
1033 133,208,        148,229,        134,207,        134,209,        
1034 134,209,        134,209,        134,209,        134,209,        
1035 134,209,        134,209,        134,209,        134,209,        
1036 134,209,        136,211,        147,228,        147,228,        
1037 147,228,        147,228,        147,228,        147,228,        
1038 147,228,        147,228,        147,228,        147,228,        
1039 148,229,        149,229,        124,125,        150,229,        
1040 154,229,        124,126,        163,243,        124,127,        
1041 190,252,        192,254,        196,258,        124,128,        
1042 136,211,        191,250,        124,129,        124,130,        
1043 124,131,        151,229,        156,229,        152,234,        
1044 124,132,        157,229,        161,234,        164,234,        
1045 149,229,        165,234,        150,229,        154,229,        
1046 136,212,        136,212,        136,212,        136,212,        
1047 136,212,        136,212,        136,212,        136,212,        
1048 136,212,        136,212,        136,213,        166,234,        
1049 151,229,        156,229,        152,234,        194,250,        
1050 157,229,        161,234,        164,234,        189,250,        
1051 165,234,        195,250,        193,250,        197,259,        
1052 198,260,        199,261,        152,234,        200,262,        
1053 203,267,        161,234,        164,234,        201,263,        
1054 165,234,        201,264,        166,234,        167,247,        
1055 167,247,        167,247,        167,247,        167,247,        
1056 167,247,        167,247,        167,247,        167,247,        
1057 167,247,        148,230,        166,234,        204,268,        
1058 205,269,        136,214,        168,248,        168,248,        
1059 168,248,        168,248,        168,248,        168,248,        
1060 168,248,        168,248,        168,248,        168,248,        
1061 206,206,        191,253,        208,207,        209,207,        
1062 136,215,        212,213,        214,274,        150,232,        
1063 169,249,        169,249,        169,249,        169,249,        
1064 169,249,        169,249,        169,249,        169,249,        
1065 169,249,        169,249,        189,251,        202,265,        
1066 156,237,        149,231,        152,235,        206,206,        
1067 210,271,        211,211,        202,266,        215,275,        
1068 154,157,        194,256,        195,257,        220,283,        
1069 222,224,        225,285,        151,233,        193,255,        
1070 226,286,        227,287,        230,157,        231,290,        
1071 164,244,        232,291,        161,241,        165,245,        
1072 233,292,        235,293,        236,294,        210,271,        
1073 211,211,        237,157,        238,295,        239,296,        
1074 166,246,        207,270,        207,270,        207,270,        
1075 207,270,        207,270,        207,270,        207,270,        
1076 207,270,        207,270,        207,270,        210,272,        
1077 210,272,        210,272,        210,272,        210,272,        
1078 210,272,        210,272,        210,272,        210,272,        
1079 210,272,        213,273,        213,273,        213,273,        
1080 213,273,        213,273,        213,273,        213,273,        
1081 213,273,        213,273,        213,273,        240,297,        
1082 228,288,        234,234,        241,298,        242,299,        
1083 243,300,        244,301,        245,302,        216,276,        
1084 246,303,        247,304,        247,304,        247,304,        
1085 247,304,        247,304,        247,304,        247,304,        
1086 247,304,        247,304,        247,304,        250,307,        
1087 251,308,        252,309,        217,276,        228,288,        
1088 234,234,        253,310,        254,311,        255,312,        
1089 256,313,        211,214,        216,276,        257,314,        
1090 276,330,        258,266,        260,266,        279,224,        
1091 218,276,        265,266,        280,332,        281,333,        
1092 282,334,        283,335,        284,224,        216,277,        
1093 211,215,        217,276,        216,278,        216,278,        
1094 216,278,        216,278,        216,278,        216,278,        
1095 216,278,        216,278,        216,278,        216,278,        
1096 258,266,        260,266,        217,277,        218,276,        
1097 265,266,        217,278,        217,278,        217,278,        
1098 217,278,        217,278,        217,278,        217,278,        
1099 217,278,        217,278,        217,278,        219,276,        
1100 218,277,        259,266,        285,336,        218,278,        
1101 218,278,        218,278,        218,278,        218,278,        
1102 218,278,        218,278,        218,278,        218,278,        
1103 218,278,        264,266,        263,266,        286,337,        
1104 287,338,        290,157,        291,342,        292,343,        
1105 293,344,        294,345,        219,276,        296,346,        
1106 259,266,        221,276,        266,266,        271,271,        
1107 297,347,        274,274,        262,266,        216,279,        
1108 298,348,        299,349,        301,350,        219,277,        
1109 264,266,        263,266,        219,278,        219,278,        
1110 219,278,        219,278,        219,278,        219,278,        
1111 219,278,        219,278,        219,278,        219,278,        
1112 221,276,        266,266,        271,271,        223,276,        
1113 274,274,        262,266,        260,317,        265,320,        
1114 218,281,        258,315,        217,280,        261,266,        
1115 268,266,        221,277,        269,266,        275,275,        
1116 221,278,        221,278,        221,278,        221,278,        
1117 221,278,        221,278,        221,278,        221,278,        
1118 221,278,        221,278,        223,276,        302,351,        
1119 303,352,        224,276,        267,266,        288,288,        
1120 308,353,        310,354,        261,266,        268,266,        
1121 312,355,        269,266,        275,275,        223,277,        
1122 229,229,        313,356,        223,278,        223,278,        
1123 223,278,        223,278,        223,278,        223,278,        
1124 223,278,        223,278,        223,278,        223,278,        
1125 224,276,        267,266,        288,288,        314,357,        
1126 219,282,        264,266,        315,266,        316,358,        
1127 317,359,        259,316,        318,360,        229,229,        
1128 319,361,        224,277,        320,266,        321,362,        
1129 224,278,        224,278,        224,278,        224,278,        
1130 224,278,        224,278,        224,278,        224,278,        
1131 224,278,        224,278,        263,266,        229,289,        
1132 229,289,        229,289,        229,289,        229,289,        
1133 229,289,        229,289,        229,289,        229,289,        
1134 229,289,        221,224,        262,319,        322,363,        
1135 323,364,        223,284,        248,305,        248,305,        
1136 248,305,        248,305,        248,305,        248,305,        
1137 248,305,        248,305,        248,305,        248,305,        
1138 249,306,        249,306,        249,306,        249,306,        
1139 249,306,        249,306,        249,306,        249,306,        
1140 249,306,        249,306,        268,322,        328,368,        
1141 261,318,        329,369,        330,370,        332,224,        
1142 273,326,        269,323,        267,321,        270,324,        
1143 270,324,        270,324,        270,324,        270,324,        
1144 270,324,        270,324,        270,324,        270,324,        
1145 270,324,        272,325,        272,325,        272,325,        
1146 272,325,        272,325,        272,325,        272,325,        
1147 272,325,        272,325,        272,325,        273,326,        
1148 333,373,        334,374,        277,277,        278,331,        
1149 278,331,        278,331,        278,331,        278,331,        
1150 278,331,        278,331,        278,331,        278,331,        
1151 278,331,        324,365,        325,325,        273,327,        
1152 273,327,        273,327,        273,327,        273,327,        
1153 273,327,        273,327,        273,327,        273,327,        
1154 273,327,        277,277,        335,375,        336,376,        
1155 289,339,        337,377,        338,378,        341,340,        
1156 342,380,        343,381,        344,234,        345,157,        
1157 324,365,        325,325,        346,382,        347,157,        
1158 348,383,        277,278,        277,278,        277,278,        
1159 277,278,        277,278,        277,278,        277,278,        
1160 277,278,        277,278,        277,278,        289,339,        
1161 324,366,        324,366,        324,366,        324,366,        
1162 324,366,        324,366,        324,366,        324,366,        
1163 324,366,        324,366,        326,326,        289,340,        
1164 273,328,        327,326,        331,371,        289,341,        
1165 289,341,        289,341,        289,341,        289,341,        
1166 289,341,        289,341,        289,341,        289,341,        
1167 289,341,        339,339,        340,379,        273,329,        
1168 349,384,        350,385,        352,386,        353,250,        
1169 354,387,        326,326,        355,388,        357,389,        
1170 327,326,        331,371,        358,266,        359,390,        
1171 360,391,        361,392,        362,393,        363,394,        
1172 364,395,        365,365,        367,396,        373,399,        
1173 339,339,        340,379,        326,367,        374,400,        
1174 375,224,        331,372,        331,372,        331,372,        
1175 331,372,        331,372,        331,372,        331,372,        
1176 331,372,        331,372,        331,372,        368,368,        
1177 369,369,        370,370,        371,371,        376,401,        
1178 365,365,        366,365,        366,365,        366,365,        
1179 366,365,        366,365,        366,365,        366,365,        
1180 366,365,        366,365,        366,365,        377,224,        
1181 378,402,        384,404,        386,405,        389,406,        
1182 390,407,        391,408,        368,368,        369,369,        
1183 370,370,        371,371,        392,266,        379,379,        
1184 393,409,        394,266,        395,410,        397,412,        
1185 402,413,        410,415,        326,328,        398,371,        
1186 412,412,        327,328,        372,398,        372,398,        
1187 372,398,        372,398,        372,398,        372,398,        
1188 372,398,        372,398,        372,398,        372,398,        
1189 0,0,    326,329,        379,379,        0,0,    
1190 327,329,        396,411,        396,411,        396,411,        
1191 396,411,        0,0,    398,371,        412,412,        
1192 0,0,    0,0,    0,0,    414,417,        
1193 417,417,        0,0,    379,403,        379,403,        
1194 379,403,        379,403,        379,403,        379,403,        
1195 379,403,        379,403,        379,403,        379,403,        
1196 403,414,        403,414,        403,414,        403,414,        
1197 403,414,        403,414,        403,414,        403,414,        
1198 403,414,        403,414,        414,417,        417,417,        
1199 0,0,    0,0,    371,397,        411,416,        
1200 411,416,        411,416,        411,416,        411,416,        
1201 411,416,        411,416,        411,416,        411,416,        
1202 411,416,        0,0,    414,418,        414,418,        
1203 414,418,        414,418,        414,418,        414,418,        
1204 414,418,        414,418,        414,418,        414,418,        
1205 418,417,        418,417,        418,417,        418,417,        
1206 418,417,        418,417,        418,417,        418,417,        
1207 418,417,        418,417,        0,0,    0,0,    
1208 0,0};
1209 struct yysvf yysvec[] = {
1210 0,      0,      0,
1211 yycrank+1,      0,              0,      
1212 yycrank+0,      yysvec+1,       0,      
1213 yycrank+27,     0,              0,      
1214 yycrank+0,      yysvec+3,       0,      
1215 yycrank+3,      0,              yyvstop+1,
1216 yycrank+0,      0,              yyvstop+3,
1217 yycrank+47,     0,              0,      
1218 yycrank+141,    0,              0,      
1219 yycrank+3,      yysvec+8,       0,      
1220 yycrank+37,     yysvec+8,       0,      
1221 yycrank+2,      0,              0,      
1222 yycrank+3,      0,              0,      
1223 yycrank+4,      0,              0,      
1224 yycrank+5,      0,              0,      
1225 yycrank+2,      0,              0,      
1226 yycrank+4,      0,              0,      
1227 yycrank+7,      0,              0,      
1228 yycrank+54,     0,              0,      
1229 yycrank+4,      0,              0,      
1230 yycrank+8,      0,              0,      
1231 yycrank+152,    0,              yyvstop+5,
1232 yycrank+13,     0,              0,      
1233 yycrank+116,    0,              0,      
1234 yycrank+57,     0,              yyvstop+7,
1235 yycrank+8,      0,              yyvstop+9,
1236 yycrank+52,     0,              yyvstop+11,
1237 yycrank+0,      yysvec+12,      yyvstop+13,
1238 yycrank+53,     0,              yyvstop+15,
1239 yycrank+0,      yysvec+13,      yyvstop+17,
1240 yycrank+45,     0,              yyvstop+19,
1241 yycrank+60,     0,              yyvstop+21,
1242 yycrank+0,      0,              yyvstop+23,
1243 yycrank+127,    0,              0,      
1244 yycrank+0,      0,              yyvstop+25,
1245 yycrank+121,    0,              yyvstop+27,
1246 yycrank+65,     0,              yyvstop+29,
1247 yycrank+0,      yysvec+17,      yyvstop+31,
1248 yycrank+70,     0,              yyvstop+33,
1249 yycrank+0,      0,              yyvstop+35,
1250 yycrank+0,      yysvec+18,      yyvstop+37,
1251 yycrank+0,      yysvec+19,      yyvstop+39,
1252 yycrank+42,     0,              yyvstop+41,
1253 yycrank+0,      yysvec+20,      yyvstop+43,
1254 yycrank+116,    0,              yyvstop+45,
1255 yycrank+45,     0,              0,      
1256 yycrank+66,     0,              0,      
1257 yycrank+113,    0,              0,      
1258 yycrank+131,    0,              0,      
1259 yycrank+77,     0,              0,      
1260 yycrank+214,    0,              0,      
1261 yycrank+230,    0,              0,      
1262 yycrank+215,    0,              0,      
1263 yycrank+240,    yysvec+8,       0,      
1264 yycrank+250,    0,              0,      
1265 yycrank+70,     0,              0,      
1266 yycrank+78,     0,              0,      
1267 yycrank+80,     0,              0,      
1268 yycrank+132,    0,              0,      
1269 yycrank+3,      0,              0,      
1270 yycrank+72,     0,              0,      
1271 yycrank+112,    0,              0,      
1272 yycrank+111,    0,              0,      
1273 yycrank+298,    yysvec+8,       0,      
1274 yycrank+312,    0,              0,      
1275 yycrank+120,    0,              0,      
1276 yycrank+137,    0,              0,      
1277 yycrank+146,    0,              0,      
1278 yycrank+155,    0,              0,      
1279 yycrank+149,    0,              0,      
1280 yycrank+145,    0,              0,      
1281 yycrank+150,    0,              0,      
1282 yycrank+194,    0,              0,      
1283 yycrank+147,    0,              0,      
1284 yycrank+143,    0,              0,      
1285 yycrank+157,    0,              0,      
1286 yycrank+158,    0,              0,      
1287 yycrank+163,    0,              0,      
1288 yycrank+166,    0,              0,      
1289 yycrank+160,    0,              0,      
1290 yycrank+208,    0,              0,      
1291 yycrank+210,    0,              0,      
1292 yycrank+312,    0,              0,      
1293 yycrank+323,    0,              0,      
1294 yycrank+333,    0,              0,      
1295 yycrank+213,    0,              0,      
1296 yycrank+0,      yysvec+25,      0,      
1297 yycrank+0,      yysvec+26,      0,      
1298 yycrank+0,      yysvec+28,      0,      
1299 yycrank+0,      yysvec+30,      0,      
1300 yycrank+0,      yysvec+31,      0,      
1301 yycrank+218,    0,              0,      
1302 yycrank+219,    0,              0,      
1303 yycrank+197,    0,              0,      
1304 yycrank+0,      yysvec+38,      0,      
1305 yycrank+0,      yysvec+42,      0,      
1306 yycrank+0,      yysvec+44,      0,      
1307 yycrank+201,    0,              0,      
1308 yycrank+206,    0,              0,      
1309 yycrank+210,    0,              0,      
1310 yycrank+215,    0,              0,      
1311 yycrank+219,    0,              0,      
1312 yycrank+221,    0,              0,      
1313 yycrank+222,    0,              0,      
1314 yycrank+226,    0,              0,      
1315 yycrank+227,    0,              0,      
1316 yycrank+240,    0,              0,      
1317 yycrank+242,    0,              0,      
1318 yycrank+275,    0,              0,      
1319 yycrank+276,    0,              0,      
1320 yycrank+277,    0,              0,      
1321 yycrank+278,    0,              0,      
1322 yycrank+279,    0,              0,      
1323 yycrank+280,    0,              0,      
1324 yycrank+0,      0,              yyvstop+47,
1325 yycrank+281,    0,              0,      
1326 yycrank+282,    0,              0,      
1327 yycrank+294,    0,              0,      
1328 yycrank+290,    0,              0,      
1329 yycrank+285,    0,              0,      
1330 yycrank+292,    0,              0,      
1331 yycrank+286,    0,              0,      
1332 yycrank+303,    0,              0,      
1333 yycrank+305,    0,              0,      
1334 yycrank+397,    0,              0,      
1335 yycrank+296,    0,              0,      
1336 yycrank+306,    0,              0,      
1337 yycrank+309,    0,              0,      
1338 yycrank+314,    0,              0,      
1339 yycrank+318,    0,              0,      
1340 yycrank+305,    0,              0,      
1341 yycrank+318,    0,              0,      
1342 yycrank+318,    0,              0,      
1343 yycrank+411,    0,              yyvstop+49,
1344 yycrank+423,    0,              yyvstop+51,
1345 yycrank+385,    0,              0,      
1346 yycrank+472,    0,              yyvstop+53,
1347 yycrank+310,    0,              0,      
1348 yycrank+322,    0,              0,      
1349 yycrank+327,    0,              0,      
1350 yycrank+330,    0,              0,      
1351 yycrank+320,    0,              0,      
1352 yycrank+336,    0,              0,      
1353 yycrank+331,    0,              0,      
1354 yycrank+329,    0,              0,      
1355 yycrank+332,    0,              0,      
1356 yycrank+337,    0,              0,      
1357 yycrank+434,    0,              0,      
1358 yycrank+460,    0,              0,      
1359 yycrank+484,    0,              0,      
1360 yycrank+486,    0,              0,      
1361 yycrank+500,    0,              0,      
1362 yycrank+502,    0,              yyvstop+55,
1363 yycrank+333,    yysvec+149,     0,      
1364 yycrank+487,    0,              0,      
1365 yycrank+350,    yysvec+150,     0,      
1366 yycrank+501,    0,              0,      
1367 yycrank+504,    0,              0,      
1368 yycrank+353,    yysvec+152,     yyvstop+57,
1369 yycrank+353,    yysvec+150,     0,      
1370 yycrank+346,    yysvec+157,     0,      
1371 yycrank+505,    0,              yyvstop+59,
1372 yycrank+342,    yysvec+157,     0,      
1373 yycrank+398,    yysvec+152,     yyvstop+61,
1374 yycrank+506,    0,              yyvstop+63,
1375 yycrank+508,    0,              yyvstop+65,
1376 yycrank+522,    0,              yyvstop+67,
1377 yycrank+507,    0,              0,      
1378 yycrank+522,    0,              0,      
1379 yycrank+540,    0,              0,      
1380 yycrank+0,      0,              yyvstop+69,
1381 yycrank+0,      0,              yyvstop+71,
1382 yycrank+0,      0,              yyvstop+73,
1383 yycrank+0,      0,              yyvstop+75,
1384 yycrank+0,      0,              yyvstop+77,
1385 yycrank+0,      0,              yyvstop+79,
1386 yycrank+0,      0,              yyvstop+81,
1387 yycrank+0,      0,              yyvstop+83,
1388 yycrank+0,      0,              yyvstop+85,
1389 yycrank+0,      0,              yyvstop+87,
1390 yycrank+0,      0,              yyvstop+89,
1391 yycrank+0,      0,              yyvstop+91,
1392 yycrank+0,      0,              yyvstop+93,
1393 yycrank+0,      0,              yyvstop+95,
1394 yycrank+0,      0,              yyvstop+97,
1395 yycrank+0,      0,              yyvstop+99,
1396 yycrank+0,      0,              yyvstop+101,
1397 yycrank+0,      0,              yyvstop+103,
1398 yycrank+0,      0,              yyvstop+105,
1399 yycrank+498,    0,              0,      
1400 yycrank+400,    yysvec+189,     0,      
1401 yycrank+464,    0,              0,      
1402 yycrank+401,    yysvec+189,     0,      
1403 yycrank+501,    0,              0,      
1404 yycrank+494,    0,              0,      
1405 yycrank+500,    0,              0,      
1406 yycrank+388,    0,              0,      
1407 yycrank+440,    0,              0,      
1408 yycrank+445,    0,              0,      
1409 yycrank+447,    0,              0,      
1410 yycrank+437,    0,              0,      
1411 yycrank+443,    0,              0,      
1412 yycrank+485,    0,              0,      
1413 yycrank+430,    0,              0,      
1414 yycrank+451,    0,              0,      
1415 yycrank+456,    0,              0,      
1416 yycrank+571,    0,              yyvstop+107,
1417 yycrank+585,    0,              0,      
1418 yycrank+537,    yysvec+206,     yyvstop+109,
1419 yycrank+536,    yysvec+206,     yyvstop+111,
1420 yycrank+595,    0,              yyvstop+113,
1421 yycrank+596,    0,              yyvstop+115,
1422 yycrank+527,    yysvec+211,     yyvstop+117,
1423 yycrank+605,    0,              0,      
1424 yycrank+477,    0,              0,      
1425 yycrank+498,    0,              0,      
1426 yycrank+662,    0,              yyvstop+119,
1427 yycrank+677,    0,              yyvstop+121,
1428 yycrank+691,    0,              yyvstop+123,
1429 yycrank+726,    0,              yyvstop+125,
1430 yycrank+494,    yysvec+217,     yyvstop+127,
1431 yycrank+752,    0,              yyvstop+129,
1432 yycrank+511,    yysvec+218,     yyvstop+131,
1433 yycrank+778,    0,              yyvstop+133,
1434 yycrank+804,    0,              yyvstop+135,
1435 yycrank+512,    yysvec+218,     yyvstop+137,
1436 yycrank+505,    yysvec+224,     yyvstop+139,
1437 yycrank+501,    yysvec+224,     yyvstop+141,
1438 yycrank+655,    yysvec+210,     yyvstop+143,
1439 yycrank+815,    0,              0,      
1440 yycrank+510,    0,              0,      
1441 yycrank+504,    0,              0,      
1442 yycrank+512,    0,              0,      
1443 yycrank+507,    0,              0,      
1444 yycrank+656,    0,              yyvstop+146,
1445 yycrank+528,    0,              0,      
1446 yycrank+529,    0,              0,      
1447 yycrank+525,    0,              0,      
1448 yycrank+533,    0,              0,      
1449 yycrank+522,    0,              0,      
1450 yycrank+565,    0,              0,      
1451 yycrank+552,    0,              0,      
1452 yycrank+566,    0,              0,      
1453 yycrank+571,    0,              0,      
1454 yycrank+554,    0,              0,      
1455 yycrank+570,    0,              0,      
1456 yycrank+571,    0,              0,      
1457 yycrank+625,    0,              0,      
1458 yycrank+830,    0,              0,      
1459 yycrank+840,    0,              0,      
1460 yycrank+639,    0,              yyvstop+148,
1461 yycrank+587,    0,              0,      
1462 yycrank+588,    0,              0,      
1463 yycrank+575,    0,              0,      
1464 yycrank+593,    0,              0,      
1465 yycrank+576,    0,              0,      
1466 yycrank+592,    0,              0,      
1467 yycrank+594,    0,              0,      
1468 yycrank+688,    yysvec+216,     0,      
1469 yycrank+728,    yysvec+217,     0,      
1470 yycrank+689,    yysvec+218,     0,      
1471 yycrank+786,    yysvec+219,     0,      
1472 yycrank+757,    yysvec+217,     0,      
1473 yycrank+741,    yysvec+221,     0,      
1474 yycrank+740,    yysvec+218,     0,      
1475 yycrank+692,    yysvec+223,     0,      
1476 yycrank+753,    yysvec+224,     0,      
1477 yycrank+805,    yysvec+218,     0,      
1478 yycrank+787,    yysvec+224,     0,      
1479 yycrank+789,    yysvec+224,     0,      
1480 yycrank+859,    0,              0,      
1481 yycrank+754,    0,              yyvstop+150,
1482 yycrank+869,    0,              0,      
1483 yycrank+895,    0,              yyvstop+152,
1484 yycrank+756,    0,              yyvstop+154,
1485 yycrank+790,    0,              yyvstop+156,
1486 yycrank+599,    yysvec+224,     yyvstop+158,
1487 yycrank+921,    0,              0,      
1488 yycrank+883,    0,              0,      
1489 yycrank+591,    0,              0,      
1490 yycrank+587,    0,              0,      
1491 yycrank+594,    0,              0,      
1492 yycrank+587,    0,              0,      
1493 yycrank+608,    0,              0,      
1494 yycrank+602,    0,              0,      
1495 yycrank+629,    0,              0,      
1496 yycrank+653,    0,              0,      
1497 yycrank+651,    0,              0,      
1498 yycrank+806,    0,              yyvstop+160,
1499 yycrank+947,    0,              yyvstop+163,
1500 yycrank+637,    0,              0,      
1501 yycrank+656,    0,              0,      
1502 yycrank+658,    0,              0,      
1503 yycrank+635,    0,              0,      
1504 yycrank+643,    0,              0,      
1505 yycrank+0,      yysvec+293,     0,      
1506 yycrank+661,    0,              0,      
1507 yycrank+663,    0,              0,      
1508 yycrank+668,    0,              0,      
1509 yycrank+660,    0,              0,      
1510 yycrank+0,      yysvec+293,     0,      
1511 yycrank+670,    0,              0,      
1512 yycrank+714,    0,              0,      
1513 yycrank+697,    0,              0,      
1514 yycrank+0,      0,              yyvstop+165,
1515 yycrank+0,      0,              yyvstop+167,
1516 yycrank+0,      0,              yyvstop+169,
1517 yycrank+0,      0,              yyvstop+171,
1518 yycrank+695,    0,              0,      
1519 yycrank+0,      yysvec+308,     0,      
1520 yycrank+717,    0,              0,      
1521 yycrank+0,      yysvec+308,     0,      
1522 yycrank+720,    0,              0,      
1523 yycrank+728,    0,              0,      
1524 yycrank+724,    0,              0,      
1525 yycrank+734,    0,              0,      
1526 yycrank+728,    0,              0,      
1527 yycrank+735,    0,              0,      
1528 yycrank+729,    0,              0,      
1529 yycrank+751,    0,              0,      
1530 yycrank+746,    0,              0,      
1531 yycrank+742,    0,              0,      
1532 yycrank+777,    0,              0,      
1533 yycrank+775,    0,              0,      
1534 yycrank+932,    0,              yyvstop+173,
1535 yycrank+933,    0,              yyvstop+175,
1536 yycrank+981,    0,              yyvstop+177,
1537 yycrank+984,    0,              yyvstop+179,
1538 yycrank+790,    0,              0,      
1539 yycrank+792,    0,              0,      
1540 yycrank+786,    0,              0,      
1541 yycrank+985,    0,              yyvstop+181,
1542 yycrank+787,    0,              0,      
1543 yycrank+830,    0,              0,      
1544 yycrank+832,    0,              0,      
1545 yycrank+840,    0,              0,      
1546 yycrank+857,    0,              0,      
1547 yycrank+856,    0,              0,      
1548 yycrank+849,    0,              0,      
1549 yycrank+996,    0,              yyvstop+183,
1550 yycrank+997,    0,              0,      
1551 yycrank+915,    yysvec+339,     yyvstop+185,
1552 yycrank+859,    0,              0,      
1553 yycrank+847,    0,              0,      
1554 yycrank+918,    yysvec+234,     yyvstop+187,
1555 yycrank+842,    0,              0,      
1556 yycrank+865,    0,              0,      
1557 yycrank+853,    0,              0,      
1558 yycrank+871,    0,              0,      
1559 yycrank+910,    0,              0,      
1560 yycrank+912,    0,              0,      
1561 yycrank+0,      yysvec+293,     0,      
1562 yycrank+910,    0,              0,      
1563 yycrank+970,    0,              0,      
1564 yycrank+915,    0,              0,      
1565 yycrank+917,    0,              0,      
1566 yycrank+0,      yysvec+308,     0,      
1567 yycrank+915,    0,              0,      
1568 yycrank+902,    0,              0,      
1569 yycrank+921,    0,              0,      
1570 yycrank+923,    0,              0,      
1571 yycrank+907,    0,              0,      
1572 yycrank+924,    0,              0,      
1573 yycrank+922,    0,              0,      
1574 yycrank+915,    0,              0,      
1575 yycrank+1016,   0,              yyvstop+189,
1576 yycrank+1001,   yysvec+324,     yyvstop+191,
1577 yycrank+969,    0,              0,      
1578 yycrank+1034,   0,              yyvstop+193,
1579 yycrank+1035,   0,              yyvstop+195,
1580 yycrank+1036,   0,              yyvstop+197,
1581 yycrank+1037,   0,              yyvstop+199,
1582 yycrank+1034,   yysvec+331,     yyvstop+201,
1583 yycrank+926,    0,              0,      
1584 yycrank+917,    0,              0,      
1585 yycrank+911,    0,              0,      
1586 yycrank+946,    0,              0,      
1587 yycrank+945,    0,              0,      
1588 yycrank+962,    0,              0,      
1589 yycrank+1062,   0,              0,      
1590 yycrank+0,      yysvec+347,     0,      
1591 yycrank+0,      yysvec+345,     0,      
1592 yycrank+0,      yysvec+347,     0,      
1593 yycrank+0,      yysvec+293,     0,      
1594 yycrank+960,    0,              0,      
1595 yycrank+0,      yysvec+293,     0,      
1596 yycrank+965,    0,              0,      
1597 yycrank+0,      yysvec+308,     0,      
1598 yycrank+0,      yysvec+308,     0,      
1599 yycrank+966,    0,              0,      
1600 yycrank+963,    0,              0,      
1601 yycrank+951,    0,              0,      
1602 yycrank+949,    0,              0,      
1603 yycrank+971,    0,              0,      
1604 yycrank+959,    0,              0,      
1605 yycrank+976,    0,              0,      
1606 yycrank+1043,   0,              0,      
1607 yycrank+959,    0,              0,      
1608 yycrank+1070,   0,              yyvstop+203,
1609 yycrank+0,      yysvec+377,     0,      
1610 yycrank+0,      yysvec+375,     0,      
1611 yycrank+0,      yysvec+377,     0,      
1612 yycrank+975,    0,              0,      
1613 yycrank+1072,   0,              0,      
1614 yycrank+0,      yysvec+347,     0,      
1615 yycrank+0,      yysvec+293,     0,      
1616 yycrank+0,      yysvec+308,     0,      
1617 yycrank+0,      yysvec+394,     0,      
1618 yycrank+0,      yysvec+392,     0,      
1619 yycrank+0,      yysvec+394,     0,      
1620 yycrank+976,    0,              0,      
1621 yycrank+1087,   0,              0,      
1622 yycrank+1071,   0,              yyvstop+205,
1623 yycrank+0,      yysvec+377,     0,      
1624 yycrank+1098,   0,              yyvstop+207,
1625 yycrank+0,      yysvec+394,     0,      
1626 yycrank+0,      0,              yyvstop+209,
1627 yycrank+1099,   0,              yyvstop+211,
1628 yycrank+1108,   yysvec+414,     yyvstop+213,
1629 0,      0,      0};
1630 struct yywork *yytop = yycrank+1165;
1631 struct yysvf *yybgin = yysvec+1;
1632 char yymatch[] = {
1633   0,   1,   1,   1,   1,   1,   1,   1, 
1634   1,   9,   1,   1,   1,   1,   1,   1, 
1635   1,   1,   1,   1,   1,   1,   1,   1, 
1636   1,   1,   1,   1,   1,   1,   1,   1, 
1637   9,   1,   1,   1,   1,   1,   1,   1, 
1638   1,   1,   1,   1,   1,   1,   1,   1, 
1639  48,  48,  50,  51,  51,  51,  54,  54, 
1640  54,  54,   1,   1,   1,   1,   1,   1, 
1641   1,   1,   1,   1,   1,   1,   1,   1, 
1642   1,   1,   1,   1,   1,   1,   1,   1, 
1643   1,   1,   1,   1,   1,   1,   1,   1, 
1644   1,   1,   1,   1,   1,   1,   1,   1, 
1645   1,  97,  97,  97,  97,  97,  97,  97, 
1646  97,  97,   1, 107, 107, 107, 110, 110, 
1647 110, 110, 110, 110, 110, 110, 110, 110, 
1648 110, 110,   1,   1,   1,   1,   1,   1, 
1649   1,   1,   1,   1,   1,   1,   1,   1, 
1650   1,   1,   1,   1,   1,   1,   1,   1, 
1651   1,   1,   1,   1,   1,   1,   1,   1, 
1652   1,   1,   1,   1,   1,   1,   1,   1, 
1653   1,   1,   1,   1,   1,   1,   1,   1, 
1654   1,   1,   1,   1,   1,   1,   1,   1, 
1655   1,   1,   1,   1,   1,   1,   1,   1, 
1656   1,   1,   1,   1,   1,   1,   1,   1, 
1657   1,   1,   1,   1,   1,   1,   1,   1, 
1658   1,   1,   1,   1,   1,   1,   1,   1, 
1659   1,   1,   1,   1,   1,   1,   1,   1, 
1660   1,   1,   1,   1,   1,   1,   1,   1, 
1661   1,   1,   1,   1,   1,   1,   1,   1, 
1662   1,   1,   1,   1,   1,   1,   1,   1, 
1663   1,   1,   1,   1,   1,   1,   1,   1, 
1664   1,   1,   1,   1,   1,   1,   1,   1, 
1665 0};
1666 char yyextra[] = {
1667 0,0,0,0,0,0,0,0,
1668 0,0,0,0,0,0,0,0,
1669 0,0,0,0,0,0,0,0,
1670 0,0,0,0,0,0,0,0,
1671 0,0,0,0,0,0,0,0,
1672 0,0,0,0,0,0,0,0,
1673 0};
1674 /*      Copyright (c) 1989 AT&T */
1675 /*        All Rights Reserved   */
1676
1677 /*      THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T     */
1678 /*      The copyright notice above does not evidence any        */
1679 /*      actual or intended publication of such source code.     */
1680
1681 #pragma ident   "@(#)ncform     6.11    97/01/06 SMI"
1682