circuitscript 0.0.32 → 0.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/cjs/BaseVisitor.js +187 -39
  2. package/dist/cjs/antlr/CircuitScriptLexer.js +226 -185
  3. package/dist/cjs/antlr/CircuitScriptParser.js +1439 -902
  4. package/dist/cjs/draw_symbols.js +1 -0
  5. package/dist/cjs/execute.js +14 -12
  6. package/dist/cjs/globals.js +14 -2
  7. package/dist/cjs/helpers.js +62 -19
  8. package/dist/cjs/layout.js +88 -36
  9. package/dist/cjs/objects/ClassComponent.js +3 -0
  10. package/dist/cjs/objects/ExecutionScope.js +1 -0
  11. package/dist/cjs/objects/Frame.js +4 -1
  12. package/dist/cjs/objects/ParamDefinition.js +1 -7
  13. package/dist/cjs/objects/types.js +6 -0
  14. package/dist/cjs/regenerate-tests.js +2 -1
  15. package/dist/cjs/render.js +238 -42
  16. package/dist/cjs/visitor.js +162 -27
  17. package/dist/esm/BaseVisitor.mjs +189 -41
  18. package/dist/esm/antlr/CircuitScriptLexer.mjs +226 -185
  19. package/dist/esm/antlr/CircuitScriptParser.mjs +1428 -899
  20. package/dist/esm/antlr/CircuitScriptVisitor.mjs +9 -2
  21. package/dist/esm/draw_symbols.mjs +1 -0
  22. package/dist/esm/execute.mjs +14 -12
  23. package/dist/esm/globals.mjs +13 -1
  24. package/dist/esm/helpers.mjs +61 -20
  25. package/dist/esm/layout.mjs +88 -37
  26. package/dist/esm/objects/ClassComponent.mjs +3 -0
  27. package/dist/esm/objects/ExecutionScope.mjs +1 -0
  28. package/dist/esm/objects/Frame.mjs +5 -1
  29. package/dist/esm/objects/ParamDefinition.mjs +0 -6
  30. package/dist/esm/objects/types.mjs +6 -0
  31. package/dist/esm/regenerate-tests.mjs +2 -1
  32. package/dist/esm/render.mjs +234 -43
  33. package/dist/esm/visitor.mjs +164 -29
  34. package/dist/types/BaseVisitor.d.ts +8 -2
  35. package/dist/types/antlr/CircuitScriptLexer.d.ts +41 -30
  36. package/dist/types/antlr/CircuitScriptParser.d.ts +169 -81
  37. package/dist/types/antlr/CircuitScriptVisitor.d.ts +18 -4
  38. package/dist/types/draw_symbols.d.ts +2 -1
  39. package/dist/types/execute.d.ts +6 -3
  40. package/dist/types/globals.d.ts +11 -0
  41. package/dist/types/helpers.d.ts +12 -0
  42. package/dist/types/layout.d.ts +17 -9
  43. package/dist/types/objects/ClassComponent.d.ts +2 -1
  44. package/dist/types/objects/ExecutionScope.d.ts +2 -0
  45. package/dist/types/objects/Frame.d.ts +6 -2
  46. package/dist/types/objects/ParamDefinition.d.ts +0 -4
  47. package/dist/types/objects/types.d.ts +4 -2
  48. package/dist/types/render.d.ts +6 -14
  49. package/dist/types/visitor.d.ts +10 -2
  50. package/libs/lib.cst +283 -0
  51. package/package.json +1 -1
@@ -24,38 +24,49 @@ export class CircuitScriptParser extends antlr.Parser {
24
24
  static Return = 22;
25
25
  static Define = 23;
26
26
  static Import = 24;
27
- static If = 25;
28
- static Else = 26;
29
- static Not = 27;
30
- static Frame = 28;
31
- static Equals = 29;
32
- static NotEquals = 30;
33
- static GreaterThan = 31;
34
- static GreatOrEqualThan = 32;
35
- static LessThan = 33;
36
- static LessOrEqualThan = 34;
37
- static LogicalAnd = 35;
38
- static LogicalOr = 36;
39
- static Addition = 37;
40
- static Minus = 38;
41
- static Divide = 39;
42
- static Multiply = 40;
43
- static OPEN_PAREN = 41;
44
- static CLOSE_PAREN = 42;
45
- static NOT_CONNECTED = 43;
46
- static BOOLEAN_VALUE = 44;
47
- static ID = 45;
48
- static INTEGER_VALUE = 46;
49
- static DECIMAL_VALUE = 47;
50
- static NUMERIC_VALUE = 48;
51
- static STRING_VALUE = 49;
52
- static PERCENTAGE_VALUE = 50;
53
- static ALPHA_NUMERIC = 51;
54
- static WS = 52;
55
- static NEWLINE = 53;
56
- static COMMENT = 54;
57
- static INDENT = 55;
58
- static DEDENT = 56;
27
+ static For = 25;
28
+ static In = 26;
29
+ static While = 27;
30
+ static Continue = 28;
31
+ static If = 29;
32
+ static Else = 30;
33
+ static Not = 31;
34
+ static Frame = 32;
35
+ static Sheet = 33;
36
+ static Equals = 34;
37
+ static NotEquals = 35;
38
+ static GreaterThan = 36;
39
+ static GreatOrEqualThan = 37;
40
+ static LessThan = 38;
41
+ static LessOrEqualThan = 39;
42
+ static LogicalAnd = 40;
43
+ static LogicalOr = 41;
44
+ static Addition = 42;
45
+ static Minus = 43;
46
+ static Divide = 44;
47
+ static Multiply = 45;
48
+ static Modulus = 46;
49
+ static AdditionAssign = 47;
50
+ static MinusAssign = 48;
51
+ static DivideAssign = 49;
52
+ static MultiplyAssign = 50;
53
+ static ModulusAssign = 51;
54
+ static OPEN_PAREN = 52;
55
+ static CLOSE_PAREN = 53;
56
+ static NOT_CONNECTED = 54;
57
+ static BOOLEAN_VALUE = 55;
58
+ static ID = 56;
59
+ static INTEGER_VALUE = 57;
60
+ static DECIMAL_VALUE = 58;
61
+ static NUMERIC_VALUE = 59;
62
+ static STRING_VALUE = 60;
63
+ static PERCENTAGE_VALUE = 61;
64
+ static ALPHA_NUMERIC = 62;
65
+ static WS = 63;
66
+ static NEWLINE = 64;
67
+ static COMMENT = 65;
68
+ static INDENT = 66;
69
+ static DEDENT = 67;
59
70
  static RULE_script = 0;
60
71
  static RULE_expression = 1;
61
72
  static RULE_expressions_block = 2;
@@ -80,56 +91,65 @@ export class CircuitScriptParser extends antlr.Parser {
80
91
  static RULE_at_block_pin_expression_simple = 21;
81
92
  static RULE_at_block_pin_expression_complex = 22;
82
93
  static RULE_break_keyword = 23;
83
- static RULE_assignment_expr = 24;
84
- static RULE_keyword_assignment_expr = 25;
85
- static RULE_parameters = 26;
86
- static RULE_property_set_expr = 27;
87
- static RULE_double_dot_property_set_expr = 28;
88
- static RULE_data_expr = 29;
89
- static RULE_binary_operator = 30;
90
- static RULE_unary_operator = 31;
91
- static RULE_value_expr = 32;
92
- static RULE_function_def_expr = 33;
93
- static RULE_function_expr = 34;
94
- static RULE_function_args_expr = 35;
95
- static RULE_atom_expr = 36;
96
- static RULE_trailer_expr = 37;
97
- static RULE_function_call_expr = 38;
98
- static RULE_net_namespace_expr = 39;
99
- static RULE_function_return_expr = 40;
100
- static RULE_property_block_expr = 41;
101
- static RULE_create_component_expr = 42;
102
- static RULE_create_graphic_expr = 43;
103
- static RULE_create_module_expr = 44;
104
- static RULE_nested_properties_inner = 45;
105
- static RULE_graphic_expr = 46;
106
- static RULE_property_expr = 47;
107
- static RULE_property_key_expr = 48;
108
- static RULE_property_value_expr = 49;
109
- static RULE_blank_expr = 50;
110
- static RULE_wire_atom_expr = 51;
111
- static RULE_wire_expr = 52;
112
- static RULE_point_expr = 53;
113
- static RULE_import_expr = 54;
114
- static RULE_frame_expr = 55;
115
- static RULE_if_expr = 56;
116
- static RULE_if_inner_expr = 57;
117
- static RULE_else_expr = 58;
94
+ static RULE_continue_keyword = 24;
95
+ static RULE_assignment_expr = 25;
96
+ static RULE_operator_assignment_expr = 26;
97
+ static RULE_keyword_assignment_expr = 27;
98
+ static RULE_parameters = 28;
99
+ static RULE_property_set_expr = 29;
100
+ static RULE_double_dot_property_set_expr = 30;
101
+ static RULE_data_expr = 31;
102
+ static RULE_binary_operator = 32;
103
+ static RULE_unary_operator = 33;
104
+ static RULE_value_expr = 34;
105
+ static RULE_function_def_expr = 35;
106
+ static RULE_function_expr = 36;
107
+ static RULE_function_args_expr = 37;
108
+ static RULE_atom_expr = 38;
109
+ static RULE_trailer_expr = 39;
110
+ static RULE_function_call_expr = 40;
111
+ static RULE_net_namespace_expr = 41;
112
+ static RULE_function_return_expr = 42;
113
+ static RULE_property_block_expr = 43;
114
+ static RULE_create_component_expr = 44;
115
+ static RULE_graphic_expressions_block = 45;
116
+ static RULE_create_graphic_expr = 46;
117
+ static RULE_create_module_expr = 47;
118
+ static RULE_nested_properties_inner = 48;
119
+ static RULE_graphic_expr = 49;
120
+ static RULE_property_expr = 50;
121
+ static RULE_property_key_expr = 51;
122
+ static RULE_property_value_expr = 52;
123
+ static RULE_wire_atom_expr = 53;
124
+ static RULE_wire_expr = 54;
125
+ static RULE_array_expr = 55;
126
+ static RULE_point_expr = 56;
127
+ static RULE_import_expr = 57;
128
+ static RULE_frame_expr = 58;
129
+ static RULE_if_expr = 59;
130
+ static RULE_if_inner_expr = 60;
131
+ static RULE_else_expr = 61;
132
+ static RULE_while_expr = 62;
133
+ static RULE_for_expr = 63;
118
134
  static literalNames = [
119
135
  null, "':'", "','", "'='", "'..'", "'.'", "'['", "']'", "'break'",
120
136
  "'branch'", "'create'", "'component'", "'graphic'", "'module'",
121
137
  "'wire'", "'pin'", "'add'", "'at'", "'to'", "'point'", "'join'",
122
- "'parallel'", "'return'", "'def'", "'import'", "'if'", "'else'",
123
- "'!'", "'frame'", "'=='", "'!='", "'>'", "'>='", "'<'", "'<='",
124
- "'&&'", "'||'", "'+'", "'-'", "'/'", "'*'", "'('", "')'"
138
+ "'parallel'", "'return'", "'def'", "'import'", "'for'", "'in'",
139
+ "'while'", "'continue'", "'if'", "'else'", "'!'", "'frame'", "'sheet'",
140
+ "'=='", "'!='", "'>'", "'>='", "'<'", "'<='", "'&&'", "'||'", "'+'",
141
+ "'-'", "'/'", "'*'", "'%'", "'+='", "'-='", "'/='", "'*='", "'%='",
142
+ "'('", "')'"
125
143
  ];
126
144
  static symbolicNames = [
127
145
  null, null, null, null, null, null, null, null, "Break", "Branch",
128
146
  "Create", "Component", "Graphic", "Module", "Wire", "Pin", "Add",
129
147
  "At", "To", "Point", "Join", "Parallel", "Return", "Define", "Import",
130
- "If", "Else", "Not", "Frame", "Equals", "NotEquals", "GreaterThan",
131
- "GreatOrEqualThan", "LessThan", "LessOrEqualThan", "LogicalAnd",
132
- "LogicalOr", "Addition", "Minus", "Divide", "Multiply", "OPEN_PAREN",
148
+ "For", "In", "While", "Continue", "If", "Else", "Not", "Frame",
149
+ "Sheet", "Equals", "NotEquals", "GreaterThan", "GreatOrEqualThan",
150
+ "LessThan", "LessOrEqualThan", "LogicalAnd", "LogicalOr", "Addition",
151
+ "Minus", "Divide", "Multiply", "Modulus", "AdditionAssign", "MinusAssign",
152
+ "DivideAssign", "MultiplyAssign", "ModulusAssign", "OPEN_PAREN",
133
153
  "CLOSE_PAREN", "NOT_CONNECTED", "BOOLEAN_VALUE", "ID", "INTEGER_VALUE",
134
154
  "DECIMAL_VALUE", "NUMERIC_VALUE", "STRING_VALUE", "PERCENTAGE_VALUE",
135
155
  "ALPHA_NUMERIC", "WS", "NEWLINE", "COMMENT", "INDENT", "DEDENT"
@@ -141,16 +161,18 @@ export class CircuitScriptParser extends antlr.Parser {
141
161
  "pin_select_expr2", "at_component_expr", "to_component_expr", "at_to_multiple_expr",
142
162
  "at_to_multiple_line_expr", "at_to_multiple_line_expr_to_pin", "at_block",
143
163
  "at_block_expressions", "at_block_pin_expr", "at_block_pin_expression_simple",
144
- "at_block_pin_expression_complex", "break_keyword", "assignment_expr",
145
- "keyword_assignment_expr", "parameters", "property_set_expr", "double_dot_property_set_expr",
164
+ "at_block_pin_expression_complex", "break_keyword", "continue_keyword",
165
+ "assignment_expr", "operator_assignment_expr", "keyword_assignment_expr",
166
+ "parameters", "property_set_expr", "double_dot_property_set_expr",
146
167
  "data_expr", "binary_operator", "unary_operator", "value_expr",
147
168
  "function_def_expr", "function_expr", "function_args_expr", "atom_expr",
148
169
  "trailer_expr", "function_call_expr", "net_namespace_expr", "function_return_expr",
149
- "property_block_expr", "create_component_expr", "create_graphic_expr",
150
- "create_module_expr", "nested_properties_inner", "graphic_expr",
151
- "property_expr", "property_key_expr", "property_value_expr", "blank_expr",
152
- "wire_atom_expr", "wire_expr", "point_expr", "import_expr", "frame_expr",
153
- "if_expr", "if_inner_expr", "else_expr",
170
+ "property_block_expr", "create_component_expr", "graphic_expressions_block",
171
+ "create_graphic_expr", "create_module_expr", "nested_properties_inner",
172
+ "graphic_expr", "property_expr", "property_key_expr", "property_value_expr",
173
+ "wire_atom_expr", "wire_expr", "array_expr", "point_expr", "import_expr",
174
+ "frame_expr", "if_expr", "if_inner_expr", "else_expr", "while_expr",
175
+ "for_expr",
154
176
  ];
155
177
  get grammarFileName() { return "CircuitScript.g4"; }
156
178
  get literalNames() { return CircuitScriptParser.literalNames; }
@@ -171,12 +193,12 @@ export class CircuitScriptParser extends antlr.Parser {
171
193
  try {
172
194
  this.enterOuterAlt(localContext, 1);
173
195
  {
174
- this.state = 120;
196
+ this.state = 130;
175
197
  this.errorHandler.sync(this);
176
198
  _la = this.tokenStream.LA(1);
177
199
  do {
178
200
  {
179
- this.state = 120;
201
+ this.state = 130;
180
202
  this.errorHandler.sync(this);
181
203
  switch (this.tokenStream.LA(1)) {
182
204
  case CircuitScriptParser.T__3:
@@ -191,19 +213,23 @@ export class CircuitScriptParser extends antlr.Parser {
191
213
  case CircuitScriptParser.Parallel:
192
214
  case CircuitScriptParser.Define:
193
215
  case CircuitScriptParser.Import:
216
+ case CircuitScriptParser.For:
217
+ case CircuitScriptParser.While:
218
+ case CircuitScriptParser.Continue:
194
219
  case CircuitScriptParser.If:
195
220
  case CircuitScriptParser.Frame:
221
+ case CircuitScriptParser.Sheet:
196
222
  case CircuitScriptParser.Addition:
197
223
  case CircuitScriptParser.Divide:
198
224
  case CircuitScriptParser.ID:
199
225
  {
200
- this.state = 118;
226
+ this.state = 128;
201
227
  this.expression();
202
228
  }
203
229
  break;
204
230
  case CircuitScriptParser.NEWLINE:
205
231
  {
206
- this.state = 119;
232
+ this.state = 129;
207
233
  this.match(CircuitScriptParser.NEWLINE);
208
234
  }
209
235
  break;
@@ -211,11 +237,11 @@ export class CircuitScriptParser extends antlr.Parser {
211
237
  throw new antlr.NoViableAltException(this);
212
238
  }
213
239
  }
214
- this.state = 122;
240
+ this.state = 132;
215
241
  this.errorHandler.sync(this);
216
242
  _la = this.tokenStream.LA(1);
217
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 331301648) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 65797) !== 0));
218
- this.state = 124;
243
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 4210693) !== 0));
244
+ this.state = 134;
219
245
  this.match(CircuitScriptParser.EOF);
220
246
  }
221
247
  }
@@ -237,135 +263,163 @@ export class CircuitScriptParser extends antlr.Parser {
237
263
  let localContext = new ExpressionContext(this.context, this.state);
238
264
  this.enterRule(localContext, 2, CircuitScriptParser.RULE_expression);
239
265
  try {
240
- this.state = 144;
266
+ this.state = 158;
241
267
  this.errorHandler.sync(this);
242
268
  switch (this.interpreter.adaptivePredict(this.tokenStream, 2, this.context)) {
243
269
  case 1:
244
270
  this.enterOuterAlt(localContext, 1);
245
271
  {
246
- this.state = 126;
272
+ this.state = 136;
247
273
  this.add_component_expr();
248
274
  }
249
275
  break;
250
276
  case 2:
251
277
  this.enterOuterAlt(localContext, 2);
252
278
  {
253
- this.state = 127;
279
+ this.state = 137;
254
280
  this.to_component_expr();
255
281
  }
256
282
  break;
257
283
  case 3:
258
284
  this.enterOuterAlt(localContext, 3);
259
285
  {
260
- this.state = 128;
286
+ this.state = 138;
261
287
  this.at_component_expr();
262
288
  }
263
289
  break;
264
290
  case 4:
265
291
  this.enterOuterAlt(localContext, 4);
266
292
  {
267
- this.state = 129;
293
+ this.state = 139;
268
294
  this.assignment_expr();
269
295
  }
270
296
  break;
271
297
  case 5:
272
298
  this.enterOuterAlt(localContext, 5);
273
299
  {
274
- this.state = 130;
275
- this.property_set_expr();
300
+ this.state = 140;
301
+ this.operator_assignment_expr();
276
302
  }
277
303
  break;
278
304
  case 6:
279
305
  this.enterOuterAlt(localContext, 6);
280
306
  {
281
- this.state = 131;
282
- this.property_set_expr2();
307
+ this.state = 141;
308
+ this.property_set_expr();
283
309
  }
284
310
  break;
285
311
  case 7:
286
312
  this.enterOuterAlt(localContext, 7);
287
313
  {
288
- this.state = 132;
289
- this.double_dot_property_set_expr();
314
+ this.state = 142;
315
+ this.property_set_expr2();
290
316
  }
291
317
  break;
292
318
  case 8:
293
319
  this.enterOuterAlt(localContext, 8);
294
320
  {
295
- this.state = 133;
296
- this.break_keyword();
321
+ this.state = 143;
322
+ this.double_dot_property_set_expr();
297
323
  }
298
324
  break;
299
325
  case 9:
300
326
  this.enterOuterAlt(localContext, 9);
301
327
  {
302
- this.state = 134;
303
- this.function_def_expr();
328
+ this.state = 144;
329
+ this.break_keyword();
304
330
  }
305
331
  break;
306
332
  case 10:
307
333
  this.enterOuterAlt(localContext, 10);
308
334
  {
309
- this.state = 135;
310
- this.function_call_expr();
335
+ this.state = 145;
336
+ this.continue_keyword();
311
337
  }
312
338
  break;
313
339
  case 11:
314
340
  this.enterOuterAlt(localContext, 11);
315
341
  {
316
- this.state = 136;
317
- this.wire_expr();
342
+ this.state = 146;
343
+ this.function_def_expr();
318
344
  }
319
345
  break;
320
346
  case 12:
321
347
  this.enterOuterAlt(localContext, 12);
322
348
  {
323
- this.state = 137;
324
- this.import_expr();
349
+ this.state = 147;
350
+ this.function_call_expr();
325
351
  }
326
352
  break;
327
353
  case 13:
328
354
  this.enterOuterAlt(localContext, 13);
329
355
  {
330
- this.state = 138;
331
- this.frame_expr();
356
+ this.state = 148;
357
+ this.wire_expr();
332
358
  }
333
359
  break;
334
360
  case 14:
335
361
  this.enterOuterAlt(localContext, 14);
336
362
  {
337
- this.state = 139;
338
- this.atom_expr();
363
+ this.state = 149;
364
+ this.import_expr();
339
365
  }
340
366
  break;
341
367
  case 15:
342
368
  this.enterOuterAlt(localContext, 15);
343
369
  {
344
- this.state = 140;
345
- this.at_block();
370
+ this.state = 150;
371
+ this.frame_expr();
346
372
  }
347
373
  break;
348
374
  case 16:
349
375
  this.enterOuterAlt(localContext, 16);
350
376
  {
351
- this.state = 141;
352
- this.path_blocks();
377
+ this.state = 151;
378
+ this.atom_expr();
353
379
  }
354
380
  break;
355
381
  case 17:
356
382
  this.enterOuterAlt(localContext, 17);
357
383
  {
358
- this.state = 142;
359
- this.point_expr();
384
+ this.state = 152;
385
+ this.at_block();
360
386
  }
361
387
  break;
362
388
  case 18:
363
389
  this.enterOuterAlt(localContext, 18);
364
390
  {
365
- this.state = 143;
391
+ this.state = 153;
392
+ this.path_blocks();
393
+ }
394
+ break;
395
+ case 19:
396
+ this.enterOuterAlt(localContext, 19);
397
+ {
398
+ this.state = 154;
399
+ this.point_expr();
400
+ }
401
+ break;
402
+ case 20:
403
+ this.enterOuterAlt(localContext, 20);
404
+ {
405
+ this.state = 155;
366
406
  this.if_expr();
367
407
  }
368
408
  break;
409
+ case 21:
410
+ this.enterOuterAlt(localContext, 21);
411
+ {
412
+ this.state = 156;
413
+ this.while_expr();
414
+ }
415
+ break;
416
+ case 22:
417
+ this.enterOuterAlt(localContext, 22);
418
+ {
419
+ this.state = 157;
420
+ this.for_expr();
421
+ }
422
+ break;
369
423
  }
370
424
  }
371
425
  catch (re) {
@@ -389,21 +443,21 @@ export class CircuitScriptParser extends antlr.Parser {
389
443
  try {
390
444
  this.enterOuterAlt(localContext, 1);
391
445
  {
392
- this.state = 146;
446
+ this.state = 160;
393
447
  this.match(CircuitScriptParser.NEWLINE);
394
- this.state = 147;
448
+ this.state = 161;
395
449
  this.match(CircuitScriptParser.INDENT);
396
- this.state = 150;
450
+ this.state = 164;
397
451
  this.errorHandler.sync(this);
398
452
  _la = this.tokenStream.LA(1);
399
453
  do {
400
454
  {
401
- this.state = 150;
455
+ this.state = 164;
402
456
  this.errorHandler.sync(this);
403
457
  switch (this.tokenStream.LA(1)) {
404
458
  case CircuitScriptParser.NEWLINE:
405
459
  {
406
- this.state = 148;
460
+ this.state = 162;
407
461
  this.match(CircuitScriptParser.NEWLINE);
408
462
  }
409
463
  break;
@@ -419,13 +473,17 @@ export class CircuitScriptParser extends antlr.Parser {
419
473
  case CircuitScriptParser.Parallel:
420
474
  case CircuitScriptParser.Define:
421
475
  case CircuitScriptParser.Import:
476
+ case CircuitScriptParser.For:
477
+ case CircuitScriptParser.While:
478
+ case CircuitScriptParser.Continue:
422
479
  case CircuitScriptParser.If:
423
480
  case CircuitScriptParser.Frame:
481
+ case CircuitScriptParser.Sheet:
424
482
  case CircuitScriptParser.Addition:
425
483
  case CircuitScriptParser.Divide:
426
484
  case CircuitScriptParser.ID:
427
485
  {
428
- this.state = 149;
486
+ this.state = 163;
429
487
  this.expression();
430
488
  }
431
489
  break;
@@ -433,11 +491,11 @@ export class CircuitScriptParser extends antlr.Parser {
433
491
  throw new antlr.NoViableAltException(this);
434
492
  }
435
493
  }
436
- this.state = 152;
494
+ this.state = 166;
437
495
  this.errorHandler.sync(this);
438
496
  _la = this.tokenStream.LA(1);
439
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 331301648) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 65797) !== 0));
440
- this.state = 154;
497
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 4210693) !== 0));
498
+ this.state = 168;
441
499
  this.match(CircuitScriptParser.DEDENT);
442
500
  }
443
501
  }
@@ -462,7 +520,7 @@ export class CircuitScriptParser extends antlr.Parser {
462
520
  let alternative;
463
521
  this.enterOuterAlt(localContext, 1);
464
522
  {
465
- this.state = 157;
523
+ this.state = 171;
466
524
  this.errorHandler.sync(this);
467
525
  alternative = 1;
468
526
  do {
@@ -470,7 +528,7 @@ export class CircuitScriptParser extends antlr.Parser {
470
528
  case 1:
471
529
  {
472
530
  {
473
- this.state = 156;
531
+ this.state = 170;
474
532
  this.path_block_inner();
475
533
  }
476
534
  }
@@ -478,7 +536,7 @@ export class CircuitScriptParser extends antlr.Parser {
478
536
  default:
479
537
  throw new antlr.NoViableAltException(this);
480
538
  }
481
- this.state = 159;
539
+ this.state = 173;
482
540
  this.errorHandler.sync(this);
483
541
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 5, this.context);
484
542
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
@@ -505,7 +563,7 @@ export class CircuitScriptParser extends antlr.Parser {
505
563
  try {
506
564
  this.enterOuterAlt(localContext, 1);
507
565
  {
508
- this.state = 161;
566
+ this.state = 175;
509
567
  _la = this.tokenStream.LA(1);
510
568
  if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 3670528) !== 0))) {
511
569
  this.errorHandler.recoverInline(this);
@@ -514,9 +572,9 @@ export class CircuitScriptParser extends antlr.Parser {
514
572
  this.errorHandler.reportMatch(this);
515
573
  this.consume();
516
574
  }
517
- this.state = 162;
575
+ this.state = 176;
518
576
  this.match(CircuitScriptParser.T__0);
519
- this.state = 163;
577
+ this.state = 177;
520
578
  this.expressions_block();
521
579
  }
522
580
  }
@@ -541,32 +599,32 @@ export class CircuitScriptParser extends antlr.Parser {
541
599
  try {
542
600
  this.enterOuterAlt(localContext, 1);
543
601
  {
544
- this.state = 165;
602
+ this.state = 179;
545
603
  this.atom_expr();
546
- this.state = 166;
604
+ this.state = 180;
547
605
  this.match(CircuitScriptParser.T__0);
548
- this.state = 167;
606
+ this.state = 181;
549
607
  this.match(CircuitScriptParser.NEWLINE);
550
- this.state = 168;
608
+ this.state = 182;
551
609
  this.match(CircuitScriptParser.INDENT);
552
- this.state = 171;
610
+ this.state = 185;
553
611
  this.errorHandler.sync(this);
554
612
  _la = this.tokenStream.LA(1);
555
613
  do {
556
614
  {
557
- this.state = 171;
615
+ this.state = 185;
558
616
  this.errorHandler.sync(this);
559
617
  switch (this.tokenStream.LA(1)) {
560
618
  case CircuitScriptParser.NEWLINE:
561
619
  {
562
- this.state = 169;
620
+ this.state = 183;
563
621
  this.match(CircuitScriptParser.NEWLINE);
564
622
  }
565
623
  break;
566
624
  case CircuitScriptParser.ID:
567
625
  case CircuitScriptParser.INTEGER_VALUE:
568
626
  {
569
- this.state = 170;
627
+ this.state = 184;
570
628
  this.assignment_expr2();
571
629
  }
572
630
  break;
@@ -574,11 +632,11 @@ export class CircuitScriptParser extends antlr.Parser {
574
632
  throw new antlr.NoViableAltException(this);
575
633
  }
576
634
  }
577
- this.state = 173;
635
+ this.state = 187;
578
636
  this.errorHandler.sync(this);
579
637
  _la = this.tokenStream.LA(1);
580
- } while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 259) !== 0));
581
- this.state = 175;
638
+ } while (((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 259) !== 0));
639
+ this.state = 189;
582
640
  this.match(CircuitScriptParser.DEDENT);
583
641
  }
584
642
  }
@@ -603,18 +661,18 @@ export class CircuitScriptParser extends antlr.Parser {
603
661
  try {
604
662
  this.enterOuterAlt(localContext, 1);
605
663
  {
606
- this.state = 177;
664
+ this.state = 191;
607
665
  _la = this.tokenStream.LA(1);
608
- if (!(_la === 45 || _la === 46)) {
666
+ if (!(_la === 56 || _la === 57)) {
609
667
  this.errorHandler.recoverInline(this);
610
668
  }
611
669
  else {
612
670
  this.errorHandler.reportMatch(this);
613
671
  this.consume();
614
672
  }
615
- this.state = 178;
673
+ this.state = 192;
616
674
  this.match(CircuitScriptParser.T__0);
617
- this.state = 179;
675
+ this.state = 193;
618
676
  this.value_expr();
619
677
  }
620
678
  }
@@ -639,11 +697,11 @@ export class CircuitScriptParser extends antlr.Parser {
639
697
  try {
640
698
  this.enterOuterAlt(localContext, 1);
641
699
  {
642
- this.state = 181;
700
+ this.state = 195;
643
701
  this.match(CircuitScriptParser.Pin);
644
- this.state = 182;
702
+ this.state = 196;
645
703
  _la = this.tokenStream.LA(1);
646
- if (!(_la === 46 || _la === 49)) {
704
+ if (!(_la === 57 || _la === 60)) {
647
705
  this.errorHandler.recoverInline(this);
648
706
  }
649
707
  else {
@@ -672,14 +730,13 @@ export class CircuitScriptParser extends antlr.Parser {
672
730
  try {
673
731
  this.enterOuterAlt(localContext, 1);
674
732
  {
675
- this.state = 184;
733
+ this.state = 198;
676
734
  this.match(CircuitScriptParser.ID);
677
- this.state = 185;
735
+ this.state = 199;
678
736
  this.match(CircuitScriptParser.T__0);
679
- this.state = 188;
737
+ this.state = 202;
680
738
  this.errorHandler.sync(this);
681
739
  switch (this.tokenStream.LA(1)) {
682
- case CircuitScriptParser.T__5:
683
740
  case CircuitScriptParser.Minus:
684
741
  case CircuitScriptParser.BOOLEAN_VALUE:
685
742
  case CircuitScriptParser.INTEGER_VALUE:
@@ -688,13 +745,13 @@ export class CircuitScriptParser extends antlr.Parser {
688
745
  case CircuitScriptParser.STRING_VALUE:
689
746
  case CircuitScriptParser.PERCENTAGE_VALUE:
690
747
  {
691
- this.state = 186;
748
+ this.state = 200;
692
749
  this.value_expr();
693
750
  }
694
751
  break;
695
752
  case CircuitScriptParser.ID:
696
753
  {
697
- this.state = 187;
754
+ this.state = 201;
698
755
  this.match(CircuitScriptParser.ID);
699
756
  }
700
757
  break;
@@ -725,44 +782,44 @@ export class CircuitScriptParser extends antlr.Parser {
725
782
  let alternative;
726
783
  this.enterOuterAlt(localContext, 1);
727
784
  {
728
- this.state = 192;
785
+ this.state = 206;
729
786
  this.errorHandler.sync(this);
730
787
  switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context)) {
731
788
  case 1:
732
789
  {
733
- this.state = 190;
790
+ this.state = 204;
734
791
  this.data_expr(0);
735
792
  }
736
793
  break;
737
794
  case 2:
738
795
  {
739
- this.state = 191;
796
+ this.state = 205;
740
797
  this.assignment_expr();
741
798
  }
742
799
  break;
743
800
  }
744
- this.state = 197;
801
+ this.state = 211;
745
802
  this.errorHandler.sync(this);
746
803
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context);
747
804
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
748
805
  if (alternative === 1) {
749
806
  {
750
807
  {
751
- this.state = 194;
808
+ this.state = 208;
752
809
  this.component_modifier_expr();
753
810
  }
754
811
  }
755
812
  }
756
- this.state = 199;
813
+ this.state = 213;
757
814
  this.errorHandler.sync(this);
758
815
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context);
759
816
  }
760
- this.state = 201;
817
+ this.state = 215;
761
818
  this.errorHandler.sync(this);
762
819
  _la = this.tokenStream.LA(1);
763
820
  if (_la === 15) {
764
821
  {
765
- this.state = 200;
822
+ this.state = 214;
766
823
  this.pin_select_expr();
767
824
  }
768
825
  }
@@ -788,9 +845,9 @@ export class CircuitScriptParser extends antlr.Parser {
788
845
  try {
789
846
  this.enterOuterAlt(localContext, 1);
790
847
  {
791
- this.state = 203;
848
+ this.state = 217;
792
849
  this.match(CircuitScriptParser.Add);
793
- this.state = 204;
850
+ this.state = 218;
794
851
  this.data_expr_with_assignment();
795
852
  }
796
853
  }
@@ -812,7 +869,7 @@ export class CircuitScriptParser extends antlr.Parser {
812
869
  let localContext = new Component_select_exprContext(this.context, this.state);
813
870
  this.enterRule(localContext, 22, CircuitScriptParser.RULE_component_select_expr);
814
871
  try {
815
- this.state = 208;
872
+ this.state = 222;
816
873
  this.errorHandler.sync(this);
817
874
  switch (this.tokenStream.LA(1)) {
818
875
  case CircuitScriptParser.T__5:
@@ -831,14 +888,14 @@ export class CircuitScriptParser extends antlr.Parser {
831
888
  case CircuitScriptParser.PERCENTAGE_VALUE:
832
889
  this.enterOuterAlt(localContext, 1);
833
890
  {
834
- this.state = 206;
891
+ this.state = 220;
835
892
  this.data_expr_with_assignment();
836
893
  }
837
894
  break;
838
895
  case CircuitScriptParser.Pin:
839
896
  this.enterOuterAlt(localContext, 2);
840
897
  {
841
- this.state = 207;
898
+ this.state = 221;
842
899
  this.pin_select_expr();
843
900
  }
844
901
  break;
@@ -867,9 +924,9 @@ export class CircuitScriptParser extends antlr.Parser {
867
924
  try {
868
925
  this.enterOuterAlt(localContext, 1);
869
926
  {
870
- this.state = 210;
927
+ this.state = 224;
871
928
  _la = this.tokenStream.LA(1);
872
- if (!(_la === 46 || _la === 49)) {
929
+ if (!(_la === 57 || _la === 60)) {
873
930
  this.errorHandler.recoverInline(this);
874
931
  }
875
932
  else {
@@ -898,9 +955,9 @@ export class CircuitScriptParser extends antlr.Parser {
898
955
  try {
899
956
  this.enterOuterAlt(localContext, 1);
900
957
  {
901
- this.state = 212;
958
+ this.state = 226;
902
959
  this.match(CircuitScriptParser.At);
903
- this.state = 215;
960
+ this.state = 229;
904
961
  this.errorHandler.sync(this);
905
962
  switch (this.tokenStream.LA(1)) {
906
963
  case CircuitScriptParser.T__5:
@@ -919,13 +976,13 @@ export class CircuitScriptParser extends antlr.Parser {
919
976
  case CircuitScriptParser.STRING_VALUE:
920
977
  case CircuitScriptParser.PERCENTAGE_VALUE:
921
978
  {
922
- this.state = 213;
979
+ this.state = 227;
923
980
  this.component_select_expr();
924
981
  }
925
982
  break;
926
983
  case CircuitScriptParser.Point:
927
984
  {
928
- this.state = 214;
985
+ this.state = 228;
929
986
  this.match(CircuitScriptParser.Point);
930
987
  }
931
988
  break;
@@ -955,9 +1012,9 @@ export class CircuitScriptParser extends antlr.Parser {
955
1012
  try {
956
1013
  this.enterOuterAlt(localContext, 1);
957
1014
  {
958
- this.state = 217;
1015
+ this.state = 231;
959
1016
  this.match(CircuitScriptParser.To);
960
- this.state = 227;
1017
+ this.state = 241;
961
1018
  this.errorHandler.sync(this);
962
1019
  switch (this.tokenStream.LA(1)) {
963
1020
  case CircuitScriptParser.T__5:
@@ -977,21 +1034,21 @@ export class CircuitScriptParser extends antlr.Parser {
977
1034
  case CircuitScriptParser.PERCENTAGE_VALUE:
978
1035
  {
979
1036
  {
980
- this.state = 218;
1037
+ this.state = 232;
981
1038
  this.component_select_expr();
982
- this.state = 223;
1039
+ this.state = 237;
983
1040
  this.errorHandler.sync(this);
984
1041
  _la = this.tokenStream.LA(1);
985
1042
  while (_la === 2) {
986
1043
  {
987
1044
  {
988
- this.state = 219;
1045
+ this.state = 233;
989
1046
  this.match(CircuitScriptParser.T__1);
990
- this.state = 220;
1047
+ this.state = 234;
991
1048
  this.component_select_expr();
992
1049
  }
993
1050
  }
994
- this.state = 225;
1051
+ this.state = 239;
995
1052
  this.errorHandler.sync(this);
996
1053
  _la = this.tokenStream.LA(1);
997
1054
  }
@@ -1000,7 +1057,7 @@ export class CircuitScriptParser extends antlr.Parser {
1000
1057
  break;
1001
1058
  case CircuitScriptParser.Point:
1002
1059
  {
1003
- this.state = 226;
1060
+ this.state = 240;
1004
1061
  this.match(CircuitScriptParser.Point);
1005
1062
  }
1006
1063
  break;
@@ -1030,54 +1087,54 @@ export class CircuitScriptParser extends antlr.Parser {
1030
1087
  try {
1031
1088
  this.enterOuterAlt(localContext, 1);
1032
1089
  {
1033
- this.state = 229;
1090
+ this.state = 243;
1034
1091
  this.match(CircuitScriptParser.At);
1035
- this.state = 230;
1092
+ this.state = 244;
1036
1093
  this.component_select_expr();
1037
- this.state = 231;
1094
+ this.state = 245;
1038
1095
  this.match(CircuitScriptParser.To);
1039
- this.state = 232;
1096
+ this.state = 246;
1040
1097
  this.component_select_expr();
1041
- this.state = 237;
1098
+ this.state = 251;
1042
1099
  this.errorHandler.sync(this);
1043
1100
  _la = this.tokenStream.LA(1);
1044
1101
  while (_la === 2) {
1045
1102
  {
1046
1103
  {
1047
- this.state = 233;
1104
+ this.state = 247;
1048
1105
  this.match(CircuitScriptParser.T__1);
1049
- this.state = 234;
1106
+ this.state = 248;
1050
1107
  this.component_select_expr();
1051
1108
  }
1052
1109
  }
1053
- this.state = 239;
1110
+ this.state = 253;
1054
1111
  this.errorHandler.sync(this);
1055
1112
  _la = this.tokenStream.LA(1);
1056
1113
  }
1057
- this.state = 240;
1114
+ this.state = 254;
1058
1115
  this.match(CircuitScriptParser.T__0);
1059
- this.state = 241;
1116
+ this.state = 255;
1060
1117
  this.match(CircuitScriptParser.NEWLINE);
1061
- this.state = 242;
1118
+ this.state = 256;
1062
1119
  this.match(CircuitScriptParser.INDENT);
1063
- this.state = 245;
1120
+ this.state = 259;
1064
1121
  this.errorHandler.sync(this);
1065
1122
  _la = this.tokenStream.LA(1);
1066
1123
  do {
1067
1124
  {
1068
- this.state = 245;
1125
+ this.state = 259;
1069
1126
  this.errorHandler.sync(this);
1070
1127
  switch (this.tokenStream.LA(1)) {
1071
1128
  case CircuitScriptParser.NEWLINE:
1072
1129
  {
1073
- this.state = 243;
1130
+ this.state = 257;
1074
1131
  this.match(CircuitScriptParser.NEWLINE);
1075
1132
  }
1076
1133
  break;
1077
1134
  case CircuitScriptParser.INTEGER_VALUE:
1078
1135
  case CircuitScriptParser.STRING_VALUE:
1079
1136
  {
1080
- this.state = 244;
1137
+ this.state = 258;
1081
1138
  this.at_to_multiple_line_expr();
1082
1139
  }
1083
1140
  break;
@@ -1085,11 +1142,11 @@ export class CircuitScriptParser extends antlr.Parser {
1085
1142
  throw new antlr.NoViableAltException(this);
1086
1143
  }
1087
1144
  }
1088
- this.state = 247;
1145
+ this.state = 261;
1089
1146
  this.errorHandler.sync(this);
1090
1147
  _la = this.tokenStream.LA(1);
1091
- } while (((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 137) !== 0));
1092
- this.state = 249;
1148
+ } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 137) !== 0));
1149
+ this.state = 263;
1093
1150
  this.match(CircuitScriptParser.DEDENT);
1094
1151
  }
1095
1152
  }
@@ -1114,25 +1171,25 @@ export class CircuitScriptParser extends antlr.Parser {
1114
1171
  try {
1115
1172
  this.enterOuterAlt(localContext, 1);
1116
1173
  {
1117
- this.state = 251;
1174
+ this.state = 265;
1118
1175
  this.pin_select_expr2();
1119
- this.state = 252;
1176
+ this.state = 266;
1120
1177
  this.match(CircuitScriptParser.T__0);
1121
- this.state = 253;
1178
+ this.state = 267;
1122
1179
  this.at_to_multiple_line_expr_to_pin();
1123
- this.state = 258;
1180
+ this.state = 272;
1124
1181
  this.errorHandler.sync(this);
1125
1182
  _la = this.tokenStream.LA(1);
1126
1183
  while (_la === 2) {
1127
1184
  {
1128
1185
  {
1129
- this.state = 254;
1186
+ this.state = 268;
1130
1187
  this.match(CircuitScriptParser.T__1);
1131
- this.state = 255;
1188
+ this.state = 269;
1132
1189
  this.at_to_multiple_line_expr_to_pin();
1133
1190
  }
1134
1191
  }
1135
- this.state = 260;
1192
+ this.state = 274;
1136
1193
  this.errorHandler.sync(this);
1137
1194
  _la = this.tokenStream.LA(1);
1138
1195
  }
@@ -1159,9 +1216,9 @@ export class CircuitScriptParser extends antlr.Parser {
1159
1216
  try {
1160
1217
  this.enterOuterAlt(localContext, 1);
1161
1218
  {
1162
- this.state = 261;
1219
+ this.state = 275;
1163
1220
  _la = this.tokenStream.LA(1);
1164
- if (!(_la === 43 || _la === 46)) {
1221
+ if (!(_la === 54 || _la === 57)) {
1165
1222
  this.errorHandler.recoverInline(this);
1166
1223
  }
1167
1224
  else {
@@ -1191,25 +1248,25 @@ export class CircuitScriptParser extends antlr.Parser {
1191
1248
  try {
1192
1249
  this.enterOuterAlt(localContext, 1);
1193
1250
  {
1194
- this.state = 263;
1251
+ this.state = 277;
1195
1252
  this.at_component_expr();
1196
- this.state = 264;
1253
+ this.state = 278;
1197
1254
  this.match(CircuitScriptParser.T__0);
1198
- this.state = 265;
1255
+ this.state = 279;
1199
1256
  this.match(CircuitScriptParser.NEWLINE);
1200
- this.state = 266;
1257
+ this.state = 280;
1201
1258
  this.match(CircuitScriptParser.INDENT);
1202
- this.state = 269;
1259
+ this.state = 283;
1203
1260
  this.errorHandler.sync(this);
1204
1261
  _la = this.tokenStream.LA(1);
1205
1262
  do {
1206
1263
  {
1207
- this.state = 269;
1264
+ this.state = 283;
1208
1265
  this.errorHandler.sync(this);
1209
1266
  switch (this.tokenStream.LA(1)) {
1210
1267
  case CircuitScriptParser.NEWLINE:
1211
1268
  {
1212
- this.state = 267;
1269
+ this.state = 281;
1213
1270
  this.match(CircuitScriptParser.NEWLINE);
1214
1271
  }
1215
1272
  break;
@@ -1225,15 +1282,19 @@ export class CircuitScriptParser extends antlr.Parser {
1225
1282
  case CircuitScriptParser.Parallel:
1226
1283
  case CircuitScriptParser.Define:
1227
1284
  case CircuitScriptParser.Import:
1285
+ case CircuitScriptParser.For:
1286
+ case CircuitScriptParser.While:
1287
+ case CircuitScriptParser.Continue:
1228
1288
  case CircuitScriptParser.If:
1229
1289
  case CircuitScriptParser.Frame:
1290
+ case CircuitScriptParser.Sheet:
1230
1291
  case CircuitScriptParser.Addition:
1231
1292
  case CircuitScriptParser.Divide:
1232
1293
  case CircuitScriptParser.ID:
1233
1294
  case CircuitScriptParser.INTEGER_VALUE:
1234
1295
  case CircuitScriptParser.STRING_VALUE:
1235
1296
  {
1236
- this.state = 268;
1297
+ this.state = 282;
1237
1298
  this.at_block_expressions();
1238
1299
  }
1239
1300
  break;
@@ -1241,11 +1302,11 @@ export class CircuitScriptParser extends antlr.Parser {
1241
1302
  throw new antlr.NoViableAltException(this);
1242
1303
  }
1243
1304
  }
1244
- this.state = 271;
1305
+ this.state = 285;
1245
1306
  this.errorHandler.sync(this);
1246
1307
  _la = this.tokenStream.LA(1);
1247
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 331301648) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 70405) !== 0));
1248
- this.state = 273;
1308
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 4505605) !== 0));
1309
+ this.state = 287;
1249
1310
  this.match(CircuitScriptParser.DEDENT);
1250
1311
  }
1251
1312
  }
@@ -1267,7 +1328,7 @@ export class CircuitScriptParser extends antlr.Parser {
1267
1328
  let localContext = new At_block_expressionsContext(this.context, this.state);
1268
1329
  this.enterRule(localContext, 38, CircuitScriptParser.RULE_at_block_expressions);
1269
1330
  try {
1270
- this.state = 277;
1331
+ this.state = 291;
1271
1332
  this.errorHandler.sync(this);
1272
1333
  switch (this.tokenStream.LA(1)) {
1273
1334
  case CircuitScriptParser.T__3:
@@ -1282,14 +1343,18 @@ export class CircuitScriptParser extends antlr.Parser {
1282
1343
  case CircuitScriptParser.Parallel:
1283
1344
  case CircuitScriptParser.Define:
1284
1345
  case CircuitScriptParser.Import:
1346
+ case CircuitScriptParser.For:
1347
+ case CircuitScriptParser.While:
1348
+ case CircuitScriptParser.Continue:
1285
1349
  case CircuitScriptParser.If:
1286
1350
  case CircuitScriptParser.Frame:
1351
+ case CircuitScriptParser.Sheet:
1287
1352
  case CircuitScriptParser.Addition:
1288
1353
  case CircuitScriptParser.Divide:
1289
1354
  case CircuitScriptParser.ID:
1290
1355
  this.enterOuterAlt(localContext, 1);
1291
1356
  {
1292
- this.state = 275;
1357
+ this.state = 289;
1293
1358
  this.expression();
1294
1359
  }
1295
1360
  break;
@@ -1297,7 +1362,7 @@ export class CircuitScriptParser extends antlr.Parser {
1297
1362
  case CircuitScriptParser.STRING_VALUE:
1298
1363
  this.enterOuterAlt(localContext, 2);
1299
1364
  {
1300
- this.state = 276;
1365
+ this.state = 290;
1301
1366
  this.at_block_pin_expr();
1302
1367
  }
1303
1368
  break;
@@ -1325,11 +1390,11 @@ export class CircuitScriptParser extends antlr.Parser {
1325
1390
  try {
1326
1391
  this.enterOuterAlt(localContext, 1);
1327
1392
  {
1328
- this.state = 279;
1393
+ this.state = 293;
1329
1394
  this.pin_select_expr2();
1330
- this.state = 280;
1395
+ this.state = 294;
1331
1396
  this.match(CircuitScriptParser.T__0);
1332
- this.state = 283;
1397
+ this.state = 297;
1333
1398
  this.errorHandler.sync(this);
1334
1399
  switch (this.tokenStream.LA(1)) {
1335
1400
  case CircuitScriptParser.T__3:
@@ -1344,20 +1409,24 @@ export class CircuitScriptParser extends antlr.Parser {
1344
1409
  case CircuitScriptParser.Parallel:
1345
1410
  case CircuitScriptParser.Define:
1346
1411
  case CircuitScriptParser.Import:
1412
+ case CircuitScriptParser.For:
1413
+ case CircuitScriptParser.While:
1414
+ case CircuitScriptParser.Continue:
1347
1415
  case CircuitScriptParser.If:
1348
1416
  case CircuitScriptParser.Frame:
1417
+ case CircuitScriptParser.Sheet:
1349
1418
  case CircuitScriptParser.Addition:
1350
1419
  case CircuitScriptParser.Divide:
1351
1420
  case CircuitScriptParser.NOT_CONNECTED:
1352
1421
  case CircuitScriptParser.ID:
1353
1422
  {
1354
- this.state = 281;
1423
+ this.state = 295;
1355
1424
  this.at_block_pin_expression_simple();
1356
1425
  }
1357
1426
  break;
1358
1427
  case CircuitScriptParser.NEWLINE:
1359
1428
  {
1360
- this.state = 282;
1429
+ this.state = 296;
1361
1430
  this.at_block_pin_expression_complex();
1362
1431
  }
1363
1432
  break;
@@ -1386,7 +1455,7 @@ export class CircuitScriptParser extends antlr.Parser {
1386
1455
  try {
1387
1456
  this.enterOuterAlt(localContext, 1);
1388
1457
  {
1389
- this.state = 287;
1458
+ this.state = 301;
1390
1459
  this.errorHandler.sync(this);
1391
1460
  switch (this.tokenStream.LA(1)) {
1392
1461
  case CircuitScriptParser.T__3:
@@ -1401,19 +1470,23 @@ export class CircuitScriptParser extends antlr.Parser {
1401
1470
  case CircuitScriptParser.Parallel:
1402
1471
  case CircuitScriptParser.Define:
1403
1472
  case CircuitScriptParser.Import:
1473
+ case CircuitScriptParser.For:
1474
+ case CircuitScriptParser.While:
1475
+ case CircuitScriptParser.Continue:
1404
1476
  case CircuitScriptParser.If:
1405
1477
  case CircuitScriptParser.Frame:
1478
+ case CircuitScriptParser.Sheet:
1406
1479
  case CircuitScriptParser.Addition:
1407
1480
  case CircuitScriptParser.Divide:
1408
1481
  case CircuitScriptParser.ID:
1409
1482
  {
1410
- this.state = 285;
1483
+ this.state = 299;
1411
1484
  this.expression();
1412
1485
  }
1413
1486
  break;
1414
1487
  case CircuitScriptParser.NOT_CONNECTED:
1415
1488
  {
1416
- this.state = 286;
1489
+ this.state = 300;
1417
1490
  this.match(CircuitScriptParser.NOT_CONNECTED);
1418
1491
  }
1419
1492
  break;
@@ -1442,7 +1515,7 @@ export class CircuitScriptParser extends antlr.Parser {
1442
1515
  try {
1443
1516
  this.enterOuterAlt(localContext, 1);
1444
1517
  {
1445
- this.state = 289;
1518
+ this.state = 303;
1446
1519
  this.expressions_block();
1447
1520
  }
1448
1521
  }
@@ -1466,7 +1539,7 @@ export class CircuitScriptParser extends antlr.Parser {
1466
1539
  try {
1467
1540
  this.enterOuterAlt(localContext, 1);
1468
1541
  {
1469
- this.state = 291;
1542
+ this.state = 305;
1470
1543
  this.match(CircuitScriptParser.Break);
1471
1544
  }
1472
1545
  }
@@ -1484,17 +1557,77 @@ export class CircuitScriptParser extends antlr.Parser {
1484
1557
  }
1485
1558
  return localContext;
1486
1559
  }
1560
+ continue_keyword() {
1561
+ let localContext = new Continue_keywordContext(this.context, this.state);
1562
+ this.enterRule(localContext, 48, CircuitScriptParser.RULE_continue_keyword);
1563
+ try {
1564
+ this.enterOuterAlt(localContext, 1);
1565
+ {
1566
+ this.state = 307;
1567
+ this.match(CircuitScriptParser.Continue);
1568
+ }
1569
+ }
1570
+ catch (re) {
1571
+ if (re instanceof antlr.RecognitionException) {
1572
+ this.errorHandler.reportError(this, re);
1573
+ this.errorHandler.recover(this, re);
1574
+ }
1575
+ else {
1576
+ throw re;
1577
+ }
1578
+ }
1579
+ finally {
1580
+ this.exitRule();
1581
+ }
1582
+ return localContext;
1583
+ }
1487
1584
  assignment_expr() {
1488
1585
  let localContext = new Assignment_exprContext(this.context, this.state);
1489
- this.enterRule(localContext, 48, CircuitScriptParser.RULE_assignment_expr);
1586
+ this.enterRule(localContext, 50, CircuitScriptParser.RULE_assignment_expr);
1490
1587
  try {
1491
1588
  this.enterOuterAlt(localContext, 1);
1492
1589
  {
1493
- this.state = 293;
1590
+ this.state = 309;
1494
1591
  this.atom_expr();
1495
- this.state = 294;
1592
+ this.state = 310;
1496
1593
  this.match(CircuitScriptParser.T__2);
1497
- this.state = 295;
1594
+ this.state = 311;
1595
+ this.data_expr(0);
1596
+ }
1597
+ }
1598
+ catch (re) {
1599
+ if (re instanceof antlr.RecognitionException) {
1600
+ this.errorHandler.reportError(this, re);
1601
+ this.errorHandler.recover(this, re);
1602
+ }
1603
+ else {
1604
+ throw re;
1605
+ }
1606
+ }
1607
+ finally {
1608
+ this.exitRule();
1609
+ }
1610
+ return localContext;
1611
+ }
1612
+ operator_assignment_expr() {
1613
+ let localContext = new Operator_assignment_exprContext(this.context, this.state);
1614
+ this.enterRule(localContext, 52, CircuitScriptParser.RULE_operator_assignment_expr);
1615
+ let _la;
1616
+ try {
1617
+ this.enterOuterAlt(localContext, 1);
1618
+ {
1619
+ this.state = 313;
1620
+ this.atom_expr();
1621
+ this.state = 314;
1622
+ _la = this.tokenStream.LA(1);
1623
+ if (!(((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 31) !== 0))) {
1624
+ this.errorHandler.recoverInline(this);
1625
+ }
1626
+ else {
1627
+ this.errorHandler.reportMatch(this);
1628
+ this.consume();
1629
+ }
1630
+ this.state = 315;
1498
1631
  this.data_expr(0);
1499
1632
  }
1500
1633
  }
@@ -1514,15 +1647,15 @@ export class CircuitScriptParser extends antlr.Parser {
1514
1647
  }
1515
1648
  keyword_assignment_expr() {
1516
1649
  let localContext = new Keyword_assignment_exprContext(this.context, this.state);
1517
- this.enterRule(localContext, 50, CircuitScriptParser.RULE_keyword_assignment_expr);
1650
+ this.enterRule(localContext, 54, CircuitScriptParser.RULE_keyword_assignment_expr);
1518
1651
  try {
1519
1652
  this.enterOuterAlt(localContext, 1);
1520
1653
  {
1521
- this.state = 297;
1654
+ this.state = 317;
1522
1655
  this.match(CircuitScriptParser.ID);
1523
- this.state = 298;
1656
+ this.state = 318;
1524
1657
  this.match(CircuitScriptParser.T__2);
1525
- this.state = 299;
1658
+ this.state = 319;
1526
1659
  this.data_expr(0);
1527
1660
  }
1528
1661
  }
@@ -1542,50 +1675,50 @@ export class CircuitScriptParser extends antlr.Parser {
1542
1675
  }
1543
1676
  parameters() {
1544
1677
  let localContext = new ParametersContext(this.context, this.state);
1545
- this.enterRule(localContext, 52, CircuitScriptParser.RULE_parameters);
1678
+ this.enterRule(localContext, 56, CircuitScriptParser.RULE_parameters);
1546
1679
  let _la;
1547
1680
  try {
1548
1681
  let alternative;
1549
- this.state = 324;
1682
+ this.state = 344;
1550
1683
  this.errorHandler.sync(this);
1551
1684
  switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context)) {
1552
1685
  case 1:
1553
1686
  this.enterOuterAlt(localContext, 1);
1554
1687
  {
1555
1688
  {
1556
- this.state = 301;
1689
+ this.state = 321;
1557
1690
  this.data_expr(0);
1558
- this.state = 306;
1691
+ this.state = 326;
1559
1692
  this.errorHandler.sync(this);
1560
1693
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 25, this.context);
1561
1694
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1562
1695
  if (alternative === 1) {
1563
1696
  {
1564
1697
  {
1565
- this.state = 302;
1698
+ this.state = 322;
1566
1699
  this.match(CircuitScriptParser.T__1);
1567
- this.state = 303;
1700
+ this.state = 323;
1568
1701
  this.data_expr(0);
1569
1702
  }
1570
1703
  }
1571
1704
  }
1572
- this.state = 308;
1705
+ this.state = 328;
1573
1706
  this.errorHandler.sync(this);
1574
1707
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 25, this.context);
1575
1708
  }
1576
- this.state = 313;
1709
+ this.state = 333;
1577
1710
  this.errorHandler.sync(this);
1578
1711
  _la = this.tokenStream.LA(1);
1579
1712
  while (_la === 2) {
1580
1713
  {
1581
1714
  {
1582
- this.state = 309;
1715
+ this.state = 329;
1583
1716
  this.match(CircuitScriptParser.T__1);
1584
- this.state = 310;
1717
+ this.state = 330;
1585
1718
  this.keyword_assignment_expr();
1586
1719
  }
1587
1720
  }
1588
- this.state = 315;
1721
+ this.state = 335;
1589
1722
  this.errorHandler.sync(this);
1590
1723
  _la = this.tokenStream.LA(1);
1591
1724
  }
@@ -1596,21 +1729,21 @@ export class CircuitScriptParser extends antlr.Parser {
1596
1729
  this.enterOuterAlt(localContext, 2);
1597
1730
  {
1598
1731
  {
1599
- this.state = 316;
1732
+ this.state = 336;
1600
1733
  this.keyword_assignment_expr();
1601
- this.state = 321;
1734
+ this.state = 341;
1602
1735
  this.errorHandler.sync(this);
1603
1736
  _la = this.tokenStream.LA(1);
1604
1737
  while (_la === 2) {
1605
1738
  {
1606
1739
  {
1607
- this.state = 317;
1740
+ this.state = 337;
1608
1741
  this.match(CircuitScriptParser.T__1);
1609
- this.state = 318;
1742
+ this.state = 338;
1610
1743
  this.keyword_assignment_expr();
1611
1744
  }
1612
1745
  }
1613
- this.state = 323;
1746
+ this.state = 343;
1614
1747
  this.errorHandler.sync(this);
1615
1748
  _la = this.tokenStream.LA(1);
1616
1749
  }
@@ -1635,15 +1768,15 @@ export class CircuitScriptParser extends antlr.Parser {
1635
1768
  }
1636
1769
  property_set_expr() {
1637
1770
  let localContext = new Property_set_exprContext(this.context, this.state);
1638
- this.enterRule(localContext, 54, CircuitScriptParser.RULE_property_set_expr);
1771
+ this.enterRule(localContext, 58, CircuitScriptParser.RULE_property_set_expr);
1639
1772
  try {
1640
1773
  this.enterOuterAlt(localContext, 1);
1641
1774
  {
1642
- this.state = 326;
1775
+ this.state = 346;
1643
1776
  this.atom_expr();
1644
- this.state = 327;
1777
+ this.state = 347;
1645
1778
  this.match(CircuitScriptParser.T__2);
1646
- this.state = 328;
1779
+ this.state = 348;
1647
1780
  this.data_expr(0);
1648
1781
  }
1649
1782
  }
@@ -1663,17 +1796,17 @@ export class CircuitScriptParser extends antlr.Parser {
1663
1796
  }
1664
1797
  double_dot_property_set_expr() {
1665
1798
  let localContext = new Double_dot_property_set_exprContext(this.context, this.state);
1666
- this.enterRule(localContext, 56, CircuitScriptParser.RULE_double_dot_property_set_expr);
1799
+ this.enterRule(localContext, 60, CircuitScriptParser.RULE_double_dot_property_set_expr);
1667
1800
  try {
1668
1801
  this.enterOuterAlt(localContext, 1);
1669
1802
  {
1670
- this.state = 330;
1803
+ this.state = 350;
1671
1804
  this.match(CircuitScriptParser.T__3);
1672
- this.state = 331;
1805
+ this.state = 351;
1673
1806
  this.match(CircuitScriptParser.ID);
1674
- this.state = 332;
1807
+ this.state = 352;
1675
1808
  this.match(CircuitScriptParser.T__2);
1676
- this.state = 333;
1809
+ this.state = 353;
1677
1810
  this.data_expr(0);
1678
1811
  }
1679
1812
  }
@@ -1699,14 +1832,14 @@ export class CircuitScriptParser extends antlr.Parser {
1699
1832
  let parentState = this.state;
1700
1833
  let localContext = new Data_exprContext(this.context, parentState);
1701
1834
  let previousContext = localContext;
1702
- let _startState = 58;
1703
- this.enterRecursionRule(localContext, 58, CircuitScriptParser.RULE_data_expr, _p);
1835
+ let _startState = 62;
1836
+ this.enterRecursionRule(localContext, 62, CircuitScriptParser.RULE_data_expr, _p);
1704
1837
  let _la;
1705
1838
  try {
1706
1839
  let alternative;
1707
1840
  this.enterOuterAlt(localContext, 1);
1708
1841
  {
1709
- this.state = 351;
1842
+ this.state = 372;
1710
1843
  this.errorHandler.sync(this);
1711
1844
  switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context)) {
1712
1845
  case 1:
@@ -1714,11 +1847,11 @@ export class CircuitScriptParser extends antlr.Parser {
1714
1847
  localContext = new RoundedBracketsExprContext(localContext);
1715
1848
  this.context = localContext;
1716
1849
  previousContext = localContext;
1717
- this.state = 336;
1850
+ this.state = 356;
1718
1851
  this.match(CircuitScriptParser.OPEN_PAREN);
1719
- this.state = 337;
1852
+ this.state = 357;
1720
1853
  this.data_expr(0);
1721
- this.state = 338;
1854
+ this.state = 358;
1722
1855
  this.match(CircuitScriptParser.CLOSE_PAREN);
1723
1856
  }
1724
1857
  break;
@@ -1727,10 +1860,9 @@ export class CircuitScriptParser extends antlr.Parser {
1727
1860
  localContext = new ValueAtomExprContext(localContext);
1728
1861
  this.context = localContext;
1729
1862
  previousContext = localContext;
1730
- this.state = 342;
1863
+ this.state = 362;
1731
1864
  this.errorHandler.sync(this);
1732
1865
  switch (this.tokenStream.LA(1)) {
1733
- case CircuitScriptParser.T__5:
1734
1866
  case CircuitScriptParser.Minus:
1735
1867
  case CircuitScriptParser.BOOLEAN_VALUE:
1736
1868
  case CircuitScriptParser.INTEGER_VALUE:
@@ -1739,13 +1871,13 @@ export class CircuitScriptParser extends antlr.Parser {
1739
1871
  case CircuitScriptParser.STRING_VALUE:
1740
1872
  case CircuitScriptParser.PERCENTAGE_VALUE:
1741
1873
  {
1742
- this.state = 340;
1874
+ this.state = 360;
1743
1875
  this.value_expr();
1744
1876
  }
1745
1877
  break;
1746
1878
  case CircuitScriptParser.ID:
1747
1879
  {
1748
- this.state = 341;
1880
+ this.state = 361;
1749
1881
  this.atom_expr();
1750
1882
  }
1751
1883
  break;
@@ -1759,10 +1891,10 @@ export class CircuitScriptParser extends antlr.Parser {
1759
1891
  localContext = new UnaryOperatorExprContext(localContext);
1760
1892
  this.context = localContext;
1761
1893
  previousContext = localContext;
1762
- this.state = 344;
1894
+ this.state = 364;
1763
1895
  this.unary_operator();
1764
- this.state = 345;
1765
- this.data_expr(9);
1896
+ this.state = 365;
1897
+ this.data_expr(10);
1766
1898
  }
1767
1899
  break;
1768
1900
  case 4:
@@ -1770,7 +1902,7 @@ export class CircuitScriptParser extends antlr.Parser {
1770
1902
  localContext = new DataExprContext(localContext);
1771
1903
  this.context = localContext;
1772
1904
  previousContext = localContext;
1773
- this.state = 347;
1905
+ this.state = 367;
1774
1906
  this.create_component_expr();
1775
1907
  }
1776
1908
  break;
@@ -1779,7 +1911,7 @@ export class CircuitScriptParser extends antlr.Parser {
1779
1911
  localContext = new DataExprContext(localContext);
1780
1912
  this.context = localContext;
1781
1913
  previousContext = localContext;
1782
- this.state = 348;
1914
+ this.state = 368;
1783
1915
  this.create_graphic_expr();
1784
1916
  }
1785
1917
  break;
@@ -1788,7 +1920,7 @@ export class CircuitScriptParser extends antlr.Parser {
1788
1920
  localContext = new DataExprContext(localContext);
1789
1921
  this.context = localContext;
1790
1922
  previousContext = localContext;
1791
- this.state = 349;
1923
+ this.state = 369;
1792
1924
  this.create_module_expr();
1793
1925
  }
1794
1926
  break;
@@ -1797,13 +1929,22 @@ export class CircuitScriptParser extends antlr.Parser {
1797
1929
  localContext = new FunctionCallExprContext(localContext);
1798
1930
  this.context = localContext;
1799
1931
  previousContext = localContext;
1800
- this.state = 350;
1932
+ this.state = 370;
1801
1933
  this.function_call_expr();
1802
1934
  }
1803
1935
  break;
1936
+ case 8:
1937
+ {
1938
+ localContext = new ArrayExprContext(localContext);
1939
+ this.context = localContext;
1940
+ previousContext = localContext;
1941
+ this.state = 371;
1942
+ this.array_expr();
1943
+ }
1944
+ break;
1804
1945
  }
1805
1946
  this.context.stop = this.tokenStream.LT(-1);
1806
- this.state = 368;
1947
+ this.state = 389;
1807
1948
  this.errorHandler.sync(this);
1808
1949
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 32, this.context);
1809
1950
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
@@ -1813,90 +1954,90 @@ export class CircuitScriptParser extends antlr.Parser {
1813
1954
  }
1814
1955
  previousContext = localContext;
1815
1956
  {
1816
- this.state = 366;
1957
+ this.state = 387;
1817
1958
  this.errorHandler.sync(this);
1818
1959
  switch (this.interpreter.adaptivePredict(this.tokenStream, 31, this.context)) {
1819
1960
  case 1:
1820
1961
  {
1821
1962
  localContext = new MultiplyExprContext(new Data_exprContext(parentContext, parentState));
1822
1963
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1823
- this.state = 353;
1824
- if (!(this.precpred(this.context, 8))) {
1825
- throw this.createFailedPredicateException("this.precpred(this.context, 8)");
1964
+ this.state = 374;
1965
+ if (!(this.precpred(this.context, 9))) {
1966
+ throw this.createFailedPredicateException("this.precpred(this.context, 9)");
1826
1967
  }
1827
- this.state = 354;
1968
+ this.state = 375;
1828
1969
  _la = this.tokenStream.LA(1);
1829
- if (!(_la === 39 || _la === 40)) {
1970
+ if (!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 7) !== 0))) {
1830
1971
  this.errorHandler.recoverInline(this);
1831
1972
  }
1832
1973
  else {
1833
1974
  this.errorHandler.reportMatch(this);
1834
1975
  this.consume();
1835
1976
  }
1836
- this.state = 355;
1837
- this.data_expr(9);
1977
+ this.state = 376;
1978
+ this.data_expr(10);
1838
1979
  }
1839
1980
  break;
1840
1981
  case 2:
1841
1982
  {
1842
1983
  localContext = new AdditionExprContext(new Data_exprContext(parentContext, parentState));
1843
1984
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1844
- this.state = 356;
1845
- if (!(this.precpred(this.context, 7))) {
1846
- throw this.createFailedPredicateException("this.precpred(this.context, 7)");
1985
+ this.state = 377;
1986
+ if (!(this.precpred(this.context, 8))) {
1987
+ throw this.createFailedPredicateException("this.precpred(this.context, 8)");
1847
1988
  }
1848
- this.state = 357;
1989
+ this.state = 378;
1849
1990
  _la = this.tokenStream.LA(1);
1850
- if (!(_la === 37 || _la === 38)) {
1991
+ if (!(_la === 42 || _la === 43)) {
1851
1992
  this.errorHandler.recoverInline(this);
1852
1993
  }
1853
1994
  else {
1854
1995
  this.errorHandler.reportMatch(this);
1855
1996
  this.consume();
1856
1997
  }
1857
- this.state = 358;
1858
- this.data_expr(8);
1998
+ this.state = 379;
1999
+ this.data_expr(9);
1859
2000
  }
1860
2001
  break;
1861
2002
  case 3:
1862
2003
  {
1863
2004
  localContext = new BinaryOperatorExprContext(new Data_exprContext(parentContext, parentState));
1864
2005
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1865
- this.state = 359;
1866
- if (!(this.precpred(this.context, 6))) {
1867
- throw this.createFailedPredicateException("this.precpred(this.context, 6)");
2006
+ this.state = 380;
2007
+ if (!(this.precpred(this.context, 7))) {
2008
+ throw this.createFailedPredicateException("this.precpred(this.context, 7)");
1868
2009
  }
1869
- this.state = 360;
2010
+ this.state = 381;
1870
2011
  this.binary_operator();
1871
- this.state = 361;
1872
- this.data_expr(7);
2012
+ this.state = 382;
2013
+ this.data_expr(8);
1873
2014
  }
1874
2015
  break;
1875
2016
  case 4:
1876
2017
  {
1877
2018
  localContext = new LogicalOperatorExprContext(new Data_exprContext(parentContext, parentState));
1878
2019
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1879
- this.state = 363;
1880
- if (!(this.precpred(this.context, 5))) {
1881
- throw this.createFailedPredicateException("this.precpred(this.context, 5)");
2020
+ this.state = 384;
2021
+ if (!(this.precpred(this.context, 6))) {
2022
+ throw this.createFailedPredicateException("this.precpred(this.context, 6)");
1882
2023
  }
1883
- this.state = 364;
2024
+ this.state = 385;
1884
2025
  _la = this.tokenStream.LA(1);
1885
- if (!(_la === 35 || _la === 36)) {
2026
+ if (!(_la === 40 || _la === 41)) {
1886
2027
  this.errorHandler.recoverInline(this);
1887
2028
  }
1888
2029
  else {
1889
2030
  this.errorHandler.reportMatch(this);
1890
2031
  this.consume();
1891
2032
  }
1892
- this.state = 365;
1893
- this.data_expr(6);
2033
+ this.state = 386;
2034
+ this.data_expr(7);
1894
2035
  }
1895
2036
  break;
1896
2037
  }
1897
2038
  }
1898
2039
  }
1899
- this.state = 370;
2040
+ this.state = 391;
1900
2041
  this.errorHandler.sync(this);
1901
2042
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 32, this.context);
1902
2043
  }
@@ -1918,14 +2059,14 @@ export class CircuitScriptParser extends antlr.Parser {
1918
2059
  }
1919
2060
  binary_operator() {
1920
2061
  let localContext = new Binary_operatorContext(this.context, this.state);
1921
- this.enterRule(localContext, 60, CircuitScriptParser.RULE_binary_operator);
2062
+ this.enterRule(localContext, 64, CircuitScriptParser.RULE_binary_operator);
1922
2063
  let _la;
1923
2064
  try {
1924
2065
  this.enterOuterAlt(localContext, 1);
1925
2066
  {
1926
- this.state = 371;
2067
+ this.state = 392;
1927
2068
  _la = this.tokenStream.LA(1);
1928
- if (!(((((_la - 29)) & ~0x1F) === 0 && ((1 << (_la - 29)) & 63) !== 0))) {
2069
+ if (!(((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 63) !== 0))) {
1929
2070
  this.errorHandler.recoverInline(this);
1930
2071
  }
1931
2072
  else {
@@ -1950,14 +2091,14 @@ export class CircuitScriptParser extends antlr.Parser {
1950
2091
  }
1951
2092
  unary_operator() {
1952
2093
  let localContext = new Unary_operatorContext(this.context, this.state);
1953
- this.enterRule(localContext, 62, CircuitScriptParser.RULE_unary_operator);
2094
+ this.enterRule(localContext, 66, CircuitScriptParser.RULE_unary_operator);
1954
2095
  let _la;
1955
2096
  try {
1956
2097
  this.enterOuterAlt(localContext, 1);
1957
2098
  {
1958
- this.state = 373;
2099
+ this.state = 394;
1959
2100
  _la = this.tokenStream.LA(1);
1960
- if (!(_la === 27 || _la === 38)) {
2101
+ if (!(_la === 31 || _la === 43)) {
1961
2102
  this.errorHandler.recoverInline(this);
1962
2103
  }
1963
2104
  else {
@@ -1982,52 +2123,31 @@ export class CircuitScriptParser extends antlr.Parser {
1982
2123
  }
1983
2124
  value_expr() {
1984
2125
  let localContext = new Value_exprContext(this.context, this.state);
1985
- this.enterRule(localContext, 64, CircuitScriptParser.RULE_value_expr);
2126
+ this.enterRule(localContext, 68, CircuitScriptParser.RULE_value_expr);
1986
2127
  let _la;
1987
2128
  try {
1988
- this.state = 380;
1989
- this.errorHandler.sync(this);
1990
- switch (this.tokenStream.LA(1)) {
1991
- case CircuitScriptParser.Minus:
1992
- case CircuitScriptParser.BOOLEAN_VALUE:
1993
- case CircuitScriptParser.INTEGER_VALUE:
1994
- case CircuitScriptParser.DECIMAL_VALUE:
1995
- case CircuitScriptParser.NUMERIC_VALUE:
1996
- case CircuitScriptParser.STRING_VALUE:
1997
- case CircuitScriptParser.PERCENTAGE_VALUE:
1998
- this.enterOuterAlt(localContext, 1);
1999
- {
2129
+ this.enterOuterAlt(localContext, 1);
2130
+ {
2131
+ {
2132
+ this.state = 397;
2133
+ this.errorHandler.sync(this);
2134
+ _la = this.tokenStream.LA(1);
2135
+ if (_la === 43) {
2000
2136
  {
2001
- this.state = 376;
2002
- this.errorHandler.sync(this);
2003
- _la = this.tokenStream.LA(1);
2004
- if (_la === 38) {
2005
- {
2006
- this.state = 375;
2007
- this.match(CircuitScriptParser.Minus);
2008
- }
2009
- }
2010
- this.state = 378;
2011
- _la = this.tokenStream.LA(1);
2012
- if (!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 125) !== 0))) {
2013
- this.errorHandler.recoverInline(this);
2014
- }
2015
- else {
2016
- this.errorHandler.reportMatch(this);
2017
- this.consume();
2018
- }
2137
+ this.state = 396;
2138
+ this.match(CircuitScriptParser.Minus);
2019
2139
  }
2020
2140
  }
2021
- break;
2022
- case CircuitScriptParser.T__5:
2023
- this.enterOuterAlt(localContext, 2);
2024
- {
2025
- this.state = 379;
2026
- this.blank_expr();
2141
+ this.state = 399;
2142
+ _la = this.tokenStream.LA(1);
2143
+ if (!(((((_la - 55)) & ~0x1F) === 0 && ((1 << (_la - 55)) & 125) !== 0))) {
2144
+ this.errorHandler.recoverInline(this);
2027
2145
  }
2028
- break;
2029
- default:
2030
- throw new antlr.NoViableAltException(this);
2146
+ else {
2147
+ this.errorHandler.reportMatch(this);
2148
+ this.consume();
2149
+ }
2150
+ }
2031
2151
  }
2032
2152
  }
2033
2153
  catch (re) {
@@ -2046,45 +2166,45 @@ export class CircuitScriptParser extends antlr.Parser {
2046
2166
  }
2047
2167
  function_def_expr() {
2048
2168
  let localContext = new Function_def_exprContext(this.context, this.state);
2049
- this.enterRule(localContext, 66, CircuitScriptParser.RULE_function_def_expr);
2169
+ this.enterRule(localContext, 70, CircuitScriptParser.RULE_function_def_expr);
2050
2170
  let _la;
2051
2171
  try {
2052
2172
  this.enterOuterAlt(localContext, 1);
2053
2173
  {
2054
- this.state = 382;
2174
+ this.state = 401;
2055
2175
  this.match(CircuitScriptParser.Define);
2056
- this.state = 383;
2176
+ this.state = 402;
2057
2177
  this.match(CircuitScriptParser.ID);
2058
- this.state = 384;
2178
+ this.state = 403;
2059
2179
  this.match(CircuitScriptParser.OPEN_PAREN);
2060
- this.state = 386;
2180
+ this.state = 405;
2061
2181
  this.errorHandler.sync(this);
2062
2182
  _la = this.tokenStream.LA(1);
2063
- if (_la === 45) {
2183
+ if (_la === 56) {
2064
2184
  {
2065
- this.state = 385;
2185
+ this.state = 404;
2066
2186
  this.function_args_expr();
2067
2187
  }
2068
2188
  }
2069
- this.state = 388;
2189
+ this.state = 407;
2070
2190
  this.match(CircuitScriptParser.CLOSE_PAREN);
2071
- this.state = 389;
2191
+ this.state = 408;
2072
2192
  this.match(CircuitScriptParser.T__0);
2073
- this.state = 390;
2193
+ this.state = 409;
2074
2194
  this.match(CircuitScriptParser.NEWLINE);
2075
- this.state = 391;
2195
+ this.state = 410;
2076
2196
  this.match(CircuitScriptParser.INDENT);
2077
- this.state = 394;
2197
+ this.state = 413;
2078
2198
  this.errorHandler.sync(this);
2079
2199
  _la = this.tokenStream.LA(1);
2080
2200
  do {
2081
2201
  {
2082
- this.state = 394;
2202
+ this.state = 413;
2083
2203
  this.errorHandler.sync(this);
2084
2204
  switch (this.tokenStream.LA(1)) {
2085
2205
  case CircuitScriptParser.NEWLINE:
2086
2206
  {
2087
- this.state = 392;
2207
+ this.state = 411;
2088
2208
  this.match(CircuitScriptParser.NEWLINE);
2089
2209
  }
2090
2210
  break;
@@ -2101,13 +2221,17 @@ export class CircuitScriptParser extends antlr.Parser {
2101
2221
  case CircuitScriptParser.Return:
2102
2222
  case CircuitScriptParser.Define:
2103
2223
  case CircuitScriptParser.Import:
2224
+ case CircuitScriptParser.For:
2225
+ case CircuitScriptParser.While:
2226
+ case CircuitScriptParser.Continue:
2104
2227
  case CircuitScriptParser.If:
2105
2228
  case CircuitScriptParser.Frame:
2229
+ case CircuitScriptParser.Sheet:
2106
2230
  case CircuitScriptParser.Addition:
2107
2231
  case CircuitScriptParser.Divide:
2108
2232
  case CircuitScriptParser.ID:
2109
2233
  {
2110
- this.state = 393;
2234
+ this.state = 412;
2111
2235
  this.function_expr();
2112
2236
  }
2113
2237
  break;
@@ -2115,11 +2239,11 @@ export class CircuitScriptParser extends antlr.Parser {
2115
2239
  throw new antlr.NoViableAltException(this);
2116
2240
  }
2117
2241
  }
2118
- this.state = 396;
2242
+ this.state = 415;
2119
2243
  this.errorHandler.sync(this);
2120
2244
  _la = this.tokenStream.LA(1);
2121
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 335495952) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 65797) !== 0));
2122
- this.state = 398;
2245
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 868217905) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 4210693) !== 0));
2246
+ this.state = 417;
2123
2247
  this.match(CircuitScriptParser.DEDENT);
2124
2248
  }
2125
2249
  }
@@ -2139,9 +2263,9 @@ export class CircuitScriptParser extends antlr.Parser {
2139
2263
  }
2140
2264
  function_expr() {
2141
2265
  let localContext = new Function_exprContext(this.context, this.state);
2142
- this.enterRule(localContext, 68, CircuitScriptParser.RULE_function_expr);
2266
+ this.enterRule(localContext, 72, CircuitScriptParser.RULE_function_expr);
2143
2267
  try {
2144
- this.state = 402;
2268
+ this.state = 421;
2145
2269
  this.errorHandler.sync(this);
2146
2270
  switch (this.tokenStream.LA(1)) {
2147
2271
  case CircuitScriptParser.T__3:
@@ -2156,21 +2280,25 @@ export class CircuitScriptParser extends antlr.Parser {
2156
2280
  case CircuitScriptParser.Parallel:
2157
2281
  case CircuitScriptParser.Define:
2158
2282
  case CircuitScriptParser.Import:
2283
+ case CircuitScriptParser.For:
2284
+ case CircuitScriptParser.While:
2285
+ case CircuitScriptParser.Continue:
2159
2286
  case CircuitScriptParser.If:
2160
2287
  case CircuitScriptParser.Frame:
2288
+ case CircuitScriptParser.Sheet:
2161
2289
  case CircuitScriptParser.Addition:
2162
2290
  case CircuitScriptParser.Divide:
2163
2291
  case CircuitScriptParser.ID:
2164
2292
  this.enterOuterAlt(localContext, 1);
2165
2293
  {
2166
- this.state = 400;
2294
+ this.state = 419;
2167
2295
  this.expression();
2168
2296
  }
2169
2297
  break;
2170
2298
  case CircuitScriptParser.Return:
2171
2299
  this.enterOuterAlt(localContext, 2);
2172
2300
  {
2173
- this.state = 401;
2301
+ this.state = 420;
2174
2302
  this.function_return_expr();
2175
2303
  }
2176
2304
  break;
@@ -2194,53 +2322,53 @@ export class CircuitScriptParser extends antlr.Parser {
2194
2322
  }
2195
2323
  function_args_expr() {
2196
2324
  let localContext = new Function_args_exprContext(this.context, this.state);
2197
- this.enterRule(localContext, 70, CircuitScriptParser.RULE_function_args_expr);
2325
+ this.enterRule(localContext, 74, CircuitScriptParser.RULE_function_args_expr);
2198
2326
  let _la;
2199
2327
  try {
2200
2328
  let alternative;
2201
- this.state = 433;
2329
+ this.state = 452;
2202
2330
  this.errorHandler.sync(this);
2203
- switch (this.interpreter.adaptivePredict(this.tokenStream, 42, this.context)) {
2331
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 41, this.context)) {
2204
2332
  case 1:
2205
2333
  this.enterOuterAlt(localContext, 1);
2206
2334
  {
2207
- this.state = 404;
2335
+ this.state = 423;
2208
2336
  this.match(CircuitScriptParser.ID);
2209
- this.state = 409;
2337
+ this.state = 428;
2210
2338
  this.errorHandler.sync(this);
2211
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 39, this.context);
2339
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 38, this.context);
2212
2340
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2213
2341
  if (alternative === 1) {
2214
2342
  {
2215
2343
  {
2216
- this.state = 405;
2344
+ this.state = 424;
2217
2345
  this.match(CircuitScriptParser.T__1);
2218
- this.state = 406;
2346
+ this.state = 425;
2219
2347
  this.match(CircuitScriptParser.ID);
2220
2348
  }
2221
2349
  }
2222
2350
  }
2223
- this.state = 411;
2351
+ this.state = 430;
2224
2352
  this.errorHandler.sync(this);
2225
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 39, this.context);
2353
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 38, this.context);
2226
2354
  }
2227
- this.state = 418;
2355
+ this.state = 437;
2228
2356
  this.errorHandler.sync(this);
2229
2357
  _la = this.tokenStream.LA(1);
2230
2358
  while (_la === 2) {
2231
2359
  {
2232
2360
  {
2233
- this.state = 412;
2361
+ this.state = 431;
2234
2362
  this.match(CircuitScriptParser.T__1);
2235
- this.state = 413;
2363
+ this.state = 432;
2236
2364
  this.match(CircuitScriptParser.ID);
2237
- this.state = 414;
2365
+ this.state = 433;
2238
2366
  this.match(CircuitScriptParser.T__2);
2239
- this.state = 415;
2367
+ this.state = 434;
2240
2368
  this.value_expr();
2241
2369
  }
2242
2370
  }
2243
- this.state = 420;
2371
+ this.state = 439;
2244
2372
  this.errorHandler.sync(this);
2245
2373
  _la = this.tokenStream.LA(1);
2246
2374
  }
@@ -2249,29 +2377,29 @@ export class CircuitScriptParser extends antlr.Parser {
2249
2377
  case 2:
2250
2378
  this.enterOuterAlt(localContext, 2);
2251
2379
  {
2252
- this.state = 421;
2380
+ this.state = 440;
2253
2381
  this.match(CircuitScriptParser.ID);
2254
- this.state = 422;
2382
+ this.state = 441;
2255
2383
  this.match(CircuitScriptParser.T__2);
2256
- this.state = 423;
2384
+ this.state = 442;
2257
2385
  this.value_expr();
2258
- this.state = 430;
2386
+ this.state = 449;
2259
2387
  this.errorHandler.sync(this);
2260
2388
  _la = this.tokenStream.LA(1);
2261
2389
  while (_la === 2) {
2262
2390
  {
2263
2391
  {
2264
- this.state = 424;
2392
+ this.state = 443;
2265
2393
  this.match(CircuitScriptParser.T__1);
2266
- this.state = 425;
2394
+ this.state = 444;
2267
2395
  this.match(CircuitScriptParser.ID);
2268
- this.state = 426;
2396
+ this.state = 445;
2269
2397
  this.match(CircuitScriptParser.T__2);
2270
- this.state = 427;
2398
+ this.state = 446;
2271
2399
  this.value_expr();
2272
2400
  }
2273
2401
  }
2274
- this.state = 432;
2402
+ this.state = 451;
2275
2403
  this.errorHandler.sync(this);
2276
2404
  _la = this.tokenStream.LA(1);
2277
2405
  }
@@ -2295,30 +2423,30 @@ export class CircuitScriptParser extends antlr.Parser {
2295
2423
  }
2296
2424
  atom_expr() {
2297
2425
  let localContext = new Atom_exprContext(this.context, this.state);
2298
- this.enterRule(localContext, 72, CircuitScriptParser.RULE_atom_expr);
2426
+ this.enterRule(localContext, 76, CircuitScriptParser.RULE_atom_expr);
2299
2427
  try {
2300
2428
  let alternative;
2301
2429
  this.enterOuterAlt(localContext, 1);
2302
2430
  {
2303
- this.state = 435;
2431
+ this.state = 454;
2304
2432
  this.match(CircuitScriptParser.ID);
2305
- this.state = 440;
2433
+ this.state = 459;
2306
2434
  this.errorHandler.sync(this);
2307
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 43, this.context);
2435
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 42, this.context);
2308
2436
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2309
2437
  if (alternative === 1) {
2310
2438
  {
2311
2439
  {
2312
- this.state = 436;
2440
+ this.state = 455;
2313
2441
  this.match(CircuitScriptParser.T__4);
2314
- this.state = 437;
2442
+ this.state = 456;
2315
2443
  this.match(CircuitScriptParser.ID);
2316
2444
  }
2317
2445
  }
2318
2446
  }
2319
- this.state = 442;
2447
+ this.state = 461;
2320
2448
  this.errorHandler.sync(this);
2321
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 43, this.context);
2449
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 42, this.context);
2322
2450
  }
2323
2451
  }
2324
2452
  }
@@ -2338,36 +2466,36 @@ export class CircuitScriptParser extends antlr.Parser {
2338
2466
  }
2339
2467
  trailer_expr() {
2340
2468
  let localContext = new Trailer_exprContext(this.context, this.state);
2341
- this.enterRule(localContext, 74, CircuitScriptParser.RULE_trailer_expr);
2469
+ this.enterRule(localContext, 78, CircuitScriptParser.RULE_trailer_expr);
2342
2470
  let _la;
2343
2471
  try {
2344
- this.state = 450;
2472
+ this.state = 469;
2345
2473
  this.errorHandler.sync(this);
2346
2474
  switch (this.tokenStream.LA(1)) {
2347
2475
  case CircuitScriptParser.OPEN_PAREN:
2348
2476
  this.enterOuterAlt(localContext, 1);
2349
2477
  {
2350
- this.state = 443;
2478
+ this.state = 462;
2351
2479
  this.match(CircuitScriptParser.OPEN_PAREN);
2352
- this.state = 445;
2480
+ this.state = 464;
2353
2481
  this.errorHandler.sync(this);
2354
2482
  _la = this.tokenStream.LA(1);
2355
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 134218816) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 16279) !== 0)) {
2483
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147484736) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 1041415) !== 0)) {
2356
2484
  {
2357
- this.state = 444;
2485
+ this.state = 463;
2358
2486
  this.parameters();
2359
2487
  }
2360
2488
  }
2361
- this.state = 447;
2489
+ this.state = 466;
2362
2490
  this.match(CircuitScriptParser.CLOSE_PAREN);
2363
2491
  }
2364
2492
  break;
2365
2493
  case CircuitScriptParser.T__4:
2366
2494
  this.enterOuterAlt(localContext, 2);
2367
2495
  {
2368
- this.state = 448;
2496
+ this.state = 467;
2369
2497
  this.match(CircuitScriptParser.T__4);
2370
- this.state = 449;
2498
+ this.state = 468;
2371
2499
  this.match(CircuitScriptParser.ID);
2372
2500
  }
2373
2501
  break;
@@ -2391,24 +2519,24 @@ export class CircuitScriptParser extends antlr.Parser {
2391
2519
  }
2392
2520
  function_call_expr() {
2393
2521
  let localContext = new Function_call_exprContext(this.context, this.state);
2394
- this.enterRule(localContext, 76, CircuitScriptParser.RULE_function_call_expr);
2522
+ this.enterRule(localContext, 80, CircuitScriptParser.RULE_function_call_expr);
2395
2523
  let _la;
2396
2524
  try {
2397
2525
  let alternative;
2398
2526
  this.enterOuterAlt(localContext, 1);
2399
2527
  {
2400
- this.state = 453;
2528
+ this.state = 472;
2401
2529
  this.errorHandler.sync(this);
2402
2530
  _la = this.tokenStream.LA(1);
2403
- if (_la === 37 || _la === 39) {
2531
+ if (_la === 42 || _la === 44) {
2404
2532
  {
2405
- this.state = 452;
2533
+ this.state = 471;
2406
2534
  this.net_namespace_expr();
2407
2535
  }
2408
2536
  }
2409
- this.state = 455;
2537
+ this.state = 474;
2410
2538
  this.match(CircuitScriptParser.ID);
2411
- this.state = 457;
2539
+ this.state = 476;
2412
2540
  this.errorHandler.sync(this);
2413
2541
  alternative = 1;
2414
2542
  do {
@@ -2416,7 +2544,7 @@ export class CircuitScriptParser extends antlr.Parser {
2416
2544
  case 1:
2417
2545
  {
2418
2546
  {
2419
- this.state = 456;
2547
+ this.state = 475;
2420
2548
  this.trailer_expr();
2421
2549
  }
2422
2550
  }
@@ -2424,9 +2552,9 @@ export class CircuitScriptParser extends antlr.Parser {
2424
2552
  default:
2425
2553
  throw new antlr.NoViableAltException(this);
2426
2554
  }
2427
- this.state = 459;
2555
+ this.state = 478;
2428
2556
  this.errorHandler.sync(this);
2429
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 47, this.context);
2557
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 46, this.context);
2430
2558
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
2431
2559
  }
2432
2560
  }
@@ -2446,28 +2574,28 @@ export class CircuitScriptParser extends antlr.Parser {
2446
2574
  }
2447
2575
  net_namespace_expr() {
2448
2576
  let localContext = new Net_namespace_exprContext(this.context, this.state);
2449
- this.enterRule(localContext, 78, CircuitScriptParser.RULE_net_namespace_expr);
2577
+ this.enterRule(localContext, 82, CircuitScriptParser.RULE_net_namespace_expr);
2450
2578
  let _la;
2451
2579
  try {
2452
2580
  this.enterOuterAlt(localContext, 1);
2453
2581
  {
2454
- this.state = 462;
2582
+ this.state = 481;
2455
2583
  this.errorHandler.sync(this);
2456
2584
  _la = this.tokenStream.LA(1);
2457
- if (_la === 37) {
2585
+ if (_la === 42) {
2458
2586
  {
2459
- this.state = 461;
2587
+ this.state = 480;
2460
2588
  this.match(CircuitScriptParser.Addition);
2461
2589
  }
2462
2590
  }
2463
- this.state = 464;
2591
+ this.state = 483;
2464
2592
  this.match(CircuitScriptParser.Divide);
2465
- this.state = 466;
2593
+ this.state = 485;
2466
2594
  this.errorHandler.sync(this);
2467
- switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context)) {
2595
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 48, this.context)) {
2468
2596
  case 1:
2469
2597
  {
2470
- this.state = 465;
2598
+ this.state = 484;
2471
2599
  this.data_expr(0);
2472
2600
  }
2473
2601
  break;
@@ -2490,13 +2618,13 @@ export class CircuitScriptParser extends antlr.Parser {
2490
2618
  }
2491
2619
  function_return_expr() {
2492
2620
  let localContext = new Function_return_exprContext(this.context, this.state);
2493
- this.enterRule(localContext, 80, CircuitScriptParser.RULE_function_return_expr);
2621
+ this.enterRule(localContext, 84, CircuitScriptParser.RULE_function_return_expr);
2494
2622
  try {
2495
2623
  this.enterOuterAlt(localContext, 1);
2496
2624
  {
2497
- this.state = 468;
2625
+ this.state = 487;
2498
2626
  this.match(CircuitScriptParser.Return);
2499
- this.state = 469;
2627
+ this.state = 488;
2500
2628
  this.data_expr(0);
2501
2629
  }
2502
2630
  }
@@ -2516,15 +2644,15 @@ export class CircuitScriptParser extends antlr.Parser {
2516
2644
  }
2517
2645
  property_block_expr() {
2518
2646
  let localContext = new Property_block_exprContext(this.context, this.state);
2519
- this.enterRule(localContext, 82, CircuitScriptParser.RULE_property_block_expr);
2647
+ this.enterRule(localContext, 86, CircuitScriptParser.RULE_property_block_expr);
2520
2648
  try {
2521
2649
  this.enterOuterAlt(localContext, 1);
2522
2650
  {
2523
- this.state = 471;
2651
+ this.state = 490;
2524
2652
  this.property_key_expr();
2525
- this.state = 472;
2653
+ this.state = 491;
2526
2654
  this.match(CircuitScriptParser.T__0);
2527
- this.state = 473;
2655
+ this.state = 492;
2528
2656
  this.expressions_block();
2529
2657
  }
2530
2658
  }
@@ -2544,32 +2672,32 @@ export class CircuitScriptParser extends antlr.Parser {
2544
2672
  }
2545
2673
  create_component_expr() {
2546
2674
  let localContext = new Create_component_exprContext(this.context, this.state);
2547
- this.enterRule(localContext, 84, CircuitScriptParser.RULE_create_component_expr);
2675
+ this.enterRule(localContext, 88, CircuitScriptParser.RULE_create_component_expr);
2548
2676
  let _la;
2549
2677
  try {
2550
2678
  this.enterOuterAlt(localContext, 1);
2551
2679
  {
2552
- this.state = 475;
2680
+ this.state = 494;
2553
2681
  this.match(CircuitScriptParser.Create);
2554
- this.state = 476;
2682
+ this.state = 495;
2555
2683
  this.match(CircuitScriptParser.Component);
2556
- this.state = 477;
2684
+ this.state = 496;
2557
2685
  this.match(CircuitScriptParser.T__0);
2558
- this.state = 478;
2686
+ this.state = 497;
2559
2687
  this.match(CircuitScriptParser.NEWLINE);
2560
- this.state = 479;
2688
+ this.state = 498;
2561
2689
  this.match(CircuitScriptParser.INDENT);
2562
- this.state = 482;
2690
+ this.state = 501;
2563
2691
  this.errorHandler.sync(this);
2564
2692
  _la = this.tokenStream.LA(1);
2565
2693
  do {
2566
2694
  {
2567
- this.state = 482;
2695
+ this.state = 501;
2568
2696
  this.errorHandler.sync(this);
2569
2697
  switch (this.tokenStream.LA(1)) {
2570
2698
  case CircuitScriptParser.NEWLINE:
2571
2699
  {
2572
- this.state = 480;
2700
+ this.state = 499;
2573
2701
  this.match(CircuitScriptParser.NEWLINE);
2574
2702
  }
2575
2703
  break;
@@ -2577,7 +2705,7 @@ export class CircuitScriptParser extends antlr.Parser {
2577
2705
  case CircuitScriptParser.INTEGER_VALUE:
2578
2706
  case CircuitScriptParser.STRING_VALUE:
2579
2707
  {
2580
- this.state = 481;
2708
+ this.state = 500;
2581
2709
  this.property_expr();
2582
2710
  }
2583
2711
  break;
@@ -2585,11 +2713,11 @@ export class CircuitScriptParser extends antlr.Parser {
2585
2713
  throw new antlr.NoViableAltException(this);
2586
2714
  }
2587
2715
  }
2588
- this.state = 484;
2716
+ this.state = 503;
2589
2717
  this.errorHandler.sync(this);
2590
2718
  _la = this.tokenStream.LA(1);
2591
- } while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 275) !== 0));
2592
- this.state = 486;
2719
+ } while (((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 275) !== 0));
2720
+ this.state = 505;
2593
2721
  this.match(CircuitScriptParser.DEDENT);
2594
2722
  }
2595
2723
  }
@@ -2607,41 +2735,36 @@ export class CircuitScriptParser extends antlr.Parser {
2607
2735
  }
2608
2736
  return localContext;
2609
2737
  }
2610
- create_graphic_expr() {
2611
- let localContext = new Create_graphic_exprContext(this.context, this.state);
2612
- this.enterRule(localContext, 86, CircuitScriptParser.RULE_create_graphic_expr);
2738
+ graphic_expressions_block() {
2739
+ let localContext = new Graphic_expressions_blockContext(this.context, this.state);
2740
+ this.enterRule(localContext, 90, CircuitScriptParser.RULE_graphic_expressions_block);
2613
2741
  let _la;
2614
2742
  try {
2615
2743
  this.enterOuterAlt(localContext, 1);
2616
2744
  {
2617
- this.state = 488;
2618
- this.match(CircuitScriptParser.Create);
2619
- this.state = 489;
2620
- this.match(CircuitScriptParser.Graphic);
2621
- this.state = 490;
2622
- this.match(CircuitScriptParser.T__0);
2623
- this.state = 491;
2745
+ this.state = 507;
2624
2746
  this.match(CircuitScriptParser.NEWLINE);
2625
- this.state = 492;
2747
+ this.state = 508;
2626
2748
  this.match(CircuitScriptParser.INDENT);
2627
- this.state = 495;
2749
+ this.state = 511;
2628
2750
  this.errorHandler.sync(this);
2629
2751
  _la = this.tokenStream.LA(1);
2630
2752
  do {
2631
2753
  {
2632
- this.state = 495;
2754
+ this.state = 511;
2633
2755
  this.errorHandler.sync(this);
2634
2756
  switch (this.tokenStream.LA(1)) {
2635
2757
  case CircuitScriptParser.NEWLINE:
2636
2758
  {
2637
- this.state = 493;
2759
+ this.state = 509;
2638
2760
  this.match(CircuitScriptParser.NEWLINE);
2639
2761
  }
2640
2762
  break;
2641
2763
  case CircuitScriptParser.Pin:
2764
+ case CircuitScriptParser.For:
2642
2765
  case CircuitScriptParser.ID:
2643
2766
  {
2644
- this.state = 494;
2767
+ this.state = 510;
2645
2768
  this.graphic_expr();
2646
2769
  }
2647
2770
  break;
@@ -2649,11 +2772,11 @@ export class CircuitScriptParser extends antlr.Parser {
2649
2772
  throw new antlr.NoViableAltException(this);
2650
2773
  }
2651
2774
  }
2652
- this.state = 497;
2775
+ this.state = 513;
2653
2776
  this.errorHandler.sync(this);
2654
2777
  _la = this.tokenStream.LA(1);
2655
- } while (_la === 15 || _la === 45 || _la === 53);
2656
- this.state = 499;
2778
+ } while (_la === 15 || _la === 25 || _la === 56 || _la === 64);
2779
+ this.state = 515;
2657
2780
  this.match(CircuitScriptParser.DEDENT);
2658
2781
  }
2659
2782
  }
@@ -2671,56 +2794,86 @@ export class CircuitScriptParser extends antlr.Parser {
2671
2794
  }
2672
2795
  return localContext;
2673
2796
  }
2797
+ create_graphic_expr() {
2798
+ let localContext = new Create_graphic_exprContext(this.context, this.state);
2799
+ this.enterRule(localContext, 92, CircuitScriptParser.RULE_create_graphic_expr);
2800
+ try {
2801
+ this.enterOuterAlt(localContext, 1);
2802
+ {
2803
+ this.state = 517;
2804
+ this.match(CircuitScriptParser.Create);
2805
+ this.state = 518;
2806
+ this.match(CircuitScriptParser.Graphic);
2807
+ this.state = 519;
2808
+ this.match(CircuitScriptParser.T__0);
2809
+ this.state = 520;
2810
+ this.graphic_expressions_block();
2811
+ }
2812
+ }
2813
+ catch (re) {
2814
+ if (re instanceof antlr.RecognitionException) {
2815
+ this.errorHandler.reportError(this, re);
2816
+ this.errorHandler.recover(this, re);
2817
+ }
2818
+ else {
2819
+ throw re;
2820
+ }
2821
+ }
2822
+ finally {
2823
+ this.exitRule();
2824
+ }
2825
+ return localContext;
2826
+ }
2674
2827
  create_module_expr() {
2675
2828
  let localContext = new Create_module_exprContext(this.context, this.state);
2676
- this.enterRule(localContext, 88, CircuitScriptParser.RULE_create_module_expr);
2829
+ this.enterRule(localContext, 94, CircuitScriptParser.RULE_create_module_expr);
2677
2830
  let _la;
2678
2831
  try {
2679
2832
  this.enterOuterAlt(localContext, 1);
2680
2833
  {
2681
- this.state = 501;
2834
+ this.state = 522;
2682
2835
  this.match(CircuitScriptParser.Create);
2683
- this.state = 502;
2836
+ this.state = 523;
2684
2837
  this.match(CircuitScriptParser.Module);
2685
- this.state = 503;
2838
+ this.state = 524;
2686
2839
  this.match(CircuitScriptParser.T__0);
2687
- this.state = 504;
2840
+ this.state = 525;
2688
2841
  this.match(CircuitScriptParser.NEWLINE);
2689
- this.state = 505;
2842
+ this.state = 526;
2690
2843
  this.match(CircuitScriptParser.INDENT);
2691
- this.state = 509;
2844
+ this.state = 530;
2692
2845
  this.errorHandler.sync(this);
2693
2846
  _la = this.tokenStream.LA(1);
2694
2847
  do {
2695
2848
  {
2696
- this.state = 509;
2849
+ this.state = 530;
2697
2850
  this.errorHandler.sync(this);
2698
- switch (this.interpreter.adaptivePredict(this.tokenStream, 54, this.context)) {
2851
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 53, this.context)) {
2699
2852
  case 1:
2700
2853
  {
2701
- this.state = 506;
2854
+ this.state = 527;
2702
2855
  this.match(CircuitScriptParser.NEWLINE);
2703
2856
  }
2704
2857
  break;
2705
2858
  case 2:
2706
2859
  {
2707
- this.state = 507;
2860
+ this.state = 528;
2708
2861
  this.property_expr();
2709
2862
  }
2710
2863
  break;
2711
2864
  case 3:
2712
2865
  {
2713
- this.state = 508;
2866
+ this.state = 529;
2714
2867
  this.property_block_expr();
2715
2868
  }
2716
2869
  break;
2717
2870
  }
2718
2871
  }
2719
- this.state = 511;
2872
+ this.state = 532;
2720
2873
  this.errorHandler.sync(this);
2721
2874
  _la = this.tokenStream.LA(1);
2722
- } while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 275) !== 0));
2723
- this.state = 513;
2875
+ } while (((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 275) !== 0));
2876
+ this.state = 534;
2724
2877
  this.match(CircuitScriptParser.DEDENT);
2725
2878
  }
2726
2879
  }
@@ -2740,27 +2893,27 @@ export class CircuitScriptParser extends antlr.Parser {
2740
2893
  }
2741
2894
  nested_properties_inner() {
2742
2895
  let localContext = new Nested_properties_innerContext(this.context, this.state);
2743
- this.enterRule(localContext, 90, CircuitScriptParser.RULE_nested_properties_inner);
2896
+ this.enterRule(localContext, 96, CircuitScriptParser.RULE_nested_properties_inner);
2744
2897
  let _la;
2745
2898
  try {
2746
2899
  this.enterOuterAlt(localContext, 1);
2747
2900
  {
2748
2901
  {
2749
- this.state = 515;
2902
+ this.state = 536;
2750
2903
  this.match(CircuitScriptParser.NEWLINE);
2751
- this.state = 516;
2904
+ this.state = 537;
2752
2905
  this.match(CircuitScriptParser.INDENT);
2753
- this.state = 519;
2906
+ this.state = 540;
2754
2907
  this.errorHandler.sync(this);
2755
2908
  _la = this.tokenStream.LA(1);
2756
2909
  do {
2757
2910
  {
2758
- this.state = 519;
2911
+ this.state = 540;
2759
2912
  this.errorHandler.sync(this);
2760
2913
  switch (this.tokenStream.LA(1)) {
2761
2914
  case CircuitScriptParser.NEWLINE:
2762
2915
  {
2763
- this.state = 517;
2916
+ this.state = 538;
2764
2917
  this.match(CircuitScriptParser.NEWLINE);
2765
2918
  }
2766
2919
  break;
@@ -2768,7 +2921,7 @@ export class CircuitScriptParser extends antlr.Parser {
2768
2921
  case CircuitScriptParser.INTEGER_VALUE:
2769
2922
  case CircuitScriptParser.STRING_VALUE:
2770
2923
  {
2771
- this.state = 518;
2924
+ this.state = 539;
2772
2925
  this.property_expr();
2773
2926
  }
2774
2927
  break;
@@ -2776,11 +2929,11 @@ export class CircuitScriptParser extends antlr.Parser {
2776
2929
  throw new antlr.NoViableAltException(this);
2777
2930
  }
2778
2931
  }
2779
- this.state = 521;
2932
+ this.state = 542;
2780
2933
  this.errorHandler.sync(this);
2781
2934
  _la = this.tokenStream.LA(1);
2782
- } while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 275) !== 0));
2783
- this.state = 523;
2935
+ } while (((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 275) !== 0));
2936
+ this.state = 544;
2784
2937
  this.match(CircuitScriptParser.DEDENT);
2785
2938
  }
2786
2939
  }
@@ -2801,56 +2954,100 @@ export class CircuitScriptParser extends antlr.Parser {
2801
2954
  }
2802
2955
  graphic_expr() {
2803
2956
  let localContext = new Graphic_exprContext(this.context, this.state);
2804
- this.enterRule(localContext, 92, CircuitScriptParser.RULE_graphic_expr);
2957
+ this.enterRule(localContext, 98, CircuitScriptParser.RULE_graphic_expr);
2805
2958
  let _la;
2806
2959
  try {
2807
- this.enterOuterAlt(localContext, 1);
2808
- {
2809
- this.state = 525;
2810
- localContext._command = this.tokenStream.LT(1);
2811
- _la = this.tokenStream.LA(1);
2812
- if (!(_la === 15 || _la === 45)) {
2813
- localContext._command = this.errorHandler.recoverInline(this);
2814
- }
2815
- else {
2816
- this.errorHandler.reportMatch(this);
2817
- this.consume();
2818
- }
2819
- this.state = 527;
2820
- this.errorHandler.sync(this);
2821
- _la = this.tokenStream.LA(1);
2822
- if (_la === 1) {
2960
+ this.state = 572;
2961
+ this.errorHandler.sync(this);
2962
+ switch (this.tokenStream.LA(1)) {
2963
+ case CircuitScriptParser.Pin:
2964
+ case CircuitScriptParser.ID:
2965
+ localContext = new GraphicCommandExprContext(localContext);
2966
+ this.enterOuterAlt(localContext, 1);
2823
2967
  {
2824
- this.state = 526;
2825
- this.match(CircuitScriptParser.T__0);
2826
- }
2827
- }
2828
- this.state = 535;
2829
- this.errorHandler.sync(this);
2830
- switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context)) {
2831
- case 1:
2832
- {
2833
- this.state = 529;
2834
- this.parameters();
2968
+ this.state = 546;
2969
+ localContext._command = this.tokenStream.LT(1);
2970
+ _la = this.tokenStream.LA(1);
2971
+ if (!(_la === 15 || _la === 56)) {
2972
+ localContext._command = this.errorHandler.recoverInline(this);
2835
2973
  }
2836
- break;
2837
- case 2:
2838
- {
2839
- this.state = 530;
2840
- this.match(CircuitScriptParser.OPEN_PAREN);
2841
- this.state = 531;
2842
- this.parameters();
2843
- this.state = 532;
2844
- this.match(CircuitScriptParser.CLOSE_PAREN);
2974
+ else {
2975
+ this.errorHandler.reportMatch(this);
2976
+ this.consume();
2845
2977
  }
2846
- break;
2847
- case 3:
2848
- {
2849
- this.state = 534;
2850
- this.nested_properties_inner();
2978
+ this.state = 548;
2979
+ this.errorHandler.sync(this);
2980
+ _la = this.tokenStream.LA(1);
2981
+ if (_la === 1) {
2982
+ {
2983
+ this.state = 547;
2984
+ this.match(CircuitScriptParser.T__0);
2985
+ }
2851
2986
  }
2852
- break;
2853
- }
2987
+ this.state = 556;
2988
+ this.errorHandler.sync(this);
2989
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context)) {
2990
+ case 1:
2991
+ {
2992
+ this.state = 550;
2993
+ this.parameters();
2994
+ }
2995
+ break;
2996
+ case 2:
2997
+ {
2998
+ this.state = 551;
2999
+ this.match(CircuitScriptParser.OPEN_PAREN);
3000
+ this.state = 552;
3001
+ this.parameters();
3002
+ this.state = 553;
3003
+ this.match(CircuitScriptParser.CLOSE_PAREN);
3004
+ }
3005
+ break;
3006
+ case 3:
3007
+ {
3008
+ this.state = 555;
3009
+ this.nested_properties_inner();
3010
+ }
3011
+ break;
3012
+ }
3013
+ }
3014
+ break;
3015
+ case CircuitScriptParser.For:
3016
+ localContext = new GraphicForExprContext(localContext);
3017
+ this.enterOuterAlt(localContext, 2);
3018
+ {
3019
+ this.state = 558;
3020
+ this.match(CircuitScriptParser.For);
3021
+ this.state = 559;
3022
+ this.match(CircuitScriptParser.ID);
3023
+ this.state = 564;
3024
+ this.errorHandler.sync(this);
3025
+ _la = this.tokenStream.LA(1);
3026
+ while (_la === 2) {
3027
+ {
3028
+ {
3029
+ this.state = 560;
3030
+ this.match(CircuitScriptParser.T__1);
3031
+ this.state = 561;
3032
+ this.match(CircuitScriptParser.ID);
3033
+ }
3034
+ }
3035
+ this.state = 566;
3036
+ this.errorHandler.sync(this);
3037
+ _la = this.tokenStream.LA(1);
3038
+ }
3039
+ this.state = 567;
3040
+ this.match(CircuitScriptParser.In);
3041
+ this.state = 568;
3042
+ this.data_expr(0);
3043
+ this.state = 569;
3044
+ this.match(CircuitScriptParser.T__0);
3045
+ this.state = 570;
3046
+ this.graphic_expressions_block();
3047
+ }
3048
+ break;
3049
+ default:
3050
+ throw new antlr.NoViableAltException(this);
2854
3051
  }
2855
3052
  }
2856
3053
  catch (re) {
@@ -2869,15 +3066,15 @@ export class CircuitScriptParser extends antlr.Parser {
2869
3066
  }
2870
3067
  property_expr() {
2871
3068
  let localContext = new Property_exprContext(this.context, this.state);
2872
- this.enterRule(localContext, 94, CircuitScriptParser.RULE_property_expr);
3069
+ this.enterRule(localContext, 100, CircuitScriptParser.RULE_property_expr);
2873
3070
  try {
2874
3071
  this.enterOuterAlt(localContext, 1);
2875
3072
  {
2876
- this.state = 537;
3073
+ this.state = 574;
2877
3074
  this.property_key_expr();
2878
- this.state = 538;
3075
+ this.state = 575;
2879
3076
  this.match(CircuitScriptParser.T__0);
2880
- this.state = 539;
3077
+ this.state = 576;
2881
3078
  this.property_value_expr();
2882
3079
  }
2883
3080
  }
@@ -2897,14 +3094,14 @@ export class CircuitScriptParser extends antlr.Parser {
2897
3094
  }
2898
3095
  property_key_expr() {
2899
3096
  let localContext = new Property_key_exprContext(this.context, this.state);
2900
- this.enterRule(localContext, 96, CircuitScriptParser.RULE_property_key_expr);
3097
+ this.enterRule(localContext, 102, CircuitScriptParser.RULE_property_key_expr);
2901
3098
  let _la;
2902
3099
  try {
2903
3100
  this.enterOuterAlt(localContext, 1);
2904
3101
  {
2905
- this.state = 541;
3102
+ this.state = 578;
2906
3103
  _la = this.tokenStream.LA(1);
2907
- if (!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 19) !== 0))) {
3104
+ if (!(((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 19) !== 0))) {
2908
3105
  this.errorHandler.recoverInline(this);
2909
3106
  }
2910
3107
  else {
@@ -2929,17 +3126,17 @@ export class CircuitScriptParser extends antlr.Parser {
2929
3126
  }
2930
3127
  property_value_expr() {
2931
3128
  let localContext = new Property_value_exprContext(this.context, this.state);
2932
- this.enterRule(localContext, 98, CircuitScriptParser.RULE_property_value_expr);
3129
+ this.enterRule(localContext, 104, CircuitScriptParser.RULE_property_value_expr);
2933
3130
  let _la;
2934
3131
  try {
2935
- this.state = 552;
3132
+ this.state = 589;
2936
3133
  this.errorHandler.sync(this);
2937
3134
  switch (this.tokenStream.LA(1)) {
2938
3135
  case CircuitScriptParser.NEWLINE:
2939
3136
  localContext = new Nested_propertiesContext(localContext);
2940
3137
  this.enterOuterAlt(localContext, 1);
2941
3138
  {
2942
- this.state = 543;
3139
+ this.state = 580;
2943
3140
  this.nested_properties_inner();
2944
3141
  }
2945
3142
  break;
@@ -2960,21 +3157,21 @@ export class CircuitScriptParser extends antlr.Parser {
2960
3157
  localContext = new Single_line_propertyContext(localContext);
2961
3158
  this.enterOuterAlt(localContext, 2);
2962
3159
  {
2963
- this.state = 544;
3160
+ this.state = 581;
2964
3161
  this.data_expr(0);
2965
- this.state = 549;
3162
+ this.state = 586;
2966
3163
  this.errorHandler.sync(this);
2967
3164
  _la = this.tokenStream.LA(1);
2968
3165
  while (_la === 2) {
2969
3166
  {
2970
3167
  {
2971
- this.state = 545;
3168
+ this.state = 582;
2972
3169
  this.match(CircuitScriptParser.T__1);
2973
- this.state = 546;
3170
+ this.state = 583;
2974
3171
  this.data_expr(0);
2975
3172
  }
2976
3173
  }
2977
- this.state = 551;
3174
+ this.state = 588;
2978
3175
  this.errorHandler.sync(this);
2979
3176
  _la = this.tokenStream.LA(1);
2980
3177
  }
@@ -2998,59 +3195,31 @@ export class CircuitScriptParser extends antlr.Parser {
2998
3195
  }
2999
3196
  return localContext;
3000
3197
  }
3001
- blank_expr() {
3002
- let localContext = new Blank_exprContext(this.context, this.state);
3003
- this.enterRule(localContext, 100, CircuitScriptParser.RULE_blank_expr);
3004
- try {
3005
- this.enterOuterAlt(localContext, 1);
3006
- {
3007
- this.state = 554;
3008
- this.match(CircuitScriptParser.T__5);
3009
- this.state = 555;
3010
- this.match(CircuitScriptParser.INTEGER_VALUE);
3011
- this.state = 556;
3012
- this.match(CircuitScriptParser.T__6);
3013
- }
3014
- }
3015
- catch (re) {
3016
- if (re instanceof antlr.RecognitionException) {
3017
- this.errorHandler.reportError(this, re);
3018
- this.errorHandler.recover(this, re);
3019
- }
3020
- else {
3021
- throw re;
3022
- }
3023
- }
3024
- finally {
3025
- this.exitRule();
3026
- }
3027
- return localContext;
3028
- }
3029
3198
  wire_atom_expr() {
3030
3199
  let localContext = new Wire_atom_exprContext(this.context, this.state);
3031
- this.enterRule(localContext, 102, CircuitScriptParser.RULE_wire_atom_expr);
3200
+ this.enterRule(localContext, 106, CircuitScriptParser.RULE_wire_atom_expr);
3032
3201
  try {
3033
- this.state = 564;
3202
+ this.state = 597;
3034
3203
  this.errorHandler.sync(this);
3035
- switch (this.interpreter.adaptivePredict(this.tokenStream, 63, this.context)) {
3204
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 64, this.context)) {
3036
3205
  case 1:
3037
3206
  localContext = new Wire_expr_direction_valueContext(localContext);
3038
3207
  this.enterOuterAlt(localContext, 1);
3039
3208
  {
3040
- this.state = 558;
3209
+ this.state = 591;
3041
3210
  this.match(CircuitScriptParser.ID);
3042
- this.state = 561;
3211
+ this.state = 594;
3043
3212
  this.errorHandler.sync(this);
3044
- switch (this.interpreter.adaptivePredict(this.tokenStream, 62, this.context)) {
3213
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 63, this.context)) {
3045
3214
  case 1:
3046
3215
  {
3047
- this.state = 559;
3216
+ this.state = 592;
3048
3217
  this.match(CircuitScriptParser.INTEGER_VALUE);
3049
3218
  }
3050
3219
  break;
3051
3220
  case 2:
3052
3221
  {
3053
- this.state = 560;
3222
+ this.state = 593;
3054
3223
  this.data_expr(0);
3055
3224
  }
3056
3225
  break;
@@ -3061,7 +3230,7 @@ export class CircuitScriptParser extends antlr.Parser {
3061
3230
  localContext = new Wire_expr_direction_onlyContext(localContext);
3062
3231
  this.enterOuterAlt(localContext, 2);
3063
3232
  {
3064
- this.state = 563;
3233
+ this.state = 596;
3065
3234
  this.match(CircuitScriptParser.ID);
3066
3235
  }
3067
3236
  break;
@@ -3083,29 +3252,86 @@ export class CircuitScriptParser extends antlr.Parser {
3083
3252
  }
3084
3253
  wire_expr() {
3085
3254
  let localContext = new Wire_exprContext(this.context, this.state);
3086
- this.enterRule(localContext, 104, CircuitScriptParser.RULE_wire_expr);
3255
+ this.enterRule(localContext, 108, CircuitScriptParser.RULE_wire_expr);
3087
3256
  try {
3088
3257
  let alternative;
3089
3258
  this.enterOuterAlt(localContext, 1);
3090
3259
  {
3091
- this.state = 566;
3260
+ this.state = 599;
3092
3261
  this.match(CircuitScriptParser.Wire);
3093
- this.state = 570;
3262
+ this.state = 603;
3094
3263
  this.errorHandler.sync(this);
3095
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 64, this.context);
3264
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 65, this.context);
3096
3265
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3097
3266
  if (alternative === 1) {
3098
3267
  {
3099
3268
  {
3100
- this.state = 567;
3269
+ this.state = 600;
3101
3270
  this.wire_atom_expr();
3102
3271
  }
3103
3272
  }
3104
3273
  }
3105
- this.state = 572;
3274
+ this.state = 605;
3275
+ this.errorHandler.sync(this);
3276
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 65, this.context);
3277
+ }
3278
+ }
3279
+ }
3280
+ catch (re) {
3281
+ if (re instanceof antlr.RecognitionException) {
3282
+ this.errorHandler.reportError(this, re);
3283
+ this.errorHandler.recover(this, re);
3284
+ }
3285
+ else {
3286
+ throw re;
3287
+ }
3288
+ }
3289
+ finally {
3290
+ this.exitRule();
3291
+ }
3292
+ return localContext;
3293
+ }
3294
+ array_expr() {
3295
+ let localContext = new Array_exprContext(this.context, this.state);
3296
+ this.enterRule(localContext, 110, CircuitScriptParser.RULE_array_expr);
3297
+ let _la;
3298
+ try {
3299
+ this.enterOuterAlt(localContext, 1);
3300
+ {
3301
+ this.state = 606;
3302
+ this.match(CircuitScriptParser.T__5);
3303
+ this.state = 617;
3304
+ this.errorHandler.sync(this);
3305
+ _la = this.tokenStream.LA(1);
3306
+ while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147484736) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 1041415) !== 0)) {
3307
+ {
3308
+ {
3309
+ this.state = 607;
3310
+ this.data_expr(0);
3311
+ this.state = 612;
3312
+ this.errorHandler.sync(this);
3313
+ _la = this.tokenStream.LA(1);
3314
+ while (_la === 2) {
3315
+ {
3316
+ {
3317
+ this.state = 608;
3318
+ this.match(CircuitScriptParser.T__1);
3319
+ this.state = 609;
3320
+ this.data_expr(0);
3321
+ }
3322
+ }
3323
+ this.state = 614;
3324
+ this.errorHandler.sync(this);
3325
+ _la = this.tokenStream.LA(1);
3326
+ }
3327
+ }
3328
+ }
3329
+ this.state = 619;
3106
3330
  this.errorHandler.sync(this);
3107
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 64, this.context);
3331
+ _la = this.tokenStream.LA(1);
3108
3332
  }
3333
+ this.state = 620;
3334
+ this.match(CircuitScriptParser.T__6);
3109
3335
  }
3110
3336
  }
3111
3337
  catch (re) {
@@ -3124,13 +3350,13 @@ export class CircuitScriptParser extends antlr.Parser {
3124
3350
  }
3125
3351
  point_expr() {
3126
3352
  let localContext = new Point_exprContext(this.context, this.state);
3127
- this.enterRule(localContext, 106, CircuitScriptParser.RULE_point_expr);
3353
+ this.enterRule(localContext, 112, CircuitScriptParser.RULE_point_expr);
3128
3354
  try {
3129
3355
  this.enterOuterAlt(localContext, 1);
3130
3356
  {
3131
- this.state = 573;
3357
+ this.state = 622;
3132
3358
  this.match(CircuitScriptParser.Point);
3133
- this.state = 574;
3359
+ this.state = 623;
3134
3360
  this.match(CircuitScriptParser.ID);
3135
3361
  }
3136
3362
  }
@@ -3150,13 +3376,13 @@ export class CircuitScriptParser extends antlr.Parser {
3150
3376
  }
3151
3377
  import_expr() {
3152
3378
  let localContext = new Import_exprContext(this.context, this.state);
3153
- this.enterRule(localContext, 108, CircuitScriptParser.RULE_import_expr);
3379
+ this.enterRule(localContext, 114, CircuitScriptParser.RULE_import_expr);
3154
3380
  try {
3155
3381
  this.enterOuterAlt(localContext, 1);
3156
3382
  {
3157
- this.state = 576;
3383
+ this.state = 625;
3158
3384
  this.match(CircuitScriptParser.Import);
3159
- this.state = 577;
3385
+ this.state = 626;
3160
3386
  this.match(CircuitScriptParser.ID);
3161
3387
  }
3162
3388
  }
@@ -3176,15 +3402,23 @@ export class CircuitScriptParser extends antlr.Parser {
3176
3402
  }
3177
3403
  frame_expr() {
3178
3404
  let localContext = new Frame_exprContext(this.context, this.state);
3179
- this.enterRule(localContext, 110, CircuitScriptParser.RULE_frame_expr);
3405
+ this.enterRule(localContext, 116, CircuitScriptParser.RULE_frame_expr);
3406
+ let _la;
3180
3407
  try {
3181
3408
  this.enterOuterAlt(localContext, 1);
3182
3409
  {
3183
- this.state = 579;
3184
- this.match(CircuitScriptParser.Frame);
3185
- this.state = 580;
3410
+ this.state = 628;
3411
+ _la = this.tokenStream.LA(1);
3412
+ if (!(_la === 32 || _la === 33)) {
3413
+ this.errorHandler.recoverInline(this);
3414
+ }
3415
+ else {
3416
+ this.errorHandler.reportMatch(this);
3417
+ this.consume();
3418
+ }
3419
+ this.state = 629;
3186
3420
  this.match(CircuitScriptParser.T__0);
3187
- this.state = 581;
3421
+ this.state = 630;
3188
3422
  this.expressions_block();
3189
3423
  }
3190
3424
  }
@@ -3204,42 +3438,42 @@ export class CircuitScriptParser extends antlr.Parser {
3204
3438
  }
3205
3439
  if_expr() {
3206
3440
  let localContext = new If_exprContext(this.context, this.state);
3207
- this.enterRule(localContext, 112, CircuitScriptParser.RULE_if_expr);
3441
+ this.enterRule(localContext, 118, CircuitScriptParser.RULE_if_expr);
3208
3442
  let _la;
3209
3443
  try {
3210
3444
  let alternative;
3211
3445
  this.enterOuterAlt(localContext, 1);
3212
3446
  {
3213
- this.state = 583;
3447
+ this.state = 632;
3214
3448
  this.match(CircuitScriptParser.If);
3215
- this.state = 584;
3449
+ this.state = 633;
3216
3450
  this.data_expr(0);
3217
- this.state = 585;
3451
+ this.state = 634;
3218
3452
  this.match(CircuitScriptParser.T__0);
3219
- this.state = 586;
3453
+ this.state = 635;
3220
3454
  this.expressions_block();
3221
- this.state = 590;
3455
+ this.state = 639;
3222
3456
  this.errorHandler.sync(this);
3223
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 65, this.context);
3457
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 68, this.context);
3224
3458
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3225
3459
  if (alternative === 1) {
3226
3460
  {
3227
3461
  {
3228
- this.state = 587;
3462
+ this.state = 636;
3229
3463
  this.if_inner_expr();
3230
3464
  }
3231
3465
  }
3232
3466
  }
3233
- this.state = 592;
3467
+ this.state = 641;
3234
3468
  this.errorHandler.sync(this);
3235
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 65, this.context);
3469
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 68, this.context);
3236
3470
  }
3237
- this.state = 594;
3471
+ this.state = 643;
3238
3472
  this.errorHandler.sync(this);
3239
3473
  _la = this.tokenStream.LA(1);
3240
- if (_la === 26) {
3474
+ if (_la === 30) {
3241
3475
  {
3242
- this.state = 593;
3476
+ this.state = 642;
3243
3477
  this.else_expr();
3244
3478
  }
3245
3479
  }
@@ -3261,19 +3495,19 @@ export class CircuitScriptParser extends antlr.Parser {
3261
3495
  }
3262
3496
  if_inner_expr() {
3263
3497
  let localContext = new If_inner_exprContext(this.context, this.state);
3264
- this.enterRule(localContext, 114, CircuitScriptParser.RULE_if_inner_expr);
3498
+ this.enterRule(localContext, 120, CircuitScriptParser.RULE_if_inner_expr);
3265
3499
  try {
3266
3500
  this.enterOuterAlt(localContext, 1);
3267
3501
  {
3268
- this.state = 596;
3502
+ this.state = 645;
3269
3503
  this.match(CircuitScriptParser.Else);
3270
- this.state = 597;
3504
+ this.state = 646;
3271
3505
  this.match(CircuitScriptParser.If);
3272
- this.state = 598;
3506
+ this.state = 647;
3273
3507
  this.data_expr(0);
3274
- this.state = 599;
3508
+ this.state = 648;
3275
3509
  this.match(CircuitScriptParser.T__0);
3276
- this.state = 600;
3510
+ this.state = 649;
3277
3511
  this.expressions_block();
3278
3512
  }
3279
3513
  }
@@ -3293,15 +3527,79 @@ export class CircuitScriptParser extends antlr.Parser {
3293
3527
  }
3294
3528
  else_expr() {
3295
3529
  let localContext = new Else_exprContext(this.context, this.state);
3296
- this.enterRule(localContext, 116, CircuitScriptParser.RULE_else_expr);
3530
+ this.enterRule(localContext, 122, CircuitScriptParser.RULE_else_expr);
3297
3531
  try {
3298
3532
  this.enterOuterAlt(localContext, 1);
3299
3533
  {
3300
- this.state = 602;
3534
+ this.state = 651;
3301
3535
  this.match(CircuitScriptParser.Else);
3302
- this.state = 603;
3536
+ this.state = 652;
3537
+ this.match(CircuitScriptParser.T__0);
3538
+ this.state = 653;
3539
+ this.expressions_block();
3540
+ }
3541
+ }
3542
+ catch (re) {
3543
+ if (re instanceof antlr.RecognitionException) {
3544
+ this.errorHandler.reportError(this, re);
3545
+ this.errorHandler.recover(this, re);
3546
+ }
3547
+ else {
3548
+ throw re;
3549
+ }
3550
+ }
3551
+ finally {
3552
+ this.exitRule();
3553
+ }
3554
+ return localContext;
3555
+ }
3556
+ while_expr() {
3557
+ let localContext = new While_exprContext(this.context, this.state);
3558
+ this.enterRule(localContext, 124, CircuitScriptParser.RULE_while_expr);
3559
+ try {
3560
+ this.enterOuterAlt(localContext, 1);
3561
+ {
3562
+ this.state = 655;
3563
+ this.match(CircuitScriptParser.While);
3564
+ this.state = 656;
3565
+ this.data_expr(0);
3566
+ this.state = 657;
3303
3567
  this.match(CircuitScriptParser.T__0);
3304
- this.state = 604;
3568
+ this.state = 658;
3569
+ this.expressions_block();
3570
+ }
3571
+ }
3572
+ catch (re) {
3573
+ if (re instanceof antlr.RecognitionException) {
3574
+ this.errorHandler.reportError(this, re);
3575
+ this.errorHandler.recover(this, re);
3576
+ }
3577
+ else {
3578
+ throw re;
3579
+ }
3580
+ }
3581
+ finally {
3582
+ this.exitRule();
3583
+ }
3584
+ return localContext;
3585
+ }
3586
+ for_expr() {
3587
+ let localContext = new For_exprContext(this.context, this.state);
3588
+ this.enterRule(localContext, 126, CircuitScriptParser.RULE_for_expr);
3589
+ try {
3590
+ this.enterOuterAlt(localContext, 1);
3591
+ {
3592
+ this.state = 660;
3593
+ this.match(CircuitScriptParser.For);
3594
+ this.state = 661;
3595
+ this.match(CircuitScriptParser.ID);
3596
+ this.state = 662;
3597
+ this.match(CircuitScriptParser.In);
3598
+ this.state = 663;
3599
+ this.data_expr(0);
3600
+ this.state = 664;
3601
+ this.match(CircuitScriptParser.T__0);
3602
+ this.state = 665;
3305
3603
  this.expressions_block();
3306
3604
  }
3307
3605
  }
@@ -3321,7 +3619,7 @@ export class CircuitScriptParser extends antlr.Parser {
3321
3619
  }
3322
3620
  sempred(localContext, ruleIndex, predIndex) {
3323
3621
  switch (ruleIndex) {
3324
- case 29:
3622
+ case 31:
3325
3623
  return this.data_expr_sempred(localContext, predIndex);
3326
3624
  }
3327
3625
  return true;
@@ -3329,18 +3627,18 @@ export class CircuitScriptParser extends antlr.Parser {
3329
3627
  data_expr_sempred(localContext, predIndex) {
3330
3628
  switch (predIndex) {
3331
3629
  case 0:
3332
- return this.precpred(this.context, 8);
3630
+ return this.precpred(this.context, 9);
3333
3631
  case 1:
3334
- return this.precpred(this.context, 7);
3632
+ return this.precpred(this.context, 8);
3335
3633
  case 2:
3336
- return this.precpred(this.context, 6);
3634
+ return this.precpred(this.context, 7);
3337
3635
  case 3:
3338
- return this.precpred(this.context, 5);
3636
+ return this.precpred(this.context, 6);
3339
3637
  }
3340
3638
  return true;
3341
3639
  }
3342
3640
  static _serializedATN = [
3343
- 4, 1, 56, 607, 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,
3641
+ 4, 1, 67, 668, 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,
3344
3642
  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,
3345
3643
  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,
3346
3644
  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,
@@ -3348,220 +3646,242 @@ export class CircuitScriptParser extends antlr.Parser {
3348
3646
  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,
3349
3647
  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,
3350
3648
  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,
3351
- 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 1, 0,
3352
- 1, 0, 4, 0, 121, 8, 0, 11, 0, 12, 0, 122, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3353
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 145, 8, 1, 1, 2, 1,
3354
- 2, 1, 2, 1, 2, 4, 2, 151, 8, 2, 11, 2, 12, 2, 152, 1, 2, 1, 2, 1, 3, 4, 3, 158, 8, 3, 11, 3,
3355
- 12, 3, 159, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 172, 8, 5, 11,
3356
- 5, 12, 5, 173, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3,
3357
- 8, 189, 8, 8, 1, 9, 1, 9, 3, 9, 193, 8, 9, 1, 9, 5, 9, 196, 8, 9, 10, 9, 12, 9, 199, 9, 9,
3358
- 1, 9, 3, 9, 202, 8, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 209, 8, 11, 1, 12, 1, 12,
3359
- 1, 13, 1, 13, 1, 13, 3, 13, 216, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 222, 8, 14, 10,
3360
- 14, 12, 14, 225, 9, 14, 1, 14, 3, 14, 228, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1,
3361
- 15, 5, 15, 236, 8, 15, 10, 15, 12, 15, 239, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 4,
3362
- 15, 246, 8, 15, 11, 15, 12, 15, 247, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 5,
3363
- 16, 257, 8, 16, 10, 16, 12, 16, 260, 9, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1,
3364
- 18, 1, 18, 4, 18, 270, 8, 18, 11, 18, 12, 18, 271, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 278,
3365
- 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 284, 8, 20, 1, 21, 1, 21, 3, 21, 288, 8, 21, 1,
3366
- 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1,
3367
- 26, 1, 26, 5, 26, 305, 8, 26, 10, 26, 12, 26, 308, 9, 26, 1, 26, 1, 26, 5, 26, 312, 8,
3368
- 26, 10, 26, 12, 26, 315, 9, 26, 1, 26, 1, 26, 1, 26, 5, 26, 320, 8, 26, 10, 26, 12, 26,
3369
- 323, 9, 26, 3, 26, 325, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1,
3370
- 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 343, 8, 29, 1, 29, 1, 29, 1,
3371
- 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 352, 8, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1,
3372
- 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 367, 8, 29, 10, 29, 12, 29,
3373
- 370, 9, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 3, 32, 377, 8, 32, 1, 32, 1, 32, 3, 32, 381,
3374
- 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 387, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
3375
- 1, 33, 4, 33, 395, 8, 33, 11, 33, 12, 33, 396, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 403,
3376
- 8, 34, 1, 35, 1, 35, 1, 35, 5, 35, 408, 8, 35, 10, 35, 12, 35, 411, 9, 35, 1, 35, 1, 35,
3377
- 1, 35, 1, 35, 5, 35, 417, 8, 35, 10, 35, 12, 35, 420, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35,
3378
- 1, 35, 1, 35, 1, 35, 5, 35, 429, 8, 35, 10, 35, 12, 35, 432, 9, 35, 3, 35, 434, 8, 35,
3379
- 1, 36, 1, 36, 1, 36, 5, 36, 439, 8, 36, 10, 36, 12, 36, 442, 9, 36, 1, 37, 1, 37, 3, 37,
3380
- 446, 8, 37, 1, 37, 1, 37, 1, 37, 3, 37, 451, 8, 37, 1, 38, 3, 38, 454, 8, 38, 1, 38, 1,
3381
- 38, 4, 38, 458, 8, 38, 11, 38, 12, 38, 459, 1, 39, 3, 39, 463, 8, 39, 1, 39, 1, 39, 3,
3382
- 39, 467, 8, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1,
3383
- 42, 1, 42, 1, 42, 1, 42, 4, 42, 483, 8, 42, 11, 42, 12, 42, 484, 1, 42, 1, 42, 1, 43, 1,
3384
- 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 4, 43, 496, 8, 43, 11, 43, 12, 43, 497, 1, 43, 1,
3385
- 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 4, 44, 510, 8, 44, 11, 44, 12,
3386
- 44, 511, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 4, 45, 520, 8, 45, 11, 45, 12, 45, 521,
3387
- 1, 45, 1, 45, 1, 46, 1, 46, 3, 46, 528, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46,
3388
- 3, 46, 536, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49,
3389
- 5, 49, 548, 8, 49, 10, 49, 12, 49, 551, 9, 49, 3, 49, 553, 8, 49, 1, 50, 1, 50, 1, 50,
3390
- 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 562, 8, 51, 1, 51, 3, 51, 565, 8, 51, 1, 52, 1, 52, 5,
3391
- 52, 569, 8, 52, 10, 52, 12, 52, 572, 9, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1,
3392
- 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 589, 8, 56, 10, 56, 12,
3393
- 56, 592, 9, 56, 1, 56, 3, 56, 595, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58,
3394
- 1, 58, 1, 58, 1, 58, 1, 58, 0, 1, 58, 59, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24,
3395
- 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68,
3396
- 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108,
3397
- 110, 112, 114, 116, 0, 12, 2, 0, 9, 9, 19, 21, 1, 0, 45, 46, 2, 0, 46, 46, 49, 49, 2, 0,
3398
- 43, 43, 46, 46, 1, 0, 39, 40, 1, 0, 37, 38, 1, 0, 35, 36, 1, 0, 29, 34, 2, 0, 27, 27, 38,
3399
- 38, 2, 0, 44, 44, 46, 50, 2, 0, 15, 15, 45, 45, 2, 0, 45, 46, 49, 49, 639, 0, 120, 1, 0,
3400
- 0, 0, 2, 144, 1, 0, 0, 0, 4, 146, 1, 0, 0, 0, 6, 157, 1, 0, 0, 0, 8, 161, 1, 0, 0, 0, 10, 165,
3401
- 1, 0, 0, 0, 12, 177, 1, 0, 0, 0, 14, 181, 1, 0, 0, 0, 16, 184, 1, 0, 0, 0, 18, 192, 1, 0,
3402
- 0, 0, 20, 203, 1, 0, 0, 0, 22, 208, 1, 0, 0, 0, 24, 210, 1, 0, 0, 0, 26, 212, 1, 0, 0, 0,
3403
- 28, 217, 1, 0, 0, 0, 30, 229, 1, 0, 0, 0, 32, 251, 1, 0, 0, 0, 34, 261, 1, 0, 0, 0, 36, 263,
3404
- 1, 0, 0, 0, 38, 277, 1, 0, 0, 0, 40, 279, 1, 0, 0, 0, 42, 287, 1, 0, 0, 0, 44, 289, 1, 0,
3405
- 0, 0, 46, 291, 1, 0, 0, 0, 48, 293, 1, 0, 0, 0, 50, 297, 1, 0, 0, 0, 52, 324, 1, 0, 0, 0,
3406
- 54, 326, 1, 0, 0, 0, 56, 330, 1, 0, 0, 0, 58, 351, 1, 0, 0, 0, 60, 371, 1, 0, 0, 0, 62, 373,
3407
- 1, 0, 0, 0, 64, 380, 1, 0, 0, 0, 66, 382, 1, 0, 0, 0, 68, 402, 1, 0, 0, 0, 70, 433, 1, 0,
3408
- 0, 0, 72, 435, 1, 0, 0, 0, 74, 450, 1, 0, 0, 0, 76, 453, 1, 0, 0, 0, 78, 462, 1, 0, 0, 0,
3409
- 80, 468, 1, 0, 0, 0, 82, 471, 1, 0, 0, 0, 84, 475, 1, 0, 0, 0, 86, 488, 1, 0, 0, 0, 88, 501,
3410
- 1, 0, 0, 0, 90, 515, 1, 0, 0, 0, 92, 525, 1, 0, 0, 0, 94, 537, 1, 0, 0, 0, 96, 541, 1, 0,
3411
- 0, 0, 98, 552, 1, 0, 0, 0, 100, 554, 1, 0, 0, 0, 102, 564, 1, 0, 0, 0, 104, 566, 1, 0, 0,
3412
- 0, 106, 573, 1, 0, 0, 0, 108, 576, 1, 0, 0, 0, 110, 579, 1, 0, 0, 0, 112, 583, 1, 0, 0,
3413
- 0, 114, 596, 1, 0, 0, 0, 116, 602, 1, 0, 0, 0, 118, 121, 3, 2, 1, 0, 119, 121, 5, 53, 0,
3414
- 0, 120, 118, 1, 0, 0, 0, 120, 119, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 120, 1, 0, 0,
3415
- 0, 122, 123, 1, 0, 0, 0, 123, 124, 1, 0, 0, 0, 124, 125, 5, 0, 0, 1, 125, 1, 1, 0, 0, 0,
3416
- 126, 145, 3, 20, 10, 0, 127, 145, 3, 28, 14, 0, 128, 145, 3, 26, 13, 0, 129, 145, 3,
3417
- 48, 24, 0, 130, 145, 3, 54, 27, 0, 131, 145, 3, 10, 5, 0, 132, 145, 3, 56, 28, 0, 133,
3418
- 145, 3, 46, 23, 0, 134, 145, 3, 66, 33, 0, 135, 145, 3, 76, 38, 0, 136, 145, 3, 104,
3419
- 52, 0, 137, 145, 3, 108, 54, 0, 138, 145, 3, 110, 55, 0, 139, 145, 3, 72, 36, 0, 140,
3420
- 145, 3, 36, 18, 0, 141, 145, 3, 6, 3, 0, 142, 145, 3, 106, 53, 0, 143, 145, 3, 112, 56,
3421
- 0, 144, 126, 1, 0, 0, 0, 144, 127, 1, 0, 0, 0, 144, 128, 1, 0, 0, 0, 144, 129, 1, 0, 0,
3422
- 0, 144, 130, 1, 0, 0, 0, 144, 131, 1, 0, 0, 0, 144, 132, 1, 0, 0, 0, 144, 133, 1, 0, 0,
3423
- 0, 144, 134, 1, 0, 0, 0, 144, 135, 1, 0, 0, 0, 144, 136, 1, 0, 0, 0, 144, 137, 1, 0, 0,
3424
- 0, 144, 138, 1, 0, 0, 0, 144, 139, 1, 0, 0, 0, 144, 140, 1, 0, 0, 0, 144, 141, 1, 0, 0,
3425
- 0, 144, 142, 1, 0, 0, 0, 144, 143, 1, 0, 0, 0, 145, 3, 1, 0, 0, 0, 146, 147, 5, 53, 0, 0,
3426
- 147, 150, 5, 55, 0, 0, 148, 151, 5, 53, 0, 0, 149, 151, 3, 2, 1, 0, 150, 148, 1, 0, 0,
3427
- 0, 150, 149, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0,
3428
- 0, 153, 154, 1, 0, 0, 0, 154, 155, 5, 56, 0, 0, 155, 5, 1, 0, 0, 0, 156, 158, 3, 8, 4, 0,
3429
- 157, 156, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 159, 160, 1, 0, 0, 0,
3430
- 160, 7, 1, 0, 0, 0, 161, 162, 7, 0, 0, 0, 162, 163, 5, 1, 0, 0, 163, 164, 3, 4, 2, 0, 164,
3431
- 9, 1, 0, 0, 0, 165, 166, 3, 72, 36, 0, 166, 167, 5, 1, 0, 0, 167, 168, 5, 53, 0, 0, 168,
3432
- 171, 5, 55, 0, 0, 169, 172, 5, 53, 0, 0, 170, 172, 3, 12, 6, 0, 171, 169, 1, 0, 0, 0, 171,
3433
- 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 171, 1, 0, 0, 0, 173, 174, 1, 0, 0, 0, 174,
3434
- 175, 1, 0, 0, 0, 175, 176, 5, 56, 0, 0, 176, 11, 1, 0, 0, 0, 177, 178, 7, 1, 0, 0, 178,
3435
- 179, 5, 1, 0, 0, 179, 180, 3, 64, 32, 0, 180, 13, 1, 0, 0, 0, 181, 182, 5, 15, 0, 0, 182,
3436
- 183, 7, 2, 0, 0, 183, 15, 1, 0, 0, 0, 184, 185, 5, 45, 0, 0, 185, 188, 5, 1, 0, 0, 186,
3437
- 189, 3, 64, 32, 0, 187, 189, 5, 45, 0, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, 0, 0, 0, 189,
3438
- 17, 1, 0, 0, 0, 190, 193, 3, 58, 29, 0, 191, 193, 3, 48, 24, 0, 192, 190, 1, 0, 0, 0, 192,
3439
- 191, 1, 0, 0, 0, 193, 197, 1, 0, 0, 0, 194, 196, 3, 16, 8, 0, 195, 194, 1, 0, 0, 0, 196,
3440
- 199, 1, 0, 0, 0, 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 201, 1, 0, 0, 0, 199,
3441
- 197, 1, 0, 0, 0, 200, 202, 3, 14, 7, 0, 201, 200, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202,
3442
- 19, 1, 0, 0, 0, 203, 204, 5, 16, 0, 0, 204, 205, 3, 18, 9, 0, 205, 21, 1, 0, 0, 0, 206,
3443
- 209, 3, 18, 9, 0, 207, 209, 3, 14, 7, 0, 208, 206, 1, 0, 0, 0, 208, 207, 1, 0, 0, 0, 209,
3444
- 23, 1, 0, 0, 0, 210, 211, 7, 2, 0, 0, 211, 25, 1, 0, 0, 0, 212, 215, 5, 17, 0, 0, 213, 216,
3445
- 3, 22, 11, 0, 214, 216, 5, 19, 0, 0, 215, 213, 1, 0, 0, 0, 215, 214, 1, 0, 0, 0, 216, 27,
3446
- 1, 0, 0, 0, 217, 227, 5, 18, 0, 0, 218, 223, 3, 22, 11, 0, 219, 220, 5, 2, 0, 0, 220, 222,
3447
- 3, 22, 11, 0, 221, 219, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224,
3448
- 1, 0, 0, 0, 224, 228, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 5, 19, 0, 0, 227, 218,
3449
- 1, 0, 0, 0, 227, 226, 1, 0, 0, 0, 228, 29, 1, 0, 0, 0, 229, 230, 5, 17, 0, 0, 230, 231,
3450
- 3, 22, 11, 0, 231, 232, 5, 18, 0, 0, 232, 237, 3, 22, 11, 0, 233, 234, 5, 2, 0, 0, 234,
3451
- 236, 3, 22, 11, 0, 235, 233, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237,
3452
- 238, 1, 0, 0, 0, 238, 240, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240, 241, 5, 1, 0, 0, 241,
3453
- 242, 5, 53, 0, 0, 242, 245, 5, 55, 0, 0, 243, 246, 5, 53, 0, 0, 244, 246, 3, 32, 16, 0,
3454
- 245, 243, 1, 0, 0, 0, 245, 244, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 245, 1, 0, 0, 0,
3455
- 247, 248, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 250, 5, 56, 0, 0, 250, 31, 1, 0, 0, 0,
3456
- 251, 252, 3, 24, 12, 0, 252, 253, 5, 1, 0, 0, 253, 258, 3, 34, 17, 0, 254, 255, 5, 2,
3457
- 0, 0, 255, 257, 3, 34, 17, 0, 256, 254, 1, 0, 0, 0, 257, 260, 1, 0, 0, 0, 258, 256, 1,
3458
- 0, 0, 0, 258, 259, 1, 0, 0, 0, 259, 33, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 261, 262, 7, 3,
3459
- 0, 0, 262, 35, 1, 0, 0, 0, 263, 264, 3, 26, 13, 0, 264, 265, 5, 1, 0, 0, 265, 266, 5, 53,
3460
- 0, 0, 266, 269, 5, 55, 0, 0, 267, 270, 5, 53, 0, 0, 268, 270, 3, 38, 19, 0, 269, 267,
3461
- 1, 0, 0, 0, 269, 268, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 271, 272,
3462
- 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 273, 274, 5, 56, 0, 0, 274, 37, 1, 0, 0, 0, 275, 278,
3463
- 3, 2, 1, 0, 276, 278, 3, 40, 20, 0, 277, 275, 1, 0, 0, 0, 277, 276, 1, 0, 0, 0, 278, 39,
3464
- 1, 0, 0, 0, 279, 280, 3, 24, 12, 0, 280, 283, 5, 1, 0, 0, 281, 284, 3, 42, 21, 0, 282,
3465
- 284, 3, 44, 22, 0, 283, 281, 1, 0, 0, 0, 283, 282, 1, 0, 0, 0, 284, 41, 1, 0, 0, 0, 285,
3466
- 288, 3, 2, 1, 0, 286, 288, 5, 43, 0, 0, 287, 285, 1, 0, 0, 0, 287, 286, 1, 0, 0, 0, 288,
3467
- 43, 1, 0, 0, 0, 289, 290, 3, 4, 2, 0, 290, 45, 1, 0, 0, 0, 291, 292, 5, 8, 0, 0, 292, 47,
3468
- 1, 0, 0, 0, 293, 294, 3, 72, 36, 0, 294, 295, 5, 3, 0, 0, 295, 296, 3, 58, 29, 0, 296,
3469
- 49, 1, 0, 0, 0, 297, 298, 5, 45, 0, 0, 298, 299, 5, 3, 0, 0, 299, 300, 3, 58, 29, 0, 300,
3470
- 51, 1, 0, 0, 0, 301, 306, 3, 58, 29, 0, 302, 303, 5, 2, 0, 0, 303, 305, 3, 58, 29, 0, 304,
3471
- 302, 1, 0, 0, 0, 305, 308, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307,
3472
- 313, 1, 0, 0, 0, 308, 306, 1, 0, 0, 0, 309, 310, 5, 2, 0, 0, 310, 312, 3, 50, 25, 0, 311,
3473
- 309, 1, 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314,
3474
- 325, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 321, 3, 50, 25, 0, 317, 318, 5, 2, 0, 0, 318,
3475
- 320, 3, 50, 25, 0, 319, 317, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321,
3476
- 322, 1, 0, 0, 0, 322, 325, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 301, 1, 0, 0, 0, 324,
3477
- 316, 1, 0, 0, 0, 325, 53, 1, 0, 0, 0, 326, 327, 3, 72, 36, 0, 327, 328, 5, 3, 0, 0, 328,
3478
- 329, 3, 58, 29, 0, 329, 55, 1, 0, 0, 0, 330, 331, 5, 4, 0, 0, 331, 332, 5, 45, 0, 0, 332,
3479
- 333, 5, 3, 0, 0, 333, 334, 3, 58, 29, 0, 334, 57, 1, 0, 0, 0, 335, 336, 6, 29, -1, 0, 336,
3480
- 337, 5, 41, 0, 0, 337, 338, 3, 58, 29, 0, 338, 339, 5, 42, 0, 0, 339, 352, 1, 0, 0, 0,
3481
- 340, 343, 3, 64, 32, 0, 341, 343, 3, 72, 36, 0, 342, 340, 1, 0, 0, 0, 342, 341, 1, 0,
3482
- 0, 0, 343, 352, 1, 0, 0, 0, 344, 345, 3, 62, 31, 0, 345, 346, 3, 58, 29, 9, 346, 352,
3483
- 1, 0, 0, 0, 347, 352, 3, 84, 42, 0, 348, 352, 3, 86, 43, 0, 349, 352, 3, 88, 44, 0, 350,
3484
- 352, 3, 76, 38, 0, 351, 335, 1, 0, 0, 0, 351, 342, 1, 0, 0, 0, 351, 344, 1, 0, 0, 0, 351,
3485
- 347, 1, 0, 0, 0, 351, 348, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 350, 1, 0, 0, 0, 352,
3486
- 368, 1, 0, 0, 0, 353, 354, 10, 8, 0, 0, 354, 355, 7, 4, 0, 0, 355, 367, 3, 58, 29, 9, 356,
3487
- 357, 10, 7, 0, 0, 357, 358, 7, 5, 0, 0, 358, 367, 3, 58, 29, 8, 359, 360, 10, 6, 0, 0,
3488
- 360, 361, 3, 60, 30, 0, 361, 362, 3, 58, 29, 7, 362, 367, 1, 0, 0, 0, 363, 364, 10, 5,
3489
- 0, 0, 364, 365, 7, 6, 0, 0, 365, 367, 3, 58, 29, 6, 366, 353, 1, 0, 0, 0, 366, 356, 1,
3490
- 0, 0, 0, 366, 359, 1, 0, 0, 0, 366, 363, 1, 0, 0, 0, 367, 370, 1, 0, 0, 0, 368, 366, 1,
3491
- 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 59, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 371, 372, 7, 7,
3492
- 0, 0, 372, 61, 1, 0, 0, 0, 373, 374, 7, 8, 0, 0, 374, 63, 1, 0, 0, 0, 375, 377, 5, 38, 0,
3493
- 0, 376, 375, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 381, 7, 9, 0,
3494
- 0, 379, 381, 3, 100, 50, 0, 380, 376, 1, 0, 0, 0, 380, 379, 1, 0, 0, 0, 381, 65, 1, 0,
3495
- 0, 0, 382, 383, 5, 23, 0, 0, 383, 384, 5, 45, 0, 0, 384, 386, 5, 41, 0, 0, 385, 387, 3,
3496
- 70, 35, 0, 386, 385, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 389,
3497
- 5, 42, 0, 0, 389, 390, 5, 1, 0, 0, 390, 391, 5, 53, 0, 0, 391, 394, 5, 55, 0, 0, 392, 395,
3498
- 5, 53, 0, 0, 393, 395, 3, 68, 34, 0, 394, 392, 1, 0, 0, 0, 394, 393, 1, 0, 0, 0, 395, 396,
3499
- 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 399,
3500
- 5, 56, 0, 0, 399, 67, 1, 0, 0, 0, 400, 403, 3, 2, 1, 0, 401, 403, 3, 80, 40, 0, 402, 400,
3501
- 1, 0, 0, 0, 402, 401, 1, 0, 0, 0, 403, 69, 1, 0, 0, 0, 404, 409, 5, 45, 0, 0, 405, 406,
3502
- 5, 2, 0, 0, 406, 408, 5, 45, 0, 0, 407, 405, 1, 0, 0, 0, 408, 411, 1, 0, 0, 0, 409, 407,
3503
- 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410, 418, 1, 0, 0, 0, 411, 409, 1, 0, 0, 0, 412, 413,
3504
- 5, 2, 0, 0, 413, 414, 5, 45, 0, 0, 414, 415, 5, 3, 0, 0, 415, 417, 3, 64, 32, 0, 416, 412,
3505
- 1, 0, 0, 0, 417, 420, 1, 0, 0, 0, 418, 416, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 434,
3506
- 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 421, 422, 5, 45, 0, 0, 422, 423, 5, 3, 0, 0, 423, 430,
3507
- 3, 64, 32, 0, 424, 425, 5, 2, 0, 0, 425, 426, 5, 45, 0, 0, 426, 427, 5, 3, 0, 0, 427, 429,
3508
- 3, 64, 32, 0, 428, 424, 1, 0, 0, 0, 429, 432, 1, 0, 0, 0, 430, 428, 1, 0, 0, 0, 430, 431,
3509
- 1, 0, 0, 0, 431, 434, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 433, 404, 1, 0, 0, 0, 433, 421,
3510
- 1, 0, 0, 0, 434, 71, 1, 0, 0, 0, 435, 440, 5, 45, 0, 0, 436, 437, 5, 5, 0, 0, 437, 439,
3511
- 5, 45, 0, 0, 438, 436, 1, 0, 0, 0, 439, 442, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 440, 441,
3512
- 1, 0, 0, 0, 441, 73, 1, 0, 0, 0, 442, 440, 1, 0, 0, 0, 443, 445, 5, 41, 0, 0, 444, 446,
3513
- 3, 52, 26, 0, 445, 444, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 451,
3514
- 5, 42, 0, 0, 448, 449, 5, 5, 0, 0, 449, 451, 5, 45, 0, 0, 450, 443, 1, 0, 0, 0, 450, 448,
3515
- 1, 0, 0, 0, 451, 75, 1, 0, 0, 0, 452, 454, 3, 78, 39, 0, 453, 452, 1, 0, 0, 0, 453, 454,
3516
- 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 457, 5, 45, 0, 0, 456, 458, 3, 74, 37, 0, 457, 456,
3517
- 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 77, 1,
3518
- 0, 0, 0, 461, 463, 5, 37, 0, 0, 462, 461, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 464, 1,
3519
- 0, 0, 0, 464, 466, 5, 39, 0, 0, 465, 467, 3, 58, 29, 0, 466, 465, 1, 0, 0, 0, 466, 467,
3520
- 1, 0, 0, 0, 467, 79, 1, 0, 0, 0, 468, 469, 5, 22, 0, 0, 469, 470, 3, 58, 29, 0, 470, 81,
3521
- 1, 0, 0, 0, 471, 472, 3, 96, 48, 0, 472, 473, 5, 1, 0, 0, 473, 474, 3, 4, 2, 0, 474, 83,
3522
- 1, 0, 0, 0, 475, 476, 5, 10, 0, 0, 476, 477, 5, 11, 0, 0, 477, 478, 5, 1, 0, 0, 478, 479,
3523
- 5, 53, 0, 0, 479, 482, 5, 55, 0, 0, 480, 483, 5, 53, 0, 0, 481, 483, 3, 94, 47, 0, 482,
3524
- 480, 1, 0, 0, 0, 482, 481, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 484,
3525
- 485, 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 487, 5, 56, 0, 0, 487, 85, 1, 0, 0, 0, 488,
3526
- 489, 5, 10, 0, 0, 489, 490, 5, 12, 0, 0, 490, 491, 5, 1, 0, 0, 491, 492, 5, 53, 0, 0, 492,
3527
- 495, 5, 55, 0, 0, 493, 496, 5, 53, 0, 0, 494, 496, 3, 92, 46, 0, 495, 493, 1, 0, 0, 0,
3528
- 495, 494, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0,
3529
- 498, 499, 1, 0, 0, 0, 499, 500, 5, 56, 0, 0, 500, 87, 1, 0, 0, 0, 501, 502, 5, 10, 0, 0,
3530
- 502, 503, 5, 13, 0, 0, 503, 504, 5, 1, 0, 0, 504, 505, 5, 53, 0, 0, 505, 509, 5, 55, 0,
3531
- 0, 506, 510, 5, 53, 0, 0, 507, 510, 3, 94, 47, 0, 508, 510, 3, 82, 41, 0, 509, 506, 1,
3532
- 0, 0, 0, 509, 507, 1, 0, 0, 0, 509, 508, 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 509, 1,
3533
- 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 514, 5, 56, 0, 0, 514, 89, 1,
3534
- 0, 0, 0, 515, 516, 5, 53, 0, 0, 516, 519, 5, 55, 0, 0, 517, 520, 5, 53, 0, 0, 518, 520,
3535
- 3, 94, 47, 0, 519, 517, 1, 0, 0, 0, 519, 518, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 519,
3536
- 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 524, 5, 56, 0, 0, 524, 91,
3537
- 1, 0, 0, 0, 525, 527, 7, 10, 0, 0, 526, 528, 5, 1, 0, 0, 527, 526, 1, 0, 0, 0, 527, 528,
3538
- 1, 0, 0, 0, 528, 535, 1, 0, 0, 0, 529, 536, 3, 52, 26, 0, 530, 531, 5, 41, 0, 0, 531, 532,
3539
- 3, 52, 26, 0, 532, 533, 5, 42, 0, 0, 533, 536, 1, 0, 0, 0, 534, 536, 3, 90, 45, 0, 535,
3540
- 529, 1, 0, 0, 0, 535, 530, 1, 0, 0, 0, 535, 534, 1, 0, 0, 0, 536, 93, 1, 0, 0, 0, 537, 538,
3541
- 3, 96, 48, 0, 538, 539, 5, 1, 0, 0, 539, 540, 3, 98, 49, 0, 540, 95, 1, 0, 0, 0, 541, 542,
3542
- 7, 11, 0, 0, 542, 97, 1, 0, 0, 0, 543, 553, 3, 90, 45, 0, 544, 549, 3, 58, 29, 0, 545,
3543
- 546, 5, 2, 0, 0, 546, 548, 3, 58, 29, 0, 547, 545, 1, 0, 0, 0, 548, 551, 1, 0, 0, 0, 549,
3544
- 547, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 553, 1, 0, 0, 0, 551, 549, 1, 0, 0, 0, 552,
3545
- 543, 1, 0, 0, 0, 552, 544, 1, 0, 0, 0, 553, 99, 1, 0, 0, 0, 554, 555, 5, 6, 0, 0, 555, 556,
3546
- 5, 46, 0, 0, 556, 557, 5, 7, 0, 0, 557, 101, 1, 0, 0, 0, 558, 561, 5, 45, 0, 0, 559, 562,
3547
- 5, 46, 0, 0, 560, 562, 3, 58, 29, 0, 561, 559, 1, 0, 0, 0, 561, 560, 1, 0, 0, 0, 562, 565,
3548
- 1, 0, 0, 0, 563, 565, 5, 45, 0, 0, 564, 558, 1, 0, 0, 0, 564, 563, 1, 0, 0, 0, 565, 103,
3549
- 1, 0, 0, 0, 566, 570, 5, 14, 0, 0, 567, 569, 3, 102, 51, 0, 568, 567, 1, 0, 0, 0, 569,
3550
- 572, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 105, 1, 0, 0, 0, 572,
3551
- 570, 1, 0, 0, 0, 573, 574, 5, 19, 0, 0, 574, 575, 5, 45, 0, 0, 575, 107, 1, 0, 0, 0, 576,
3552
- 577, 5, 24, 0, 0, 577, 578, 5, 45, 0, 0, 578, 109, 1, 0, 0, 0, 579, 580, 5, 28, 0, 0, 580,
3553
- 581, 5, 1, 0, 0, 581, 582, 3, 4, 2, 0, 582, 111, 1, 0, 0, 0, 583, 584, 5, 25, 0, 0, 584,
3554
- 585, 3, 58, 29, 0, 585, 586, 5, 1, 0, 0, 586, 590, 3, 4, 2, 0, 587, 589, 3, 114, 57, 0,
3555
- 588, 587, 1, 0, 0, 0, 589, 592, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0,
3556
- 591, 594, 1, 0, 0, 0, 592, 590, 1, 0, 0, 0, 593, 595, 3, 116, 58, 0, 594, 593, 1, 0, 0,
3557
- 0, 594, 595, 1, 0, 0, 0, 595, 113, 1, 0, 0, 0, 596, 597, 5, 26, 0, 0, 597, 598, 5, 25,
3558
- 0, 0, 598, 599, 3, 58, 29, 0, 599, 600, 5, 1, 0, 0, 600, 601, 3, 4, 2, 0, 601, 115, 1,
3559
- 0, 0, 0, 602, 603, 5, 26, 0, 0, 603, 604, 5, 1, 0, 0, 604, 605, 3, 4, 2, 0, 605, 117, 1,
3560
- 0, 0, 0, 67, 120, 122, 144, 150, 152, 159, 171, 173, 188, 192, 197, 201, 208, 215,
3561
- 223, 227, 237, 245, 247, 258, 269, 271, 277, 283, 287, 306, 313, 321, 324, 342,
3562
- 351, 366, 368, 376, 380, 386, 394, 396, 402, 409, 418, 430, 433, 440, 445, 450,
3563
- 453, 459, 462, 466, 482, 484, 495, 497, 509, 511, 519, 521, 527, 535, 549, 552,
3564
- 561, 564, 570, 590, 594
3649
+ 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,
3650
+ 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 1, 0, 1, 0, 4, 0, 131, 8, 0,
3651
+ 11, 0, 12, 0, 132, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3652
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 159, 8, 1, 1, 2, 1,
3653
+ 2, 1, 2, 1, 2, 4, 2, 165, 8, 2, 11, 2, 12, 2, 166, 1, 2, 1, 2, 1, 3, 4, 3, 172, 8, 3, 11, 3,
3654
+ 12, 3, 173, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 186, 8, 5, 11,
3655
+ 5, 12, 5, 187, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3,
3656
+ 8, 203, 8, 8, 1, 9, 1, 9, 3, 9, 207, 8, 9, 1, 9, 5, 9, 210, 8, 9, 10, 9, 12, 9, 213, 9, 9,
3657
+ 1, 9, 3, 9, 216, 8, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 223, 8, 11, 1, 12, 1, 12,
3658
+ 1, 13, 1, 13, 1, 13, 3, 13, 230, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 236, 8, 14, 10,
3659
+ 14, 12, 14, 239, 9, 14, 1, 14, 3, 14, 242, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1,
3660
+ 15, 5, 15, 250, 8, 15, 10, 15, 12, 15, 253, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 4,
3661
+ 15, 260, 8, 15, 11, 15, 12, 15, 261, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 5,
3662
+ 16, 271, 8, 16, 10, 16, 12, 16, 274, 9, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1,
3663
+ 18, 1, 18, 4, 18, 284, 8, 18, 11, 18, 12, 18, 285, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 292,
3664
+ 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 298, 8, 20, 1, 21, 1, 21, 3, 21, 302, 8, 21, 1,
3665
+ 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1,
3666
+ 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 5, 28, 325, 8, 28, 10, 28, 12, 28,
3667
+ 328, 9, 28, 1, 28, 1, 28, 5, 28, 332, 8, 28, 10, 28, 12, 28, 335, 9, 28, 1, 28, 1, 28,
3668
+ 1, 28, 5, 28, 340, 8, 28, 10, 28, 12, 28, 343, 9, 28, 3, 28, 345, 8, 28, 1, 29, 1, 29,
3669
+ 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31,
3670
+ 1, 31, 3, 31, 363, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31,
3671
+ 373, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31,
3672
+ 1, 31, 1, 31, 5, 31, 388, 8, 31, 10, 31, 12, 31, 391, 9, 31, 1, 32, 1, 32, 1, 33, 1, 33,
3673
+ 1, 34, 3, 34, 398, 8, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 406, 8, 35, 1,
3674
+ 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 4, 35, 414, 8, 35, 11, 35, 12, 35, 415, 1, 35, 1,
3675
+ 35, 1, 36, 1, 36, 3, 36, 422, 8, 36, 1, 37, 1, 37, 1, 37, 5, 37, 427, 8, 37, 10, 37, 12,
3676
+ 37, 430, 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 436, 8, 37, 10, 37, 12, 37, 439, 9,
3677
+ 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 448, 8, 37, 10, 37, 12, 37,
3678
+ 451, 9, 37, 3, 37, 453, 8, 37, 1, 38, 1, 38, 1, 38, 5, 38, 458, 8, 38, 10, 38, 12, 38,
3679
+ 461, 9, 38, 1, 39, 1, 39, 3, 39, 465, 8, 39, 1, 39, 1, 39, 1, 39, 3, 39, 470, 8, 39, 1,
3680
+ 40, 3, 40, 473, 8, 40, 1, 40, 1, 40, 4, 40, 477, 8, 40, 11, 40, 12, 40, 478, 1, 41, 3,
3681
+ 41, 482, 8, 41, 1, 41, 1, 41, 3, 41, 486, 8, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43,
3682
+ 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 4, 44, 502, 8, 44, 11, 44, 12, 44,
3683
+ 503, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 4, 45, 512, 8, 45, 11, 45, 12, 45, 513,
3684
+ 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47,
3685
+ 1, 47, 1, 47, 4, 47, 531, 8, 47, 11, 47, 12, 47, 532, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48,
3686
+ 1, 48, 4, 48, 541, 8, 48, 11, 48, 12, 48, 542, 1, 48, 1, 48, 1, 49, 1, 49, 3, 49, 549,
3687
+ 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 557, 8, 49, 1, 49, 1, 49, 1, 49,
3688
+ 1, 49, 5, 49, 563, 8, 49, 10, 49, 12, 49, 566, 9, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49,
3689
+ 3, 49, 573, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52,
3690
+ 5, 52, 585, 8, 52, 10, 52, 12, 52, 588, 9, 52, 3, 52, 590, 8, 52, 1, 53, 1, 53, 1, 53,
3691
+ 3, 53, 595, 8, 53, 1, 53, 3, 53, 598, 8, 53, 1, 54, 1, 54, 5, 54, 602, 8, 54, 10, 54, 12,
3692
+ 54, 605, 9, 54, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 611, 8, 55, 10, 55, 12, 55, 614, 9,
3693
+ 55, 5, 55, 616, 8, 55, 10, 55, 12, 55, 619, 9, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1,
3694
+ 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 638,
3695
+ 8, 59, 10, 59, 12, 59, 641, 9, 59, 1, 59, 3, 59, 644, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60,
3696
+ 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63,
3697
+ 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 0, 1, 62, 64, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
3698
+ 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62,
3699
+ 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104,
3700
+ 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 0, 14, 2, 0, 9, 9, 19, 21, 1,
3701
+ 0, 56, 57, 2, 0, 57, 57, 60, 60, 2, 0, 54, 54, 57, 57, 1, 0, 47, 51, 1, 0, 44, 46, 1, 0,
3702
+ 42, 43, 1, 0, 40, 41, 1, 0, 34, 39, 2, 0, 31, 31, 43, 43, 2, 0, 55, 55, 57, 61, 2, 0, 15,
3703
+ 15, 56, 56, 2, 0, 56, 57, 60, 60, 1, 0, 32, 33, 703, 0, 130, 1, 0, 0, 0, 2, 158, 1, 0, 0,
3704
+ 0, 4, 160, 1, 0, 0, 0, 6, 171, 1, 0, 0, 0, 8, 175, 1, 0, 0, 0, 10, 179, 1, 0, 0, 0, 12, 191,
3705
+ 1, 0, 0, 0, 14, 195, 1, 0, 0, 0, 16, 198, 1, 0, 0, 0, 18, 206, 1, 0, 0, 0, 20, 217, 1, 0,
3706
+ 0, 0, 22, 222, 1, 0, 0, 0, 24, 224, 1, 0, 0, 0, 26, 226, 1, 0, 0, 0, 28, 231, 1, 0, 0, 0,
3707
+ 30, 243, 1, 0, 0, 0, 32, 265, 1, 0, 0, 0, 34, 275, 1, 0, 0, 0, 36, 277, 1, 0, 0, 0, 38, 291,
3708
+ 1, 0, 0, 0, 40, 293, 1, 0, 0, 0, 42, 301, 1, 0, 0, 0, 44, 303, 1, 0, 0, 0, 46, 305, 1, 0,
3709
+ 0, 0, 48, 307, 1, 0, 0, 0, 50, 309, 1, 0, 0, 0, 52, 313, 1, 0, 0, 0, 54, 317, 1, 0, 0, 0,
3710
+ 56, 344, 1, 0, 0, 0, 58, 346, 1, 0, 0, 0, 60, 350, 1, 0, 0, 0, 62, 372, 1, 0, 0, 0, 64, 392,
3711
+ 1, 0, 0, 0, 66, 394, 1, 0, 0, 0, 68, 397, 1, 0, 0, 0, 70, 401, 1, 0, 0, 0, 72, 421, 1, 0,
3712
+ 0, 0, 74, 452, 1, 0, 0, 0, 76, 454, 1, 0, 0, 0, 78, 469, 1, 0, 0, 0, 80, 472, 1, 0, 0, 0,
3713
+ 82, 481, 1, 0, 0, 0, 84, 487, 1, 0, 0, 0, 86, 490, 1, 0, 0, 0, 88, 494, 1, 0, 0, 0, 90, 507,
3714
+ 1, 0, 0, 0, 92, 517, 1, 0, 0, 0, 94, 522, 1, 0, 0, 0, 96, 536, 1, 0, 0, 0, 98, 572, 1, 0,
3715
+ 0, 0, 100, 574, 1, 0, 0, 0, 102, 578, 1, 0, 0, 0, 104, 589, 1, 0, 0, 0, 106, 597, 1, 0,
3716
+ 0, 0, 108, 599, 1, 0, 0, 0, 110, 606, 1, 0, 0, 0, 112, 622, 1, 0, 0, 0, 114, 625, 1, 0,
3717
+ 0, 0, 116, 628, 1, 0, 0, 0, 118, 632, 1, 0, 0, 0, 120, 645, 1, 0, 0, 0, 122, 651, 1, 0,
3718
+ 0, 0, 124, 655, 1, 0, 0, 0, 126, 660, 1, 0, 0, 0, 128, 131, 3, 2, 1, 0, 129, 131, 5, 64,
3719
+ 0, 0, 130, 128, 1, 0, 0, 0, 130, 129, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 130, 1, 0,
3720
+ 0, 0, 132, 133, 1, 0, 0, 0, 133, 134, 1, 0, 0, 0, 134, 135, 5, 0, 0, 1, 135, 1, 1, 0, 0,
3721
+ 0, 136, 159, 3, 20, 10, 0, 137, 159, 3, 28, 14, 0, 138, 159, 3, 26, 13, 0, 139, 159,
3722
+ 3, 50, 25, 0, 140, 159, 3, 52, 26, 0, 141, 159, 3, 58, 29, 0, 142, 159, 3, 10, 5, 0, 143,
3723
+ 159, 3, 60, 30, 0, 144, 159, 3, 46, 23, 0, 145, 159, 3, 48, 24, 0, 146, 159, 3, 70, 35,
3724
+ 0, 147, 159, 3, 80, 40, 0, 148, 159, 3, 108, 54, 0, 149, 159, 3, 114, 57, 0, 150, 159,
3725
+ 3, 116, 58, 0, 151, 159, 3, 76, 38, 0, 152, 159, 3, 36, 18, 0, 153, 159, 3, 6, 3, 0, 154,
3726
+ 159, 3, 112, 56, 0, 155, 159, 3, 118, 59, 0, 156, 159, 3, 124, 62, 0, 157, 159, 3, 126,
3727
+ 63, 0, 158, 136, 1, 0, 0, 0, 158, 137, 1, 0, 0, 0, 158, 138, 1, 0, 0, 0, 158, 139, 1, 0,
3728
+ 0, 0, 158, 140, 1, 0, 0, 0, 158, 141, 1, 0, 0, 0, 158, 142, 1, 0, 0, 0, 158, 143, 1, 0,
3729
+ 0, 0, 158, 144, 1, 0, 0, 0, 158, 145, 1, 0, 0, 0, 158, 146, 1, 0, 0, 0, 158, 147, 1, 0,
3730
+ 0, 0, 158, 148, 1, 0, 0, 0, 158, 149, 1, 0, 0, 0, 158, 150, 1, 0, 0, 0, 158, 151, 1, 0,
3731
+ 0, 0, 158, 152, 1, 0, 0, 0, 158, 153, 1, 0, 0, 0, 158, 154, 1, 0, 0, 0, 158, 155, 1, 0,
3732
+ 0, 0, 158, 156, 1, 0, 0, 0, 158, 157, 1, 0, 0, 0, 159, 3, 1, 0, 0, 0, 160, 161, 5, 64, 0,
3733
+ 0, 161, 164, 5, 66, 0, 0, 162, 165, 5, 64, 0, 0, 163, 165, 3, 2, 1, 0, 164, 162, 1, 0,
3734
+ 0, 0, 164, 163, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 164, 1, 0, 0, 0, 166, 167, 1, 0,
3735
+ 0, 0, 167, 168, 1, 0, 0, 0, 168, 169, 5, 67, 0, 0, 169, 5, 1, 0, 0, 0, 170, 172, 3, 8, 4,
3736
+ 0, 171, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 171, 1, 0, 0, 0, 173, 174, 1, 0, 0,
3737
+ 0, 174, 7, 1, 0, 0, 0, 175, 176, 7, 0, 0, 0, 176, 177, 5, 1, 0, 0, 177, 178, 3, 4, 2, 0,
3738
+ 178, 9, 1, 0, 0, 0, 179, 180, 3, 76, 38, 0, 180, 181, 5, 1, 0, 0, 181, 182, 5, 64, 0, 0,
3739
+ 182, 185, 5, 66, 0, 0, 183, 186, 5, 64, 0, 0, 184, 186, 3, 12, 6, 0, 185, 183, 1, 0, 0,
3740
+ 0, 185, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 187, 188, 1, 0, 0,
3741
+ 0, 188, 189, 1, 0, 0, 0, 189, 190, 5, 67, 0, 0, 190, 11, 1, 0, 0, 0, 191, 192, 7, 1, 0,
3742
+ 0, 192, 193, 5, 1, 0, 0, 193, 194, 3, 68, 34, 0, 194, 13, 1, 0, 0, 0, 195, 196, 5, 15,
3743
+ 0, 0, 196, 197, 7, 2, 0, 0, 197, 15, 1, 0, 0, 0, 198, 199, 5, 56, 0, 0, 199, 202, 5, 1,
3744
+ 0, 0, 200, 203, 3, 68, 34, 0, 201, 203, 5, 56, 0, 0, 202, 200, 1, 0, 0, 0, 202, 201, 1,
3745
+ 0, 0, 0, 203, 17, 1, 0, 0, 0, 204, 207, 3, 62, 31, 0, 205, 207, 3, 50, 25, 0, 206, 204,
3746
+ 1, 0, 0, 0, 206, 205, 1, 0, 0, 0, 207, 211, 1, 0, 0, 0, 208, 210, 3, 16, 8, 0, 209, 208,
3747
+ 1, 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, 209, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 215,
3748
+ 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 214, 216, 3, 14, 7, 0, 215, 214, 1, 0, 0, 0, 215, 216,
3749
+ 1, 0, 0, 0, 216, 19, 1, 0, 0, 0, 217, 218, 5, 16, 0, 0, 218, 219, 3, 18, 9, 0, 219, 21,
3750
+ 1, 0, 0, 0, 220, 223, 3, 18, 9, 0, 221, 223, 3, 14, 7, 0, 222, 220, 1, 0, 0, 0, 222, 221,
3751
+ 1, 0, 0, 0, 223, 23, 1, 0, 0, 0, 224, 225, 7, 2, 0, 0, 225, 25, 1, 0, 0, 0, 226, 229, 5,
3752
+ 17, 0, 0, 227, 230, 3, 22, 11, 0, 228, 230, 5, 19, 0, 0, 229, 227, 1, 0, 0, 0, 229, 228,
3753
+ 1, 0, 0, 0, 230, 27, 1, 0, 0, 0, 231, 241, 5, 18, 0, 0, 232, 237, 3, 22, 11, 0, 233, 234,
3754
+ 5, 2, 0, 0, 234, 236, 3, 22, 11, 0, 235, 233, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, 237, 235,
3755
+ 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 242, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240, 242,
3756
+ 5, 19, 0, 0, 241, 232, 1, 0, 0, 0, 241, 240, 1, 0, 0, 0, 242, 29, 1, 0, 0, 0, 243, 244,
3757
+ 5, 17, 0, 0, 244, 245, 3, 22, 11, 0, 245, 246, 5, 18, 0, 0, 246, 251, 3, 22, 11, 0, 247,
3758
+ 248, 5, 2, 0, 0, 248, 250, 3, 22, 11, 0, 249, 247, 1, 0, 0, 0, 250, 253, 1, 0, 0, 0, 251,
3759
+ 249, 1, 0, 0, 0, 251, 252, 1, 0, 0, 0, 252, 254, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 254,
3760
+ 255, 5, 1, 0, 0, 255, 256, 5, 64, 0, 0, 256, 259, 5, 66, 0, 0, 257, 260, 5, 64, 0, 0, 258,
3761
+ 260, 3, 32, 16, 0, 259, 257, 1, 0, 0, 0, 259, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261,
3762
+ 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 264, 5, 67, 0, 0, 264,
3763
+ 31, 1, 0, 0, 0, 265, 266, 3, 24, 12, 0, 266, 267, 5, 1, 0, 0, 267, 272, 3, 34, 17, 0, 268,
3764
+ 269, 5, 2, 0, 0, 269, 271, 3, 34, 17, 0, 270, 268, 1, 0, 0, 0, 271, 274, 1, 0, 0, 0, 272,
3765
+ 270, 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 273, 33, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 275, 276,
3766
+ 7, 3, 0, 0, 276, 35, 1, 0, 0, 0, 277, 278, 3, 26, 13, 0, 278, 279, 5, 1, 0, 0, 279, 280,
3767
+ 5, 64, 0, 0, 280, 283, 5, 66, 0, 0, 281, 284, 5, 64, 0, 0, 282, 284, 3, 38, 19, 0, 283,
3768
+ 281, 1, 0, 0, 0, 283, 282, 1, 0, 0, 0, 284, 285, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 285,
3769
+ 286, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 288, 5, 67, 0, 0, 288, 37, 1, 0, 0, 0, 289,
3770
+ 292, 3, 2, 1, 0, 290, 292, 3, 40, 20, 0, 291, 289, 1, 0, 0, 0, 291, 290, 1, 0, 0, 0, 292,
3771
+ 39, 1, 0, 0, 0, 293, 294, 3, 24, 12, 0, 294, 297, 5, 1, 0, 0, 295, 298, 3, 42, 21, 0, 296,
3772
+ 298, 3, 44, 22, 0, 297, 295, 1, 0, 0, 0, 297, 296, 1, 0, 0, 0, 298, 41, 1, 0, 0, 0, 299,
3773
+ 302, 3, 2, 1, 0, 300, 302, 5, 54, 0, 0, 301, 299, 1, 0, 0, 0, 301, 300, 1, 0, 0, 0, 302,
3774
+ 43, 1, 0, 0, 0, 303, 304, 3, 4, 2, 0, 304, 45, 1, 0, 0, 0, 305, 306, 5, 8, 0, 0, 306, 47,
3775
+ 1, 0, 0, 0, 307, 308, 5, 28, 0, 0, 308, 49, 1, 0, 0, 0, 309, 310, 3, 76, 38, 0, 310, 311,
3776
+ 5, 3, 0, 0, 311, 312, 3, 62, 31, 0, 312, 51, 1, 0, 0, 0, 313, 314, 3, 76, 38, 0, 314, 315,
3777
+ 7, 4, 0, 0, 315, 316, 3, 62, 31, 0, 316, 53, 1, 0, 0, 0, 317, 318, 5, 56, 0, 0, 318, 319,
3778
+ 5, 3, 0, 0, 319, 320, 3, 62, 31, 0, 320, 55, 1, 0, 0, 0, 321, 326, 3, 62, 31, 0, 322, 323,
3779
+ 5, 2, 0, 0, 323, 325, 3, 62, 31, 0, 324, 322, 1, 0, 0, 0, 325, 328, 1, 0, 0, 0, 326, 324,
3780
+ 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 333, 1, 0, 0, 0, 328, 326, 1, 0, 0, 0, 329, 330,
3781
+ 5, 2, 0, 0, 330, 332, 3, 54, 27, 0, 331, 329, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331,
3782
+ 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 345, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 341,
3783
+ 3, 54, 27, 0, 337, 338, 5, 2, 0, 0, 338, 340, 3, 54, 27, 0, 339, 337, 1, 0, 0, 0, 340,
3784
+ 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 345, 1, 0, 0, 0, 343,
3785
+ 341, 1, 0, 0, 0, 344, 321, 1, 0, 0, 0, 344, 336, 1, 0, 0, 0, 345, 57, 1, 0, 0, 0, 346, 347,
3786
+ 3, 76, 38, 0, 347, 348, 5, 3, 0, 0, 348, 349, 3, 62, 31, 0, 349, 59, 1, 0, 0, 0, 350, 351,
3787
+ 5, 4, 0, 0, 351, 352, 5, 56, 0, 0, 352, 353, 5, 3, 0, 0, 353, 354, 3, 62, 31, 0, 354, 61,
3788
+ 1, 0, 0, 0, 355, 356, 6, 31, -1, 0, 356, 357, 5, 52, 0, 0, 357, 358, 3, 62, 31, 0, 358,
3789
+ 359, 5, 53, 0, 0, 359, 373, 1, 0, 0, 0, 360, 363, 3, 68, 34, 0, 361, 363, 3, 76, 38, 0,
3790
+ 362, 360, 1, 0, 0, 0, 362, 361, 1, 0, 0, 0, 363, 373, 1, 0, 0, 0, 364, 365, 3, 66, 33,
3791
+ 0, 365, 366, 3, 62, 31, 10, 366, 373, 1, 0, 0, 0, 367, 373, 3, 88, 44, 0, 368, 373, 3,
3792
+ 92, 46, 0, 369, 373, 3, 94, 47, 0, 370, 373, 3, 80, 40, 0, 371, 373, 3, 110, 55, 0, 372,
3793
+ 355, 1, 0, 0, 0, 372, 362, 1, 0, 0, 0, 372, 364, 1, 0, 0, 0, 372, 367, 1, 0, 0, 0, 372,
3794
+ 368, 1, 0, 0, 0, 372, 369, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 372, 371, 1, 0, 0, 0, 373,
3795
+ 389, 1, 0, 0, 0, 374, 375, 10, 9, 0, 0, 375, 376, 7, 5, 0, 0, 376, 388, 3, 62, 31, 10,
3796
+ 377, 378, 10, 8, 0, 0, 378, 379, 7, 6, 0, 0, 379, 388, 3, 62, 31, 9, 380, 381, 10, 7,
3797
+ 0, 0, 381, 382, 3, 64, 32, 0, 382, 383, 3, 62, 31, 8, 383, 388, 1, 0, 0, 0, 384, 385,
3798
+ 10, 6, 0, 0, 385, 386, 7, 7, 0, 0, 386, 388, 3, 62, 31, 7, 387, 374, 1, 0, 0, 0, 387, 377,
3799
+ 1, 0, 0, 0, 387, 380, 1, 0, 0, 0, 387, 384, 1, 0, 0, 0, 388, 391, 1, 0, 0, 0, 389, 387,
3800
+ 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 63, 1, 0, 0, 0, 391, 389, 1, 0, 0, 0, 392, 393, 7,
3801
+ 8, 0, 0, 393, 65, 1, 0, 0, 0, 394, 395, 7, 9, 0, 0, 395, 67, 1, 0, 0, 0, 396, 398, 5, 43,
3802
+ 0, 0, 397, 396, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 400, 7, 10,
3803
+ 0, 0, 400, 69, 1, 0, 0, 0, 401, 402, 5, 23, 0, 0, 402, 403, 5, 56, 0, 0, 403, 405, 5, 52,
3804
+ 0, 0, 404, 406, 3, 74, 37, 0, 405, 404, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 407, 1,
3805
+ 0, 0, 0, 407, 408, 5, 53, 0, 0, 408, 409, 5, 1, 0, 0, 409, 410, 5, 64, 0, 0, 410, 413,
3806
+ 5, 66, 0, 0, 411, 414, 5, 64, 0, 0, 412, 414, 3, 72, 36, 0, 413, 411, 1, 0, 0, 0, 413,
3807
+ 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 413, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416,
3808
+ 417, 1, 0, 0, 0, 417, 418, 5, 67, 0, 0, 418, 71, 1, 0, 0, 0, 419, 422, 3, 2, 1, 0, 420,
3809
+ 422, 3, 84, 42, 0, 421, 419, 1, 0, 0, 0, 421, 420, 1, 0, 0, 0, 422, 73, 1, 0, 0, 0, 423,
3810
+ 428, 5, 56, 0, 0, 424, 425, 5, 2, 0, 0, 425, 427, 5, 56, 0, 0, 426, 424, 1, 0, 0, 0, 427,
3811
+ 430, 1, 0, 0, 0, 428, 426, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 437, 1, 0, 0, 0, 430,
3812
+ 428, 1, 0, 0, 0, 431, 432, 5, 2, 0, 0, 432, 433, 5, 56, 0, 0, 433, 434, 5, 3, 0, 0, 434,
3813
+ 436, 3, 68, 34, 0, 435, 431, 1, 0, 0, 0, 436, 439, 1, 0, 0, 0, 437, 435, 1, 0, 0, 0, 437,
3814
+ 438, 1, 0, 0, 0, 438, 453, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 440, 441, 5, 56, 0, 0, 441,
3815
+ 442, 5, 3, 0, 0, 442, 449, 3, 68, 34, 0, 443, 444, 5, 2, 0, 0, 444, 445, 5, 56, 0, 0, 445,
3816
+ 446, 5, 3, 0, 0, 446, 448, 3, 68, 34, 0, 447, 443, 1, 0, 0, 0, 448, 451, 1, 0, 0, 0, 449,
3817
+ 447, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 453, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 452,
3818
+ 423, 1, 0, 0, 0, 452, 440, 1, 0, 0, 0, 453, 75, 1, 0, 0, 0, 454, 459, 5, 56, 0, 0, 455,
3819
+ 456, 5, 5, 0, 0, 456, 458, 5, 56, 0, 0, 457, 455, 1, 0, 0, 0, 458, 461, 1, 0, 0, 0, 459,
3820
+ 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 77, 1, 0, 0, 0, 461, 459, 1, 0, 0, 0, 462, 464,
3821
+ 5, 52, 0, 0, 463, 465, 3, 56, 28, 0, 464, 463, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 466,
3822
+ 1, 0, 0, 0, 466, 470, 5, 53, 0, 0, 467, 468, 5, 5, 0, 0, 468, 470, 5, 56, 0, 0, 469, 462,
3823
+ 1, 0, 0, 0, 469, 467, 1, 0, 0, 0, 470, 79, 1, 0, 0, 0, 471, 473, 3, 82, 41, 0, 472, 471,
3824
+ 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 476, 5, 56, 0, 0, 475, 477,
3825
+ 3, 78, 39, 0, 476, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 476, 1, 0, 0, 0, 478, 479,
3826
+ 1, 0, 0, 0, 479, 81, 1, 0, 0, 0, 480, 482, 5, 42, 0, 0, 481, 480, 1, 0, 0, 0, 481, 482,
3827
+ 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 485, 5, 44, 0, 0, 484, 486, 3, 62, 31, 0, 485, 484,
3828
+ 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 83, 1, 0, 0, 0, 487, 488, 5, 22, 0, 0, 488, 489,
3829
+ 3, 62, 31, 0, 489, 85, 1, 0, 0, 0, 490, 491, 3, 102, 51, 0, 491, 492, 5, 1, 0, 0, 492,
3830
+ 493, 3, 4, 2, 0, 493, 87, 1, 0, 0, 0, 494, 495, 5, 10, 0, 0, 495, 496, 5, 11, 0, 0, 496,
3831
+ 497, 5, 1, 0, 0, 497, 498, 5, 64, 0, 0, 498, 501, 5, 66, 0, 0, 499, 502, 5, 64, 0, 0, 500,
3832
+ 502, 3, 100, 50, 0, 501, 499, 1, 0, 0, 0, 501, 500, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503,
3833
+ 501, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 506, 5, 67, 0, 0, 506,
3834
+ 89, 1, 0, 0, 0, 507, 508, 5, 64, 0, 0, 508, 511, 5, 66, 0, 0, 509, 512, 5, 64, 0, 0, 510,
3835
+ 512, 3, 98, 49, 0, 511, 509, 1, 0, 0, 0, 511, 510, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513,
3836
+ 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 516, 5, 67, 0, 0, 516,
3837
+ 91, 1, 0, 0, 0, 517, 518, 5, 10, 0, 0, 518, 519, 5, 12, 0, 0, 519, 520, 5, 1, 0, 0, 520,
3838
+ 521, 3, 90, 45, 0, 521, 93, 1, 0, 0, 0, 522, 523, 5, 10, 0, 0, 523, 524, 5, 13, 0, 0, 524,
3839
+ 525, 5, 1, 0, 0, 525, 526, 5, 64, 0, 0, 526, 530, 5, 66, 0, 0, 527, 531, 5, 64, 0, 0, 528,
3840
+ 531, 3, 100, 50, 0, 529, 531, 3, 86, 43, 0, 530, 527, 1, 0, 0, 0, 530, 528, 1, 0, 0, 0,
3841
+ 530, 529, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0,
3842
+ 533, 534, 1, 0, 0, 0, 534, 535, 5, 67, 0, 0, 535, 95, 1, 0, 0, 0, 536, 537, 5, 64, 0, 0,
3843
+ 537, 540, 5, 66, 0, 0, 538, 541, 5, 64, 0, 0, 539, 541, 3, 100, 50, 0, 540, 538, 1, 0,
3844
+ 0, 0, 540, 539, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 542, 543, 1, 0,
3845
+ 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 5, 67, 0, 0, 545, 97, 1, 0, 0, 0, 546, 548, 7, 11,
3846
+ 0, 0, 547, 549, 5, 1, 0, 0, 548, 547, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 556, 1, 0,
3847
+ 0, 0, 550, 557, 3, 56, 28, 0, 551, 552, 5, 52, 0, 0, 552, 553, 3, 56, 28, 0, 553, 554,
3848
+ 5, 53, 0, 0, 554, 557, 1, 0, 0, 0, 555, 557, 3, 96, 48, 0, 556, 550, 1, 0, 0, 0, 556, 551,
3849
+ 1, 0, 0, 0, 556, 555, 1, 0, 0, 0, 557, 573, 1, 0, 0, 0, 558, 559, 5, 25, 0, 0, 559, 564,
3850
+ 5, 56, 0, 0, 560, 561, 5, 2, 0, 0, 561, 563, 5, 56, 0, 0, 562, 560, 1, 0, 0, 0, 563, 566,
3851
+ 1, 0, 0, 0, 564, 562, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 567, 1, 0, 0, 0, 566, 564,
3852
+ 1, 0, 0, 0, 567, 568, 5, 26, 0, 0, 568, 569, 3, 62, 31, 0, 569, 570, 5, 1, 0, 0, 570, 571,
3853
+ 3, 90, 45, 0, 571, 573, 1, 0, 0, 0, 572, 546, 1, 0, 0, 0, 572, 558, 1, 0, 0, 0, 573, 99,
3854
+ 1, 0, 0, 0, 574, 575, 3, 102, 51, 0, 575, 576, 5, 1, 0, 0, 576, 577, 3, 104, 52, 0, 577,
3855
+ 101, 1, 0, 0, 0, 578, 579, 7, 12, 0, 0, 579, 103, 1, 0, 0, 0, 580, 590, 3, 96, 48, 0, 581,
3856
+ 586, 3, 62, 31, 0, 582, 583, 5, 2, 0, 0, 583, 585, 3, 62, 31, 0, 584, 582, 1, 0, 0, 0,
3857
+ 585, 588, 1, 0, 0, 0, 586, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 590, 1, 0, 0, 0,
3858
+ 588, 586, 1, 0, 0, 0, 589, 580, 1, 0, 0, 0, 589, 581, 1, 0, 0, 0, 590, 105, 1, 0, 0, 0,
3859
+ 591, 594, 5, 56, 0, 0, 592, 595, 5, 57, 0, 0, 593, 595, 3, 62, 31, 0, 594, 592, 1, 0,
3860
+ 0, 0, 594, 593, 1, 0, 0, 0, 595, 598, 1, 0, 0, 0, 596, 598, 5, 56, 0, 0, 597, 591, 1, 0,
3861
+ 0, 0, 597, 596, 1, 0, 0, 0, 598, 107, 1, 0, 0, 0, 599, 603, 5, 14, 0, 0, 600, 602, 3, 106,
3862
+ 53, 0, 601, 600, 1, 0, 0, 0, 602, 605, 1, 0, 0, 0, 603, 601, 1, 0, 0, 0, 603, 604, 1, 0,
3863
+ 0, 0, 604, 109, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 606, 617, 5, 6, 0, 0, 607, 612, 3, 62,
3864
+ 31, 0, 608, 609, 5, 2, 0, 0, 609, 611, 3, 62, 31, 0, 610, 608, 1, 0, 0, 0, 611, 614, 1,
3865
+ 0, 0, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 616, 1, 0, 0, 0, 614, 612, 1,
3866
+ 0, 0, 0, 615, 607, 1, 0, 0, 0, 616, 619, 1, 0, 0, 0, 617, 615, 1, 0, 0, 0, 617, 618, 1,
3867
+ 0, 0, 0, 618, 620, 1, 0, 0, 0, 619, 617, 1, 0, 0, 0, 620, 621, 5, 7, 0, 0, 621, 111, 1,
3868
+ 0, 0, 0, 622, 623, 5, 19, 0, 0, 623, 624, 5, 56, 0, 0, 624, 113, 1, 0, 0, 0, 625, 626,
3869
+ 5, 24, 0, 0, 626, 627, 5, 56, 0, 0, 627, 115, 1, 0, 0, 0, 628, 629, 7, 13, 0, 0, 629, 630,
3870
+ 5, 1, 0, 0, 630, 631, 3, 4, 2, 0, 631, 117, 1, 0, 0, 0, 632, 633, 5, 29, 0, 0, 633, 634,
3871
+ 3, 62, 31, 0, 634, 635, 5, 1, 0, 0, 635, 639, 3, 4, 2, 0, 636, 638, 3, 120, 60, 0, 637,
3872
+ 636, 1, 0, 0, 0, 638, 641, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640,
3873
+ 643, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 642, 644, 3, 122, 61, 0, 643, 642, 1, 0, 0, 0, 643,
3874
+ 644, 1, 0, 0, 0, 644, 119, 1, 0, 0, 0, 645, 646, 5, 30, 0, 0, 646, 647, 5, 29, 0, 0, 647,
3875
+ 648, 3, 62, 31, 0, 648, 649, 5, 1, 0, 0, 649, 650, 3, 4, 2, 0, 650, 121, 1, 0, 0, 0, 651,
3876
+ 652, 5, 30, 0, 0, 652, 653, 5, 1, 0, 0, 653, 654, 3, 4, 2, 0, 654, 123, 1, 0, 0, 0, 655,
3877
+ 656, 5, 27, 0, 0, 656, 657, 3, 62, 31, 0, 657, 658, 5, 1, 0, 0, 658, 659, 3, 4, 2, 0, 659,
3878
+ 125, 1, 0, 0, 0, 660, 661, 5, 25, 0, 0, 661, 662, 5, 56, 0, 0, 662, 663, 5, 26, 0, 0, 663,
3879
+ 664, 3, 62, 31, 0, 664, 665, 5, 1, 0, 0, 665, 666, 3, 4, 2, 0, 666, 127, 1, 0, 0, 0, 70,
3880
+ 130, 132, 158, 164, 166, 173, 185, 187, 202, 206, 211, 215, 222, 229, 237, 241,
3881
+ 251, 259, 261, 272, 283, 285, 291, 297, 301, 326, 333, 341, 344, 362, 372, 387,
3882
+ 389, 397, 405, 413, 415, 421, 428, 437, 449, 452, 459, 464, 469, 472, 478, 481,
3883
+ 485, 501, 503, 511, 513, 530, 532, 540, 542, 548, 556, 564, 572, 586, 589, 594,
3884
+ 597, 603, 612, 617, 639, 643
3565
3885
  ];
3566
3886
  static __ATN;
3567
3887
  static get _ATN() {
@@ -3625,6 +3945,9 @@ export class ExpressionContext extends antlr.ParserRuleContext {
3625
3945
  assignment_expr() {
3626
3946
  return this.getRuleContext(0, Assignment_exprContext);
3627
3947
  }
3948
+ operator_assignment_expr() {
3949
+ return this.getRuleContext(0, Operator_assignment_exprContext);
3950
+ }
3628
3951
  property_set_expr() {
3629
3952
  return this.getRuleContext(0, Property_set_exprContext);
3630
3953
  }
@@ -3637,6 +3960,9 @@ export class ExpressionContext extends antlr.ParserRuleContext {
3637
3960
  break_keyword() {
3638
3961
  return this.getRuleContext(0, Break_keywordContext);
3639
3962
  }
3963
+ continue_keyword() {
3964
+ return this.getRuleContext(0, Continue_keywordContext);
3965
+ }
3640
3966
  function_def_expr() {
3641
3967
  return this.getRuleContext(0, Function_def_exprContext);
3642
3968
  }
@@ -3667,6 +3993,12 @@ export class ExpressionContext extends antlr.ParserRuleContext {
3667
3993
  if_expr() {
3668
3994
  return this.getRuleContext(0, If_exprContext);
3669
3995
  }
3996
+ while_expr() {
3997
+ return this.getRuleContext(0, While_exprContext);
3998
+ }
3999
+ for_expr() {
4000
+ return this.getRuleContext(0, For_exprContext);
4001
+ }
3670
4002
  get ruleIndex() {
3671
4003
  return CircuitScriptParser.RULE_expression;
3672
4004
  }
@@ -4275,6 +4607,25 @@ export class Break_keywordContext extends antlr.ParserRuleContext {
4275
4607
  }
4276
4608
  }
4277
4609
  }
4610
+ export class Continue_keywordContext extends antlr.ParserRuleContext {
4611
+ constructor(parent, invokingState) {
4612
+ super(parent, invokingState);
4613
+ }
4614
+ Continue() {
4615
+ return this.getToken(CircuitScriptParser.Continue, 0);
4616
+ }
4617
+ get ruleIndex() {
4618
+ return CircuitScriptParser.RULE_continue_keyword;
4619
+ }
4620
+ accept(visitor) {
4621
+ if (visitor.visitContinue_keyword) {
4622
+ return visitor.visitContinue_keyword(this);
4623
+ }
4624
+ else {
4625
+ return visitor.visitChildren(this);
4626
+ }
4627
+ }
4628
+ }
4278
4629
  export class Assignment_exprContext extends antlr.ParserRuleContext {
4279
4630
  constructor(parent, invokingState) {
4280
4631
  super(parent, invokingState);
@@ -4297,6 +4648,43 @@ export class Assignment_exprContext extends antlr.ParserRuleContext {
4297
4648
  }
4298
4649
  }
4299
4650
  }
4651
+ export class Operator_assignment_exprContext extends antlr.ParserRuleContext {
4652
+ constructor(parent, invokingState) {
4653
+ super(parent, invokingState);
4654
+ }
4655
+ atom_expr() {
4656
+ return this.getRuleContext(0, Atom_exprContext);
4657
+ }
4658
+ data_expr() {
4659
+ return this.getRuleContext(0, Data_exprContext);
4660
+ }
4661
+ AdditionAssign() {
4662
+ return this.getToken(CircuitScriptParser.AdditionAssign, 0);
4663
+ }
4664
+ MinusAssign() {
4665
+ return this.getToken(CircuitScriptParser.MinusAssign, 0);
4666
+ }
4667
+ MultiplyAssign() {
4668
+ return this.getToken(CircuitScriptParser.MultiplyAssign, 0);
4669
+ }
4670
+ DivideAssign() {
4671
+ return this.getToken(CircuitScriptParser.DivideAssign, 0);
4672
+ }
4673
+ ModulusAssign() {
4674
+ return this.getToken(CircuitScriptParser.ModulusAssign, 0);
4675
+ }
4676
+ get ruleIndex() {
4677
+ return CircuitScriptParser.RULE_operator_assignment_expr;
4678
+ }
4679
+ accept(visitor) {
4680
+ if (visitor.visitOperator_assignment_expr) {
4681
+ return visitor.visitOperator_assignment_expr(this);
4682
+ }
4683
+ else {
4684
+ return visitor.visitChildren(this);
4685
+ }
4686
+ }
4687
+ }
4300
4688
  export class Keyword_assignment_exprContext extends antlr.ParserRuleContext {
4301
4689
  constructor(parent, invokingState) {
4302
4690
  super(parent, invokingState);
@@ -4402,6 +4790,23 @@ export class Data_exprContext extends antlr.ParserRuleContext {
4402
4790
  super.copyFrom(ctx);
4403
4791
  }
4404
4792
  }
4793
+ export class ArrayExprContext extends Data_exprContext {
4794
+ constructor(ctx) {
4795
+ super(ctx.parent, ctx.invokingState);
4796
+ super.copyFrom(ctx);
4797
+ }
4798
+ array_expr() {
4799
+ return this.getRuleContext(0, Array_exprContext);
4800
+ }
4801
+ accept(visitor) {
4802
+ if (visitor.visitArrayExpr) {
4803
+ return visitor.visitArrayExpr(this);
4804
+ }
4805
+ else {
4806
+ return visitor.visitChildren(this);
4807
+ }
4808
+ }
4809
+ }
4405
4810
  export class FunctionCallExprContext extends Data_exprContext {
4406
4811
  constructor(ctx) {
4407
4812
  super(ctx.parent, ctx.invokingState);
@@ -4462,6 +4867,9 @@ export class MultiplyExprContext extends Data_exprContext {
4462
4867
  Divide() {
4463
4868
  return this.getToken(CircuitScriptParser.Divide, 0);
4464
4869
  }
4870
+ Modulus() {
4871
+ return this.getToken(CircuitScriptParser.Modulus, 0);
4872
+ }
4465
4873
  accept(visitor) {
4466
4874
  if (visitor.visitMultiplyExpr) {
4467
4875
  return visitor.visitMultiplyExpr(this);
@@ -4687,9 +5095,6 @@ export class Value_exprContext extends antlr.ParserRuleContext {
4687
5095
  Minus() {
4688
5096
  return this.getToken(CircuitScriptParser.Minus, 0);
4689
5097
  }
4690
- blank_expr() {
4691
- return this.getRuleContext(0, Blank_exprContext);
4692
- }
4693
5098
  get ruleIndex() {
4694
5099
  return CircuitScriptParser.RULE_value_expr;
4695
5100
  }
@@ -4996,16 +5401,10 @@ export class Create_component_exprContext extends antlr.ParserRuleContext {
4996
5401
  }
4997
5402
  }
4998
5403
  }
4999
- export class Create_graphic_exprContext extends antlr.ParserRuleContext {
5404
+ export class Graphic_expressions_blockContext extends antlr.ParserRuleContext {
5000
5405
  constructor(parent, invokingState) {
5001
5406
  super(parent, invokingState);
5002
5407
  }
5003
- Create() {
5004
- return this.getToken(CircuitScriptParser.Create, 0);
5005
- }
5006
- Graphic() {
5007
- return this.getToken(CircuitScriptParser.Graphic, 0);
5008
- }
5009
5408
  NEWLINE(i) {
5010
5409
  if (i === undefined) {
5011
5410
  return this.getTokens(CircuitScriptParser.NEWLINE);
@@ -5026,6 +5425,31 @@ export class Create_graphic_exprContext extends antlr.ParserRuleContext {
5026
5425
  }
5027
5426
  return this.getRuleContext(i, Graphic_exprContext);
5028
5427
  }
5428
+ get ruleIndex() {
5429
+ return CircuitScriptParser.RULE_graphic_expressions_block;
5430
+ }
5431
+ accept(visitor) {
5432
+ if (visitor.visitGraphic_expressions_block) {
5433
+ return visitor.visitGraphic_expressions_block(this);
5434
+ }
5435
+ else {
5436
+ return visitor.visitChildren(this);
5437
+ }
5438
+ }
5439
+ }
5440
+ export class Create_graphic_exprContext extends antlr.ParserRuleContext {
5441
+ constructor(parent, invokingState) {
5442
+ super(parent, invokingState);
5443
+ }
5444
+ Create() {
5445
+ return this.getToken(CircuitScriptParser.Create, 0);
5446
+ }
5447
+ Graphic() {
5448
+ return this.getToken(CircuitScriptParser.Graphic, 0);
5449
+ }
5450
+ graphic_expressions_block() {
5451
+ return this.getRuleContext(0, Graphic_expressions_blockContext);
5452
+ }
5029
5453
  get ruleIndex() {
5030
5454
  return CircuitScriptParser.RULE_create_graphic_expr;
5031
5455
  }
@@ -5123,10 +5547,22 @@ export class Nested_properties_innerContext extends antlr.ParserRuleContext {
5123
5547
  }
5124
5548
  }
5125
5549
  export class Graphic_exprContext extends antlr.ParserRuleContext {
5126
- _command;
5127
5550
  constructor(parent, invokingState) {
5128
5551
  super(parent, invokingState);
5129
5552
  }
5553
+ get ruleIndex() {
5554
+ return CircuitScriptParser.RULE_graphic_expr;
5555
+ }
5556
+ copyFrom(ctx) {
5557
+ super.copyFrom(ctx);
5558
+ }
5559
+ }
5560
+ export class GraphicCommandExprContext extends Graphic_exprContext {
5561
+ _command;
5562
+ constructor(ctx) {
5563
+ super(ctx.parent, ctx.invokingState);
5564
+ super.copyFrom(ctx);
5565
+ }
5130
5566
  ID() {
5131
5567
  return this.getToken(CircuitScriptParser.ID, 0);
5132
5568
  }
@@ -5145,12 +5581,43 @@ export class Graphic_exprContext extends antlr.ParserRuleContext {
5145
5581
  nested_properties_inner() {
5146
5582
  return this.getRuleContext(0, Nested_properties_innerContext);
5147
5583
  }
5148
- get ruleIndex() {
5149
- return CircuitScriptParser.RULE_graphic_expr;
5584
+ accept(visitor) {
5585
+ if (visitor.visitGraphicCommandExpr) {
5586
+ return visitor.visitGraphicCommandExpr(this);
5587
+ }
5588
+ else {
5589
+ return visitor.visitChildren(this);
5590
+ }
5591
+ }
5592
+ }
5593
+ export class GraphicForExprContext extends Graphic_exprContext {
5594
+ constructor(ctx) {
5595
+ super(ctx.parent, ctx.invokingState);
5596
+ super.copyFrom(ctx);
5597
+ }
5598
+ For() {
5599
+ return this.getToken(CircuitScriptParser.For, 0);
5600
+ }
5601
+ ID(i) {
5602
+ if (i === undefined) {
5603
+ return this.getTokens(CircuitScriptParser.ID);
5604
+ }
5605
+ else {
5606
+ return this.getToken(CircuitScriptParser.ID, i);
5607
+ }
5608
+ }
5609
+ In() {
5610
+ return this.getToken(CircuitScriptParser.In, 0);
5611
+ }
5612
+ data_expr() {
5613
+ return this.getRuleContext(0, Data_exprContext);
5614
+ }
5615
+ graphic_expressions_block() {
5616
+ return this.getRuleContext(0, Graphic_expressions_blockContext);
5150
5617
  }
5151
5618
  accept(visitor) {
5152
- if (visitor.visitGraphic_expr) {
5153
- return visitor.visitGraphic_expr(this);
5619
+ if (visitor.visitGraphicForExpr) {
5620
+ return visitor.visitGraphicForExpr(this);
5154
5621
  }
5155
5622
  else {
5156
5623
  return visitor.visitChildren(this);
@@ -5252,25 +5719,6 @@ export class Nested_propertiesContext extends Property_value_exprContext {
5252
5719
  }
5253
5720
  }
5254
5721
  }
5255
- export class Blank_exprContext extends antlr.ParserRuleContext {
5256
- constructor(parent, invokingState) {
5257
- super(parent, invokingState);
5258
- }
5259
- INTEGER_VALUE() {
5260
- return this.getToken(CircuitScriptParser.INTEGER_VALUE, 0);
5261
- }
5262
- get ruleIndex() {
5263
- return CircuitScriptParser.RULE_blank_expr;
5264
- }
5265
- accept(visitor) {
5266
- if (visitor.visitBlank_expr) {
5267
- return visitor.visitBlank_expr(this);
5268
- }
5269
- else {
5270
- return visitor.visitChildren(this);
5271
- }
5272
- }
5273
- }
5274
5722
  export class Wire_atom_exprContext extends antlr.ParserRuleContext {
5275
5723
  constructor(parent, invokingState) {
5276
5724
  super(parent, invokingState);
@@ -5347,6 +5795,28 @@ export class Wire_exprContext extends antlr.ParserRuleContext {
5347
5795
  }
5348
5796
  }
5349
5797
  }
5798
+ export class Array_exprContext extends antlr.ParserRuleContext {
5799
+ constructor(parent, invokingState) {
5800
+ super(parent, invokingState);
5801
+ }
5802
+ data_expr(i) {
5803
+ if (i === undefined) {
5804
+ return this.getRuleContexts(Data_exprContext);
5805
+ }
5806
+ return this.getRuleContext(i, Data_exprContext);
5807
+ }
5808
+ get ruleIndex() {
5809
+ return CircuitScriptParser.RULE_array_expr;
5810
+ }
5811
+ accept(visitor) {
5812
+ if (visitor.visitArray_expr) {
5813
+ return visitor.visitArray_expr(this);
5814
+ }
5815
+ else {
5816
+ return visitor.visitChildren(this);
5817
+ }
5818
+ }
5819
+ }
5350
5820
  export class Point_exprContext extends antlr.ParserRuleContext {
5351
5821
  constructor(parent, invokingState) {
5352
5822
  super(parent, invokingState);
@@ -5395,11 +5865,14 @@ export class Frame_exprContext extends antlr.ParserRuleContext {
5395
5865
  constructor(parent, invokingState) {
5396
5866
  super(parent, invokingState);
5397
5867
  }
5868
+ expressions_block() {
5869
+ return this.getRuleContext(0, Expressions_blockContext);
5870
+ }
5398
5871
  Frame() {
5399
5872
  return this.getToken(CircuitScriptParser.Frame, 0);
5400
5873
  }
5401
- expressions_block() {
5402
- return this.getRuleContext(0, Expressions_blockContext);
5874
+ Sheet() {
5875
+ return this.getToken(CircuitScriptParser.Sheet, 0);
5403
5876
  }
5404
5877
  get ruleIndex() {
5405
5878
  return CircuitScriptParser.RULE_frame_expr;
@@ -5497,3 +5970,59 @@ export class Else_exprContext extends antlr.ParserRuleContext {
5497
5970
  }
5498
5971
  }
5499
5972
  }
5973
+ export class While_exprContext extends antlr.ParserRuleContext {
5974
+ constructor(parent, invokingState) {
5975
+ super(parent, invokingState);
5976
+ }
5977
+ While() {
5978
+ return this.getToken(CircuitScriptParser.While, 0);
5979
+ }
5980
+ data_expr() {
5981
+ return this.getRuleContext(0, Data_exprContext);
5982
+ }
5983
+ expressions_block() {
5984
+ return this.getRuleContext(0, Expressions_blockContext);
5985
+ }
5986
+ get ruleIndex() {
5987
+ return CircuitScriptParser.RULE_while_expr;
5988
+ }
5989
+ accept(visitor) {
5990
+ if (visitor.visitWhile_expr) {
5991
+ return visitor.visitWhile_expr(this);
5992
+ }
5993
+ else {
5994
+ return visitor.visitChildren(this);
5995
+ }
5996
+ }
5997
+ }
5998
+ export class For_exprContext extends antlr.ParserRuleContext {
5999
+ constructor(parent, invokingState) {
6000
+ super(parent, invokingState);
6001
+ }
6002
+ For() {
6003
+ return this.getToken(CircuitScriptParser.For, 0);
6004
+ }
6005
+ ID() {
6006
+ return this.getToken(CircuitScriptParser.ID, 0);
6007
+ }
6008
+ In() {
6009
+ return this.getToken(CircuitScriptParser.In, 0);
6010
+ }
6011
+ data_expr() {
6012
+ return this.getRuleContext(0, Data_exprContext);
6013
+ }
6014
+ expressions_block() {
6015
+ return this.getRuleContext(0, Expressions_blockContext);
6016
+ }
6017
+ get ruleIndex() {
6018
+ return CircuitScriptParser.RULE_for_expr;
6019
+ }
6020
+ accept(visitor) {
6021
+ if (visitor.visitFor_expr) {
6022
+ return visitor.visitFor_expr(this);
6023
+ }
6024
+ else {
6025
+ return visitor.visitChildren(this);
6026
+ }
6027
+ }
6028
+ }