From f59d075daddeadc6b62253f8f3ae872e6b64a743 Mon Sep 17 00:00:00 2001 From: Lev Walkin Date: Wed, 18 Aug 2004 04:59:12 +0000 Subject: new style constraints implementation support --- libasn1parser/asn1p_l.c | 3259 +++++++++++++++++++++++++---------------------- 1 file changed, 1705 insertions(+), 1554 deletions(-) (limited to 'libasn1parser/asn1p_l.c') diff --git a/libasn1parser/asn1p_l.c b/libasn1parser/asn1p_l.c index bbddbcc0..f40f7a38 100644 --- a/libasn1parser/asn1p_l.c +++ b/libasn1parser/asn1p_l.c @@ -16,12 +16,11 @@ #define yytext asn1p_text #define yylineno asn1p_lineno -#line 20 "lex.yy.c" +#line 20 "asn1p_l.c" /* A lexical scanner generated by flex */ /* Scanner skeleton version: * $Header$ - * $FreeBSD: src/usr.bin/lex/flex.skl,v 1.4 1999/10/27 07:56:44 obrien Exp $ */ #define FLEX_SCANNER @@ -313,220 +312,235 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 123 -#define YY_END_OF_BUFFER 124 -static yyconst short int yy_acclist[1196] = +#define YY_NUM_RULES 132 +#define YY_END_OF_BUFFER 133 +static yyconst short int yy_acclist[1291] = { 0, - 124, 122, 123, 117, 122, 123, 117, 123, 116, 122, - 123, 15, 122, 123, 116, 122, 123, 122, 123, 116, - 122, 123, 122, 123, 116, 122, 123, 122, 123, 23, - 122, 123, 22, 122, 123, 116, 122, 123, 122, 123, - 111, 112, 122, 123, 111, 112, 122, 123, 111, 112, - 122, 123, 111, 112, 122, 123, 111, 112, 122, 123, - 111, 112, 122, 123, 111, 112, 122, 123, 111, 112, - 122, 123, 111, 112, 122, 123, 111, 112, 122, 123, - 111, 112, 122, 123, 111, 112, 122, 123, 111, 112, - 122, 123, 111, 112, 122, 123, 111, 112, 122, 123, - - 111, 112, 122, 123, 111, 112, 122, 123, 111, 112, - 122, 123, 111, 112, 122, 123, 116, 122, 123, 110, - 122, 123, 5, 122, 123, 2, 123, 2, 122, 123, - 4, 122, 123, 7, 9, 122, 123, 7, 123, 9, - 122, 123, 9, 122, 123, 17, 122, 123, 17, 123, - 18, 122, 123, 12, 122, 123, 12, 123, 14, 122, - 123, 14, 122, 123, 10, 122, 123, 11, 122, 123, - 119, 122, 123, 120, 122, 123, 120, 123, 122, 123, - 121, 122, 123, 117, 15, 15, 108, 109, 1, 21, - 115, 6, 22, 111, 112, 111, 112, 111, 112, 111, - - 112, 111, 112, 111, 112, 112, 111, 112, 111, 112, - 111, 112, 111, 112, 36, 111, 112, 111, 112, 111, - 112, 111, 112, 111, 112, 111, 112, 111, 112, 111, - 112, 111, 112, 111, 112, 112, 112, 111, 112, 111, - 112, 111, 112, 111, 112, 111, 112, 111, 112, 111, - 112, 111, 112, 112, 111, 112, 111, 112, 79, 111, - 112, 111, 112, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 112, 111, 112, 111, 112, 111, 112, 111, - 112, 111, 112, 111, 112, 111, 112, 111, 112, 111, - 112, 112, 111, 112, 111, 112, 112, 112, 111, 112, - - 110, 5, 3, 8, 17, 16, 12, 119, 120, 118, - 108, 109, 21, 114, 113, 111, 112, 28, 111, 112, - 29, 111, 112, 111, 112, 111, 112, 111, 112, 33, - 111, 112, 111, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 111, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 49, 111, 112, 111, 112, 111, 112, 111, - 112, 111, 112, 111, 112, 111, 112, 112, 112, 111, - 112, 111, 112, 111, 112, 111, 112, 111, 112, 111, - 112, 111, 112, 71, 111, 112, 72, 111, 112, 111, - 112, 112, 111, 112, 111, 112, 111, 112, 112, 111, - - 112, 82, 111, 112, 111, 112, 111, 112, 111, 112, - 112, 111, 112, 111, 112, 111, 112, 90, 111, 112, - 111, 112, 111, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 111, 112, 112, 111, 112, 111, 112, 111, - 112, 112, 112, 112, 111, 112, 24, 13, 20, 19, - 111, 112, 111, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 111, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 111, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 111, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 111, 112, 111, 112, 57, 111, 112, 112, - - 112, 111, 112, 111, 112, 111, 112, 111, 112, 111, - 112, 111, 112, 111, 112, 111, 112, 111, 112, 74, - 111, 112, 112, 111, 112, 111, 112, 111, 112, 112, - 111, 112, 111, 112, 111, 112, 111, 112, 112, 87, - 111, 112, 111, 112, 111, 112, 91, 111, 112, 111, - 112, 111, 112, 111, 112, 95, 111, 112, 97, 111, - 112, 111, 112, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 111, 112, 112, 112, 112, 107, 111, 112, - 111, 112, 111, 112, 111, 112, 111, 112, 32, 111, - 112, 112, 111, 112, 111, 112, 111, 112, 39, 111, - - 112, 111, 112, 111, 112, 111, 112, 111, 112, 111, - 112, 111, 112, 111, 112, 111, 112, 111, 112, 111, - 112, 111, 112, 111, 112, 111, 112, 56, 111, 112, - 112, 112, 112, 111, 112, 111, 112, 111, 112, 111, - 112, 111, 112, 111, 112, 111, 112, 111, 112, 111, - 112, 112, 111, 112, 78, 111, 112, 111, 112, 112, - 111, 112, 111, 112, 111, 112, 111, 112, 112, 111, - 112, 111, 112, 111, 112, 111, 112, 112, 111, 112, - 112, 99, 111, 112, 111, 112, 111, 112, 112, 111, - 112, 112, 112, 112, 25, 26, 111, 112, 111, 112, - - 111, 112, 111, 112, 112, 111, 112, 111, 112, 38, - 111, 112, 111, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 111, 112, 111, 112, 111, 112, 111, 112, - 51, 111, 112, 111, 112, 111, 112, 111, 112, 111, - 112, 112, 112, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 111, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 111, 112, 112, 76, 111, 112, 111, 112, - 112, 111, 112, 111, 112, 111, 112, 111, 112, 112, - 111, 112, 111, 112, 92, 111, 112, 93, 111, 112, - 112, 111, 112, 112, 100, 111, 112, 111, 112, 112, - - 112, 112, 112, 112, 111, 112, 111, 112, 111, 112, - 112, 35, 111, 112, 111, 112, 111, 112, 111, 112, - 111, 112, 44, 111, 112, 45, 111, 112, 111, 112, - 111, 112, 48, 111, 112, 111, 112, 111, 112, 53, - 111, 112, 111, 112, 111, 112, 112, 112, 112, 111, - 112, 111, 112, 64, 111, 112, 65, 111, 112, 111, - 112, 111, 112, 68, 111, 112, 111, 112, 111, 112, - 111, 112, 112, 111, 112, 112, 81, 111, 112, 111, - 112, 84, 111, 112, 86, 111, 112, 112, 111, 112, - 111, 112, 112, 111, 112, 112, 111, 112, 103, 112, - - 112, 112, 112, 112, 111, 112, 111, 112, 111, 112, - 112, 111, 112, 111, 112, 111, 112, 111, 112, 111, - 112, 47, 111, 112, 111, 112, 52, 111, 112, 111, - 112, 55, 111, 112, 112, 112, 112, 112, 111, 112, - 63, 111, 112, 66, 111, 112, 67, 111, 112, 111, - 112, 112, 111, 112, 112, 80, 111, 112, 112, 111, - 112, 112, 111, 112, 89, 111, 112, 112, 111, 112, - 112, 111, 112, 112, 112, 112, 112, 111, 112, 111, - 112, 31, 111, 112, 34, 112, 37, 111, 112, 40, - 111, 112, 111, 112, 111, 112, 111, 112, 111, 112, - - 111, 112, 112, 112, 112, 61, 112, 111, 112, 111, - 112, 112, 111, 112, 112, 112, 111, 112, 112, 111, - 112, 94, 112, 111, 112, 112, 101, 111, 112, 112, - 112, 112, 112, 111, 112, 111, 112, 41, 111, 112, - 42, 111, 112, 43, 111, 112, 111, 112, 50, 111, - 112, 111, 112, 112, 112, 112, 62, 111, 112, 111, - 112, 112, 111, 112, 112, 112, 111, 112, 112, 111, - 112, 111, 112, 112, 104, 112, 112, 112, 112, 111, - 112, 30, 111, 112, 46, 111, 112, 111, 112, 112, - 112, 112, 111, 112, 112, 111, 112, 112, 112, 111, - - 112, 112, 111, 112, 111, 112, 112, 112, 112, 112, - 24, 25, 111, 112, 111, 112, 112, 112, 112, 69, - 111, 112, 70, 112, 111, 112, 112, 112, 111, 112, - 112, 88, 111, 112, 111, 112, 112, 112, 112, 112, - 111, 112, 54, 111, 112, 59, 112, 112, 60, 112, - 111, 112, 75, 112, 112, 83, 111, 112, 112, 111, - 112, 96, 112, 112, 112, 106, 112, 111, 112, 112, - 73, 111, 112, 112, 112, 111, 112, 112, 105, 112, - 27, 111, 112, 58, 112, 112, 85, 112, 98, 111, - 112, 102, 112, 77, 112 - + 133, 131, 132, 125, 131, 132, 125, 132, 124, 131, + 132, 15, 131, 132, 124, 131, 132, 131, 132, 124, + 131, 132, 131, 132, 124, 131, 132, 131, 132, 29, + 131, 132, 28, 131, 132, 124, 131, 132, 131, 132, + 119, 120, 131, 132, 119, 120, 131, 132, 119, 120, + 131, 132, 119, 120, 131, 132, 119, 120, 131, 132, + 119, 120, 131, 132, 119, 120, 131, 132, 119, 120, + 131, 132, 119, 120, 131, 132, 119, 120, 131, 132, + 119, 120, 131, 132, 119, 120, 131, 132, 119, 120, + 131, 132, 119, 120, 131, 132, 119, 120, 131, 132, + + 119, 120, 131, 132, 119, 120, 131, 132, 119, 120, + 131, 132, 119, 120, 131, 132, 124, 131, 132, 130, + 131, 132, 118, 131, 132, 124, 130, 131, 132, 5, + 131, 132, 2, 132, 2, 131, 132, 4, 131, 132, + 7, 9, 131, 132, 7, 132, 9, 131, 132, 9, + 131, 132, 17, 131, 132, 17, 132, 18, 131, 132, + 12, 131, 132, 12, 132, 14, 131, 132, 14, 131, + 132, 10, 131, 132, 11, 131, 132, 21, 23, 131, + 132, 23, 131, 132, 24, 132, 21, 22, 23, 131, + 132, 21, 22, 23, 131, 132, 127, 131, 132, 128, + + 131, 132, 128, 132, 131, 132, 129, 131, 132, 125, + 15, 15, 116, 117, 1, 27, 123, 6, 28, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 42, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 120, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 120, + 119, 120, 119, 120, 87, 119, 120, 119, 120, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 120, 119, + + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 120, 119, 120, + 119, 120, 120, 120, 119, 120, 118, 5, 3, 8, + 17, 16, 12, 21, 21, 22, 21, 22, 127, 128, + 126, 116, 117, 27, 122, 121, 119, 120, 34, 119, + 120, 35, 119, 120, 119, 120, 119, 120, 119, 120, + 39, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 56, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 120, 120, + + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 79, 119, 120, 80, 119, 120, + 119, 120, 120, 119, 120, 119, 120, 119, 120, 120, + 119, 120, 90, 119, 120, 119, 120, 119, 120, 119, + 120, 120, 119, 120, 119, 120, 119, 120, 98, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 120, 119, 120, 119, 120, + 119, 120, 120, 120, 120, 119, 120, 30, 13, 21, + 22, 20, 21, 22, 26, 25, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 64, 119, 120, 120, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 82, 119, 120, 120, 119, + 120, 119, 120, 119, 120, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 120, 95, 119, 120, 119, 120, + 119, 120, 99, 119, 120, 119, 120, 119, 120, 119, + 120, 103, 119, 120, 105, 119, 120, 119, 120, 120, + + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 120, 120, 120, 115, 119, 120, 21, 22, 119, 120, + 119, 120, 119, 120, 119, 120, 38, 119, 120, 120, + 119, 120, 119, 120, 119, 120, 45, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 63, 119, 120, 120, 120, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, + 120, 120, 119, 120, 86, 119, 120, 119, 120, 120, + + 119, 120, 119, 120, 119, 120, 119, 120, 120, 119, + 120, 119, 120, 119, 120, 119, 120, 120, 119, 120, + 120, 107, 119, 120, 119, 120, 119, 120, 120, 119, + 120, 120, 120, 120, 31, 21, 22, 32, 119, 120, + 119, 120, 119, 120, 119, 120, 120, 119, 120, 119, + 120, 44, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 58, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 120, 120, 120, 119, 120, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 120, 84, 119, 120, 119, 120, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 120, 119, 120, 119, 120, + 100, 119, 120, 101, 119, 120, 120, 119, 120, 120, + 108, 119, 120, 119, 120, 120, 120, 120, 120, 120, + 21, 22, 119, 120, 119, 120, 119, 120, 120, 41, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 50, 119, 120, 51, 119, 120, 119, 120, 119, 120, + 54, 119, 120, 119, 120, 119, 120, 119, 120, 60, + 119, 120, 119, 120, 119, 120, 120, 120, 120, 119, + + 120, 119, 120, 71, 119, 120, 72, 119, 120, 119, + 120, 119, 120, 119, 120, 76, 119, 120, 119, 120, + 119, 120, 119, 120, 120, 119, 120, 120, 89, 119, + 120, 119, 120, 92, 119, 120, 94, 119, 120, 120, + 119, 120, 119, 120, 120, 119, 120, 120, 119, 120, + 111, 120, 120, 120, 120, 120, 21, 22, 119, 120, + 119, 120, 119, 120, 120, 119, 120, 119, 120, 119, + 120, 119, 120, 119, 120, 53, 119, 120, 119, 120, + 119, 120, 59, 119, 120, 119, 120, 62, 119, 120, + 120, 120, 120, 120, 119, 120, 70, 119, 120, 73, + + 119, 120, 74, 119, 120, 119, 120, 119, 120, 120, + 119, 120, 120, 88, 119, 120, 120, 119, 120, 120, + 119, 120, 97, 119, 120, 120, 119, 120, 120, 119, + 120, 120, 120, 120, 120, 21, 22, 119, 120, 119, + 120, 37, 119, 120, 40, 120, 43, 119, 120, 46, + 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 119, 120, 119, 120, 120, 120, 120, 68, 120, 119, + 120, 119, 120, 119, 120, 120, 119, 120, 120, 120, + 119, 120, 120, 119, 120, 102, 120, 119, 120, 120, + 109, 119, 120, 120, 120, 120, 120, 21, 119, 120, + + 119, 120, 47, 119, 120, 48, 119, 120, 49, 119, + 120, 119, 120, 119, 120, 57, 119, 120, 119, 120, + 120, 120, 120, 69, 119, 120, 119, 120, 119, 120, + 120, 119, 120, 120, 120, 119, 120, 120, 119, 120, + 119, 120, 120, 112, 120, 120, 120, 120, 21, 119, + 120, 36, 119, 120, 52, 119, 120, 119, 120, 119, + 120, 120, 120, 120, 119, 120, 119, 120, 120, 119, + 120, 120, 120, 119, 120, 120, 119, 120, 119, 120, + 120, 120, 120, 120, 30, 31, 21, 119, 120, 119, + 120, 119, 120, 120, 120, 120, 75, 119, 120, 77, + + 119, 120, 78, 120, 119, 120, 120, 120, 119, 120, + 120, 96, 119, 120, 119, 120, 120, 120, 120, 120, + 21, 119, 120, 119, 120, 61, 119, 120, 66, 120, + 120, 67, 120, 119, 120, 83, 120, 120, 91, 119, + 120, 120, 119, 120, 104, 120, 120, 120, 114, 120, + 21, 119, 120, 119, 120, 120, 81, 119, 120, 120, + 120, 119, 120, 120, 113, 120, 21, 33, 119, 120, + 119, 120, 65, 120, 120, 93, 120, 106, 119, 120, + 110, 120, 21, 55, 119, 120, 85, 120, 19, 21 } ; -static yyconst short int yy_accept[676] = +static yyconst short int yy_accept[722] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 4, 7, 9, 12, 15, 18, - 20, 23, 25, 28, 30, 33, 36, 39, 41, 45, - 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, - 89, 93, 97, 101, 105, 109, 113, 117, 120, 123, - 126, 128, 131, 134, 138, 140, 143, 146, 149, 151, - 154, 157, 159, 162, 165, 168, 171, 174, 177, 179, - 181, 184, 184, 185, 186, 187, 187, 188, 188, 189, - 189, 189, 190, 191, 192, 193, 194, 194, 196, 198, - 200, 202, 204, 206, 207, 209, 211, 213, 215, 218, - - 220, 222, 224, 226, 228, 230, 232, 234, 236, 237, - 238, 240, 242, 244, 246, 248, 250, 252, 254, 255, - 257, 259, 262, 264, 265, 267, 269, 271, 273, 274, - 276, 278, 280, 282, 284, 286, 288, 290, 292, 293, - 295, 297, 298, 299, 301, 301, 301, 301, 301, 301, - 302, 303, 304, 305, 306, 307, 308, 308, 309, 310, - 311, 311, 312, 313, 313, 313, 314, 315, 316, 318, - 321, 324, 326, 328, 330, 333, 335, 337, 339, 341, - 343, 345, 347, 349, 351, 353, 356, 358, 360, 362, - 364, 366, 368, 369, 370, 372, 374, 376, 378, 380, - - 382, 384, 387, 390, 392, 393, 395, 397, 399, 400, - 402, 405, 407, 409, 411, 412, 414, 416, 418, 421, - 423, 425, 427, 429, 431, 433, 435, 436, 438, 440, - 442, 443, 444, 445, 447, 448, 448, 448, 448, 448, - 449, 449, 450, 451, 453, 455, 457, 459, 461, 463, - 465, 467, 469, 471, 473, 475, 477, 479, 481, 483, - 485, 487, 489, 491, 493, 495, 497, 500, 501, 502, - 504, 506, 508, 510, 512, 514, 516, 518, 520, 523, - 524, 526, 528, 530, 531, 533, 535, 537, 539, 540, - 543, 545, 547, 550, 552, 554, 556, 559, 562, 564, - - 565, 567, 569, 571, 573, 575, 576, 577, 578, 581, - 581, 581, 581, 581, 583, 585, 587, 589, 592, 593, - 595, 597, 599, 602, 604, 606, 608, 610, 612, 614, - 616, 618, 620, 622, 624, 626, 628, 631, 632, 633, - 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, - 653, 655, 658, 660, 661, 663, 665, 667, 669, 670, - 672, 674, 676, 678, 679, 681, 682, 685, 687, 689, - 690, 692, 693, 694, 695, 696, 696, 696, 696, 699, - 701, 703, 705, 706, 708, 710, 713, 715, 717, 719, - 721, 723, 725, 727, 729, 731, 734, 736, 738, 740, - - 742, 743, 744, 745, 747, 749, 751, 753, 755, 757, - 759, 761, 763, 765, 766, 769, 771, 772, 774, 776, - 778, 780, 781, 783, 785, 788, 791, 792, 794, 795, - 798, 800, 801, 802, 803, 804, 805, 805, 805, 805, - 807, 809, 811, 812, 815, 817, 819, 821, 823, 826, - 829, 831, 833, 836, 838, 840, 843, 845, 847, 848, - 849, 850, 852, 854, 857, 860, 862, 864, 867, 869, - 871, 873, 874, 876, 877, 880, 882, 885, 888, 889, - 891, 893, 894, 896, 897, 899, 901, 902, 903, 904, - 905, 905, 905, 905, 907, 909, 911, 912, 914, 916, - - 918, 920, 922, 925, 927, 930, 932, 935, 936, 937, - 938, 939, 941, 944, 947, 950, 952, 953, 955, 956, - 959, 960, 962, 963, 965, 968, 969, 971, 972, 974, - 975, 976, 977, 978, 978, 978, 978, 980, 982, 985, - 987, 990, 993, 995, 997, 999, 1001, 1003, 1004, 1005, - 1006, 1008, 1010, 1012, 1013, 1015, 1016, 1017, 1019, 1020, - 1022, 1024, 1026, 1027, 1030, 1031, 1032, 1033, 1034, 1034, - 1034, 1034, 1036, 1038, 1041, 1044, 1047, 1049, 1052, 1054, - 1055, 1056, 1057, 1060, 1062, 1063, 1065, 1066, 1067, 1069, - 1070, 1072, 1074, 1075, 1077, 1078, 1079, 1080, 1080, 1080, - - 1080, 1082, 1085, 1088, 1090, 1091, 1092, 1093, 1095, 1096, - 1098, 1099, 1100, 1102, 1103, 1105, 1107, 1108, 1109, 1110, - 1111, 1111, 1113, 1113, 1115, 1117, 1118, 1119, 1120, 1123, - 1125, 1127, 1128, 1129, 1131, 1132, 1135, 1137, 1138, 1139, - 1140, 1141, 1141, 1143, 1146, 1148, 1149, 1151, 1153, 1155, - 1156, 1159, 1160, 1162, 1164, 1165, 1166, 1168, 1168, 1170, - 1171, 1174, 1175, 1176, 1178, 1179, 1181, 1184, 1186, 1187, - 1189, 1192, 1194, 1196, 1196 + 1, 1, 1, 1, 1, 2, 4, 7, 9, 12, + 15, 18, 20, 23, 25, 28, 30, 33, 36, 39, + 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, + 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, + 120, 123, 126, 130, 133, 135, 138, 141, 145, 147, + 150, 153, 156, 158, 161, 164, 166, 169, 172, 175, + 178, 182, 185, 187, 192, 197, 200, 203, 205, 207, + 210, 210, 211, 212, 213, 213, 214, 214, 215, 215, + 215, 216, 217, 218, 219, 220, 220, 222, 224, 226, + + 228, 230, 232, 233, 235, 237, 239, 241, 244, 246, + 248, 250, 252, 254, 256, 258, 260, 262, 263, 264, + 266, 268, 270, 272, 274, 276, 278, 280, 281, 283, + 285, 288, 290, 291, 293, 295, 297, 299, 300, 302, + 304, 306, 308, 310, 312, 314, 316, 318, 319, 321, + 323, 324, 325, 327, 327, 327, 327, 327, 327, 328, + 329, 330, 331, 332, 333, 334, 334, 335, 337, 339, + 340, 341, 342, 342, 343, 344, 344, 344, 345, 346, + 347, 349, 352, 355, 357, 359, 361, 364, 366, 368, + 370, 372, 374, 376, 378, 380, 382, 384, 387, 389, + + 391, 393, 395, 397, 399, 400, 401, 403, 405, 407, + 409, 411, 413, 415, 418, 421, 423, 424, 426, 428, + 430, 431, 433, 436, 438, 440, 442, 443, 445, 447, + 449, 452, 454, 456, 458, 460, 462, 464, 466, 467, + 469, 471, 473, 474, 475, 476, 478, 479, 479, 479, + 479, 479, 480, 482, 485, 485, 486, 487, 489, 491, + 493, 495, 497, 499, 501, 503, 505, 507, 509, 511, + 513, 515, 517, 519, 521, 523, 525, 527, 529, 531, + 533, 536, 537, 538, 540, 542, 544, 546, 548, 550, + 552, 554, 556, 559, 560, 562, 564, 566, 567, 569, + + 571, 573, 575, 576, 579, 581, 583, 586, 588, 590, + 592, 595, 598, 600, 601, 603, 605, 607, 609, 611, + 612, 613, 614, 617, 617, 617, 617, 617, 619, 621, + 623, 625, 627, 630, 631, 633, 635, 637, 640, 642, + 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, + 664, 666, 669, 670, 671, 672, 674, 676, 678, 680, + 682, 684, 686, 688, 690, 692, 693, 695, 698, 700, + 701, 703, 705, 707, 709, 710, 712, 714, 716, 718, + 719, 721, 722, 725, 727, 729, 730, 732, 733, 734, + 735, 736, 736, 736, 736, 738, 741, 743, 745, 747, + + 748, 750, 752, 755, 757, 759, 761, 763, 765, 767, + 769, 771, 773, 775, 778, 780, 782, 784, 786, 787, + 788, 789, 791, 793, 795, 797, 799, 801, 803, 805, + 807, 809, 811, 812, 815, 817, 818, 820, 822, 824, + 826, 827, 829, 831, 834, 837, 838, 840, 841, 844, + 846, 847, 848, 849, 850, 851, 851, 851, 851, 853, + 855, 857, 859, 860, 863, 865, 867, 869, 871, 874, + 877, 879, 881, 884, 886, 888, 890, 893, 895, 897, + 898, 899, 900, 902, 904, 907, 910, 912, 914, 916, + 919, 921, 923, 925, 926, 928, 929, 932, 934, 937, + + 940, 941, 943, 945, 946, 948, 949, 951, 953, 954, + 955, 956, 957, 957, 957, 957, 959, 961, 963, 965, + 966, 968, 970, 972, 974, 976, 979, 981, 983, 986, + 988, 991, 992, 993, 994, 995, 997, 1000, 1003, 1006, + 1008, 1010, 1011, 1013, 1014, 1017, 1018, 1020, 1021, 1023, + 1026, 1027, 1029, 1030, 1032, 1033, 1034, 1035, 1036, 1036, + 1036, 1036, 1038, 1040, 1042, 1045, 1047, 1050, 1053, 1055, + 1057, 1059, 1061, 1063, 1065, 1066, 1067, 1068, 1070, 1072, + 1074, 1076, 1077, 1079, 1080, 1081, 1083, 1084, 1086, 1088, + 1090, 1091, 1094, 1095, 1096, 1097, 1098, 1098, 1098, 1098, + + 1099, 1101, 1103, 1106, 1109, 1112, 1114, 1116, 1119, 1121, + 1122, 1123, 1124, 1127, 1129, 1131, 1132, 1134, 1135, 1136, + 1138, 1139, 1141, 1143, 1144, 1146, 1147, 1148, 1149, 1149, + 1149, 1149, 1150, 1152, 1155, 1158, 1160, 1162, 1163, 1164, + 1165, 1167, 1169, 1170, 1172, 1173, 1174, 1176, 1177, 1179, + 1181, 1182, 1183, 1184, 1185, 1185, 1187, 1187, 1188, 1190, + 1192, 1194, 1195, 1196, 1197, 1200, 1203, 1205, 1207, 1208, + 1209, 1211, 1212, 1215, 1217, 1218, 1219, 1220, 1221, 1221, + 1222, 1224, 1226, 1229, 1231, 1232, 1234, 1236, 1238, 1239, + 1242, 1243, 1245, 1247, 1248, 1249, 1251, 1251, 1252, 1254, + + 1256, 1257, 1260, 1261, 1262, 1264, 1265, 1267, 1268, 1271, + 1273, 1275, 1276, 1278, 1281, 1283, 1284, 1287, 1289, 1291, + 1291 } ; static yyconst int yy_ec[256] = @@ -573,636 +587,683 @@ static yyconst int yy_meta[79] = 11, 11, 11, 11, 11, 12, 1, 12 } ; -static yyconst short int yy_base[691] = +static yyconst short int yy_base[740] = { 0, 0, 0, 76, 78, 80, 81, 82, 89, 83, 93, - 96, 106, 844, 833, 116, 119, 822, 821, 177, 126, - 4166, 127, 816, 123, 4166, 134, 805, 4166, 242, 292, - 141, 298, 152, 314, 322, 130, 338, 359, 360, 376, - 382, 397, 410, 437, 440, 462, 463, 495, 0, 0, - 4166, 4166, 811, 4166, 4166, 807, 807, 0, 0, 809, - 0, 0, 787, 4166, 4166, 4166, 0, 160, 191, 104, - 4166, 800, 261, 0, 798, 797, 0, 79, 0, 426, - 793, 4166, 511, 787, 4166, 527, 771, 512, 513, 528, - 529, 544, 550, 0, 561, 567, 578, 589, 595, 611, - - 617, 628, 641, 644, 664, 661, 672, 685, 727, 737, - 696, 702, 713, 719, 730, 741, 747, 758, 725, 771, - 774, 787, 795, 725, 798, 811, 822, 835, 720, 851, - 857, 868, 874, 885, 900, 901, 916, 917, 716, 932, - 933, 716, 45, 948, 980, 987, 736, 97, 120, 0, - 0, 4166, 4166, 0, 4166, 0, 750, 0, 291, 4166, - 761, 0, 0, 79, 739, 994, 4166, 4166, 990, 1003, - 1011, 1014, 1027, 1035, 1038, 1051, 1059, 1067, 1075, 1088, - 1096, 1099, 1120, 1121, 1136, 1142, 1153, 1159, 1170, 1176, - 1187, 1198, 707, 693, 1211, 1219, 1222, 1237, 1240, 1243, - - 1267, 1261, 1264, 1282, 702, 1285, 1300, 1306, 696, 1317, - 1328, 1334, 1345, 1356, 686, 1367, 1373, 1384, 1390, 1405, - 1406, 1421, 1432, 1438, 1453, 1459, 692, 1470, 1481, 1492, - 675, 686, 681, 1503, 4166, 1542, 697, 143, 158, 4166, - 683, 4166, 4166, 1527, 1528, 1543, 1549, 1564, 1565, 1582, - 1581, 1597, 1603, 1614, 1625, 1643, 1640, 1646, 1661, 1664, - 1667, 1682, 1688, 1699, 1710, 1725, 1731, 664, 668, 1742, - 1748, 1763, 1764, 1779, 1785, 1796, 1809, 1817, 1825, 658, - 1840, 1843, 1856, 670, 1864, 1880, 1879, 1896, 649, 1897, - 1912, 1925, 1933, 1936, 1954, 1951, 1957, 1972, 1975, 648, - - 1978, 1993, 1999, 2010, 2016, 660, 649, 660, 2031, 2063, - 283, 280, 305, 2048, 2064, 2072, 2080, 2088, 644, 2096, - 2104, 2117, 2125, 2128, 2146, 2143, 2149, 2164, 2170, 2185, - 2186, 2201, 2216, 2222, 2233, 2239, 2254, 653, 641, 627, - 2255, 2275, 2272, 2293, 2292, 2310, 2309, 2325, 2331, 633, - 2342, 2353, 2359, 623, 2370, 2381, 2387, 2398, 639, 2411, - 2414, 2422, 2435, 616, 2446, 625, 2452, 2467, 2468, 613, - 2483, 607, 604, 610, 4166, 302, 321, 96, 2489, 2504, - 2507, 2515, 610, 2530, 2536, 2547, 2553, 2564, 2570, 2581, - 2592, 2598, 2615, 2621, 2637, 2638, 2653, 2654, 2669, 2675, - - 605, 607, 599, 2686, 2692, 2707, 2708, 2728, 2729, 2744, - 2752, 2765, 2773, 604, 2776, 2794, 631, 2791, 2797, 2812, - 2815, 603, 2823, 2838, 2841, 2844, 590, 2859, 574, 2862, - 2865, 588, 576, 574, 583, 581, 317, 309, 328, 2880, - 2883, 2896, 572, 2904, 2917, 2925, 2928, 2941, 2949, 2952, - 2965, 2976, 2973, 2989, 3000, 3011, 3017, 3028, 54, 589, - 564, 3034, 3045, 3056, 3062, 3073, 3079, 3094, 3095, 3110, - 3111, 583, 3126, 566, 3127, 3144, 3147, 3150, 558, 3165, - 3171, 554, 3186, 576, 3192, 0, 555, 559, 536, 566, - 347, 226, 339, 3203, 3209, 3224, 548, 3230, 3241, 3254, - - 3262, 3265, 3280, 3283, 3291, 3304, 3307, 531, 525, 525, - 531, 3322, 3328, 3339, 3345, 3356, 516, 3367, 512, 3373, - 511, 3384, 521, 3395, 3401, 517, 3412, 504, 3418, 506, - 507, 520, 466, 325, 465, 348, 3429, 3440, 3451, 0, - 3457, 3468, 3479, 3490, 3496, 3511, 3512, 467, 476, 464, - 0, 3527, 3528, 470, 3544, 450, 462, 3545, 474, 3560, - 0, 3566, 447, 3577, 444, 454, 423, 424, 361, 3616, - 353, 3601, 3602, 3617, 3618, 3633, 3634, 3649, 3650, 430, - 434, 428, 3665, 3673, 421, 3681, 421, 412, 3689, 403, - 3697, 3705, 410, 0, 400, 401, 403, 189, 3737, 519, - - 3722, 3723, 3738, 3746, 398, 417, 394, 3759, 398, 3767, - 391, 391, 3770, 383, 3783, 3794, 383, 378, 383, 378, - 371, 4166, 3833, 3818, 3819, 378, 363, 359, 3834, 0, - 3840, 357, 347, 3851, 351, 3857, 3868, 330, 315, 305, - 295, 558, 3884, 3881, 0, 282, 0, 3892, 0, 262, - 3907, 256, 3910, 0, 188, 141, 0, 3954, 3939, 138, - 3940, 120, 105, 3955, 95, 0, 3956, 0, 37, 0, - 3972, 0, 0, 4166, 4017, 4029, 4041, 4053, 4065, 4077, - 4088, 4089, 4093, 4104, 4116, 4128, 4139, 4144, 4149, 4154 + 171, 249, 109, 120, 961, 952, 95, 98, 951, 948, + 320, 117, 4484, 118, 933, 100, 4484, 125, 923, 4484, + 385, 176, 194, 120, 239, 267, 435, 163, 293, 441, + 191, 259, 463, 471, 484, 500, 508, 270, 521, 553, + 935, 0, 933, 0, 4484, 4484, 926, 4484, 4484, 922, + 922, 0, 0, 924, 0, 0, 902, 4484, 4484, 4484, + 0, 4484, 4484, 598, 675, 0, 148, 151, 182, 4484, + 915, 160, 0, 913, 912, 0, 135, 0, 573, 908, + 4484, 226, 902, 4484, 598, 886, 556, 597, 598, 618, + + 619, 634, 0, 664, 667, 680, 693, 704, 720, 728, + 741, 744, 757, 772, 778, 775, 793, 842, 852, 808, + 811, 819, 834, 845, 856, 862, 873, 840, 886, 889, + 902, 910, 840, 913, 926, 937, 950, 835, 966, 972, + 983, 989, 1000, 1015, 1016, 1031, 1032, 831, 1047, 1048, + 831, 48, 1063, 1095, 1102, 851, 88, 128, 0, 0, + 4484, 4484, 0, 4484, 0, 865, 0, 849, 253, 0, + 264, 4484, 875, 0, 0, 83, 848, 611, 4484, 4484, + 1099, 1100, 1115, 1123, 1126, 1141, 1144, 1147, 1162, 1168, + 1179, 1185, 1196, 1207, 1223, 1229, 1240, 1246, 1257, 1263, + + 1274, 1280, 1291, 1302, 818, 807, 1315, 1323, 1326, 1341, + 1344, 1347, 1371, 1365, 1368, 1386, 815, 1389, 1404, 1410, + 811, 1421, 1432, 1438, 1449, 1460, 802, 1471, 1477, 1488, + 1494, 1509, 1510, 1525, 1536, 1542, 1557, 1563, 809, 1574, + 1585, 1596, 793, 807, 801, 1607, 4484, 1646, 822, 178, + 250, 4484, 109, 820, 802, 4484, 4484, 1631, 1632, 1647, + 1653, 1668, 1669, 1686, 1685, 1701, 1707, 1718, 1729, 1747, + 1744, 1750, 1765, 1768, 1771, 1786, 1792, 1803, 1814, 1829, + 1835, 783, 789, 1846, 1852, 1867, 1868, 1883, 1889, 1904, + 1907, 1915, 1928, 774, 1936, 1939, 1952, 786, 1960, 1976, + + 1975, 1992, 770, 1993, 2008, 2021, 2029, 2032, 2050, 2047, + 2053, 2068, 2071, 768, 2074, 2089, 2095, 2106, 2112, 778, + 768, 775, 2127, 2159, 170, 151, 242, 200, 2144, 2160, + 2168, 2176, 2184, 759, 2192, 2200, 2213, 2221, 2224, 2242, + 2239, 2245, 2260, 2266, 2281, 2282, 2297, 2312, 2318, 2329, + 2335, 2350, 773, 763, 755, 2351, 2371, 2368, 2389, 2388, + 2404, 2410, 2421, 2432, 2443, 759, 2449, 2460, 2466, 738, + 2477, 2488, 2494, 2505, 753, 2518, 2521, 2529, 2542, 737, + 2553, 745, 2559, 2574, 2575, 731, 2590, 725, 721, 727, + 4484, 280, 297, 294, 231, 2596, 2611, 2614, 2622, 728, + + 2637, 2643, 2654, 2660, 2671, 2677, 2688, 2699, 2705, 2722, + 2728, 2739, 2745, 2756, 2762, 2773, 2779, 2795, 724, 731, + 723, 2796, 2811, 2817, 2828, 2834, 2849, 2855, 2866, 2881, + 2887, 2898, 720, 2909, 2915, 747, 2926, 2932, 2943, 2956, + 716, 2964, 2979, 2982, 2985, 707, 3000, 689, 3003, 3006, + 704, 692, 687, 697, 693, 271, 295, 301, 712, 3021, + 3024, 3037, 682, 3045, 3058, 3066, 3069, 3082, 3090, 3093, + 3106, 3117, 3114, 3130, 3138, 3141, 3154, 3162, 3165, 124, + 704, 677, 3178, 3186, 3189, 3202, 3210, 3223, 3231, 3234, + 3251, 3254, 3257, 698, 3272, 681, 3275, 3288, 3296, 3304, + + 673, 3317, 3325, 658, 3338, 680, 3346, 0, 660, 667, + 643, 672, 438, 368, 366, 286, 3349, 3362, 3370, 654, + 3378, 3386, 3399, 3407, 3410, 3425, 3431, 3446, 3428, 3452, + 3463, 639, 633, 630, 634, 3469, 3480, 3486, 3497, 3503, + 3514, 623, 3525, 620, 3531, 619, 3542, 619, 3553, 3559, + 613, 3570, 600, 3576, 603, 604, 623, 594, 300, 466, + 447, 360, 3587, 3598, 3609, 0, 3615, 3626, 3637, 3648, + 3654, 3669, 3672, 3675, 593, 603, 584, 0, 3690, 3698, + 3713, 590, 3714, 579, 591, 3729, 603, 3737, 0, 3745, + 572, 3758, 579, 589, 531, 528, 443, 3797, 454, 568, + + 3782, 3783, 3798, 3799, 3814, 3815, 3830, 3836, 3847, 529, + 533, 527, 3853, 3864, 3875, 520, 3881, 523, 515, 3892, + 512, 3898, 3909, 518, 0, 508, 496, 498, 397, 3941, + 560, 517, 3926, 3927, 3942, 3943, 3958, 489, 507, 484, + 3969, 3975, 483, 3990, 475, 477, 3993, 468, 3996, 4013, + 469, 462, 468, 461, 424, 4484, 4052, 485, 4037, 4048, + 4059, 461, 456, 455, 4065, 4076, 0, 4087, 454, 444, + 4098, 440, 4104, 4115, 438, 434, 429, 432, 732, 441, + 4131, 4128, 4139, 0, 419, 0, 4152, 0, 411, 4155, + 399, 4170, 0, 372, 347, 0, 4209, 330, 4194, 4205, + + 258, 4211, 227, 214, 4222, 177, 0, 180, 4233, 4239, + 0, 138, 0, 4250, 0, 134, 4256, 0, 0, 4484, + 4301, 4313, 4325, 4337, 4349, 4361, 4373, 4384, 4385, 4389, + 4400, 4412, 4424, 4435, 4446, 4457, 4462, 4467, 4472 } ; -static yyconst short int yy_def[691] = +static yyconst short int yy_def[740] = { 0, - 674, 1, 675, 675, 676, 676, 677, 677, 678, 678, - 679, 679, 674, 674, 674, 674, 674, 680, 674, 681, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 682, 683, 684, - 674, 674, 674, 674, 674, 674, 674, 685, 685, 674, - 686, 686, 674, 674, 674, 674, 687, 674, 674, 19, - 674, 674, 674, 680, 680, 674, 688, 674, 689, 681, - 681, 674, 674, 674, 674, 674, 674, 29, 29, 29, - 29, 29, 29, 690, 29, 29, 29, 29, 29, 29, - - 29, 29, 29, 29, 29, 29, 29, 29, 690, 690, - 29, 29, 29, 29, 29, 29, 29, 29, 690, 29, - 29, 29, 29, 690, 29, 29, 29, 29, 690, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 690, 29, - 29, 690, 690, 29, 674, 682, 146, 146, 146, 683, - 684, 674, 674, 685, 674, 686, 674, 687, 674, 674, - 674, 688, 689, 674, 674, 674, 674, 674, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 690, 690, 29, 29, 29, 29, 29, 29, - - 29, 29, 29, 29, 690, 29, 29, 29, 690, 29, - 29, 29, 29, 29, 690, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 690, 29, 29, 29, - 690, 690, 690, 29, 674, 674, 146, 146, 146, 674, - 674, 674, 674, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 690, 690, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 690, - 29, 29, 29, 690, 29, 29, 29, 29, 690, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 690, - - 29, 29, 29, 29, 29, 690, 690, 690, 29, 674, - 146, 146, 146, 29, 29, 29, 29, 29, 690, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 690, 690, 690, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 690, - 29, 29, 29, 690, 29, 29, 29, 29, 690, 29, - 29, 29, 29, 690, 29, 690, 29, 29, 29, 690, - 29, 690, 690, 690, 674, 146, 146, 146, 29, 29, - 29, 29, 690, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - - 690, 690, 690, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 690, 29, 29, 690, 29, 29, 29, - 29, 690, 29, 29, 29, 29, 690, 29, 690, 29, - 29, 690, 690, 690, 690, 690, 146, 146, 146, 29, - 29, 29, 690, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 690, 690, - 690, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 690, 29, 690, 29, 29, 29, 29, 690, 29, - 29, 690, 29, 690, 29, 690, 690, 690, 690, 690, - 146, 146, 146, 29, 29, 29, 690, 29, 29, 29, - - 29, 29, 29, 29, 29, 29, 29, 690, 690, 690, - 690, 29, 29, 29, 29, 29, 690, 29, 690, 29, - 690, 29, 690, 29, 29, 690, 29, 690, 29, 690, - 690, 690, 690, 146, 146, 146, 29, 29, 29, 690, - 29, 29, 29, 29, 29, 29, 29, 690, 690, 690, - 690, 29, 29, 690, 29, 690, 690, 29, 690, 29, - 690, 29, 690, 29, 690, 690, 690, 690, 146, 674, - 146, 29, 29, 29, 29, 29, 29, 29, 29, 690, - 690, 690, 29, 29, 690, 29, 690, 690, 29, 690, - 29, 29, 690, 690, 690, 690, 690, 146, 674, 146, - - 29, 29, 29, 29, 690, 690, 690, 29, 690, 29, - 690, 690, 29, 690, 29, 29, 690, 690, 690, 690, - 146, 674, 674, 29, 29, 690, 690, 690, 29, 690, - 29, 690, 690, 29, 690, 29, 29, 690, 690, 690, - 690, 146, 29, 29, 690, 690, 690, 29, 690, 690, - 29, 690, 29, 690, 690, 690, 690, 674, 29, 690, - 29, 690, 690, 29, 690, 690, 29, 690, 690, 690, - 29, 690, 690, 0, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674 + 720, 1, 721, 721, 722, 722, 723, 723, 724, 724, + 725, 725, 726, 726, 720, 720, 720, 720, 720, 727, + 720, 728, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 729, + 720, 730, 720, 731, 720, 720, 720, 720, 720, 720, + 720, 732, 732, 720, 733, 733, 720, 720, 720, 720, + 734, 720, 720, 735, 735, 736, 720, 720, 21, 720, + 720, 720, 727, 727, 720, 737, 720, 738, 728, 728, + 720, 720, 720, 720, 720, 720, 31, 31, 31, 31, + + 31, 31, 739, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 739, 739, 31, + 31, 31, 31, 31, 31, 31, 31, 739, 31, 31, + 31, 31, 739, 31, 31, 31, 31, 739, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 739, 31, 31, + 739, 739, 31, 720, 729, 155, 155, 155, 730, 731, + 720, 720, 732, 720, 733, 720, 734, 75, 75, 736, + 720, 720, 720, 737, 738, 720, 720, 720, 720, 720, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + + 31, 31, 31, 31, 739, 739, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 739, 31, 31, 31, + 739, 31, 31, 31, 31, 31, 739, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 739, 31, + 31, 31, 739, 739, 739, 31, 720, 720, 155, 155, + 155, 720, 75, 75, 720, 720, 720, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 739, 739, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 739, 31, 31, 31, 739, 31, 31, + + 31, 31, 739, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 739, 31, 31, 31, 31, 31, 739, + 739, 739, 31, 720, 155, 155, 155, 75, 31, 31, + 31, 31, 31, 739, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 739, 739, 739, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 739, 31, 31, 31, 739, + 31, 31, 31, 31, 739, 31, 31, 31, 31, 739, + 31, 739, 31, 31, 31, 739, 31, 739, 739, 739, + 720, 155, 155, 155, 75, 31, 31, 31, 31, 739, + + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 739, 739, + 739, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 739, 31, 31, 739, 31, 31, 31, 31, + 739, 31, 31, 31, 31, 739, 31, 739, 31, 31, + 739, 739, 739, 739, 739, 155, 155, 155, 75, 31, + 31, 31, 739, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 739, + 739, 739, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 739, 31, 739, 31, 31, 31, 31, + + 739, 31, 31, 739, 31, 739, 31, 739, 739, 739, + 739, 739, 155, 155, 155, 75, 31, 31, 31, 739, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 739, 739, 739, 739, 31, 31, 31, 31, 31, + 31, 739, 31, 739, 31, 739, 31, 739, 31, 31, + 739, 31, 739, 31, 739, 739, 739, 739, 155, 155, + 155, 75, 31, 31, 31, 739, 31, 31, 31, 31, + 31, 31, 31, 31, 739, 739, 739, 739, 31, 31, + 31, 739, 31, 739, 739, 31, 739, 31, 739, 31, + 739, 31, 739, 739, 739, 739, 155, 720, 155, 734, + + 31, 31, 31, 31, 31, 31, 31, 31, 31, 739, + 739, 739, 31, 31, 31, 739, 31, 739, 739, 31, + 739, 31, 31, 739, 739, 739, 739, 739, 155, 720, + 155, 734, 31, 31, 31, 31, 31, 739, 739, 739, + 31, 31, 739, 31, 739, 739, 31, 739, 31, 31, + 739, 739, 739, 739, 155, 720, 720, 734, 31, 31, + 31, 739, 739, 739, 31, 31, 739, 31, 739, 739, + 31, 739, 31, 31, 739, 739, 739, 739, 155, 734, + 31, 31, 31, 739, 739, 739, 31, 739, 739, 31, + 739, 31, 739, 739, 739, 739, 720, 734, 31, 31, + + 739, 31, 739, 739, 31, 739, 739, 734, 31, 31, + 739, 739, 739, 31, 739, 734, 31, 739, 734, 0, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720 } ; -static yyconst short int yy_nxt[4245] = +static yyconst short int yy_nxt[4563] = { 0, - 14, 15, 16, 15, 17, 18, 19, 20, 21, 14, - 22, 23, 24, 25, 26, 26, 26, 26, 26, 26, - 27, 17, 28, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 36, 36, 36, 38, 39, 40, 41, - 36, 42, 43, 44, 45, 46, 47, 36, 36, 36, - 48, 17, 14, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 21, 17, 21, 51, 52, - 51, 52, 55, 55, 59, 62, 53, 60, 53, 56, - 56, 59, 57, 57, 60, 62, 508, 68, 69, 68, - - 76, 232, 70, 63, 242, 673, 64, 68, 69, 68, - 243, 674, 70, 63, 233, 509, 64, 73, 73, 73, - 73, 73, 73, 72, 439, 674, 72, 80, 80, 80, - 72, 78, 85, 72, 72, 147, 147, 82, 238, 80, - 80, 83, 83, 83, 83, 83, 83, 86, 86, 86, - 86, 86, 86, 86, 672, 88, 674, 239, 65, 147, - 66, 159, 159, 159, 670, 88, 88, 88, 65, 88, - 66, 28, 100, 71, 88, 312, 101, 88, 88, 102, - 88, 28, 147, 71, 72, 88, 669, 88, 104, 105, - 313, 88, 159, 159, 159, 668, 88, 147, 76, 106, - - 666, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 621, 147, 78, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 88, 665, 535, 88, 88, 88, 88, 88, - 88, 88, 73, 73, 73, 147, 88, 89, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 90, 88, 91, - 88, 92, 88, 88, 88, 88, 93, 88, 88, 88, - 88, 88, 159, 159, 159, 94, 94, 94, 94, 94, - - 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 94, 94, 94, 94, 94, 88, 376, 147, - 95, 663, 147, 88, 96, 377, 103, 88, 97, 88, - 98, 88, 662, 88, 437, 88, 88, 88, 107, 88, - 99, 147, 88, 491, 147, 438, 660, 88, 147, 88, - 378, 88, 492, 88, 657, 108, 147, 88, 88, 88, - 147, 88, 111, 88, 147, 112, 88, 147, 569, 493, - 656, 534, 571, 88, 113, 114, 655, 88, 147, 109, - 115, 536, 88, 116, 88, 88, 147, 147, 600, 654, - 110, 117, 147, 598, 88, 88, 88, 88, 88, 88, - - 147, 120, 121, 88, 118, 122, 125, 88, 642, 126, - 147, 88, 652, 88, 650, 123, 649, 127, 647, 88, - 88, 88, 88, 128, 646, 130, 88, 80, 80, 80, - 124, 119, 88, 164, 88, 88, 88, 645, 131, 80, - 80, 88, 132, 641, 640, 88, 639, 88, 638, 88, - 129, 635, 633, 133, 88, 135, 632, 630, 134, 628, - 627, 136, 88, 626, 620, 88, 570, 570, 570, 619, - 618, 617, 88, 614, 88, 88, 88, 140, 137, 88, - 612, 88, 611, 141, 88, 138, 609, 88, 88, 607, - 606, 605, 597, 596, 139, 144, 595, 88, 88, 88, - - 88, 88, 88, 594, 147, 142, 88, 88, 145, 145, - 145, 145, 145, 145, 145, 593, 590, 588, 587, 146, - 623, 623, 623, 143, 166, 166, 166, 166, 166, 166, - 166, 585, 582, 581, 148, 580, 568, 88, 88, 149, - 86, 86, 86, 86, 86, 86, 86, 88, 88, 88, - 88, 88, 88, 88, 88, 169, 88, 88, 147, 658, - 658, 658, 567, 170, 88, 88, 88, 88, 88, 88, - 566, 565, 88, 88, 563, 88, 561, 171, 559, 88, - 557, 88, 556, 172, 554, 88, 88, 88, 88, 88, - 551, 174, 88, 173, 88, 550, 88, 147, 88, 549, - - 88, 548, 88, 88, 88, 88, 88, 540, 533, 532, - 175, 88, 531, 88, 88, 88, 530, 176, 528, 526, - 88, 523, 88, 521, 88, 519, 88, 177, 88, 511, - 88, 510, 88, 88, 88, 178, 88, 497, 490, 88, - 489, 180, 88, 488, 487, 486, 88, 484, 88, 179, - 88, 482, 88, 88, 88, 88, 88, 479, 474, 472, - 461, 88, 460, 88, 181, 182, 88, 88, 459, 184, - 183, 443, 88, 436, 435, 434, 88, 432, 88, 88, - 88, 88, 429, 88, 427, 88, 88, 188, 88, 88, - 185, 186, 422, 417, 414, 403, 88, 88, 88, 88, - - 189, 88, 402, 88, 190, 88, 401, 191, 187, 88, - 88, 88, 383, 195, 374, 373, 88, 372, 366, 359, - 88, 88, 88, 192, 88, 354, 350, 88, 339, 88, - 196, 88, 338, 88, 160, 88, 311, 88, 88, 88, - 88, 88, 308, 307, 88, 198, 88, 306, 88, 300, - 88, 289, 197, 284, 88, 88, 88, 88, 88, 280, - 269, 199, 200, 88, 268, 88, 88, 88, 201, 88, - 243, 241, 88, 240, 88, 147, 88, 231, 88, 227, - 88, 215, 88, 88, 203, 88, 88, 209, 202, 205, - 194, 88, 193, 204, 168, 88, 88, 88, 167, 88, - - 165, 161, 88, 160, 206, 160, 88, 157, 88, 88, - 88, 88, 88, 88, 155, 88, 85, 207, 88, 153, - 88, 152, 88, 88, 88, 87, 88, 84, 75, 72, - 88, 88, 88, 88, 88, 88, 88, 88, 208, 88, - 72, 210, 88, 674, 674, 674, 88, 88, 88, 674, - 88, 674, 674, 674, 674, 88, 211, 88, 674, 88, - 88, 88, 674, 213, 674, 674, 212, 214, 674, 674, - 88, 674, 88, 674, 88, 216, 88, 674, 674, 88, - 674, 674, 88, 674, 674, 674, 217, 674, 88, 674, - 88, 674, 88, 88, 88, 88, 88, 218, 674, 88, - - 219, 88, 674, 88, 674, 88, 674, 88, 674, 88, - 88, 88, 88, 88, 223, 221, 674, 220, 88, 674, - 88, 674, 222, 674, 88, 88, 88, 674, 674, 88, - 674, 224, 674, 674, 674, 88, 88, 88, 88, 88, - 88, 88, 88, 674, 88, 88, 674, 674, 674, 674, - 674, 88, 88, 88, 88, 88, 226, 88, 88, 229, - 225, 88, 230, 674, 228, 674, 674, 88, 88, 88, - 88, 88, 88, 88, 674, 674, 88, 88, 674, 674, - 674, 674, 674, 88, 674, 88, 674, 88, 236, 236, - 236, 234, 88, 145, 145, 145, 145, 145, 145, 145, - - 674, 674, 674, 674, 674, 674, 674, 166, 166, 166, - 166, 166, 166, 166, 674, 88, 674, 674, 244, 674, - 674, 674, 674, 674, 674, 88, 237, 88, 88, 88, - 674, 235, 674, 245, 88, 674, 88, 674, 88, 88, - 88, 674, 88, 674, 674, 674, 88, 88, 88, 246, - 88, 88, 88, 88, 674, 88, 674, 674, 88, 674, - 88, 674, 88, 88, 88, 247, 88, 248, 674, 674, - 88, 88, 88, 88, 88, 88, 88, 88, 674, 88, - 674, 674, 88, 674, 88, 674, 88, 674, 88, 674, - 88, 674, 88, 249, 250, 88, 88, 674, 88, 674, - - 88, 674, 88, 88, 88, 674, 88, 252, 251, 674, - 88, 88, 88, 88, 88, 674, 674, 674, 674, 88, - 674, 88, 674, 88, 88, 88, 674, 88, 674, 674, - 253, 88, 88, 88, 88, 254, 88, 674, 88, 674, - 88, 255, 256, 88, 257, 88, 88, 674, 674, 259, - 674, 674, 258, 674, 674, 88, 88, 88, 88, 88, - 88, 88, 674, 674, 88, 88, 674, 88, 674, 674, - 674, 88, 674, 88, 260, 88, 674, 88, 88, 88, - 88, 88, 674, 674, 88, 674, 88, 262, 88, 261, - 88, 674, 88, 674, 88, 88, 88, 88, 88, 674, - - 674, 88, 674, 88, 265, 263, 674, 88, 264, 88, - 674, 88, 88, 88, 88, 88, 674, 674, 674, 674, - 88, 674, 88, 88, 88, 674, 88, 674, 674, 266, - 674, 88, 674, 88, 267, 88, 88, 88, 674, 674, - 674, 674, 88, 674, 88, 674, 88, 88, 88, 674, - 88, 674, 674, 270, 88, 88, 271, 272, 88, 88, - 273, 88, 88, 88, 674, 88, 88, 674, 88, 674, - 674, 276, 274, 674, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 275, 88, 277, 88, 88, 674, 88, - 674, 674, 88, 674, 674, 674, 88, 674, 88, 88, - - 88, 88, 88, 88, 88, 88, 88, 88, 278, 674, - 88, 88, 674, 281, 674, 674, 674, 279, 674, 88, - 88, 88, 88, 674, 88, 88, 88, 674, 282, 88, - 674, 88, 674, 674, 674, 88, 674, 88, 283, 88, - 674, 88, 88, 88, 88, 88, 674, 674, 674, 674, - 88, 674, 88, 88, 88, 674, 88, 674, 674, 88, - 285, 88, 674, 88, 674, 88, 674, 88, 674, 88, - 88, 88, 88, 88, 674, 674, 286, 674, 88, 674, - 88, 88, 88, 674, 88, 674, 674, 287, 674, 88, - 674, 88, 88, 88, 674, 88, 674, 291, 88, 674, - - 88, 288, 290, 674, 88, 674, 88, 674, 88, 88, - 88, 88, 88, 674, 674, 88, 674, 88, 674, 88, - 674, 88, 674, 88, 674, 88, 674, 88, 292, 88, - 88, 88, 674, 293, 88, 674, 674, 674, 294, 674, - 88, 88, 88, 88, 88, 88, 88, 674, 674, 88, - 88, 674, 674, 674, 674, 674, 88, 88, 88, 674, - 88, 674, 674, 88, 295, 88, 674, 88, 674, 88, - 674, 88, 674, 88, 296, 88, 88, 88, 88, 674, - 297, 298, 88, 674, 88, 674, 674, 299, 88, 674, - 88, 674, 88, 674, 88, 88, 88, 88, 88, 674, - - 674, 674, 674, 88, 674, 88, 88, 88, 301, 88, - 302, 305, 674, 674, 88, 303, 88, 88, 88, 674, - 88, 674, 674, 674, 304, 88, 674, 88, 88, 88, - 674, 88, 674, 674, 309, 674, 88, 674, 88, 674, - 88, 674, 88, 236, 236, 236, 674, 88, 674, 674, - 674, 674, 88, 88, 674, 310, 310, 310, 310, 310, - 310, 310, 88, 88, 314, 88, 88, 88, 88, 315, - 674, 88, 88, 674, 88, 316, 674, 674, 88, 674, - 88, 674, 88, 674, 88, 317, 88, 88, 88, 88, - 88, 674, 674, 88, 674, 674, 674, 674, 674, 88, - - 88, 318, 88, 88, 88, 321, 88, 88, 88, 88, - 320, 674, 674, 674, 674, 674, 88, 88, 88, 88, - 88, 88, 88, 322, 674, 88, 88, 674, 88, 674, - 674, 674, 88, 674, 88, 319, 88, 674, 88, 88, - 88, 88, 88, 674, 674, 323, 674, 88, 674, 88, - 88, 88, 324, 88, 674, 674, 674, 674, 88, 674, - 88, 674, 88, 674, 88, 88, 325, 326, 88, 88, - 674, 88, 674, 674, 674, 88, 674, 88, 88, 88, - 88, 88, 88, 328, 327, 88, 88, 88, 329, 88, - 88, 330, 88, 674, 674, 331, 88, 674, 88, 88, - - 88, 88, 88, 88, 88, 88, 88, 88, 88, 674, - 674, 88, 674, 88, 674, 674, 674, 88, 674, 88, - 333, 332, 674, 88, 88, 88, 88, 88, 674, 674, - 674, 674, 88, 674, 88, 88, 88, 674, 88, 674, - 334, 674, 674, 88, 674, 88, 674, 335, 674, 88, - 88, 336, 674, 337, 88, 674, 88, 674, 674, 674, - 88, 674, 88, 674, 88, 674, 88, 88, 88, 88, - 88, 674, 674, 88, 674, 88, 674, 88, 674, 88, - 674, 88, 674, 88, 674, 88, 88, 88, 88, 88, - 674, 341, 88, 674, 674, 342, 674, 674, 88, 88, - - 88, 88, 88, 88, 88, 343, 674, 88, 88, 345, - 88, 674, 340, 674, 88, 674, 88, 674, 88, 674, - 88, 88, 88, 344, 88, 348, 346, 674, 674, 88, - 674, 88, 674, 88, 88, 88, 674, 347, 674, 674, - 88, 674, 88, 674, 88, 674, 88, 674, 88, 674, - 88, 674, 88, 88, 88, 674, 88, 674, 674, 349, - 88, 88, 88, 674, 88, 88, 351, 674, 88, 88, - 674, 674, 674, 674, 674, 88, 674, 88, 88, 88, - 88, 88, 88, 674, 88, 674, 352, 88, 674, 88, - 356, 88, 355, 88, 353, 88, 674, 674, 674, 88, - - 88, 88, 674, 88, 88, 88, 674, 357, 88, 674, - 674, 674, 674, 674, 88, 88, 88, 88, 88, 88, - 358, 88, 88, 88, 88, 674, 674, 674, 674, 674, - 674, 88, 88, 88, 88, 88, 88, 88, 674, 674, - 88, 88, 674, 674, 674, 674, 674, 88, 674, 88, - 88, 88, 674, 361, 674, 360, 88, 674, 88, 674, - 88, 88, 88, 674, 88, 674, 674, 674, 88, 88, - 88, 88, 88, 362, 674, 88, 88, 88, 363, 88, - 88, 674, 88, 674, 674, 365, 88, 674, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 674, - - 88, 88, 674, 88, 674, 674, 674, 88, 674, 88, - 88, 88, 88, 88, 88, 367, 88, 88, 88, 88, - 674, 364, 88, 674, 88, 674, 674, 369, 88, 674, - 88, 674, 88, 674, 88, 88, 88, 368, 88, 674, - 674, 88, 674, 88, 674, 88, 674, 88, 674, 88, - 674, 88, 674, 88, 88, 88, 88, 674, 371, 674, - 88, 674, 674, 674, 674, 674, 88, 674, 88, 674, - 88, 370, 674, 88, 674, 88, 310, 310, 310, 310, - 310, 310, 310, 88, 674, 88, 674, 88, 380, 88, - 674, 379, 88, 674, 674, 674, 674, 88, 381, 88, - - 674, 88, 674, 88, 382, 88, 674, 88, 88, 88, - 674, 88, 674, 88, 375, 88, 88, 88, 674, 88, - 384, 88, 674, 88, 88, 88, 674, 88, 674, 88, - 385, 88, 88, 88, 674, 88, 674, 674, 674, 88, - 88, 88, 88, 88, 674, 386, 674, 674, 88, 674, - 88, 674, 88, 88, 88, 674, 88, 674, 674, 674, - 88, 88, 88, 88, 88, 387, 674, 88, 88, 88, - 388, 88, 88, 674, 88, 389, 674, 674, 88, 674, - 88, 88, 88, 88, 390, 88, 88, 88, 88, 88, - 88, 674, 391, 88, 674, 88, 392, 393, 674, 88, - - 674, 88, 674, 88, 674, 88, 674, 88, 88, 88, - 88, 88, 674, 394, 88, 674, 674, 674, 674, 674, - 88, 88, 88, 88, 88, 88, 88, 395, 674, 88, - 88, 674, 674, 674, 674, 674, 88, 674, 88, 674, - 88, 88, 397, 674, 396, 88, 674, 88, 674, 674, - 674, 88, 674, 88, 674, 88, 674, 88, 88, 88, - 88, 88, 674, 674, 88, 398, 88, 674, 88, 674, - 88, 674, 88, 674, 88, 399, 400, 88, 88, 88, - 88, 674, 674, 88, 674, 674, 674, 404, 674, 88, - 88, 88, 88, 88, 88, 674, 674, 88, 88, 88, - - 88, 405, 674, 406, 674, 674, 674, 88, 674, 88, - 88, 88, 88, 674, 88, 407, 88, 88, 88, 88, - 408, 674, 674, 674, 674, 674, 674, 88, 88, 409, - 88, 88, 88, 674, 88, 88, 88, 88, 410, 674, - 674, 413, 674, 412, 88, 88, 88, 88, 88, 88, - 88, 411, 674, 88, 88, 674, 88, 674, 674, 674, - 88, 674, 88, 674, 88, 674, 88, 88, 88, 88, - 88, 674, 674, 674, 674, 88, 674, 88, 88, 88, - 674, 88, 674, 674, 88, 415, 88, 674, 88, 674, - 88, 674, 88, 674, 88, 88, 416, 88, 88, 674, - - 674, 674, 674, 88, 674, 88, 88, 88, 674, 88, - 674, 418, 88, 419, 88, 674, 88, 674, 88, 674, - 88, 674, 88, 88, 420, 88, 88, 674, 674, 674, - 674, 88, 674, 88, 674, 88, 88, 88, 674, 88, - 674, 421, 88, 423, 674, 674, 88, 88, 88, 88, - 88, 424, 425, 88, 674, 88, 674, 88, 88, 88, - 88, 88, 674, 674, 674, 674, 88, 674, 674, 674, - 88, 88, 88, 674, 88, 674, 674, 88, 428, 88, - 674, 88, 426, 88, 674, 88, 674, 88, 674, 88, - 88, 88, 88, 88, 674, 430, 88, 674, 674, 674, - - 674, 674, 88, 88, 88, 88, 88, 88, 88, 431, - 674, 88, 88, 674, 88, 674, 674, 674, 88, 674, - 88, 674, 88, 674, 88, 674, 88, 88, 88, 88, - 440, 441, 88, 88, 674, 674, 674, 674, 674, 88, - 88, 88, 88, 88, 88, 674, 88, 674, 88, 674, - 88, 88, 88, 433, 88, 88, 674, 674, 442, 88, - 674, 88, 674, 674, 674, 88, 674, 444, 674, 88, - 674, 88, 88, 88, 88, 88, 674, 674, 88, 445, - 88, 446, 88, 674, 88, 674, 88, 674, 88, 88, - 88, 88, 88, 674, 674, 88, 447, 88, 674, 88, - - 674, 88, 674, 88, 674, 88, 88, 448, 88, 88, - 674, 674, 674, 674, 88, 674, 88, 88, 88, 450, - 88, 674, 674, 88, 449, 88, 674, 88, 674, 88, - 674, 88, 674, 88, 674, 88, 88, 88, 674, 674, - 88, 451, 88, 452, 674, 674, 88, 674, 453, 674, - 88, 674, 88, 674, 88, 674, 88, 674, 88, 88, - 88, 454, 88, 88, 674, 88, 674, 674, 674, 674, - 674, 674, 88, 88, 88, 88, 88, 88, 88, 88, - 674, 88, 88, 674, 674, 455, 674, 674, 88, 88, - 88, 88, 88, 88, 88, 674, 456, 88, 88, 458, - - 88, 457, 674, 674, 88, 674, 88, 674, 88, 674, - 88, 88, 88, 88, 88, 462, 674, 88, 674, 88, - 674, 88, 674, 88, 463, 88, 674, 88, 674, 88, - 88, 88, 88, 88, 464, 674, 88, 674, 674, 674, - 674, 674, 88, 88, 88, 88, 88, 88, 674, 674, - 465, 88, 88, 88, 88, 467, 466, 674, 674, 674, - 674, 674, 674, 88, 88, 88, 88, 88, 88, 88, - 674, 674, 88, 88, 674, 674, 674, 88, 674, 88, - 469, 88, 674, 88, 674, 468, 674, 88, 88, 88, - 88, 88, 674, 674, 674, 674, 88, 674, 88, 674, - - 88, 88, 88, 674, 88, 471, 674, 470, 88, 88, - 88, 88, 88, 88, 674, 88, 88, 88, 473, 88, - 88, 674, 88, 674, 674, 674, 88, 674, 475, 88, - 88, 88, 88, 88, 476, 88, 88, 88, 88, 674, - 88, 88, 674, 478, 674, 674, 674, 88, 88, 88, - 88, 88, 88, 674, 88, 477, 88, 674, 88, 88, - 88, 674, 88, 88, 481, 674, 88, 88, 480, 88, - 674, 674, 674, 88, 674, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 483, 88, 88, 674, - 88, 674, 674, 674, 88, 674, 88, 88, 88, 88, - - 88, 88, 88, 88, 88, 88, 88, 485, 88, 88, - 674, 674, 674, 674, 674, 88, 674, 88, 88, 88, - 88, 88, 88, 494, 88, 674, 495, 88, 496, 88, - 674, 88, 674, 88, 674, 88, 674, 674, 674, 88, - 88, 88, 88, 88, 674, 498, 674, 674, 88, 674, - 88, 674, 88, 88, 88, 674, 88, 674, 674, 674, - 88, 88, 499, 88, 88, 500, 88, 88, 674, 88, - 674, 674, 88, 501, 88, 674, 88, 88, 88, 674, - 88, 674, 674, 674, 88, 88, 88, 88, 88, 88, - 88, 88, 674, 88, 674, 674, 88, 502, 88, 674, - - 88, 88, 88, 503, 88, 674, 674, 674, 88, 88, - 88, 88, 88, 88, 88, 88, 674, 88, 674, 674, - 88, 674, 674, 674, 88, 88, 88, 674, 88, 674, - 674, 674, 504, 88, 674, 88, 88, 88, 674, 88, - 674, 674, 506, 505, 88, 674, 88, 674, 88, 674, - 88, 674, 88, 88, 88, 88, 88, 674, 674, 88, - 674, 88, 674, 507, 674, 88, 512, 88, 674, 88, - 88, 88, 88, 88, 674, 674, 674, 674, 88, 674, - 88, 88, 88, 674, 88, 674, 674, 88, 513, 88, - 674, 88, 674, 88, 674, 88, 674, 88, 88, 88, - - 88, 88, 674, 674, 88, 674, 88, 515, 88, 674, - 88, 674, 88, 674, 88, 514, 88, 88, 88, 88, - 88, 516, 674, 88, 674, 674, 674, 674, 674, 88, - 88, 88, 88, 88, 88, 88, 88, 674, 88, 88, - 674, 674, 674, 674, 674, 88, 88, 88, 518, 88, - 88, 88, 88, 674, 88, 88, 674, 674, 674, 674, - 674, 520, 88, 88, 88, 88, 88, 674, 674, 88, - 88, 88, 88, 522, 674, 88, 674, 674, 674, 88, - 517, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 674, 524, 88, 674, 88, 674, 674, 525, - - 88, 674, 88, 674, 88, 674, 88, 674, 88, 88, - 88, 88, 674, 537, 527, 88, 529, 88, 674, 674, - 674, 88, 674, 88, 674, 88, 674, 88, 88, 88, - 88, 88, 674, 674, 88, 674, 88, 674, 88, 674, - 88, 538, 88, 674, 88, 674, 88, 88, 88, 88, - 539, 674, 674, 88, 674, 88, 674, 674, 674, 88, - 674, 88, 674, 88, 674, 88, 88, 88, 88, 88, - 674, 541, 674, 674, 88, 674, 88, 674, 88, 88, - 88, 674, 543, 674, 542, 88, 674, 88, 674, 88, - 88, 88, 674, 88, 674, 674, 674, 88, 88, 544, - - 88, 88, 88, 545, 88, 88, 88, 674, 88, 88, - 674, 546, 674, 674, 674, 88, 88, 88, 88, 88, - 88, 674, 88, 674, 88, 674, 88, 88, 88, 88, - 88, 674, 88, 674, 674, 88, 547, 674, 674, 88, - 674, 88, 88, 88, 88, 674, 88, 88, 88, 674, - 552, 88, 674, 88, 674, 674, 674, 88, 674, 88, - 674, 88, 674, 88, 88, 88, 88, 88, 674, 674, - 88, 674, 88, 674, 88, 674, 88, 674, 88, 674, - 88, 88, 88, 88, 88, 674, 674, 674, 674, 88, - 674, 88, 88, 88, 674, 88, 555, 674, 88, 553, - - 88, 674, 88, 674, 88, 560, 88, 674, 88, 88, - 88, 88, 88, 674, 674, 674, 558, 88, 674, 88, - 88, 88, 674, 88, 674, 674, 88, 674, 88, 674, - 88, 674, 88, 674, 88, 674, 88, 88, 88, 88, - 88, 674, 674, 88, 674, 88, 674, 88, 674, 562, - 674, 88, 674, 564, 88, 88, 88, 88, 674, 674, - 674, 674, 88, 674, 88, 88, 88, 674, 88, 674, - 674, 572, 674, 88, 674, 88, 88, 88, 573, 88, - 674, 674, 88, 674, 88, 674, 88, 674, 88, 674, - 88, 674, 88, 88, 88, 88, 88, 674, 674, 674, - - 674, 88, 674, 88, 88, 88, 575, 88, 674, 674, - 574, 674, 88, 674, 88, 88, 88, 674, 88, 674, - 576, 88, 674, 88, 674, 88, 674, 88, 674, 88, - 674, 88, 674, 577, 88, 88, 88, 88, 578, 674, - 88, 674, 674, 674, 674, 674, 88, 579, 88, 88, - 88, 88, 88, 88, 674, 88, 88, 674, 674, 674, - 584, 674, 88, 88, 88, 88, 88, 88, 583, 88, - 88, 88, 88, 674, 674, 674, 586, 674, 674, 88, - 88, 88, 589, 88, 88, 88, 674, 674, 88, 88, - 674, 88, 674, 674, 674, 88, 674, 88, 591, 88, - - 674, 88, 88, 88, 88, 88, 674, 674, 674, 592, - 88, 674, 88, 674, 88, 674, 88, 570, 570, 570, - 674, 88, 674, 674, 674, 674, 88, 88, 674, 599, - 599, 599, 599, 599, 599, 599, 88, 88, 88, 602, - 88, 88, 88, 88, 674, 88, 88, 674, 674, 601, - 674, 674, 88, 88, 88, 88, 88, 88, 88, 88, - 674, 88, 88, 674, 674, 674, 674, 674, 88, 88, - 88, 88, 88, 88, 88, 88, 603, 88, 88, 674, - 674, 674, 604, 674, 88, 88, 88, 88, 88, 88, - 88, 674, 674, 88, 88, 674, 674, 674, 88, 674, - - 88, 674, 88, 674, 88, 674, 88, 674, 88, 88, - 88, 608, 88, 674, 88, 674, 88, 88, 610, 674, - 88, 613, 88, 674, 88, 88, 88, 674, 88, 615, - 88, 674, 88, 88, 88, 674, 88, 616, 674, 674, - 88, 88, 88, 674, 88, 674, 674, 88, 88, 88, - 599, 599, 599, 599, 599, 599, 599, 88, 88, 624, - 88, 88, 88, 88, 674, 674, 88, 88, 674, 674, - 674, 88, 674, 88, 674, 88, 674, 88, 674, 674, - 674, 88, 88, 88, 88, 88, 674, 674, 622, 625, - 88, 674, 88, 674, 88, 88, 629, 674, 88, 631, - - 674, 674, 88, 88, 88, 88, 88, 88, 88, 88, - 636, 88, 674, 634, 88, 674, 674, 674, 88, 88, - 88, 674, 88, 637, 674, 674, 674, 88, 674, 88, - 674, 88, 674, 88, 623, 623, 623, 674, 88, 674, - 674, 674, 674, 88, 88, 674, 599, 599, 599, 599, - 599, 599, 599, 88, 88, 88, 88, 88, 88, 88, - 674, 643, 88, 88, 674, 88, 674, 644, 674, 88, - 674, 88, 674, 88, 674, 88, 88, 88, 88, 88, - 674, 674, 88, 648, 88, 674, 88, 674, 88, 674, - 88, 674, 88, 88, 88, 88, 88, 674, 674, 651, - - 653, 88, 674, 88, 674, 88, 88, 88, 659, 88, - 674, 674, 88, 674, 674, 674, 88, 88, 88, 88, - 88, 88, 674, 88, 674, 88, 674, 88, 88, 88, - 674, 88, 88, 674, 674, 88, 88, 674, 664, 674, - 661, 674, 88, 674, 88, 88, 88, 88, 674, 88, - 674, 88, 674, 674, 88, 658, 658, 658, 674, 674, - 674, 674, 674, 674, 88, 88, 674, 599, 599, 599, - 599, 599, 599, 599, 88, 88, 88, 88, 88, 88, - 88, 88, 674, 88, 88, 674, 667, 674, 674, 674, - 88, 88, 88, 88, 88, 88, 671, 88, 674, 88, - - 88, 674, 674, 674, 674, 674, 674, 88, 674, 88, - 674, 88, 674, 674, 674, 674, 88, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 74, 74, 74, - 674, 74, 74, 74, 74, 74, 74, 74, 74, 81, - 81, 674, 674, 81, 674, 81, 147, 674, 147, 150, - - 150, 674, 150, 150, 151, 151, 674, 151, 151, 151, - 674, 151, 151, 151, 151, 151, 154, 154, 154, 674, - 154, 154, 154, 154, 154, 154, 154, 154, 156, 156, - 156, 156, 156, 156, 156, 156, 674, 156, 156, 158, - 674, 674, 158, 674, 158, 158, 158, 158, 158, 158, - 162, 162, 674, 162, 162, 163, 163, 674, 163, 163, - 94, 94, 674, 94, 94, 13, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674 + 16, 17, 18, 17, 19, 20, 21, 22, 23, 16, + 24, 25, 26, 27, 28, 28, 28, 28, 28, 28, + 29, 19, 30, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 38, 38, 38, 40, 41, 42, 43, + 38, 44, 45, 46, 47, 48, 49, 38, 38, 38, + 50, 19, 51, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 23, 53, 23, 55, 56, + 55, 56, 59, 59, 63, 66, 57, 64, 57, 60, + 60, 63, 61, 61, 64, 66, 82, 82, 82, 82, + + 82, 82, 81, 67, 244, 81, 68, 81, 256, 94, + 77, 78, 77, 67, 257, 79, 68, 245, 89, 89, + 89, 77, 78, 77, 81, 81, 79, 156, 91, 250, + 89, 89, 92, 92, 92, 92, 92, 92, 95, 95, + 95, 95, 95, 95, 95, 97, 168, 328, 112, 171, + 171, 171, 171, 171, 171, 97, 85, 97, 69, 97, + 70, 82, 82, 82, 97, 251, 532, 156, 69, 719, + 70, 71, 72, 73, 72, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 30, 533, 80, 87, 97, 720, + 156, 71, 71, 71, 71, 30, 393, 80, 97, 75, + + 97, 97, 97, 720, 104, 392, 718, 97, 105, 156, + 326, 97, 106, 97, 107, 97, 97, 156, 716, 97, + 97, 71, 71, 71, 108, 109, 97, 395, 97, 110, + 97, 97, 111, 97, 720, 127, 715, 168, 97, 178, + 178, 178, 178, 178, 178, 178, 72, 71, 72, 71, + 72, 73, 72, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 128, 459, 97, 171, 171, 171, 168, 71, + 71, 71, 71, 713, 97, 113, 114, 75, 97, 253, + 254, 156, 327, 97, 129, 130, 115, 394, 131, 156, + 168, 116, 97, 712, 97, 97, 97, 513, 132, 71, + + 71, 71, 97, 97, 97, 97, 97, 97, 117, 97, + 156, 97, 456, 133, 97, 711, 562, 120, 97, 156, + 121, 457, 458, 168, 72, 71, 72, 81, 97, 122, + 123, 152, 97, 156, 156, 124, 156, 97, 514, 156, + 156, 85, 515, 597, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 600, 708, 87, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 97, 560, 168, 97, 97, + + 97, 97, 97, 97, 97, 156, 707, 156, 561, 97, + 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 99, 97, 100, 97, 101, 97, 97, 97, 97, 102, + 97, 97, 97, 97, 97, 655, 156, 706, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 97, 679, 559, 156, 704, 125, 97, 598, 598, 598, + 97, 599, 97, 126, 97, 629, 97, 156, 97, 97, + 97, 703, 156, 701, 698, 97, 156, 134, 97, 631, + 135, 696, 118, 156, 695, 694, 97, 693, 136, 139, + + 97, 691, 97, 119, 137, 156, 97, 97, 97, 97, + 97, 689, 140, 688, 686, 97, 141, 685, 144, 97, + 684, 97, 680, 97, 145, 97, 678, 142, 97, 677, + 676, 138, 143, 97, 675, 97, 672, 97, 670, 97, + 669, 146, 667, 97, 97, 149, 97, 97, 147, 664, + 663, 150, 97, 153, 662, 658, 97, 148, 97, 654, + 97, 657, 657, 657, 653, 97, 154, 154, 154, 154, + 154, 154, 154, 151, 89, 89, 89, 155, 652, 651, + 176, 97, 648, 646, 645, 643, 89, 89, 640, 639, + 638, 97, 157, 97, 632, 97, 628, 158, 167, 156, + + 97, 627, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 95, 95, 95, 95, 95, 95, 95, 167, 167, + 167, 167, 97, 97, 178, 178, 178, 178, 178, 178, + 178, 626, 97, 182, 97, 97, 97, 97, 625, 181, + 624, 97, 97, 97, 97, 621, 619, 618, 167, 167, + 167, 616, 612, 97, 97, 97, 97, 97, 184, 97, + 611, 610, 97, 97, 596, 595, 183, 594, 593, 97, + 591, 97, 589, 97, 167, 167, 587, 185, 97, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 585, 97, + 584, 582, 97, 578, 186, 167, 167, 167, 167, 97, + + 577, 97, 97, 97, 97, 97, 97, 576, 97, 575, + 187, 97, 169, 566, 558, 97, 557, 97, 97, 188, + 556, 555, 553, 551, 97, 167, 167, 167, 97, 97, + 97, 189, 97, 697, 697, 697, 548, 97, 546, 97, + 544, 97, 535, 97, 190, 97, 534, 520, 97, 516, + 512, 167, 192, 97, 511, 97, 510, 97, 191, 97, + 509, 508, 506, 97, 97, 97, 97, 97, 504, 97, + 501, 156, 97, 195, 496, 494, 97, 193, 194, 97, + 97, 97, 196, 97, 482, 97, 481, 480, 97, 463, + 455, 454, 97, 453, 97, 451, 97, 97, 197, 198, + + 97, 97, 448, 97, 200, 446, 441, 97, 436, 97, + 203, 97, 97, 97, 97, 97, 199, 201, 97, 97, + 433, 202, 97, 421, 420, 207, 419, 400, 97, 390, + 97, 204, 97, 97, 389, 388, 97, 97, 382, 208, + 375, 370, 366, 97, 97, 97, 97, 97, 97, 354, + 97, 353, 97, 172, 97, 97, 97, 168, 209, 97, + 210, 325, 322, 97, 321, 320, 314, 303, 298, 97, + 97, 97, 294, 97, 283, 282, 211, 212, 97, 257, + 97, 97, 97, 213, 97, 255, 168, 97, 252, 97, + 156, 97, 243, 97, 239, 97, 227, 97, 97, 215, + + 97, 97, 221, 214, 217, 206, 97, 205, 216, 180, + 97, 97, 97, 179, 97, 177, 173, 97, 172, 218, + 172, 97, 166, 97, 97, 97, 97, 97, 97, 164, + 97, 94, 219, 97, 162, 97, 161, 97, 97, 97, + 81, 97, 81, 96, 93, 97, 97, 97, 97, 97, + 97, 97, 97, 220, 97, 84, 222, 97, 81, 81, + 720, 97, 97, 97, 720, 97, 720, 720, 720, 720, + 97, 223, 97, 720, 97, 97, 97, 720, 225, 720, + 720, 224, 226, 720, 720, 97, 720, 97, 720, 97, + 228, 97, 720, 720, 97, 720, 720, 97, 720, 720, + + 720, 229, 720, 97, 720, 97, 720, 97, 97, 97, + 97, 97, 230, 720, 97, 231, 97, 720, 97, 720, + 97, 720, 97, 720, 97, 97, 97, 97, 97, 235, + 233, 720, 232, 97, 720, 97, 720, 234, 720, 97, + 97, 97, 720, 720, 97, 720, 236, 720, 720, 720, + 97, 97, 97, 97, 97, 97, 97, 97, 720, 97, + 97, 720, 720, 720, 720, 720, 97, 97, 97, 97, + 97, 238, 97, 97, 241, 237, 97, 242, 720, 240, + 720, 720, 97, 97, 97, 97, 97, 97, 97, 720, + 720, 97, 97, 720, 720, 720, 720, 720, 97, 720, + + 97, 720, 97, 248, 248, 248, 246, 97, 154, 154, + 154, 154, 154, 154, 154, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 97, 97, 720, 258, 720, 720, + 720, 720, 720, 720, 97, 97, 97, 97, 97, 97, + 97, 249, 259, 97, 97, 720, 247, 720, 97, 720, + 97, 97, 97, 720, 97, 720, 720, 720, 260, 97, + 97, 97, 97, 97, 261, 97, 97, 97, 720, 97, + 97, 720, 97, 262, 720, 720, 97, 720, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 263, + 720, 97, 720, 97, 720, 720, 720, 264, 720, 97, + + 720, 97, 720, 97, 97, 97, 97, 97, 720, 265, + 97, 266, 97, 720, 97, 720, 97, 720, 97, 720, + 97, 97, 97, 97, 97, 720, 720, 267, 720, 97, + 720, 97, 97, 97, 720, 268, 720, 720, 720, 720, + 97, 720, 97, 720, 97, 720, 97, 271, 97, 269, + 270, 97, 720, 720, 97, 272, 720, 273, 97, 720, + 97, 720, 97, 720, 97, 97, 97, 97, 97, 720, + 720, 97, 720, 97, 720, 97, 720, 97, 274, 97, + 720, 97, 97, 97, 97, 97, 720, 720, 97, 720, + 97, 276, 97, 275, 97, 720, 97, 720, 97, 97, + + 97, 97, 97, 720, 720, 97, 720, 97, 279, 277, + 720, 97, 278, 97, 720, 97, 97, 97, 97, 97, + 720, 720, 720, 720, 97, 720, 97, 97, 97, 720, + 97, 720, 720, 280, 720, 97, 720, 97, 281, 97, + 97, 97, 720, 720, 720, 720, 97, 720, 97, 720, + 97, 97, 97, 720, 97, 720, 720, 284, 97, 97, + 285, 286, 97, 97, 287, 97, 97, 97, 720, 97, + 97, 720, 97, 720, 720, 290, 288, 720, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 289, 97, 291, + 97, 97, 720, 97, 720, 720, 97, 720, 720, 720, + + 97, 720, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 292, 720, 97, 97, 720, 295, 720, 720, + 720, 293, 720, 97, 97, 97, 97, 720, 97, 97, + 97, 720, 296, 97, 720, 97, 720, 720, 720, 97, + 720, 97, 297, 97, 720, 97, 97, 97, 97, 97, + 720, 720, 720, 720, 97, 720, 97, 97, 97, 720, + 97, 720, 720, 97, 299, 97, 720, 97, 720, 97, + 720, 97, 720, 97, 97, 97, 97, 97, 720, 720, + 300, 720, 97, 720, 97, 97, 97, 720, 97, 720, + 720, 301, 720, 97, 720, 97, 97, 97, 720, 97, + + 720, 305, 97, 720, 97, 302, 304, 720, 97, 720, + 97, 720, 97, 97, 97, 97, 97, 720, 720, 97, + 720, 97, 720, 97, 720, 97, 720, 97, 720, 97, + 720, 97, 306, 97, 97, 97, 720, 307, 97, 720, + 720, 720, 308, 720, 97, 97, 97, 97, 97, 97, + 97, 720, 720, 97, 97, 720, 720, 720, 720, 720, + 97, 97, 97, 720, 97, 720, 720, 97, 309, 97, + 720, 97, 720, 97, 720, 97, 720, 97, 310, 97, + 97, 97, 97, 720, 311, 312, 97, 720, 97, 720, + 720, 313, 97, 720, 97, 720, 97, 720, 97, 97, + + 97, 97, 97, 720, 720, 720, 720, 97, 720, 97, + 97, 97, 315, 97, 316, 319, 720, 720, 97, 317, + 97, 97, 97, 720, 97, 720, 720, 720, 318, 97, + 720, 97, 97, 97, 720, 97, 720, 720, 323, 720, + 97, 720, 97, 720, 97, 720, 97, 248, 248, 248, + 720, 97, 720, 720, 720, 720, 97, 97, 720, 324, + 324, 324, 324, 324, 324, 324, 97, 97, 329, 97, + 97, 97, 97, 330, 720, 97, 97, 720, 97, 331, + 720, 720, 97, 720, 97, 720, 97, 720, 97, 332, + 97, 97, 97, 97, 97, 720, 720, 97, 720, 720, + + 720, 720, 720, 97, 97, 333, 97, 97, 97, 336, + 97, 97, 97, 97, 335, 720, 720, 720, 720, 720, + 97, 97, 97, 97, 97, 97, 97, 337, 720, 97, + 97, 720, 97, 720, 720, 720, 97, 720, 97, 334, + 97, 720, 97, 97, 97, 97, 97, 720, 720, 338, + 720, 97, 720, 97, 97, 97, 339, 97, 720, 720, + 720, 720, 97, 720, 97, 720, 97, 720, 97, 97, + 340, 341, 97, 97, 720, 97, 720, 720, 720, 97, + 720, 97, 97, 97, 97, 97, 97, 343, 342, 97, + 97, 97, 344, 97, 97, 345, 97, 720, 720, 346, + + 97, 720, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 720, 720, 97, 720, 97, 720, 720, + 720, 97, 720, 97, 348, 347, 720, 97, 97, 97, + 97, 97, 720, 720, 720, 720, 97, 720, 97, 97, + 97, 720, 97, 720, 349, 720, 720, 97, 720, 97, + 720, 350, 720, 97, 97, 351, 720, 352, 97, 720, + 97, 720, 720, 720, 97, 720, 97, 720, 97, 720, + 97, 97, 97, 97, 97, 720, 720, 97, 720, 97, + 720, 97, 720, 97, 720, 97, 720, 97, 720, 97, + 97, 97, 97, 97, 720, 356, 97, 720, 720, 357, + + 720, 720, 97, 97, 97, 97, 97, 97, 97, 358, + 720, 97, 97, 360, 97, 720, 355, 720, 97, 720, + 97, 720, 97, 364, 97, 720, 97, 359, 97, 97, + 361, 720, 97, 97, 362, 720, 720, 720, 720, 97, + 97, 97, 97, 97, 97, 363, 97, 720, 97, 720, + 97, 97, 97, 97, 97, 720, 720, 365, 720, 97, + 720, 97, 367, 97, 97, 97, 720, 97, 720, 720, + 720, 97, 97, 97, 97, 97, 97, 97, 97, 720, + 97, 720, 368, 97, 720, 97, 372, 97, 371, 97, + 369, 97, 720, 720, 720, 97, 97, 97, 720, 97, + + 97, 97, 720, 373, 97, 720, 720, 720, 720, 720, + 97, 97, 97, 97, 97, 97, 374, 97, 97, 97, + 97, 720, 720, 720, 720, 720, 720, 97, 97, 97, + 97, 97, 97, 97, 720, 720, 97, 97, 720, 720, + 720, 720, 720, 97, 720, 97, 97, 97, 720, 377, + 720, 376, 97, 720, 97, 720, 97, 97, 97, 720, + 97, 720, 720, 720, 97, 97, 97, 97, 97, 378, + 720, 97, 97, 97, 379, 97, 97, 720, 97, 720, + 720, 381, 97, 720, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 720, 97, 97, 720, 97, + + 720, 720, 720, 97, 720, 97, 97, 97, 97, 97, + 97, 383, 97, 97, 97, 97, 720, 380, 97, 720, + 97, 720, 720, 385, 97, 720, 97, 720, 97, 720, + 97, 97, 97, 384, 97, 720, 720, 97, 720, 97, + 720, 97, 720, 97, 720, 97, 720, 97, 720, 97, + 97, 97, 97, 720, 387, 720, 97, 720, 720, 720, + 720, 720, 97, 720, 97, 720, 97, 386, 720, 97, + 720, 97, 324, 324, 324, 324, 324, 324, 324, 97, + 720, 97, 720, 97, 397, 97, 720, 396, 97, 720, + 720, 720, 720, 97, 398, 97, 720, 97, 720, 97, + + 399, 97, 720, 97, 97, 97, 720, 97, 720, 97, + 391, 97, 97, 97, 720, 97, 401, 97, 720, 97, + 97, 97, 720, 97, 720, 97, 402, 97, 97, 97, + 720, 97, 720, 720, 720, 97, 97, 97, 97, 97, + 720, 403, 720, 720, 97, 720, 97, 720, 97, 97, + 97, 720, 97, 720, 720, 720, 97, 97, 97, 97, + 97, 404, 720, 97, 97, 97, 405, 97, 97, 720, + 97, 406, 720, 720, 97, 720, 97, 97, 97, 97, + 407, 97, 97, 97, 97, 97, 97, 720, 408, 97, + 720, 97, 409, 410, 720, 97, 720, 97, 720, 97, + + 720, 97, 720, 97, 97, 97, 97, 97, 720, 411, + 97, 720, 720, 412, 720, 720, 97, 97, 97, 97, + 97, 97, 97, 413, 720, 97, 97, 720, 720, 720, + 720, 720, 97, 720, 97, 720, 97, 97, 415, 720, + 414, 97, 720, 97, 720, 720, 720, 97, 720, 97, + 720, 97, 720, 97, 97, 97, 97, 97, 720, 720, + 97, 416, 97, 720, 97, 720, 97, 720, 97, 720, + 97, 417, 418, 97, 97, 97, 97, 720, 720, 97, + 720, 720, 720, 422, 720, 97, 97, 97, 97, 97, + 97, 720, 720, 97, 97, 97, 97, 423, 720, 424, + + 720, 720, 720, 97, 720, 97, 97, 97, 97, 720, + 97, 425, 97, 97, 97, 97, 426, 720, 720, 720, + 720, 720, 720, 97, 97, 427, 97, 97, 97, 97, + 720, 720, 97, 97, 720, 97, 720, 720, 429, 97, + 720, 97, 720, 97, 720, 97, 97, 97, 428, 97, + 431, 720, 720, 432, 97, 720, 97, 97, 97, 720, + 97, 720, 720, 430, 720, 97, 720, 97, 97, 97, + 720, 97, 720, 720, 97, 720, 97, 720, 97, 720, + 97, 720, 97, 720, 97, 97, 97, 97, 97, 720, + 720, 97, 434, 97, 720, 97, 720, 97, 720, 97, + + 720, 97, 97, 435, 97, 97, 720, 720, 720, 720, + 97, 720, 97, 97, 97, 720, 97, 720, 437, 97, + 438, 97, 720, 97, 720, 97, 720, 97, 720, 97, + 97, 439, 97, 97, 720, 720, 720, 720, 97, 720, + 97, 720, 97, 97, 97, 720, 97, 720, 440, 97, + 442, 720, 720, 97, 97, 97, 97, 97, 443, 444, + 97, 720, 97, 720, 97, 97, 97, 97, 97, 720, + 720, 720, 720, 97, 720, 720, 720, 97, 97, 97, + 720, 97, 720, 720, 97, 447, 97, 720, 97, 445, + 97, 720, 97, 720, 97, 720, 97, 97, 97, 97, + + 97, 720, 449, 97, 720, 720, 720, 720, 720, 97, + 97, 97, 97, 97, 97, 97, 450, 720, 97, 97, + 720, 97, 720, 720, 720, 97, 720, 97, 720, 97, + 720, 97, 720, 97, 97, 97, 97, 460, 461, 97, + 97, 720, 720, 720, 720, 720, 97, 97, 97, 97, + 97, 97, 720, 97, 720, 97, 720, 97, 97, 97, + 452, 97, 97, 720, 720, 462, 97, 720, 97, 720, + 720, 720, 97, 720, 464, 720, 97, 720, 97, 97, + 97, 97, 97, 720, 720, 97, 465, 97, 466, 97, + 720, 97, 720, 97, 720, 97, 97, 97, 97, 97, + + 720, 720, 97, 467, 97, 720, 97, 720, 97, 720, + 97, 720, 97, 97, 468, 97, 97, 720, 720, 720, + 720, 97, 720, 97, 97, 97, 470, 97, 720, 720, + 97, 469, 97, 720, 97, 720, 97, 720, 97, 720, + 97, 720, 97, 97, 97, 720, 720, 97, 471, 97, + 472, 720, 720, 97, 720, 473, 720, 97, 720, 97, + 720, 97, 720, 97, 97, 97, 97, 97, 720, 475, + 97, 720, 97, 720, 97, 720, 474, 720, 97, 720, + 97, 97, 97, 97, 97, 720, 720, 97, 720, 97, + 720, 97, 720, 97, 476, 97, 720, 97, 97, 97, + + 97, 97, 720, 720, 97, 720, 97, 720, 97, 720, + 97, 478, 97, 720, 97, 477, 97, 97, 97, 479, + 97, 97, 720, 97, 720, 483, 720, 720, 720, 720, + 97, 97, 97, 97, 97, 97, 97, 720, 720, 97, + 97, 720, 97, 484, 485, 720, 97, 720, 97, 720, + 97, 720, 97, 97, 97, 97, 97, 720, 720, 97, + 720, 97, 487, 97, 720, 97, 720, 97, 720, 97, + 486, 97, 97, 97, 97, 488, 720, 720, 97, 720, + 97, 489, 720, 720, 97, 720, 97, 720, 97, 720, + 97, 97, 97, 97, 97, 720, 720, 720, 720, 97, + + 720, 97, 720, 97, 720, 97, 97, 490, 720, 491, + 97, 720, 97, 720, 720, 720, 97, 720, 97, 720, + 97, 720, 97, 97, 97, 97, 97, 720, 720, 492, + 493, 97, 720, 97, 97, 97, 720, 97, 720, 495, + 97, 720, 97, 720, 97, 720, 97, 720, 97, 720, + 97, 97, 97, 97, 97, 720, 720, 97, 720, 97, + 720, 97, 720, 497, 720, 97, 720, 97, 97, 498, + 97, 97, 720, 720, 720, 720, 97, 720, 97, 720, + 97, 97, 97, 720, 500, 720, 499, 97, 720, 97, + 720, 97, 720, 97, 720, 97, 720, 720, 720, 97, + + 97, 97, 720, 97, 97, 503, 720, 97, 97, 502, + 97, 720, 720, 720, 97, 720, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 505, 97, 97, + 720, 97, 720, 720, 720, 97, 720, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 507, 97, + 97, 720, 720, 720, 720, 720, 97, 720, 97, 97, + 97, 97, 97, 97, 517, 97, 720, 518, 97, 519, + 97, 720, 97, 720, 97, 720, 97, 720, 720, 720, + 97, 97, 97, 97, 97, 720, 521, 720, 720, 97, + 720, 97, 720, 97, 97, 97, 720, 97, 720, 720, + + 720, 97, 97, 522, 97, 97, 523, 97, 97, 720, + 97, 720, 720, 97, 524, 97, 720, 97, 97, 97, + 720, 97, 720, 720, 720, 97, 97, 97, 97, 97, + 97, 97, 97, 720, 97, 720, 720, 97, 525, 97, + 720, 97, 97, 97, 526, 97, 720, 720, 720, 97, + 97, 97, 97, 97, 97, 97, 97, 720, 97, 720, + 527, 97, 720, 97, 720, 97, 97, 97, 720, 97, + 720, 720, 720, 97, 97, 97, 97, 97, 97, 97, + 97, 528, 97, 720, 529, 97, 720, 530, 720, 97, + 97, 97, 720, 97, 720, 720, 720, 97, 97, 97, + + 531, 97, 97, 97, 97, 720, 97, 720, 720, 97, + 536, 97, 720, 97, 97, 97, 720, 97, 720, 720, + 720, 97, 97, 97, 97, 97, 97, 97, 97, 537, + 97, 720, 720, 97, 720, 97, 720, 97, 720, 97, + 720, 97, 720, 720, 720, 97, 97, 97, 97, 97, + 720, 539, 538, 720, 97, 720, 97, 720, 97, 97, + 97, 720, 97, 720, 720, 720, 97, 97, 97, 97, + 97, 97, 720, 97, 540, 97, 97, 541, 97, 97, + 720, 720, 97, 720, 720, 720, 97, 720, 97, 97, + 97, 97, 97, 97, 543, 97, 97, 97, 97, 720, + + 97, 97, 720, 720, 720, 720, 720, 545, 720, 97, + 97, 97, 97, 97, 97, 720, 97, 547, 720, 97, + 720, 97, 720, 97, 542, 97, 720, 97, 720, 97, + 720, 97, 97, 97, 720, 97, 720, 720, 720, 97, + 97, 97, 97, 97, 720, 549, 720, 720, 97, 720, + 97, 720, 97, 550, 97, 720, 97, 720, 720, 563, + 97, 97, 97, 97, 97, 720, 552, 720, 720, 97, + 554, 97, 720, 97, 97, 97, 720, 97, 720, 720, + 720, 97, 97, 97, 97, 97, 97, 97, 97, 720, + 97, 720, 720, 97, 564, 97, 565, 97, 720, 97, + + 720, 97, 720, 97, 720, 97, 97, 97, 720, 97, + 720, 97, 720, 97, 97, 97, 720, 97, 720, 567, + 720, 97, 97, 97, 97, 97, 720, 569, 720, 568, + 97, 720, 97, 720, 97, 97, 97, 720, 97, 720, + 720, 572, 97, 97, 570, 97, 97, 97, 571, 97, + 97, 97, 720, 97, 97, 720, 97, 720, 720, 720, + 97, 720, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 720, 573, 97, 720, 97, 720, 720, + 720, 97, 720, 97, 574, 97, 720, 97, 97, 97, + 97, 97, 720, 720, 97, 720, 97, 579, 97, 720, + + 97, 720, 97, 720, 97, 97, 97, 97, 97, 720, + 720, 97, 720, 97, 720, 97, 720, 97, 720, 97, + 720, 97, 97, 97, 97, 97, 720, 720, 97, 720, + 97, 720, 97, 720, 97, 580, 97, 720, 97, 97, + 97, 97, 97, 720, 720, 720, 720, 97, 720, 97, + 97, 97, 720, 97, 583, 720, 97, 581, 97, 720, + 97, 720, 97, 588, 97, 720, 97, 97, 97, 97, + 97, 720, 720, 720, 586, 97, 720, 97, 97, 97, + 720, 97, 720, 720, 97, 720, 97, 720, 97, 720, + 97, 720, 97, 720, 97, 97, 97, 97, 97, 720, + + 720, 97, 720, 97, 720, 97, 720, 590, 720, 97, + 720, 592, 97, 97, 97, 97, 720, 720, 720, 720, + 97, 720, 97, 97, 97, 720, 97, 720, 720, 601, + 720, 97, 720, 97, 97, 97, 602, 97, 720, 720, + 97, 720, 97, 720, 97, 720, 97, 720, 97, 720, + 97, 97, 97, 97, 97, 720, 720, 720, 720, 97, + 720, 97, 97, 97, 604, 97, 720, 720, 603, 720, + 97, 720, 97, 97, 97, 720, 97, 720, 605, 97, + 720, 97, 720, 97, 720, 97, 720, 97, 720, 97, + 720, 606, 97, 97, 97, 607, 720, 97, 97, 608, + + 97, 720, 720, 720, 97, 720, 97, 97, 97, 97, + 609, 97, 97, 97, 97, 97, 97, 720, 720, 97, + 720, 720, 720, 97, 720, 97, 720, 97, 720, 97, + 720, 613, 720, 97, 97, 97, 614, 97, 97, 97, + 720, 720, 97, 720, 720, 615, 617, 720, 97, 97, + 97, 97, 97, 97, 97, 720, 720, 97, 97, 720, + 720, 720, 97, 720, 97, 720, 620, 720, 97, 720, + 97, 720, 97, 97, 97, 622, 97, 720, 720, 720, + 97, 97, 97, 97, 97, 720, 720, 720, 623, 97, + 720, 720, 720, 97, 720, 97, 720, 97, 598, 598, + + 598, 720, 97, 720, 720, 720, 720, 97, 97, 720, + 630, 630, 630, 630, 630, 630, 630, 97, 97, 97, + 634, 97, 97, 97, 97, 720, 97, 97, 720, 720, + 633, 720, 720, 97, 97, 97, 97, 97, 97, 97, + 97, 720, 97, 97, 720, 720, 720, 720, 720, 97, + 97, 97, 97, 97, 97, 97, 720, 635, 97, 97, + 720, 97, 720, 720, 720, 97, 720, 97, 636, 97, + 720, 97, 97, 97, 97, 97, 720, 720, 97, 637, + 97, 720, 97, 720, 97, 720, 97, 720, 97, 97, + 97, 97, 97, 720, 720, 720, 720, 97, 720, 97, + + 97, 641, 720, 97, 720, 720, 97, 720, 97, 720, + 97, 720, 97, 642, 97, 720, 97, 97, 644, 97, + 97, 720, 720, 97, 647, 97, 720, 97, 720, 97, + 649, 97, 720, 97, 97, 97, 97, 97, 720, 720, + 720, 650, 97, 720, 97, 720, 97, 720, 97, 720, + 720, 97, 97, 97, 630, 630, 630, 630, 630, 630, + 630, 97, 97, 659, 97, 97, 97, 97, 97, 720, + 97, 97, 720, 720, 720, 720, 720, 97, 97, 97, + 660, 97, 97, 97, 720, 720, 97, 97, 720, 720, + 720, 720, 656, 97, 97, 97, 720, 97, 720, 720, + + 97, 661, 97, 720, 97, 720, 97, 720, 97, 720, + 97, 665, 666, 97, 97, 97, 720, 720, 97, 97, + 720, 97, 668, 673, 720, 97, 720, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 671, 97, 97, 720, + 97, 720, 674, 720, 720, 720, 720, 720, 97, 720, + 97, 720, 97, 657, 657, 657, 720, 97, 720, 720, + 720, 720, 97, 720, 720, 630, 630, 630, 630, 630, + 630, 630, 97, 97, 97, 720, 97, 720, 720, 720, + 681, 97, 720, 97, 97, 97, 720, 97, 720, 720, + 97, 682, 97, 720, 97, 720, 97, 720, 97, 720, + + 97, 97, 97, 97, 97, 720, 720, 683, 720, 97, + 720, 97, 97, 97, 720, 97, 720, 720, 720, 720, + 97, 720, 97, 97, 97, 720, 97, 720, 720, 97, + 687, 97, 720, 97, 720, 97, 720, 97, 720, 97, + 97, 97, 97, 97, 720, 720, 690, 692, 97, 720, + 97, 720, 97, 97, 97, 699, 97, 720, 720, 97, + 720, 720, 720, 97, 97, 97, 97, 97, 97, 700, + 97, 720, 97, 720, 97, 97, 97, 97, 97, 720, + 97, 720, 720, 97, 720, 720, 720, 97, 720, 97, + 97, 97, 97, 720, 97, 97, 97, 720, 705, 97, + + 702, 720, 720, 720, 720, 97, 720, 97, 720, 97, + 697, 697, 697, 720, 97, 720, 720, 720, 720, 97, + 720, 720, 630, 630, 630, 630, 630, 630, 630, 97, + 97, 97, 720, 97, 720, 720, 97, 720, 97, 720, + 97, 709, 97, 710, 97, 720, 97, 97, 97, 97, + 97, 720, 720, 720, 720, 97, 720, 97, 97, 97, + 720, 97, 720, 714, 97, 720, 97, 720, 97, 720, + 97, 720, 97, 720, 717, 97, 97, 97, 97, 720, + 720, 97, 720, 97, 720, 97, 720, 97, 720, 97, + 720, 97, 720, 97, 97, 97, 720, 720, 720, 720, + + 97, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 83, 83, 83, 720, 83, 83, 83, + 83, 83, 83, 83, 83, 90, 90, 720, 720, 90, + 720, 90, 156, 720, 156, 159, 159, 720, 159, 159, + + 160, 160, 720, 160, 160, 160, 720, 160, 160, 160, + 160, 160, 163, 163, 163, 720, 163, 163, 163, 163, + 163, 163, 163, 163, 165, 165, 165, 165, 165, 165, + 165, 165, 720, 165, 165, 167, 720, 720, 167, 167, + 167, 167, 167, 167, 167, 167, 168, 720, 720, 168, + 168, 168, 168, 168, 168, 168, 168, 170, 720, 720, + 170, 720, 170, 170, 170, 170, 170, 170, 174, 174, + 720, 174, 174, 175, 175, 720, 175, 175, 103, 103, + 720, 103, 103, 15, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720 } ; -static yyconst short int yy_chk[4245] = +static yyconst short int yy_chk[4563] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1213,485 +1274,521 @@ static yyconst short int yy_chk[4245] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 5, 6, 7, 9, 3, 7, 4, 5, - 6, 8, 5, 6, 8, 10, 459, 11, 11, 11, - - 78, 143, 11, 9, 164, 669, 9, 12, 12, 12, - 164, 70, 12, 10, 143, 459, 10, 15, 15, 15, - 16, 16, 16, 15, 378, 70, 16, 20, 20, 20, - 24, 78, 24, 20, 22, 378, 148, 22, 148, 20, - 20, 22, 22, 22, 22, 22, 22, 26, 26, 26, - 26, 26, 26, 26, 665, 36, 70, 149, 9, 149, - 9, 68, 68, 68, 663, 36, 31, 36, 10, 36, - 10, 11, 31, 11, 36, 238, 31, 33, 31, 31, - 31, 12, 238, 12, 19, 31, 662, 33, 33, 33, - 239, 33, 69, 69, 69, 660, 33, 239, 19, 33, - - 656, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 598, 598, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 29, 655, 492, 29, 29, 29, 29, 29, - 29, 29, 73, 73, 73, 492, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 159, 159, 159, 29, 29, 29, 29, 29, - - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 30, 311, 312, - 30, 652, 311, 32, 30, 312, 32, 30, 30, 30, - 30, 30, 650, 32, 376, 32, 30, 32, 34, 34, - 30, 376, 32, 437, 313, 377, 646, 35, 438, 34, - 313, 34, 438, 34, 641, 34, 437, 35, 34, 35, - 377, 35, 37, 37, 534, 37, 35, 439, 534, 439, - 640, 491, 536, 37, 37, 37, 639, 37, 493, 35, - 37, 493, 37, 38, 38, 39, 491, 536, 571, 638, - 35, 38, 571, 569, 38, 39, 38, 39, 38, 39, - - 569, 40, 40, 38, 39, 40, 41, 41, 621, 41, - 621, 40, 635, 40, 633, 40, 632, 41, 628, 41, - 40, 41, 42, 41, 627, 42, 41, 80, 80, 80, - 40, 39, 42, 80, 42, 43, 42, 626, 43, 80, - 80, 42, 43, 620, 619, 43, 618, 43, 617, 43, - 41, 614, 612, 43, 43, 44, 611, 609, 43, 607, - 606, 44, 44, 605, 597, 45, 535, 535, 535, 596, - 595, 593, 44, 590, 44, 45, 44, 45, 44, 45, - 588, 44, 587, 45, 45, 44, 585, 46, 47, 582, - 581, 580, 568, 567, 44, 47, 566, 46, 47, 46, - - 47, 46, 47, 565, 535, 45, 46, 47, 48, 48, - 48, 48, 48, 48, 48, 563, 559, 557, 556, 48, - 600, 600, 600, 46, 83, 83, 83, 83, 83, 83, - 83, 554, 550, 549, 48, 548, 533, 88, 89, 48, - 86, 86, 86, 86, 86, 86, 86, 88, 89, 88, - 89, 88, 89, 90, 91, 89, 88, 89, 600, 642, - 642, 642, 532, 90, 91, 90, 91, 90, 91, 92, - 531, 530, 90, 91, 528, 93, 526, 91, 523, 92, - 521, 92, 519, 92, 517, 93, 95, 93, 92, 93, - 511, 95, 96, 93, 93, 510, 95, 642, 95, 509, - - 95, 508, 96, 97, 96, 95, 96, 497, 490, 489, - 96, 96, 488, 97, 98, 97, 487, 97, 484, 482, - 99, 479, 97, 474, 98, 472, 98, 98, 98, 461, - 99, 460, 99, 98, 99, 100, 100, 443, 436, 99, - 435, 101, 101, 434, 433, 432, 100, 429, 100, 100, - 100, 427, 101, 102, 101, 100, 101, 422, 417, 414, - 403, 101, 402, 102, 102, 102, 103, 102, 401, 104, - 103, 383, 102, 374, 373, 372, 103, 370, 103, 104, - 103, 104, 366, 104, 364, 103, 106, 106, 104, 105, - 105, 105, 359, 354, 350, 340, 106, 107, 106, 105, - - 106, 105, 339, 105, 106, 106, 338, 107, 105, 107, - 108, 107, 319, 111, 308, 307, 107, 306, 300, 289, - 108, 111, 108, 108, 108, 284, 280, 112, 269, 108, - 112, 111, 268, 111, 241, 111, 237, 112, 113, 112, - 111, 112, 233, 232, 114, 114, 112, 231, 113, 227, - 113, 215, 113, 209, 114, 115, 114, 113, 114, 205, - 194, 114, 114, 114, 193, 115, 116, 115, 115, 115, - 165, 161, 117, 157, 115, 147, 116, 142, 116, 139, - 116, 129, 117, 118, 117, 116, 117, 124, 116, 119, - 110, 117, 109, 118, 87, 118, 120, 118, 84, 121, - - 81, 76, 118, 75, 120, 72, 120, 63, 120, 121, - 120, 121, 122, 121, 60, 120, 57, 121, 121, 56, - 123, 53, 122, 125, 122, 27, 122, 23, 18, 17, - 123, 122, 123, 125, 123, 125, 126, 125, 123, 123, - 14, 125, 125, 13, 0, 0, 126, 127, 126, 0, - 126, 0, 0, 0, 0, 126, 126, 127, 0, 127, - 128, 127, 0, 128, 0, 0, 127, 128, 0, 0, - 128, 0, 128, 0, 128, 130, 130, 0, 0, 128, - 0, 0, 131, 0, 0, 0, 130, 0, 130, 0, - 130, 0, 131, 132, 131, 130, 131, 131, 0, 133, - - 131, 131, 0, 132, 0, 132, 0, 132, 0, 133, - 134, 133, 132, 133, 135, 133, 0, 132, 133, 0, - 134, 0, 134, 0, 134, 135, 136, 0, 0, 134, - 0, 136, 0, 0, 0, 135, 136, 135, 136, 135, - 136, 137, 138, 0, 135, 136, 0, 0, 0, 0, - 0, 137, 138, 137, 138, 137, 138, 140, 141, 141, - 137, 138, 141, 0, 140, 0, 0, 140, 141, 140, - 141, 140, 141, 144, 0, 0, 140, 141, 0, 0, - 0, 0, 0, 144, 0, 144, 0, 144, 146, 146, - 146, 144, 144, 145, 145, 145, 145, 145, 145, 145, - - 146, 146, 146, 146, 146, 146, 146, 166, 166, 166, - 166, 166, 166, 166, 0, 169, 0, 0, 169, 0, - 0, 0, 0, 0, 0, 169, 146, 169, 170, 169, - 0, 145, 0, 169, 169, 0, 171, 0, 170, 172, - 170, 0, 170, 0, 0, 0, 171, 170, 171, 172, - 171, 172, 173, 172, 0, 171, 0, 0, 172, 0, - 174, 0, 173, 175, 173, 173, 173, 174, 0, 0, - 174, 173, 174, 175, 174, 175, 176, 175, 0, 174, - 0, 0, 175, 0, 177, 0, 176, 0, 176, 0, - 176, 0, 178, 176, 177, 176, 177, 0, 177, 0, - - 179, 0, 178, 177, 178, 0, 178, 179, 178, 0, - 179, 178, 179, 180, 179, 0, 0, 0, 0, 179, - 0, 181, 0, 180, 182, 180, 0, 180, 0, 0, - 180, 181, 180, 181, 182, 181, 182, 0, 182, 0, - 181, 182, 182, 182, 183, 183, 184, 0, 0, 184, - 0, 0, 183, 0, 0, 183, 184, 183, 184, 183, - 184, 185, 0, 0, 183, 184, 0, 186, 0, 0, - 0, 185, 0, 185, 185, 185, 0, 186, 187, 186, - 185, 186, 0, 0, 188, 0, 186, 188, 187, 187, - 187, 0, 187, 0, 188, 189, 188, 187, 188, 0, - - 0, 190, 0, 188, 190, 189, 0, 189, 189, 189, - 0, 190, 191, 190, 189, 190, 0, 0, 0, 0, - 190, 0, 191, 192, 191, 0, 191, 0, 0, 191, - 0, 191, 0, 192, 192, 192, 195, 192, 0, 0, - 0, 0, 192, 0, 196, 0, 195, 197, 195, 0, - 195, 0, 0, 195, 196, 195, 196, 197, 196, 197, - 197, 197, 198, 196, 0, 199, 197, 0, 200, 0, - 0, 200, 198, 0, 198, 199, 198, 199, 200, 199, - 200, 198, 200, 199, 199, 201, 202, 200, 0, 203, - 0, 0, 201, 0, 0, 0, 202, 0, 202, 203, - - 202, 203, 201, 203, 201, 202, 201, 204, 203, 0, - 206, 201, 0, 206, 0, 0, 0, 204, 0, 204, - 206, 204, 206, 0, 206, 207, 204, 0, 207, 206, - 0, 208, 0, 0, 0, 207, 0, 207, 208, 207, - 0, 208, 210, 208, 207, 208, 0, 0, 0, 0, - 208, 0, 210, 211, 210, 0, 210, 0, 0, 212, - 210, 210, 0, 211, 0, 211, 0, 211, 0, 212, - 213, 212, 211, 212, 0, 0, 212, 0, 212, 0, - 213, 214, 213, 0, 213, 0, 0, 213, 0, 213, - 0, 214, 216, 214, 0, 214, 0, 217, 217, 0, - - 214, 214, 216, 0, 216, 0, 216, 0, 217, 218, - 217, 216, 217, 0, 0, 219, 0, 217, 0, 218, - 0, 218, 0, 218, 0, 219, 0, 219, 218, 219, - 220, 221, 0, 220, 219, 0, 0, 0, 221, 0, - 220, 221, 220, 221, 220, 221, 222, 0, 0, 220, - 221, 0, 0, 0, 0, 0, 222, 223, 222, 0, + 6, 8, 5, 6, 8, 10, 17, 17, 17, 18, + + 18, 18, 17, 9, 152, 18, 9, 26, 176, 26, + 13, 13, 13, 10, 176, 13, 10, 152, 22, 22, + 22, 14, 14, 14, 22, 24, 14, 157, 24, 157, + 22, 22, 24, 24, 24, 24, 24, 24, 28, 28, + 28, 28, 28, 28, 28, 34, 253, 253, 34, 77, + 77, 77, 78, 78, 78, 34, 87, 34, 9, 34, + 9, 82, 82, 82, 34, 158, 480, 158, 10, 716, + 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 13, 480, 13, 87, 38, 79, + 326, 11, 11, 11, 11, 14, 326, 14, 38, 11, + + 38, 32, 38, 79, 32, 325, 712, 38, 32, 325, + 250, 32, 32, 32, 32, 32, 41, 250, 708, 33, + 32, 11, 11, 11, 32, 33, 41, 328, 41, 33, + 41, 33, 33, 33, 79, 41, 706, 328, 33, 92, + 92, 92, 92, 92, 92, 92, 11, 11, 11, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 41, 395, 35, 171, 171, 171, 395, 12, + 12, 12, 12, 704, 35, 35, 35, 12, 35, 169, + 169, 327, 251, 35, 42, 42, 35, 327, 42, 251, + 169, 36, 36, 703, 42, 48, 42, 456, 42, 12, + + 12, 12, 36, 42, 36, 48, 36, 48, 36, 48, + 456, 36, 392, 42, 48, 701, 516, 39, 39, 392, + 39, 393, 394, 516, 12, 12, 12, 21, 39, 39, + 39, 48, 39, 394, 457, 39, 393, 39, 457, 559, + 458, 21, 458, 559, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 562, 698, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 31, 514, 562, 31, 31, + + 31, 31, 31, 31, 31, 515, 695, 514, 515, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 629, 629, 694, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 37, 655, 513, 655, 691, 40, 40, 560, 560, 560, + 37, 561, 37, 40, 37, 597, 40, 513, 40, 37, + 40, 689, 597, 685, 680, 40, 561, 43, 43, 599, + 43, 678, 37, 599, 677, 676, 44, 675, 43, 44, + + 43, 672, 43, 37, 43, 560, 44, 43, 44, 45, + 44, 670, 45, 669, 664, 44, 45, 663, 46, 45, + 662, 45, 658, 45, 46, 46, 654, 45, 45, 653, + 652, 43, 45, 47, 651, 46, 648, 46, 646, 46, + 645, 46, 643, 47, 46, 47, 49, 47, 46, 640, + 639, 47, 47, 49, 638, 632, 49, 46, 49, 628, + 49, 631, 631, 631, 627, 49, 50, 50, 50, 50, + 50, 50, 50, 47, 89, 89, 89, 50, 626, 624, + 89, 97, 621, 619, 618, 616, 89, 89, 612, 611, + 610, 97, 50, 97, 600, 97, 596, 50, 74, 631, + + 97, 595, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 95, 95, 95, 95, 95, 95, 95, 74, 74, + 74, 74, 98, 99, 178, 178, 178, 178, 178, 178, + 178, 594, 98, 99, 98, 99, 98, 99, 593, 98, + 591, 98, 99, 100, 101, 587, 585, 584, 74, 74, + 74, 582, 577, 100, 101, 100, 101, 100, 101, 102, + 576, 575, 100, 101, 558, 557, 100, 556, 555, 102, + 553, 102, 551, 102, 74, 75, 548, 102, 102, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 546, 104, + 544, 542, 105, 535, 104, 75, 75, 75, 75, 104, + + 534, 104, 105, 104, 105, 106, 105, 533, 104, 532, + 105, 105, 75, 520, 512, 106, 511, 106, 107, 106, + 510, 509, 506, 504, 106, 75, 75, 75, 107, 108, + 107, 107, 107, 679, 679, 679, 501, 107, 496, 108, + 494, 108, 482, 108, 109, 109, 481, 463, 108, 459, + 455, 75, 110, 110, 454, 109, 453, 109, 109, 109, + 452, 451, 448, 110, 109, 110, 111, 110, 446, 112, + 441, 679, 110, 112, 436, 433, 111, 111, 111, 112, + 111, 112, 113, 112, 421, 111, 420, 419, 112, 400, + 390, 389, 113, 388, 113, 386, 113, 114, 114, 114, + + 116, 113, 382, 115, 115, 380, 375, 114, 370, 114, + 116, 114, 116, 115, 116, 115, 114, 115, 117, 116, + 366, 115, 115, 355, 354, 120, 353, 334, 117, 322, + 117, 117, 117, 120, 321, 320, 121, 117, 314, 121, + 303, 298, 294, 120, 122, 120, 121, 120, 121, 283, + 121, 282, 120, 255, 122, 121, 122, 254, 122, 123, + 123, 249, 245, 122, 244, 243, 239, 227, 221, 123, + 124, 123, 217, 123, 206, 205, 123, 123, 123, 177, + 124, 125, 124, 124, 124, 173, 168, 126, 166, 124, + 156, 125, 151, 125, 148, 125, 138, 126, 127, 126, + + 125, 126, 133, 125, 128, 119, 126, 118, 127, 96, + 127, 129, 127, 93, 130, 90, 85, 127, 84, 129, + 81, 129, 67, 129, 130, 129, 130, 131, 130, 64, + 129, 61, 130, 130, 60, 132, 57, 131, 134, 131, + 53, 131, 51, 29, 25, 132, 131, 132, 134, 132, + 134, 135, 134, 132, 132, 20, 134, 134, 19, 16, + 15, 135, 136, 135, 0, 135, 0, 0, 0, 0, + 135, 135, 136, 0, 136, 137, 136, 0, 137, 0, + 0, 136, 137, 0, 0, 137, 0, 137, 0, 137, + 139, 139, 0, 0, 137, 0, 0, 140, 0, 0, + + 0, 139, 0, 139, 0, 139, 0, 140, 141, 140, + 139, 140, 140, 0, 142, 140, 140, 0, 141, 0, + 141, 0, 141, 0, 142, 143, 142, 141, 142, 144, + 142, 0, 141, 142, 0, 143, 0, 143, 0, 143, + 144, 145, 0, 0, 143, 0, 145, 0, 0, 0, + 144, 145, 144, 145, 144, 145, 146, 147, 0, 144, + 145, 0, 0, 0, 0, 0, 146, 147, 146, 147, + 146, 147, 149, 150, 150, 146, 147, 150, 0, 149, + 0, 0, 149, 150, 149, 150, 149, 150, 153, 0, + 0, 149, 150, 0, 0, 0, 0, 0, 153, 0, + + 153, 0, 153, 155, 155, 155, 153, 153, 154, 154, + 154, 154, 154, 154, 154, 155, 155, 155, 155, 155, + 155, 155, 0, 0, 181, 182, 0, 181, 0, 0, + 0, 0, 0, 0, 181, 182, 181, 182, 181, 182, + 183, 155, 181, 181, 182, 0, 154, 0, 184, 0, + 183, 185, 183, 0, 183, 0, 0, 0, 184, 183, + 184, 185, 184, 185, 185, 185, 186, 184, 0, 187, + 185, 0, 188, 186, 0, 0, 186, 0, 186, 187, + 186, 187, 188, 187, 188, 186, 188, 189, 187, 188, + 0, 188, 0, 190, 0, 0, 0, 189, 0, 189, + + 0, 189, 0, 190, 191, 190, 189, 190, 0, 190, + 192, 191, 190, 0, 191, 0, 191, 0, 191, 0, + 192, 193, 192, 191, 192, 0, 0, 192, 0, 192, + 0, 193, 194, 193, 0, 193, 0, 0, 0, 0, + 193, 0, 194, 0, 194, 0, 194, 195, 195, 194, + 194, 194, 0, 0, 196, 195, 0, 196, 195, 0, + 195, 0, 195, 0, 196, 197, 196, 195, 196, 0, + 0, 198, 0, 196, 0, 197, 0, 197, 197, 197, + 0, 198, 199, 198, 197, 198, 0, 0, 200, 0, + 198, 200, 199, 199, 199, 0, 199, 0, 200, 201, + + 200, 199, 200, 0, 0, 202, 0, 200, 202, 201, + 0, 201, 201, 201, 0, 202, 203, 202, 201, 202, + 0, 0, 0, 0, 202, 0, 203, 204, 203, 0, + 203, 0, 0, 203, 0, 203, 0, 204, 204, 204, + 207, 204, 0, 0, 0, 0, 204, 0, 208, 0, + 207, 209, 207, 0, 207, 0, 0, 207, 208, 207, + 208, 209, 208, 209, 209, 209, 210, 208, 0, 211, + 209, 0, 212, 0, 0, 212, 210, 0, 210, 211, + 210, 211, 212, 211, 212, 210, 212, 211, 211, 213, + 214, 212, 0, 215, 0, 0, 213, 0, 0, 0, + + 214, 0, 214, 215, 214, 215, 213, 215, 213, 214, + 213, 216, 215, 0, 218, 213, 0, 218, 0, 0, + 0, 216, 0, 216, 218, 216, 218, 0, 218, 219, + 216, 0, 219, 218, 0, 220, 0, 0, 0, 219, + 0, 219, 220, 219, 0, 220, 222, 220, 219, 220, + 0, 0, 0, 0, 220, 0, 222, 223, 222, 0, 222, 0, 0, 224, 222, 222, 0, 223, 0, 223, - 0, 223, 0, 224, 223, 224, 223, 224, 225, 0, - 224, 225, 224, 0, 226, 0, 0, 226, 225, 0, - 225, 0, 225, 0, 226, 228, 226, 225, 226, 0, - - 0, 0, 0, 226, 0, 228, 229, 228, 228, 228, - 228, 230, 0, 0, 228, 228, 229, 230, 229, 0, - 229, 0, 0, 0, 229, 229, 0, 230, 234, 230, - 0, 230, 0, 0, 234, 0, 230, 0, 234, 0, - 234, 0, 234, 236, 236, 236, 0, 234, 0, 0, - 0, 0, 244, 245, 0, 236, 236, 236, 236, 236, - 236, 236, 244, 245, 244, 245, 244, 245, 246, 245, - 0, 244, 245, 0, 247, 246, 0, 0, 246, 0, - 246, 0, 246, 0, 247, 247, 247, 246, 247, 248, - 249, 0, 0, 247, 0, 0, 0, 0, 0, 248, - - 249, 248, 249, 248, 249, 251, 251, 250, 248, 249, - 250, 0, 0, 0, 0, 0, 251, 250, 251, 250, - 251, 250, 252, 252, 0, 251, 250, 0, 253, 0, - 0, 0, 252, 0, 252, 249, 252, 0, 253, 254, - 253, 252, 253, 0, 0, 253, 0, 253, 0, 254, - 255, 254, 254, 254, 0, 0, 0, 0, 254, 0, - 255, 0, 255, 0, 255, 257, 255, 256, 256, 255, - 0, 258, 0, 0, 0, 257, 0, 257, 256, 257, - 256, 258, 256, 258, 257, 258, 259, 256, 259, 260, - 258, 260, 261, 0, 0, 261, 259, 0, 259, 260, - - 259, 260, 261, 260, 261, 259, 261, 262, 260, 0, - 0, 261, 0, 263, 0, 0, 0, 262, 0, 262, - 263, 262, 0, 263, 264, 263, 262, 263, 0, 0, - 0, 0, 263, 0, 264, 265, 264, 0, 264, 0, - 264, 0, 0, 264, 0, 265, 0, 265, 0, 265, - 266, 265, 0, 266, 265, 0, 267, 0, 0, 0, - 266, 0, 266, 0, 266, 0, 267, 270, 267, 266, - 267, 0, 0, 271, 0, 267, 0, 270, 0, 270, - 0, 270, 0, 271, 0, 271, 270, 271, 272, 273, - 0, 271, 271, 0, 0, 272, 0, 0, 272, 273, - - 272, 273, 272, 273, 274, 273, 0, 272, 273, 275, - 275, 0, 270, 0, 274, 0, 274, 0, 274, 0, - 275, 276, 275, 274, 275, 277, 276, 0, 0, 275, - 0, 276, 0, 276, 277, 276, 0, 276, 0, 0, - 276, 0, 278, 0, 277, 0, 277, 0, 277, 0, - 279, 0, 278, 277, 278, 0, 278, 0, 0, 278, - 279, 278, 279, 0, 279, 281, 281, 0, 282, 279, - 0, 0, 0, 0, 0, 281, 0, 281, 282, 281, - 282, 283, 282, 0, 281, 0, 282, 282, 0, 285, - 286, 283, 285, 283, 283, 283, 0, 0, 0, 285, - - 283, 285, 0, 285, 287, 286, 0, 287, 285, 0, - 0, 0, 0, 0, 287, 286, 287, 286, 287, 286, - 288, 288, 290, 287, 286, 0, 0, 0, 0, 0, - 0, 288, 290, 288, 290, 288, 290, 291, 0, 0, - 288, 290, 0, 0, 0, 0, 0, 291, 0, 291, - 292, 291, 0, 292, 0, 291, 291, 0, 293, 0, - 292, 294, 292, 0, 292, 0, 0, 0, 293, 292, - 293, 294, 293, 294, 0, 294, 296, 293, 295, 295, - 294, 0, 297, 0, 0, 299, 296, 0, 296, 295, - 296, 295, 297, 295, 297, 296, 297, 298, 295, 0, - - 299, 297, 0, 301, 0, 0, 0, 298, 0, 298, - 299, 298, 299, 301, 299, 301, 298, 301, 302, 299, - 0, 296, 301, 0, 303, 0, 0, 303, 302, 0, - 302, 0, 302, 0, 303, 304, 303, 302, 303, 0, - 0, 305, 0, 303, 0, 304, 0, 304, 0, 304, - 0, 305, 0, 305, 304, 305, 309, 0, 305, 0, - 305, 0, 0, 0, 0, 0, 309, 0, 309, 0, - 309, 304, 0, 314, 0, 309, 310, 310, 310, 310, - 310, 310, 310, 314, 0, 314, 0, 314, 315, 315, - 0, 314, 314, 0, 0, 0, 0, 316, 316, 315, - - 0, 315, 0, 315, 317, 317, 0, 316, 315, 316, - 0, 316, 0, 318, 310, 317, 316, 317, 0, 317, - 320, 320, 0, 318, 317, 318, 0, 318, 0, 321, - 321, 320, 318, 320, 0, 320, 0, 0, 0, 321, - 320, 321, 322, 321, 0, 322, 0, 0, 321, 0, - 323, 0, 322, 324, 322, 0, 322, 0, 0, 0, - 323, 322, 323, 324, 323, 324, 0, 324, 326, 323, - 325, 325, 324, 0, 327, 326, 0, 0, 326, 0, - 326, 325, 326, 325, 327, 325, 327, 326, 327, 328, - 325, 0, 328, 327, 0, 329, 328, 329, 0, 328, - - 0, 328, 0, 328, 0, 329, 0, 329, 328, 329, - 330, 331, 0, 330, 329, 0, 0, 0, 0, 0, - 330, 331, 330, 331, 330, 331, 332, 331, 0, 330, - 331, 0, 0, 0, 0, 0, 332, 0, 332, 0, - 332, 333, 333, 0, 332, 332, 0, 334, 0, 0, - 0, 333, 0, 333, 0, 333, 0, 334, 335, 334, - 333, 334, 0, 0, 336, 334, 334, 0, 335, 0, - 335, 0, 335, 0, 336, 335, 336, 335, 336, 337, - 341, 0, 0, 336, 0, 0, 0, 341, 0, 337, - 341, 337, 341, 337, 341, 0, 0, 343, 337, 341, - - 342, 342, 0, 342, 0, 0, 0, 343, 0, 343, - 342, 343, 342, 0, 342, 343, 343, 345, 344, 342, - 344, 0, 0, 0, 0, 0, 0, 345, 344, 345, - 344, 345, 344, 0, 347, 346, 345, 344, 346, 0, - 0, 349, 0, 348, 347, 346, 347, 346, 347, 346, - 348, 347, 0, 347, 346, 0, 349, 0, 0, 0, - 348, 0, 348, 0, 348, 0, 349, 351, 349, 348, - 349, 0, 0, 0, 0, 349, 0, 351, 352, 351, - 0, 351, 0, 0, 353, 351, 351, 0, 352, 0, - 352, 0, 352, 0, 353, 355, 353, 352, 353, 0, - - 0, 0, 0, 353, 0, 355, 356, 355, 0, 355, - 0, 355, 357, 356, 355, 0, 356, 0, 356, 0, - 356, 0, 357, 358, 357, 356, 357, 0, 0, 0, - 0, 357, 0, 358, 0, 358, 360, 358, 0, 361, - 0, 358, 358, 360, 0, 0, 360, 362, 360, 361, - 360, 361, 362, 361, 0, 360, 0, 362, 361, 362, - 363, 362, 0, 0, 0, 0, 362, 0, 0, 0, - 363, 365, 363, 0, 363, 0, 0, 367, 365, 363, - 0, 365, 363, 365, 0, 365, 0, 367, 0, 367, - 365, 367, 368, 369, 0, 368, 367, 0, 0, 0, - - 0, 0, 368, 369, 368, 369, 368, 369, 371, 369, - 0, 368, 369, 0, 379, 0, 0, 0, 371, 0, - 371, 0, 371, 0, 379, 0, 379, 371, 379, 380, - 380, 381, 381, 379, 0, 0, 0, 0, 0, 380, - 382, 380, 381, 380, 381, 0, 381, 0, 380, 0, - 382, 381, 382, 371, 382, 384, 0, 0, 382, 382, - 0, 385, 0, 0, 0, 384, 0, 384, 0, 384, - 0, 385, 386, 385, 384, 385, 0, 0, 387, 385, - 385, 387, 386, 0, 386, 0, 386, 0, 387, 388, - 387, 386, 387, 0, 0, 389, 388, 387, 0, 388, - - 0, 388, 0, 388, 0, 389, 390, 389, 388, 389, - 0, 0, 0, 0, 389, 0, 390, 391, 390, 391, - 390, 0, 0, 392, 390, 390, 0, 391, 0, 391, - 0, 391, 0, 392, 0, 392, 391, 392, 0, 0, - 393, 392, 392, 393, 0, 0, 394, 0, 394, 0, - 393, 0, 393, 0, 393, 0, 394, 0, 394, 393, - 394, 395, 395, 396, 0, 394, 0, 0, 0, 0, - 0, 0, 395, 396, 395, 396, 395, 396, 397, 398, - 0, 395, 396, 0, 0, 397, 0, 0, 397, 398, - 397, 398, 397, 398, 399, 0, 398, 397, 398, 400, - - 400, 399, 0, 0, 399, 0, 399, 0, 399, 0, - 400, 404, 400, 399, 400, 404, 0, 405, 0, 400, - 0, 404, 0, 404, 405, 404, 0, 405, 0, 405, - 404, 405, 406, 407, 406, 0, 405, 0, 0, 0, - 0, 0, 406, 407, 406, 407, 406, 407, 0, 0, - 407, 406, 407, 408, 409, 409, 408, 0, 0, 0, - 0, 0, 0, 408, 409, 408, 409, 408, 409, 410, - 0, 0, 408, 409, 0, 0, 0, 411, 0, 410, - 411, 410, 0, 410, 0, 410, 0, 411, 410, 411, - 412, 411, 0, 0, 0, 0, 411, 0, 413, 0, - - 412, 415, 412, 0, 412, 413, 0, 412, 413, 412, - 413, 415, 413, 415, 0, 415, 418, 413, 416, 416, - 415, 0, 419, 0, 0, 0, 418, 0, 418, 416, - 418, 416, 419, 416, 419, 418, 419, 420, 416, 0, - 421, 419, 0, 421, 0, 0, 0, 420, 423, 420, - 421, 420, 421, 0, 421, 420, 420, 0, 423, 421, - 423, 0, 423, 424, 424, 0, 425, 423, 423, 426, - 0, 0, 0, 424, 0, 424, 425, 424, 425, 426, - 425, 426, 424, 426, 428, 425, 428, 430, 426, 0, - 431, 0, 0, 0, 428, 0, 428, 430, 428, 430, - - 431, 430, 431, 428, 431, 440, 430, 431, 441, 431, - 0, 0, 0, 0, 0, 440, 0, 440, 441, 440, - 441, 442, 441, 440, 440, 0, 441, 441, 442, 444, - 0, 442, 0, 442, 0, 442, 0, 0, 0, 444, - 442, 444, 445, 444, 0, 445, 0, 0, 444, 0, - 446, 0, 445, 447, 445, 0, 445, 0, 0, 0, - 446, 445, 446, 447, 446, 447, 448, 447, 0, 446, - 0, 0, 447, 448, 449, 0, 448, 450, 448, 0, - 448, 0, 0, 0, 449, 448, 449, 450, 449, 450, - 451, 450, 0, 449, 0, 0, 450, 451, 453, 0, - - 451, 452, 451, 452, 451, 0, 0, 0, 453, 451, - 453, 452, 453, 452, 454, 452, 0, 453, 0, 0, - 452, 0, 0, 0, 454, 455, 454, 0, 454, 0, - 0, 0, 454, 454, 0, 455, 456, 455, 0, 455, - 0, 0, 457, 455, 455, 0, 456, 0, 456, 0, - 456, 0, 457, 458, 457, 456, 457, 0, 0, 462, - 0, 457, 0, 458, 0, 458, 462, 458, 0, 462, - 463, 462, 458, 462, 0, 0, 0, 0, 462, 0, - 463, 464, 463, 0, 463, 0, 0, 465, 463, 463, - 0, 464, 0, 464, 0, 464, 0, 465, 466, 465, - - 464, 465, 0, 0, 467, 0, 465, 467, 466, 0, - 466, 0, 466, 0, 467, 466, 467, 466, 467, 468, - 469, 469, 0, 467, 0, 0, 0, 0, 0, 468, - 469, 468, 469, 468, 469, 470, 471, 0, 468, 469, - 0, 0, 0, 0, 0, 470, 471, 470, 471, 470, - 471, 473, 475, 0, 470, 471, 0, 0, 0, 0, - 0, 473, 475, 473, 475, 473, 475, 0, 0, 476, - 473, 475, 477, 476, 0, 478, 0, 0, 0, 476, - 470, 476, 477, 476, 477, 478, 477, 478, 476, 478, - 480, 477, 0, 480, 478, 0, 481, 0, 0, 481, - - 480, 0, 480, 0, 480, 0, 481, 0, 481, 480, - 481, 483, 0, 494, 483, 481, 485, 485, 0, 0, - 0, 483, 0, 483, 0, 483, 0, 485, 494, 485, - 483, 485, 0, 0, 495, 0, 485, 0, 494, 0, - 494, 495, 494, 0, 495, 0, 495, 494, 495, 496, - 496, 0, 0, 495, 0, 498, 0, 0, 0, 496, - 0, 496, 0, 496, 0, 498, 499, 498, 496, 498, - 0, 498, 0, 0, 498, 0, 499, 0, 499, 500, - 499, 0, 500, 0, 499, 499, 0, 501, 0, 500, - 502, 500, 0, 500, 0, 0, 0, 501, 500, 501, - - 502, 501, 502, 502, 502, 503, 501, 0, 504, 502, - 0, 504, 0, 0, 0, 503, 505, 503, 504, 503, - 504, 0, 504, 0, 503, 0, 505, 504, 505, 506, - 505, 0, 507, 0, 0, 505, 506, 0, 0, 506, - 0, 506, 507, 506, 507, 0, 507, 512, 506, 0, - 512, 507, 0, 513, 0, 0, 0, 512, 0, 512, - 0, 512, 0, 513, 514, 513, 512, 513, 0, 0, - 515, 0, 513, 0, 514, 0, 514, 0, 514, 0, - 515, 516, 515, 514, 515, 0, 0, 0, 0, 515, - 0, 516, 518, 516, 0, 516, 518, 0, 520, 516, - - 516, 0, 518, 0, 518, 524, 518, 0, 520, 522, - 520, 518, 520, 0, 0, 0, 522, 520, 0, 522, - 524, 522, 0, 522, 0, 0, 525, 0, 522, 0, - 524, 0, 524, 0, 524, 0, 525, 527, 525, 524, - 525, 0, 0, 529, 0, 525, 0, 527, 0, 527, - 0, 527, 0, 529, 537, 529, 527, 529, 0, 0, - 0, 0, 529, 0, 537, 538, 537, 0, 537, 0, - 0, 537, 0, 537, 0, 538, 539, 538, 538, 538, - 0, 0, 541, 0, 538, 0, 539, 0, 539, 0, - 539, 0, 541, 542, 541, 539, 541, 0, 0, 0, - - 0, 541, 0, 542, 543, 542, 543, 542, 0, 0, - 542, 0, 542, 0, 543, 544, 543, 0, 543, 0, - 544, 545, 0, 543, 0, 544, 0, 544, 0, 544, - 0, 545, 0, 545, 544, 545, 546, 547, 546, 0, - 545, 0, 0, 0, 0, 0, 546, 547, 546, 547, - 546, 547, 552, 553, 0, 546, 547, 0, 0, 0, - 553, 0, 552, 553, 552, 553, 552, 553, 552, 555, - 558, 552, 553, 0, 0, 0, 555, 0, 0, 555, - 558, 555, 558, 555, 558, 560, 0, 0, 555, 558, - 0, 562, 0, 0, 0, 560, 0, 560, 560, 560, - - 0, 562, 564, 562, 560, 562, 0, 0, 0, 562, - 562, 0, 564, 0, 564, 0, 564, 570, 570, 570, - 0, 564, 0, 0, 0, 0, 572, 573, 0, 570, - 570, 570, 570, 570, 570, 570, 572, 573, 572, 573, - 572, 573, 574, 575, 0, 572, 573, 0, 0, 572, - 0, 0, 574, 575, 574, 575, 574, 575, 576, 577, - 0, 574, 575, 0, 0, 0, 0, 0, 576, 577, - 576, 577, 576, 577, 578, 579, 577, 576, 577, 0, - 0, 0, 579, 0, 578, 579, 578, 579, 578, 579, - 583, 0, 0, 578, 579, 0, 0, 0, 584, 0, - - 583, 0, 583, 0, 583, 0, 586, 0, 584, 583, - 584, 584, 584, 0, 589, 0, 586, 584, 586, 0, - 586, 589, 591, 0, 589, 586, 589, 0, 589, 591, - 592, 0, 591, 589, 591, 0, 591, 592, 0, 0, - 592, 591, 592, 0, 592, 0, 0, 601, 602, 592, - 599, 599, 599, 599, 599, 599, 599, 601, 602, 601, - 602, 601, 602, 603, 0, 0, 601, 602, 0, 0, - 0, 604, 0, 603, 0, 603, 0, 603, 0, 0, - 0, 604, 603, 604, 608, 604, 0, 0, 599, 604, - 604, 0, 610, 0, 608, 613, 608, 0, 608, 610, - - 0, 0, 610, 608, 610, 613, 610, 613, 615, 613, - 615, 610, 0, 613, 613, 0, 0, 0, 615, 616, - 615, 0, 615, 616, 0, 0, 0, 615, 0, 616, - 0, 616, 0, 616, 623, 623, 623, 0, 616, 0, - 0, 0, 0, 624, 625, 0, 623, 623, 623, 623, - 623, 623, 623, 624, 625, 624, 625, 624, 625, 629, - 0, 624, 624, 625, 0, 631, 0, 625, 0, 629, - 0, 629, 0, 629, 0, 631, 634, 631, 629, 631, - 0, 0, 636, 631, 631, 0, 634, 0, 634, 0, - 634, 0, 636, 637, 636, 634, 636, 0, 0, 634, - - 637, 636, 0, 637, 0, 637, 644, 637, 643, 643, - 0, 0, 637, 0, 0, 0, 644, 648, 644, 643, - 644, 643, 0, 643, 0, 644, 0, 648, 643, 648, - 0, 648, 651, 0, 0, 653, 648, 0, 653, 0, - 648, 0, 651, 0, 651, 653, 651, 653, 0, 653, - 0, 651, 0, 0, 653, 658, 658, 658, 0, 0, - 0, 0, 0, 0, 659, 661, 0, 658, 658, 658, - 658, 658, 658, 658, 659, 661, 659, 661, 659, 661, - 664, 667, 0, 659, 661, 0, 659, 0, 0, 0, - 664, 667, 664, 667, 664, 667, 664, 671, 0, 664, - - 667, 0, 0, 0, 0, 0, 0, 671, 0, 671, - 0, 671, 0, 0, 0, 0, 671, 675, 675, 675, - 675, 675, 675, 675, 675, 675, 675, 675, 675, 676, - 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, - 676, 677, 677, 677, 677, 677, 677, 677, 677, 677, - 677, 677, 677, 678, 678, 678, 678, 678, 678, 678, - 678, 678, 678, 678, 678, 679, 679, 679, 679, 679, - 679, 679, 679, 679, 679, 679, 679, 680, 680, 680, - 0, 680, 680, 680, 680, 680, 680, 680, 680, 681, - 681, 0, 0, 681, 0, 681, 682, 0, 682, 683, - - 683, 0, 683, 683, 684, 684, 0, 684, 684, 684, - 0, 684, 684, 684, 684, 684, 685, 685, 685, 0, - 685, 685, 685, 685, 685, 685, 685, 685, 686, 686, - 686, 686, 686, 686, 686, 686, 0, 686, 686, 687, - 0, 0, 687, 0, 687, 687, 687, 687, 687, 687, - 688, 688, 0, 688, 688, 689, 689, 0, 689, 689, - 690, 690, 0, 690, 690, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674 + 0, 223, 0, 224, 225, 224, 223, 224, 0, 0, + 224, 0, 224, 0, 225, 226, 225, 0, 225, 0, + 0, 225, 0, 225, 0, 226, 228, 226, 0, 226, + + 0, 229, 229, 0, 226, 226, 228, 0, 228, 0, + 228, 0, 229, 230, 229, 228, 229, 0, 0, 231, + 0, 229, 0, 230, 0, 230, 0, 230, 0, 231, + 0, 231, 230, 231, 232, 233, 0, 232, 231, 0, + 0, 0, 233, 0, 232, 233, 232, 233, 232, 233, + 234, 0, 0, 232, 233, 0, 0, 0, 0, 0, + 234, 235, 234, 0, 234, 0, 0, 236, 234, 234, + 0, 235, 0, 235, 0, 235, 0, 236, 235, 236, + 235, 236, 237, 0, 236, 237, 236, 0, 238, 0, + 0, 238, 237, 0, 237, 0, 237, 0, 238, 240, + + 238, 237, 238, 0, 0, 0, 0, 238, 0, 240, + 241, 240, 240, 240, 240, 242, 0, 0, 240, 240, + 241, 242, 241, 0, 241, 0, 0, 0, 241, 241, + 0, 242, 246, 242, 0, 242, 0, 0, 246, 0, + 242, 0, 246, 0, 246, 0, 246, 248, 248, 248, + 0, 246, 0, 0, 0, 0, 258, 259, 0, 248, + 248, 248, 248, 248, 248, 248, 258, 259, 258, 259, + 258, 259, 260, 259, 0, 258, 259, 0, 261, 260, + 0, 0, 260, 0, 260, 0, 260, 0, 261, 261, + 261, 260, 261, 262, 263, 0, 0, 261, 0, 0, + + 0, 0, 0, 262, 263, 262, 263, 262, 263, 265, + 265, 264, 262, 263, 264, 0, 0, 0, 0, 0, + 265, 264, 265, 264, 265, 264, 266, 266, 0, 265, + 264, 0, 267, 0, 0, 0, 266, 0, 266, 263, + 266, 0, 267, 268, 267, 266, 267, 0, 0, 267, + 0, 267, 0, 268, 269, 268, 268, 268, 0, 0, + 0, 0, 268, 0, 269, 0, 269, 0, 269, 271, + 269, 270, 270, 269, 0, 272, 0, 0, 0, 271, + 0, 271, 270, 271, 270, 272, 270, 272, 271, 272, + 273, 270, 273, 274, 272, 274, 275, 0, 0, 275, + + 273, 0, 273, 274, 273, 274, 275, 274, 275, 273, + 275, 276, 274, 0, 0, 275, 0, 277, 0, 0, + 0, 276, 0, 276, 277, 276, 0, 277, 278, 277, + 276, 277, 0, 0, 0, 0, 277, 0, 278, 279, + 278, 0, 278, 0, 278, 0, 0, 278, 0, 279, + 0, 279, 0, 279, 280, 279, 0, 280, 279, 0, + 281, 0, 0, 0, 280, 0, 280, 0, 280, 0, + 281, 284, 281, 280, 281, 0, 0, 285, 0, 281, + 0, 284, 0, 284, 0, 284, 0, 285, 0, 285, + 284, 285, 286, 287, 0, 285, 285, 0, 0, 286, + + 0, 0, 286, 287, 286, 287, 286, 287, 288, 287, + 0, 286, 287, 289, 289, 0, 284, 0, 288, 0, + 288, 0, 288, 291, 289, 0, 289, 288, 289, 290, + 289, 0, 291, 289, 290, 0, 0, 0, 0, 290, + 292, 290, 291, 290, 291, 290, 291, 0, 290, 0, + 292, 291, 292, 293, 292, 0, 0, 292, 0, 292, + 0, 295, 295, 293, 296, 293, 0, 293, 0, 0, + 0, 295, 293, 295, 296, 295, 296, 297, 296, 0, + 295, 0, 296, 296, 0, 299, 300, 297, 299, 297, + 297, 297, 0, 0, 0, 299, 297, 299, 0, 299, + + 301, 300, 0, 301, 299, 0, 0, 0, 0, 0, + 301, 300, 301, 300, 301, 300, 302, 302, 304, 301, + 300, 0, 0, 0, 0, 0, 0, 302, 304, 302, + 304, 302, 304, 305, 0, 0, 302, 304, 0, 0, + 0, 0, 0, 305, 0, 305, 306, 305, 0, 306, + 0, 305, 305, 0, 307, 0, 306, 308, 306, 0, + 306, 0, 0, 0, 307, 306, 307, 308, 307, 308, + 0, 308, 310, 307, 309, 309, 308, 0, 311, 0, + 0, 313, 310, 0, 310, 309, 310, 309, 311, 309, + 311, 310, 311, 312, 309, 0, 313, 311, 0, 315, + + 0, 0, 0, 312, 0, 312, 313, 312, 313, 315, + 313, 315, 312, 315, 316, 313, 0, 310, 315, 0, + 317, 0, 0, 317, 316, 0, 316, 0, 316, 0, + 317, 318, 317, 316, 317, 0, 0, 319, 0, 317, + 0, 318, 0, 318, 0, 318, 0, 319, 0, 319, + 318, 319, 323, 0, 319, 0, 319, 0, 0, 0, + 0, 0, 323, 0, 323, 0, 323, 318, 0, 329, + 0, 323, 324, 324, 324, 324, 324, 324, 324, 329, + 0, 329, 0, 329, 330, 330, 0, 329, 329, 0, + 0, 0, 0, 331, 331, 330, 0, 330, 0, 330, + + 332, 332, 0, 331, 330, 331, 0, 331, 0, 333, + 324, 332, 331, 332, 0, 332, 335, 335, 0, 333, + 332, 333, 0, 333, 0, 336, 336, 335, 333, 335, + 0, 335, 0, 0, 0, 336, 335, 336, 337, 336, + 0, 337, 0, 0, 336, 0, 338, 0, 337, 339, + 337, 0, 337, 0, 0, 0, 338, 337, 338, 339, + 338, 339, 0, 339, 341, 338, 340, 340, 339, 0, + 342, 341, 0, 0, 341, 0, 341, 340, 341, 340, + 342, 340, 342, 341, 342, 343, 340, 0, 343, 342, + 0, 344, 343, 344, 0, 343, 0, 343, 0, 343, + + 0, 344, 0, 344, 343, 344, 345, 346, 0, 345, + 344, 0, 0, 345, 0, 0, 345, 346, 345, 346, + 345, 346, 347, 346, 0, 345, 346, 0, 0, 0, + 0, 0, 347, 0, 347, 0, 347, 348, 348, 0, + 347, 347, 0, 349, 0, 0, 0, 348, 0, 348, + 0, 348, 0, 349, 350, 349, 348, 349, 0, 0, + 351, 349, 349, 0, 350, 0, 350, 0, 350, 0, + 351, 350, 351, 350, 351, 352, 356, 0, 0, 351, + 0, 0, 0, 356, 0, 352, 356, 352, 356, 352, + 356, 0, 0, 358, 352, 356, 357, 357, 0, 357, + + 0, 0, 0, 358, 0, 358, 357, 358, 357, 0, + 357, 358, 358, 360, 359, 357, 359, 0, 0, 0, + 0, 0, 0, 360, 359, 360, 359, 360, 359, 361, + 0, 0, 360, 359, 0, 362, 0, 0, 362, 361, + 0, 361, 0, 361, 0, 362, 363, 362, 361, 362, + 364, 0, 0, 365, 362, 0, 363, 364, 363, 0, + 363, 0, 0, 363, 0, 363, 0, 364, 365, 364, + 0, 364, 0, 0, 367, 0, 364, 0, 365, 0, + 365, 0, 365, 0, 367, 368, 367, 365, 367, 0, + 0, 369, 367, 367, 0, 368, 0, 368, 0, 368, + + 0, 369, 371, 369, 368, 369, 0, 0, 0, 0, + 369, 0, 371, 372, 371, 0, 371, 0, 371, 373, + 372, 371, 0, 372, 0, 372, 0, 372, 0, 373, + 374, 373, 372, 373, 0, 0, 0, 0, 373, 0, + 374, 0, 374, 376, 374, 0, 377, 0, 374, 374, + 376, 0, 0, 376, 378, 376, 377, 376, 377, 378, + 377, 0, 376, 0, 378, 377, 378, 379, 378, 0, + 0, 0, 0, 378, 0, 0, 0, 379, 381, 379, + 0, 379, 0, 0, 383, 381, 379, 0, 381, 379, + 381, 0, 381, 0, 383, 0, 383, 381, 383, 384, + + 385, 0, 384, 383, 0, 0, 0, 0, 0, 384, + 385, 384, 385, 384, 385, 387, 385, 0, 384, 385, + 0, 396, 0, 0, 0, 387, 0, 387, 0, 387, + 0, 396, 0, 396, 387, 396, 397, 397, 398, 398, + 396, 0, 0, 0, 0, 0, 397, 399, 397, 398, + 397, 398, 0, 398, 0, 397, 0, 399, 398, 399, + 387, 399, 401, 0, 0, 399, 399, 0, 402, 0, + 0, 0, 401, 0, 401, 0, 401, 0, 402, 403, + 402, 401, 402, 0, 0, 404, 402, 402, 404, 403, + 0, 403, 0, 403, 0, 404, 405, 404, 403, 404, + + 0, 0, 406, 405, 404, 0, 405, 0, 405, 0, + 405, 0, 406, 407, 406, 405, 406, 0, 0, 0, + 0, 406, 0, 407, 408, 407, 408, 407, 0, 0, + 409, 407, 407, 0, 408, 0, 408, 0, 408, 0, + 409, 0, 409, 408, 409, 0, 0, 410, 409, 409, + 410, 0, 0, 411, 0, 411, 0, 410, 0, 410, + 0, 410, 0, 411, 412, 411, 410, 411, 0, 413, + 413, 0, 411, 0, 412, 0, 412, 0, 412, 0, + 413, 414, 413, 412, 413, 0, 0, 415, 0, 413, + 0, 414, 0, 414, 415, 414, 0, 415, 416, 415, + + 414, 415, 0, 0, 417, 0, 415, 0, 416, 0, + 416, 417, 416, 0, 417, 416, 417, 416, 417, 418, + 418, 422, 0, 417, 0, 422, 0, 0, 0, 0, + 418, 422, 418, 422, 418, 422, 423, 0, 0, 418, + 422, 0, 424, 423, 424, 0, 423, 0, 423, 0, + 423, 0, 424, 425, 424, 423, 424, 0, 0, 426, + 0, 424, 426, 425, 0, 425, 0, 425, 0, 426, + 425, 426, 425, 426, 427, 427, 0, 0, 426, 0, + 428, 428, 0, 0, 427, 0, 427, 0, 427, 0, + 428, 429, 428, 427, 428, 0, 0, 0, 0, 428, + + 0, 429, 0, 429, 0, 429, 430, 429, 0, 430, + 429, 0, 431, 0, 0, 0, 430, 0, 430, 0, + 430, 0, 431, 432, 431, 430, 431, 0, 0, 431, + 432, 431, 0, 432, 434, 432, 0, 432, 0, 435, + 435, 0, 432, 0, 434, 0, 434, 0, 434, 0, + 435, 437, 435, 434, 435, 0, 0, 438, 0, 435, + 0, 437, 0, 437, 0, 437, 0, 438, 439, 438, + 437, 438, 0, 0, 0, 0, 438, 0, 439, 0, + 439, 440, 439, 0, 440, 0, 439, 439, 0, 442, + 0, 440, 0, 440, 0, 440, 0, 0, 0, 442, + + 440, 442, 0, 442, 443, 443, 0, 444, 442, 442, + 445, 0, 0, 0, 443, 0, 443, 444, 443, 444, + 445, 444, 445, 443, 445, 447, 444, 447, 449, 445, + 0, 450, 0, 0, 0, 447, 0, 447, 449, 447, + 449, 450, 449, 450, 447, 450, 460, 449, 450, 461, + 450, 0, 0, 0, 0, 0, 460, 0, 460, 461, + 460, 461, 462, 461, 460, 460, 0, 461, 461, 462, + 464, 0, 462, 0, 462, 0, 462, 0, 0, 0, + 464, 462, 464, 465, 464, 0, 465, 0, 0, 464, + 0, 466, 0, 465, 467, 465, 0, 465, 0, 0, + + 0, 466, 465, 466, 467, 466, 467, 468, 467, 0, + 466, 0, 0, 467, 468, 469, 0, 468, 470, 468, + 0, 468, 0, 0, 0, 469, 468, 469, 470, 469, + 470, 471, 470, 0, 469, 0, 0, 470, 471, 473, + 0, 471, 472, 471, 472, 471, 0, 0, 0, 473, + 471, 473, 472, 473, 472, 474, 472, 0, 473, 0, + 474, 472, 0, 475, 0, 474, 476, 474, 0, 474, + 0, 0, 0, 475, 474, 475, 476, 475, 476, 477, + 476, 475, 475, 0, 476, 476, 0, 478, 0, 477, + 479, 477, 0, 477, 0, 0, 0, 478, 477, 478, + + 479, 478, 479, 483, 479, 0, 478, 0, 0, 479, + 483, 484, 0, 483, 485, 483, 0, 483, 0, 0, + 0, 484, 483, 484, 485, 484, 485, 486, 485, 484, + 484, 0, 0, 485, 0, 487, 0, 486, 0, 486, + 0, 486, 0, 0, 0, 487, 486, 487, 488, 487, + 0, 488, 487, 0, 487, 0, 489, 0, 488, 490, + 488, 0, 488, 0, 0, 0, 489, 488, 489, 490, + 489, 490, 0, 490, 489, 489, 491, 491, 490, 492, + 0, 0, 493, 0, 0, 0, 491, 0, 491, 492, + 491, 492, 493, 492, 493, 491, 493, 495, 492, 0, + + 497, 493, 0, 0, 0, 0, 0, 495, 0, 495, + 497, 495, 497, 498, 497, 0, 495, 498, 0, 497, + 0, 499, 0, 498, 492, 498, 0, 498, 0, 500, + 0, 499, 498, 499, 0, 499, 0, 0, 0, 500, + 499, 500, 502, 500, 0, 502, 0, 0, 500, 0, + 503, 0, 502, 503, 502, 0, 502, 0, 0, 517, + 503, 502, 503, 505, 503, 0, 505, 0, 0, 503, + 507, 507, 0, 505, 517, 505, 0, 505, 0, 0, + 0, 507, 505, 507, 517, 507, 517, 518, 517, 0, + 507, 0, 0, 517, 518, 519, 519, 518, 0, 518, + + 0, 518, 0, 521, 0, 519, 518, 519, 0, 519, + 0, 522, 0, 521, 519, 521, 0, 521, 0, 521, + 0, 522, 521, 522, 523, 522, 0, 523, 0, 522, + 522, 0, 524, 0, 523, 525, 523, 0, 523, 0, + 0, 527, 524, 523, 524, 525, 524, 525, 525, 525, + 526, 524, 0, 529, 525, 0, 527, 0, 0, 0, + 526, 0, 526, 529, 526, 529, 527, 529, 527, 526, + 527, 528, 529, 0, 528, 527, 0, 530, 0, 0, + 0, 528, 0, 528, 530, 528, 0, 530, 531, 530, + 528, 530, 0, 0, 536, 0, 530, 536, 531, 0, + + 531, 0, 531, 0, 536, 537, 536, 531, 536, 0, + 0, 538, 0, 536, 0, 537, 0, 537, 0, 537, + 0, 538, 539, 538, 537, 538, 0, 0, 540, 0, + 538, 0, 539, 0, 539, 540, 539, 0, 540, 541, + 540, 539, 540, 0, 0, 0, 0, 540, 0, 541, + 543, 541, 0, 541, 543, 0, 545, 541, 541, 0, + 543, 0, 543, 549, 543, 0, 545, 547, 545, 543, + 545, 0, 0, 0, 547, 545, 0, 547, 549, 547, + 0, 547, 0, 0, 550, 0, 547, 0, 549, 0, + 549, 0, 549, 0, 550, 552, 550, 549, 550, 0, + + 0, 554, 0, 550, 0, 552, 0, 552, 0, 552, + 0, 554, 563, 554, 552, 554, 0, 0, 0, 0, + 554, 0, 563, 564, 563, 0, 563, 0, 0, 563, + 0, 563, 0, 564, 565, 564, 564, 564, 0, 0, + 567, 0, 564, 0, 565, 0, 565, 0, 565, 0, + 567, 568, 567, 565, 567, 0, 0, 0, 0, 567, + 0, 568, 569, 568, 569, 568, 0, 0, 568, 0, + 568, 0, 569, 570, 569, 0, 569, 0, 570, 571, + 0, 569, 0, 570, 0, 570, 0, 570, 0, 571, + 0, 571, 570, 571, 572, 572, 0, 573, 571, 573, + + 574, 0, 0, 0, 572, 0, 572, 573, 572, 573, + 574, 573, 574, 572, 574, 579, 573, 0, 0, 574, + 0, 0, 0, 580, 0, 579, 0, 579, 0, 579, + 0, 579, 0, 580, 579, 580, 580, 580, 581, 583, + 0, 0, 580, 0, 0, 581, 583, 0, 581, 583, + 581, 583, 581, 583, 586, 0, 0, 581, 583, 0, + 0, 0, 588, 0, 586, 0, 586, 0, 586, 0, + 590, 0, 588, 586, 588, 588, 588, 0, 0, 0, + 590, 588, 590, 592, 590, 0, 0, 0, 590, 590, + 0, 0, 0, 592, 0, 592, 0, 592, 598, 598, + + 598, 0, 592, 0, 0, 0, 0, 601, 602, 0, + 598, 598, 598, 598, 598, 598, 598, 601, 602, 601, + 602, 601, 602, 603, 604, 0, 601, 602, 0, 0, + 601, 0, 0, 603, 604, 603, 604, 603, 604, 605, + 606, 0, 603, 604, 0, 0, 0, 0, 0, 605, + 606, 605, 606, 605, 606, 607, 0, 606, 605, 606, + 0, 608, 0, 0, 0, 607, 0, 607, 607, 607, + 0, 608, 609, 608, 607, 608, 0, 0, 613, 609, + 608, 0, 609, 0, 609, 0, 609, 0, 613, 614, + 613, 609, 613, 0, 0, 0, 0, 613, 0, 614, + + 615, 614, 0, 614, 0, 0, 617, 0, 614, 0, + 615, 0, 615, 615, 615, 0, 617, 620, 617, 615, + 617, 0, 0, 622, 620, 617, 0, 620, 0, 620, + 622, 620, 0, 622, 623, 622, 620, 622, 0, 0, + 0, 623, 622, 0, 623, 0, 623, 0, 623, 0, + 0, 633, 634, 623, 630, 630, 630, 630, 630, 630, + 630, 633, 634, 633, 634, 633, 634, 635, 636, 0, + 633, 634, 0, 0, 0, 0, 0, 635, 636, 635, + 636, 635, 636, 637, 0, 0, 635, 636, 0, 0, + 0, 0, 630, 637, 641, 637, 0, 637, 0, 0, + + 642, 637, 637, 0, 641, 0, 641, 0, 641, 0, + 642, 641, 642, 641, 642, 644, 0, 0, 647, 642, + 0, 649, 644, 649, 0, 644, 0, 644, 647, 644, + 647, 649, 647, 649, 644, 649, 647, 647, 650, 0, + 649, 0, 650, 0, 0, 0, 0, 0, 650, 0, + 650, 0, 650, 657, 657, 657, 0, 650, 0, 0, + 0, 0, 659, 0, 0, 657, 657, 657, 657, 657, + 657, 657, 659, 660, 659, 0, 659, 0, 0, 0, + 659, 659, 0, 660, 661, 660, 0, 660, 0, 0, + 665, 660, 660, 0, 661, 0, 661, 0, 661, 0, + + 665, 666, 665, 661, 665, 0, 0, 661, 0, 665, + 0, 666, 668, 666, 0, 666, 0, 0, 0, 0, + 666, 0, 668, 671, 668, 0, 668, 0, 0, 673, + 668, 668, 0, 671, 0, 671, 0, 671, 0, 673, + 674, 673, 671, 673, 0, 0, 671, 674, 673, 0, + 674, 0, 674, 682, 674, 681, 681, 0, 0, 674, + 0, 0, 0, 682, 683, 682, 681, 682, 681, 682, + 681, 0, 682, 0, 683, 681, 683, 687, 683, 0, + 690, 0, 0, 683, 0, 0, 0, 687, 0, 687, + 690, 687, 690, 0, 690, 692, 687, 0, 692, 690, + + 687, 0, 0, 0, 0, 692, 0, 692, 0, 692, + 697, 697, 697, 0, 692, 0, 0, 0, 0, 699, + 0, 0, 697, 697, 697, 697, 697, 697, 697, 699, + 700, 699, 0, 699, 0, 0, 702, 0, 699, 0, + 700, 699, 700, 700, 700, 0, 702, 705, 702, 700, + 702, 0, 0, 0, 0, 702, 0, 705, 709, 705, + 0, 705, 0, 705, 710, 0, 705, 0, 709, 0, + 709, 0, 709, 0, 710, 714, 710, 709, 710, 0, + 0, 717, 0, 710, 0, 714, 0, 714, 0, 714, + 0, 717, 0, 717, 714, 717, 0, 0, 0, 0, + + 717, 721, 721, 721, 721, 721, 721, 721, 721, 721, + 721, 721, 721, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 723, 723, 723, 723, 723, + 723, 723, 723, 723, 723, 723, 723, 724, 724, 724, + 724, 724, 724, 724, 724, 724, 724, 724, 724, 725, + 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, + 725, 726, 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 727, 727, 727, 0, 727, 727, 727, + 727, 727, 727, 727, 727, 728, 728, 0, 0, 728, + 0, 728, 729, 0, 729, 730, 730, 0, 730, 730, + + 731, 731, 0, 731, 731, 731, 0, 731, 731, 731, + 731, 731, 732, 732, 732, 0, 732, 732, 732, 732, + 732, 732, 732, 732, 733, 733, 733, 733, 733, 733, + 733, 733, 0, 733, 733, 734, 0, 0, 734, 734, + 734, 734, 734, 734, 734, 734, 735, 0, 0, 735, + 735, 735, 735, 735, 735, 735, 735, 736, 0, 0, + 736, 0, 736, 736, 736, 736, 736, 736, 737, 737, + 0, 737, 737, 738, 738, 0, 738, 738, 739, 739, + 0, 739, 739, 720, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 720, 720 } ; extern int yy_flex_debug; int yy_flex_debug = 1; -static yyconst short int yy_rule_linenum[123] = +static yyconst short int yy_rule_linenum[132] = { 0, - 101, 104, 106, 107, 108, 111, 113, 114, 115, 127, - 134, 141, 147, 156, 164, 172, 173, 175, 194, 200, - 207, 214, 221, 231, 265, 272, 273, 274, 275, 283, - 284, 285, 286, 287, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - - 366, 367, 372, 373, 378, 379, 380, 383, 389, 396, - 405, 416, 422, 424, 425, 427, 429, 431, 444, 450, - 456, 464 + 103, 106, 108, 109, 110, 113, 115, 116, 117, 129, + 136, 143, 149, 158, 166, 174, 175, 177, 196, 202, + 203, 204, 205, 206, 209, 215, 222, 229, 236, 246, + 280, 287, 288, 289, 290, 298, 299, 300, 301, 302, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 389, 390, 395, 396, 397, 400, 406, 413, 422, 433, + 439, 441, 442, 444, 446, 448, 461, 467, 473, 480, + 482 } ; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; @@ -1722,6 +1819,7 @@ char *yytext; int asn1p_lex(void); void asn1p_lexer_hack_push_opaque_state(void); /* Used in .y */ void asn1p_lexer_hack_enable_with_syntax(void); /* Used in .y */ +void asn1p_lexer_hack_push_encoding_control(void); /* Used in .y */ #define YY_FATAL_ERROR(msg) do { \ fprintf(stderr, \ @@ -1787,7 +1885,6 @@ static asn1_integer_t asn1p_atoi(char *ptr); /* errno is either 0 or ERANGE */ #define YY_NEVER_INTERACTIVE 1 #define YY_NO_INPUT 1 -#define YY_NO_UNPUT 1 #define YY_STACK_USED 1 /* Performance penalty is OK */ /* Controlled from within application */ @@ -1799,11 +1896,13 @@ static asn1_integer_t asn1p_atoi(char *ptr); /* errno is either 0 or ERANGE */ #define opaque 4 -#define with_syntax 5 +#define encoding_control 5 + +#define with_syntax 6 /* Newline */ /* White-space */ -#line 1807 "lex.yy.c" +#line 1906 "asn1p_l.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1954,10 +2053,10 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 99 "asn1p_l.l" +#line 101 "asn1p_l.l" -#line 1961 "lex.yy.c" +#line 2060 "asn1p_l.c" if ( yy_init ) { @@ -2005,14 +2104,14 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 675 ) + if ( yy_current_state >= 721 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *yy_state_ptr++ = yy_current_state; ++yy_cp; } - while ( yy_base[yy_current_state] != 4166 ); + while ( yy_base[yy_current_state] != 4484 ); yy_find_action: yy_current_state = *--yy_state_ptr; @@ -2049,13 +2148,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 123 ) + else if ( yy_act < 132 ) fprintf( stderr, "--accepting rule at line %d (\"%s\")\n", yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 123 ) + else if ( yy_act == 132 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 124 ) + else if ( yy_act == 133 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -2065,50 +2164,50 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 101 "asn1p_l.l" +#line 103 "asn1p_l.l" yy_push_state(dash_comment); YY_BREAK case 2: YY_RULE_SETUP -#line 104 "asn1p_l.l" +#line 106 "asn1p_l.l" yy_pop_state(); YY_BREAK case 3: YY_RULE_SETUP -#line 106 "asn1p_l.l" +#line 108 "asn1p_l.l" yy_pop_state(); /* End of comment */ YY_BREAK case 4: YY_RULE_SETUP -#line 107 "asn1p_l.l" +#line 109 "asn1p_l.l" /* Eat single dash */ YY_BREAK case 5: YY_RULE_SETUP -#line 108 "asn1p_l.l" +#line 110 "asn1p_l.l" /* Eat */ YY_BREAK case 6: YY_RULE_SETUP -#line 111 "asn1p_l.l" +#line 113 "asn1p_l.l" yy_push_state(cpp_comment); YY_BREAK case 7: YY_RULE_SETUP -#line 113 "asn1p_l.l" +#line 115 "asn1p_l.l" /* Eat */ YY_BREAK case 8: YY_RULE_SETUP -#line 114 "asn1p_l.l" +#line 116 "asn1p_l.l" yy_pop_state(); YY_BREAK case 9: YY_RULE_SETUP -#line 115 "asn1p_l.l" +#line 117 "asn1p_l.l" /* Eat */ YY_BREAK @@ -2121,7 +2220,7 @@ YY_RULE_SETUP case 10: YY_RULE_SETUP -#line 127 "asn1p_l.l" +#line 129 "asn1p_l.l" { yy_push_state(opaque); asn1p_lval.tv_opaque.buf = strdup(yytext); @@ -2131,7 +2230,7 @@ YY_RULE_SETUP YY_BREAK case 11: YY_RULE_SETUP -#line 134 "asn1p_l.l" +#line 136 "asn1p_l.l" { yy_pop_state(); asn1p_lval.tv_opaque.buf = strdup(yytext); @@ -2141,7 +2240,7 @@ YY_RULE_SETUP YY_BREAK case 12: YY_RULE_SETUP -#line 141 "asn1p_l.l" +#line 143 "asn1p_l.l" { asn1p_lval.tv_opaque.buf = strdup(yytext); asn1p_lval.tv_opaque.len = yyleng; @@ -2150,7 +2249,7 @@ YY_RULE_SETUP YY_BREAK case 13: YY_RULE_SETUP -#line 147 "asn1p_l.l" +#line 149 "asn1p_l.l" { fprintf(stderr, "ASN.1 Parser syncronization failure: " @@ -2162,7 +2261,7 @@ YY_RULE_SETUP YY_BREAK case 14: YY_RULE_SETUP -#line 156 "asn1p_l.l" +#line 158 "asn1p_l.l" { asn1p_lval.tv_opaque.buf = strdup(yytext); asn1p_lval.tv_opaque.len = yyleng; @@ -2172,7 +2271,7 @@ YY_RULE_SETUP case 15: YY_RULE_SETUP -#line 164 "asn1p_l.l" +#line 166 "asn1p_l.l" { asn1p_lval.tv_opaque.buf = 0; asn1p_lval.tv_opaque.len = 0; @@ -2183,17 +2282,17 @@ YY_RULE_SETUP case 16: YY_RULE_SETUP -#line 172 "asn1p_l.l" +#line 174 "asn1p_l.l" { QAPPEND(yytext, yyleng-1); } /* Add a single quote */ YY_BREAK case 17: YY_RULE_SETUP -#line 173 "asn1p_l.l" +#line 175 "asn1p_l.l" { QAPPEND(yytext, yyleng); } YY_BREAK case 18: YY_RULE_SETUP -#line 175 "asn1p_l.l" +#line 177 "asn1p_l.l" { yy_pop_state(); /* Do not append last quote: @@ -2211,27 +2310,64 @@ YY_RULE_SETUP } YY_BREAK + case 19: YY_RULE_SETUP -#line 194 "asn1p_l.l" +#line 196 "asn1p_l.l" +{ + const char *s = "ENCODING-CONTROL"; + const char *p = s + sizeof("ENCODING-CONTROL") - 2; + for(; p >= s; p--) unput(*p); + yy_pop_state(); + } + YY_BREAK +case 20: +YY_RULE_SETUP +#line 202 "asn1p_l.l" +unput('D'); unput('N'); unput('E'); yy_pop_state(); + YY_BREAK +case 21: +YY_RULE_SETUP +#line 203 "asn1p_l.l" + + YY_BREAK +case 22: +YY_RULE_SETUP +#line 204 "asn1p_l.l" + + YY_BREAK +case 23: +YY_RULE_SETUP +#line 205 "asn1p_l.l" +/* Eat everything else */ + YY_BREAK +case 24: +YY_RULE_SETUP +#line 206 "asn1p_l.l" + + YY_BREAK + +case 25: +YY_RULE_SETUP +#line 209 "asn1p_l.l" { /* " \t\r\n" weren't allowed in ASN.1:1990. */ asn1p_lval.tv_str = yytext; return TOK_hstring; } YY_BREAK -case 20: +case 26: YY_RULE_SETUP -#line 200 "asn1p_l.l" +#line 215 "asn1p_l.l" { /* " \t\r\n" weren't allowed in ASN.1:1990. */ asn1p_lval.tv_str = strdup(yytext); return TOK_bstring; } YY_BREAK -case 21: +case 27: YY_RULE_SETUP -#line 207 "asn1p_l.l" +#line 222 "asn1p_l.l" { asn1p_lval.a_int = asn1p_atoi(yytext); if(errno == ERANGE) @@ -2239,9 +2375,9 @@ YY_RULE_SETUP return TOK_number_negative; } YY_BREAK -case 22: +case 28: YY_RULE_SETUP -#line 214 "asn1p_l.l" +#line 229 "asn1p_l.l" { asn1p_lval.a_int = asn1p_atoi(yytext); if(errno == ERANGE) @@ -2249,9 +2385,9 @@ YY_RULE_SETUP return TOK_number; } YY_BREAK -case 23: +case 29: YY_RULE_SETUP -#line 221 "asn1p_l.l" +#line 236 "asn1p_l.l" { asn1p_lval.a_int = asn1p_atoi(yytext); if(errno == ERANGE) @@ -2262,9 +2398,9 @@ YY_RULE_SETUP /* * Tags */ -case 24: +case 30: YY_RULE_SETUP -#line 231 "asn1p_l.l" +#line 246 "asn1p_l.l" { char *p; memset(&asn1p_lval.a_tag, 0, sizeof(asn1p_lval.a_tag)); @@ -2299,9 +2435,9 @@ YY_RULE_SETUP return TOK_tag; } YY_BREAK -case 25: +case 31: YY_RULE_SETUP -#line 265 "asn1p_l.l" +#line 280 "asn1p_l.l" { fprintf(stderr, "Unsupported tag syntax at line %d: \"%s\"\n", @@ -2309,24 +2445,24 @@ YY_RULE_SETUP return -1; } YY_BREAK -case 26: +case 32: YY_RULE_SETUP -#line 272 "asn1p_l.l" +#line 287 "asn1p_l.l" return TOK_ABSENT; YY_BREAK -case 27: +case 33: YY_RULE_SETUP -#line 273 "asn1p_l.l" +#line 288 "asn1p_l.l" return TOK_ABSTRACT_SYNTAX; YY_BREAK -case 28: +case 34: YY_RULE_SETUP -#line 274 "asn1p_l.l" +#line 289 "asn1p_l.l" return TOK_ALL; YY_BREAK -case 29: +case 35: YY_RULE_SETUP -#line 275 "asn1p_l.l" +#line 290 "asn1p_l.l" { /* Appeared in 1990, removed in 1997 */ if(TYPE_LIFETIME(1990, 1997)) @@ -2336,88 +2472,88 @@ YY_RULE_SETUP REJECT; } YY_BREAK -case 30: +case 36: YY_RULE_SETUP -#line 283 "asn1p_l.l" +#line 298 "asn1p_l.l" return TOK_APPLICATION; YY_BREAK -case 31: +case 37: YY_RULE_SETUP -#line 284 "asn1p_l.l" +#line 299 "asn1p_l.l" return TOK_AUTOMATIC; YY_BREAK -case 32: +case 38: YY_RULE_SETUP -#line 285 "asn1p_l.l" +#line 300 "asn1p_l.l" return TOK_BEGIN; YY_BREAK -case 33: +case 39: YY_RULE_SETUP -#line 286 "asn1p_l.l" +#line 301 "asn1p_l.l" return TOK_BIT; YY_BREAK -case 34: +case 40: YY_RULE_SETUP -#line 287 "asn1p_l.l" +#line 302 "asn1p_l.l" { if(TYPE_LIFETIME(1994, 0)) return TOK_BMPString; REJECT; } YY_BREAK -case 35: +case 41: YY_RULE_SETUP -#line 292 "asn1p_l.l" +#line 307 "asn1p_l.l" return TOK_BOOLEAN; YY_BREAK -case 36: +case 42: YY_RULE_SETUP -#line 293 "asn1p_l.l" +#line 308 "asn1p_l.l" return TOK_BY; YY_BREAK -case 37: +case 43: YY_RULE_SETUP -#line 294 "asn1p_l.l" +#line 309 "asn1p_l.l" return TOK_CHARACTER; YY_BREAK -case 38: +case 44: YY_RULE_SETUP -#line 295 "asn1p_l.l" +#line 310 "asn1p_l.l" return TOK_CHOICE; YY_BREAK -case 39: +case 45: YY_RULE_SETUP -#line 296 "asn1p_l.l" +#line 311 "asn1p_l.l" return TOK_CLASS; YY_BREAK -case 40: +case 46: YY_RULE_SETUP -#line 297 "asn1p_l.l" +#line 312 "asn1p_l.l" return TOK_COMPONENT; YY_BREAK -case 41: +case 47: YY_RULE_SETUP -#line 298 "asn1p_l.l" +#line 313 "asn1p_l.l" return TOK_COMPONENTS; YY_BREAK -case 42: +case 48: YY_RULE_SETUP -#line 299 "asn1p_l.l" +#line 314 "asn1p_l.l" return TOK_CONSTRAINED; YY_BREAK -case 43: +case 49: YY_RULE_SETUP -#line 300 "asn1p_l.l" +#line 315 "asn1p_l.l" return TOK_CONTAINING; YY_BREAK -case 44: +case 50: YY_RULE_SETUP -#line 301 "asn1p_l.l" +#line 316 "asn1p_l.l" return TOK_DEFAULT; YY_BREAK -case 45: +case 51: YY_RULE_SETUP -#line 302 "asn1p_l.l" +#line 317 "asn1p_l.l" { /* Appeared in 1990, removed in 1997 */ if(TYPE_LIFETIME(1990, 1997)) @@ -2428,345 +2564,355 @@ YY_RULE_SETUP REJECT; } YY_BREAK -case 46: +case 52: YY_RULE_SETUP -#line 311 "asn1p_l.l" +#line 326 "asn1p_l.l" return TOK_DEFINITIONS; YY_BREAK -case 47: +case 53: YY_RULE_SETUP -#line 312 "asn1p_l.l" +#line 327 "asn1p_l.l" return TOK_EMBEDDED; YY_BREAK -case 48: +case 54: YY_RULE_SETUP -#line 313 "asn1p_l.l" +#line 328 "asn1p_l.l" return TOK_ENCODED; YY_BREAK -case 49: +case 55: YY_RULE_SETUP -#line 314 "asn1p_l.l" +#line 329 "asn1p_l.l" +return TOK_ENCODING_CONTROL; + YY_BREAK +case 56: +YY_RULE_SETUP +#line 330 "asn1p_l.l" return TOK_END; YY_BREAK -case 50: +case 57: YY_RULE_SETUP -#line 315 "asn1p_l.l" +#line 331 "asn1p_l.l" return TOK_ENUMERATED; YY_BREAK -case 51: +case 58: YY_RULE_SETUP -#line 316 "asn1p_l.l" +#line 332 "asn1p_l.l" return TOK_EXCEPT; YY_BREAK -case 52: +case 59: YY_RULE_SETUP -#line 317 "asn1p_l.l" +#line 333 "asn1p_l.l" return TOK_EXPLICIT; YY_BREAK -case 53: +case 60: YY_RULE_SETUP -#line 318 "asn1p_l.l" +#line 334 "asn1p_l.l" return TOK_EXPORTS; YY_BREAK -case 54: +case 61: YY_RULE_SETUP -#line 319 "asn1p_l.l" +#line 335 "asn1p_l.l" return TOK_EXTENSIBILITY; YY_BREAK -case 55: +case 62: YY_RULE_SETUP -#line 320 "asn1p_l.l" +#line 336 "asn1p_l.l" return TOK_EXTERNAL; YY_BREAK -case 56: +case 63: YY_RULE_SETUP -#line 321 "asn1p_l.l" +#line 337 "asn1p_l.l" return TOK_FALSE; YY_BREAK -case 57: +case 64: YY_RULE_SETUP -#line 322 "asn1p_l.l" +#line 338 "asn1p_l.l" return TOK_FROM; YY_BREAK -case 58: +case 65: YY_RULE_SETUP -#line 323 "asn1p_l.l" +#line 339 "asn1p_l.l" return TOK_GeneralizedTime; YY_BREAK -case 59: +case 66: YY_RULE_SETUP -#line 324 "asn1p_l.l" +#line 340 "asn1p_l.l" return TOK_GeneralString; YY_BREAK -case 60: +case 67: YY_RULE_SETUP -#line 325 "asn1p_l.l" +#line 341 "asn1p_l.l" return TOK_GraphicString; YY_BREAK -case 61: +case 68: YY_RULE_SETUP -#line 326 "asn1p_l.l" +#line 342 "asn1p_l.l" return TOK_IA5String; YY_BREAK -case 62: +case 69: YY_RULE_SETUP -#line 327 "asn1p_l.l" +#line 343 "asn1p_l.l" return TOK_IDENTIFIER; YY_BREAK -case 63: +case 70: YY_RULE_SETUP -#line 328 "asn1p_l.l" +#line 344 "asn1p_l.l" return TOK_IMPLICIT; YY_BREAK -case 64: +case 71: YY_RULE_SETUP -#line 329 "asn1p_l.l" +#line 345 "asn1p_l.l" return TOK_IMPLIED; YY_BREAK -case 65: +case 72: YY_RULE_SETUP -#line 330 "asn1p_l.l" +#line 346 "asn1p_l.l" return TOK_IMPORTS; YY_BREAK -case 66: +case 73: YY_RULE_SETUP -#line 331 "asn1p_l.l" +#line 347 "asn1p_l.l" return TOK_INCLUDES; YY_BREAK -case 67: +case 74: YY_RULE_SETUP -#line 332 "asn1p_l.l" +#line 348 "asn1p_l.l" return TOK_INSTANCE; YY_BREAK -case 68: +case 75: YY_RULE_SETUP -#line 333 "asn1p_l.l" +#line 349 "asn1p_l.l" +return TOK_INSTRUCTIONS; + YY_BREAK +case 76: +YY_RULE_SETUP +#line 350 "asn1p_l.l" return TOK_INTEGER; YY_BREAK -case 69: +case 77: YY_RULE_SETUP -#line 334 "asn1p_l.l" +#line 351 "asn1p_l.l" return TOK_INTERSECTION; YY_BREAK -case 70: +case 78: YY_RULE_SETUP -#line 335 "asn1p_l.l" +#line 352 "asn1p_l.l" return TOK_ISO646String; YY_BREAK -case 71: +case 79: YY_RULE_SETUP -#line 336 "asn1p_l.l" +#line 353 "asn1p_l.l" return TOK_MAX; YY_BREAK -case 72: +case 80: YY_RULE_SETUP -#line 337 "asn1p_l.l" +#line 354 "asn1p_l.l" return TOK_MIN; YY_BREAK -case 73: +case 81: YY_RULE_SETUP -#line 338 "asn1p_l.l" +#line 355 "asn1p_l.l" return TOK_MINUS_INFINITY; YY_BREAK -case 74: +case 82: YY_RULE_SETUP -#line 339 "asn1p_l.l" +#line 356 "asn1p_l.l" return TOK_NULL; YY_BREAK -case 75: +case 83: YY_RULE_SETUP -#line 340 "asn1p_l.l" +#line 357 "asn1p_l.l" return TOK_NumericString; YY_BREAK -case 76: +case 84: YY_RULE_SETUP -#line 341 "asn1p_l.l" +#line 358 "asn1p_l.l" return TOK_OBJECT; YY_BREAK -case 77: +case 85: YY_RULE_SETUP -#line 342 "asn1p_l.l" +#line 359 "asn1p_l.l" return TOK_ObjectDescriptor; YY_BREAK -case 78: +case 86: YY_RULE_SETUP -#line 343 "asn1p_l.l" +#line 360 "asn1p_l.l" return TOK_OCTET; YY_BREAK -case 79: +case 87: YY_RULE_SETUP -#line 344 "asn1p_l.l" +#line 361 "asn1p_l.l" return TOK_OF; YY_BREAK -case 80: +case 88: YY_RULE_SETUP -#line 345 "asn1p_l.l" +#line 362 "asn1p_l.l" return TOK_OPTIONAL; YY_BREAK -case 81: +case 89: YY_RULE_SETUP -#line 346 "asn1p_l.l" +#line 363 "asn1p_l.l" return TOK_PATTERN; YY_BREAK -case 82: +case 90: YY_RULE_SETUP -#line 347 "asn1p_l.l" +#line 364 "asn1p_l.l" return TOK_PDV; YY_BREAK -case 83: +case 91: YY_RULE_SETUP -#line 348 "asn1p_l.l" +#line 365 "asn1p_l.l" return TOK_PLUS_INFINITY; YY_BREAK -case 84: +case 92: YY_RULE_SETUP -#line 349 "asn1p_l.l" +#line 366 "asn1p_l.l" return TOK_PRESENT; YY_BREAK -case 85: +case 93: YY_RULE_SETUP -#line 350 "asn1p_l.l" +#line 367 "asn1p_l.l" return TOK_PrintableString; YY_BREAK -case 86: +case 94: YY_RULE_SETUP -#line 351 "asn1p_l.l" +#line 368 "asn1p_l.l" return TOK_PRIVATE; YY_BREAK -case 87: +case 95: YY_RULE_SETUP -#line 352 "asn1p_l.l" +#line 369 "asn1p_l.l" return TOK_REAL; YY_BREAK -case 88: +case 96: YY_RULE_SETUP -#line 353 "asn1p_l.l" +#line 370 "asn1p_l.l" return TOK_RELATIVE_OID; YY_BREAK -case 89: +case 97: YY_RULE_SETUP -#line 354 "asn1p_l.l" +#line 371 "asn1p_l.l" return TOK_SEQUENCE; YY_BREAK -case 90: +case 98: YY_RULE_SETUP -#line 355 "asn1p_l.l" +#line 372 "asn1p_l.l" return TOK_SET; YY_BREAK -case 91: +case 99: YY_RULE_SETUP -#line 356 "asn1p_l.l" +#line 373 "asn1p_l.l" return TOK_SIZE; YY_BREAK -case 92: +case 100: YY_RULE_SETUP -#line 357 "asn1p_l.l" +#line 374 "asn1p_l.l" return TOK_STRING; YY_BREAK -case 93: +case 101: YY_RULE_SETUP -#line 358 "asn1p_l.l" +#line 375 "asn1p_l.l" return TOK_SYNTAX; YY_BREAK -case 94: +case 102: YY_RULE_SETUP -#line 359 "asn1p_l.l" +#line 376 "asn1p_l.l" return TOK_T61String; YY_BREAK -case 95: +case 103: YY_RULE_SETUP -#line 360 "asn1p_l.l" +#line 377 "asn1p_l.l" return TOK_TAGS; YY_BREAK -case 96: +case 104: YY_RULE_SETUP -#line 361 "asn1p_l.l" +#line 378 "asn1p_l.l" return TOK_TeletexString; YY_BREAK -case 97: +case 105: YY_RULE_SETUP -#line 362 "asn1p_l.l" +#line 379 "asn1p_l.l" return TOK_TRUE; YY_BREAK -case 98: +case 106: YY_RULE_SETUP -#line 363 "asn1p_l.l" +#line 380 "asn1p_l.l" return TOK_TYPE_IDENTIFIER; YY_BREAK -case 99: +case 107: YY_RULE_SETUP -#line 364 "asn1p_l.l" +#line 381 "asn1p_l.l" return TOK_UNION; YY_BREAK -case 100: +case 108: YY_RULE_SETUP -#line 365 "asn1p_l.l" +#line 382 "asn1p_l.l" return TOK_UNIQUE; YY_BREAK -case 101: +case 109: YY_RULE_SETUP -#line 366 "asn1p_l.l" +#line 383 "asn1p_l.l" return TOK_UNIVERSAL; YY_BREAK -case 102: +case 110: YY_RULE_SETUP -#line 367 "asn1p_l.l" +#line 384 "asn1p_l.l" { if(TYPE_LIFETIME(1994, 0)) return TOK_UniversalString; REJECT; } YY_BREAK -case 103: +case 111: YY_RULE_SETUP -#line 372 "asn1p_l.l" +#line 389 "asn1p_l.l" return TOK_UTCTime; YY_BREAK -case 104: +case 112: YY_RULE_SETUP -#line 373 "asn1p_l.l" +#line 390 "asn1p_l.l" { if(TYPE_LIFETIME(1994, 0)) return TOK_UTF8String; REJECT; } YY_BREAK -case 105: +case 113: YY_RULE_SETUP -#line 378 "asn1p_l.l" +#line 395 "asn1p_l.l" return TOK_VideotexString; YY_BREAK -case 106: +case 114: YY_RULE_SETUP -#line 379 "asn1p_l.l" +#line 396 "asn1p_l.l" return TOK_VisibleString; YY_BREAK -case 107: +case 115: YY_RULE_SETUP -#line 380 "asn1p_l.l" +#line 397 "asn1p_l.l" return TOK_WITH; YY_BREAK -case 108: +case 116: YY_RULE_SETUP -#line 383 "asn1p_l.l" +#line 400 "asn1p_l.l" { CHECK_DASHES; asn1p_lval.tv_str = strdup(yytext); return TOK_typefieldreference; } YY_BREAK -case 109: +case 117: YY_RULE_SETUP -#line 389 "asn1p_l.l" +#line 406 "asn1p_l.l" { CHECK_DASHES; asn1p_lval.tv_str = strdup(yytext); return TOK_valuefieldreference; } YY_BREAK -case 110: +case 118: YY_RULE_SETUP -#line 396 "asn1p_l.l" +#line 413 "asn1p_l.l" { CHECK_DASHES; asn1p_lval.tv_str = strdup(yytext); @@ -2776,13 +2922,13 @@ YY_RULE_SETUP /* * objectclassreference */ -case 111: +case 119: YY_RULE_SETUP -#line 405 "asn1p_l.l" +#line 422 "asn1p_l.l" { CHECK_DASHES; asn1p_lval.tv_str = strdup(yytext); - return TOK_objectclassreference; + return TOK_capitalreference; } YY_BREAK /* @@ -2790,43 +2936,43 @@ YY_RULE_SETUP * NOTE: TOK_objectclassreference must be combined * with this token to produce true typereference. */ -case 112: +case 120: YY_RULE_SETUP -#line 416 "asn1p_l.l" +#line 433 "asn1p_l.l" { CHECK_DASHES; asn1p_lval.tv_str = strdup(yytext); return TOK_typereference; } YY_BREAK -case 113: +case 121: YY_RULE_SETUP -#line 422 "asn1p_l.l" +#line 439 "asn1p_l.l" return TOK_PPEQ; YY_BREAK -case 114: +case 122: YY_RULE_SETUP -#line 424 "asn1p_l.l" +#line 441 "asn1p_l.l" return TOK_ThreeDots; YY_BREAK -case 115: +case 123: YY_RULE_SETUP -#line 425 "asn1p_l.l" +#line 442 "asn1p_l.l" return TOK_TwoDots; YY_BREAK -case 116: +case 124: YY_RULE_SETUP -#line 427 "asn1p_l.l" +#line 444 "asn1p_l.l" return yytext[0]; YY_BREAK -case 117: +case 125: YY_RULE_SETUP -#line 429 "asn1p_l.l" +#line 446 "asn1p_l.l" /* Ignore whitespace */ YY_BREAK -case 118: +case 126: YY_RULE_SETUP -#line 431 "asn1p_l.l" +#line 448 "asn1p_l.l" { if(TYPE_LIFETIME(1994, 0)) fprintf(stderr, "ERROR: "); @@ -2839,36 +2985,41 @@ YY_RULE_SETUP } YY_BREAK -case 119: +case 127: YY_RULE_SETUP -#line 444 "asn1p_l.l" +#line 461 "asn1p_l.l" { asn1p_lval.tv_opaque.buf = strdup(yytext); asn1p_lval.tv_opaque.len = yyleng; return TOK_opaque; } YY_BREAK -case 120: +case 128: YY_RULE_SETUP -#line 450 "asn1p_l.l" +#line 467 "asn1p_l.l" { asn1p_lval.tv_opaque.buf = strdup(yytext); asn1p_lval.tv_opaque.len = yyleng; return TOK_opaque; } YY_BREAK -case 121: +case 129: YY_RULE_SETUP -#line 456 "asn1p_l.l" +#line 473 "asn1p_l.l" { yy_pop_state(); return '}'; } YY_BREAK -case 122: +case 130: YY_RULE_SETUP -#line 464 "asn1p_l.l" +#line 480 "asn1p_l.l" +return yytext[0]; /* Union, Intersection */ + YY_BREAK +case 131: +YY_RULE_SETUP +#line 482 "asn1p_l.l" { fprintf(stderr, "Unexpected token at line %d: \"%s\"\n", @@ -2886,20 +3037,21 @@ case YY_STATE_EOF(dash_comment): case YY_STATE_EOF(cpp_comment): case YY_STATE_EOF(quoted): case YY_STATE_EOF(opaque): +case YY_STATE_EOF(encoding_control): case YY_STATE_EOF(with_syntax): -#line 476 "asn1p_l.l" +#line 494 "asn1p_l.l" { while(YYSTATE != INITIAL) yy_pop_state(); yyterminate(); } YY_BREAK -case 123: +case 132: YY_RULE_SETUP -#line 483 "asn1p_l.l" +#line 501 "asn1p_l.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2903 "lex.yy.c" +#line 3055 "asn1p_l.c" case YY_END_OF_BUFFER: { @@ -3186,7 +3338,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 675 ) + if ( yy_current_state >= 721 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3216,11 +3368,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 675 ) + if ( yy_current_state >= 721 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 674); + yy_is_jam = (yy_current_state == 720); if ( ! yy_is_jam ) *yy_state_ptr++ = yy_current_state; @@ -3781,23 +3933,22 @@ int main() return 0; } #endif -#line 483 "asn1p_l.l" +#line 501 "asn1p_l.l" /* * Very dirty but wonderful hack allowing to rule states from within .y file. */ -void -asn1p_lexer_hack_push_opaque_state() { - yy_push_state(opaque); -} +void asn1p_lexer_hack_push_opaque_state() { yy_push_state(opaque); } /* * Another hack which disables recognizing some tokens when inside WITH SYNTAX. */ -void -asn1p_lexer_hack_enable_with_syntax() { - yy_push_state(with_syntax); +void asn1p_lexer_hack_enable_with_syntax() { yy_push_state(with_syntax); } + +/* Yet another */ +void asn1p_lexer_hack_push_encoding_control() { + yy_push_state(encoding_control); } /* -- cgit v1.2.3