1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <inttypes.h>
4 # define U(x) x
5 # define NLSTATE yyprevious=YYNEWLINE
6 # define BEGIN yybgin = yysvec + 1 +
7 # define INITIAL 0
8 # define YYLERR yysvec
9 # define YYSTATE (yyestate-yysvec-1)
10 # define YYOPTIM 1
11 # ifndef YYLMAX
12 # define YYLMAX BUFSIZ
13 # endif
14 #ifndef __cplusplus
15 # define output(c) (void)putc(c,yyout)
16 #else
17 # define lex_output(c) (void)putc(c,yyout)
18 #endif
19 
20 #if defined(__cplusplus) || defined(__STDC__)
21 
22 #if defined(__cplusplus) && defined(__EXTERN_C__)
23 extern "C" {
24 #endif
25 	int yyback(int *, int);
26 	int yyinput(void);
27 	int yylook(void);
28 	void yyoutput(int);
29 	int yyracc(int);
30 	int yyreject(void);
31 	void yyunput(int);
32 	int yylex(void);
33 #ifdef YYLEX_E
34 	void yywoutput(wchar_t);
35 	wchar_t yywinput(void);
36 	void yywunput(wchar_t);
37 #endif
38 #ifndef yyless
39 	int yyless(int);
40 #endif
41 #ifndef yywrap
42 	int yywrap(void);
43 #endif
44 #ifdef LEXDEBUG
45 	void allprint(char);
46 	void sprint(char *);
47 #endif
48 #if defined(__cplusplus) && defined(__EXTERN_C__)
49 }
50 #endif
51 
52 #ifdef __cplusplus
53 extern "C" {
54 #endif
55 	void exit(int);
56 #ifdef __cplusplus
57 }
58 #endif
59 
60 #endif
61 # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
62 # define yymore() (yymorfg=1)
63 #ifndef __cplusplus
64 # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
65 #else
66 # define lex_input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
67 #endif
68 #define ECHO fprintf(yyout, "%s",yytext)
69 # define REJECT { nstr = yyreject(); goto yyfussy;}
70 int yyleng;
71 #define YYISARRAY
72 char yytext[YYLMAX];
73 int yymorfg;
74 extern char *yysptr, yysbuf[];
75 int yytchar;
76 FILE *yyin = {stdin}, *yyout = {stdout};
77 extern int yylineno;
78 struct yysvf {
79 	struct yywork *yystoff;
80 	struct yysvf *yyother;
81 	int *yystops;};
82 struct yysvf *yyestate;
83 extern struct yysvf yysvec[], *yybgin;
84 
85 # line 3 "svccfg.l"
86 /*
87  * CDDL HEADER START
88  *
89  * The contents of this file are subject to the terms of the
90  * Common Development and Distribution License (the "License").
91  * You may not use this file except in compliance with the License.
92  *
93  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
94  * or http://www.opensolaris.org/os/licensing.
95  * See the License for the specific language governing permissions
96  * and limitations under the License.
97  *
98  * When distributing Covered Code, include this CDDL HEADER in each
99  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
100  * If applicable, add the following below this CDDL HEADER, with the
101  * fields enclosed by brackets "[]" replaced with your own identifying
102  * information: Portions Copyright [yyyy] [name of copyright owner]
103  *
104  * CDDL HEADER END
105  */
106 
107 
108 # line 24 "svccfg.l"
109 /*
110  * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
111  */
112 
113 
114 #pragma error_messages(off, E_BLOCK_DECL_UNUSED)
115 #pragma error_messages(off, E_EQUALITY_NOT_ASSIGNMENT)
116 #pragma error_messages(off, E_FUNC_RET_MAYBE_IGNORED2)
117 #pragma error_messages(off, E_STMT_NOT_REACHED)
118 
119 #include <libintl.h>
120 #include <string.h>
121 
122 #include "svccfg.h"
123 #include "svccfg_grammar.h"
124 
125 
126 # line 40 "svccfg.l"
127 /*
128  * We need to undefine lex's input, unput, and output macros so that references
129  * to these call the functions we provide at the end of this source file,
130  * instead of the default versions based on libc's stdio.
131  */
132 #ifdef input
133 #undef input
134 #endif
135 
136 #ifdef unput
137 #undef unput
138 #endif
139 
140 #ifdef output
141 #undef output
142 #endif
143 
144 static int input(void);
145 static void unput(int);
146 static void output(int);
147 
148 int parens = 0;
149 
150 extern int yyerror(const char *);
151 
152 
153 # line 67 "svccfg.l"
154 /*
155  * Since command tokens are only valid at the beginning of the command (or
156  * after help), we'll only return them in the INITIAL state, and report them
157  * as SCV_WORDs afterwards.
158  */
159 # define WORD 2
160 
161 # line 74 "svccfg.l"
162 /*
163  * The default value of lex for transitions is 2000 and it seems we reached it.
164  * So we are bumping it up!
165  */
166 # define YYNEWLINE 10
167 int yylex(){
168 int nstr; extern int yyprevious;
169 #ifdef __cplusplus
170 /* to avoid CC and lint complaining yyfussy not being used ...*/
171 static int __lex_hack = 0;
172 if (__lex_hack) goto yyfussy;
173 #endif
174 while((nstr = yylook()) >= 0)
175 yyfussy: switch(nstr){
176 case 0:
177 if(yywrap()) return(0); break;
178 case 1:
179 
180 # line 81 "svccfg.l"
181 		;
182 break;
183 case 2:
184 
185 # line 83 "svccfg.l"
186 { BEGIN WORD; return (SCC_VALIDATE); }
187 break;
188 case 3:
189 
190 # line 84 "svccfg.l"
191 	{ BEGIN WORD; return (SCC_IMPORT); }
192 break;
193 case 4:
194 
195 # line 85 "svccfg.l"
196 { BEGIN WORD; return (SCC_CLEANUP); }
197 break;
198 case 5:
199 
200 # line 86 "svccfg.l"
201 	{ BEGIN WORD; return (SCC_EXPORT); }
202 break;
203 case 6:
204 
205 # line 87 "svccfg.l"
206 { BEGIN WORD; return (SCC_ARCHIVE); }
207 break;
208 case 7:
209 
210 # line 88 "svccfg.l"
211 { BEGIN WORD; return (SCC_RESTORE); }
212 break;
213 case 8:
214 
215 # line 89 "svccfg.l"
216 	{ BEGIN WORD; return (SCC_APPLY); }
217 break;
218 case 9:
219 
220 # line 90 "svccfg.l"
221 { BEGIN WORD; return (SCC_EXTRACT); }
222 break;
223 case 10:
224 
225 # line 91 "svccfg.l"
226 { BEGIN WORD; return (SCC_REPOSITORY); }
227 break;
228 case 11:
229 
230 # line 92 "svccfg.l"
231 { BEGIN WORD; return (SCC_INVENTORY); }
232 break;
233 case 12:
234 
235 # line 93 "svccfg.l"
236 	{ BEGIN WORD; return (SCC_SET); }
237 break;
238 case 13:
239 
240 # line 94 "svccfg.l"
241 	{ BEGIN WORD; return (SCC_END); }
242 break;
243 case 14:
244 
245 # line 95 "svccfg.l"
246 	{ BEGIN WORD; return (SCC_END); }
247 break;
248 case 15:
249 
250 # line 96 "svccfg.l"
251 	{ BEGIN WORD; return (SCC_END); }
252 break;
253 case 16:
254 
255 # line 97 "svccfg.l"
256 	{ return (SCC_HELP); }
257 break;
258 case 17:
259 
260 # line 99 "svccfg.l"
261 	{ BEGIN WORD; return (SCC_LIST); }
262 break;
263 case 18:
264 
265 # line 100 "svccfg.l"
266 	{ BEGIN WORD; return (SCC_ADD); }
267 break;
268 case 19:
269 
270 # line 101 "svccfg.l"
271 	{ BEGIN WORD; return (SCC_DELETE); }
272 break;
273 case 20:
274 
275 # line 102 "svccfg.l"
276 	{ BEGIN WORD; return (SCC_SELECT); }
277 break;
278 case 21:
279 
280 # line 103 "svccfg.l"
281 { BEGIN WORD; return (SCC_UNSELECT); }
282 break;
283 case 22:
284 
285 # line 105 "svccfg.l"
286 	{ BEGIN WORD; return (SCC_LISTPG); }
287 break;
288 case 23:
289 
290 # line 106 "svccfg.l"
291 	{ BEGIN WORD; return (SCC_ADDPG); }
292 break;
293 case 24:
294 
295 # line 107 "svccfg.l"
296 	{ BEGIN WORD; return (SCC_DELPG); }
297 break;
298 case 25:
299 
300 # line 108 "svccfg.l"
301 { BEGIN WORD; return (SCC_DELHASH); }
302 break;
303 case 26:
304 
305 # line 109 "svccfg.l"
306 { BEGIN WORD; return (SCC_LISTPROP); }
307 break;
308 case 27:
309 
310 # line 110 "svccfg.l"
311 { BEGIN WORD; return (SCC_SETPROP); }
312 break;
313 case 28:
314 
315 # line 111 "svccfg.l"
316 { BEGIN WORD; return (SCC_DELPROP); }
317 break;
318 case 29:
319 
320 # line 112 "svccfg.l"
321 { BEGIN WORD; return (SCC_EDITPROP); }
322 break;
323 case 30:
324 
325 # line 113 "svccfg.l"
326 { BEGIN WORD; return (SCC_DESCRIBE); }
327 break;
328 case 31:
329 
330 # line 114 "svccfg.l"
331 { BEGIN WORD; return (SCC_ADDPROPVALUE); }
332 break;
333 case 32:
334 
335 # line 115 "svccfg.l"
336 { BEGIN WORD; return (SCC_DELPROPVALUE); }
337 break;
338 case 33:
339 
340 # line 116 "svccfg.l"
341 	{ BEGIN WORD; return (SCC_SETENV); }
342 break;
343 case 34:
344 
345 # line 117 "svccfg.l"
346 { BEGIN WORD; return (SCC_UNSETENV); }
347 break;
348 case 35:
349 
350 # line 119 "svccfg.l"
351 { BEGIN WORD; return (SCC_LISTSNAP); }
352 break;
353 case 36:
354 
355 # line 120 "svccfg.l"
356 { BEGIN WORD; return (SCC_SELECTSNAP); }
357 break;
358 case 37:
359 
360 # line 121 "svccfg.l"
361 	{ BEGIN WORD; return (SCC_REVERT); }
362 break;
363 case 38:
364 
365 # line 122 "svccfg.l"
366 { BEGIN WORD; return (SCC_REFRESH); }
367 break;
368 case 39:
369 
370 # line 124 "svccfg.l"
371 { BEGIN WORD; return (SCC_DELNOTIFY); }
372 break;
373 case 40:
374 
375 # line 125 "svccfg.l"
376 { BEGIN WORD; return (SCC_LISTNOTIFY); }
377 break;
378 case 41:
379 
380 # line 126 "svccfg.l"
381 { BEGIN WORD; return (SCC_SETNOTIFY); }
382 break;
383 case 42:
384 
385 # line 128 "svccfg.l"
386 	{
387 				if ((yylval.str = strdup(yytext)) == NULL) {
388 					yyerror(gettext("Out of memory"));
389 					exit(UU_EXIT_FATAL);
390 				}
391 
392 				return SCV_WORD;
393 			}
394 break;
395 case 43:
396 
397 # line 137 "svccfg.l"
398 {
399 				/*
400 				 * double-quoted strings start at a
401 				 * double-quote, include characters other than
402 				 * double-quote and backslash, and
403 				 * backslashed-characters, and end with a
404 				 * double-quote.
405 				 */
406 
407 				char *str, *cp;
408 				int shift;
409 
410 				if ((str = strdup(yytext)) == NULL) {
411 					yyerror(gettext("Out of memory"));
412 					exit(UU_EXIT_FATAL);
413 				}
414 
415 				/* Strip out the backslashes. */
416 				for (cp = str, shift = 0; *cp != '\0'; ++cp) {
417 					if (*cp == '\\') {
418 						++cp;
419 
420 						/*
421 						 * This can't be null because
422 						 * the string always ends with
423 						 * a double-quote.
424 						 */
425 
426 						++shift;
427 						*(cp - shift) = *cp;
428 					} else if (shift != 0)
429 						*(cp - shift) = *cp;
430 				}
431 
432 				/* Nullify everything after trailing quote */
433 				*(cp - shift) = '\0';
434 
435 				yylval.str = str;
436 				return SCV_STRING;
437 			}
438 break;
439 case 44:
440 
441 # line 178 "svccfg.l"
442 		{
443 				est->sc_cmd_lineno++;
444 				BEGIN INITIAL;
445 				return (SCS_NEWLINE);
446 			}
447 break;
448 case 45:
449 
450 # line 184 "svccfg.l"
451 		;
452 break;
453 case 46:
454 
455 # line 186 "svccfg.l"
456 		{ return SCS_REDIRECT; }
457 break;
458 case 47:
459 
460 # line 187 "svccfg.l"
461 		{ return SCS_EQUALS; }
462 break;
463 case 48:
464 
465 # line 188 "svccfg.l"
466 		{ ++parens; return SCS_LPAREN; }
467 break;
468 case 49:
469 
470 # line 189 "svccfg.l"
471 		{ --parens; return SCS_RPAREN; }
472 break;
473 case 50:
474 
475 # line 191 "svccfg.l"
476 		{
477 				uu_die(gettext("unrecognized character %s\n"),
478 				    yytext);
479 			}
480 break;
481 case -1:
482 break;
483 default:
484 (void)fprintf(yyout,"bad switch yylook %d",nstr);
485 } return(0); }
486 /* end of yylex */
487 
488 # line 197 "svccfg.l"
489 
490 int
491 yyerror(const char *s)
492 {
493 	return (0);
494 }
495 
496 static int
497 input(void)
498 {
499 	static int saw_eof = 0;
500 
501 	int c = engine_cmd_getc(est);
502 
503 	/*
504 	 * To ensure input is terminated, slip in a newline on EOF.
505 	 */
506 	if (c == EOF) {
507 		if (saw_eof)
508 			return (0);
509 
510 		saw_eof = 1;
511 		return ('\n');
512 	} else
513 		saw_eof = 0;
514 
515 	if (c == '\n')
516 		yylineno++;
517 
518 	return (c);
519 }
520 
521 static void
522 unput(int c)
523 {
524 	if (c == '\n')
525 		yylineno--;
526 
527 	(void) engine_cmd_ungetc(est, c == 0 ? EOF : c);
528 }
529 
530 static void
531 output(int c)
532 {
533 	char ch = c;
534 	engine_cmd_nputs(est, &ch, sizeof (ch));
535 }
536 int yyvstop[] = {
537 0,
538 
539 42,
540 50,
541 0,
542 
543 45,
544 50,
545 0,
546 
547 44,
548 0,
549 
550 50,
551 0,
552 
553 42,
554 50,
555 -1,
556 0,
557 
558 48,
559 50,
560 0,
561 
562 49,
563 50,
564 0,
565 
566 47,
567 50,
568 0,
569 
570 46,
571 50,
572 0,
573 
574 42,
575 50,
576 0,
577 
578 42,
579 50,
580 0,
581 
582 42,
583 50,
584 0,
585 
586 42,
587 50,
588 0,
589 
590 42,
591 50,
592 0,
593 
594 42,
595 50,
596 0,
597 
598 42,
599 50,
600 0,
601 
602 42,
603 50,
604 0,
605 
606 42,
607 50,
608 0,
609 
610 42,
611 50,
612 0,
613 
614 42,
615 50,
616 0,
617 
618 42,
619 50,
620 0,
621 
622 42,
623 0,
624 
625 45,
626 0,
627 
628 43,
629 0,
630 
631 42,
632 -1,
633 0,
634 
635 -1,
636 0,
637 
638 1,
639 0,
640 
641 42,
642 0,
643 
644 42,
645 0,
646 
647 42,
648 0,
649 
650 42,
651 0,
652 
653 42,
654 0,
655 
656 42,
657 0,
658 
659 42,
660 0,
661 
662 42,
663 0,
664 
665 42,
666 0,
667 
668 42,
669 0,
670 
671 42,
672 0,
673 
674 42,
675 0,
676 
677 42,
678 0,
679 
680 42,
681 0,
682 
683 42,
684 0,
685 
686 42,
687 0,
688 
689 42,
690 0,
691 
692 18,
693 42,
694 0,
695 
696 42,
697 0,
698 
699 42,
700 0,
701 
702 42,
703 0,
704 
705 42,
706 0,
707 
708 42,
709 0,
710 
711 42,
712 0,
713 
714 13,
715 42,
716 0,
717 
718 42,
719 0,
720 
721 42,
722 0,
723 
724 42,
725 0,
726 
727 42,
728 0,
729 
730 42,
731 0,
732 
733 42,
734 0,
735 
736 42,
737 0,
738 
739 42,
740 0,
741 
742 42,
743 0,
744 
745 42,
746 0,
747 
748 42,
749 0,
750 
751 42,
752 0,
753 
754 42,
755 0,
756 
757 12,
758 42,
759 0,
760 
761 42,
762 0,
763 
764 42,
765 0,
766 
767 42,
768 0,
769 
770 42,
771 0,
772 
773 42,
774 0,
775 
776 42,
777 0,
778 
779 42,
780 0,
781 
782 42,
783 0,
784 
785 42,
786 0,
787 
788 42,
789 0,
790 
791 42,
792 0,
793 
794 42,
795 0,
796 
797 14,
798 42,
799 0,
800 
801 42,
802 0,
803 
804 42,
805 0,
806 
807 16,
808 42,
809 0,
810 
811 42,
812 0,
813 
814 42,
815 0,
816 
817 17,
818 42,
819 0,
820 
821 15,
822 42,
823 0,
824 
825 42,
826 0,
827 
828 42,
829 0,
830 
831 42,
832 0,
833 
834 42,
835 0,
836 
837 42,
838 0,
839 
840 42,
841 0,
842 
843 42,
844 0,
845 
846 42,
847 0,
848 
849 42,
850 0,
851 
852 42,
853 0,
854 
855 23,
856 42,
857 0,
858 
859 42,
860 0,
861 
862 8,
863 42,
864 0,
865 
866 42,
867 0,
868 
869 42,
870 0,
871 
872 42,
873 0,
874 
875 42,
876 0,
877 
878 42,
879 0,
880 
881 24,
882 42,
883 0,
884 
885 42,
886 0,
887 
888 42,
889 0,
890 
891 42,
892 0,
893 
894 42,
895 0,
896 
897 42,
898 0,
899 
900 42,
901 0,
902 
903 42,
904 0,
905 
906 42,
907 0,
908 
909 42,
910 0,
911 
912 42,
913 0,
914 
915 42,
916 0,
917 
918 42,
919 0,
920 
921 42,
922 0,
923 
924 42,
925 0,
926 
927 42,
928 0,
929 
930 42,
931 0,
932 
933 42,
934 0,
935 
936 42,
937 0,
938 
939 42,
940 0,
941 
942 42,
943 0,
944 
945 42,
946 0,
947 
948 42,
949 0,
950 
951 42,
952 0,
953 
954 42,
955 0,
956 
957 19,
958 42,
959 0,
960 
961 42,
962 0,
963 
964 42,
965 0,
966 
967 42,
968 0,
969 
970 42,
971 0,
972 
973 42,
974 0,
975 
976 5,
977 42,
978 0,
979 
980 42,
981 0,
982 
983 3,
984 42,
985 0,
986 
987 42,
988 0,
989 
990 42,
991 0,
992 
993 22,
994 42,
995 0,
996 
997 42,
998 0,
999 
1000 42,
1001 0,
1002 
1003 42,
1004 0,
1005 
1006 42,
1007 0,
1008 
1009 42,
1010 0,
1011 
1012 37,
1013 42,
1014 0,
1015 
1016 20,
1017 42,
1018 0,
1019 
1020 33,
1021 42,
1022 0,
1023 
1024 42,
1025 0,
1026 
1027 42,
1028 0,
1029 
1030 42,
1031 0,
1032 
1033 42,
1034 0,
1035 
1036 42,
1037 0,
1038 
1039 42,
1040 0,
1041 
1042 6,
1043 42,
1044 0,
1045 
1046 4,
1047 42,
1048 0,
1049 
1050 25,
1051 42,
1052 0,
1053 
1054 42,
1055 0,
1056 
1057 28,
1058 42,
1059 0,
1060 
1061 42,
1062 0,
1063 
1064 42,
1065 0,
1066 
1067 9,
1068 42,
1069 0,
1070 
1071 42,
1072 0,
1073 
1074 42,
1075 0,
1076 
1077 42,
1078 0,
1079 
1080 42,
1081 0,
1082 
1083 38,
1084 42,
1085 0,
1086 
1087 42,
1088 0,
1089 
1090 7,
1091 42,
1092 0,
1093 
1094 42,
1095 0,
1096 
1097 42,
1098 0,
1099 
1100 27,
1101 42,
1102 0,
1103 
1104 42,
1105 0,
1106 
1107 42,
1108 0,
1109 
1110 42,
1111 0,
1112 
1113 42,
1114 0,
1115 
1116 42,
1117 0,
1118 
1119 42,
1120 0,
1121 
1122 30,
1123 42,
1124 0,
1125 
1126 29,
1127 42,
1128 0,
1129 
1130 42,
1131 0,
1132 
1133 42,
1134 0,
1135 
1136 26,
1137 42,
1138 0,
1139 
1140 35,
1141 42,
1142 0,
1143 
1144 42,
1145 0,
1146 
1147 42,
1148 0,
1149 
1150 42,
1151 0,
1152 
1153 21,
1154 42,
1155 0,
1156 
1157 34,
1158 42,
1159 0,
1160 
1161 2,
1162 42,
1163 0,
1164 
1165 42,
1166 0,
1167 
1168 39,
1169 42,
1170 0,
1171 
1172 42,
1173 0,
1174 
1175 11,
1176 42,
1177 0,
1178 
1179 42,
1180 0,
1181 
1182 42,
1183 0,
1184 
1185 42,
1186 0,
1187 
1188 41,
1189 42,
1190 0,
1191 
1192 42,
1193 0,
1194 
1195 42,
1196 0,
1197 
1198 40,
1199 42,
1200 0,
1201 
1202 10,
1203 42,
1204 0,
1205 
1206 36,
1207 42,
1208 0,
1209 
1210 42,
1211 0,
1212 
1213 42,
1214 0,
1215 
1216 31,
1217 42,
1218 0,
1219 
1220 32,
1221 42,
1222 0,
1223 0};
1224 # define YYTYPE unsigned char
1225 struct yywork { YYTYPE verify, advance; } yycrank[] = {
1226 0,0,	0,0,	1,5,	32,32,
1227 0,0,	3,5,	0,0,	0,0,
1228 0,0,	0,0,	1,6,	1,7,
1229 0,0,	3,6,	3,7,	0,0,
1230 0,0,	5,26,	0,0,	0,0,
1231 8,28,	0,0,	9,31,	6,27,
1232 0,0,	5,0,	5,0,	0,0,
1233 8,28,	8,28,	9,32,	9,33,
1234 0,0,	0,0,	0,0,	1,8,
1235 1,9,	0,0,	3,8,	3,9,
1236 0,0,	1,10,	1,11,	4,9,
1237 3,10,	3,11,	6,27,	0,0,
1238 5,0,	4,11,	5,0,	20,0,
1239 20,0,	8,29,	0,0,	9,32,
1240 5,0,	5,0,	2,9,	8,28,
1241 0,0,	9,32,	1,12,	1,13,
1242 2,11,	3,12,	3,13,	30,0,
1243 0,0,	4,12,	4,13,	0,0,
1244 0,0,	0,0,	20,0,	0,0,
1245 20,0,	5,0,	5,0,	0,0,
1246 0,0,	0,0,	20,0,	20,0,
1247 2,12,	2,13,	0,0,	0,0,
1248 0,0,	0,0,	0,0,	30,28,
1249 0,0,	1,5,	32,32,	0,0,
1250 3,5,	0,0,	1,14,	0,0,
1251 1,15,	1,16,	1,17,	20,0,
1252 20,0,	1,18,	1,19,	0,0,
1253 5,26,	1,20,	0,0,	8,30,
1254 0,0,	9,31,	1,21,	1,22,
1255 1,23,	14,26,	1,24,	1,25,
1256 2,14,	0,0,	2,15,	2,16,
1257 2,17,	14,0,	14,0,	2,18,
1258 2,19,	16,0,	16,0,	2,20,
1259 0,0,	0,0,	0,0,	0,0,
1260 2,21,	2,22,	2,23,	0,0,
1261 2,24,	2,25,	15,0,	15,0,
1262 0,0,	0,0,	0,0,	20,45,
1263 14,0,	30,28,	14,0,	0,0,
1264 16,0,	0,0,	16,0,	0,0,
1265 14,0,	14,0,	0,0,	0,0,
1266 16,0,	16,0,	0,0,	0,0,
1267 0,0,	15,0,	0,0,	15,0,
1268 0,0,	0,0,	0,0,	17,26,
1269 0,0,	15,0,	15,0,	0,0,
1270 0,0,	14,0,	14,0,	17,0,
1271 17,0,	16,0,	16,0,	0,0,
1272 0,0,	0,0,	0,0,	0,0,
1273 0,0,	0,0,	0,0,	0,0,
1274 18,0,	18,0,	15,0,	15,0,
1275 0,0,	0,0,	0,0,	0,0,
1276 0,0,	0,0,	17,0,	0,0,
1277 17,0,	0,0,	0,0,	0,0,
1278 14,26,	0,0,	17,0,	17,0,
1279 0,0,	0,0,	0,0,	18,0,
1280 14,34,	18,0,	19,26,	0,0,
1281 0,0,	16,38,	0,0,	18,0,
1282 18,0,	0,0,	19,0,	19,0,
1283 14,35,	0,0,	14,36,	17,0,
1284 17,0,	0,0,	0,0,	0,0,
1285 21,0,	21,0,	0,0,	0,0,
1286 0,0,	15,37,	0,0,	0,0,
1287 18,0,	18,0,	0,0,	0,0,
1288 0,0,	19,0,	0,0,	19,0,
1289 0,0,	0,0,	0,0,	0,0,
1290 0,0,	19,0,	19,0,	21,0,
1291 0,0,	21,0,	17,26,	0,0,
1292 0,0,	0,0,	0,0,	21,0,
1293 21,0,	0,0,	17,39,	22,0,
1294 22,0,	0,0,	0,0,	0,0,
1295 23,0,	23,0,	19,0,	19,0,
1296 17,40,	24,0,	24,0,	0,0,
1297 18,42,	0,0,	0,0,	0,0,
1298 21,0,	21,0,	17,41,	0,0,
1299 0,0,	0,0,	22,0,	0,0,
1300 22,0,	0,0,	0,0,	23,0,
1301 0,0,	23,0,	22,0,	22,0,
1302 24,0,	0,0,	24,0,	23,0,
1303 23,0,	19,26,	0,0,	0,0,
1304 24,0,	24,0,	25,0,	25,0,
1305 0,0,	26,0,	26,0,	0,0,
1306 0,0,	0,0,	0,0,	22,0,
1307 22,0,	0,0,	19,43,	19,44,
1308 23,0,	23,0,	0,0,	0,0,
1309 0,0,	24,0,	24,0,	0,0,
1310 0,0,	25,0,	0,0,	25,0,
1311 26,0,	0,0,	26,0,	0,0,
1312 21,46,	25,0,	25,0,	0,0,
1313 26,0,	26,0,	0,0,	0,0,
1314 34,0,	34,0,	0,0,	35,0,
1315 35,0,	0,0,	0,0,	0,0,
1316 0,0,	0,0,	0,0,	22,47,
1317 0,0,	0,0,	25,0,	25,0,
1318 23,48,	26,0,	26,0,	0,0,
1319 0,0,	0,0,	0,0,	34,0,
1320 0,0,	34,0,	35,0,	0,0,
1321 35,0,	0,0,	24,49,	34,0,
1322 34,0,	0,0,	35,0,	35,0,
1323 36,0,	36,0,	0,0,	0,0,
1324 37,0,	37,0,	0,0,	0,0,
1325 0,0,	0,0,	0,0,	0,0,
1326 0,0,	0,0,	25,50,	0,0,
1327 34,0,	34,0,	0,0,	35,0,
1328 35,0,	0,0,	0,0,	36,0,
1329 0,0,	36,0,	0,0,	37,0,
1330 0,0,	37,0,	0,0,	36,0,
1331 36,0,	38,26,	0,0,	37,0,
1332 37,0,	0,0,	0,0,	0,0,
1333 0,0,	38,0,	38,0,	0,0,
1334 0,0,	0,0,	39,0,	39,0,
1335 0,0,	0,0,	0,0,	0,0,
1336 36,0,	36,0,	0,0,	34,51,
1337 37,0,	37,0,	0,0,	0,0,
1338 40,0,	40,0,	0,0,	0,0,
1339 38,0,	0,0,	38,0,	0,0,
1340 0,0,	39,0,	35,52,	39,0,
1341 38,0,	38,0,	0,0,	0,0,
1342 0,0,	39,0,	39,0,	0,0,
1343 0,0,	0,0,	0,0,	40,0,
1344 0,0,	40,0,	42,0,	42,0,
1345 0,0,	0,0,	36,53,	40,0,
1346 40,0,	38,0,	38,0,	41,26,
1347 37,54,	0,0,	39,0,	39,0,
1348 43,0,	43,0,	0,0,	41,0,
1349 41,0,	0,0,	0,0,	0,0,
1350 0,0,	42,0,	0,0,	42,0,
1351 40,0,	40,0,	0,0,	0,0,
1352 0,0,	42,0,	42,0,	0,0,
1353 0,0,	0,0,	0,0,	43,0,
1354 38,26,	43,0,	41,0,	0,0,
1355 41,0,	0,0,	0,0,	43,0,
1356 43,0,	0,0,	41,0,	41,0,
1357 44,0,	44,0,	42,0,	42,0,
1358 38,55,	0,0,	39,57,	0,0,
1359 0,0,	0,0,	0,0,	38,56,
1360 45,0,	45,0,	0,0,	40,58,
1361 43,0,	43,0,	0,0,	41,0,
1362 41,0,	0,0,	0,0,	44,0,
1363 0,0,	44,0,	0,0,	0,0,
1364 0,0,	0,0,	0,0,	44,0,
1365 44,0,	0,0,	0,0,	45,0,
1366 0,0,	45,0,	0,0,	0,0,
1367 0,0,	0,0,	0,0,	45,0,
1368 45,0,	0,0,	46,0,	46,0,
1369 0,0,	42,62,	41,26,	0,0,
1370 44,0,	44,0,	0,0,	0,0,
1371 0,0,	0,0,	0,0,	0,0,
1372 0,0,	0,0,	0,0,	41,59,
1373 45,0,	45,0,	0,0,	43,63,
1374 0,0,	46,0,	41,60,	46,0,
1375 47,26,	0,0,	41,61,	48,26,
1376 0,0,	46,0,	46,0,	0,0,
1377 47,0,	47,0,	0,0,	48,0,
1378 48,0,	0,0,	0,0,	0,0,
1379 0,0,	0,0,	0,0,	0,0,
1380 0,0,	0,0,	49,0,	49,0,
1381 0,0,	0,0,	46,0,	46,0,
1382 0,0,	0,0,	0,0,	47,0,
1383 0,0,	47,0,	48,0,	0,0,
1384 48,0,	44,64,	0,0,	47,0,
1385 47,0,	0,0,	48,0,	48,0,
1386 0,0,	49,0,	45,65,	49,0,
1387 0,0,	0,0,	0,0,	0,0,
1388 0,0,	49,0,	49,0,	50,0,
1389 50,0,	0,0,	0,0,	0,0,
1390 47,0,	47,0,	0,0,	48,0,
1391 48,0,	0,0,	0,0,	51,0,
1392 51,0,	0,0,	46,66,	0,0,
1393 52,0,	52,0,	49,0,	49,0,
1394 0,0,	0,0,	50,0,	0,0,
1395 50,0,	0,0,	0,0,	0,0,
1396 0,0,	0,0,	50,0,	50,0,
1397 0,0,	0,0,	51,0,	47,26,
1398 51,0,	0,0,	48,26,	52,0,
1399 0,0,	52,0,	51,0,	51,0,
1400 0,0,	47,67,	0,0,	52,0,
1401 52,0,	0,0,	0,0,	50,0,
1402 50,0,	0,0,	48,71,	47,68,
1403 53,0,	53,0,	47,69,	54,0,
1404 54,0,	47,70,	48,72,	51,0,
1405 51,0,	0,0,	55,26,	0,0,
1406 52,0,	52,0,	56,0,	56,0,
1407 49,73,	0,0,	55,0,	55,0,
1408 0,0,	0,0,	0,0,	53,0,
1409 0,0,	53,0,	54,0,	0,0,
1410 54,0,	0,0,	0,0,	53,0,
1411 53,0,	0,0,	54,0,	54,0,
1412 0,0,	56,0,	0,0,	56,0,
1413 0,0,	55,0,	50,74,	55,0,
1414 0,0,	56,0,	56,0,	0,0,
1415 0,0,	55,0,	55,0,	0,0,
1416 53,0,	53,0,	0,0,	54,0,
1417 54,0,	0,0,	51,75,	52,76,
1418 0,0,	0,0,	57,0,	57,0,
1419 0,0,	0,0,	56,0,	56,0,
1420 0,0,	0,0,	55,0,	55,0,
1421 0,0,	0,0,	58,0,	58,0,
1422 0,0,	59,0,	59,0,	0,0,
1423 0,0,	0,0,	0,0,	0,0,
1424 0,0,	57,0,	0,0,	57,0,
1425 0,0,	0,0,	0,0,	54,78,
1426 0,0,	57,0,	57,0,	53,77,
1427 0,0,	58,0,	0,0,	58,0,
1428 59,0,	55,26,	59,0,	0,0,
1429 56,83,	58,0,	58,0,	0,0,
1430 59,0,	59,0,	55,79,	60,0,
1431 60,0,	55,80,	57,0,	57,0,
1432 0,0,	0,0,	0,0,	55,81,
1433 0,0,	55,82,	61,0,	61,0,
1434 0,0,	0,0,	58,0,	58,0,
1435 0,0,	59,0,	59,0,	0,0,
1436 0,0,	0,0,	60,0,	0,0,
1437 60,0,	0,0,	0,0,	0,0,
1438 0,0,	0,0,	60,0,	60,0,
1439 0,0,	61,0,	0,0,	61,0,
1440 62,0,	62,0,	0,0,	0,0,
1441 0,0,	61,0,	61,0,	0,0,
1442 0,0,	0,0,	63,0,	63,0,
1443 0,0,	0,0,	0,0,	60,0,
1444 60,0,	0,0,	0,0,	0,0,
1445 0,0,	57,84,	0,0,	62,0,
1446 0,0,	62,0,	61,0,	61,0,
1447 0,0,	0,0,	0,0,	62,0,
1448 62,0,	63,0,	0,0,	63,0,
1449 59,85,	0,0,	0,0,	0,0,
1450 0,0,	63,0,	63,0,	64,0,
1451 64,0,	0,0,	65,0,	65,0,
1452 0,0,	0,0,	0,0,	0,0,
1453 62,0,	62,0,	0,0,	0,0,
1454 0,0,	66,0,	66,0,	0,0,
1455 0,0,	0,0,	63,0,	63,0,
1456 0,0,	60,86,	64,0,	0,0,
1457 64,0,	65,0,	0,0,	65,0,
1458 0,0,	0,0,	64,0,	64,0,
1459 0,0,	65,0,	65,0,	61,87,
1460 66,0,	0,0,	66,0,	0,0,
1461 0,0,	0,0,	0,0,	0,0,
1462 66,0,	66,0,	67,0,	67,0,
1463 0,0,	69,0,	69,0,	64,0,
1464 64,0,	0,0,	65,0,	65,0,
1465 0,0,	0,0,	0,0,	62,88,
1466 0,0,	68,0,	68,0,	0,0,
1467 0,0,	66,0,	66,0,	0,0,
1468 63,89,	67,0,	0,0,	67,0,
1469 69,0,	0,0,	69,0,	0,0,
1470 0,0,	67,0,	67,0,	0,0,
1471 69,0,	69,0,	0,0,	0,0,
1472 68,0,	0,0,	68,0,	70,0,
1473 70,0,	0,0,	0,0,	64,90,
1474 68,0,	68,0,	0,0,	0,0,
1475 0,0,	0,0,	67,0,	67,0,
1476 0,0,	69,0,	69,0,	0,0,
1477 0,0,	71,0,	71,0,	0,0,
1478 0,0,	65,91,	70,0,	0,0,
1479 70,0,	68,0,	68,0,	72,26,
1480 0,0,	0,0,	70,0,	70,0,
1481 66,92,	0,0,	0,0,	72,0,
1482 72,0,	0,0,	0,0,	0,0,
1483 71,0,	0,0,	71,0,	0,0,
1484 0,0,	0,0,	0,0,	0,0,
1485 71,0,	71,0,	0,0,	70,0,
1486 70,0,	73,0,	73,0,	0,0,
1487 0,0,	0,0,	72,0,	0,0,
1488 72,0,	0,0,	0,0,	67,93,
1489 0,0,	0,0,	72,0,	72,0,
1490 69,95,	71,0,	71,0,	74,0,
1491 74,0,	0,0,	0,0,	68,94,
1492 73,0,	0,0,	73,0,	0,0,
1493 0,0,	75,26,	0,0,	0,0,
1494 73,0,	73,0,	0,0,	72,0,
1495 72,0,	75,0,	75,0,	70,96,
1496 0,0,	0,0,	74,0,	0,0,
1497 74,0,	0,0,	0,0,	0,0,
1498 0,0,	0,0,	74,0,	74,0,
1499 0,0,	73,0,	73,0,	0,0,
1500 0,0,	71,97,	0,0,	0,0,
1501 75,0,	0,0,	75,0,	0,0,
1502 0,0,	0,0,	72,26,	0,0,
1503 75,0,	75,0,	0,0,	74,0,
1504 74,0,	76,0,	76,0,	72,98,
1505 77,0,	77,0,	0,0,	0,0,
1506 0,0,	0,0,	0,0,	0,0,
1507 72,99,	0,0,	72,100,	78,0,
1508 78,0,	75,0,	75,0,	79,0,
1509 79,0,	73,101,	0,0,	0,0,
1510 76,0,	0,0,	76,0,	77,0,
1511 0,0,	77,0,	0,0,	0,0,
1512 76,0,	76,0,	0,0,	77,0,
1513 77,0,	0,0,	78,0,	0,0,
1514 78,0,	0,0,	79,0,	74,102,
1515 79,0,	0,0,	78,0,	78,0,
1516 75,26,	0,0,	79,0,	79,0,
1517 0,0,	76,0,	76,0,	0,0,
1518 77,0,	77,0,	0,0,	75,103,
1519 0,0,	0,0,	80,0,	80,0,
1520 0,0,	81,0,	81,0,	78,0,
1521 78,0,	0,0,	75,104,	79,0,
1522 79,0,	0,0,	0,0,	0,0,
1523 82,0,	82,0,	0,0,	83,0,
1524 83,0,	0,0,	0,0,	0,0,
1525 0,0,	80,0,	0,0,	80,0,
1526 81,0,	0,0,	81,0,	0,0,
1527 0,0,	80,0,	80,0,	0,0,
1528 81,0,	81,0,	0,0,	82,0,
1529 77,106,	82,0,	83,0,	0,0,
1530 83,0,	0,0,	0,0,	82,0,
1531 82,0,	0,0,	83,0,	83,0,
1532 0,0,	76,105,	80,0,	80,0,
1533 78,107,	81,0,	81,0,	0,0,
1534 84,0,	84,0,	0,0,	85,0,
1535 85,0,	0,0,	79,108,	0,0,
1536 82,0,	82,0,	0,0,	83,0,
1537 83,0,	86,0,	86,0,	0,0,
1538 0,0,	87,0,	87,0,	0,0,
1539 0,0,	0,0,	0,0,	84,0,
1540 0,0,	84,0,	85,0,	0,0,
1541 85,0,	0,0,	80,109,	84,0,
1542 84,0,	0,0,	85,0,	85,0,
1543 86,0,	0,0,	86,0,	0,0,
1544 87,0,	0,0,	87,0,	0,0,
1545 86,0,	86,0,	0,0,	81,110,
1546 87,0,	87,0,	82,111,	0,0,
1547 84,0,	84,0,	0,0,	85,0,
1548 85,0,	88,0,	88,0,	0,0,
1549 0,0,	82,112,	89,0,	89,0,
1550 83,113,	86,0,	86,0,	90,0,
1551 90,0,	87,0,	87,0,	0,0,
1552 0,0,	0,0,	0,0,	0,0,
1553 0,0,	0,0,	0,0,	0,0,
1554 88,0,	0,0,	88,0,	0,0,
1555 0,0,	89,0,	0,0,	89,0,
1556 88,0,	88,0,	90,0,	0,0,
1557 90,0,	89,0,	89,0,	0,0,
1558 0,0,	0,0,	90,0,	90,0,
1559 92,0,	92,0,	0,0,	84,114,
1560 91,26,	87,116,	0,0,	0,0,
1561 0,0,	88,0,	88,0,	0,0,
1562 91,0,	91,0,	89,0,	89,0,
1563 0,0,	0,0,	86,115,	90,0,
1564 90,0,	0,0,	0,0,	92,0,
1565 0,0,	92,0,	94,0,	94,0,
1566 0,0,	0,0,	0,0,	92,0,
1567 92,0,	0,0,	0,0,	91,0,
1568 0,0,	91,0,	93,0,	93,0,
1569 0,0,	0,0,	0,0,	91,0,
1570 91,0,	0,0,	0,0,	0,0,
1571 0,0,	94,0,	0,0,	94,0,
1572 92,0,	92,0,	0,0,	0,0,
1573 0,0,	94,0,	94,0,	0,0,
1574 0,0,	93,0,	0,0,	93,0,
1575 91,0,	91,0,	0,0,	89,117,
1576 90,118,	93,0,	93,0,	95,0,
1577 95,0,	0,0,	96,0,	96,0,
1578 0,0,	0,0,	94,0,	94,0,
1579 0,0,	0,0,	0,0,	0,0,
1580 0,0,	97,0,	97,0,	0,0,
1581 0,0,	0,0,	93,0,	93,0,
1582 0,0,	0,0,	95,0,	91,26,
1583 95,0,	96,0,	0,0,	96,0,
1584 0,0,	0,0,	95,0,	95,0,
1585 0,0,	96,0,	96,0,	0,0,
1586 97,0,	0,0,	97,0,	98,0,
1587 98,0,	91,119,	0,0,	91,120,
1588 97,0,	97,0,	91,121,	0,0,
1589 0,0,	0,0,	0,0,	95,0,
1590 95,0,	0,0,	96,0,	96,0,
1591 99,0,	99,0,	93,122,	0,0,
1592 94,123,	0,0,	98,0,	0,0,
1593 98,0,	97,0,	97,0,	0,0,
1594 0,0,	0,0,	98,0,	98,0,
1595 0,0,	100,0,	100,0,	0,0,
1596 0,0,	0,0,	0,0,	99,0,
1597 0,0,	99,0,	0,0,	0,0,
1598 0,0,	0,0,	0,0,	99,0,
1599 99,0,	101,0,	101,0,	98,0,
1600 98,0,	0,0,	0,0,	0,0,
1601 100,0,	0,0,	100,0,	102,0,
1602 102,0,	95,124,	0,0,	97,126,
1603 100,0,	100,0,	0,0,	96,125,
1604 99,0,	99,0,	0,0,	0,0,
1605 101,0,	0,0,	101,0,	0,0,
1606 0,0,	0,0,	0,0,	0,0,
1607 101,0,	101,0,	102,0,	0,0,
1608 102,0,	100,0,	100,0,	0,0,
1609 0,0,	0,0,	102,0,	102,0,
1610 103,0,	103,0,	0,0,	0,0,
1611 0,0,	0,0,	0,0,	0,0,
1612 98,127,	101,0,	101,0,	0,0,
1613 0,0,	104,0,	104,0,	0,0,
1614 105,0,	105,0,	0,0,	102,0,
1615 102,0,	0,0,	0,0,	103,0,
1616 0,0,	103,0,	99,128,	0,0,
1617 0,0,	0,0,	0,0,	103,0,
1618 103,0,	0,0,	0,0,	0,0,
1619 104,0,	0,0,	104,0,	105,0,
1620 0,0,	105,0,	0,0,	0,0,
1621 104,0,	104,0,	100,129,	105,0,
1622 105,0,	106,0,	106,0,	0,0,
1623 103,0,	103,0,	107,0,	107,0,
1624 101,130,	0,0,	102,132,	108,0,
1625 108,0,	0,0,	0,0,	0,0,
1626 101,131,	104,0,	104,0,	0,0,
1627 105,0,	105,0,	0,0,	0,0,
1628 106,0,	0,0,	106,0,	0,0,
1629 0,0,	107,0,	0,0,	107,0,
1630 106,0,	106,0,	108,0,	0,0,
1631 108,0,	107,0,	107,0,	0,0,
1632 0,0,	0,0,	108,0,	108,0,
1633 0,0,	109,0,	109,0,	0,0,
1634 110,0,	110,0,	0,0,	0,0,
1635 0,0,	106,0,	106,0,	0,0,
1636 0,0,	0,0,	107,0,	107,0,
1637 111,0,	111,0,	0,0,	108,0,
1638 108,0,	0,0,	0,0,	104,133,
1639 109,0,	0,0,	109,0,	110,0,
1640 0,0,	110,0,	0,0,	0,0,
1641 109,0,	109,0,	0,0,	110,0,
1642 110,0,	0,0,	0,0,	111,0,
1643 0,0,	111,0,	112,0,	112,0,
1644 0,0,	0,0,	0,0,	111,0,
1645 111,0,	0,0,	0,0,	0,0,
1646 0,0,	109,0,	109,0,	0,0,
1647 110,0,	110,0,	0,0,	108,136,
1648 113,0,	113,0,	0,0,	0,0,
1649 0,0,	112,0,	106,134,	112,0,
1650 111,0,	111,0,	107,135,	0,0,
1651 0,0,	112,0,	112,0,	0,0,
1652 0,0,	114,0,	114,0,	0,0,
1653 0,0,	0,0,	0,0,	113,0,
1654 0,0,	113,0,	0,0,	0,0,
1655 0,0,	0,0,	0,0,	113,0,
1656 113,0,	0,0,	112,0,	112,0,
1657 115,0,	115,0,	0,0,	0,0,
1658 114,0,	0,0,	114,0,	0,0,
1659 0,0,	0,0,	0,0,	109,137,
1660 114,0,	114,0,	0,0,	110,138,
1661 113,0,	113,0,	116,0,	116,0,
1662 0,0,	0,0,	0,0,	115,0,
1663 0,0,	115,0,	0,0,	0,0,
1664 0,0,	0,0,	0,0,	115,0,
1665 115,0,	114,0,	114,0,	0,0,
1666 117,0,	117,0,	0,0,	0,0,
1667 0,0,	116,0,	0,0,	116,0,
1668 0,0,	0,0,	0,0,	0,0,
1669 112,139,	116,0,	116,0,	0,0,
1670 115,0,	115,0,	0,0,	0,0,
1671 0,0,	0,0,	0,0,	117,0,
1672 113,140,	117,0,	118,0,	118,0,
1673 0,0,	0,0,	0,0,	117,0,
1674 117,0,	0,0,	116,0,	116,0,
1675 119,0,	119,0,	0,0,	0,0,
1676 0,0,	0,0,	0,0,	0,0,
1677 0,0,	0,0,	0,0,	0,0,
1678 0,0,	118,0,	114,141,	118,0,
1679 117,0,	117,0,	0,0,	0,0,
1680 0,0,	118,0,	118,0,	119,0,
1681 0,0,	119,0,	120,0,	120,0,
1682 0,0,	0,0,	0,0,	119,0,
1683 119,0,	0,0,	0,0,	115,142,
1684 116,143,	121,0,	121,0,	0,0,
1685 0,0,	0,0,	118,0,	118,0,
1686 0,0,	0,0,	0,0,	0,0,
1687 0,0,	120,0,	0,0,	120,0,
1688 119,0,	119,0,	0,0,	0,0,
1689 0,0,	120,0,	120,0,	0,0,
1690 121,0,	0,0,	121,0,	122,0,
1691 122,0,	0,0,	0,0,	0,0,
1692 121,0,	121,0,	0,0,	117,144,
1693 0,0,	0,0,	0,0,	123,0,
1694 123,0,	0,0,	120,0,	120,0,
1695 124,0,	124,0,	0,0,	0,0,
1696 0,0,	0,0,	122,0,	0,0,
1697 122,0,	121,0,	121,0,	0,0,
1698 0,0,	0,0,	122,0,	122,0,
1699 0,0,	118,145,	123,0,	0,0,
1700 123,0,	0,0,	119,146,	124,0,
1701 0,0,	124,0,	123,0,	123,0,
1702 0,0,	0,0,	0,0,	124,0,
1703 124,0,	0,0,	0,0,	122,0,
1704 122,0,	0,0,	0,0,	0,0,
1705 120,147,	125,0,	125,0,	0,0,
1706 126,0,	126,0,	0,0,	123,0,
1707 123,0,	0,0,	0,0,	120,148,
1708 124,0,	124,0,	127,0,	127,0,
1709 0,0,	0,0,	121,149,	0,0,
1710 0,0,	0,0,	0,0,	0,0,
1711 125,0,	0,0,	125,0,	126,0,
1712 0,0,	126,0,	0,0,	0,0,
1713 125,0,	125,0,	0,0,	126,0,
1714 126,0,	127,0,	0,0,	127,0,
1715 0,0,	0,0,	0,0,	0,0,
1716 0,0,	127,0,	127,0,	128,0,
1717 128,0,	122,150,	0,0,	123,151,
1718 0,0,	125,0,	125,0,	0,0,
1719 126,0,	126,0,	0,0,	0,0,
1720 129,0,	129,0,	0,0,	130,0,
1721 130,0,	124,152,	127,0,	127,0,
1722 0,0,	0,0,	128,0,	0,0,
1723 128,0,	131,0,	131,0,	0,0,
1724 0,0,	0,0,	128,0,	128,0,
1725 0,0,	0,0,	0,0,	129,0,
1726 0,0,	129,0,	130,0,	0,0,
1727 130,0,	0,0,	0,0,	129,0,
1728 129,0,	0,0,	130,0,	130,0,
1729 131,0,	0,0,	131,0,	128,0,
1730 128,0,	0,0,	0,0,	0,0,
1731 131,0,	131,0,	132,0,	132,0,
1732 125,153,	0,0,	0,0,	126,154,
1733 129,0,	129,0,	0,0,	130,0,
1734 130,0,	133,0,	133,0,	0,0,
1735 134,0,	134,0,	0,0,	127,155,
1736 0,0,	131,0,	131,0,	0,0,
1737 0,0,	132,0,	0,0,	132,0,
1738 0,0,	0,0,	0,0,	0,0,
1739 0,0,	132,0,	132,0,	0,0,
1740 133,0,	0,0,	133,0,	134,0,
1741 0,0,	134,0,	0,0,	0,0,
1742 133,0,	133,0,	0,0,	134,0,
1743 134,0,	0,0,	128,156,	130,158,
1744 135,0,	135,0,	132,0,	132,0,
1745 0,0,	0,0,	129,157,	0,0,
1746 0,0,	131,159,	136,0,	136,0,
1747 0,0,	133,0,	133,0,	0,0,
1748 134,0,	134,0,	0,0,	0,0,
1749 0,0,	0,0,	0,0,	135,0,
1750 0,0,	135,0,	137,0,	137,0,
1751 0,0,	0,0,	0,0,	135,0,
1752 135,0,	136,0,	0,0,	136,0,
1753 138,0,	138,0,	132,160,	0,0,
1754 0,0,	136,0,	136,0,	0,0,
1755 0,0,	0,0,	0,0,	0,0,
1756 0,0,	137,0,	0,0,	137,0,
1757 135,0,	135,0,	0,0,	0,0,
1758 134,162,	137,0,	137,0,	138,0,
1759 0,0,	138,0,	136,0,	136,0,
1760 133,161,	0,0,	0,0,	138,0,
1761 138,0,	0,0,	139,0,	139,0,
1762 0,0,	140,0,	140,0,	0,0,
1763 0,0,	0,0,	137,0,	137,0,
1764 0,0,	0,0,	0,0,	141,0,
1765 141,0,	0,0,	142,0,	142,0,
1766 138,0,	138,0,	0,0,	0,0,
1767 0,0,	139,0,	0,0,	139,0,
1768 140,0,	0,0,	140,0,	0,0,
1769 0,0,	139,0,	139,0,	135,163,
1770 140,0,	140,0,	141,0,	0,0,
1771 141,0,	142,0,	0,0,	142,0,
1772 0,0,	0,0,	141,0,	141,0,
1773 0,0,	142,0,	142,0,	143,0,
1774 143,0,	137,164,	139,0,	139,0,
1775 0,0,	140,0,	140,0,	0,0,
1776 0,0,	144,0,	144,0,	0,0,
1777 138,165,	0,0,	0,0,	141,0,
1778 141,0,	0,0,	142,0,	142,0,
1779 0,0,	0,0,	143,0,	0,0,
1780 143,0,	145,0,	145,0,	0,0,
1781 0,0,	0,0,	143,0,	143,0,
1782 144,0,	0,0,	144,0,	146,0,
1783 146,0,	0,0,	0,0,	0,0,
1784 144,0,	144,0,	140,167,	0,0,
1785 0,0,	0,0,	0,0,	0,0,
1786 145,0,	0,0,	145,0,	143,0,
1787 143,0,	139,166,	0,0,	0,0,
1788 145,0,	145,0,	146,0,	0,0,
1789 146,0,	144,0,	144,0,	0,0,
1790 0,0,	141,168,	146,0,	146,0,
1791 147,0,	147,0,	0,0,	148,0,
1792 148,0,	0,0,	0,0,	0,0,
1793 0,0,	145,0,	145,0,	0,0,
1794 0,0,	0,0,	149,0,	149,0,
1795 0,0,	150,0,	150,0,	146,0,
1796 146,0,	0,0,	0,0,	147,0,
1797 0,0,	147,0,	148,0,	0,0,
1798 148,0,	0,0,	0,0,	147,0,
1799 147,0,	0,0,	148,0,	148,0,
1800 0,0,	149,0,	143,169,	149,0,
1801 150,0,	0,0,	150,0,	0,0,
1802 0,0,	149,0,	149,0,	0,0,
1803 150,0,	150,0,	0,0,	0,0,
1804 147,0,	147,0,	0,0,	148,0,
1805 148,0,	151,0,	151,0,	145,170,
1806 0,0,	152,0,	152,0,	0,0,
1807 0,0,	0,0,	149,0,	149,0,
1808 0,0,	150,0,	150,0,	0,0,
1809 153,0,	153,0,	146,171,	154,0,
1810 154,0,	0,0,	0,0,	0,0,
1811 151,0,	0,0,	151,0,	0,0,
1812 152,0,	0,0,	152,0,	0,0,
1813 151,0,	151,0,	0,0,	0,0,
1814 152,0,	152,0,	0,0,	153,0,
1815 0,0,	153,0,	154,0,	0,0,
1816 154,0,	0,0,	149,173,	153,0,
1817 153,0,	148,172,	154,0,	154,0,
1818 0,0,	151,0,	151,0,	0,0,
1819 150,174,	152,0,	152,0,	155,0,
1820 155,0,	0,0,	156,0,	156,0,
1821 0,0,	0,0,	0,0,	0,0,
1822 153,0,	153,0,	0,0,	154,0,
1823 154,0,	0,0,	0,0,	157,0,
1824 157,0,	0,0,	158,0,	158,0,
1825 0,0,	0,0,	155,0,	0,0,
1826 155,0,	156,0,	0,0,	156,0,
1827 0,0,	0,0,	155,0,	155,0,
1828 0,0,	156,0,	156,0,	0,0,
1829 0,0,	152,176,	157,0,	0,0,
1830 157,0,	158,0,	0,0,	158,0,
1831 0,0,	0,0,	157,0,	157,0,
1832 151,175,	158,0,	158,0,	155,0,
1833 155,0,	0,0,	156,0,	156,0,
1834 0,0,	159,0,	159,0,	0,0,
1835 160,0,	160,0,	0,0,	0,0,
1836 0,0,	154,177,	0,0,	157,0,
1837 157,0,	0,0,	158,0,	158,0,
1838 161,0,	161,0,	0,0,	0,0,
1839 0,0,	0,0,	0,0,	0,0,
1840 159,0,	0,0,	159,0,	160,0,
1841 0,0,	160,0,	0,0,	0,0,
1842 159,0,	159,0,	0,0,	160,0,
1843 160,0,	0,0,	0,0,	161,0,
1844 0,0,	161,0,	156,178,	0,0,
1845 0,0,	0,0,	0,0,	161,0,
1846 161,0,	0,0,	0,0,	0,0,
1847 158,180,	159,0,	159,0,	0,0,
1848 160,0,	160,0,	0,0,	0,0,
1849 162,0,	162,0,	157,179,	163,0,
1850 163,0,	0,0,	0,0,	0,0,
1851 161,0,	161,0,	0,0,	0,0,
1852 0,0,	0,0,	164,0,	164,0,
1853 0,0,	0,0,	165,0,	165,0,
1854 0,0,	0,0,	0,0,	162,0,
1855 0,0,	162,0,	163,0,	0,0,
1856 163,0,	0,0,	0,0,	162,0,
1857 162,0,	0,0,	163,0,	163,0,
1858 0,0,	164,0,	0,0,	164,0,
1859 0,0,	165,0,	159,181,	165,0,
1860 0,0,	164,0,	164,0,	0,0,
1861 0,0,	165,0,	165,0,	160,182,
1862 162,0,	162,0,	0,0,	163,0,
1863 163,0,	166,0,	166,0,	0,0,
1864 167,0,	167,0,	0,0,	0,0,
1865 0,0,	161,183,	164,0,	164,0,
1866 0,0,	0,0,	165,0,	165,0,
1867 168,0,	168,0,	0,0,	169,0,
1868 169,0,	0,0,	0,0,	0,0,
1869 166,0,	0,0,	166,0,	167,0,
1870 0,0,	167,0,	0,0,	0,0,
1871 166,0,	166,0,	0,0,	167,0,
1872 167,0,	0,0,	0,0,	168,0,
1873 0,0,	168,0,	169,0,	0,0,
1874 169,0,	0,0,	0,0,	168,0,
1875 168,0,	0,0,	169,0,	169,0,
1876 0,0,	166,0,	166,0,	165,184,
1877 167,0,	167,0,	0,0,	170,0,
1878 170,0,	0,0,	171,0,	171,0,
1879 0,0,	0,0,	0,0,	0,0,
1880 168,0,	168,0,	0,0,	169,0,
1881 169,0,	0,0,	172,0,	172,0,
1882 0,0,	173,0,	173,0,	0,0,
1883 0,0,	0,0,	170,0,	0,0,
1884 170,0,	171,0,	0,0,	171,0,
1885 0,0,	0,0,	170,0,	170,0,
1886 0,0,	171,0,	171,0,	0,0,
1887 167,186,	172,0,	0,0,	172,0,
1888 173,0,	0,0,	173,0,	0,0,
1889 0,0,	172,0,	172,0,	0,0,
1890 173,0,	173,0,	166,185,	170,0,
1891 170,0,	0,0,	171,0,	171,0,
1892 174,0,	174,0,	0,0,	168,187,
1893 175,0,	175,0,	0,0,	0,0,
1894 0,0,	0,0,	172,0,	172,0,
1895 0,0,	173,0,	173,0,	176,0,
1896 176,0,	0,0,	177,0,	177,0,
1897 0,0,	0,0,	0,0,	174,0,
1898 0,0,	174,0,	0,0,	175,0,
1899 0,0,	175,0,	0,0,	174,0,
1900 174,0,	0,0,	0,0,	175,0,
1901 175,0,	0,0,	176,0,	0,0,
1902 176,0,	177,0,	171,189,	177,0,
1903 0,0,	0,0,	176,0,	176,0,
1904 170,188,	177,0,	177,0,	0,0,
1905 174,0,	174,0,	0,0,	0,0,
1906 175,0,	175,0,	178,0,	178,0,
1907 0,0,	172,190,	179,0,	179,0,
1908 173,191,	0,0,	0,0,	176,0,
1909 176,0,	0,0,	177,0,	177,0,
1910 180,0,	180,0,	0,0,	0,0,
1911 181,0,	181,0,	0,0,	0,0,
1912 0,0,	178,0,	0,0,	178,0,
1913 0,0,	179,0,	0,0,	179,0,
1914 0,0,	178,0,	178,0,	0,0,
1915 0,0,	179,0,	179,0,	180,0,
1916 0,0,	180,0,	0,0,	181,0,
1917 0,0,	181,0,	0,0,	180,0,
1918 180,0,	0,0,	175,192,	181,0,
1919 181,0,	0,0,	178,0,	178,0,
1920 182,0,	182,0,	179,0,	179,0,
1921 0,0,	183,0,	183,0,	177,193,
1922 0,0,	0,0,	184,0,	184,0,
1923 180,0,	180,0,	0,0,	0,0,
1924 181,0,	181,0,	0,0,	0,0,
1925 0,0,	0,0,	0,0,	182,0,
1926 0,0,	182,0,	0,0,	0,0,
1927 183,0,	0,0,	183,0,	182,0,
1928 182,0,	184,0,	0,0,	184,0,
1929 183,0,	183,0,	0,0,	178,194,
1930 0,0,	184,0,	184,0,	185,0,
1931 185,0,	0,0,	186,0,	186,0,
1932 0,0,	0,0,	0,0,	0,0,
1933 182,0,	182,0,	0,0,	0,0,
1934 0,0,	183,0,	183,0,	187,0,
1935 187,0,	0,0,	184,0,	184,0,
1936 0,0,	0,0,	185,0,	180,195,
1937 185,0,	186,0,	0,0,	186,0,
1938 0,0,	181,196,	185,0,	185,0,
1939 0,0,	186,0,	186,0,	0,0,
1940 0,0,	0,0,	187,0,	0,0,
1941 187,0,	188,0,	188,0,	0,0,
1942 0,0,	0,0,	187,0,	187,0,
1943 182,197,	183,198,	0,0,	185,0,
1944 185,0,	0,0,	186,0,	186,0,
1945 0,0,	189,0,	189,0,	0,0,
1946 190,0,	190,0,	0,0,	0,0,
1947 188,0,	0,0,	188,0,	187,0,
1948 187,0,	0,0,	0,0,	0,0,
1949 188,0,	188,0,	191,0,	191,0,
1950 0,0,	0,0,	184,199,	0,0,
1951 189,0,	0,0,	189,0,	190,0,
1952 0,0,	190,0,	0,0,	185,200,
1953 189,0,	189,0,	0,0,	190,0,
1954 190,0,	188,0,	188,0,	0,0,
1955 0,0,	191,0,	0,0,	191,0,
1956 0,0,	0,0,	0,0,	0,0,
1957 0,0,	191,0,	191,0,	192,0,
1958 192,0,	189,0,	189,0,	0,0,
1959 190,0,	190,0,	0,0,	0,0,
1960 0,0,	193,0,	193,0,	0,0,
1961 194,0,	194,0,	0,0,	0,0,
1962 0,0,	0,0,	191,0,	191,0,
1963 0,0,	0,0,	192,0,	0,0,
1964 192,0,	195,0,	195,0,	0,0,
1965 0,0,	0,0,	192,0,	192,0,
1966 193,0,	0,0,	193,0,	194,0,
1967 0,0,	194,0,	0,0,	0,0,
1968 193,0,	193,0,	189,202,	194,0,
1969 194,0,	188,201,	0,0,	0,0,
1970 195,0,	0,0,	195,0,	192,0,
1971 192,0,	0,0,	0,0,	0,0,
1972 195,0,	195,0,	196,0,	196,0,
1973 0,0,	193,0,	193,0,	0,0,
1974 194,0,	194,0,	0,0,	0,0,
1975 197,0,	197,0,	0,0,	0,0,
1976 0,0,	0,0,	0,0,	0,0,
1977 0,0,	195,0,	195,0,	0,0,
1978 0,0,	196,0,	0,0,	196,0,
1979 198,0,	198,0,	0,0,	0,0,
1980 0,0,	196,0,	196,0,	197,0,
1981 0,0,	197,0,	199,0,	199,0,
1982 0,0,	193,204,	0,0,	197,0,
1983 197,0,	0,0,	0,0,	0,0,
1984 192,203,	0,0,	0,0,	198,0,
1985 0,0,	198,0,	196,0,	196,0,
1986 0,0,	0,0,	0,0,	198,0,
1987 198,0,	199,0,	0,0,	199,0,
1988 197,0,	197,0,	0,0,	0,0,
1989 194,205,	199,0,	199,0,	200,0,
1990 200,0,	0,0,	0,0,	0,0,
1991 201,0,	201,0,	0,0,	0,0,
1992 198,0,	198,0,	0,0,	0,0,
1993 0,0,	0,0,	202,0,	202,0,
1994 0,0,	0,0,	199,0,	199,0,
1995 0,0,	0,0,	200,0,	0,0,
1996 200,0,	0,0,	0,0,	201,0,
1997 0,0,	201,0,	200,0,	200,0,
1998 0,0,	0,0,	0,0,	201,0,
1999 201,0,	202,0,	0,0,	202,0,
2000 203,0,	203,0,	0,0,	0,0,
2001 0,0,	202,0,	202,0,	0,0,
2002 0,0,	0,0,	0,0,	200,0,
2003 200,0,	204,0,	204,0,	198,206,
2004 201,0,	201,0,	205,0,	205,0,
2005 0,0,	0,0,	0,0,	203,0,
2006 0,0,	203,0,	202,0,	202,0,
2007 0,0,	0,0,	0,0,	203,0,
2008 203,0,	0,0,	0,0,	0,0,
2009 204,0,	0,0,	204,0,	0,0,
2010 0,0,	205,0,	0,0,	205,0,
2011 204,0,	204,0,	0,0,	0,0,
2012 0,0,	205,0,	205,0,	0,0,
2013 203,0,	203,0,	0,0,	0,0,
2014 206,0,	206,0,	200,207,	0,0,
2015 0,0,	0,0,	0,0,	0,0,
2016 0,0,	204,0,	204,0,	207,0,
2017 207,0,	0,0,	205,0,	205,0,
2018 208,0,	208,0,	0,0,	0,0,
2019 0,0,	0,0,	0,0,	206,0,
2020 0,0,	206,0,	209,0,	209,0,
2021 0,0,	0,0,	202,208,	206,0,
2022 206,0,	0,0,	207,0,	0,0,
2023 207,0,	0,0,	0,0,	208,0,
2024 0,0,	208,0,	207,0,	207,0,
2025 0,0,	0,0,	0,0,	208,0,
2026 208,0,	209,0,	0,0,	209,0,
2027 206,0,	206,0,	0,0,	0,0,
2028 203,209,	209,0,	209,0,	0,0,
2029 204,210,	210,0,	210,0,	207,0,
2030 207,0,	211,0,	211,0,	0,0,
2031 208,0,	208,0,	0,0,	0,0,
2032 0,0,	0,0,	0,0,	212,0,
2033 212,0,	0,0,	209,0,	209,0,
2034 213,0,	213,0,	0,0,	0,0,
2035 210,0,	0,0,	210,0,	0,0,
2036 211,0,	0,0,	211,0,	0,0,
2037 210,0,	210,0,	0,0,	0,0,
2038 211,0,	211,0,	212,0,	0,0,
2039 212,0,	0,0,	0,0,	213,0,
2040 0,0,	213,0,	212,0,	212,0,
2041 206,211,	0,0,	0,0,	213,0,
2042 213,0,	210,0,	210,0,	0,0,
2043 0,0,	211,0,	211,0,	207,212,
2044 214,0,	214,0,	0,0,	0,0,
2045 0,0,	0,0,	0,0,	212,0,
2046 212,0,	0,0,	0,0,	0,0,
2047 213,0,	213,0,	0,0,	0,0,
2048 0,0,	0,0,	0,0,	0,0,
2049 0,0,	0,0,	0,0,	214,0,
2050 0,0,	214,0,	0,0,	0,0,
2051 0,0,	0,0,	0,0,	214,0,
2052 214,0,	0,0,	0,0,	0,0,
2053 0,0,	211,213,	0,0,	0,0,
2054 0,0,	0,0,	0,0,	0,0,
2055 0,0,	0,0,	0,0,	212,214,
2056 0,0,	0,0,	0,0,	0,0,
2057 214,0,	214,0,	0,0,	0,0,
2058 0,0};
2059 struct yysvf yysvec[] = {
2060 0,	0,	0,
2061 yycrank+-1,	0,		0,
2062 yycrank+-23,	yysvec+1,	0,
2063 yycrank+-4,	0,		0,
2064 yycrank+-8,	yysvec+3,	0,
2065 yycrank+-16,	0,		yyvstop+1,
2066 yycrank+14,	0,		yyvstop+4,
2067 yycrank+0,	0,		yyvstop+7,
2068 yycrank+-19,	0,		yyvstop+9,
2069 yycrank+-21,	0,		yyvstop+11,
2070 yycrank+0,	0,		yyvstop+15,
2071 yycrank+0,	0,		yyvstop+18,
2072 yycrank+0,	0,		yyvstop+21,
2073 yycrank+0,	0,		yyvstop+24,
2074 yycrank+-116,	0,		yyvstop+27,
2075 yycrank+-133,	yysvec+5,	yyvstop+30,
2076 yycrank+-120,	yysvec+5,	yyvstop+33,
2077 yycrank+-170,	0,		yyvstop+36,
2078 yycrank+-183,	yysvec+5,	yyvstop+39,
2079 yycrank+-217,	0,		yyvstop+42,
2080 yycrank+-42,	yysvec+5,	yyvstop+45,
2081 yycrank+-227,	yysvec+5,	yyvstop+48,
2082 yycrank+-262,	yysvec+5,	yyvstop+51,
2083 yycrank+-267,	yysvec+5,	yyvstop+54,
2084 yycrank+-272,	yysvec+5,	yyvstop+57,
2085 yycrank+-305,	yysvec+5,	yyvstop+60,
2086 yycrank+-308,	yysvec+5,	yyvstop+63,
2087 yycrank+0,	yysvec+6,	yyvstop+65,
2088 yycrank+0,	yysvec+8,	0,
2089 yycrank+0,	0,		yyvstop+67,
2090 yycrank+-57,	yysvec+8,	0,
2091 yycrank+0,	yysvec+9,	yyvstop+69,
2092 yycrank+-2,	yysvec+9,	yyvstop+72,
2093 yycrank+0,	0,		yyvstop+74,
2094 yycrank+-343,	yysvec+5,	yyvstop+76,
2095 yycrank+-346,	yysvec+5,	yyvstop+78,
2096 yycrank+-379,	yysvec+5,	yyvstop+80,
2097 yycrank+-383,	yysvec+5,	yyvstop+82,
2098 yycrank+-420,	0,		yyvstop+84,
2099 yycrank+-425,	yysvec+5,	yyvstop+86,
2100 yycrank+-439,	yysvec+5,	yyvstop+88,
2101 yycrank+-482,	0,		yyvstop+90,
2102 yycrank+-465,	yysvec+5,	yyvstop+92,
2103 yycrank+-479,	yysvec+5,	yyvstop+94,
2104 yycrank+-515,	yysvec+5,	yyvstop+96,
2105 yycrank+-527,	yysvec+5,	yyvstop+98,
2106 yycrank+-561,	yysvec+5,	yyvstop+100,
2107 yycrank+-595,	0,		yyvstop+102,
2108 yycrank+-598,	0,		yyvstop+104,
2109 yycrank+-609,	yysvec+5,	yyvstop+106,
2110 yycrank+-642,	yysvec+5,	yyvstop+108,
2111 yycrank+-654,	yysvec+5,	yyvstop+110,
2112 yycrank+-659,	yysvec+5,	yyvstop+113,
2113 yycrank+-699,	yysvec+5,	yyvstop+115,
2114 yycrank+-702,	yysvec+5,	yyvstop+117,
2115 yycrank+-717,	0,		yyvstop+119,
2116 yycrank+-713,	yysvec+5,	yyvstop+121,
2117 yycrank+-761,	yysvec+5,	yyvstop+123,
2118 yycrank+-773,	yysvec+5,	yyvstop+125,
2119 yycrank+-776,	yysvec+5,	yyvstop+128,
2120 yycrank+-810,	yysvec+5,	yyvstop+130,
2121 yycrank+-821,	yysvec+5,	yyvstop+132,
2122 yycrank+-847,	yysvec+5,	yyvstop+134,
2123 yycrank+-857,	yysvec+5,	yyvstop+136,
2124 yycrank+-890,	yysvec+5,	yyvstop+138,
2125 yycrank+-893,	yysvec+5,	yyvstop+140,
2126 yycrank+-904,	yysvec+5,	yyvstop+142,
2127 yycrank+-937,	yysvec+5,	yyvstop+144,
2128 yycrank+-952,	yysvec+5,	yyvstop+146,
2129 yycrank+-940,	yysvec+5,	yyvstop+148,
2130 yycrank+-978,	yysvec+5,	yyvstop+150,
2131 yycrank+-996,	yysvec+5,	yyvstop+152,
2132 yycrank+-1014,	0,		yyvstop+154,
2133 yycrank+-1032,	yysvec+5,	yyvstop+157,
2134 yycrank+-1050,	yysvec+5,	yyvstop+159,
2135 yycrank+-1068,	0,		yyvstop+161,
2136 yycrank+-1104,	yysvec+5,	yyvstop+163,
2137 yycrank+-1107,	yysvec+5,	yyvstop+165,
2138 yycrank+-1118,	yysvec+5,	yyvstop+167,
2139 yycrank+-1122,	yysvec+5,	yyvstop+169,
2140 yycrank+-1165,	yysvec+5,	yyvstop+171,
2141 yycrank+-1168,	yysvec+5,	yyvstop+173,
2142 yycrank+-1179,	yysvec+75,	yyvstop+175,
2143 yycrank+-1182,	yysvec+5,	yyvstop+177,
2144 yycrank+-1223,	yysvec+5,	yyvstop+179,
2145 yycrank+-1226,	yysvec+5,	yyvstop+181,
2146 yycrank+-1236,	yysvec+5,	yyvstop+184,
2147 yycrank+-1240,	yysvec+5,	yyvstop+186,
2148 yycrank+-1280,	yysvec+5,	yyvstop+188,
2149 yycrank+-1285,	yysvec+5,	yyvstop+191,
2150 yycrank+-1290,	yysvec+5,	yyvstop+193,
2151 yycrank+-1335,	0,		yyvstop+195,
2152 yycrank+-1323,	yysvec+5,	yyvstop+198,
2153 yycrank+-1361,	yysvec+5,	yyvstop+201,
2154 yycrank+-1349,	yysvec+5,	yyvstop+203,
2155 yycrank+-1394,	yysvec+5,	yyvstop+205,
2156 yycrank+-1397,	yysvec+5,	yyvstop+207,
2157 yycrank+-1408,	yysvec+5,	yyvstop+209,
2158 yycrank+-1434,	yysvec+5,	yyvstop+211,
2159 yycrank+-1451,	yysvec+5,	yyvstop+213,
2160 yycrank+-1468,	yysvec+5,	yyvstop+215,
2161 yycrank+-1484,	yysvec+48,	yyvstop+217,
2162 yycrank+-1494,	yysvec+5,	yyvstop+219,
2163 yycrank+-1527,	yysvec+5,	yyvstop+221,
2164 yycrank+-1540,	yysvec+5,	yyvstop+224,
2165 yycrank+-1543,	yysvec+5,	yyvstop+226,
2166 yycrank+-1576,	yysvec+5,	yyvstop+229,
2167 yycrank+-1581,	yysvec+5,	yyvstop+231,
2168 yycrank+-1586,	yysvec+5,	yyvstop+233,
2169 yycrank+-1620,	yysvec+5,	yyvstop+235,
2170 yycrank+-1623,	yysvec+5,	yyvstop+237,
2171 yycrank+-1635,	yysvec+5,	yyvstop+239,
2172 yycrank+-1661,	yysvec+5,	yyvstop+242,
2173 yycrank+-1679,	yysvec+5,	yyvstop+244,
2174 yycrank+-1696,	yysvec+5,	yyvstop+246,
2175 yycrank+-1715,	yysvec+5,	yyvstop+248,
2176 yycrank+-1733,	yysvec+5,	yyvstop+250,
2177 yycrank+-1751,	yysvec+5,	yyvstop+252,
2178 yycrank+-1777,	yysvec+5,	yyvstop+254,
2179 yycrank+-1787,	yysvec+5,	yyvstop+256,
2180 yycrank+-1813,	yysvec+75,	yyvstop+258,
2181 yycrank+-1824,	yysvec+5,	yyvstop+260,
2182 yycrank+-1850,	yysvec+5,	yyvstop+262,
2183 yycrank+-1862,	yysvec+5,	yyvstop+264,
2184 yycrank+-1867,	yysvec+5,	yyvstop+266,
2185 yycrank+-1908,	yysvec+5,	yyvstop+268,
2186 yycrank+-1911,	yysvec+5,	yyvstop+270,
2187 yycrank+-1921,	yysvec+5,	yyvstop+272,
2188 yycrank+-1954,	yysvec+5,	yyvstop+274,
2189 yycrank+-1967,	yysvec+5,	yyvstop+276,
2190 yycrank+-1970,	yysvec+5,	yyvstop+278,
2191 yycrank+-1980,	yysvec+5,	yyvstop+280,
2192 yycrank+-2013,	yysvec+5,	yyvstop+282,
2193 yycrank+-2024,	yysvec+5,	yyvstop+284,
2194 yycrank+-2027,	yysvec+5,	yyvstop+286,
2195 yycrank+-2063,	yysvec+5,	yyvstop+288,
2196 yycrank+-2073,	yysvec+5,	yyvstop+290,
2197 yycrank+-2089,	yysvec+5,	yyvstop+293,
2198 yycrank+-2099,	yysvec+5,	yyvstop+295,
2199 yycrank+-2133,	yysvec+5,	yyvstop+297,
2200 yycrank+-2136,	yysvec+5,	yyvstop+299,
2201 yycrank+-2146,	yysvec+5,	yyvstop+301,
2202 yycrank+-2149,	yysvec+5,	yyvstop+303,
2203 yycrank+-2182,	yysvec+5,	yyvstop+306,
2204 yycrank+-2192,	yysvec+5,	yyvstop+308,
2205 yycrank+-2208,	yysvec+5,	yyvstop+311,
2206 yycrank+-2218,	yysvec+5,	yyvstop+313,
2207 yycrank+-2251,	yysvec+5,	yyvstop+315,
2208 yycrank+-2254,	yysvec+5,	yyvstop+318,
2209 yycrank+-2265,	yysvec+5,	yyvstop+320,
2210 yycrank+-2268,	yysvec+5,	yyvstop+322,
2211 yycrank+-2308,	yysvec+5,	yyvstop+324,
2212 yycrank+-2312,	yysvec+5,	yyvstop+326,
2213 yycrank+-2323,	yysvec+5,	yyvstop+328,
2214 yycrank+-2326,	yysvec+5,	yyvstop+331,
2215 yycrank+-2366,	yysvec+5,	yyvstop+334,
2216 yycrank+-2369,	yysvec+5,	yyvstop+337,
2217 yycrank+-2382,	yysvec+5,	yyvstop+339,
2218 yycrank+-2385,	yysvec+5,	yyvstop+341,
2219 yycrank+-2424,	yysvec+5,	yyvstop+343,
2220 yycrank+-2427,	yysvec+5,	yyvstop+345,
2221 yycrank+-2439,	yysvec+5,	yyvstop+347,
2222 yycrank+-2483,	yysvec+5,	yyvstop+349,
2223 yycrank+-2486,	yysvec+5,	yyvstop+352,
2224 yycrank+-2497,	yysvec+5,	yyvstop+355,
2225 yycrank+-2501,	yysvec+5,	yyvstop+358,
2226 yycrank+-2540,	yysvec+5,	yyvstop+360,
2227 yycrank+-2543,	yysvec+5,	yyvstop+363,
2228 yycrank+-2555,	yysvec+5,	yyvstop+365,
2229 yycrank+-2558,	yysvec+5,	yyvstop+367,
2230 yycrank+-2598,	yysvec+5,	yyvstop+370,
2231 yycrank+-2601,	yysvec+5,	yyvstop+372,
2232 yycrank+-2613,	yysvec+5,	yyvstop+374,
2233 yycrank+-2616,	yysvec+5,	yyvstop+376,
2234 yycrank+-2655,	yysvec+5,	yyvstop+378,
2235 yycrank+-2659,	yysvec+5,	yyvstop+381,
2236 yycrank+-2670,	yysvec+5,	yyvstop+383,
2237 yycrank+-2673,	yysvec+5,	yyvstop+386,
2238 yycrank+-2713,	yysvec+5,	yyvstop+388,
2239 yycrank+-2717,	yysvec+5,	yyvstop+390,
2240 yycrank+-2727,	yysvec+5,	yyvstop+393,
2241 yycrank+-2731,	yysvec+5,	yyvstop+395,
2242 yycrank+-2767,	yysvec+5,	yyvstop+397,
2243 yycrank+-2772,	yysvec+5,	yyvstop+399,
2244 yycrank+-2777,	yysvec+5,	yyvstop+401,
2245 yycrank+-2810,	yysvec+5,	yyvstop+403,
2246 yycrank+-2813,	yysvec+5,	yyvstop+405,
2247 yycrank+-2826,	yysvec+5,	yyvstop+408,
2248 yycrank+-2852,	yysvec+5,	yyvstop+411,
2249 yycrank+-2868,	yysvec+5,	yyvstop+413,
2250 yycrank+-2871,	yysvec+5,	yyvstop+415,
2251 yycrank+-2885,	yysvec+5,	yyvstop+418,
2252 yycrank+-2918,	yysvec+5,	yyvstop+421,
2253 yycrank+-2928,	yysvec+5,	yyvstop+423,
2254 yycrank+-2931,	yysvec+5,	yyvstop+425,
2255 yycrank+-2944,	yysvec+5,	yyvstop+427,
2256 yycrank+-2977,	yysvec+5,	yyvstop+430,
2257 yycrank+-2987,	yysvec+5,	yyvstop+433,
2258 yycrank+-3003,	yysvec+5,	yyvstop+436,
2259 yycrank+-3013,	yysvec+5,	yyvstop+438,
2260 yycrank+-3046,	yysvec+5,	yyvstop+441,
2261 yycrank+-3051,	yysvec+5,	yyvstop+443,
2262 yycrank+-3061,	yysvec+5,	yyvstop+446,
2263 yycrank+-3087,	yysvec+5,	yyvstop+448,
2264 yycrank+-3100,	yysvec+5,	yyvstop+450,
2265 yycrank+-3105,	yysvec+5,	yyvstop+452,
2266 yycrank+-3143,	yysvec+5,	yyvstop+455,
2267 yycrank+-3154,	yysvec+5,	yyvstop+457,
2268 yycrank+-3159,	yysvec+5,	yyvstop+459,
2269 yycrank+-3169,	yysvec+5,	yyvstop+462,
2270 yycrank+-3204,	yysvec+5,	yyvstop+465,
2271 yycrank+-3208,	yysvec+5,	yyvstop+468,
2272 yycrank+-3218,	yysvec+5,	yyvstop+470,
2273 yycrank+-3223,	yysvec+5,	yyvstop+472,
2274 yycrank+-3263,	yysvec+5,	yyvstop+475,
2275 0,	0,	0};
2276 struct yywork *yytop = yycrank+3325;
2277 struct yysvf *yybgin = yysvec+1;
2278 char yymatch[] = {
2279   0,   1,   1,   1,   1,   1,   1,   1,
2280   1,   9,  10,   1,   1,   1,   1,   1,
2281   1,   1,   1,   1,   1,   1,   1,   1,
2282   1,   1,   1,   1,   1,   1,   1,   1,
2283   9,   1,  34,   1,   1,   1,   1,   1,
2284  40,  40,   1,   1,   1,   1,   1,   1,
2285   1,   1,   1,   1,   1,   1,   1,   1,
2286   1,   1,   1,   1,   1,  40,  40,   1,
2287   1,   1,   1,   1,   1,   1,   1,   1,
2288   1,   1,   1,   1,   1,   1,   1,   1,
2289   1,   1,   1,   1,   1,   1,   1,   1,
2290   1,   1,   1,   1,  92,   1,   1,   1,
2291   1,   1,   1,   1,   1,   1,   1,   1,
2292   1,   1,   1,   1,   1,   1,   1,   1,
2293   1,   1,   1,   1,   1,   1,   1,   1,
2294   1,   1,   1,   1,   1,   1,   1,   1,
2295   1,   1,   1,   1,   1,   1,   1,   1,
2296   1,   1,   1,   1,   1,   1,   1,   1,
2297   1,   1,   1,   1,   1,   1,   1,   1,
2298   1,   1,   1,   1,   1,   1,   1,   1,
2299   1,   1,   1,   1,   1,   1,   1,   1,
2300   1,   1,   1,   1,   1,   1,   1,   1,
2301   1,   1,   1,   1,   1,   1,   1,   1,
2302   1,   1,   1,   1,   1,   1,   1,   1,
2303   1,   1,   1,   1,   1,   1,   1,   1,
2304   1,   1,   1,   1,   1,   1,   1,   1,
2305   1,   1,   1,   1,   1,   1,   1,   1,
2306   1,   1,   1,   1,   1,   1,   1,   1,
2307   1,   1,   1,   1,   1,   1,   1,   1,
2308   1,   1,   1,   1,   1,   1,   1,   1,
2309   1,   1,   1,   1,   1,   1,   1,   1,
2310   1,   1,   1,   1,   1,   1,   1,   1,
2311 0};
2312 char yyextra[] = {
2313 0,1,0,0,0,0,0,0,
2314 0,0,0,0,0,0,0,0,
2315 0,0,0,0,0,0,0,0,
2316 0,0,0,0,0,0,0,0,
2317 0,0,0,0,0,0,0,0,
2318 0,0,0,0,0,0,0,0,
2319 0,0,0,0,0,0,0,0,
2320 0};
2321 /*
2322  * CDDL HEADER START
2323  *
2324  * The contents of this file are subject to the terms of the
2325  * Common Development and Distribution License, Version 1.0 only
2326  * (the "License").  You may not use this file except in compliance
2327  * with the License.
2328  *
2329  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2330  * or http://www.opensolaris.org/os/licensing.
2331  * See the License for the specific language governing permissions
2332  * and limitations under the License.
2333  *
2334  * When distributing Covered Code, include this CDDL HEADER in each
2335  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2336  * If applicable, add the following below this CDDL HEADER, with the
2337  * fields enclosed by brackets "[]" replaced with your own identifying
2338  * information: Portions Copyright [yyyy] [name of copyright owner]
2339  *
2340  * CDDL HEADER END
2341  */
2342 
2343 /*	Copyright (c) 1989 AT&T	*/
2344 /*	  All Rights Reserved  	*/
2345 
2346 #pragma ident	"%Z%%M%	%I%	%E% SMI"
2347 
2348 int yylineno =1;
2349 # define YYU(x) x
2350 # define NLSTATE yyprevious=YYNEWLINE
2351 struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
2352 char yysbuf[YYLMAX];
2353 char *yysptr = yysbuf;
2354 int *yyfnd;
2355 extern struct yysvf *yyestate;
2356 int yyprevious = YYNEWLINE;
2357 #if defined(__cplusplus) || defined(__STDC__)
2358 int yylook(void)
2359 #else
2360 yylook()
2361 #endif
2362 {
2363 	register struct yysvf *yystate, **lsp;
2364 	register struct yywork *yyt;
2365 	struct yysvf *yyz;
2366 	int yych, yyfirst;
2367 	struct yywork *yyr;
2368 # ifdef LEXDEBUG
2369 	int debug;
2370 # endif
2371 	char *yylastch;
2372 	/* start off machines */
2373 # ifdef LEXDEBUG
2374 	debug = 0;
2375 # endif
2376 	yyfirst=1;
2377 	if (!yymorfg)
2378 		yylastch = yytext;
2379 	else {
2380 		yymorfg=0;
2381 		yylastch = yytext+yyleng;
2382 		}
2383 	for(;;){
2384 		lsp = yylstate;
2385 		yyestate = yystate = yybgin;
2386 		if (yyprevious==YYNEWLINE) yystate++;
2387 		for (;;){
2388 # ifdef LEXDEBUG
2389 			if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
2390 # endif
2391 			yyt = yystate->yystoff;
2392 			if(yyt == yycrank && !yyfirst){  /* may not be any transitions */
2393 				yyz = yystate->yyother;
2394 				if(yyz == 0)break;
2395 				if(yyz->yystoff == yycrank)break;
2396 				}
2397 #ifndef __cplusplus
2398 			*yylastch++ = yych = input();
2399 #else
2400 			*yylastch++ = yych = lex_input();
2401 #endif
2402 #ifdef YYISARRAY
2403 			if(yylastch > &yytext[YYLMAX]) {
2404 				fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
2405 				exit(1);
2406 			}
2407 #else
2408 			if (yylastch >= &yytext[ yytextsz ]) {
2409 				int	x = yylastch - yytext;
2410 
2411 				yytextsz += YYTEXTSZINC;
2412 				if (yytext == yy_tbuf) {
2413 				    yytext = (char *) malloc(yytextsz);
2414 				    memcpy(yytext, yy_tbuf, sizeof (yy_tbuf));
2415 				}
2416 				else
2417 				    yytext = (char *) realloc(yytext, yytextsz);
2418 				if (!yytext) {
2419 				    fprintf(yyout,
2420 					"Cannot realloc yytext\n");
2421 				    exit(1);
2422 				}
2423 				yylastch = yytext + x;
2424 			}
2425 #endif
2426 			yyfirst=0;
2427 		tryagain:
2428 # ifdef LEXDEBUG
2429 			if(debug){
2430 				fprintf(yyout,"char ");
2431 				allprint(yych);
2432 				putchar('\n');
2433 				}
2434 # endif
2435 			yyr = yyt;
2436 			if ( (uintptr_t)yyt > (uintptr_t)yycrank){
2437 				yyt = yyr + yych;
2438 				if (yyt <= yytop && yyt->verify+yysvec == yystate){
2439 					if(yyt->advance+yysvec == YYLERR)	/* error transitions */
2440 						{unput(*--yylastch);break;}
2441 					*lsp++ = yystate = yyt->advance+yysvec;
2442 					if(lsp > &yylstate[YYLMAX]) {
2443 						fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
2444 						exit(1);
2445 					}
2446 					goto contin;
2447 					}
2448 				}
2449 # ifdef YYOPTIM
2450 			else if((uintptr_t)yyt < (uintptr_t)yycrank) {	/* r < yycrank */
2451 				yyt = yyr = yycrank+(yycrank-yyt);
2452 # ifdef LEXDEBUG
2453 				if(debug)fprintf(yyout,"compressed state\n");
2454 # endif
2455 				yyt = yyt + yych;
2456 				if(yyt <= yytop && yyt->verify+yysvec == yystate){
2457 					if(yyt->advance+yysvec == YYLERR)	/* error transitions */
2458 						{unput(*--yylastch);break;}
2459 					*lsp++ = yystate = yyt->advance+yysvec;
2460 					if(lsp > &yylstate[YYLMAX]) {
2461 						fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
2462 						exit(1);
2463 					}
2464 					goto contin;
2465 					}
2466 				yyt = yyr + YYU(yymatch[yych]);
2467 # ifdef LEXDEBUG
2468 				if(debug){
2469 					fprintf(yyout,"try fall back character ");
2470 					allprint(YYU(yymatch[yych]));
2471 					putchar('\n');
2472 					}
2473 # endif
2474 				if(yyt <= yytop && yyt->verify+yysvec == yystate){
2475 					if(yyt->advance+yysvec == YYLERR)	/* error transition */
2476 						{unput(*--yylastch);break;}
2477 					*lsp++ = yystate = yyt->advance+yysvec;
2478 					if(lsp > &yylstate[YYLMAX]) {
2479 						fprintf(yyout,"Input string too long, limit %d\n",YYLMAX);
2480 						exit(1);
2481 					}
2482 					goto contin;
2483 					}
2484 				}
2485 			if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
2486 # ifdef LEXDEBUG
2487 				if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
2488 # endif
2489 				goto tryagain;
2490 				}
2491 # endif
2492 			else
2493 				{unput(*--yylastch);break;}
2494 		contin:
2495 # ifdef LEXDEBUG
2496 			if(debug){
2497 				fprintf(yyout,"state %d char ",yystate-yysvec-1);
2498 				allprint(yych);
2499 				putchar('\n');
2500 				}
2501 # endif
2502 			;
2503 			}
2504 # ifdef LEXDEBUG
2505 		if(debug){
2506 			fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
2507 			allprint(yych);
2508 			putchar('\n');
2509 			}
2510 # endif
2511 		while (lsp-- > yylstate){
2512 			*yylastch-- = 0;
2513 			if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
2514 				yyolsp = lsp;
2515 				if(yyextra[*yyfnd]){		/* must backup */
2516 					while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
2517 						lsp--;
2518 						unput(*yylastch--);
2519 						}
2520 					}
2521 				yyprevious = YYU(*yylastch);
2522 				yylsp = lsp;
2523 				yyleng = yylastch-yytext+1;
2524 				yytext[yyleng] = 0;
2525 # ifdef LEXDEBUG
2526 				if(debug){
2527 					fprintf(yyout,"\nmatch ");
2528 					sprint(yytext);
2529 					fprintf(yyout," action %d\n",*yyfnd);
2530 					}
2531 # endif
2532 				return(*yyfnd++);
2533 				}
2534 			unput(*yylastch);
2535 			}
2536 		if (yytext[0] == 0  /* && feof(yyin) */)
2537 			{
2538 			yysptr=yysbuf;
2539 			return(0);
2540 			}
2541 #ifndef __cplusplus
2542 		yyprevious = yytext[0] = input();
2543 		if (yyprevious>0)
2544 			output(yyprevious);
2545 #else
2546 		yyprevious = yytext[0] = lex_input();
2547 		if (yyprevious>0)
2548 			lex_output(yyprevious);
2549 #endif
2550 		yylastch=yytext;
2551 # ifdef LEXDEBUG
2552 		if(debug)putchar('\n');
2553 # endif
2554 		}
2555 	}
2556 #if defined(__cplusplus) || defined(__STDC__)
2557 int yyback(int *p, int m)
2558 #else
2559 yyback(p, m)
2560 	int *p;
2561 #endif
2562 {
2563 	if (p==0) return(0);
2564 	while (*p) {
2565 		if (*p++ == m)
2566 			return(1);
2567 	}
2568 	return(0);
2569 }
2570 	/* the following are only used in the lex library */
2571 #if defined(__cplusplus) || defined(__STDC__)
2572 int yyinput(void)
2573 #else
2574 yyinput()
2575 #endif
2576 {
2577 #ifndef __cplusplus
2578 	return(input());
2579 #else
2580 	return(lex_input());
2581 #endif
2582 	}
2583 #if defined(__cplusplus) || defined(__STDC__)
2584 void yyoutput(int c)
2585 #else
2586 yyoutput(c)
2587   int c;
2588 #endif
2589 {
2590 #ifndef __cplusplus
2591 	output(c);
2592 #else
2593 	lex_output(c);
2594 #endif
2595 	}
2596 #if defined(__cplusplus) || defined(__STDC__)
2597 void yyunput(int c)
2598 #else
2599 yyunput(c)
2600    int c;
2601 #endif
2602 {
2603 	unput(c);
2604 	}
2605