solidity-antlr4
Version:
Solidity Lang Lexer and Parser by official ANTLR4 grammar
5,495 lines (5,494 loc) • 211 kB
JavaScript
import * as antlr from "antlr4ng";
export class SolidityLexer extends antlr.Lexer {
static ReservedKeywords = 1;
static Abstract = 2;
static Address = 3;
static Anonymous = 4;
static As = 5;
static Assembly = 6;
static Bool = 7;
static Break = 8;
static Bytes = 9;
static Calldata = 10;
static Catch = 11;
static Constant = 12;
static Constructor = 13;
static Continue = 14;
static Contract = 15;
static Delete = 16;
static Do = 17;
static Else = 18;
static Emit = 19;
static Enum = 20;
static Error = 21;
static Event = 22;
static External = 23;
static Fallback = 24;
static False = 25;
static Fixed = 26;
static FixedBytes = 27;
static For = 28;
static From = 29;
static Function = 30;
static Global = 31;
static Hex = 32;
static If = 33;
static Immutable = 34;
static Import = 35;
static Indexed = 36;
static Interface = 37;
static Internal = 38;
static Is = 39;
static Library = 40;
static Mapping = 41;
static Memory = 42;
static Modifier = 43;
static New = 44;
static SubDenomination = 45;
static Override = 46;
static Payable = 47;
static Pragma = 48;
static Private = 49;
static Public = 50;
static Pure = 51;
static Receive = 52;
static Return = 53;
static Returns = 54;
static Revert = 55;
static SignedIntegerType = 56;
static Storage = 57;
static String = 58;
static Struct = 59;
static True = 60;
static Try = 61;
static Type = 62;
static Ufixed = 63;
static Unchecked = 64;
static Unicode = 65;
static UnsignedIntegerType = 66;
static Using = 67;
static View = 68;
static Virtual = 69;
static While = 70;
static LParen = 71;
static RParen = 72;
static LBrack = 73;
static RBrack = 74;
static LBrace = 75;
static RBrace = 76;
static Colon = 77;
static Semicolon = 78;
static Period = 79;
static Conditional = 80;
static DoubleArrow = 81;
static RightArrow = 82;
static Assign = 83;
static AssignBitOr = 84;
static AssignBitXor = 85;
static AssignBitAnd = 86;
static AssignShl = 87;
static AssignSar = 88;
static AssignShr = 89;
static AssignAdd = 90;
static AssignSub = 91;
static AssignMul = 92;
static AssignDiv = 93;
static AssignMod = 94;
static Comma = 95;
static Or = 96;
static And = 97;
static BitOr = 98;
static BitXor = 99;
static BitAnd = 100;
static Shl = 101;
static Sar = 102;
static Shr = 103;
static Add = 104;
static Sub = 105;
static Mul = 106;
static Div = 107;
static Mod = 108;
static Exp = 109;
static Equal = 110;
static NotEqual = 111;
static LessThan = 112;
static GreaterThan = 113;
static LessThanOrEqual = 114;
static GreaterThanOrEqual = 115;
static Not = 116;
static BitNot = 117;
static Inc = 118;
static Dec = 119;
static DoubleQuote = 120;
static SingleQuote = 121;
static NonEmptyStringLiteral = 122;
static EmptyStringLiteral = 123;
static UnicodeStringLiteral = 124;
static HexString = 125;
static HexNumber = 126;
static OctalNumber = 127;
static DecimalNumber = 128;
static DecimalNumberFollowedByIdentifier = 129;
static Identifier = 130;
static WS = 131;
static COMMENT = 132;
static LINE_COMMENT = 133;
static AssemblyDialect = 134;
static AssemblyLBrace = 135;
static AssemblyFlagString = 136;
static AssemblyBlockLParen = 137;
static AssemblyBlockRParen = 138;
static AssemblyBlockComma = 139;
static AssemblyBlockWS = 140;
static AssemblyBlockCOMMENT = 141;
static AssemblyBlockLINE_COMMENT = 142;
static YulBreak = 143;
static YulCase = 144;
static YulContinue = 145;
static YulDefault = 146;
static YulFalse = 147;
static YulFor = 148;
static YulFunction = 149;
static YulIf = 150;
static YulLeave = 151;
static YulLet = 152;
static YulSwitch = 153;
static YulTrue = 154;
static YulHex = 155;
static YulEVMBuiltin = 156;
static YulLBrace = 157;
static YulRBrace = 158;
static YulLParen = 159;
static YulRParen = 160;
static YulAssign = 161;
static YulPeriod = 162;
static YulComma = 163;
static YulArrow = 164;
static YulIdentifier = 165;
static YulHexNumber = 166;
static YulDecimalNumber = 167;
static YulStringLiteral = 168;
static YulHexStringLiteral = 169;
static YulWS = 170;
static YulCOMMENT = 171;
static YulLINE_COMMENT = 172;
static PragmaToken = 173;
static PragmaSemicolon = 174;
static PragmaWS = 175;
static PragmaCOMMENT = 176;
static PragmaLINE_COMMENT = 177;
static AssemblyBlockMode = 1;
static YulMode = 2;
static PragmaMode = 3;
static channelNames = [
"DEFAULT_TOKEN_CHANNEL",
"HIDDEN"
];
static literalNames = [
null,
null,
"'abstract'",
"'address'",
"'anonymous'",
"'as'",
"'assembly'",
"'bool'",
null,
"'bytes'",
"'calldata'",
"'catch'",
"'constant'",
"'constructor'",
null,
"'contract'",
"'delete'",
"'do'",
"'else'",
"'emit'",
"'enum'",
"'error'",
"'event'",
"'external'",
"'fallback'",
null,
null,
null,
null,
"'from'",
null,
"'global'",
null,
null,
"'immutable'",
"'import'",
"'indexed'",
"'interface'",
"'internal'",
"'is'",
"'library'",
"'mapping'",
"'memory'",
"'modifier'",
"'new'",
null,
"'override'",
"'payable'",
"'pragma'",
"'private'",
"'public'",
"'pure'",
"'receive'",
"'return'",
"'returns'",
"'revert'",
null,
"'storage'",
"'string'",
"'struct'",
null,
"'try'",
"'type'",
null,
"'unchecked'",
"'unicode'",
null,
"'using'",
"'view'",
"'virtual'",
"'while'",
null,
null,
"'['",
"']'",
null,
null,
"':'",
null,
null,
"'?'",
"'=>'",
null,
"'='",
"'|='",
"'^='",
"'&='",
"'<<='",
"'>>='",
"'>>>='",
"'+='",
"'-='",
"'*='",
"'/='",
"'%='",
null,
"'||'",
"'&&'",
"'|'",
"'^'",
"'&'",
"'<<'",
"'>>'",
"'>>>'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
"'**'",
"'=='",
"'!='",
"'<'",
"'>'",
"'<='",
"'>='",
"'!'",
"'~'",
"'++'",
"'--'",
`'"'`,
"'''",
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
`'"evmasm"'`,
null,
null,
null,
null,
null,
null,
null,
null,
null,
"'case'",
null,
"'default'",
null,
null,
null,
null,
"'leave'",
"'let'",
"'switch'",
null,
null,
null,
null,
null,
null,
null,
"':='"
];
static symbolicNames = [
null,
"ReservedKeywords",
"Abstract",
"Address",
"Anonymous",
"As",
"Assembly",
"Bool",
"Break",
"Bytes",
"Calldata",
"Catch",
"Constant",
"Constructor",
"Continue",
"Contract",
"Delete",
"Do",
"Else",
"Emit",
"Enum",
"Error",
"Event",
"External",
"Fallback",
"False",
"Fixed",
"FixedBytes",
"For",
"From",
"Function",
"Global",
"Hex",
"If",
"Immutable",
"Import",
"Indexed",
"Interface",
"Internal",
"Is",
"Library",
"Mapping",
"Memory",
"Modifier",
"New",
"SubDenomination",
"Override",
"Payable",
"Pragma",
"Private",
"Public",
"Pure",
"Receive",
"Return",
"Returns",
"Revert",
"SignedIntegerType",
"Storage",
"String",
"Struct",
"True",
"Try",
"Type",
"Ufixed",
"Unchecked",
"Unicode",
"UnsignedIntegerType",
"Using",
"View",
"Virtual",
"While",
"LParen",
"RParen",
"LBrack",
"RBrack",
"LBrace",
"RBrace",
"Colon",
"Semicolon",
"Period",
"Conditional",
"DoubleArrow",
"RightArrow",
"Assign",
"AssignBitOr",
"AssignBitXor",
"AssignBitAnd",
"AssignShl",
"AssignSar",
"AssignShr",
"AssignAdd",
"AssignSub",
"AssignMul",
"AssignDiv",
"AssignMod",
"Comma",
"Or",
"And",
"BitOr",
"BitXor",
"BitAnd",
"Shl",
"Sar",
"Shr",
"Add",
"Sub",
"Mul",
"Div",
"Mod",
"Exp",
"Equal",
"NotEqual",
"LessThan",
"GreaterThan",
"LessThanOrEqual",
"GreaterThanOrEqual",
"Not",
"BitNot",
"Inc",
"Dec",
"DoubleQuote",
"SingleQuote",
"NonEmptyStringLiteral",
"EmptyStringLiteral",
"UnicodeStringLiteral",
"HexString",
"HexNumber",
"OctalNumber",
"DecimalNumber",
"DecimalNumberFollowedByIdentifier",
"Identifier",
"WS",
"COMMENT",
"LINE_COMMENT",
"AssemblyDialect",
"AssemblyLBrace",
"AssemblyFlagString",
"AssemblyBlockLParen",
"AssemblyBlockRParen",
"AssemblyBlockComma",
"AssemblyBlockWS",
"AssemblyBlockCOMMENT",
"AssemblyBlockLINE_COMMENT",
"YulBreak",
"YulCase",
"YulContinue",
"YulDefault",
"YulFalse",
"YulFor",
"YulFunction",
"YulIf",
"YulLeave",
"YulLet",
"YulSwitch",
"YulTrue",
"YulHex",
"YulEVMBuiltin",
"YulLBrace",
"YulRBrace",
"YulLParen",
"YulRParen",
"YulAssign",
"YulPeriod",
"YulComma",
"YulArrow",
"YulIdentifier",
"YulHexNumber",
"YulDecimalNumber",
"YulStringLiteral",
"YulHexStringLiteral",
"YulWS",
"YulCOMMENT",
"YulLINE_COMMENT",
"PragmaToken",
"PragmaSemicolon",
"PragmaWS",
"PragmaCOMMENT",
"PragmaLINE_COMMENT"
];
static modeNames = [
"DEFAULT_MODE",
"AssemblyBlockMode",
"YulMode",
"PragmaMode"
];
static ruleNames = [
"ReservedKeywords",
"Abstract",
"Address",
"Anonymous",
"As",
"Assembly",
"Bool",
"Break",
"Bytes",
"Calldata",
"Catch",
"Constant",
"Constructor",
"Continue",
"Contract",
"Delete",
"Do",
"Else",
"Emit",
"Enum",
"Error",
"Event",
"External",
"Fallback",
"False",
"Fixed",
"FixedBytes",
"For",
"From",
"Function",
"Global",
"Hex",
"If",
"Immutable",
"Import",
"Indexed",
"Interface",
"Internal",
"Is",
"Library",
"Mapping",
"Memory",
"Modifier",
"New",
"SubDenomination",
"Override",
"Payable",
"Pragma",
"Private",
"Public",
"Pure",
"Receive",
"Return",
"Returns",
"Revert",
"SignedIntegerType",
"Storage",
"String",
"Struct",
"True",
"Try",
"Type",
"Ufixed",
"Unchecked",
"Unicode",
"UnsignedIntegerType",
"Using",
"View",
"Virtual",
"While",
"LParen",
"RParen",
"LBrack",
"RBrack",
"LBrace",
"RBrace",
"Colon",
"Semicolon",
"Period",
"Conditional",
"DoubleArrow",
"RightArrow",
"Assign",
"AssignBitOr",
"AssignBitXor",
"AssignBitAnd",
"AssignShl",
"AssignSar",
"AssignShr",
"AssignAdd",
"AssignSub",
"AssignMul",
"AssignDiv",
"AssignMod",
"Comma",
"Or",
"And",
"BitOr",
"BitXor",
"BitAnd",
"Shl",
"Sar",
"Shr",
"Add",
"Sub",
"Mul",
"Div",
"Mod",
"Exp",
"Equal",
"NotEqual",
"LessThan",
"GreaterThan",
"LessThanOrEqual",
"GreaterThanOrEqual",
"Not",
"BitNot",
"Inc",
"Dec",
"DoubleQuote",
"SingleQuote",
"NonEmptyStringLiteral",
"EmptyStringLiteral",
"DoubleQuotedStringCharacter",
"SingleQuotedStringCharacter",
"SingleQuotedPrintable",
"DoubleQuotedPrintable",
"EscapeSequence",
"UnicodeStringLiteral",
"DoubleQuotedUnicodeStringCharacter",
"SingleQuotedUnicodeStringCharacter",
"HexString",
"HexNumber",
"HexDigits",
"EvenHexDigits",
"HexCharacter",
"OctalNumber",
"DecimalNumber",
"DecimalDigits",
"DecimalNumberFollowedByIdentifier",
"Identifier",
"IdentifierStart",
"IdentifierPart",
"WS",
"COMMENT",
"LINE_COMMENT",
"AssemblyDialect",
"AssemblyLBrace",
"AssemblyFlagString",
"AssemblyBlockLParen",
"AssemblyBlockRParen",
"AssemblyBlockComma",
"AssemblyBlockWS",
"AssemblyBlockCOMMENT",
"AssemblyBlockLINE_COMMENT",
"YulBreak",
"YulCase",
"YulContinue",
"YulDefault",
"YulFalse",
"YulFor",
"YulFunction",
"YulIf",
"YulLeave",
"YulLet",
"YulSwitch",
"YulTrue",
"YulHex",
"YulEVMBuiltin",
"YulLBrace",
"YulRBrace",
"YulLParen",
"YulRParen",
"YulAssign",
"YulPeriod",
"YulComma",
"YulArrow",
"YulIdentifier",
"YulIdentifierStart",
"YulIdentifierPart",
"YulHexNumber",
"YulDecimalNumber",
"YulStringLiteral",
"YulHexStringLiteral",
"YulWS",
"YulCOMMENT",
"YulLINE_COMMENT",
"PragmaToken",
"PragmaSemicolon",
"PragmaWS",
"PragmaCOMMENT",
"PragmaLINE_COMMENT"
];
constructor(input) {
super(input);
this.interpreter = new antlr.LexerATNSimulator(this, SolidityLexer._ATN, SolidityLexer.decisionsToDFA, new antlr.PredictionContextCache());
}
get grammarFileName() {
return "SolidityLexer.g4";
}
get literalNames() {
return SolidityLexer.literalNames;
}
get symbolicNames() {
return SolidityLexer.symbolicNames;
}
get ruleNames() {
return SolidityLexer.ruleNames;
}
get serializedATN() {
return SolidityLexer._serializedATN;
}
get channelNames() {
return SolidityLexer.channelNames;
}
get modeNames() {
return SolidityLexer.modeNames;
}
static _serializedATN = [
4,
0,
177,
2816,
6,
-1,
6,
-1,
6,
-1,
6,
-1,
2,
0,
7,
0,
2,
1,
7,
1,
2,
2,
7,
2,
2,
3,
7,
3,
2,
4,
7,
4,
2,
5,
7,
5,
2,
6,
7,
6,
2,
7,
7,
7,
2,
8,
7,
8,
2,
9,
7,
9,
2,
10,
7,
10,
2,
11,
7,
11,
2,
12,
7,
12,
2,
13,
7,
13,
2,
14,
7,
14,
2,
15,
7,
15,
2,
16,
7,
16,
2,
17,
7,
17,
2,
18,
7,
18,
2,
19,
7,
19,
2,
20,
7,
20,
2,
21,
7,
21,
2,
22,
7,
22,
2,
23,
7,
23,
2,
24,
7,
24,
2,
25,
7,
25,
2,
26,
7,
26,
2,
27,
7,
27,
2,
28,
7,
28,
2,
29,
7,
29,
2,
30,
7,
30,
2,
31,
7,
31,
2,
32,
7,
32,
2,
33,
7,
33,
2,
34,
7,
34,
2,
35,
7,
35,
2,
36,
7,
36,
2,
37,
7,
37,
2,
38,
7,
38,
2,
39,
7,
39,
2,
40,
7,
40,
2,
41,
7,
41,
2,
42,
7,
42,
2,
43,
7,
43,
2,
44,
7,
44,
2,
45,
7,
45,
2,
46,
7,
46,
2,
47,
7,
47,
2,
48,
7,
48,
2,
49,
7,
49,
2,
50,
7,
50,
2,
51,
7,
51,
2,
52,
7,
52,
2,
53,
7,
53,
2,
54,
7,
54,
2,
55,
7,
55,
2,
56,
7,
56,
2,
57,
7,
57,
2,
58,
7,
58,
2,
59,
7,
59,
2,
60,
7,
60,
2,
61,
7,
61,
2,
62,
7,
62,
2,
63,
7,
63,
2,
64,
7,
64,
2,
65,
7,
65,
2,
66,
7,
66,
2,
67,
7,
67,
2,
68,
7,
68,
2,
69,
7,
69,
2,
70,
7,
70,
2,
71,
7,
71,
2,
72,
7,
72,
2,
73,
7,
73,
2,
74,
7,
74,
2,
75,
7,
75,
2,
76,
7,
76,
2,
77,
7,
77,
2,
78,
7,
78,
2,
79,
7,
79,
2,
80,
7,
80,
2,
81,
7,
81,
2,
82,
7,
82,
2,
83,
7,
83,
2,
84,
7,
84,
2,
85,
7,
85,
2,
86,
7,
86,
2,
87,
7,
87,
2,
88,
7,
88,
2,
89,
7,
89,
2,
90,
7,
90,
2,
91,
7,
91,
2,
92,
7,
92,
2,
93,
7,
93,
2,
94,
7,
94,
2,
95,
7,
95,
2,
96,
7,
96,
2,
97,
7,
97,
2,
98,
7,
98,
2,
99,
7,
99,
2,
100,
7,
100,
2,
101,
7,
101,
2,
102,
7,
102,
2,
103,
7,
103,
2,
104,
7,
104,
2,
105,
7,
105,
2,
106,
7,
106,
2,
107,
7,
107,
2,
108,
7,
108,
2,
109,
7,
109,
2,
110,
7,
110,
2,
111,
7,
111,
2,
112,
7,
112,
2,
113,
7,
113,
2,
114,
7,
114,
2,
115,
7,
115,
2,
116,
7,
116,
2,
117,
7,
117,
2,
118,
7,
118,
2,
119,
7,
119,
2,
120,
7,
120,
2,
121,
7,
121,
2,
122,
7,
122,
2,
123,
7,
123,
2,
124,
7,
124,
2,
125,
7,
125,
2,
126,
7,
126,
2,
127,
7,
127,
2,
128,
7,
128,
2,
129,
7,
129,
2,
130,
7,
130,
2,
131,
7,
131,
2,
132,
7,
132,
2,
133,
7,
133,
2,
134,
7,
134,
2,
135,
7,
135,
2,
136,
7,
136,
2,
137,
7,
137,
2,
138,
7,
138,
2,
139,
7,
139,
2,
140,
7,
140,
2,
141,
7,
141,
2,
142,
7,
142,
2,
143,
7,
143,
2,
144,
7,
144,
2,
145,
7,
145,
2,
146,
7,
146,
2,
147,
7,
147,
2,
148,
7,
148,
2,
149,
7,
149,
2,
150,
7,
150,
2,
151,
7,
151,
2,
152,
7,
152,
2,
153,
7,
153,
2,
154,
7,
154,
2,
155,
7,
155,
2,
156,
7,
156,
2,
157,
7,
157,
2,
158,
7,
158,
2,
159,
7,
159,
2,
160,
7,
160,
2,
161,
7,
161,
2,
162,
7,
162,
2,
163,
7,
163,
2,
164,
7,
164,
2,
165,
7,
165,
2,
166,
7,
166,
2,
167,
7,
167,
2,
168,
7,
168,
2,
169,
7,
169,
2,
170,
7,
170,
2,
171,
7,
171,
2,
172,
7,
172,
2,
173,
7,
173,
2,
174,
7,
174,
2,
175,
7,
175,
2,
176,
7,
176,
2,
177,
7,
177,
2,
178,
7,
178,
2,
179,
7,
179,
2,
180,
7,
180,
2,
181,
7,
181,
2,
182,
7,
182,
2,
183,
7,
183,
2,
184,
7,
184,
2,
185,
7,
185,
2,
186,
7,
186,
2,
187,
7,
187,
2,
188,
7,
188,
2,
189,
7,
189,
2,
190,
7,
190,
2,
191,
7,
191,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
1,
0,
3,
0,
566,
8,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
2,
1,
2,
1,
2,
1,
2,
1,
2,
1,
2,
1,
2,
1,
2,
1,
3,
1,
3,
1,
3,
1,
3,
1,
3,
1,
3,
1,
3,
1,
3,
1,
3,
1,
3,
1,
4,
1,
4,
1,
4,
1,
5,
1,
5,
1,
5,
1,
5,
1,
5,
1,
5,
1,
5,
1,
5,
1,
5,
1,
5,
1,
5,
1,
6,
1,
6,
1,
6,
1,
6,
1,
6,
1,
7,
1,
7,
1,
7,
1,
7,
1,
7,
1,
7,
1,
8,
1,
8,
1,
8,
1,
8,
1,
8,
1,
8,
1,
9,
1,
9,
1,
9,
1,
9,
1,
9,
1,
9,
1,
9,
1,
9,
1,
9,
1,
10,
1,
10,
1,
10,
1,
10,
1,
10,
1,
10,
1,
11,
1,
11,
1,
11,
1,
11,
1,
11,
1,
11,
1,
11,
1,
11,
1,
11,
1,
12,
1,
12,
1,
12,
1,
12,
1,
12,
1,
12,
1,
12,
1,
12,
1,
12,
1,
12,
1,
12,
1,
12,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
14,
1,
14,
1,
14,
1,
14,
1,
14,
1,
14,
1,
14,
1,
14,
1,
14,
1,
15,
1,
15,
1,
15,
1,
15,
1,
15,
1,
15,
1,
15,
1,
16,
1,
16,
1,
16,
1,
17,
1,
17,
1,
17,
1,
17,
1,
17,
1,
18,
1,
18,
1,
18,
1,
18,
1,
18,
1,
19,
1,
19,
1,
19,
1,
19,
1,
19,
1,
20,
1,
20,
1,
20,
1,
20,
1,
20,
1,
20,
1,
21,
1,
21,
1,
21,
1,
21,
1,
21,
1,
21,
1,
22,
1,
22,
1,
22,
1,
22,
1,
22,
1,
22,
1,
22,
1,
22,
1,
22,
1,
23,
1,
23,
1,
23,
1,
23,
1,
23,
1,
23,
1,
23,
1,
23,
1,
23,
1,
24,
1,
24,
1,
24,
1,
24,
1,
24,
1,
24,
1,
25,
1,
25,
1,
25,
1,
25,
1,
25,
1,
25,
1,
25,
1,
25,
1,
25,
1,
25,
1,
25,
1,
25,
1,
25,
5,
25,
754,
8,
25,
10,
25,
12,
25,
757,
9,
25,
1,
25,
1,
25,
1,
25,
5,
25,
762,
8,
25,
10,
25,
12,
25,
765,
9,
25,
3,
25,
767,
8,
25,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
1,
26,
3,
26,
984,
8,
26,
1,
27,
1,
27,
1,
27,
1,
27,
1,
28,
1,
28,
1,
28,
1,
28,
1,
28,
1,
29,
1,
29,
1,
29,
1,
29,
1,
29,
1,
29,
1,
29,
1,
29,
1,
29,
1,
30,
1,
30,
1,
30,
1,
30,
1,
30,
1,
30,
1,
30,
1,
31,
1,
31,
1,
31,
1,
31,
1,
32,
1,
32,
1,
32,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
37,
1,
37,
1,
37,
1,
37,
1,
37,
1,
37,
1,
37,
1,
37,
1,
37,
1,
38,
1,
38,
1,
38,
1,
39,
1,
39,
1,
39,
1,
39,
1,
39,
1,
39,
1,
39,
1,
39,
1,
40,
1,
40,
1,
40,
1,
40,
1,
40,
1,
40,
1,
40,
1,
40,
1,
41,
1,
41,
1,
41,
1,
41,
1,
41,
1,
41,
1,
41,
1,
42,
1,
42,
1,
42,
1,
42,
1,
42,
1,
42,
1,
42,
1,
42,
1,
42,
1,
43,
1,
43,
1,
43,
1,
43,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
3,
44,
1146,
8,
44,
1,
45,
1,
45,
1,
45,
1,
45,
1,
45,
1,
45,
1,
45,
1,
45,
1,
45,
1,
46,
1,
46,
1,
46,
1,
46,
1,
46,
1,
46,
1,
46,
1,
46,
1,
47,
1,
47,
1,
47,
1,
47,
1,
47,
1,
47,
1,
47,
1,
47,
1,
47,
1,
48,
1,
48,
1,
48,
1,
48,
1,
48,
1,
48,
1,
48,
1,
48,
1,
49,
1,
49,
1,
49,
1,
49,
1,
49,
1,
49,
1,
49,
1,
50,
1,
50,
1,
50,
1,
50,
1,
50,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
52,
1,
52,
1,
52,
1,
52,
1,
52,
1,
52,
1,
52,
1,
53,
1,
53,
1,
53,
1,
53,
1,
53,
1,
53,
1,
53,
1,
53,
1,
54,
1,
54,
1,
54,
1,
54,
1,
54,
1,
54,
1,
54,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
1,
55,
3,
55,
1406,
8,
55,
1,
56,
1,
56,
1,
56,
1,
56,
1,
56,
1,
56,
1,
56,
1,
56,
1,
57,
1,
57,
1,
57,
1,
57,
1,
57,
1,
57,
1,
57,
1,
58,
1,
58,
1,
58,
1,
58,
1,
58,
1,
58,
1,
58,
1,
59,
1,
59,
1,
59,
1,
59,
1,
59,
1,
60,
1,
60,
1,
60,
1,
60,
1,
61,
1,
61,
1,
61,
1,
61,
1,
61,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
4,
62,
1459,
8,
62,
11,
62,
12,
62,
1460,
1,
62,
1,
62,
1,
62,
4,
62,
1466,
8,
62,
11,
62,
12,
62,
1467,
3,
62,
1470,
8,
62,
1,
63,
1,
63,
1,
63,
1,
63,
1,
63,
1,
63,
1,
63,
1,
63,
1,
63,
1,
63,
1,
64,
1,
64,
1,
64,
1,
64,
1,
64,
1,
64,
1,
64,
1,
64,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
1,
65,
3,
65,
1705,
8,
65,
1,
66,
1,
66,
1,
66,
1,
66,
1,
66,
1,
66,
1,
67,
1,
67,
1,
67,
1,
67,
1,
67,
1,
68,
1,
68,
1,
68,
1,
68,
1,
68,
1,
68,
1,
68,
1,
68,
1,
69,
1,
69,
1,
69,
1,
69,
1,
69,
1,
69,
1,
70,
1,
70,
1,
71,
1,
71,
1,
72,
1,
72,
1,
73,
1,
73,
1,
74,
1,
74,
1,
75,
1,
75,
1,
76,
1,
76,
1,
77,
1,
77,
1,
78,
1,
78,
1,
79,
1,
79,
1,
80,
1,
80,
1,
80,
1,
81,
1,
81,
1,
81,
1,
82,
1,
82,
1,
83,
1,
83,
1,
83,
1,
84,
1,
84,
1,
84,
1,
85,
1,
85,
1,
85,
1,
86,
1,
86,
1,
86,
1,
86,
1,
87,
1,
87,
1,
87,
1,
87,
1,
88,
1,
88,
1,
88,
1,
88,
1,
88,
1,
89,
1,
89,
1,
89,
1,
90,
1,
90,
1,
90,
1,
91,
1,
91,
1,
91,
1,
92,
1,
92,
1,
92,
1,
93,
1,
93,
1,
93,
1,
94,
1,
94,
1,
95,
1,
95,
1,
95,
1,
96,
1,
96,
1,
96,
1,
97,
1,
97,
1,
98,
1,
98,
1,
99,
1,
99,
1,
100,
1,
100,
1,
100,
1,
101,
1,
101,
1,
101,
1,
102,
1,
102,
1,
102,
1,
102,
1,
103,
1,
103,
1,
104,
1,
104,
1,
105,
1,
105,
1,
106,
1,
106,
1,
107,
1,
107,
1,
108,
1,
108,
1,
108,
1,
109,
1,
109,
1,
109,
1,
110,
1,
110,
1,
110,
1,
111,
1,
111,
1,
112,
1,
112,
1,
113,
1,
113,
1,
113,
1,
114,
1,
114,
1,
114,
1,
115,
1,
115,
1,
116,
1,
116,
1,
117,
1,
117,
1,
117,
1,
118,
1,
118,
1,
118,
1,
119,
1,
119,
1,
120,
1,
120,
1,
121,
1,
121,
4,
121,
1866,
8,
121,
11,
121,
12,
121,
1867,
1,
121,
1,
121,
1,
121,
1,
121,
4,
121,
1874,
8,
121,
11,
121,
12,
121,
1875,
1,
121,
1,
121,
3,
121,
1880,
8,
121,
1,
122,
1,
122,
1,
122,
1,
122,
3,
122,
1886,
8,
122,
1,
123,
1,
123,
3,
123,
1890,
8,
123,
1,
124,
1,
124,
3,
124,
1894,
8,
124,
1,
125,
1,
125,
1,
126,
1,
126,
1,
127,
1,
127,
1,
127,
1,
127,
1,
127,
1,
127,
1,
127,
1,
127,
1,
127,
1,
127,
1,
127,
1,
127,
3,
127,
1912,
8,
127,
1,
128,
1,
128,
1,
128,
1,
128,
1,
128,
1,
128,
1,
128,
1,
128,
1,
128,
1,
128,
5,
128,
1924,
8,
128,
10,
128,
12,
128,
1927,
9,
128,
1,
128,
1,
128,
1,
128,
5,
128,
1932,
8,
128,
10,
128,
12,
128,
1935,
9,
128,
1,
128,
3,
128,
1938,
8,
128,
1,
129,
1,
129,
3,
129,
1942,
8,
129,
1,
130,
1,
130,
3,
130,
1946,
8,
130,
1,
131,
1,
131,
1,
131,
1,
131,
1,
131,
1,
131,
3,
131,
1954,
8,
131,
1,
131,
1,
131,
1,
131,
3,
131,
1959,
8,
131,
1,
131,
3,
131,
1962,
8,
131,
1,
132,
1,
132,
1,
132,
1,
132,
1,
133,
1,
133,
3,
133,
1970,
8,
133,
1,
133,
5,
133,
1973,
8,
133,
10,
133,
12,
133,
1976,
9,
133,
1,
134,
1,
134,
1,
134,
3,
134,
1981,
8,
134,
1,
134,
1,
134,
1,
134,
5,
134,
1986,
8,
134,
10,
134,
12,
134,
1989,
9,
134,
1,
135,
1,
135,
1,
136,
1,
136,
1,
136,
1,
136,
3,
136,
1997,
8,
136,
1,
137,
1,
137,
3,
137,
2001,
8,
137,
1,
137,
1,
137,
3,
137,
2005,
8,
137,
1,
137,
1,
137,
3,
137,
2009,
8,
137,
1,
137,
3,
137,
2012,
8,
137,
1,
138,
1,
138,
3,
138,
2016,
8,
138,
1,
138,
5,
138,
2019,
8,
138,
10,
138,
12,
138,
2022,
9,
138,
1,
139,
1,
139,
1,
139,
1,
140,
1,
140,
5,
140,
2029,
8,
140,
10,
140,
12,
140,
2032,
9,
140,
1,
141,
1,
141,
1,
142,
1,
142,
1,
143,
4,
143,
2039,
8,
143,
11,
143,
12,
143,
2040,
1,
143,
1,
143,
1,
144,
1,
144,
1,
144,
1,
144,
5,
144,
2049,
8,
144,
10,
144,
12,
144,
2052,
9,
144,
1,
144,
1,
144,
1,
144,
1,
144,
1,
144,
1,
145,
1,
145,
1,
145,
1,
145,
5,
145,
2063,
8,
145,
10,
145,
12,
145,
2066,
9,
145,
1,
145,
1,
145,
1,
146,
1,
146,
1,
146,
1,
146,
1,
146,
1,
146,
1,
146,
1,
146,
1,
146,
1,
147,
1,
147,
1,
147,
1,
147,
1,
147,
1,
148,
1,
148,
4,
148,
2086,
8,
148,
11,
148,
12,
148,
2087,
1,
148,
1,
148,
1,
149,
1,
149,
1,
150,
1,
150,
1,
151,
1,
151,
1,
152,
4,
152,
2099,
8,
152,
11,
152,
12,
152,
2100,
1,
152,
1,
152,
1,
153,
1,
153,
1,
153,
1,
153,
5,
153,
2109,
8,
153,
10,
153,
12,
153,
2112,
9,
153,
1,
153,
1,
153,
1,
153,
1,
153,
1,
153,
1,
154,
1,
154,
1,
154,
1,
154,
5,
154,
2123,
8,
154,
10,
154,
12,
154,
2126,
9,
154,
1,
154,
1,
154,
1,
155,
1,
155,
1,
155,
1,
155,
1,
155,
1,
155,
1,
156,
1,
156,
1,
156,
1,
156,
1,
156,
1,
157,
1,
157,
1,
157,
1,
157,
1,
157,
1,
157,
1,
157,
1,
157,
1,
157,
1,
158,
1,
158,
1,
158,
1,
158,
1,
158,
1,
158,
1,
158,
1,
158,
1,
159,
1,
159,
1,
159,
1,
159,
1,
159,
1,
159,
1,
160,
1,
160,
1,
160,
1,
160,
1,
161,
1,
161,
1,
161,
1,
161,
1,
161,
1,
161,
1,
161,
1,
161,
1,
161,
1,
162,
1,
162,
1,
162,
1,
163,
1,
163,
1,
163,
1,
163,
1,
163,
1,
163,
1,
164,
1,
164,
1,
164,
1,
164,
1,
165,
1,
165,
1,
165,
1,
165,
1,
165,
1,
165,
1,
165,
1,
166,
1,
166,
1,
166,
1,
166,
1,
166,
1,
167,
1,
167,
1,
167,
1,
167,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,
1,
168,