buntis
Version:
A 100% compliant, self-hosted typescript parser that emits an ESTree-compatible abstract syntax tree
3,115 lines (3,107 loc) • 391 kB
JavaScript
System.register('buntis', [], function (exports) {
'use strict';
return {
execute: function () {
exports({
parseModule: parseModule,
parseScript: parseScript,
parseTSModule: parseTSModule,
parseTSScript: parseTSScript
});
var estree = /*#__PURE__*/Object.freeze({
});
exports('ESTree', estree);
const KeywordDescTable = [
'end of source',
'identifier',
'number',
'string',
'regular expression',
'false',
'true',
'null',
'template continuation',
'template end',
'=>',
'(',
'{',
'.',
'...',
'}',
')',
';',
',',
'[',
']',
':',
'?',
'?.',
"'",
'"',
'</',
'/>',
'++',
'--',
'=',
'<<=',
'>>=',
'>>>=',
'**=',
'+=',
'-=',
'*=',
'/=',
'%=',
'^=',
'|=',
'&=',
'typeof',
'delete',
'void',
'!',
'~',
'+',
'-',
'in',
'instanceof',
'*',
'%',
'/',
'**',
'&&',
'||',
'===',
'!==',
'==',
'!=',
'<=',
'>=',
'<',
'>',
'<<',
'>>',
'>>>',
'&',
'|',
'^',
'?.',
'var',
'let',
'const',
'break',
'case',
'catch',
'class',
'continue',
'debugger',
'default',
'do',
'else',
'export',
'extends',
'finally',
'for',
'function',
'if',
'import',
'new',
'return',
'super',
'switch',
'this',
'throw',
'try',
'while',
'with',
'implements',
'interface',
'package',
'private',
'protected',
'public',
'static',
'yield',
'as',
'async',
'await',
'constructor',
'get',
'set',
'from',
'of',
'Whitespace',
'CarriageReturn',
'LineFeed',
'LeadingZero',
'Error',
'#',
'BigIntLiteral',
'enum',
'Backslash',
'declare',
'type',
'abstract',
'namespace',
'module',
'global',
'keyof',
'unique',
'is',
'readonly',
'infer',
'require',
'asserts',
'EscapedStrictReserved',
'EscapedKeyword',
'JSXText',
'At'
];
const descKeywordTable = Object.create(null, {
this: { value: 139360 },
function: { value: 139353 },
if: { value: 438362 },
return: { value: 438365 },
var: { value: 134357065 },
else: { value: 438356 },
for: { value: 438360 },
new: { value: 139356 },
in: { value: 16918578 },
typeof: { value: 33693739 },
while: { value: 438371 },
case: { value: 438349 },
break: { value: 438348 },
try: { value: 438370 },
catch: { value: 438350 },
delete: { value: 33693740 },
throw: { value: 438369 },
switch: { value: 139359 },
continue: { value: 438352 },
default: { value: 438354 },
instanceof: { value: 16918579 },
do: { value: 438355 },
void: { value: 33693741 },
finally: { value: 438359 },
async: { value: 430190 },
await: { value: 168047 },
class: { value: 139343 },
const: { value: 134357067 },
constructor: { value: 4208 },
debugger: { value: 438353 },
export: { value: 134656085 },
extends: { value: 8278 },
false: { value: 139269 },
from: { value: 4211 },
get: { value: 4209 },
implements: { value: 16485 },
import: { value: 139355 },
interface: { value: 134664294 },
let: { value: 184394 },
null: { value: 139271 },
of: { value: 4212 },
package: { value: 16487 },
private: { value: 540776 },
protected: { value: 540777 },
public: { value: 540778 },
set: { value: 4210 },
static: { value: 540779 },
super: { value: 139358 },
true: { value: 139270 },
with: { value: 438372 },
yield: { value: 184428 },
enum: { value: 134226044 },
as: { value: 16915309 },
declare: { value: 36990 },
type: { value: 134254719 },
abstract: { value: 134779008 },
namespace: { value: 134254721 },
module: { value: 134254722 },
global: { value: 134254723 },
keyof: { value: 36996 },
unique: { value: 36997 },
is: { value: 36998 },
readonly: { value: 561287 },
infer: { value: 37000 },
require: { value: 37001 },
asserts: { value: 138 }
});
const unicodeLookup = ((compressed, lookup) => {
const result = new Uint32Array(104448);
let index = 0;
let subIndex = 0;
while (index < 3460) {
const inst = compressed[index++];
if (inst < 0) {
subIndex -= inst;
}
else {
let code = compressed[index++];
if (inst & 2)
code = lookup[code];
if (inst & 1) {
result.fill(code, subIndex, (subIndex += compressed[index++]));
}
else {
result[subIndex++] = code;
}
}
}
return result;
})([
-1,
2,
27,
2,
28,
2,
5,
-1,
0,
77595648,
3,
46,
2,
3,
0,
14,
2,
57,
2,
58,
3,
0,
3,
0,
3168796671,
0,
4294956992,
2,
1,
2,
0,
2,
59,
3,
0,
4,
0,
4294966523,
3,
0,
4,
2,
16,
2,
60,
2,
0,
0,
4294836735,
0,
3221225471,
0,
4294901942,
2,
61,
0,
134152192,
3,
0,
2,
0,
4294951935,
3,
0,
2,
0,
2683305983,
0,
2684354047,
2,
17,
2,
0,
0,
4294961151,
3,
0,
2,
2,
20,
2,
0,
0,
608174079,
2,
0,
2,
128,
2,
6,
2,
62,
-1,
2,
64,
2,
25,
2,
1,
3,
0,
3,
0,
4294901711,
2,
41,
0,
4089839103,
0,
2961209759,
0,
1342439375,
0,
4294543342,
0,
3547201023,
0,
1577204103,
0,
4194240,
0,
4294688750,
2,
2,
0,
80831,
0,
4261478351,
0,
4294549486,
2,
2,
0,
2965387679,
0,
196559,
0,
3594373100,
0,
3288319768,
0,
8469959,
2,
192,
0,
4294828031,
0,
3825204735,
0,
123747807,
0,
65487,
2,
3,
0,
4092591615,
0,
1080049119,
0,
458703,
2,
3,
2,
0,
0,
2163244511,
0,
4227923919,
0,
4236247020,
2,
69,
0,
4284449919,
0,
851904,
2,
4,
2,
11,
0,
67076095,
-1,
2,
70,
0,
1073741743,
0,
4093591391,
-1,
0,
50331649,
0,
3265266687,
2,
35,
0,
4294844415,
0,
4278190047,
2,
22,
2,
126,
-1,
3,
0,
2,
2,
32,
2,
0,
2,
9,
2,
0,
2,
14,
2,
15,
3,
0,
10,
2,
72,
2,
0,
2,
73,
2,
74,
2,
75,
2,
0,
2,
76,
2,
0,
2,
10,
0,
261632,
2,
19,
3,
0,
2,
2,
12,
2,
4,
3,
0,
18,
2,
77,
2,
5,
3,
0,
2,
2,
78,
0,
2088959,
2,
30,
2,
8,
0,
909311,
3,
0,
2,
0,
814743551,
2,
43,
0,
67057664,
3,
0,
2,
2,
42,
2,
0,
2,
31,
2,
0,
2,
18,
2,
7,
0,
268374015,
2,
29,
2,
51,
2,
0,
2,
79,
0,
134153215,
-1,
2,
6,
2,
0,
2,
7,
0,
2684354559,
0,
67044351,
0,
1073676416,
-2,
3,
0,
2,
2,
44,
0,
1046528,
3,
0,
3,
2,
8,
2,
0,
2,
52,
0,
4294960127,
2,
9,
2,
40,
2,
10,
0,
4294377472,
2,
11,
3,
0,
7,
0,
4227858431,
3,
0,
8,
2,
12,
2,
0,
2,
81,
2,
9,
2,
0,
2,
82,
2,
83,
2,
84,
-1,
2,
122,
0,
1048577,
2,
85,
2,
13,
-1,
2,
13,
0,
131042,
2,
86,
2,
87,
2,
88,
2,
0,
2,
36,
-83,
2,
0,
2,
54,
2,
7,
3,
0,
4,
0,
1046559,
2,
0,
2,
14,
2,
0,
0,
2147516671,
2,
23,
3,
89,
2,
2,
0,
-16,
2,
90,
0,
524222462,
2,
4,
2,
0,
0,
4269801471,
2,
4,
2,
0,
2,
15,
2,
80,
2,
16,
3,
0,
2,
2,
49,
2,
11,
-1,
2,
17,
-16,
3,
0,
205,
2,
18,
-2,
3,
0,
655,
2,
19,
3,
0,
36,
2,
71,
-1,
2,
17,
2,
9,
3,
0,
8,
2,
92,
2,
119,
2,
0,
0,
3220242431,
3,
0,
3,
2,
20,
2,
21,
2,
93,
3,
0,
2,
2,
94,
2,
0,
2,
95,
2,
21,
2,
0,
2,
26,
2,
0,
2,
8,
3,
0,
2,
0,
67043391,
0,
3909091327,
2,
0,
2,
24,
2,
8,
2,
22,
3,
0,
2,
0,
67076097,
2,
7,
2,
0,
2,
23,
0,
67059711,
0,
4236247039,
3,
0,
2,
0,
939524103,
0,
8191999,
2,
98,
2,
99,
2,
15,
2,
33,
3,
0,
3,
0,
67057663,
3,
0,
349,
2,
100,
2,
101,
2,
6,
-264,
3,
0,
11,
2,
24,
3,
0,
2,
2,
34,
-1,
0,
3774349439,
2,
102,
2,
103,
3,
0,
2,
2,
20,
2,
25,
3,
0,
10,
2,
9,
2,
17,
2,
0,
2,
47,
2,
0,
2,
26,
2,
104,
2,
19,
0,
1638399,
2,
172,
2,
105,
3,
0,
3,
2,
22,
2,
27,
2,
28,
2,
5,
2,
29,
2,
0,
2,
7,
2,
106,
-1,
2,
107,
2,
108,
2,
109,
-1,
3,
0,
3,
2,
11,
-2,
2,
0,
2,
30,
-3,
2,
150,
-4,
2,
22,
2,
0,
2,
38,
0,
1,
2,
0,
2,
63,
2,
31,
2,
11,
2,
9,
2,
0,
2,
110,
-1,
3,
0,
4,
2,
9,
2,
32,
2,
111,
2,
6,
2,
0,
2,
33,
2,
0,
2,
50,
-4,
3,
0,
9,
2,
23,
2,
18,
2,
26,
-4,
2,
112,
2,
113,
2,
18,
2,
23,
2,
7,
-2,
2,
114,
2,
18,
2,
34,
-2,
2,
0,
2,
115,
-2,
0,
4277137519,
0,
2269118463,
-1,
3,
22,
2,
-1,
2,
35,
2,
39,
2,
0,
3,
18,
2,
2,
37,
2,
20,
-3,
3,
0,
2,
2,
36,
-1,
2,
0,
2,
37,
2,
0,
2,
37,
2,
0,
2,
48,
-14,
2,
22,
2,
45,
2,
38,
-4,
2,
23,
3,
0,
2,
2,
39,
0,
2147549120,
2,
0,
2,
11,
2,
17,
2,
134,
2,
0,
2,
53,
0,
4294901872,
0,
5242879,
3,
0,
2,
0,
402595359,
-1,
2,
118,
0,
1090519039,
-2,
2,
120,
2,
40,
2,
0,
0,
67045375,
2,
41,
0,
4226678271,
0,
3766565279,
0,
2039759,
-4,
3,
0,
2,
0,
3288270847,
-1,
3,
0,
2,
0,
67043519,
-5,
2,
0,
0,
4282384383,
0,
1056964609,
-1,
3,
0,
2,
0,
67043345,
-1,
2,
0,
2,
42,
2,
43,
-1,
2,
10,
2,
44,
-6,
2,
0,
2,
11,
-3,
3,
0,
2,
0,
2147484671,
-5,
2,
123,
0,
4244635647,
0,
27,
2,
0,
2,
7,
2,
45,
2,
0,
2,
65,
-1,
2,
0,
2,
42,
-8,
2,
55,
2,
46,
0,
67043329,
2,
124,
2,
47,
0,
8388351,
-2,
2,
125,
0,
3028287487,
2,
48,
2,
127,
0,
33259519,
2,
43,
-9,
2,
23,
-8,
3,
0,
28,
2,
34,
-3,
3,
0,
3,
2,
49,
3,
0,
6,
2,
50,
-85,
3,
0,
33,
2,
49,
-126,
3,
0,
18,
2,
39,
-269,
3,
0,
17,
2,
42,
2,
7,
2,
43,
-2,
2,
17,
2,
51,
2,
0,
2,
23,
0,
67043343,
2,
129,
2,
19,
-21,
3,
0,
2,
-4,
3,
0,
2,
0,
4294936575,
2,
0,
0,
4294934783,
-2,
2,
130,
3,
0,
191,
2,
52,
3,
0,
23,
2,
37,
-296,
3,
0,
8,
2,
7,
-1,
2,
131,
2,
132,
3,
0,
11,
2,
6,
-72,
3,
0,
3,
2,
133,
0,
1677656575,
-166,
0,
4161266656,
0,
4071,
0,
15360,
-4,
0,
28,
-13,
3,
0,
2,
2,
53,
2,
0,
2,
135,
2,
136,
2,
56,
2,
0,
2,
137,
2,
138,
2,
139,
3,
0,
10,
2,
140,
2,
141,
2,
15,
3,
53,
2,
3,
54,
2,
3,
55,
2,
0,
4294954999,
2,
0,
-16,
2,
0,
2,
91,
2,
0,
0,
2105343,
0,
4160749584,
0,
65534,
-42,
0,
4194303871,
0,
2011,
-6,
2,
0,
0,
1073684479,
0,
17407,
-11,
2,
0,
2,
34,
-40,
3,
0,
6,
0,
8323103,
-1,
3,
0,
2,
2,
44,
-37,
2,
56,
2,
144,
2,
145,
2,
146,
2,
147,
2,
148,
-138,
3,
0,
1334,
2,
23,
-1,
3,
0,
129,
2,
30,
3,
0,
6,
2,
9,
3,
0,
180,
2,
149,
3,
0,
233,
0,
1,
-96,
3,
0,
16,
2,
9,
-22583,
3,
0,
7,
2,
19,
-6130,
3,
5,
2,
-1,
0,
69207040,
3,
46,
2,
3,
0,
14,
2,
57,
2,
58,
-3,
0,
3168731136,
0,
4294956864,
2,
1,
2,
0,
2,
59,
3,
0,
4,
0,
4294966275,
3,
0,
4,
2,
16,
2,
60,
2,
0,
2,
36,
-1,
2,
17,
2,
61,
-1,
2,
0,
2,
62,
0,
4294885376,
3,
0,
2,
0,
3145727,
0,
2617294944,
0,
4294770688,
2,
19,
2,
63,
3,
0,
2,
0,
131135,
2,
96,
0,
70256639,
0,
71303167,
0,
272,
2,
42,
2,
62,
-1,
2,
64,
-2,
2,
97,
2,
65,
0,
4278255616,
0,
4294836227,
0,
4294549473,
0,
600178175,
0,
2952806400,
0,
268632067,
0,
4294543328,
0,
57540095,
0,
1577058304,
0,
1835008,
0,
4294688736,
2,
66,
2,
67,
0,
33554435,
2,
121,
2,
66,
2,
151,
0,
131075,
0,
3594373096,
0,
67094296,
2,
67,
-1,
2,
68,
0,
603979263,
2,
160,
0,
3,
0,
4294828001,
0,
602930687,
2,
181,
0,
393219,
2,
68,
0,
671088639,
0,
2154840064,
0,
4227858435,
0,
4236247008,
2,
69,
2,
39,
-1,
2,
4,
0,
917503,
2,
39,
-1,
2,
70,
0,
537788335,
0,
4026531935,
-1,
0,
1,
-1,
2,
35,
2,
71,
0,
7936,
-3,
2,
0,
0,
2147485695,
0,
1010761728,
0,
4292984930,
0,
16387,
2,
0,
2,
14,
2,
15,
3,
0,
10,
2,
72,
2,
0,
2,
73,
2,
74,
2,
75,
2,
0,
2,
76,
2,
0,
2,
11,
-1,
2,
19,
3,
0,
2,
2,
12,
2,
4,
3,
0,
18,
2,
77,
2,
5,
3,
0,
2,
2,
78,
0,
253951,
3,
20,
2,
0,
122879,
2,
0,
2,
8,
0,
276824064,
-2,
3,
0,
2,
2,
42,
2,
0,
0,
4294903295,
2,
0,
2,
18,
2,
7,
-1,
2,
17,
2,
51,
2,
0,
2,
79,
2,
43,
-1,
2,
23,
2,
0,
2,
30,
-2,
0,
128,
-2,
2,
80,
2,
8,
0,
4064,
-1,
2,
117,
0,
4227907585,
2,
0,
2,
116,
2,
0,
2,
50,
0,
4227915776,
2,
9,
2,
40,
2,
10,
-1,
0,
74440192,
3,
0,
6,
-2,
3,
0,
8,
2,
12,
2,
0,
2,
81,
2,
9,
2,
0,
2,
82,
2,
83,
2,
84,
-3,
2,
85,
2,
13,
-3,
2,
86,
2,
87,
2,
88,
2,
0,
2,
36,
-83,
2,
0,
2,
54,
2,
7,
3,
0,
4,
0,
817183,
2,
0,
2,
14,
2,
0,
0,
33023,
2,
23,
3,
89,
2,
-17,
2,
90,
0,
524157950,
2,
4,
2,
0,
2,
91,
2,
4,
2,
0,
2,
15,
2,
80,
2,
16,
3,
0,
2,
2,
49,
2,
11,
-1,
2,
17,
-16,
3,
0,
205,
2,
18,
-2,
3,
0,
655,
2,
19,
3,
0,
36,
2,
71,
-1,
2,
17,
2,
9,
3,
0,
8,
2,
92,
0,
3072,
2,
0,
0,
2147516415,
2,
9,
3,
0,
2,
2,
19,
2,
21,
2,
93,
3,
0,
2,
2,
94,
2,
0,
2,
95,
2,
21,
0,
4294965179,
0,
7,
2,
0,
2,
8,
2,
93,
2,
8,
-1,
0,
1761345536,
2,
96,
0,
4294901823,
2,
39,
2,
22,
2,
97,
2,
37,
2,
165,
0,
2080440287,
2,
0,
2,
36,
2,
142,
0,
3296722943,
2,
0,
0,
1046675455,
0,
939524101,
0,
1837055,
2,
98,
2,
99,
2,
15,
2,
33,
3,
0,
3,
0,
7,
3,
0,
349,
2,
100,
2,
101,
2,
6,
-264,
3,
0,
11,
2,
24,
3,
0,
2,
2,
34,
-1,
0,
2700607615,
2,
102,
2,
103,
3,
0,
2,
2,
20,
2,
25,
3,
0,
10,
2,
9,
2,
17,
2,
0,
2,
47,
2,
0,
2,
26,
2,
104,
-3,
2,
105,
3,
0,
3,
2,
22,
-1,
3,
5,
2,
2,
29,
2,
0,
2,
7,
2,
106,
-1,
2,
107,
2,
108,
2,
109,
-1,
3,
0,
3,
2,
11,
-2,
2,
0,
2,
30,
-8,
2,
22,
2,
0,
2,
38,
-1,
2,
0,
2,
63,
2,
31,
2,
18,
2,
9,
2,
0,
2,
110,
-1,
3,
0,
4,
2,
9,
2,
17,
2,
111,
2,
6,
2,
0,
2,
33,
2,
0,
2,
50,
-4,
3,
0,
9,
2,
23,
2,
18,
2,
26,
-4,
2,
112,
2,
113,
2,
18,
2,
23,
2,
7,
-2,
2,
114,
2,
18,
2,
34,
-2,
2,
0,
2,
115,
-2,
0,
4277075969,
2,
18,
-1,
3,
22,
2,
-1,
2,
35,
2,
143,
2,
0,
3,
18,
2,
2,
37,
2,
20,
-3,
3,
0,
2,
2,
36,
-1,
2,
0,
2,
37,
2,
0,
2,
37,
2,
0,
2,
50,
-14,
2,
22,
2,
45,
2,
116,
-4,
2,
23,
2,
117,
2,
52,
-2,
2,
117,
2,
19,
2,
17,
2,
36,
2,
117,
2,
39,
0,
4294901776,
0,
4718591,
2,
117,
2,
37,
0,
335544350,
-1,
2,
118,
2,
119,
-2,
2,
120,
2,
40,
2,
7,
-1,
2,
121,
2,
66,
0,
3758161920,
0,
3,
-4,
2,
0,
2,
30,
0,
2147485568,
-1,
2,
0,
2,
19,
0,
176,
-5,
2,
0,
2,
49,
2,
183,
-1,
2,
0,
2,
19,
2,
195,
-1,
2,
0,
0,
16779263,
-2,
2,
11,
-7,
2,
0,
2,
119,
-3,
3,
0,
2,
2,
122,
-5,
2,
123,
2,
38,
0,
10,
0,
4294965249,
0,
67633151,
0,
4026597376,
2,
0,
0,
536871935,
-1,
2,
0,
2,
42,
-8,
2,
55,
2,
49,
0,
1,
2,
124,
2,
19,
-3,
2,
125,
2,
38,
2,
126,
2,
127,
0,
16778239,
-10,
2,
37,
-8,
3,
0,
28,
2,
34,
-3,
3,
0,
3,
2,
49,
3,
0,
6,
2,
50,
-85,
3,
0,
33,
2,
49,
-126,
3,
0,
18,
2,
39,
-269,
3,
0,
17,
2,
42,
2,
7,
-3,
2,
17,
2,
128,
2,
0,
2,
19,
2,
50,
2,
129,
2,
19,
-21,
3,
0,
2,
-4,
3,
0,
2,
0,
67583,
-1,
2,
25,
-2,
2,
130,
3,
0,
191,
2,
52,
3,
0,
23,
2,
37,
-296,
3,
0,
8,
2,
7,
-1,
2,
131,
2,
132,
3,
0,
11,
2,
6,
-72,
3,
0,
3,
2,
133,
2,
134,
-187,
3,
0,
2,
2,
53,
2,
0,
2,
135,
2,
136,
2,
56,
2,
0,
2,
137,
2,
138,
2,
139,
3,
0,
10,
2,
140,
2,
141,
2,
15,
3,
53,
2,
3,
54,
2,
3,
55,
2,
2,
142,
-73,
2,
0,
0,
1065361407,
0,
16384,
-11,
2,
0,
2,
119,
-40,
3,
0,
6,
2,
143,
-1,
3,
0,
2,
0,
2063,
-37,
2,
56,
2,
144,
2,
145,
2,
146,
2,
147,
2,
148,
-138,
3,
0,
1334,
2,
23,
-1,
3,
0,
129,
2,
30,
3,
0,
6,
2,
9,
3,
0,
180,
2,
149,
3,
0,
233,
0,
1,
-96,
3,
0,
16,
2,
9,
-28719,
2,
0,
0,
1,
-1,
2,
122,
2,
0,
0,
8193,
-21,
2,
191,
0,
10255,
0,
4,
-11,
2,
67,
2,
170,
-1,
0,
71680,
-1,
2,
161,
0,
4292900864,
0,
805306431,
-5,
2,
150,
-1,
2,
177,
-1,
2,
200,
-2,
2,
124,
-1,
2,
154,
-1,
2,
157,
2,
151,
2,
164,
2,
0,
0,
3223322624,
2,
37,
0,
4,
-4,
2,
189,
0,
205128192,
0,
1333757536,
0,
2147483696,
0,
423953,
0,
747766272,
0,
2717763192,
0,
4286578751,
0,
278545,
2,
152,
0,
4294886464,
0,
33292336,
0,
417809,
2,
152,
0,
1329579616,
0,
4278190128,
0,
700594195,
0,
1006647527,
0,
4286497336,
0,
4160749631,
2,
153,
0,
469762560,
0,
4171219488,
0,
8323120,
2,
153,
0,
202375680,
0,
3214918176,
0,
4294508592,
0,
139280,
-1,
0,
983584,
0,
48,
0,
58720275,
0,
3489923072,
0,
10517376,
0,
4293066815,
0,
1,
0,
2013265920,
2,
176,
2,
0,
0,
2089,
0,
3221225552,
0,
201375904,
2,
0,
-2,
0,
256,
0,
122880,
0,
16777216,
2,
150,
0,
4160757760,
2,
0,
-6,
2,
166,
-11,
0,
3263218176,
-1,
0,
49664,
0,
2160197632,
0,
8388802,
-1,
0,
12713984,
-1,
2,
154,
2,
159,
2,
178,
-2,
2,
162,
-20,
0,
3758096385,
-2,
2,
155,
0,
4292878336,
2,
21,
2,
168,
0,
4294057984,
-2,
2,
163,
2,
156,
2,
174,
-2,
2,
155,
-1,
2,
180,
-1,
2,
169,
2,
122,
0,
4026593280,
0,
14,
0,
4292919296,
-1,
2,
158,
0,
939588608,
-1,
0,
805306368,
-1,
2,
122,
0,
1610612736,
2,
156,
2,
157,
3,
0,
2,
-2,
2,
158,
2,
159,
-3,
0,
267386880,
-1,
2,
160,
0,
7168,
-1,
0,
65024,
2,
154,
2,
161,
2,
171,
-7,
2,
167,
-8,
2,
162,
-1,
0,
1426112704,
2,
163,
-1,
2,
186,
0,
271581216,
0,
2149777408,
2,
19,
2,
161,
2,
122,
0,
851967,
0,
3758129152,
-1,
2,
19,
2,
179,
-4,
2,
158,
-20,
2,
193,
2,
164,
-56,
0,
3145728,
2,
185,
-4,
2,
165,
2,
122,
-4,
0,
32505856,
-1,
2,
166,
-1,
0,
2147385088,
2,
21,
1,
2155905152,
2,
-3,
2,
17,
2,
0,
2,
167,
-2,
2,
168,
-6,
2,
169,
0,
4026597375,
0,
1,
-1,
0,
1,
-1,
2,
170,
-3,
2,
143,
2,
67,
-2,
2,
165,
2,
171,
-1,
2,
175,
2,
122,
-6,
2,
122,
-213,
2,
169,
-657,
2,
17,
-36,
2,
172,
-1,
2,
187,
-10,
2,
198,
-5,
2,
173,
-6,
0,
4294967171,
2,
23,
-1,
0,
4227919872,
-1,
2,
173,
-2,
0,
4227874752,
-3,
0,
2146435072,
2,
159,
-2,
0,
1006649344,
2,
122,
-1,
2,
21,
0,
201375744,
-3,
0,
134217720,
2,
21,
0,
4286677377,
0,
32896,
-1,
2,
161,
-3,
2,
174,
-349,
2,
175,
0,
1920,
2,
176,
3,
0,
264,
-11,
2,
177,
-2,
2,
178,
2,
0,
0,
520617856,
0,
2692743168,
0,
36,
-3,
0,
524284,
-11,
2,
19,
-1,
2,
184,
-1,
2,
182,
0,
3221291007,
2,
178,
-1,
0,
524288,
0,
2158720,
-3,
2,
159,
0,
1,
-4,
2,
122,
0,
3808625411,
0,
3489628288,
2,
199,
0,
1207959680,
0,
3221274624,
2,
0,
-3,
2,
171,
0,
120,
0,
7340032,
-2,
0,
4026564608,
2,
4,
2,
19,
2,
163,
3,
0,
4,
2,
159,
-1,
2,
179,
2,
176,
-1,
0,
8176,
2,
180,
2,
171,
2,
181,
-1,
0,
4290773232,
2,
0,
-4,
2,
163,
2,