package CSharpProcessor;
import java.io.IOException;
import CSharpProcessor.Lexer.Lexems;
import CSharpProcessor.Lexer.LapgSymbol;
//#define DEBUG_syntax
using System;
using System.Collections;
using System.IO;
public class pparser implements Lexer.ErrorReporter {
public enum Kind {
Identifier, TypeDot, Dot, DimmedExpr, Other
}
public class Node {
public Kind kind;
public Node left;
public Node right;
public Node expr;
public Node() {
this.kind = Kind.Other;
}
public Node( Kind kind, Node left, Node right, Node expr ) {
this.kind = kind;
this.left = left;
this.right = right;
this.expr = expr;
}
}
// 14.6.6 Cast expressions =======
// To resolve cast-expression ambiguities, the following rule exists: A sequence of one or
// more tokens (�9.4) enclosed in parentheses is considered the start of a cast-expression only
// if at least one of the following are true:
// � The sequence of tokens is correct grammar for a type, but not for an expression.
// � The sequence of tokens is correct grammar for a type, and the token immediately following
// the closing parentheses is the token �~�, the token �!�, the token �(�, an identifier (�9.4.1),
// a literal (�9.4.4), or any keyword (�9.4.3) except as and is.
private static bool CastExpr( Node expr, lapg_symbol next ) {
// check if expression can be type
if( !CanBeType( expr ) )
return false;
// if expression is only type (contains dim_specifier)
if( ContainsDimSpec( expr ) )
return true;
// Type or Expr
switch( (Tokens)next.lexem ) {
case Tokens.TILDE:
case Tokens.EXCL:
case Tokens.LROUNDBRACKET:
case Tokens.identifier:
case Tokens.Licon:
case Tokens.Lfcon:
case Tokens.Lscon:
case Tokens.Lccon:
case Tokens.Lfalse:
case Tokens.Ltrue:
case Tokens.Lnull:
return true;
case Tokens.Lis:
case Tokens.Las:
return false;
}
// keyword
if( next.lexem >= (int)Tokens.Labstract && next.lexem <= (int)Tokens.Lwhile )
return true;
return false;
}
private static bool CanBeType( Node expr ) {
switch( expr.kind ) {
case Kind.Identifier: case Kind.TypeDot:
return true;
case Kind.Dot:
return CanBeType( expr.left );
case Kind.DimmedExpr:
return CanBeType( expr.expr );
}
return false;
}
private static bool ContainsDimSpec( Node expr ) {
return expr.kind == Kind.DimmedExpr;
}
byte[] buff = new byte[1025];
int l, end;
BinaryReader r;
void fillb() {
l = 0;
end = r.Read( buff, 0, 1024 );
buff[end] = 0;
}
void error( string s ) {
System.Console.WriteLine(s);
}
public static void Main(string[] args) {
parser p = new parser();
if( args.Length > 0 )
p.r = new BinaryReader( new FileStream(args[0],FileMode.Open) );
else
p.r = new BinaryReader( System.Console.OpenStandardInput() );
p.fillb();
p.parse();
}
private static final int[] lapg_action = new int[] {
-3, -1, -51, -97, 243, -147, -1, -1, -1, -1, 4, -167, -215, 249, 247, 250,
251, 252, 253, 254, 255, -259, 414, 244, -1, 246, -1, 31, -1, -299, 421, 422,
-311, -1, -1, 423, -321, -329, 248, 415, 11, 17, 9, 6, 16, 10, 8, 7,
14, 12, 13, 19, 15, 18, 20, -421, -1, 32, -1, -461, -1, 419, -1, -509,
427, 425, 21, -1, -1, -1, -1, -1, 245, -589, -1, 418, 424, 33, 24, 25,
27, 26, -1, 50, 57, 64, -1, 51, 53, 29, 52, 60, 62, -1, 30, 48,
56, 58, -1, 49, 76, 28, -1, 61, 63, -1, 59, 55, -1, -1, -1, -1,
-1, -1, -1, 73, 74, -1, -635, 54, 432, -723, 72, -815, 93, -909, 108, -987,
-1043, -1093, -1139, -1181, -1211, -1237, -1261, -1283, -1303, 158, 159, -1, -1321, -1327, -1333, -1389,
-1, -1443, 37, -1497, -1, -1551, -1557, -1563, -1, 417, -1, -1, -1, -1, -1, -1569,
-1, -1, -1, -1, -1577, -1, -1, 102, 103, 104, 105, 106, 107, -1, -1587, -1,
83, 84, -1, -1671, 92, -1, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
155, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 431, -1, -1, -1, 260, 65, -1, -1753, -1759,
367, -1, -1, 401, -1, -1, 380, -1, -1, 361, -1815, 416, 156, -1, 77, -1,
-1865, -1949, 99, -2031, -1, -1, -1, -1, 46, 47, 109, 87, -1, -1, -2113, 66,
68, -1, 86, 85, 372, -1, -1, -2119, 110, 144, 113, 114, 115, 112, -2125, -2181,
-2237, -2287, -2337, -2381, -2425, -2471, -2517, -2563, -2609, -2651, -2693, -2723, -2749, -2773, -1, -2795,
433, -2815, -2823, -2829, -2917, -3011, 368, 404, -3057, -3065, -3159, -3165, -3209, -3303, -3309, -3397,
23, 242, 78, -1, 80, -1, 289, 290, 378, -1, -3491, -1, 82, 79, 81, 111,
70, 69, -1, 90, 91, 371, 373, -1, -1, 280, -3497, -1, -3581, 269, 271, 272,
273, 274, 275, 276, 277, 278, 279, 262, -3669, -1, 291, -3711, 298, 299, -1, -1,
-3719, 409, 403, -3725, -1, -3765, 387, 382, -1, 363, 157, 100, 376, -1, -3809, 67,
143, -3903, 282, -3911, -3995, -1, -1, 358, -1, 268, 270, 305, 306, 304, -1, 301,
-1, -1, -4077, -4121, 407, -4129, 396, -1, 389, 386, 388, 365, 377, 379, -4137, -4231,
283, -1, 351, 350, -1, -1, -1, 321, 322, -1, -1, -1, -1, -1, -4323, 413,
297, 300, -1, 408, 410, -1, -1, 98, 96, -1, -4329, -4375, -1, 318, -1, -4389,
-1, 285, -1, -1, -1, -4399, 314, 313, 320, -1, -1, -1, 201, -1, 303, 307,
160, 412, -1, 395, -1, -1, -1, -1, -1, -1, 334, 333, 327, 328, 335, 336,
337, 338, 339, 340, 329, 330, 346, 345, 331, 332, 341, 342, 343, 344, 348, 347,
326, -1, -1, -1, 284, -4515, -4521, -4567, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -4611, -1, -4691, -1, -1, -1, -1, -1, 167, -1, -1, -4771, -4811,
-1, -4819, -4855, -1, 206, 197, -1, -1, 164, 165, -1, 188, -1, -4899, -1, -1,
-1, 281, -1, -1, -5015, -5021, -5067, -1, 315, -5111, -5117, -5125, 319, 288, 286, -1,
-1, -5133, -1, -1, -1, -1, 181, 192, -1, 182, -5141, -1, -5175, -1, -1, -1,
-1, -1, -1, 175, -1, -1, -1, -1, 193, 191, -1, -1, -5255, -5285, -1, -5315,
-5321, -5329, -5413, -5457, 162, 163, 166, 196, 198, -1, 203, 202, -1, 393, -1, -1,
-5501, -1, -1, -1, -1, -1, 352, -1, 308, 309, 311, -1, -1, 323, 324, -1,
-5509, -1, 222, 224, -1, 173, -5515, -1, -1, 185, 183, -1, -1, 186, -1, 187,
-1, -1, 226, -5521, 228, -5645, 232, 233, -5771, 241, 240, -1, -1, 161, -1, -1,
360, -1, 392, 397, 399, -1, -1, 316, -1, -1, 354, 312, 293, -5851, -1, -1,
-5857, -1, -1, 184, -1, -1, -1, -1, 238, 239, 229, 231, 234, -1, -1, -5937,
349, 400, 391, -5981, -5987, -6071, -1, 325, -1, -1, 225, -1, -6155, 189, -6277, 170,
-6285, 190, 171, -1, -1, -1, 317, -1, -6291, -1, -1, -1, -1, -1, -6371, 214,
-1, 218, 235, -1, 394, 355, 356, 172, -1, -6379, -1, 169, -1, 221, 213, 215,
-6385, 216, 219, -1, -1, 180, 220, 237, 179, -1, -2,
};
private static final short[] lapg_lalr = new short[] {
79, -1, 0, 1, 7, 1, 17, 1, 22, 1, 26, 1, 29, 1, 41, 1,
42, 1, 46, 1, 47, 1, 52, 1, 54, 1, 55, 1, 56, 1, 57, 1,
61, 1, 65, 1, 67, 1, 77, 1, 80, 1, 82, 1, 86, 1, -1, -2,
46, -1, 86, -1, 0, 3, 7, 257, 17, 257, 22, 257, 26, 257, 29, 257,
41, 257, 42, 257, 47, 257, 52, 257, 54, 257, 55, 257, 56, 257, 57, 257,
61, 257, 65, 257, 67, 257, 77, 257, 80, 257, 82, 257, -1, -2, 79, -1,
0, 0, 7, 0, 17, 0, 22, 0, 26, 0, 29, 0, 41, 0, 42, 0,
46, 0, 47, 0, 52, 0, 54, 0, 55, 0, 56, 0, 57, 0, 61, 0,
65, 0, 67, 0, 77, 0, 80, 0, 82, 0, 85, 0, 86, 0, -1, -2,
1, 31, 50, 31, 69, 31, 86, 31, 90, 31, 93, 31, 96, 31, 88, 33,
104, 33, -1, -2, 46, -1, 86, -1, 0, 2, 85, 2, 7, 257, 17, 257,
22, 257, 26, 257, 29, 257, 41, 257, 42, 257, 47, 257, 52, 257, 54, 257,
55, 257, 56, 257, 57, 257, 61, 257, 65, 257, 67, 257, 77, 257, 80, 257,
82, 257, -1, -2, 86, -1, 0, 5, 7, 256, 17, 256, 22, 256, 26, 256,
29, 256, 41, 256, 42, 256, 47, 256, 52, 256, 54, 256, 55, 256, 56, 256,
57, 256, 61, 256, 65, 256, 67, 256, 77, 256, 80, 256, 82, 256, -1, -2,
7, -1, 29, -1, 42, -1, 47, -1, 52, -1, 54, -1, 55, -1, 56, -1,
57, -1, 61, -1, 65, -1, 77, -1, 80, -1, 82, -1, 17, 259, 22, 259,
26, 259, 41, 259, 67, 259, -1, -2, 87, 31, 88, 31, 90, 31, 91, 31,
92, 420, -1, -2, 90, -1, 87, 428, 88, 428, 91, 428, -1, -2, 88, -1,
87, 426, 91, 426, -1, -2, 86, -1, 1, 256, 7, 256, 10, 256, 12, 256,
15, 256, 17, 256, 18, 256, 20, 256, 22, 256, 24, 256, 26, 256, 27, 256,
28, 256, 29, 256, 33, 256, 38, 256, 40, 256, 41, 256, 42, 256, 45, 256,
47, 256, 49, 256, 51, 256, 52, 256, 53, 256, 54, 256, 55, 256, 56, 256,
57, 256, 58, 256, 60, 256, 61, 256, 62, 256, 65, 256, 66, 256, 67, 256,
74, 256, 75, 256, 77, 256, 78, 256, 80, 256, 81, 256, 82, 256, 103, 256,
-1, -2, 7, -1, 29, -1, 42, -1, 47, -1, 52, -1, 54, -1, 55, -1,
56, -1, 57, -1, 61, -1, 65, -1, 77, -1, 80, -1, 82, -1, 17, 258,
22, 258, 26, 258, 41, 258, 67, 258, -1, -2, 79, -1, 7, 1, 17, 1,
22, 1, 26, 1, 29, 1, 41, 1, 42, 1, 46, 1, 47, 1, 52, 1,
54, 1, 55, 1, 56, 1, 57, 1, 61, 1, 65, 1, 67, 1, 77, 1,
80, 1, 82, 1, 85, 1, 86, 1, -1, -2, 1, -1, 3, -1, 4, -1,
5, -1, 6, -1, 9, -1, 10, -1, 12, -1, 15, -1, 16, -1, 20, -1,
24, -1, 30, -1, 33, -1, 40, -1, 45, -1, 47, -1, 48, -1, 49, -1,
60, -1, 62, -1, 63, -1, 66, -1, 69, -1, 71, -1, 73, -1, 74, -1,
75, -1, 76, -1, 78, -1, 81, -1, 88, -1, 94, -1, 95, -1, 102, -1,
103, -1, 108, -1, 109, -1, 89, 430, -1, -2, 46, -1, 86, -1, 85, 3,
7, 257, 17, 257, 22, 257, 26, 257, 29, 257, 41, 257, 42, 257, 47, 257,
52, 257, 54, 257, 55, 257, 56, 257, 57, 257, 61, 257, 65, 257, 67, 257,
77, 257, 80, 257, 82, 257, -1, -2, 88, -1, 90, -1, 108, -1, 109, -1,
128, -1, 8, 101, 43, 101, 85, 101, 87, 101, 89, 101, 91, 101, 92, 101,
93, 101, 94, 101, 95, 101, 96, 101, 97, 101, 98, 101, 99, 101, 100, 101,
101, 101, 104, 101, 105, 101, 106, 101, 107, 101, 110, 101, 111, 101, 112, 101,
113, 101, 114, 101, 115, 101, 116, 101, 117, 101, 118, 101, 119, 101, 120, 101,
121, 101, 122, 101, 123, 101, 124, 101, 125, 101, 126, 101, 127, 101, -1, -2,
86, -1, 1, 71, 8, 71, 43, 71, 85, 71, 87, 71, 88, 71, 89, 71,
90, 71, 91, 71, 92, 71, 93, 71, 94, 71, 95, 71, 96, 71, 97, 71,
98, 71, 99, 71, 100, 71, 101, 71, 104, 71, 105, 71, 106, 71, 107, 71,
108, 71, 109, 71, 110, 71, 111, 71, 112, 71, 113, 71, 114, 71, 115, 71,
116, 71, 117, 71, 118, 71, 119, 71, 120, 71, 121, 71, 122, 71, 123, 71,
124, 71, 125, 71, 126, 71, 127, 71, 128, 71, -1, -2, 129, -1, 1, 75,
8, 75, 43, 75, 85, 75, 86, 75, 87, 75, 88, 75, 89, 75, 90, 75,
91, 75, 92, 75, 93, 75, 94, 75, 95, 75, 96, 75, 97, 75, 98, 75,
99, 75, 100, 75, 101, 75, 104, 75, 105, 75, 106, 75, 107, 75, 108, 75,
109, 75, 110, 75, 111, 75, 112, 75, 113, 75, 114, 75, 115, 75, 116, 75,
117, 75, 118, 75, 119, 75, 120, 75, 121, 75, 122, 75, 123, 75, 124, 75,
125, 75, 126, 75, 127, 75, 128, 75, -1, -2, 104, -1, 118, -1, 119, -1,
120, -1, 121, -1, 122, -1, 123, -1, 124, -1, 125, -1, 126, -1, 127, -1,
8, 112, 43, 112, 85, 112, 87, 112, 89, 112, 91, 112, 92, 112, 93, 112,
94, 112, 95, 112, 96, 112, 97, 112, 98, 112, 99, 112, 100, 112, 101, 112,
105, 112, 106, 112, 107, 112, 110, 112, 111, 112, 112, 112, 113, 112, 114, 112,
115, 112, 116, 112, 117, 112, -1, -2, 96, -1, 97, -1, 98, -1, 8, 116,
43, 116, 85, 116, 87, 116, 89, 116, 91, 116, 92, 116, 93, 116, 94, 116,
95, 116, 99, 116, 100, 116, 101, 116, 105, 116, 106, 116, 107, 116, 110, 116,
111, 116, 112, 116, 113, 116, 114, 116, 115, 116, 116, 116, 117, 116, -1, -2,
94, -1, 95, -1, 8, 119, 43, 119, 85, 119, 87, 119, 89, 119, 91, 119,
92, 119, 93, 119, 99, 119, 100, 119, 101, 119, 105, 119, 106, 119, 107, 119,
110, 119, 111, 119, 112, 119, 113, 119, 114, 119, 115, 119, 116, 119, 117, 119,
-1, -2, 112, -1, 113, -1, 8, 122, 43, 122, 85, 122, 87, 122, 89, 122,
91, 122, 92, 122, 93, 122, 99, 122, 100, 122, 101, 122, 105, 122, 106, 122,
107, 122, 110, 122, 111, 122, 114, 122, 115, 122, 116, 122, 117, 122, -1, -2,
8, -1, 43, -1, 105, -1, 106, -1, 116, -1, 117, -1, 85, 129, 87, 129,
89, 129, 91, 129, 92, 129, 93, 129, 99, 129, 100, 129, 101, 129, 107, 129,
110, 129, 111, 129, 114, 129, 115, 129, -1, -2, 114, -1, 115, -1, 85, 132,
87, 132, 89, 132, 91, 132, 92, 132, 93, 132, 99, 132, 100, 132, 101, 132,
107, 132, 110, 132, 111, 132, -1, -2, 99, -1, 85, 134, 87, 134, 89, 134,
91, 134, 92, 134, 93, 134, 100, 134, 101, 134, 107, 134, 110, 134, 111, 134,
-1, -2, 101, -1, 85, 136, 87, 136, 89, 136, 91, 136, 92, 136, 93, 136,
100, 136, 107, 136, 110, 136, 111, 136, -1, -2, 100, -1, 85, 138, 87, 138,
89, 138, 91, 138, 92, 138, 93, 138, 107, 138, 110, 138, 111, 138, -1, -2,
110, -1, 85, 140, 87, 140, 89, 140, 91, 140, 92, 140, 93, 140, 107, 140,
111, 140, -1, -2, 107, -1, 111, -1, 85, 142, 87, 142, 89, 142, 91, 142,
92, 142, 93, 142, -1, -2, 91, -1, 89, 429, -1, -2, 92, -1, 84, 261,
-1, -2, 90, -1, 1, 34, 8, 34, 43, 34, 50, 34, 69, 34, 85, 34,
86, 34, 87, 34, 88, 34, 89, 34, 91, 34, 92, 34, 93, 34, 96, 34,
99, 34, 100, 34, 101, 34, 105, 34, 106, 34, 107, 34, 110, 34, 111, 34,
114, 34, 115, 34, 116, 34, 117, 34, -1, -2, 1, 35, 8, 35, 43, 35,
50, 35, 69, 35, 85, 35, 87, 35, 88, 35, 89, 35, 91, 35, 92, 35,
93, 35, 96, 35, 99, 35, 100, 35, 101, 35, 105, 35, 106, 35, 107, 35,
110, 35, 111, 35, 114, 35, 115, 35, 116, 35, 117, 35, 86, 39, -1, -2,
1, 36, 8, 36, 43, 36, 50, 36, 69, 36, 85, 36, 87, 36, 88, 36,
89, 36, 91, 36, 92, 36, 93, 36, 96, 36, 99, 36, 100, 36, 101, 36,
105, 36, 106, 36, 107, 36, 110, 36, 111, 36, 114, 36, 115, 36, 116, 36,
117, 36, 86, 40, -1, -2, 1, 38, 8, 38, 43, 38, 50, 38, 69, 38,
85, 38, 87, 38, 88, 38, 89, 38, 91, 38, 92, 38, 93, 38, 96, 38,
99, 38, 100, 38, 101, 38, 105, 38, 106, 38, 107, 38, 110, 38, 111, 38,
114, 38, 115, 38, 116, 38, 117, 38, 86, 41, -1, -2, 92, -1, 84, 402,
-1, -2, 92, -1, 84, 381, -1, -2, 92, -1, 84, 362, -1, -2, 84, -1,
88, 37, 96, 37, -1, -2, 90, -1, 86, 45, 89, 45, 96, 45, -1, -2,
1, -1, 3, -1, 4, -1, 5, -1, 6, -1, 9, -1, 10, -1, 12, -1,
15, -1, 16, -1, 20, -1, 24, -1, 30, -1, 33, -1, 40, -1, 45, -1,
47, -1, 48, -1, 49, -1, 51, -1, 58, -1, 60, -1, 62, -1, 63, -1,
66, -1, 69, -1, 71, -1, 73, -1, 74, -1, 75, -1, 76, -1, 78, -1,
81, -1, 88, -1, 94, -1, 95, -1, 102, -1, 103, -1, 108, -1, 109, -1,
89, 89, -1, -2, 1, -1, 3, -1, 4, -1, 5, -1, 6, -1, 9, -1,
10, -1, 12, -1, 15, -1, 16, -1, 20, -1, 24, -1, 30, -1, 33, -1,
40, -1, 45, -1, 47, -1, 48, -1, 49, -1, 60, -1, 62, -1, 63, -1,
66, -1, 69, -1, 71, -1, 73, -1, 74, -1, 75, -1, 76, -1, 78, -1,
81, -1, 88, -1, 91, -1, 94, -1, 95, -1, 102, -1, 103, -1, 108, -1,
109, -1, 87, 370, -1, -2, 91, -1, 87, 370, -1, -2, 86, -1, 1, 366,
8, 366, 43, 366, 50, 366, 69, 366, 84, 366, 85, 366, 87, 366, 88, 366,
89, 366, 91, 366, 92, 366, 93, 366, 96, 366, 99, 366, 100, 366, 101, 366,
105, 366, 106, 366, 107, 366, 110, 366, 111, 366, 114, 366, 115, 366, 116, 366,
117, 366, -1, -2, 93, -1, 0, 22, 7, 22, 17, 22, 22, 22, 26, 22,
29, 22, 41, 22, 42, 22, 46, 22, 47, 22, 52, 22, 54, 22, 55, 22,
56, 22, 57, 22, 61, 22, 65, 22, 67, 22, 77, 22, 80, 22, 82, 22,
85, 22, 86, 22, -1, -2, 1, -1, 3, -1, 4, -1, 5, -1, 6, -1,
9, -1, 10, -1, 12, -1, 15, -1, 16, -1, 20, -1, 24, -1, 30, -1,
33, -1, 40, -1, 45, -1, 47, -1, 48, -1, 49, -1, 51, -1, 58, -1,
60, -1, 62, -1, 63, -1, 66, -1, 69, -1, 71, -1, 73, -1, 74, -1,
75, -1, 76, -1, 78, -1, 81, -1, 88, -1, 94, -1, 95, -1, 102, -1,
103, -1, 108, -1, 109, -1, 89, 89, -1, -2, 1, -1, 3, -1, 4, -1,
5, -1, 6, -1, 9, -1, 10, -1, 12, -1, 15, -1, 16, -1, 20, -1,
24, -1, 30, -1, 33, -1, 40, -1, 45, -1, 47, -1, 48, -1, 49, -1,
60, -1, 62, -1, 63, -1, 66, -1, 69, -1, 71, -1, 73, -1, 74, -1,
75, -1, 76, -1, 78, -1, 81, -1, 84, -1, 88, -1, 94, -1, 95, -1,
102, -1, 103, -1, 108, -1, 109, -1, 85, 375, -1, -2, 1, -1, 3, -1,
4, -1, 5, -1, 6, -1, 9, -1, 10, -1, 12, -1, 15, -1, 16, -1,
20, -1, 24, -1, 30, -1, 33, -1, 40, -1, 45, -1, 47, -1, 48, -1,
49, -1, 60, -1, 62, -1, 63, -1, 66, -1, 69, -1, 71, -1, 73, -1,
74, -1, 75, -1, 76, -1, 78, -1, 81, -1, 88, -1, 91, -1, 94, -1,
95, -1, 102, -1, 103, -1, 108, -1, 109, -1, 87, 370, -1, -2, 91, -1,
89, 88, -1, -2, 91, -1, 87, 369, -1, -2, 96, -1, 97, -1, 98, -1,
8, 117, 43, 117, 85, 117, 87, 117, 89, 117, 91, 117, 92, 117, 93, 117,
94, 117, 95, 117, 99, 117, 100, 117, 101, 117, 105, 117, 106, 117, 107, 117,
110, 117, 111, 117, 112, 117, 113, 117, 114, 117, 115, 117, 116, 117, 117, 117,
-1, -2, 96, -1, 97, -1, 98, -1, 8, 118, 43, 118, 85, 118, 87, 118,
89, 118, 91, 118, 92, 118, 93, 118, 94, 118, 95, 118, 99, 118, 100, 118,
101, 118, 105, 118, 106, 118, 107, 118, 110, 118, 111, 118, 112, 118, 113, 118,
114, 118, 115, 118, 116, 118, 117, 118, -1, -2, 94, -1, 95, -1, 8, 120,
43, 120, 85, 120, 87, 120, 89, 120, 91, 120, 92, 120, 93, 120, 99, 120,
100, 120, 101, 120, 105, 120, 106, 120, 107, 120, 110, 120, 111, 120, 112, 120,
113, 120, 114, 120, 115, 120, 116, 120, 117, 120, -1, -2, 94, -1, 95, -1,
8, 121, 43, 121, 85, 121, 87, 121, 89, 121, 91, 121, 92, 121, 93, 121,
99, 121, 100, 121, 101, 121, 105, 121, 106, 121, 107, 121, 110, 121, 111, 121,
112, 121, 113, 121, 114, 121, 115, 121, 116, 121, 117, 121, -1, -2, 96, -1,
8, 128, 43, 128, 85, 128, 87, 128, 89, 128, 91, 128, 92, 128, 93, 128,
99, 128, 100, 128, 101, 128, 105, 128, 106, 128, 107, 128, 110, 128, 111, 128,
114, 128, 115, 128, 116, 128, 117, 128, -1, -2, 96, -1, 8, 127, 43, 127,
85, 127, 87, 127, 89, 127, 91, 127, 92, 127, 93, 127, 99, 127, 100, 127,
101, 127, 105, 127, 106, 127, 107, 127, 110, 127, 111, 127, 114, 127, 115, 127,
116, 127, 117, 127, -1, -2, 112, -1, 113, -1, 8, 123, 43, 123, 85, 123,
87, 123, 89, 123, 91, 123, 92, 123, 93, 123, 99, 123, 100, 123, 101, 123,
105, 123, 106, 123, 107, 123, 110, 123, 111, 123, 114, 123, 115, 123, 116, 123,
117, 123, -1, -2, 112, -1, 113, -1, 8, 124, 43, 124, 85, 124, 87, 124,
89, 124, 91, 124, 92, 124, 93, 124, 99, 124, 100, 124, 101, 124, 105, 124,
106, 124, 107, 124, 110, 124, 111, 124, 114, 124, 115, 124, 116, 124, 117, 124,
-1, -2, 112, -1, 113, -1, 8, 125, 43, 125, 85, 125, 87, 125, 89, 125,
91, 125, 92, 125, 93, 125, 99, 125, 100, 125, 101, 125, 105, 125, 106, 125,
107, 125, 110, 125, 111, 125, 114, 125, 115, 125, 116, 125, 117, 125, -1, -2,
112, -1, 113, -1, 8, 126, 43, 126, 85, 126, 87, 126, 89, 126, 91, 126,
92, 126, 93, 126, 99, 126, 100, 126, 101, 126, 105, 126, 106, 126, 107, 126,
110, 126, 111, 126, 114, 126, 115, 126, 116, 126, 117, 126, -1, -2, 8, -1,
43, -1, 105, -1, 106, -1, 116, -1, 117, -1, 85, 130, 87, 130, 89, 130,
91, 130, 92, 130, 93, 130, 99, 130, 100, 130, 101, 130, 107, 130, 110, 130,
111, 130, 114, 130, 115, 130, -1, -2, 8, -1, 43, -1, 105, -1, 106, -1,
116, -1, 117, -1, 85, 131, 87, 131, 89, 131, 91, 131, 92, 131, 93, 131,
99, 131, 100, 131, 101, 131, 107, 131, 110, 131, 111, 131, 114, 131, 115, 131,
-1, -2, 114, -1, 115, -1, 85, 133, 87, 133, 89, 133, 91, 133, 92, 133,
93, 133, 99, 133, 100, 133, 101, 133, 107, 133, 110, 133, 111, 133, -1, -2,
99, -1, 85, 135, 87, 135, 89, 135, 91, 135, 92, 135, 93, 135, 100, 135,
101, 135, 107, 135, 110, 135, 111, 135, -1, -2, 101, -1, 85, 137, 87, 137,
89, 137, 91, 137, 92, 137, 93, 137, 100, 137, 107, 137, 110, 137, 111, 137,
-1, -2, 100, -1, 85, 139, 87, 139, 89, 139, 91, 139, 92, 139, 93, 139,
107, 139, 110, 139, 111, 139, -1, -2, 110, -1, 85, 141, 87, 141, 89, 141,
91, 141, 92, 141, 93, 141, 107, 141, 111, 141, -1, -2, 90, -1, 84, 264,
91, 264, -1, -2, 91, -1, 84, 263, -1, -2, 86, -1, 1, 257, 7, 257,
10, 257, 12, 257, 15, 257, 17, 257, 18, 257, 20, 257, 22, 257, 24, 257,
26, 257, 27, 257, 28, 257, 29, 257, 33, 257, 38, 257, 40, 257, 41, 257,
42, 257, 45, 257, 47, 257, 49, 257, 52, 257, 54, 257, 55, 257, 56, 257,
57, 257, 60, 257, 61, 257, 62, 257, 65, 257, 66, 257, 67, 257, 74, 257,
75, 257, 77, 257, 78, 257, 80, 257, 81, 257, 82, 257, 103, 257, 85, 267,
-1, -2, 93, -1, 0, 22, 1, 22, 7, 22, 10, 22, 12, 22, 15, 22,
17, 22, 18, 22, 20, 22, 22, 22, 24, 22, 26, 22, 27, 22, 28, 22,
29, 22, 33, 22, 38, 22, 40, 22, 41, 22, 42, 22, 45, 22, 46, 22,
47, 22, 49, 22, 52, 22, 54, 22, 55, 22, 56, 22, 57, 22, 60, 22,
61, 22, 62, 22, 65, 22, 66, 22, 67, 22, 74, 22, 75, 22, 77, 22,
78, 22, 80, 22, 81, 22, 82, 22, 85, 22, 86, 22, 103, 22, -1, -2,
86, -1, 1, 257, 10, 257, 12, 257, 15, 257, 20, 257, 24, 257, 33, 257,
40, 257, 45, 257, 49, 257, 51, 257, 53, 257, 58, 257, 60, 257, 62, 257,
66, 257, 74, 257, 75, 257, 78, 257, 81, 257, 89, 292, -1, -2, 86, -1,
1, 257, 85, 406, -1, -2, 93, -1, 0, 22, 1, 22, 7, 22, 10, 22,
12, 22, 15, 22, 17, 22, 18, 22, 20, 22, 22, 22, 24, 22, 26, 22,
27, 22, 28, 22, 29, 22, 33, 22, 38, 22, 40, 22, 41, 22, 42, 22,
45, 22, 46, 22, 47, 22, 49, 22, 52, 22, 54, 22, 55, 22, 56, 22,
57, 22, 60, 22, 61, 22, 62, 22, 65, 22, 66, 22, 67, 22, 74, 22,
75, 22, 77, 22, 78, 22, 80, 22, 81, 22, 82, 22, 85, 22, 86, 22,
103, 22, -1, -2, 91, -1, 84, 383, -1, -2, 86, -1, 1, 257, 10, 257,
12, 257, 15, 257, 20, 257, 24, 257, 27, 257, 33, 257, 40, 257, 45, 257,
47, 257, 49, 257, 60, 257, 62, 257, 66, 257, 74, 257, 75, 257, 78, 257,
81, 257, 85, 385, -1, -2, 93, -1, 0, 22, 1, 22, 7, 22, 10, 22,
12, 22, 15, 22, 17, 22, 18, 22, 20, 22, 22, 22, 24, 22, 26, 22,
27, 22, 28, 22, 29, 22, 33, 22, 38, 22, 40, 22, 41, 22, 42, 22,
45, 22, 46, 22, 47, 22, 49, 22, 52, 22, 54, 22, 55, 22, 56, 22,
57, 22, 60, 22, 61, 22, 62, 22, 65, 22, 66, 22, 67, 22, 74, 22,
75, 22, 77, 22, 78, 22, 80, 22, 81, 22, 82, 22, 85, 22, 86, 22,
103, 22, -1, -2, 91, -1, 84, 364, -1, -2, 86, -1, 1, 257, 7, 257,
10, 257, 12, 257, 15, 257, 17, 257, 18, 257, 20, 257, 22, 257, 24, 257,
26, 257, 27, 257, 28, 257, 29, 257, 33, 257, 38, 257, 40, 257, 41, 257,
42, 257, 45, 257, 47, 257, 49, 257, 52, 257, 54, 257, 55, 257, 56, 257,
57, 257, 60, 257, 61, 257, 62, 257, 65, 257, 66, 257, 67, 257, 74, 257,
75, 257, 77, 257, 78, 257, 80, 257, 81, 257, 82, 257, 103, 257, 85, 267,
-1, -2, 93, -1, 0, 22, 1, 22, 7, 22, 10, 22, 12, 22, 15, 22,
17, 22, 18, 22, 20, 22, 22, 22, 24, 22, 26, 22, 27, 22, 28, 22,
29, 22, 33, 22, 38, 22, 40, 22, 41, 22, 42, 22, 45, 22, 46, 22,
47, 22, 49, 22, 52, 22, 54, 22, 55, 22, 56, 22, 57, 22, 60, 22,
61, 22, 62, 22, 65, 22, 66, 22, 67, 22, 74, 22, 75, 22, 77, 22,
78, 22, 80, 22, 81, 22, 82, 22, 85, 22, 86, 22, 103, 22, -1, -2,
91, -1, 85, 374, -1, -2, 7, -1, 18, -1, 29, -1, 42, -1, 47, -1,
52, -1, 54, -1, 55, -1, 56, -1, 57, -1, 61, -1, 65, -1, 77, -1,
80, -1, 82, -1, 1, 259, 10, 259, 12, 259, 15, 259, 17, 259, 20, 259,
22, 259, 24, 259, 26, 259, 27, 259, 28, 259, 33, 259, 38, 259, 40, 259,
41, 259, 45, 259, 49, 259, 60, 259, 62, 259, 66, 259, 67, 259, 74, 259,
75, 259, 78, 259, 81, 259, 103, 359, -1, -2, 86, -1, 1, 257, 7, 257,
10, 257, 12, 257, 15, 257, 17, 257, 18, 257, 20, 257, 22, 257, 24, 257,
26, 257, 27, 257, 28, 257, 29, 257, 33, 257, 38, 257, 40, 257, 41, 257,
42, 257, 45, 257, 47, 257, 49, 257, 52, 257, 54, 257, 55, 257, 56, 257,
57, 257, 60, 257, 61, 257, 62, 257, 65, 257, 66, 257, 67, 257, 74, 257,
75, 257, 77, 257, 78, 257, 80, 257, 81, 257, 82, 257, 103, 257, 85, 266,
-1, -2, 51, -1, 53, -1, 58, -1, 1, 302, 10, 302, 12, 302, 15, 302,
20, 302, 24, 302, 33, 302, 40, 302, 45, 302, 49, 302, 60, 302, 62, 302,
66, 302, 74, 302, 75, 302, 78, 302, 81, 302, -1, -2, 91, -1, 87, 296,
89, 296, -1, -2, 91, -1, 85, 405, -1, -2, 47, -1, 1, 390, 10, 390,
12, 390, 15, 390, 20, 390, 24, 390, 27, 390, 33, 390, 40, 390, 45, 390,
49, 390, 60, 390, 62, 390, 66, 390, 74, 390, 75, 390, 78, 390, 81, 390,
-1, -2, 86, -1, 1, 257, 10, 257, 12, 257, 15, 257, 20, 257, 24, 257,
27, 257, 33, 257, 40, 257, 45, 257, 47, 257, 49, 257, 60, 257, 62, 257,
66, 257, 74, 257, 75, 257, 78, 257, 81, 257, 85, 384, -1, -2, 86, -1,
1, 95, 8, 95, 43, 95, 84, 95, 85, 95, 87, 95, 88, 95, 89, 95,
90, 95, 91, 95, 92, 95, 93, 95, 94, 95, 95, 95, 96, 95, 97, 95,
98, 95, 99, 95, 100, 95, 101, 95, 104, 95, 105, 95, 106, 95, 107, 95,
108, 95, 109, 95, 110, 95, 111, 95, 112, 95, 113, 95, 114, 95, 115, 95,
116, 95, 117, 95, 118, 95, 119, 95, 120, 95, 121, 95, 122, 95, 123, 95,
124, 95, 125, 95, 126, 95, 127, 95, 128, 95, -1, -2, 90, -1, 84, 265,
91, 265, -1, -2, 1, 17, 7, 17, 10, 17, 12, 17, 15, 17, 17, 17,
18, 17, 20, 17, 22, 17, 24, 17, 26, 17, 27, 17, 28, 17, 29, 17,
33, 17, 38, 17, 40, 17, 41, 17, 42, 17, 45, 17, 47, 17, 49, 17,
52, 17, 54, 17, 55, 17, 56, 17, 57, 17, 60, 17, 61, 17, 62, 17,
65, 17, 66, 17, 67, 17, 74, 17, 75, 17, 77, 17, 78, 17, 80, 17,
81, 17, 82, 17, 103, 357, -1, -2, 7, -1, 18, -1, 29, -1, 42, -1,
47, -1, 52, -1, 54, -1, 55, -1, 56, -1, 57, -1, 61, -1, 65, -1,
77, -1, 80, -1, 82, -1, 1, 258, 10, 258, 12, 258, 15, 258, 17, 258,
20, 258, 22, 258, 24, 258, 26, 258, 27, 258, 28, 258, 33, 258, 38, 258,
40, 258, 41, 258, 45, 258, 49, 258, 60, 258, 62, 258, 66, 258, 67, 258,
74, 258, 75, 258, 78, 258, 81, 258, -1, -2, 86, -1, 1, 257, 10, 257,
12, 257, 15, 257, 20, 257, 24, 257, 33, 257, 40, 257, 45, 257, 49, 257,
51, 257, 53, 257, 58, 257, 60, 257, 62, 257, 66, 257, 74, 257, 75, 257,
78, 257, 81, 257, -1, -2, 104, -1, 85, 411, 91, 411, -1, -2, 85, -1,
86, -1, 1, 257, -1, -2, 86, -1, 1, 94, 8, 94, 43, 94, 84, 94,
85, 94, 87, 94, 88, 94, 89, 94, 90, 94, 91, 94, 92, 94, 93, 94,
94, 94, 95, 94, 96, 94, 97, 94, 98, 94, 99, 94, 100, 94, 101, 94,
104, 94, 105, 94, 106, 94, 107, 94, 108, 94, 109, 94, 110, 94, 111, 94,
112, 94, 113, 94, 114, 94, 115, 94, 116, 94, 117, 94, 118, 94, 119, 94,
120, 94, 121, 94, 122, 94, 123, 94, 124, 94, 125, 94, 126, 94, 127, 94,
128, 94, -1, -2, 84, -1, 1, 97, 8, 97, 43, 97, 85, 97, 87, 97,
88, 97, 89, 97, 90, 97, 91, 97, 92, 97, 93, 97, 94, 97, 95, 97,
96, 97, 97, 97, 98, 97, 99, 97, 100, 97, 101, 97, 104, 97, 105, 97,
106, 97, 107, 97, 108, 97, 109, 97, 110, 97, 111, 97, 112, 97, 113, 97,
114, 97, 115, 97, 116, 97, 117, 97, 118, 97, 119, 97, 120, 97, 121, 97,
122, 97, 123, 97, 124, 97, 125, 97, 126, 97, 127, 97, 128, 97, -1, -2,
1, -1, 96, 37, -1, -2, 86, -1, 1, 257, 10, 257, 12, 257, 15, 257,
20, 257, 24, 257, 33, 257, 40, 257, 45, 257, 49, 257, 51, 257, 53, 257,
58, 257, 60, 257, 62, 257, 66, 257, 74, 257, 75, 257, 78, 257, 81, 257,
89, 292, -1, -2, 90, 31, 91, 33, 93, 33, 104, 33, 84, 294, 88, 294,
-1, -2, 104, -1, 89, 287, 91, 287, 93, 287, -1, -2, 1, -1, 3, -1,
4, -1, 5, -1, 6, -1, 9, -1, 10, -1, 11, -1, 12, -1, 15, -1,
16, -1, 18, -1, 19, -1, 20, -1, 23, -1, 24, -1, 30, -1, 33, -1,
34, -1, 35, -1, 36, -1, 37, -1, 40, -1, 44, -1, 45, -1, 47, -1,
48, -1, 49, -1, 59, -1, 60, -1, 62, -1, 63, -1, 66, -1, 68, -1,
69, -1, 70, -1, 71, -1, 72, -1, 73, -1, 74, -1, 75, -1, 76, -1,
77, -1, 78, -1, 79, -1, 81, -1, 83, -1, 84, -1, 88, -1, 93, -1,
94, -1, 95, -1, 102, -1, 103, -1, 108, -1, 109, -1, 85, 195, -1, -2,
86, -1, 1, 257, -1, -2, 86, -1, 1, 257, 10, 257, 12, 257, 15, 257,
20, 257, 24, 257, 33, 257, 40, 257, 45, 257, 49, 257, 51, 257, 53, 257,
58, 257, 60, 257, 62, 257, 66, 257, 74, 257, 75, 257, 78, 257, 81, 257,
89, 292, -1, -2, 86, -1, 1, 257, 10, 257, 12, 257, 15, 257, 20, 257,
24, 257, 33, 257, 40, 257, 45, 257, 49, 257, 51, 257, 53, 257, 58, 257,
60, 257, 62, 257, 66, 257, 74, 257, 75, 257, 78, 257, 81, 257, -1, -2,
1, -1, 3, -1, 4, -1, 5, -1, 6, -1, 9, -1, 10, -1, 12, -1,
15, -1, 16, -1, 20, -1, 24, -1, 30, -1, 33, -1, 40, -1, 45, -1,
47, -1, 48, -1, 49, -1, 60, -1, 62, -1, 63, -1, 66, -1, 69, -1,
71, -1, 73, -1, 74, -1, 75, -1, 76, -1, 78, -1, 81, -1, 88, -1,
94, -1, 95, -1, 102, -1, 103, -1, 108, -1, 109, -1, 93, 176, -1, -2,
1, -1, 3, -1, 4, -1, 5, -1, 6, -1, 9, -1, 10, -1, 12, -1,
15, -1, 16, -1, 20, -1, 24, -1, 30, -1, 33, -1, 40, -1, 45, -1,
47, -1, 48, -1, 49, -1, 60, -1, 62, -1, 63, -1, 66, -1, 69, -1,
71, -1, 73, -1, 74, -1, 75, -1, 76, -1, 78, -1, 81, -1, 88, -1,
94, -1, 95, -1, 102, -1, 103, -1, 108, -1, 109, -1, 93, 176, -1, -2,
92, -1, 1, 74, 86, 74, 88, 74, 90, 74, 104, 74, 108, 74, 109, 74,
118, 74, 119, 74, 120, 74, 121, 74, 122, 74, 123, 74, 124, 74, 125, 74,
126, 74, 127, 74, 128, 74, -1, -2, 86, -1, 90, -1, 1, 43, -1, -2,
88, -1, 90, -1, 108, -1, 109, -1, 128, -1, 1, 42, 104, 101, 118, 101,
119, 101, 120, 101, 121, 101, 122, 101, 123, 101, 124, 101, 125, 101, 126, 101,
127, 101, -1, -2, 1, 93, 86, 93, 88, 93, 90, 93, 104, 93, 108, 93,
109, 93, 118, 93, 119, 93, 120, 93, 121, 93, 122, 93, 123, 93, 124, 93,
125, 93, 126, 93, 127, 93, 128, 93, 89, 205, 91, 205, 93, 205, -1, -2,
1, -1, 3, -1, 4, -1, 5, -1, 6, -1, 9, -1, 10, -1, 11, -1,
12, -1, 15, -1, 16, -1, 18, -1, 19, -1, 20, -1, 23, -1, 24, -1,
30, -1, 33, -1, 34, -1, 35, -1, 36, -1, 37, -1, 40, -1, 44, -1,
45, -1, 47, -1, 48, -1, 49, -1, 59, -1, 60, -1, 62, -1, 63, -1,
66, -1, 68, -1, 69, -1, 70, -1, 71, -1, 72, -1, 73, -1, 74, -1,
75, -1, 76, -1, 77, -1, 78, -1, 79, -1, 81, -1, 83, -1, 84, -1,
88, -1, 93, -1, 94, -1, 95, -1, 102, -1, 103, -1, 108, -1, 109, -1,
85, 194, -1, -2, 86, -1, 1, 257, -1, -2, 86, -1, 1, 257, 10, 257,
12, 257, 15, 257, 20, 257, 24, 257, 33, 257, 40, 257, 45, 257, 49, 257,
51, 257, 53, 257, 58, 257, 60, 257, 62, 257, 66, 257, 74, 257, 75, 257,
78, 257, 81, 257, 89, 292, -1, -2, 86, -1, 1, 257, 10, 257, 12, 257,
15, 257, 20, 257, 24, 257, 33, 257, 40, 257, 45, 257, 49, 257, 51, 257,
53, 257, 58, 257, 60, 257, 62, 257, 66, 257, 74, 257, 75, 257, 78, 257,
81, 257, -1, -2, 86, -1, 1, 257, -1, -2, 92, -1, 84, 353, 93, 353,
-1, -2, 90, 32, 84, 295, 88, 295, -1, -2, 86, -1, 1, 257, 85, 310,
-1, -2, 88, -1, 90, -1, 108, -1, 109, -1, 128, -1, 104, 101, 118, 101,
119, 101, 120, 101, 121, 101, 122, 101, 123, 101, 124, 101, 125, 101, 126, 101,
127, 101, -1, -2, 1, -1, 3, -1, 4, -1, 5, -1, 6, -1, 9, -1,
10, -1, 12, -1, 15, -1, 16, -1, 20, -1, 24, -1, 30, -1, 33, -1,
40, -1, 45, -1, 47, -1, 48, -1, 49, -1, 60, -1, 62, -1, 63, -1,
66, -1, 69, -1, 71, -1, 73, -1, 74, -1, 75, -1, 76, -1, 78, -1,
81, -1, 88, -1, 94, -1, 95, -1, 102, -1, 103, -1, 108, -1, 109, -1,
93, 174, -1, -2, 104, 106, 118, 106, 119, 106, 120, 106, 121, 106, 122, 106,
123, 106, 124, 106, 125, 106, 126, 106, 127, 106, 89, 209, 91, 209, 93, 209,
-1, -2, 104, 107, 118, 107, 119, 107, 120, 107, 121, 107, 122, 107, 123, 107,
124, 107, 125, 107, 126, 107, 127, 107, 89, 210, 91, 210, 93, 210, -1, -2,
86, -1, 1, 44, -1, -2, 91, -1, 89, 199, 93, 199, -1, -2, 1, -1,
3, -1, 4, -1, 5, -1, 6, -1, 9, -1, 10, -1, 12, -1, 15, -1,
16, -1, 20, -1, 24, -1, 30, -1, 33, -1, 40, -1, 45, -1, 47, -1,
48, -1, 49, -1, 51, -1, 58, -1, 60, -1, 62, -1, 63, -1, 66, -1,
69, -1, 71, -1, 73, -1, 74, -1, 75, -1, 76, -1, 78, -1, 81, -1,
88, -1, 94, -1, 95, -1, 102, -1, 103, -1, 108, -1, 109, -1, 89, 89,
-1, -2, 1, 83, 86, 83, 88, 83, 90, 83, 104, 83, 108, 83, 109, 83,
118, 83, 119, 83, 120, 83, 121, 83, 122, 83, 123, 83, 124, 83, 125, 83,
126, 83, 127, 83, 128, 83, 89, 207, 91, 207, 93, 207, -1, -2, 1, 84,
86, 84, 88, 84, 90, 84, 104, 84, 108, 84, 109, 84, 118, 84, 119, 84,
120, 84, 121, 84, 122, 84, 123, 84, 124, 84, 125, 84, 126, 84, 127, 84,
128, 84, 89, 208, 91, 208, 93, 208, -1, -2, 86, -1, 1, 257, 85, 398,
-1, -2, 91, -1, 93, 200, -1, -2, 91, -1, 93, 223, -1, -2, 31, -1,
1, 227, 3, 227, 4, 227, 5, 227, 6, 227, 9, 227, 10, 227, 11, 227,
12, 227, 13, 227, 15, 227, 16, 227, 18, 227, 19, 227, 20, 227, 21, 227,
23, 227, 24, 227, 25, 227, 30, 227, 33, 227, 34, 227, 35, 227, 36, 227,
37, 227, 40, 227, 44, 227, 45, 227, 47, 227, 48, 227, 49, 227, 59, 227,
60, 227, 62, 227, 63, 227, 66, 227, 68, 227, 69, 227, 70, 227, 71, 227,
72, 227, 73, 227, 74, 227, 75, 227, 76, 227, 77, 227, 78, 227, 79, 227,
81, 227, 83, 227, 84, 227, 85, 227, 88, 227, 93, 227, 94, 227, 95, 227,
102, 227, 103, 227, 108, 227, 109, 227, -1, -2, 14, -1, 1, 230, 3, 230,
4, 230, 5, 230, 6, 230, 9, 230, 10, 230, 11, 230, 12, 230, 13, 230,
15, 230, 16, 230, 18, 230, 19, 230, 20, 230, 21, 230, 23, 230, 24, 230,
25, 230, 30, 230, 31, 230, 33, 230, 34, 230, 35, 230, 36, 230, 37, 230,
40, 230, 44, 230, 45, 230, 47, 230, 48, 230, 49, 230, 59, 230, 60, 230,
62, 230, 63, 230, 66, 230, 68, 230, 69, 230, 70, 230, 71, 230, 72, 230,
73, 230, 74, 230, 75, 230, 76, 230, 77, 230, 78, 230, 79, 230, 81, 230,
83, 230, 84, 230, 85, 230, 88, 230, 93, 230, 94, 230, 95, 230, 102, 230,
103, 230, 108, 230, 109, 230, -1, -2, 88, -1, 90, -1, 108, -1, 109, -1,
128, -1, 1, 42, 8, 101, 43, 101, 89, 101, 94, 101, 95, 101, 96, 101,
97, 101, 98, 101, 99, 101, 100, 101, 101, 101, 104, 101, 105, 101, 106, 101,
107, 101, 110, 101, 111, 101, 112, 101, 113, 101, 114, 101, 115, 101, 116, 101,
117, 101, 118, 101, 119, 101, 120, 101, 121, 101, 122, 101, 123, 101, 124, 101,
125, 101, 126, 101, 127, 101, -1, -2, 86, -1, 1, 257, -1, -2, 1, -1,
3, -1, 4, -1, 5, -1, 6, -1, 9, -1, 10, -1, 12, -1, 15, -1,
16, -1, 20, -1, 24, -1, 30, -1, 33, -1, 40, -1, 45, -1, 47, -1,
48, -1, 49, -1, 60, -1, 62, -1, 63, -1, 66, -1, 69, -1, 71, -1,
73, -1, 74, -1, 75, -1, 76, -1, 78, -1, 81, -1, 88, -1, 94, -1,
95, -1, 102, -1, 103, -1, 108, -1, 109, -1, 93, 176, -1, -2, 1, 90,
86, 90, 88, 90, 90, 90, 104, 90, 108, 90, 109, 90, 118, 90, 119, 90,
120, 90, 121, 90, 122, 90, 123, 90, 124, 90, 125, 90, 126, 90, 127, 90,
128, 90, 89, 204, 91, 204, 93, 204, -1, -2, 86, -1, 1, 257, -1, -2,
1, -1, 3, -1, 4, -1, 5, -1, 6, -1, 9, -1, 10, -1, 12, -1,
15, -1, 16, -1, 20, -1, 24, -1, 30, -1, 33, -1, 40, -1, 45, -1,
47, -1, 48, -1, 49, -1, 51, -1, 58, -1, 60, -1, 62, -1, 63, -1,
66, -1, 69, -1, 71, -1, 73, -1, 74, -1, 75, -1, 76, -1, 78, -1,
81, -1, 88, -1, 94, -1, 95, -1, 102, -1, 103, -1, 108, -1, 109, -1,
89, 89, -1, -2, 1, -1, 3, -1, 4, -1, 5, -1, 6, -1, 9, -1,
10, -1, 12, -1, 15, -1, 16, -1, 20, -1, 24, -1, 30, -1, 33, -1,
40, -1, 45, -1, 47, -1, 48, -1, 49, -1, 51, -1, 58, -1, 60, -1,
62, -1, 63, -1, 66, -1, 69, -1, 71, -1, 73, -1, 74, -1, 75, -1,
76, -1, 78, -1, 81, -1, 88, -1, 94, -1, 95, -1, 102, -1, 103, -1,
108, -1, 109, -1, 89, 89, -1, -2, 25, -1, 1, 168, 3, 168, 4, 168,
5, 168, 6, 168, 9, 168, 10, 168, 11, 168, 12, 168, 13, 168, 15, 168,
16, 168, 18, 168, 19, 168, 20, 168, 21, 168, 23, 168, 24, 168, 30, 168,
33, 168, 34, 168, 35, 168, 36, 168, 37, 168, 40, 168, 44, 168, 45, 168,
47, 168, 48, 168, 49, 168, 59, 168, 60, 168, 62, 168, 63, 168, 66, 168,
68, 168, 69, 168, 70, 168, 71, 168, 72, 168, 73, 168, 74, 168, 75, 168,
76, 168, 77, 168, 78, 168, 79, 168, 81, 168, 83, 168, 84, 168, 85, 168,
88, 168, 93, 168, 94, 168, 95, 168, 102, 168, 103, 168, 108, 168, 109, 168,
-1, -2, 13, -1, 21, -1, 85, 212, -1, -2, 1, -1, 89, 236, -1, -2,
1, -1, 3, -1, 4, -1, 5, -1, 6, -1, 9, -1, 10, -1, 12, -1,
15, -1, 16, -1, 20, -1, 24, -1, 30, -1, 33, -1, 40, -1, 45, -1,
47, -1, 48, -1, 49, -1, 60, -1, 62, -1, 63, -1, 66, -1, 69, -1,
71, -1, 73, -1, 74, -1, 75, -1, 76, -1, 78, -1, 81, -1, 88, -1,
94, -1, 95, -1, 102, -1, 103, -1, 108, -1, 109, -1, 89, 178, -1, -2,
13, -1, 21, -1, 85, 211, -1, -2, 91, -1, 89, 177, -1, -2, 1, -1,
3, -1, 4, -1, 5, -1, 6, -1, 9, -1, 10, -1, 11, -1, 12, -1,
15, -1, 16, -1, 18, -1, 19, -1, 20, -1, 23, -1, 24, -1, 30, -1,
33, -1, 34, -1, 35, -1, 36, -1, 37, -1, 40, -1, 44, -1, 45, -1,
47, -1, 48, -1, 49, -1, 59, -1, 60, -1, 62, -1, 63, -1, 66, -1,
68, -1, 69, -1, 70, -1, 71, -1, 72, -1, 73, -1, 74, -1, 75, -1,
76, -1, 77, -1, 78, -1, 79, -1, 81, -1, 83, -1, 84, -1, 88, -1,
93, -1, 94, -1, 95, -1, 102, -1, 103, -1, 108, -1, 109, -1, 13, 217,
21, 217, 85, 217, -1, -2,
};
private static final short[] lapg_sym_goto = new short[] {
0, 1, 144, 144, 225, 306, 387, 468, 472, 475, 557, 657, 670, 771, 775, 777,
878, 959, 961, 968, 981, 1081, 1085, 1087, 1100, 1200, 1201, 1203, 1206, 1207, 1211, 1293,
1295, 1295, 1395, 1408, 1421, 1434, 1447, 1448, 1449, 1550, 1552, 1556, 1559, 1572, 1673, 1676,
1762, 1843, 1943, 1945, 1952, 1956, 1957, 1961, 1965, 1969, 1973, 1980, 1994, 2095, 2099, 2200,
2281, 2281, 2285, 2385, 2387, 2400, 2485, 2498, 2580, 2593, 2674, 2775, 2876, 2957, 2974, 3075,
3091, 3095, 3195, 3199, 3213, 3254, 3269, 3307, 3317, 3428, 3457, 3474, 3499, 3509, 3554, 3639,
3724, 3746, 3750, 3754, 3757, 3760, 3763, 3845, 3928, 3934, 3938, 3942, 3943, 4029, 4115, 4117,
4118, 4124, 4130, 4133, 4136, 4140, 4144, 4146, 4148, 4150, 4152, 4154, 4156, 4158, 4160, 4162,
4164, 4168, 4169, 4169, 4169, 4169, 4169, 4169, 4170, 4172, 4174, 4176, 4178, 4202, 4206, 4208,
4213, 4294, 4327, 4438, 4458, 4477, 4577, 4596, 4615, 4634, 4641, 4722, 4726, 4727, 4736, 4837,
4842, 4848, 4885, 4966, 5047, 5128, 5131, 5136, 5217, 5218, 5219, 5224, 5305, 5386, 5438, 5488,
5536, 5580, 5622, 5663, 5703, 5742, 5780, 5817, 5854, 5907, 5909, 5913, 5918, 5925, 5930, 5943,
5968, 5984, 5985, 5986, 5987, 5990, 5991, 5993, 6006, 6007, 6008, 6010, 6013, 6015, 6018, 6019,
6020, 6022, 6024, 6025, 6028, 6029, 6030, 6032, 6033, 6035, 6037, 6038, 6041, 6044, 6047, 6053,
6059, 6065, 6071, 6077, 6083, 6107, 6109, 6110, 6111, 6112, 6115, 6117, 6119, 6122, 6125, 6128,
6131, 6134, 6137, 6140, 6143, 6146, 6149, 6150, 6154, 6157, 6159, 6163, 6169, 6174, 6180, 6187,
6194, 6195, 6196, 6197, 6200, 6204, 6205, 6206, 6207, 6208, 6209, 6212, 6213, 6214, 6215, 6216,
6217, 6218, 6219, 6220, 6221, 6222, 6225, 6228, 6229, 6230, 6231, 6232, 6233, 6234, 6235, 6237,
6238, 6239, 6241, 6242, 6245, 6246, 6247, 6248, 6249, 6250, 6251, 6253, 6279, 6280, 6282, 6286,
6290, 6291, 6292, 6293, 6294,
};
private static final short[] lapg_sym_from = new short[] {
729, 1, 8, 9, 24, 26, 60, 62, 63, 67, 68, 69, 70, 71, 93, 108,
109, 110, 111, 112, 113, 114, 144, 154, 155, 156, 157, 161, 162, 163, 173, 174,
175, 178, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 217, 228, 231, 240, 241,
243, 247, 252, 253, 307, 322, 327, 328, 350, 365, 373, 374, 382, 384, 391, 401,
405, 410, 411, 412, 414, 418, 421, 422, 425, 437, 441, 450, 481, 482, 483, 488,
491, 493, 496, 499, 501, 508, 509, 512, 525, 527, 528, 535, 543, 548, 552, 556,
557, 558, 561, 562, 565, 570, 571, 574, 577, 585, 590, 607, 615, 655, 656, 657,
660, 661, 663, 669, 670, 676, 677, 683, 688, 696, 698, 699, 704, 714, 720, 724,
63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179, 181, 193, 194,
195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 418, 437, 482,
493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562, 565, 570, 571, 574, 577,
655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720,
724, 63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179, 181, 193,
194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211,
212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 418, 437,
482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562, 565, 570, 571, 574,
577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714,
720, 724, 63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179, 181,
193, 194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210,
211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 418,
437, 482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562, 565, 570, 571,
574, 577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704,
714, 720, 724, 63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179,
181, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209,
210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365,
418, 437, 482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562, 565, 570,
571, 574, 577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699,
704, 714, 720, 724, 21, 55, 330, 372, 130, 280, 281, 63, 108, 109, 110, 111,
112, 113, 114, 155, 157, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199,
200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 240, 241,
243, 247, 252, 253, 307, 322, 327, 365, 418, 437, 482, 493, 499, 501, 508, 509,
525, 527, 556, 558, 561, 562, 565, 570, 571, 574, 577, 596, 655, 656, 657, 660,
661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720, 724, 63, 68, 93,
108, 109, 110, 111, 112, 113, 114, 155, 157, 161, 162, 163, 174, 179, 181, 193,
194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365,
373, 374, 382, 384, 391, 401, 418, 421, 437, 441, 482, 488, 491, 493, 499, 501,
508, 509, 525, 527, 556, 557, 558, 561, 562, 565, 570, 571, 574, 577, 585, 607,
655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720,
724, 437, 493, 525, 574, 660, 661, 669, 670, 698, 704, 714, 720, 724, 63, 68,
93, 108, 109, 110, 111, 112, 113, 114, 155, 157, 161, 162, 163, 174, 179, 181,
193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
209, 210, 211, 212, 213, 214, 216, 225, 240, 241, 243, 247, 252, 253, 307, 322,
327, 365, 373, 374, 382, 384, 391, 401, 418, 421, 437, 441, 482, 488, 491, 493,
499, 501, 508, 509, 525, 527, 556, 557, 558, 561, 562, 565, 570, 571, 574, 577,
585, 607, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704,
714, 720, 724, 496, 686, 702, 704, 567, 629, 63, 68, 93, 108, 109, 110, 111,
112, 113, 114, 155, 157, 161, 162, 163, 174, 179, 181, 193, 194, 195, 196, 197,
198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
214, 216, 225, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 373, 374, 382,
384, 391, 401, 418, 421, 437, 441, 482, 488, 491, 493, 499, 501, 508, 509, 525,
527, 556, 557, 558, 561, 562, 565, 570, 571, 574, 577, 585, 607, 655, 656, 657,
660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720, 724, 63, 108,
109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179, 181, 193, 194, 195, 196,
197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 418, 437, 482, 493, 499,
501, 508, 509, 525, 527, 556, 558, 561, 562, 565, 570, 571, 574, 577, 655, 656,
657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720, 724, 56,
373, 330, 372, 437, 525, 574, 704, 720, 437, 493, 525, 574, 660, 661, 669, 670,
698, 704, 714, 720, 724, 63, 68, 93, 108, 109, 110, 111, 112, 113, 114, 155,
157, 161, 162, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 201,
202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 240, 241,
243, 247, 252, 253, 307, 322, 327, 365, 373, 374, 382, 384, 391, 401, 418, 421,
437, 441, 482, 488, 491, 493, 499, 501, 508, 509, 525, 527, 556, 557, 558, 561,
562, 565, 570, 571, 574, 577, 585, 607, 655, 656, 657, 660, 661, 669, 670, 676,
677, 683, 696, 698, 699, 704, 714, 720, 724, 496, 686, 702, 704, 56, 373, 437,
493, 525, 574, 660, 661, 669, 670, 698, 704, 714, 720, 724, 63, 68, 93, 108,
109, 110, 111, 112, 113, 114, 155, 157, 161, 162, 163, 174, 179, 181, 193, 194,
195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 373,
374, 382, 384, 391, 401, 418, 421, 437, 441, 482, 488, 491, 493, 499, 501, 508,
509, 525, 527, 556, 557, 558, 561, 562, 565, 570, 571, 574, 577, 585, 607, 655,
656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720, 724,
684, 56, 373, 9, 373, 391, 373, 21, 55, 330, 372, 63, 108, 109, 110, 111,
112, 113, 114, 155, 157, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199,
200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 240, 241,
243, 247, 252, 253, 307, 322, 327, 365, 418, 428, 437, 482, 493, 499, 501, 508,
509, 525, 527, 556, 558, 561, 562, 565, 570, 571, 574, 577, 655, 656, 657, 660,
661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720, 724, 567, 627, 63,
68, 93, 108, 109, 110, 111, 112, 113, 114, 155, 157, 161, 162, 163, 174, 179,
181, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
208, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322,
327, 365, 373, 374, 382, 384, 391, 401, 418, 421, 437, 441, 482, 488, 491, 493,
499, 501, 508, 509, 525, 527, 556, 557, 558, 561, 562, 565, 570, 571, 574, 577,
585, 607, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704,
714, 720, 724, 437, 493, 525, 574, 660, 661, 669, 670, 698, 704, 714, 720, 724,
437, 493, 525, 574, 660, 661, 669, 670, 698, 704, 714, 720, 724, 437, 493, 525,
574, 660, 661, 669, 670, 698, 704, 714, 720, 724, 437, 493, 525, 574, 660, 661,
669, 670, 698, 704, 714, 720, 724, 373, 658, 63, 68, 93, 108, 109, 110, 111,
112, 113, 114, 155, 157, 161, 162, 163, 174, 179, 181, 193, 194, 195, 196, 197,
198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
214, 216, 225, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 373, 374, 382,
384, 391, 401, 418, 421, 437, 441, 482, 488, 491, 493, 499, 501, 508, 509, 525,
527, 556, 557, 558, 561, 562, 565, 570, 571, 574, 577, 585, 607, 655, 656, 657,
660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720, 724, 56, 373,
21, 55, 330, 372, 130, 280, 281, 437, 493, 525, 574, 660, 661, 669, 670, 698,
704, 714, 720, 724, 63, 68, 93, 108, 109, 110, 111, 112, 113, 114, 155, 157,
161, 162, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 225, 240, 241,
243, 247, 252, 253, 307, 322, 327, 365, 373, 374, 382, 384, 391, 401, 418, 421,
437, 441, 482, 488, 491, 493, 499, 501, 508, 509, 525, 527, 556, 557, 558, 561,
562, 565, 570, 571, 574, 577, 585, 607, 655, 656, 657, 660, 661, 669, 670, 676,
677, 683, 696, 698, 699, 704, 714, 720, 724, 2, 11, 73, 21, 55, 63, 108,
109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179, 181, 193, 194, 195, 196,
197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 330, 355, 365, 372, 418, 437,
482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562, 565, 570, 571, 574,
577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714,
720, 724, 63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179, 181,
193, 194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210,
211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 418,
437, 482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562, 565, 570, 571,
574, 577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704,
714, 720, 724, 63, 68, 93, 108, 109, 110, 111, 112, 113, 114, 155, 157, 161,
162, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 247,
252, 253, 307, 322, 327, 365, 373, 374, 382, 384, 391, 401, 418, 421, 437, 441,
482, 488, 491, 493, 499, 501, 508, 509, 525, 527, 556, 557, 558, 561, 562, 565,
570, 571, 574, 577, 585, 607, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683,
696, 698, 699, 704, 714, 720, 724, 405, 409, 174, 240, 322, 344, 577, 676, 677,
21, 55, 330, 372, 344, 21, 55, 330, 372, 21, 55, 330, 372, 21, 55, 330,
372, 21, 55, 330, 372, 174, 240, 322, 344, 577, 676, 677, 9, 437, 493, 525,
574, 660, 661, 669, 670, 698, 704, 714, 720, 724, 63, 68, 93, 108, 109, 110,
111, 112, 113, 114, 155, 157, 161, 162, 163, 174, 179, 181, 193, 194, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
213, 214, 216, 225, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 373, 374,
382, 384, 391, 401, 418, 421, 437, 441, 482, 488, 491, 493, 499, 501, 508, 509,
525, 527, 556, 557, 558, 561, 562, 565, 570, 571, 574, 577, 585, 607, 655, 656,
657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720, 724, 21,
55, 330, 372, 63, 68, 93, 108, 109, 110, 111, 112, 113, 114, 155, 157, 161,
162, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 225, 240, 241, 243,
247, 252, 253, 307, 322, 327, 365, 373, 374, 382, 384, 391, 401, 418, 421, 437,
441, 482, 488, 491, 493, 499, 501, 508, 509, 525, 527, 556, 557, 558, 561, 562,
565, 570, 571, 574, 577, 585, 607, 655, 656, 657, 660, 661, 669, 670, 676, 677,
683, 696, 698, 699, 704, 714, 720, 724, 63, 108, 109, 110, 111, 112, 113, 114,
155, 157, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204,
205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252,
253, 307, 322, 327, 365, 418, 437, 482, 493, 499, 501, 508, 509, 525, 527, 556,
558, 561, 562, 565, 570, 571, 574, 577, 655, 656, 657, 660, 661, 669, 670, 676,
677, 683, 696, 698, 699, 704, 714, 720, 724, 21, 55, 330, 372, 63, 68, 93,
108, 109, 110, 111, 112, 113, 114, 155, 157, 161, 162, 163, 174, 179, 181, 193,
194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365,
373, 374, 382, 384, 391, 401, 418, 421, 437, 441, 482, 488, 491, 493, 499, 501,
508, 509, 525, 527, 556, 557, 558, 561, 562, 565, 570, 571, 574, 577, 585, 607,
655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720,
724, 56, 373, 437, 493, 525, 574, 660, 661, 669, 670, 698, 704, 714, 720, 724,
63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179, 181, 193, 194,
195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 405, 418, 422,
437, 481, 482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562, 565, 570,
571, 574, 577, 596, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698,
699, 704, 714, 720, 724, 437, 493, 525, 574, 660, 661, 669, 670, 698, 704, 714,
720, 724, 63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179, 181,
193, 194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210,
211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 418,
428, 437, 482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562, 565, 570,
571, 574, 577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699,
704, 714, 720, 724, 437, 493, 525, 574, 660, 661, 669, 670, 698, 704, 714, 720,
724, 63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179, 181, 193,
194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211,
212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 418, 437,
482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562, 565, 570, 571, 574,
577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714,
720, 724, 63, 68, 93, 108, 109, 110, 111, 112, 113, 114, 155, 157, 161, 162,
163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 225, 240, 241, 243, 247,
252, 253, 307, 322, 327, 365, 373, 374, 382, 384, 391, 401, 418, 421, 437, 441,
482, 488, 491, 493, 499, 501, 508, 509, 525, 527, 556, 557, 558, 561, 562, 565,
570, 571, 574, 577, 585, 607, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683,
696, 698, 699, 704, 714, 720, 724, 63, 68, 93, 108, 109, 110, 111, 112, 113,
114, 155, 157, 161, 162, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199,
200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216,
225, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 373, 374, 382, 384, 391,
401, 418, 421, 437, 441, 482, 488, 491, 493, 499, 501, 508, 509, 525, 527, 556,
557, 558, 561, 562, 565, 570, 571, 574, 577, 585, 607, 655, 656, 657, 660, 661,
669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720, 724, 63, 108, 109, 110,
111, 112, 113, 114, 155, 157, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198,
199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 240,
241, 243, 247, 252, 253, 307, 322, 327, 365, 418, 437, 482, 493, 499, 501, 508,
509, 525, 527, 556, 558, 561, 562, 565, 570, 571, 574, 577, 655, 656, 657, 660,
661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720, 724, 21, 55, 330,
372, 437, 493, 525, 574, 660, 661, 669, 670, 698, 704, 714, 720, 724, 63, 68,
93, 108, 109, 110, 111, 112, 113, 114, 155, 157, 161, 162, 163, 174, 179, 181,
193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
209, 210, 211, 212, 213, 214, 216, 225, 240, 241, 243, 247, 252, 253, 307, 322,
327, 365, 373, 374, 382, 384, 391, 401, 418, 421, 437, 441, 482, 488, 491, 493,
499, 501, 508, 509, 525, 527, 556, 557, 558, 561, 562, 565, 570, 571, 574, 577,
585, 607, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704,
714, 720, 724, 0, 3, 59, 437, 493, 525, 574, 660, 661, 669, 670, 698, 704,
714, 720, 724, 21, 55, 330, 372, 63, 68, 93, 108, 109, 110, 111, 112, 113,
114, 155, 157, 161, 162, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199,
200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216,
240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 373, 374, 382, 384, 391, 401,
418, 421, 437, 441, 482, 488, 491, 493, 499, 501, 508, 509, 525, 527, 556, 557,
558, 561, 562, 565, 570, 571, 574, 577, 585, 607, 655, 656, 657, 660, 661, 669,
670, 676, 677, 683, 696, 698, 699, 704, 714, 720, 724, 21, 55, 330, 372, 437,
493, 525, 555, 574, 660, 661, 669, 670, 698, 704, 714, 720, 724, 28, 159, 218,
226, 229, 232, 241, 365, 399, 406, 434, 437, 452, 456, 482, 490, 493, 502, 503,
504, 525, 574, 588, 597, 599, 603, 604, 624, 625, 646, 660, 661, 662, 669, 670,
698, 704, 714, 720, 723, 724, 152, 313, 331, 351, 356, 360, 365, 389, 524, 544,
591, 595, 678, 691, 701, 2, 11, 12, 37, 73, 82, 121, 148, 160, 165, 223,
291, 293, 296, 299, 302, 332, 357, 366, 386, 389, 398, 426, 435, 453, 485, 486,
487, 511, 532, 533, 534, 537, 545, 575, 592, 653, 675, 34, 62, 74, 154, 237,
261, 262, 315, 547, 594, 36, 63, 86, 98, 102, 105, 108, 109, 110, 111, 112,
113, 114, 118, 155, 157, 158, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198,
199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 221,
240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 404, 418, 434, 436, 437, 445,
452, 482, 490, 493, 494, 495, 497, 498, 499, 500, 501, 503, 505, 506, 508, 509,
513, 525, 526, 527, 554, 556, 558, 561, 562, 565, 570, 571, 574, 577, 609, 624,
632, 648, 649, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699,
704, 714, 720, 724, 139, 165, 166, 239, 244, 245, 246, 257, 309, 345, 457, 530,
546, 549, 593, 619, 620, 622, 635, 636, 638, 639, 654, 680, 692, 693, 697, 707,
712, 6, 28, 32, 58, 82, 117, 118, 142, 164, 289, 369, 430, 454, 511, 513,
554, 632, 34, 74, 140, 179, 222, 237, 243, 254, 261, 263, 290, 298, 301, 314,
315, 347, 352, 432, 443, 455, 549, 576, 608, 614, 713, 33, 141, 149, 150, 151,
286, 510, 538, 700, 716, 6, 58, 234, 292, 297, 300, 303, 385, 406, 432, 437,
443, 455, 489, 492, 493, 518, 519, 522, 525, 531, 559, 560, 564, 566, 574, 588,
597, 599, 603, 612, 616, 641, 645, 660, 661, 669, 670, 681, 695, 698, 704, 714,
720, 724, 63, 108, 109, 110, 111, 112, 113, 114, 128, 155, 157, 163, 174, 179,
181, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209,
210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 272, 273, 307, 322,
327, 365, 418, 428, 437, 482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561,
562, 565, 570, 571, 574, 577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683,
696, 698, 699, 704, 714, 720, 724, 63, 108, 109, 110, 111, 112, 113, 114, 128,
155, 157, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204,
205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252,
253, 272, 273, 307, 322, 327, 365, 418, 428, 437, 482, 493, 499, 501, 508, 509,
525, 527, 556, 558, 561, 562, 565, 570, 571, 574, 577, 655, 656, 657, 660, 661,
669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720, 724, 127, 144, 158, 165,
244, 245, 270, 271, 274, 275, 405, 410, 412, 413, 422, 425, 428, 450, 526, 548,
552, 615, 127, 270, 271, 428, 127, 270, 271, 428, 132, 283, 428, 134, 285, 428,
133, 284, 428, 63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179,
181, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209,
210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365,
418, 428, 437, 482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562, 565,
570, 571, 574, 577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698,
699, 704, 714, 720, 724, 63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163,
174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207,
208, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322,
327, 365, 376, 418, 428, 437, 482, 493, 499, 501, 508, 509, 525, 527, 556, 558,
561, 562, 565, 570, 571, 574, 577, 655, 656, 657, 660, 661, 669, 670, 676, 677,
683, 696, 698, 699, 704, 714, 720, 724, 7, 125, 387, 431, 442, 515, 130, 280,
281, 428, 130, 280, 281, 428, 136, 63, 108, 109, 110, 111, 112, 113, 114, 118,
155, 157, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204,
205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252,
253, 307, 322, 327, 365, 418, 428, 437, 482, 493, 499, 501, 508, 509, 513, 525,
527, 554, 556, 558, 561, 562, 565, 570, 571, 574, 577, 632, 655, 656, 657, 660,
661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720, 724, 63, 108, 109,
110, 111, 112, 113, 114, 118, 155, 157, 163, 174, 179, 181, 193, 194, 195, 196,
197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 418, 428, 437, 482, 493,
499, 501, 508, 509, 513, 525, 527, 554, 556, 558, 561, 562, 565, 570, 571, 574,
577, 632, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704,
714, 720, 724, 135, 287, 136, 129, 276, 277, 278, 279, 428, 129, 276, 277, 278,
279, 428, 131, 282, 428, 131, 282, 428, 130, 280, 281, 428, 130, 280, 281, 428,
125, 515, 125, 515, 125, 515, 125, 515, 125, 515, 125, 515, 125, 515, 125, 515,
125, 515, 125, 515, 118, 513, 554, 632, 123, 0, 0, 59, 0, 59, 2, 73,
2, 73, 2, 11, 73, 291, 293, 296, 299, 302, 332, 357, 386, 389, 426, 485,
486, 487, 532, 533, 534, 537, 545, 592, 653, 675, 21, 55, 330, 372, 21, 330,
234, 292, 297, 300, 303, 63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163,
174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207,
208, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322,
327, 365, 418, 437, 482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562,
565, 570, 571, 574, 577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696,
698, 699, 704, 714, 720, 724, 1, 8, 9, 26, 60, 62, 68, 93, 154, 161,
162, 201, 202, 217, 228, 231, 328, 373, 374, 382, 384, 391, 401, 405, 421, 425,
441, 488, 491, 557, 585, 607, 663, 1, 63, 67, 69, 70, 71, 108, 109, 110,
111, 112, 113, 114, 144, 155, 156, 157, 163, 173, 174, 175, 178, 179, 181, 193,
194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211,
212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 350, 365, 373,
405, 410, 411, 412, 414, 418, 422, 425, 437, 450, 482, 483, 493, 496, 499, 501,
508, 509, 512, 525, 527, 528, 543, 548, 552, 556, 558, 561, 562, 565, 570, 571,
574, 577, 590, 615, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 688, 696,
698, 699, 704, 714, 720, 724, 68, 93, 161, 162, 201, 202, 373, 374, 382, 384,
391, 401, 421, 441, 488, 491, 557, 585, 607, 663, 68, 93, 161, 162, 201, 202,
373, 374, 382, 384, 391, 401, 421, 441, 488, 491, 557, 585, 607, 63, 68, 93,
108, 109, 110, 111, 112, 113, 114, 155, 157, 161, 162, 163, 174, 179, 181, 193,
194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365,
373, 374, 382, 384, 391, 401, 418, 421, 437, 441, 482, 488, 491, 493, 499, 501,
508, 509, 525, 527, 556, 557, 558, 561, 562, 565, 570, 571, 574, 577, 585, 607,
655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720,
724, 68, 93, 161, 162, 201, 202, 373, 374, 382, 384, 391, 401, 421, 441, 488,
491, 557, 585, 607, 68, 93, 161, 162, 201, 202, 373, 374, 382, 384, 391, 401,
421, 441, 488, 491, 557, 585, 607, 68, 93, 161, 162, 201, 202, 373, 374, 382,
384, 391, 401, 421, 441, 488, 491, 557, 585, 607, 437, 525, 556, 570, 574, 704,
720, 63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179, 181, 193,
194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211,
212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 418, 437,
482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562, 565, 570, 571, 574,
577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714,
720, 724, 148, 160, 366, 511, 108, 121, 148, 160, 165, 223, 366, 398, 511, 575,
63, 68, 93, 108, 109, 110, 111, 112, 113, 114, 155, 157, 161, 162, 163, 174,
179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
207, 208, 209, 210, 211, 212, 213, 214, 216, 225, 240, 241, 243, 247, 252, 253,
307, 322, 327, 365, 373, 374, 382, 384, 391, 401, 418, 421, 437, 441, 482, 488,
491, 493, 499, 501, 508, 509, 525, 527, 556, 557, 558, 561, 562, 565, 570, 571,
574, 577, 585, 607, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698,
699, 704, 714, 720, 724, 174, 240, 577, 676, 677, 174, 240, 322, 577, 676, 677,
63, 108, 155, 157, 163, 174, 179, 193, 213, 216, 240, 241, 243, 252, 253, 307,
322, 327, 365, 418, 482, 499, 501, 527, 558, 561, 562, 565, 570, 571, 577, 655,
656, 676, 677, 683, 699, 63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163,
174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207,
208, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322,
327, 365, 418, 437, 482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562,
565, 570, 571, 574, 577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696,
698, 699, 704, 714, 720, 724, 63, 108, 109, 110, 111, 112, 113, 114, 155, 157,
163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206,
207, 208, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253, 307,
322, 327, 365, 418, 437, 482, 493, 499, 501, 508, 509, 525, 527, 556, 558, 561,
562, 565, 570, 571, 574, 577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683,
696, 698, 699, 704, 714, 720, 724, 63, 108, 109, 110, 111, 112, 113, 114, 155,
157, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204, 205,
206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252, 253,
307, 322, 327, 365, 418, 437, 482, 493, 499, 501, 508, 509, 525, 527, 556, 558,
561, 562, 565, 570, 571, 574, 577, 655, 656, 657, 660, 661, 669, 670, 676, 677,
683, 696, 698, 699, 704, 714, 720, 724, 155, 179, 243, 174, 240, 577, 676, 677,
63, 108, 109, 110, 111, 112, 113, 114, 155, 157, 163, 174, 179, 181, 193, 194,
195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
213, 214, 216, 240, 241, 243, 247, 252, 253, 307, 322, 327, 365, 418, 437, 482,
493, 499, 501, 508, 509, 525, 527, 556, 558, 561, 562, 565, 570, 571, 574, 577,
655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704, 714, 720,
724, 366, 399, 159, 241, 365, 399, 482, 63, 108, 109, 110, 111, 112, 113, 114,
155, 157, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 203, 204,
205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 247, 252,
253, 307, 322, 327, 365, 418, 437, 482, 493, 499, 501, 508, 509, 525, 527, 556,
558, 561, 562, 565, 570, 571, 574, 577, 655, 656, 657, 660, 661, 669, 670, 676,
677, 683, 696, 698, 699, 704, 714, 720, 724, 63, 108, 109, 110, 111, 112, 113,
114, 155, 157, 163, 174, 179, 181, 193, 194, 195, 196, 197, 198, 199, 200, 203,
204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 247,
252, 253, 307, 322, 327, 365, 418, 437, 482, 493, 499, 501, 508, 509, 525, 527,
556, 558, 561, 562, 565, 570, 571, 574, 577, 655, 656, 657, 660, 661, 669, 670,
676, 677, 683, 696, 698, 699, 704, 714, 720, 724, 63, 108, 155, 157, 163, 174,
179, 193, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
213, 214, 216, 240, 241, 243, 252, 253, 307, 322, 327, 365, 418, 482, 499, 501,
527, 558, 561, 562, 565, 570, 571, 577, 655, 656, 676, 677, 683, 699, 63, 108,
155, 157, 163, 174, 179, 193, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210,
211, 212, 213, 214, 216, 240, 241, 243, 252, 253, 307, 322, 327, 365, 418, 482,
499, 501, 527, 558, 561, 562, 565, 570, 571, 577, 655, 656, 676, 677, 683, 699,
63, 108, 155, 157, 163, 174, 179, 193, 203, 204, 205, 206, 207, 208, 209, 210,
211, 212, 213, 214, 216, 240, 241, 243, 252, 253, 307, 322, 327, 365, 418, 482,
499, 501, 527, 558, 561, 562, 565, 570, 571, 577, 655, 656, 676, 677, 683, 699,
63, 108, 155, 157, 163, 174, 179, 193, 207, 208, 209, 210, 211, 212, 213, 214,
216, 240, 241, 243, 252, 253, 307, 322, 327, 365, 418, 482, 499, 501, 527, 558,
561, 562, 565, 570, 571, 577, 655, 656, 676, 677, 683, 699, 63, 108, 155, 157,
163, 174, 179, 193, 209, 210, 211, 212, 213, 214, 216, 240, 241, 243, 252, 253,
307, 322, 327, 365, 418, 482, 499, 501, 527, 558, 561, 562, 565, 570, 571, 577,
655, 656, 676, 677, 683, 699, 63, 108, 155, 157, 163, 174, 179, 193, 210, 211,
212, 213, 214, 216, 240, 241, 243, 252, 253, 307, 322, 327, 365, 418, 482, 499,
501, 527, 558, 561, 562, 565, 570, 571, 577, 655, 656, 676, 677, 683, 699, 63,
108, 155, 157, 163, 174, 179, 193, 211, 212, 213, 214, 216, 240, 241, 243, 252,
253, 307, 322, 327, 365, 418, 482, 499, 501, 527, 558, 561, 562, 565, 570, 571,
577, 655, 656, 676, 677, 683, 699, 63, 108, 155, 157, 163, 174, 179, 193, 212,
213, 214, 216, 240, 241, 243, 252, 253, 307, 322, 327, 365, 418, 482, 499, 501,
527, 558, 561, 562, 565, 570, 571, 577, 655, 656, 676, 677, 683, 699, 63, 108,
155, 157, 163, 174, 179, 193, 213, 214, 216, 240, 241, 243, 252, 253, 307, 322,
327, 365, 418, 482, 499, 501, 527, 558, 561, 562, 565, 570, 571, 577, 655, 656,
676, 677, 683, 699, 63, 108, 155, 157, 163, 174, 179, 193, 213, 216, 240, 241,
243, 252, 253, 307, 322, 327, 365, 418, 482, 499, 501, 527, 558, 561, 562, 565,
570, 571, 577, 655, 656, 676, 677, 683, 699, 63, 108, 155, 157, 163, 174, 179,
193, 213, 216, 240, 241, 243, 252, 253, 307, 322, 327, 365, 418, 482, 499, 501,
527, 558, 561, 562, 565, 570, 571, 577, 655, 656, 676, 677, 683, 699, 63, 108,
155, 157, 163, 174, 179, 193, 213, 216, 240, 241, 243, 252, 253, 307, 322, 327,
365, 418, 437, 482, 493, 499, 501, 525, 527, 556, 558, 561, 562, 565, 570, 571,
574, 577, 655, 656, 657, 660, 661, 669, 670, 676, 677, 683, 696, 698, 699, 704,
714, 720, 724, 125, 515, 418, 527, 558, 699, 437, 525, 574, 704, 720, 437, 525,
556, 570, 574, 704, 720, 437, 525, 574, 704, 720, 437, 493, 525, 574, 660, 661,
669, 670, 698, 704, 714, 720, 724, 406, 437, 490, 493, 502, 503, 504, 525, 574,
588, 597, 599, 603, 624, 625, 660, 661, 669, 670, 698, 704, 714, 720, 723, 724,
437, 493, 525, 556, 574, 657, 660, 661, 669, 670, 696, 698, 704, 714, 720, 724,
662, 556, 556, 499, 501, 656, 696, 556, 696, 437, 493, 525, 574, 660, 661, 669,
670, 698, 704, 714, 720, 724, 570, 437, 437, 704, 405, 425, 512, 410, 552, 410,
528, 552, 686, 686, 686, 702, 686, 702, 704, 686, 702, 704, 567, 567, 567, 627,
567, 567, 629, 567, 629, 688, 2, 11, 73, 0, 3, 59, 2, 11, 73, 2,
11, 73, 291, 302, 332, 2, 11, 73, 291, 302, 332, 2, 11, 73, 291, 302,
332, 2, 11, 73, 291, 302, 332, 2, 11, 73, 291, 302, 332, 2, 11, 73,
291, 302, 332, 2, 11, 73, 291, 293, 296, 299, 302, 332, 357, 386, 389, 426,
485, 486, 487, 532, 533, 534, 537, 545, 592, 653, 675, 21, 330, 141, 141, 218,
217, 228, 231, 291, 302, 291, 302, 291, 302, 332, 291, 302, 332, 291, 302, 332,
291, 302, 332, 291, 302, 332, 291, 302, 332, 291, 302, 332, 291, 302, 332, 291,
302, 332, 291, 302, 332, 330, 405, 425, 483, 512, 241, 365, 482, 405, 425, 293,
426, 486, 533, 293, 426, 486, 487, 533, 534, 406, 588, 597, 599, 603, 293, 426,
486, 487, 533, 534, 293, 386, 426, 486, 487, 533, 534, 293, 386, 426, 486, 487,
533, 534, 344, 344, 344, 485, 537, 653, 485, 537, 545, 653, 545, 405, 373, 373,
373, 488, 585, 607, 405, 428, 373, 538, 538, 330, 330, 151, 151, 232, 179, 222,
243, 179, 222, 243, 241, 241, 150, 150, 229, 299, 299, 299, 357, 355, 355, 532,
675, 422, 532, 592, 675, 592, 149, 149, 226, 296, 296, 296, 389, 2, 11, 12,
37, 73, 291, 293, 296, 299, 302, 332, 357, 386, 389, 426, 485, 486, 487, 532,
533, 534, 537, 545, 592, 653, 675, 9, 9, 60, 9, 60, 62, 154, 9, 60,
62, 154, 36, 36, 63, 63,
};
private static final short[] lapg_sym_to = new short[] {
730, 5, 27, 29, 57, 27, 27, 27, 77, 77, 27, 77, 77, 77, 27, 77,
77, 77, 77, 77, 77, 77, 77, 27, 77, 77, 77, 27, 27, 77, 77, 77,
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 27, 27, 77, 77,
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 27, 27, 27, 77, 77,
77, 77, 77, 77, 77, 77, 77, 27, 77, 77, 5, 27, 27, 27, 27, 27,
427, 77, 77, 77, 77, 77, 27, 77, 427, 77, 27, 77, 539, 77, 77, 27,
27, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 539, 77, 77, 77, 77,
27, 77, 77, 77, 77, 77, 77, 77, 77, 27, 77, 27, 77, 77, 77, 77,
77, 77, 27, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
78, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 40, 40, 40, 40, 201, 201, 201, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 648, 82, 82, 82, 82,
82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83,
83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
83, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 558, 699, 699, 699, 624, 624, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 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, 86, 86, 86, 86, 86, 86, 86, 86,
86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 490, 86, 490, 86,
86, 86, 86, 490, 86, 86, 86, 86, 86, 86, 86, 86, 490, 86, 86, 86,
86, 490, 490, 490, 490, 86, 86, 86, 86, 490, 86, 490, 490, 490, 490, 67,
67, 370, 400, 491, 491, 491, 491, 491, 492, 492, 492, 492, 492, 492, 492, 492,
492, 492, 492, 492, 492, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
87, 87, 87, 87, 87, 87, 87, 87, 87, 559, 700, 700, 700, 68, 68, 493,
493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 88, 88, 88, 88,
88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
698, 69, 69, 30, 401, 421, 402, 41, 41, 371, 41, 89, 89, 89, 89, 89,
89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
89, 89, 89, 89, 89, 89, 89, 89, 89, 458, 89, 89, 89, 89, 89, 89,
89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 625, 625, 90,
90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
90, 90, 90, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494,
495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 496, 496, 496,
496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 497, 497, 497, 497, 497, 497,
497, 497, 497, 497, 497, 497, 497, 403, 683, 91, 91, 91, 91, 91, 91, 91,
91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 70, 70,
42, 42, 42, 42, 202, 202, 202, 498, 498, 498, 498, 498, 498, 498, 498, 498,
498, 498, 498, 498, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
92, 92, 92, 92, 92, 92, 92, 92, 92, 8, 8, 8, 43, 43, 93, 93,
93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 43, 390, 93, 43, 93, 93,
93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
93, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 428, 441, 252, 252, 252, 379, 252, 252, 252,
44, 44, 44, 44, 380, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47,
47, 48, 48, 48, 48, 253, 253, 253, 381, 253, 253, 253, 31, 499, 499, 499,
499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 96, 96, 96, 96, 96, 96,
96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 49,
49, 49, 49, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 98,
98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
98, 98, 98, 98, 98, 98, 98, 98, 98, 50, 50, 50, 50, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 71, 71, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500,
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 429, 100, 451,
100, 540, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
100, 100, 100, 649, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
100, 100, 100, 100, 100, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501,
501, 501, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
459, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
101, 101, 101, 101, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502,
502, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
103, 103, 103, 103, 103, 103, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104,
104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 503, 105, 503, 105, 105, 105,
105, 503, 105, 105, 105, 105, 105, 105, 105, 105, 503, 105, 105, 105, 105, 503,
503, 503, 503, 105, 105, 105, 105, 503, 105, 503, 503, 503, 503, 51, 51, 51,
51, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 106, 106,
106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
106, 106, 106, 1, 1, 1, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505,
505, 505, 505, 52, 52, 52, 52, 107, 107, 107, 107, 107, 107, 107, 107, 107,
107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 53, 53, 53, 53, 506,
506, 506, 609, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 59, 241, 291,
296, 299, 302, 241, 241, 241, 437, 485, 437, 532, 537, 241, 437, 437, 437, 437,
437, 437, 437, 437, 437, 437, 437, 653, 437, 437, 675, 437, 437, 686, 437, 437,
437, 437, 437, 437, 437, 437, 234, 364, 377, 388, 393, 395, 396, 419, 583, 600,
642, 647, 694, 708, 718, 9, 9, 9, 9, 9, 155, 179, 222, 243, 222, 222,
9, 9, 9, 9, 9, 9, 9, 222, 9, 9, 222, 9, 487, 534, 9, 9,
9, 222, 9, 9, 9, 9, 9, 222, 9, 9, 9, 61, 75, 153, 235, 306,
324, 325, 366, 604, 646, 63, 108, 157, 161, 162, 163, 108, 108, 108, 108, 108,
108, 108, 174, 108, 108, 240, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 293,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 426, 108, 486, 488, 108, 530,
533, 108, 157, 108, 556, 557, 561, 562, 108, 565, 108, 163, 570, 571, 108, 108,
577, 108, 585, 108, 577, 108, 108, 108, 108, 108, 108, 108, 108, 108, 655, 663,
174, 676, 677, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
108, 108, 108, 108, 215, 247, 250, 308, 316, 317, 318, 323, 363, 385, 538, 588,
603, 606, 645, 660, 661, 662, 669, 670, 671, 672, 679, 695, 709, 710, 714, 723,
724, 24, 24, 24, 24, 156, 173, 175, 24, 173, 24, 24, 481, 535, 173, 175,
175, 175, 62, 154, 216, 260, 260, 307, 260, 322, 307, 326, 328, 328, 328, 365,
307, 386, 389, 483, 528, 483, 607, 483, 528, 657, 657, 60, 217, 225, 228, 231,
327, 574, 596, 717, 726, 25, 72, 304, 304, 304, 304, 304, 415, 438, 484, 507,
529, 536, 550, 553, 507, 580, 581, 582, 507, 589, 617, 618, 621, 623, 507, 438,
438, 438, 438, 656, 659, 673, 674, 507, 507, 507, 507, 696, 711, 507, 507, 507,
507, 507, 109, 109, 109, 109, 109, 109, 109, 109, 197, 109, 109, 109, 109, 109,
109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 197, 197, 109, 109,
109, 109, 109, 460, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
109, 109, 109, 109, 109, 109, 109, 110, 110, 110, 110, 110, 110, 110, 110, 198,
110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
110, 198, 198, 110, 110, 110, 110, 110, 461, 110, 110, 110, 110, 110, 110, 110,
110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 194, 220, 220, 248,
220, 220, 194, 194, 220, 220, 220, 220, 220, 220, 220, 220, 462, 220, 220, 220,
220, 220, 195, 195, 195, 463, 196, 196, 196, 464, 209, 209, 465, 211, 211, 466,
210, 210, 467, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
111, 468, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
111, 111, 111, 111, 111, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
112, 112, 411, 112, 469, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
112, 112, 112, 112, 112, 112, 112, 112, 26, 182, 418, 482, 527, 182, 203, 203,
203, 470, 204, 204, 204, 471, 213, 113, 113, 113, 113, 113, 113, 113, 113, 176,
113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
113, 113, 113, 113, 113, 113, 472, 508, 113, 508, 113, 113, 113, 113, 578, 508,
113, 578, 508, 113, 113, 113, 113, 113, 113, 508, 113, 176, 113, 113, 508, 508,
508, 508, 508, 113, 113, 113, 508, 508, 113, 508, 508, 508, 508, 114, 114, 114,
114, 114, 114, 114, 114, 177, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 473, 509, 114, 509,
114, 114, 114, 114, 579, 509, 114, 579, 509, 114, 114, 114, 114, 114, 114, 509,
114, 177, 114, 114, 509, 509, 509, 509, 509, 114, 114, 114, 509, 509, 114, 509,
509, 509, 509, 212, 212, 214, 199, 199, 199, 199, 199, 474, 200, 200, 200, 200,
200, 475, 207, 207, 476, 208, 208, 477, 205, 205, 205, 478, 206, 206, 206, 479,
183, 183, 184, 184, 185, 185, 186, 186, 187, 187, 188, 188, 189, 189, 190, 190,
191, 191, 192, 192, 178, 178, 178, 178, 181, 729, 2, 73, 3, 3, 10, 152,
11, 11, 12, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 54, 66, 54, 66, 55, 372,
305, 343, 354, 359, 361, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
115, 115, 115, 115, 115, 115, 6, 28, 32, 58, 32, 32, 142, 142, 32, 142,
142, 142, 142, 289, 289, 289, 369, 142, 142, 142, 142, 142, 142, 430, 142, 454,
142, 142, 142, 142, 142, 142, 142, 7, 116, 141, 149, 150, 151, 116, 116, 116,
116, 116, 116, 116, 221, 116, 238, 116, 116, 251, 116, 258, 259, 116, 116, 116,
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 387, 116, 404,
431, 442, 445, 446, 447, 116, 452, 431, 510, 531, 116, 431, 116, 560, 116, 116,
116, 116, 431, 510, 116, 442, 599, 605, 442, 116, 116, 116, 116, 116, 116, 116,
510, 116, 641, 658, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 706, 116,
116, 116, 510, 116, 510, 116, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
143, 143, 143, 143, 143, 143, 143, 143, 143, 688, 144, 158, 244, 245, 274, 275,
405, 410, 412, 413, 422, 425, 450, 526, 548, 552, 615, 548, 548, 117, 145, 145,
164, 117, 117, 117, 117, 117, 117, 117, 117, 145, 145, 117, 117, 117, 117, 117,
117, 117, 117, 117, 117, 117, 117, 145, 145, 117, 117, 117, 117, 117, 117, 117,
117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
145, 145, 145, 145, 145, 145, 117, 145, 511, 145, 117, 145, 145, 117, 117, 117,
117, 117, 511, 117, 511, 145, 117, 117, 117, 117, 511, 117, 511, 117, 145, 145,
117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 511, 117, 511,
117, 146, 159, 146, 146, 146, 146, 146, 146, 146, 414, 146, 146, 146, 146, 146,
146, 146, 146, 146, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
147, 147, 147, 147, 147, 147, 147, 148, 160, 148, 148, 148, 148, 148, 148, 148,
148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 512, 512, 512, 512, 512, 512,
512, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 513,
118, 554, 118, 118, 118, 118, 513, 118, 513, 118, 118, 118, 118, 632, 118, 513,
118, 118, 118, 554, 554, 554, 554, 554, 118, 118, 118, 554, 554, 118, 513, 554,
513, 554, 223, 223, 398, 575, 165, 180, 224, 224, 249, 294, 224, 294, 224, 294,
119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
119, 119, 119, 119, 119, 119, 119, 119, 119, 295, 119, 119, 119, 119, 119, 119,
119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
119, 119, 119, 119, 119, 254, 254, 254, 254, 254, 255, 255, 367, 255, 255, 255,
120, 166, 236, 239, 246, 256, 236, 265, 286, 288, 256, 310, 236, 320, 321, 362,
256, 368, 310, 448, 310, 563, 563, 448, 448, 619, 620, 622, 633, 636, 256, 680,
563, 256, 256, 697, 448, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
122, 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123,
123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
123, 123, 123, 123, 123, 123, 123, 123, 237, 261, 315, 257, 309, 638, 692, 693,
124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 514, 124,
514, 124, 124, 124, 124, 514, 124, 514, 124, 124, 124, 124, 124, 124, 514, 124,
124, 124, 514, 514, 514, 514, 514, 124, 124, 124, 514, 514, 124, 514, 514, 514,
514, 399, 423, 242, 311, 311, 424, 311, 125, 125, 167, 168, 169, 170, 171, 172,
125, 125, 125, 125, 125, 264, 125, 266, 267, 268, 269, 269, 269, 269, 269, 269,
269, 269, 269, 269, 269, 269, 269, 269, 125, 269, 125, 125, 125, 125, 319, 125,
125, 125, 125, 125, 125, 125, 515, 125, 515, 125, 125, 572, 573, 515, 125, 515,
125, 125, 125, 125, 125, 125, 515, 125, 125, 125, 515, 515, 515, 515, 515, 125,
125, 125, 515, 515, 125, 515, 515, 515, 515, 126, 126, 126, 126, 126, 126, 126,
126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127,
127, 127, 270, 271, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, 128,
128, 128, 128, 128, 128, 128, 272, 273, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
129, 129, 129, 129, 129, 129, 129, 129, 276, 277, 278, 279, 129, 129, 129, 129,
129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
130, 130, 130, 130, 130, 130, 130, 130, 280, 281, 130, 130, 130, 130, 130, 130,
130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 131, 131, 131, 131,
131, 131, 131, 131, 282, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
131, 131, 131, 131, 131, 131, 132, 132, 132, 132, 132, 132, 132, 132, 283, 132,
132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 133,
133, 133, 133, 133, 133, 133, 133, 284, 133, 133, 133, 133, 133, 133, 133, 133,
133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
133, 133, 133, 133, 133, 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, 285,
134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 135,
135, 135, 135, 135, 135, 135, 135, 287, 135, 135, 135, 135, 135, 135, 135, 135,
135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
135, 135, 135, 135, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
136, 136, 136, 136, 136, 136, 136, 136, 136, 137, 137, 137, 137, 137, 137, 137,
137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 138, 138,
138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
138, 138, 516, 138, 516, 138, 138, 516, 138, 516, 138, 138, 138, 138, 138, 138,
516, 138, 138, 138, 516, 516, 516, 516, 516, 138, 138, 138, 516, 516, 138, 516,
516, 516, 516, 193, 193, 449, 586, 616, 716, 517, 584, 637, 517, 584, 518, 518,
610, 634, 518, 518, 518, 519, 519, 519, 519, 519, 520, 555, 520, 520, 684, 685,
689, 690, 715, 520, 725, 520, 728, 439, 521, 551, 521, 567, 568, 569, 521, 521,
439, 439, 439, 439, 664, 665, 521, 521, 521, 521, 521, 521, 521, 521, 727, 521,
522, 522, 522, 611, 522, 682, 522, 522, 522, 522, 611, 522, 522, 522, 522, 522,
687, 612, 613, 564, 566, 681, 712, 614, 713, 523, 523, 523, 523, 523, 523, 523,
523, 523, 523, 523, 523, 523, 635, 524, 525, 720, 432, 455, 576, 443, 608, 444,
587, 444, 701, 702, 703, 719, 704, 704, 721, 705, 705, 722, 626, 627, 628, 666,
629, 630, 667, 631, 668, 707, 13, 13, 13, 4, 23, 4, 14, 38, 14, 15,
15, 15, 329, 329, 329, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17,
17, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 20, 20, 20,
20, 20, 20, 21, 21, 21, 330, 344, 350, 355, 330, 330, 355, 344, 350, 344,
543, 344, 344, 590, 344, 344, 543, 543, 590, 543, 590, 56, 373, 218, 219, 292,
290, 298, 301, 331, 360, 332, 332, 333, 333, 378, 334, 334, 334, 335, 335, 335,
336, 336, 336, 337, 337, 337, 338, 338, 338, 339, 339, 339, 340, 340, 340, 341,
341, 341, 342, 342, 342, 374, 433, 433, 542, 433, 312, 397, 541, 434, 456, 345,
457, 546, 593, 346, 346, 346, 547, 346, 594, 440, 640, 650, 651, 652, 347, 347,
347, 347, 347, 347, 348, 416, 348, 348, 348, 348, 348, 349, 417, 349, 349, 349,
349, 349, 382, 383, 384, 544, 595, 678, 545, 545, 601, 545, 602, 435, 406, 407,
408, 549, 639, 654, 436, 480, 409, 597, 598, 375, 376, 232, 233, 303, 262, 262,
262, 263, 263, 263, 313, 314, 229, 230, 300, 356, 357, 358, 394, 391, 392, 591,
691, 453, 592, 643, 592, 644, 226, 227, 297, 351, 352, 353, 420, 22, 22, 39,
39, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 33, 34, 74, 35, 35, 76, 76, 36, 36,
36, 36, 64, 65, 139, 140,
};
private static final short[] lapg_rlen = new short[] {
1, 0, 1, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 1, 3, 4, 4,
4, 4, 4, 2, 2, 3, 3, 3, 1, 0, 4, 4, 2, 1, 1, 0,
1, 0, 7, 3, 5, 1, 2, 2, 2, 2, 2, 2, 1, 3, 3, 4,
1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 3,
3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5,
3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1,
1, 3, 2, 2, 1, 1, 2, 1, 5, 7, 5, 5, 7, 1, 0, 1,
0, 1, 0, 9, 8, 2, 2, 3, 4, 3, 3, 3, 1, 5, 5, 2,
2, 2, 1, 0, 3, 1, 2, 2, 3, 1, 3, 3, 4, 1, 1, 2,
2, 2, 2, 1, 0, 3, 1, 2, 2, 1, 1, 2, 3, 2, 1, 1,
1, 3, 3, 1, 1, 2, 1, 2, 1, 1, 2, 1, 0, 6, 2, 2,
1, 1, 7, 1, 2, 5, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 0, 1, 0, 7, 2, 1, 3, 1, 0, 3, 1, 2, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 2, 5, 1, 3, 1,
3, 1, 1, 1, 0, 8, 1, 3, 1, 3, 1, 1, 3, 1, 0, 4,
1, 1, 1, 4, 7, 1, 0, 2, 3, 1, 1, 6, 8, 10, 1, 3,
4, 1, 1, 2, 5, 7, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1,
1, 0, 8, 5, 5, 1, 1, 0, 7, 1, 0, 7, 2, 3, 2, 1,
2, 1, 0, 3, 1, 2, 1, 0, 3, 4, 1, 3, 1, 0, 7, 2,
1, 0, 3, 1, 2, 1, 0, 8, 7, 6, 10, 1, 1, 1, 0, 2,
3, 1, 0, 7, 2, 1, 0, 3, 4, 1, 3, 2, 4, 9, 1, 2,
6, 5, 4, 3, 1, 1, 1, 1, 3, 1, 0, 2, 1, 1, 0, 3,
1, 3,
};
private static final short[] lapg_rlex = new short[] {
136, 136, 138, 138, 135, 135, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
141, 141, 141, 141, 142, 142, 143, 143, 144, 144, 144, 144, 144, 144, 144, 145,
145, 146, 147, 148, 148, 148, 148, 152, 152, 152, 153, 153, 153, 156, 156, 156,
149, 149, 149, 149, 149, 149, 149, 149, 158, 158, 158, 158, 158, 158, 158, 158,
158, 151, 159, 159, 160, 160, 160, 154, 154, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162, 166, 166, 162, 162, 162, 162, 168, 168,
169, 169, 163, 163, 167, 171, 171, 171, 171, 171, 171, 171, 171, 164, 172, 172,
173, 173, 173, 173, 174, 174, 174, 175, 175, 175, 176, 176, 176, 176, 176, 176,
176, 177, 177, 177, 178, 178, 179, 179, 180, 180, 181, 181, 182, 182, 183, 183,
184, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 165, 165, 161, 161,
186, 187, 187, 187, 187, 190, 190, 190, 190, 190, 190, 190, 190, 194, 194, 196,
196, 197, 197, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
190, 190, 201, 201, 191, 202, 202, 188, 189, 204, 204, 205, 192, 192, 192, 192,
192, 192, 192, 206, 206, 193, 207, 207, 208, 210, 209, 209, 211, 211, 195, 195,
198, 198, 199, 212, 212, 212, 213, 213, 213, 215, 215, 218, 218, 217, 216, 214,
200, 200, 219, 137, 137, 220, 220, 139, 139, 221, 221, 222, 222, 222, 222, 222,
228, 228, 229, 229, 230, 230, 223, 231, 233, 233, 234, 234, 232, 235, 235, 236,
236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 246, 246, 238, 203, 203, 247,
247, 248, 248, 250, 250, 239, 249, 249, 251, 251, 251, 253, 253, 256, 256, 255,
257, 257, 258, 254, 240, 261, 261, 259, 260, 252, 252, 241, 241, 242, 262, 262,
243, 263, 263, 266, 264, 264, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268,
268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 265, 269, 269,
270, 270, 244, 271, 271, 272, 273, 273, 245, 274, 274, 224, 275, 276, 150, 155,
155, 277, 277, 157, 278, 278, 279, 279, 170, 170, 280, 280, 281, 281, 225, 282,
284, 284, 283, 285, 285, 287, 287, 286, 286, 286, 286, 290, 288, 292, 292, 289,
291, 293, 293, 226, 294, 296, 296, 295, 295, 297, 297, 298, 298, 227, 140, 140,
299, 299, 299, 299, 300, 300, 300, 301, 301, 304, 304, 302, 303, 306, 306, 305,
307, 307,
};
private static final String[] lapg_syms = new String[] {
"eoi",
"identifier",
"error",
"Licon",
"Lfcon",
"Lscon",
"Lccon",
"Labstract",
"Las",
"Lbase",
"Lbool",
"Lbreak",
"Lbyte",
"Lcase",
"Lcatch",
"Lchar",
"Lchecked",
"Lclass",
"Lconst",
"Lcontinue",
"Ldecimal",
"Ldefault",
"Ldelegate",
"Ldo",
"Ldouble",
"Lelse",
"Lenum",
"Levent",
"Lexplicit",
"Lextern",
"Lfalse",
"Lfinally",
"Lfixed",
"Lfloat",
"Lfor",
"Lforeach",
"Lgoto",
"Lif",
"Limplicit",
"Lin",
"Lint",
"Linterface",
"Linternal",
"Lis",
"Llock",
"Llong",
"Lnamespace",
"Lnew",
"Lnull",
"Lobject",
"Loperator",
"Lout",
"Loverride",
"Lparams",
"Lprivate",
"Lprotected",
"Lpublic",
"Lreadonly",
"Lref",
"Lreturn",
"Lsbyte",
"Lsealed",
"Lshort",
"Lsizeof",
"Lstackalloc",
"Lstatic",
"Lstring",
"Lstruct",
"Lswitch",
"Lthis",
"Lthrow",
"Ltrue",
"Ltry",
"Ltypeof",
"Luint",
"Lulong",
"Lunchecked",
"Lunsafe",
"Lushort",
"Lusing",
"Lvirtual",
"Lvoid",
"Lvolatile",
"Lwhile",
"'{'",
"'}'",
"'['",
"']'",
"'('",
"')'",
"'.'",
"','",
"':'",
"';'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
"'&'",
"'|'",
"'^'",
"'!'",
"'~'",
"'='",
"'<'",
"'>'",
"'?'",
"'++'",
"'--'",
"'&&'",
"'||'",
"'<<'",
"'>>'",
"'=='",
"'!='",
"'<='",
"'>='",
"'+='",
"'-='",
"'*='",
"'/='",
"'%='",
"'&='",
"'|='",
"'^='",
"'<<='",
"'>>='",
"'->'",
"cast_token",
"comment",
"_skip",
"'/*'",
"anysym1",
"'*/'",
"input",
"using_directivesopt",
"using_directives",
"namespace_member_declarationsopt",
"namespace_member_declarations",
"attributes",
"modifier",
"modifiers",
"optsemicolon",
"literal",
"qualified_identifier",
"ID",
"type_name",
"type",
"builtin_types",
"array_type",
"pointer_type",
"non_array_type",
"local_type",
"primary_expression",
"rank_specifiers",
"cast_type",
"rank_specifier",
"integral_type",
"argument_list",
"argument",
"expression",
"primary_expression_na",
"new_array_expression",
"parenthesized",
"expression_list",
"argument_listopt",
"object_or_delegate_creation_expression",
"rank_specifiersopt",
"array_initializeropt",
"array_initializer",
"unary_expression",
"cast_expression",
"multiplicative_expression",
"additive_expression",
"shift_expression",
"relational_expression",
"equality_expression",
"and_expression",
"exclusive_or_expression",
"inclusive_or_expression",
"conditional_and_expression",
"conditional_or_expression",
"conditional_expression",
"assignment",
"assignment_operator",
"constant_expression",
"statement",
"local_variable_declaration",
"local_constant_declaration",
"embedded_statement",
"block",
"statement_expression",
"switch_block",
"for_initializeropt",
"for_initializer",
"expressionopt",
"statement_expression_listopt",
"statement_expression_list",
"try_statement",
"resource_acquisition",
"statementsopt",
"statements",
"variable_declarators",
"constant_declarators",
"constant_declarator",
"switch_sectionsopt",
"switch_sections",
"switch_section",
"switch_labels",
"statements_as_one",
"switch_label",
"catch_finally",
"catch_clauses",
"finally_clause",
"specific_catch_clauses",
"general_catch_clause",
"specific_catch_clause",
"IDopt",
"namespace_declaration",
"using_directive",
"namespace_member_declaration",
"type_declaration",
"class_declaration",
"struct_declaration",
"interface_declaration",
"enum_declaration",
"delegate_declaration",
"attributesopt",
"modifiersopt",
"class_baseopt",
"class_base",
"class_body",
"type_list",
"class_member_declarationsopt",
"class_member_declarations",
"class_member_declaration",
"constant_declaration",
"field_declaration",
"method_declaration",
"property_declaration",
"event_declaration",
"indexer_declaration",
"operator_declaration",
"constructor_declaration",
"destructor_declaration",
"const_modifiers",
"variable_declarator",
"variable_initializer",
"member_name",
"formal_parameter_listopt",
"formal_parameter_list",
"optional_body",
"fixed_parameters",
"parameter_array",
"fixed_parameter",
"parameter_modifieropt",
"parameter_modifier",
"params_modifier",
"accessor_declarations",
"accessor_declaration",
"accessor_declarationopt",
"indexer_name",
"operator_declarator",
"unary_binary_operator_declarator",
"conversion_operator_declarator",
"simple_parameter",
"overloadable_operator_name",
"overloadable_operator",
"conversion_modifier",
"constructor_initializeropt",
"constructor_initializer",
"destructor_modifier",
"destructor_modifieropt",
"struct_interfacesopt",
"struct_interfaces",
"struct_body",
"dim_separatorsopt",
"dim_separators",
"variable_initializer_listopt",
"variable_initializer_list",
"interface_baseopt",
"interface_base",
"interface_body",
"interface_member_declarationsopt",
"interface_member_declarations",
"interface_member_declaration",
"iface_member_modifieropt",
"iface_member_modifier",
"interface_accessors",
"iface_indexer_name",
"interface_accessor",
"interface_accessoropt",
"enum_baseopt",
"enum_base",
"enum_body",
"enum_member_declarationsopt",
"enum_member_declarations",
"enum_member_declaration",
"attribute_sect",
"attribute_target",
"attribute_list",
"attribute",
"attribute_name",
"attribute_argumentsopt",
"attribute_arguments",
"attribute_argument_listopt",
"attribute_argument_list",
};
public interface Tokens extends Lexems {
// non-terminals
public static final int input = 135;
public static final int using_directivesopt = 136;
public static final int using_directives = 137;
public static final int namespace_member_declarationsopt = 138;
public static final int namespace_member_declarations = 139;
public static final int attributes = 140;
public static final int modifier = 141;
public static final int modifiers = 142;
public static final int optsemicolon = 143;
public static final int literal = 144;
public static final int qualified_identifier = 145;
public static final int ID = 146;
public static final int type_name = 147;
public static final int type = 148;
public static final int builtin_types = 149;
public static final int array_type = 150;
public static final int pointer_type = 151;
public static final int non_array_type = 152;
public static final int local_type = 153;
public static final int primary_expression = 154;
public static final int rank_specifiers = 155;
public static final int cast_type = 156;
public static final int rank_specifier = 157;
public static final int integral_type = 158;
public static final int argument_list = 159;
public static final int argument = 160;
public static final int expression = 161;
public static final int primary_expression_na = 162;
public static final int new_array_expression = 163;
public static final int parenthesized = 164;
public static final int expression_list = 165;
public static final int argument_listopt = 166;
public static final int object_or_delegate_creation_expression = 167;
public static final int rank_specifiersopt = 168;
public static final int array_initializeropt = 169;
public static final int array_initializer = 170;
public static final int unary_expression = 171;
public static final int cast_expression = 172;
public static final int multiplicative_expression = 173;
public static final int additive_expression = 174;
public static final int shift_expression = 175;
public static final int relational_expression = 176;
public static final int equality_expression = 177;
public static final int and_expression = 178;
public static final int exclusive_or_expression = 179;
public static final int inclusive_or_expression = 180;
public static final int conditional_and_expression = 181;
public static final int conditional_or_expression = 182;
public static final int conditional_expression = 183;
public static final int assignment = 184;
public static final int assignment_operator = 185;
public static final int constant_expression = 186;
public static final int statement = 187;
public static final int local_variable_declaration = 188;
public static final int local_constant_declaration = 189;
public static final int embedded_statement = 190;
public static final int block = 191;
public static final int statement_expression = 192;
public static final int switch_block = 193;
public static final int for_initializeropt = 194;
public static final int for_initializer = 195;
public static final int expressionopt = 196;
public static final int statement_expression_listopt = 197;
public static final int statement_expression_list = 198;
public static final int try_statement = 199;
public static final int resource_acquisition = 200;
public static final int statementsopt = 201;
public static final int statements = 202;
public static final int variable_declarators = 203;
public static final int constant_declarators = 204;
public static final int constant_declarator = 205;
public static final int switch_sectionsopt = 206;
public static final int switch_sections = 207;
public static final int switch_section = 208;
public static final int switch_labels = 209;
public static final int statements_as_one = 210;
public static final int switch_label = 211;
public static final int catch_finally = 212;
public static final int catch_clauses = 213;
public static final int finally_clause = 214;
public static final int specific_catch_clauses = 215;
public static final int general_catch_clause = 216;
public static final int specific_catch_clause = 217;
public static final int IDopt = 218;
public static final int namespace_declaration = 219;
public static final int using_directive = 220;
public static final int namespace_member_declaration = 221;
public static final int type_declaration = 222;
public static final int class_declaration = 223;
public static final int struct_declaration = 224;
public static final int interface_declaration = 225;
public static final int enum_declaration = 226;
public static final int delegate_declaration = 227;
public static final int attributesopt = 228;
public static final int modifiersopt = 229;
public static final int class_baseopt = 230;
public static final int class_base = 231;
public static final int class_body = 232;
public static final int type_list = 233;
public static final int class_member_declarationsopt = 234;
public static final int class_member_declarations = 235;
public static final int class_member_declaration = 236;
public static final int constant_declaration = 237;
public static final int field_declaration = 238;
public static final int method_declaration = 239;
public static final int property_declaration = 240;
public static final int event_declaration = 241;
public static final int indexer_declaration = 242;
public static final int operator_declaration = 243;
public static final int constructor_declaration = 244;
public static final int destructor_declaration = 245;
public static final int const_modifiers = 246;
public static final int variable_declarator = 247;
public static final int variable_initializer = 248;
public static final int member_name = 249;
public static final int formal_parameter_listopt = 250;
public static final int formal_parameter_list = 251;
public static final int optional_body = 252;
public static final int fixed_parameters = 253;
public static final int parameter_array = 254;
public static final int fixed_parameter = 255;
public static final int parameter_modifieropt = 256;
public static final int parameter_modifier = 257;
public static final int params_modifier = 258;
public static final int accessor_declarations = 259;
public static final int accessor_declaration = 260;
public static final int accessor_declarationopt = 261;
public static final int indexer_name = 262;
public static final int operator_declarator = 263;
public static final int unary_binary_operator_declarator = 264;
public static final int conversion_operator_declarator = 265;
public static final int simple_parameter = 266;
public static final int overloadable_operator_name = 267;
public static final int overloadable_operator = 268;
public static final int conversion_modifier = 269;
public static final int constructor_initializeropt = 270;
public static final int constructor_initializer = 271;
public static final int destructor_modifier = 272;
public static final int destructor_modifieropt = 273;
public static final int struct_interfacesopt = 274;
public static final int struct_interfaces = 275;
public static final int struct_body = 276;
public static final int dim_separatorsopt = 277;
public static final int dim_separators = 278;
public static final int variable_initializer_listopt = 279;
public static final int variable_initializer_list = 280;
public static final int interface_baseopt = 281;
public static final int interface_base = 282;
public static final int interface_body = 283;
public static final int interface_member_declarationsopt = 284;
public static final int interface_member_declarations = 285;
public static final int interface_member_declaration = 286;
public static final int iface_member_modifieropt = 287;
public static final int iface_member_modifier = 288;
public static final int interface_accessors = 289;
public static final int iface_indexer_name = 290;
public static final int interface_accessor = 291;
public static final int interface_accessoropt = 292;
public static final int enum_baseopt = 293;
public static final int enum_base = 294;
public static final int enum_body = 295;
public static final int enum_member_declarationsopt = 296;
public static final int enum_member_declarations = 297;
public static final int enum_member_declaration = 298;
public static final int attribute_sect = 299;
public static final int attribute_target = 300;
public static final int attribute_list = 301;
public static final int attribute = 302;
public static final int attribute_name = 303;
public static final int attribute_argumentsopt = 304;
public static final int attribute_arguments = 305;
public static final int attribute_argument_listopt = 306;
public static final int attribute_argument_list = 307;
}
private static int lapg_next( int state, int symbol ) {
int p;
if( lapg_action[state] < -2 ) {
for( p = - lapg_action[state] - 3; lapg_lalr[p] >= 0; p += 2 )
if( lapg_lalr[p] == symbol ) break;
return lapg_lalr[p+1];
}
return lapg_action[state];
}
private static int lapg_state_sym( int state, int symbol ) {
int min = lapg_sym_goto[symbol], max = lapg_sym_goto[symbol+1]-1;
int i, e;
while( min <= max ) {
e = (min + max) >> 1;
i = lapg_sym_from[e];
if( i == state )
return lapg_sym_to[e];
else if( i < state )
min = e + 1;
else
max = e - 1;
}
return -1;
}
private int lapg_head;
private LapgSymbol[] lapg_m;
private LapgSymbol lapg_n;
public boolean parse(Lexer lexer) throws IOException {
lapg_m = new LapgSymbol[1024];
lapg_head = 0;
int lapg_symbols_ok = 4;
lapg_m[0] = new LapgSymbol();
lapg_m[0].state = 0;
lapg_n = lexer.next();
while( lapg_m[lapg_head].state != 730 ) {
int lapg_i = lapg_next( lapg_m[lapg_head].state, lapg_n.lexem );
if( lapg_i >= 0 ) {
reduce(lapg_i);
} else if( lapg_i == -1 ) {
shift(lexer);
lapg_symbols_ok++;
}
if( lapg_i == -2 || lapg_m[lapg_head].state == -1 ) {
if (lapg_n.lexem == 0) {
break;
}
while (lapg_head >= 0 && lapg_state_sym( lapg_m[lapg_head].state, 2 ) == -1) {
lapg_m[lapg_head] = null; // TODO dispose?
lapg_head--;
}
if (lapg_head >= 0) {
lapg_m[++lapg_head] = new LapgSymbol();
lapg_m[lapg_head].lexem = 2;
lapg_m[lapg_head].sym = null;
lapg_m[lapg_head].state = lapg_state_sym( lapg_m[lapg_head-1].state, 2 );
lapg_m[lapg_head].pos = lapg_n.pos; // TODO endpos?
if( lapg_symbols_ok >= 4 ) {
error( MessageFormat.format( "syntax error before line {0}", lapg_n.pos.line ) );
}
if( lapg_symbols_ok <= 1 ) {
lapg_n = lexer.next();
}
lapg_symbols_ok = 0;
continue;
} else {
lapg_head = 0;
lapg_m[0] = new LapgSymbol();
lapg_m[0].state = 0;
}
break;
}
}
if( lapg_m[lapg_head].state != 730 && lapg_symbols_ok >= 4 ) {
error( MessageFormat.format( "syntax error before line {0}", lapg_n.pos.line ) );
return false;
};
return true;
}
private void shift(Lexer lexer) throws IOException {
lapg_m[++lapg_head] = lapg_n;
lapg_m[lapg_head].state = lapg_state_sym( lapg_m[lapg_head-1].state, lapg_n.lexem );
if( DEBUG_SYNTAX ) {
System.out.println( MessageFormat.format( "shift: {0} ({1})", lapg_syms[lapg_n.lexem], lexer.current() ) );
}
if( lapg_m[lapg_head].state != -1 && lapg_n.lexem != 0 ) {
lapg_n = lexer.next();
}
}
@SuppressWarnings("unchecked")
private void reduce(int rule) {
LapgSymbol lapg_gg = new LapgSymbol();
lapg_gg.sym = (lapg_rlen[rule]!=0)?lapg_m[lapg_head+1-lapg_rlen[rule]].sym:null;
lapg_gg.lexem = lapg_rlex[rule];
lapg_gg.state = 0;
if( DEBUG_SYNTAX ) {
System.out.println( "reduce to " + lapg_syms[lapg_rlex[rule]] );
}
lapg_gg.pos = (lapg_rlen[rule]!=0)?lapg_m[lapg_head+1-lapg_rlen[rule]].pos:lapg_n.pos;
lapg_gg.endpos = (lapg_rlen[rule]!=0)?lapg_m[lapg_head].endpos:lapg_n.pos;
switch( rule ) {
case 24: // literal ::= Licon
lapg_gg.sym = new Node(); break;
break;
case 25: // literal ::= Lfcon
lapg_gg.sym = new Node(); break;
break;
case 26: // literal ::= Lccon
lapg_gg.sym = new Node(); break;
break;
case 27: // literal ::= Lscon
lapg_gg.sym = new Node(lapg_m[lapg_head-0].pos.line); break;
break;
case 28: // literal ::= Ltrue
lapg_gg.sym = new Node(); break;
break;
case 29: // literal ::= Lfalse
lapg_gg.sym = new Node(); break;
break;
case 30: // literal ::= Lnull
lapg_gg.sym = new Node(); break;
break;
case 33: // ID ::= identifier
lapg_gg.sym = new Node( Kind.Identifier, null, null, null ); break;
break;
case 76: // primary_expression_na ::= Lthis
lapg_gg.sym = new Node(); break;
break;
case 77: // primary_expression_na ::= Lbase '.' ID
lapg_gg.sym = new Node(); break;
break;
case 78: // primary_expression_na ::= Lbase '[' expression_list ']'
lapg_gg.sym = new Node(); break;
break;
case 79: // primary_expression_na ::= Ltypeof '(' type ')'
lapg_gg.sym = new Node(); break;
break;
case 80: // primary_expression_na ::= Lchecked '(' expression ')'
lapg_gg.sym = new Node(); break;
break;
case 81: // primary_expression_na ::= Lunchecked '(' expression ')'
lapg_gg.sym = new Node(); break;
break;
case 82: // primary_expression_na ::= Lsizeof '(' type ')'
lapg_gg.sym = new Node(); break;
break;
case 83: // primary_expression_na ::= primary_expression '++'
lapg_gg.sym = new Node(); break;
break;
case 84: // primary_expression_na ::= primary_expression '--'
lapg_gg.sym = new Node(); break;
break;
case 85: // primary_expression_na ::= primary_expression '->' ID
lapg_gg.sym = new Node(); break;
break;
case 86: // primary_expression_na ::= primary_expression '.' ID
lapg_gg.sym = new Node( Kind.Dot, ((Node)lapg_m[lapg_head-2].sym), null, null ); break;
break;
case 87: // primary_expression_na ::= builtin_types '.' ID
lapg_gg.sym = new Node( Kind.TypeDot, null, null, null ); break;
break;
case 90: // primary_expression_na ::= primary_expression '(' argument_listopt ')'
lapg_gg.sym = new Node(); break;
break;
case 91: // primary_expression_na ::= primary_expression_na '[' expression_list ']'
lapg_gg.sym = new Node(); break;
break;
case 92: // primary_expression_na ::= primary_expression_na rank_specifier
lapg_gg.sym = new Node( Kind.DimmedExpr, null, null, ((Node)lapg_gg.sym) ); break;
break;
case 93: // primary_expression_na ::= object_or_delegate_creation_expression
lapg_gg.sym = new Node(); break;
break;
case 98: // new_array_expression ::= Lnew non_array_type '[' expression_list ']' rank_specifiersopt array_initializeropt
lapg_gg.sym = new Node(); break;
break;
case 99: // new_array_expression ::= Lnew array_type array_initializer
lapg_gg.sym = new Node(); break;
break;
case 100: // object_or_delegate_creation_expression ::= Lnew type '(' argument_listopt ')'
lapg_gg.sym = new Node(); break;
break;
case 102: // unary_expression ::= '+' unary_expression
lapg_gg.sym = new Node(); break;
break;
case 103: // unary_expression ::= '-' unary_expression
lapg_gg.sym = new Node(); break;
break;
case 104: // unary_expression ::= '!' unary_expression
lapg_gg.sym = new Node(); break;
break;
case 105: // unary_expression ::= '~' unary_expression
lapg_gg.sym = new Node(); break;
break;
case 106: // unary_expression ::= '++' unary_expression
lapg_gg.sym = new Node(); break;
break;
case 107: // unary_expression ::= '--' unary_expression
lapg_gg.sym = new Node(); break;
break;
case 109: // parenthesized ::= '(' expression ')'
lapg_gg.sym = ((Node)lapg_m[lapg_head-1].sym);
// HACK to resolve Cast ambiguity
if( CastExpr(((Node)lapg_m[lapg_head-1].sym),lapg_n) ) {
// perform reduce
for( int e = lapg_rlen[lapg_i]; e > 0; e-- ) lapg_m[lapg_head--].sym = null;
lapg_m[++lapg_head] = lapg_gg;
lapg_m[lapg_head].state = lapg_state_sym( lapg_m[lapg_head-1].state, lapg_gg.lexem );
if( lapg_m[lapg_head].state != -1 ) {
// shift cast_token (if possible)
lapg_gg.lexem = (int)Tokens.cast_token;
lapg_gg.sym = null;
lapg_gg.state = lapg_state_sym( lapg_m[lapg_head].state, lapg_gg.lexem );
lapg_gg.pos = lapg_gg.endpos = lapg_n.pos;
if( lapg_gg.state != -1 )
lapg_m[++lapg_head] = lapg_gg;
}
// skip default reduce code
continue;
}
break;
break;
case 110: // cast_expression ::= parenthesized cast_token unary_expression
lapg_gg.sym = new Node(); break;
break;
case 111: // cast_expression ::= '(' cast_type ')' unary_expression
lapg_gg.sym = new Node(); break;
break;
case 113: // multiplicative_expression ::= multiplicative_expression '*' unary_expression
lapg_gg.sym = new Node(); break;
break;
case 114: // multiplicative_expression ::= multiplicative_expression '/' unary_expression
lapg_gg.sym = new Node(); break;
break;
case 115: // multiplicative_expression ::= multiplicative_expression '%' unary_expression
lapg_gg.sym = new Node(); break;
break;
case 117: // additive_expression ::= additive_expression '+' multiplicative_expression
lapg_gg.sym = new Node(); break;
break;
case 118: // additive_expression ::= additive_expression '-' multiplicative_expression
lapg_gg.sym = new Node(); break;
break;
case 120: // shift_expression ::= shift_expression '<<' additive_expression
lapg_gg.sym = new Node(); break;
break;
case 121: // shift_expression ::= shift_expression '>>' additive_expression
lapg_gg.sym = new Node(); break;
break;
case 123: // relational_expression ::= relational_expression '<' shift_expression
lapg_gg.sym = new Node(); break;
break;
case 124: // relational_expression ::= relational_expression '>' shift_expression
lapg_gg.sym = new Node(); break;
break;
case 125: // relational_expression ::= relational_expression '<=' shift_expression
lapg_gg.sym = new Node(); break;
break;
case 126: // relational_expression ::= relational_expression '>=' shift_expression
lapg_gg.sym = new Node(); break;
break;
case 127: // relational_expression ::= relational_expression Lis type
lapg_gg.sym = new Node(); break;
break;
case 128: // relational_expression ::= relational_expression Las type
lapg_gg.sym = new Node(); break;
break;
case 130: // equality_expression ::= equality_expression '==' relational_expression
lapg_gg.sym = new Node(); break;
break;
case 131: // equality_expression ::= equality_expression '!=' relational_expression
lapg_gg.sym = new Node(); break;
break;
case 133: // and_expression ::= and_expression '&' equality_expression
lapg_gg.sym = new Node(); break;
break;
case 135: // exclusive_or_expression ::= exclusive_or_expression '^' and_expression
lapg_gg.sym = new Node(); break;
break;
case 137: // inclusive_or_expression ::= inclusive_or_expression '|' exclusive_or_expression
lapg_gg.sym = new Node(); break;
break;
case 139: // conditional_and_expression ::= conditional_and_expression '&&' inclusive_or_expression
lapg_gg.sym = new Node(); break;
break;
case 141: // conditional_or_expression ::= conditional_or_expression '||' conditional_and_expression
lapg_gg.sym = new Node(); break;
break;
case 143: // conditional_expression ::= conditional_or_expression '?' expression ':' expression
lapg_gg.sym = new Node(); break;
break;
case 144: // assignment ::= unary_expression assignment_operator expression
lapg_gg.sym = new Node(); break;
break;
}
for( int e = lapg_rlen[rule]; e > 0; e-- ) {
lapg_m[lapg_head--] = null;
}
lapg_m[++lapg_head] = lapg_gg;
lapg_m[lapg_head].state = lapg_state_sym(lapg_m[lapg_head-1].state, lapg_gg.lexem);
}
}