circuitscript 0.1.22 → 0.1.24

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 (57) hide show
  1. package/dist/cjs/BaseVisitor.js +35 -23
  2. package/dist/cjs/BomGeneration.js +167 -0
  3. package/dist/cjs/ComponentMatchConditions.js +116 -0
  4. package/dist/cjs/antlr/CircuitScriptLexer.js +247 -244
  5. package/dist/cjs/antlr/CircuitScriptParser.js +1503 -843
  6. package/dist/cjs/builtinMethods.js +6 -1
  7. package/dist/cjs/execute.js +27 -16
  8. package/dist/cjs/graph.js +10 -9
  9. package/dist/cjs/helpers.js +26 -6
  10. package/dist/cjs/layout.js +14 -13
  11. package/dist/cjs/main.js +17 -1
  12. package/dist/cjs/objects/ExecutionScope.js +3 -0
  13. package/dist/cjs/objects/PinDefinition.js +11 -1
  14. package/dist/cjs/objects/types.js +6 -4
  15. package/dist/cjs/rules-check/no-connect-on-connected-pin.js +81 -0
  16. package/dist/cjs/rules-check/rules.js +74 -0
  17. package/dist/cjs/rules-check/unconnected-pins.js +52 -0
  18. package/dist/cjs/visitor.js +124 -5
  19. package/dist/esm/BaseVisitor.js +35 -23
  20. package/dist/esm/BomGeneration.js +137 -0
  21. package/dist/esm/ComponentMatchConditions.js +109 -0
  22. package/dist/esm/antlr/CircuitScriptLexer.js +247 -244
  23. package/dist/esm/antlr/CircuitScriptParser.js +1498 -842
  24. package/dist/esm/antlr/CircuitScriptVisitor.js +7 -0
  25. package/dist/esm/builtinMethods.js +6 -1
  26. package/dist/esm/execute.js +27 -16
  27. package/dist/esm/graph.js +11 -10
  28. package/dist/esm/helpers.js +26 -6
  29. package/dist/esm/layout.js +15 -13
  30. package/dist/esm/main.js +17 -1
  31. package/dist/esm/objects/ExecutionScope.js +3 -0
  32. package/dist/esm/objects/PinDefinition.js +11 -1
  33. package/dist/esm/objects/types.js +7 -5
  34. package/dist/esm/rules-check/no-connect-on-connected-pin.js +77 -0
  35. package/dist/esm/rules-check/rules.js +70 -0
  36. package/dist/esm/rules-check/unconnected-pins.js +48 -0
  37. package/dist/esm/visitor.js +124 -5
  38. package/dist/libs/std.cst +7 -3
  39. package/dist/types/BomGeneration.d.ts +13 -0
  40. package/dist/types/ComponentMatchConditions.d.ts +19 -0
  41. package/dist/types/antlr/CircuitScriptLexer.d.ts +60 -59
  42. package/dist/types/antlr/CircuitScriptParser.d.ts +148 -63
  43. package/dist/types/antlr/CircuitScriptVisitor.d.ts +14 -0
  44. package/dist/types/execute.d.ts +2 -1
  45. package/dist/types/graph.d.ts +6 -1
  46. package/dist/types/helpers.d.ts +5 -2
  47. package/dist/types/layout.d.ts +3 -2
  48. package/dist/types/objects/ExecutionScope.d.ts +8 -2
  49. package/dist/types/objects/ParamDefinition.d.ts +1 -1
  50. package/dist/types/objects/PinDefinition.d.ts +1 -0
  51. package/dist/types/objects/types.d.ts +4 -2
  52. package/dist/types/rules-check/no-connect-on-connected-pin.d.ts +3 -0
  53. package/dist/types/rules-check/rules.d.ts +15 -0
  54. package/dist/types/rules-check/unconnected-pins.d.ts +2 -0
  55. package/dist/types/visitor.d.ts +10 -1
  56. package/libs/std.cst +7 -3
  57. package/package.json +2 -1
@@ -24,7 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.Function_exprContext = exports.Function_def_exprContext = exports.Value_exprContext = exports.Unary_operatorContext = exports.Binary_operatorContext = exports.RoundedBracketsExprContext = exports.BinaryOperatorExprContext = exports.ValueAtomExprContext = exports.UnaryOperatorExprContext = exports.DataExprContext = exports.LogicalOperatorExprContext = exports.MultiplyExprContext = exports.AdditionExprContext = exports.FunctionCallExprContext = exports.ArrayIndexExprContext = exports.ArrayExprContext = exports.Data_exprContext = exports.Double_dot_property_set_exprContext = exports.Property_set_exprContext = exports.ParametersContext = exports.Keyword_assignment_exprContext = exports.Operator_assignment_exprContext = exports.Assignment_exprContext = exports.At_block_pin_expression_complexContext = exports.At_block_pin_expression_simpleContext = exports.At_block_pin_exprContext = exports.At_block_headerContext = exports.At_block_expressionsContext = exports.At_blockContext = exports.At_to_multiple_line_expr_to_pinContext = exports.At_to_multiple_line_exprContext = exports.At_to_multiple_exprContext = exports.To_component_exprContext = exports.At_component_exprContext = exports.Pin_select_expr2Context = exports.Component_select_exprContext = exports.Add_component_exprContext = exports.Data_expr_with_assignmentContext = exports.Component_modifier_exprContext = exports.Pin_select_exprContext = exports.Assignment_expr2Context = exports.Property_set_expr2Context = exports.Path_blockContext = exports.Expressions_blockContext = exports.Graph_linear_expressionContext = exports.Graph_expressionsContext = exports.Flow_expressionsContext = exports.ExpressionContext = exports.ScriptContext = exports.CircuitScriptParser = void 0;
27
- exports.Annotation_comment_exprContext = exports.For_exprContext = exports.While_exprContext = exports.Else_exprContext = exports.If_inner_exprContext = exports.If_exprContext = exports.Frame_exprContext = exports.Import_exprContext = exports.Point_exprContext = exports.Array_exprContext = exports.Wire_exprContext = exports.Wire_expr_direction_onlyContext = exports.Wire_expr_direction_valueContext = exports.Wire_atom_exprContext = exports.Nested_propertiesContext = exports.Single_line_propertyContext = exports.Property_value_exprContext = exports.Property_key_exprContext = exports.Property_exprContext = exports.GraphicForExprContext = exports.GraphicCommandExprContext = exports.Graphic_exprContext = exports.Nested_properties_innerContext = exports.Create_module_exprContext = exports.Create_graphic_exprContext = exports.Graphic_expressions_blockContext = exports.Create_component_exprContext = exports.Property_block_exprContext = exports.Function_return_exprContext = exports.Net_namespace_exprContext = exports.Function_call_exprContext = exports.Trailer_expr2Context = exports.Trailer_exprContext = exports.Atom_exprContext = exports.Function_args_exprContext = void 0;
27
+ exports.Annotation_comment_exprContext = exports.Part_value_exprContext = exports.Part_condition_key_only_exprContext = exports.Part_condition_exprContext = exports.Part_sub_exprContext = exports.Part_match_blockContext = exports.Part_set_keyContext = exports.Part_set_exprContext = exports.For_exprContext = exports.While_exprContext = exports.Else_exprContext = exports.If_inner_exprContext = exports.If_exprContext = exports.Frame_exprContext = exports.Import_exprContext = exports.Point_exprContext = exports.Array_exprContext = exports.Wire_exprContext = exports.Wire_expr_direction_onlyContext = exports.Wire_expr_direction_valueContext = exports.Wire_atom_exprContext = exports.Nested_propertiesContext = exports.Single_line_propertyContext = exports.Property_value_exprContext = exports.Property_key_exprContext = exports.Property_exprContext = exports.GraphicForExprContext = exports.GraphicCommandExprContext = exports.Graphic_exprContext = exports.Nested_properties_innerContext = exports.Create_module_exprContext = exports.Create_graphic_exprContext = exports.Graphic_expressions_blockContext = exports.Create_component_exprContext = exports.Property_block_exprContext = exports.Function_return_exprContext = exports.Net_namespace_exprContext = exports.Function_call_exprContext = exports.Trailer_expr2Context = exports.Trailer_exprContext = exports.Atom_exprContext = exports.Function_args_exprContext = void 0;
28
28
  const antlr = __importStar(require("antlr4ng"));
29
29
  class CircuitScriptParser extends antlr.Parser {
30
30
  get grammarFileName() { return "CircuitScript.g4"; }
@@ -47,24 +47,24 @@ class CircuitScriptParser extends antlr.Parser {
47
47
  let alternative;
48
48
  this.enterOuterAlt(localContext, 1);
49
49
  {
50
- this.state = 138;
50
+ this.state = 152;
51
51
  this.errorHandler.sync(this);
52
52
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 1, this.context);
53
53
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
54
54
  if (alternative === 1) {
55
55
  {
56
- this.state = 136;
56
+ this.state = 150;
57
57
  this.errorHandler.sync(this);
58
58
  switch (this.tokenStream.LA(1)) {
59
59
  case CircuitScriptParser.Import:
60
60
  {
61
- this.state = 134;
61
+ this.state = 148;
62
62
  this.import_expr();
63
63
  }
64
64
  break;
65
65
  case CircuitScriptParser.NEWLINE:
66
66
  {
67
- this.state = 135;
67
+ this.state = 149;
68
68
  this.match(CircuitScriptParser.NEWLINE);
69
69
  }
70
70
  break;
@@ -73,19 +73,20 @@ class CircuitScriptParser extends antlr.Parser {
73
73
  }
74
74
  }
75
75
  }
76
- this.state = 140;
76
+ this.state = 154;
77
77
  this.errorHandler.sync(this);
78
78
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 1, this.context);
79
79
  }
80
- this.state = 143;
80
+ this.state = 157;
81
81
  this.errorHandler.sync(this);
82
82
  _la = this.tokenStream.LA(1);
83
83
  do {
84
84
  {
85
- this.state = 143;
85
+ this.state = 157;
86
86
  this.errorHandler.sync(this);
87
87
  switch (this.tokenStream.LA(1)) {
88
88
  case CircuitScriptParser.T__3:
89
+ case CircuitScriptParser.T__7:
89
90
  case CircuitScriptParser.Break:
90
91
  case CircuitScriptParser.Branch:
91
92
  case CircuitScriptParser.Wire:
@@ -108,13 +109,13 @@ class CircuitScriptParser extends antlr.Parser {
108
109
  case CircuitScriptParser.ANNOTATION_START:
109
110
  case CircuitScriptParser.ID:
110
111
  {
111
- this.state = 141;
112
+ this.state = 155;
112
113
  this.expression();
113
114
  }
114
115
  break;
115
116
  case CircuitScriptParser.NEWLINE:
116
117
  {
117
- this.state = 142;
118
+ this.state = 156;
118
119
  this.match(CircuitScriptParser.NEWLINE);
119
120
  }
120
121
  break;
@@ -122,11 +123,11 @@ class CircuitScriptParser extends antlr.Parser {
122
123
  throw new antlr.NoViableAltException(this);
123
124
  }
124
125
  }
125
- this.state = 145;
126
+ this.state = 159;
126
127
  this.errorHandler.sync(this);
127
128
  _la = this.tokenStream.LA(1);
128
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 8422405) !== 0));
129
- this.state = 147;
129
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 1735911537) !== 0) || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 8422405) !== 0));
130
+ this.state = 161;
130
131
  this.match(CircuitScriptParser.EOF);
131
132
  }
132
133
  }
@@ -148,100 +149,107 @@ class CircuitScriptParser extends antlr.Parser {
148
149
  let localContext = new ExpressionContext(this.context, this.state);
149
150
  this.enterRule(localContext, 2, CircuitScriptParser.RULE_expression);
150
151
  try {
151
- this.state = 162;
152
+ this.state = 177;
152
153
  this.errorHandler.sync(this);
153
154
  switch (this.interpreter.adaptivePredict(this.tokenStream, 4, this.context)) {
154
155
  case 1:
155
156
  this.enterOuterAlt(localContext, 1);
156
157
  {
157
- this.state = 149;
158
+ this.state = 163;
158
159
  this.graph_expressions();
159
160
  }
160
161
  break;
161
162
  case 2:
162
163
  this.enterOuterAlt(localContext, 2);
163
164
  {
164
- this.state = 150;
165
+ this.state = 164;
165
166
  this.assignment_expr();
166
167
  }
167
168
  break;
168
169
  case 3:
169
170
  this.enterOuterAlt(localContext, 3);
170
171
  {
171
- this.state = 151;
172
+ this.state = 165;
172
173
  this.operator_assignment_expr();
173
174
  }
174
175
  break;
175
176
  case 4:
176
177
  this.enterOuterAlt(localContext, 4);
177
178
  {
178
- this.state = 152;
179
+ this.state = 166;
179
180
  this.property_set_expr();
180
181
  }
181
182
  break;
182
183
  case 5:
183
184
  this.enterOuterAlt(localContext, 5);
184
185
  {
185
- this.state = 153;
186
+ this.state = 167;
186
187
  this.property_set_expr2();
187
188
  }
188
189
  break;
189
190
  case 6:
190
191
  this.enterOuterAlt(localContext, 6);
191
192
  {
192
- this.state = 154;
193
+ this.state = 168;
193
194
  this.double_dot_property_set_expr();
194
195
  }
195
196
  break;
196
197
  case 7:
197
198
  this.enterOuterAlt(localContext, 7);
198
199
  {
199
- this.state = 155;
200
+ this.state = 169;
200
201
  this.function_def_expr();
201
202
  }
202
203
  break;
203
204
  case 8:
204
205
  this.enterOuterAlt(localContext, 8);
205
206
  {
206
- this.state = 156;
207
+ this.state = 170;
207
208
  this.function_call_expr();
208
209
  }
209
210
  break;
210
211
  case 9:
211
212
  this.enterOuterAlt(localContext, 9);
212
213
  {
213
- this.state = 157;
214
+ this.state = 171;
214
215
  this.import_expr();
215
216
  }
216
217
  break;
217
218
  case 10:
218
219
  this.enterOuterAlt(localContext, 10);
219
220
  {
220
- this.state = 158;
221
+ this.state = 172;
221
222
  this.atom_expr();
222
223
  }
223
224
  break;
224
225
  case 11:
225
226
  this.enterOuterAlt(localContext, 11);
226
227
  {
227
- this.state = 159;
228
+ this.state = 173;
228
229
  this.frame_expr();
229
230
  }
230
231
  break;
231
232
  case 12:
232
233
  this.enterOuterAlt(localContext, 12);
233
234
  {
234
- this.state = 160;
235
+ this.state = 174;
235
236
  this.flow_expressions();
236
237
  }
237
238
  break;
238
239
  case 13:
239
240
  this.enterOuterAlt(localContext, 13);
240
241
  {
241
- this.state = 161;
242
+ this.state = 175;
242
243
  this.annotation_comment_expr();
243
244
  }
244
245
  break;
246
+ case 14:
247
+ this.enterOuterAlt(localContext, 14);
248
+ {
249
+ this.state = 176;
250
+ this.part_set_expr();
251
+ }
252
+ break;
245
253
  }
246
254
  }
247
255
  catch (re) {
@@ -262,41 +270,41 @@ class CircuitScriptParser extends antlr.Parser {
262
270
  let localContext = new Flow_expressionsContext(this.context, this.state);
263
271
  this.enterRule(localContext, 4, CircuitScriptParser.RULE_flow_expressions);
264
272
  try {
265
- this.state = 169;
273
+ this.state = 184;
266
274
  this.errorHandler.sync(this);
267
275
  switch (this.tokenStream.LA(1)) {
268
276
  case CircuitScriptParser.If:
269
277
  this.enterOuterAlt(localContext, 1);
270
278
  {
271
- this.state = 164;
279
+ this.state = 179;
272
280
  this.if_expr();
273
281
  }
274
282
  break;
275
283
  case CircuitScriptParser.While:
276
284
  this.enterOuterAlt(localContext, 2);
277
285
  {
278
- this.state = 165;
286
+ this.state = 180;
279
287
  this.while_expr();
280
288
  }
281
289
  break;
282
290
  case CircuitScriptParser.For:
283
291
  this.enterOuterAlt(localContext, 3);
284
292
  {
285
- this.state = 166;
293
+ this.state = 181;
286
294
  this.for_expr();
287
295
  }
288
296
  break;
289
297
  case CircuitScriptParser.Break:
290
298
  this.enterOuterAlt(localContext, 4);
291
299
  {
292
- this.state = 167;
300
+ this.state = 182;
293
301
  this.match(CircuitScriptParser.Break);
294
302
  }
295
303
  break;
296
304
  case CircuitScriptParser.Continue:
297
305
  this.enterOuterAlt(localContext, 5);
298
306
  {
299
- this.state = 168;
307
+ this.state = 183;
300
308
  this.match(CircuitScriptParser.Continue);
301
309
  }
302
310
  break;
@@ -322,20 +330,20 @@ class CircuitScriptParser extends antlr.Parser {
322
330
  let localContext = new Graph_expressionsContext(this.context, this.state);
323
331
  this.enterRule(localContext, 6, CircuitScriptParser.RULE_graph_expressions);
324
332
  try {
325
- this.state = 173;
333
+ this.state = 188;
326
334
  this.errorHandler.sync(this);
327
335
  switch (this.interpreter.adaptivePredict(this.tokenStream, 6, this.context)) {
328
336
  case 1:
329
337
  this.enterOuterAlt(localContext, 1);
330
338
  {
331
- this.state = 171;
339
+ this.state = 186;
332
340
  this.graph_linear_expression();
333
341
  }
334
342
  break;
335
343
  case 2:
336
344
  this.enterOuterAlt(localContext, 2);
337
345
  {
338
- this.state = 172;
346
+ this.state = 187;
339
347
  this.path_block();
340
348
  }
341
349
  break;
@@ -359,48 +367,48 @@ class CircuitScriptParser extends antlr.Parser {
359
367
  let localContext = new Graph_linear_expressionContext(this.context, this.state);
360
368
  this.enterRule(localContext, 8, CircuitScriptParser.RULE_graph_linear_expression);
361
369
  try {
362
- this.state = 181;
370
+ this.state = 196;
363
371
  this.errorHandler.sync(this);
364
372
  switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context)) {
365
373
  case 1:
366
374
  this.enterOuterAlt(localContext, 1);
367
375
  {
368
- this.state = 175;
376
+ this.state = 190;
369
377
  this.add_component_expr();
370
378
  }
371
379
  break;
372
380
  case 2:
373
381
  this.enterOuterAlt(localContext, 2);
374
382
  {
375
- this.state = 176;
383
+ this.state = 191;
376
384
  this.to_component_expr();
377
385
  }
378
386
  break;
379
387
  case 3:
380
388
  this.enterOuterAlt(localContext, 3);
381
389
  {
382
- this.state = 177;
390
+ this.state = 192;
383
391
  this.at_component_expr();
384
392
  }
385
393
  break;
386
394
  case 4:
387
395
  this.enterOuterAlt(localContext, 4);
388
396
  {
389
- this.state = 178;
397
+ this.state = 193;
390
398
  this.at_block();
391
399
  }
392
400
  break;
393
401
  case 5:
394
402
  this.enterOuterAlt(localContext, 5);
395
403
  {
396
- this.state = 179;
404
+ this.state = 194;
397
405
  this.wire_expr();
398
406
  }
399
407
  break;
400
408
  case 6:
401
409
  this.enterOuterAlt(localContext, 6);
402
410
  {
403
- this.state = 180;
411
+ this.state = 195;
404
412
  this.point_expr();
405
413
  }
406
414
  break;
@@ -427,25 +435,26 @@ class CircuitScriptParser extends antlr.Parser {
427
435
  try {
428
436
  this.enterOuterAlt(localContext, 1);
429
437
  {
430
- this.state = 183;
438
+ this.state = 198;
431
439
  this.match(CircuitScriptParser.NEWLINE);
432
- this.state = 184;
440
+ this.state = 199;
433
441
  this.match(CircuitScriptParser.INDENT);
434
- this.state = 187;
442
+ this.state = 202;
435
443
  this.errorHandler.sync(this);
436
444
  _la = this.tokenStream.LA(1);
437
445
  do {
438
446
  {
439
- this.state = 187;
447
+ this.state = 202;
440
448
  this.errorHandler.sync(this);
441
449
  switch (this.tokenStream.LA(1)) {
442
450
  case CircuitScriptParser.NEWLINE:
443
451
  {
444
- this.state = 185;
452
+ this.state = 200;
445
453
  this.match(CircuitScriptParser.NEWLINE);
446
454
  }
447
455
  break;
448
456
  case CircuitScriptParser.T__3:
457
+ case CircuitScriptParser.T__7:
449
458
  case CircuitScriptParser.Break:
450
459
  case CircuitScriptParser.Branch:
451
460
  case CircuitScriptParser.Wire:
@@ -468,7 +477,7 @@ class CircuitScriptParser extends antlr.Parser {
468
477
  case CircuitScriptParser.ANNOTATION_START:
469
478
  case CircuitScriptParser.ID:
470
479
  {
471
- this.state = 186;
480
+ this.state = 201;
472
481
  this.expression();
473
482
  }
474
483
  break;
@@ -476,11 +485,11 @@ class CircuitScriptParser extends antlr.Parser {
476
485
  throw new antlr.NoViableAltException(this);
477
486
  }
478
487
  }
479
- this.state = 189;
488
+ this.state = 204;
480
489
  this.errorHandler.sync(this);
481
490
  _la = this.tokenStream.LA(1);
482
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 8422405) !== 0));
483
- this.state = 191;
491
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 1735911537) !== 0) || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 8422405) !== 0));
492
+ this.state = 206;
484
493
  this.match(CircuitScriptParser.DEDENT);
485
494
  }
486
495
  }
@@ -505,18 +514,18 @@ class CircuitScriptParser extends antlr.Parser {
505
514
  try {
506
515
  this.enterOuterAlt(localContext, 1);
507
516
  {
508
- this.state = 193;
517
+ this.state = 208;
509
518
  _la = this.tokenStream.LA(1);
510
- if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 3670528) !== 0))) {
519
+ if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 7341056) !== 0))) {
511
520
  this.errorHandler.recoverInline(this);
512
521
  }
513
522
  else {
514
523
  this.errorHandler.reportMatch(this);
515
524
  this.consume();
516
525
  }
517
- this.state = 194;
526
+ this.state = 209;
518
527
  this.match(CircuitScriptParser.T__0);
519
- this.state = 195;
528
+ this.state = 210;
520
529
  this.expressions_block();
521
530
  }
522
531
  }
@@ -541,32 +550,32 @@ class CircuitScriptParser extends antlr.Parser {
541
550
  try {
542
551
  this.enterOuterAlt(localContext, 1);
543
552
  {
544
- this.state = 197;
553
+ this.state = 212;
545
554
  this.atom_expr();
546
- this.state = 198;
555
+ this.state = 213;
547
556
  this.match(CircuitScriptParser.T__0);
548
- this.state = 199;
557
+ this.state = 214;
549
558
  this.match(CircuitScriptParser.NEWLINE);
550
- this.state = 200;
559
+ this.state = 215;
551
560
  this.match(CircuitScriptParser.INDENT);
552
- this.state = 203;
561
+ this.state = 218;
553
562
  this.errorHandler.sync(this);
554
563
  _la = this.tokenStream.LA(1);
555
564
  do {
556
565
  {
557
- this.state = 203;
566
+ this.state = 218;
558
567
  this.errorHandler.sync(this);
559
568
  switch (this.tokenStream.LA(1)) {
560
569
  case CircuitScriptParser.NEWLINE:
561
570
  {
562
- this.state = 201;
571
+ this.state = 216;
563
572
  this.match(CircuitScriptParser.NEWLINE);
564
573
  }
565
574
  break;
566
575
  case CircuitScriptParser.ID:
567
576
  case CircuitScriptParser.INTEGER_VALUE:
568
577
  {
569
- this.state = 202;
578
+ this.state = 217;
570
579
  this.assignment_expr2();
571
580
  }
572
581
  break;
@@ -574,11 +583,11 @@ class CircuitScriptParser extends antlr.Parser {
574
583
  throw new antlr.NoViableAltException(this);
575
584
  }
576
585
  }
577
- this.state = 205;
586
+ this.state = 220;
578
587
  this.errorHandler.sync(this);
579
588
  _la = this.tokenStream.LA(1);
580
- } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 259) !== 0));
581
- this.state = 207;
589
+ } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 259) !== 0));
590
+ this.state = 222;
582
591
  this.match(CircuitScriptParser.DEDENT);
583
592
  }
584
593
  }
@@ -603,18 +612,18 @@ class CircuitScriptParser extends antlr.Parser {
603
612
  try {
604
613
  this.enterOuterAlt(localContext, 1);
605
614
  {
606
- this.state = 209;
615
+ this.state = 224;
607
616
  _la = this.tokenStream.LA(1);
608
- if (!(_la === 57 || _la === 58)) {
617
+ if (!(_la === 58 || _la === 59)) {
609
618
  this.errorHandler.recoverInline(this);
610
619
  }
611
620
  else {
612
621
  this.errorHandler.reportMatch(this);
613
622
  this.consume();
614
623
  }
615
- this.state = 210;
624
+ this.state = 225;
616
625
  this.match(CircuitScriptParser.T__0);
617
- this.state = 211;
626
+ this.state = 226;
618
627
  this.value_expr();
619
628
  }
620
629
  }
@@ -638,9 +647,9 @@ class CircuitScriptParser extends antlr.Parser {
638
647
  try {
639
648
  this.enterOuterAlt(localContext, 1);
640
649
  {
641
- this.state = 213;
650
+ this.state = 228;
642
651
  this.match(CircuitScriptParser.Pin);
643
- this.state = 214;
652
+ this.state = 229;
644
653
  this.data_expr(0);
645
654
  }
646
655
  }
@@ -664,11 +673,11 @@ class CircuitScriptParser extends antlr.Parser {
664
673
  try {
665
674
  this.enterOuterAlt(localContext, 1);
666
675
  {
667
- this.state = 216;
676
+ this.state = 231;
668
677
  this.match(CircuitScriptParser.ID);
669
- this.state = 217;
678
+ this.state = 232;
670
679
  this.match(CircuitScriptParser.T__0);
671
- this.state = 220;
680
+ this.state = 235;
672
681
  this.errorHandler.sync(this);
673
682
  switch (this.tokenStream.LA(1)) {
674
683
  case CircuitScriptParser.Minus:
@@ -679,13 +688,13 @@ class CircuitScriptParser extends antlr.Parser {
679
688
  case CircuitScriptParser.STRING_VALUE:
680
689
  case CircuitScriptParser.PERCENTAGE_VALUE:
681
690
  {
682
- this.state = 218;
691
+ this.state = 233;
683
692
  this.value_expr();
684
693
  }
685
694
  break;
686
695
  case CircuitScriptParser.ID:
687
696
  {
688
- this.state = 219;
697
+ this.state = 234;
689
698
  this.match(CircuitScriptParser.ID);
690
699
  }
691
700
  break;
@@ -716,44 +725,44 @@ class CircuitScriptParser extends antlr.Parser {
716
725
  let alternative;
717
726
  this.enterOuterAlt(localContext, 1);
718
727
  {
719
- this.state = 224;
728
+ this.state = 239;
720
729
  this.errorHandler.sync(this);
721
730
  switch (this.interpreter.adaptivePredict(this.tokenStream, 13, this.context)) {
722
731
  case 1:
723
732
  {
724
- this.state = 222;
733
+ this.state = 237;
725
734
  this.data_expr(0);
726
735
  }
727
736
  break;
728
737
  case 2:
729
738
  {
730
- this.state = 223;
739
+ this.state = 238;
731
740
  this.assignment_expr();
732
741
  }
733
742
  break;
734
743
  }
735
- this.state = 229;
744
+ this.state = 244;
736
745
  this.errorHandler.sync(this);
737
746
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 14, this.context);
738
747
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
739
748
  if (alternative === 1) {
740
749
  {
741
750
  {
742
- this.state = 226;
751
+ this.state = 241;
743
752
  this.component_modifier_expr();
744
753
  }
745
754
  }
746
755
  }
747
- this.state = 231;
756
+ this.state = 246;
748
757
  this.errorHandler.sync(this);
749
758
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 14, this.context);
750
759
  }
751
- this.state = 233;
760
+ this.state = 248;
752
761
  this.errorHandler.sync(this);
753
762
  _la = this.tokenStream.LA(1);
754
- if (_la === 15) {
763
+ if (_la === 16) {
755
764
  {
756
- this.state = 232;
765
+ this.state = 247;
757
766
  this.pin_select_expr();
758
767
  }
759
768
  }
@@ -779,9 +788,9 @@ class CircuitScriptParser extends antlr.Parser {
779
788
  try {
780
789
  this.enterOuterAlt(localContext, 1);
781
790
  {
782
- this.state = 235;
791
+ this.state = 250;
783
792
  this.match(CircuitScriptParser.Add);
784
- this.state = 236;
793
+ this.state = 251;
785
794
  this.data_expr_with_assignment();
786
795
  }
787
796
  }
@@ -803,7 +812,7 @@ class CircuitScriptParser extends antlr.Parser {
803
812
  let localContext = new Component_select_exprContext(this.context, this.state);
804
813
  this.enterRule(localContext, 26, CircuitScriptParser.RULE_component_select_expr);
805
814
  try {
806
- this.state = 241;
815
+ this.state = 256;
807
816
  this.errorHandler.sync(this);
808
817
  switch (this.tokenStream.LA(1)) {
809
818
  case CircuitScriptParser.T__4:
@@ -822,21 +831,21 @@ class CircuitScriptParser extends antlr.Parser {
822
831
  case CircuitScriptParser.PERCENTAGE_VALUE:
823
832
  this.enterOuterAlt(localContext, 1);
824
833
  {
825
- this.state = 238;
834
+ this.state = 253;
826
835
  this.data_expr_with_assignment();
827
836
  }
828
837
  break;
829
838
  case CircuitScriptParser.Pin:
830
839
  this.enterOuterAlt(localContext, 2);
831
840
  {
832
- this.state = 239;
841
+ this.state = 254;
833
842
  this.pin_select_expr();
834
843
  }
835
844
  break;
836
845
  case CircuitScriptParser.Point:
837
846
  this.enterOuterAlt(localContext, 3);
838
847
  {
839
- this.state = 240;
848
+ this.state = 255;
840
849
  this.match(CircuitScriptParser.Point);
841
850
  }
842
851
  break;
@@ -865,9 +874,9 @@ class CircuitScriptParser extends antlr.Parser {
865
874
  try {
866
875
  this.enterOuterAlt(localContext, 1);
867
876
  {
868
- this.state = 243;
877
+ this.state = 258;
869
878
  _la = this.tokenStream.LA(1);
870
- if (!(_la === 58 || _la === 61)) {
879
+ if (!(_la === 59 || _la === 62)) {
871
880
  this.errorHandler.recoverInline(this);
872
881
  }
873
882
  else {
@@ -896,9 +905,9 @@ class CircuitScriptParser extends antlr.Parser {
896
905
  try {
897
906
  this.enterOuterAlt(localContext, 1);
898
907
  {
899
- this.state = 245;
908
+ this.state = 260;
900
909
  this.match(CircuitScriptParser.At);
901
- this.state = 246;
910
+ this.state = 261;
902
911
  this.component_select_expr();
903
912
  }
904
913
  }
@@ -923,24 +932,24 @@ class CircuitScriptParser extends antlr.Parser {
923
932
  try {
924
933
  this.enterOuterAlt(localContext, 1);
925
934
  {
926
- this.state = 248;
935
+ this.state = 263;
927
936
  this.match(CircuitScriptParser.To);
928
937
  {
929
- this.state = 249;
938
+ this.state = 264;
930
939
  this.component_select_expr();
931
- this.state = 254;
940
+ this.state = 269;
932
941
  this.errorHandler.sync(this);
933
942
  _la = this.tokenStream.LA(1);
934
943
  while (_la === 2) {
935
944
  {
936
945
  {
937
- this.state = 250;
946
+ this.state = 265;
938
947
  this.match(CircuitScriptParser.T__1);
939
- this.state = 251;
948
+ this.state = 266;
940
949
  this.component_select_expr();
941
950
  }
942
951
  }
943
- this.state = 256;
952
+ this.state = 271;
944
953
  this.errorHandler.sync(this);
945
954
  _la = this.tokenStream.LA(1);
946
955
  }
@@ -968,54 +977,54 @@ class CircuitScriptParser extends antlr.Parser {
968
977
  try {
969
978
  this.enterOuterAlt(localContext, 1);
970
979
  {
971
- this.state = 257;
980
+ this.state = 272;
972
981
  this.match(CircuitScriptParser.At);
973
- this.state = 258;
982
+ this.state = 273;
974
983
  this.component_select_expr();
975
- this.state = 259;
984
+ this.state = 274;
976
985
  this.match(CircuitScriptParser.To);
977
- this.state = 260;
986
+ this.state = 275;
978
987
  this.component_select_expr();
979
- this.state = 265;
988
+ this.state = 280;
980
989
  this.errorHandler.sync(this);
981
990
  _la = this.tokenStream.LA(1);
982
991
  while (_la === 2) {
983
992
  {
984
993
  {
985
- this.state = 261;
994
+ this.state = 276;
986
995
  this.match(CircuitScriptParser.T__1);
987
- this.state = 262;
996
+ this.state = 277;
988
997
  this.component_select_expr();
989
998
  }
990
999
  }
991
- this.state = 267;
1000
+ this.state = 282;
992
1001
  this.errorHandler.sync(this);
993
1002
  _la = this.tokenStream.LA(1);
994
1003
  }
995
- this.state = 268;
1004
+ this.state = 283;
996
1005
  this.match(CircuitScriptParser.T__0);
997
- this.state = 269;
1006
+ this.state = 284;
998
1007
  this.match(CircuitScriptParser.NEWLINE);
999
- this.state = 270;
1008
+ this.state = 285;
1000
1009
  this.match(CircuitScriptParser.INDENT);
1001
- this.state = 273;
1010
+ this.state = 288;
1002
1011
  this.errorHandler.sync(this);
1003
1012
  _la = this.tokenStream.LA(1);
1004
1013
  do {
1005
1014
  {
1006
- this.state = 273;
1015
+ this.state = 288;
1007
1016
  this.errorHandler.sync(this);
1008
1017
  switch (this.tokenStream.LA(1)) {
1009
1018
  case CircuitScriptParser.NEWLINE:
1010
1019
  {
1011
- this.state = 271;
1020
+ this.state = 286;
1012
1021
  this.match(CircuitScriptParser.NEWLINE);
1013
1022
  }
1014
1023
  break;
1015
1024
  case CircuitScriptParser.INTEGER_VALUE:
1016
1025
  case CircuitScriptParser.STRING_VALUE:
1017
1026
  {
1018
- this.state = 272;
1027
+ this.state = 287;
1019
1028
  this.at_to_multiple_line_expr();
1020
1029
  }
1021
1030
  break;
@@ -1023,11 +1032,11 @@ class CircuitScriptParser extends antlr.Parser {
1023
1032
  throw new antlr.NoViableAltException(this);
1024
1033
  }
1025
1034
  }
1026
- this.state = 275;
1035
+ this.state = 290;
1027
1036
  this.errorHandler.sync(this);
1028
1037
  _la = this.tokenStream.LA(1);
1029
- } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 137) !== 0));
1030
- this.state = 277;
1038
+ } while (((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 137) !== 0));
1039
+ this.state = 292;
1031
1040
  this.match(CircuitScriptParser.DEDENT);
1032
1041
  }
1033
1042
  }
@@ -1052,25 +1061,25 @@ class CircuitScriptParser extends antlr.Parser {
1052
1061
  try {
1053
1062
  this.enterOuterAlt(localContext, 1);
1054
1063
  {
1055
- this.state = 279;
1064
+ this.state = 294;
1056
1065
  this.pin_select_expr2();
1057
- this.state = 280;
1066
+ this.state = 295;
1058
1067
  this.match(CircuitScriptParser.T__0);
1059
- this.state = 281;
1068
+ this.state = 296;
1060
1069
  this.at_to_multiple_line_expr_to_pin();
1061
- this.state = 286;
1070
+ this.state = 301;
1062
1071
  this.errorHandler.sync(this);
1063
1072
  _la = this.tokenStream.LA(1);
1064
1073
  while (_la === 2) {
1065
1074
  {
1066
1075
  {
1067
- this.state = 282;
1076
+ this.state = 297;
1068
1077
  this.match(CircuitScriptParser.T__1);
1069
- this.state = 283;
1078
+ this.state = 298;
1070
1079
  this.at_to_multiple_line_expr_to_pin();
1071
1080
  }
1072
1081
  }
1073
- this.state = 288;
1082
+ this.state = 303;
1074
1083
  this.errorHandler.sync(this);
1075
1084
  _la = this.tokenStream.LA(1);
1076
1085
  }
@@ -1097,9 +1106,9 @@ class CircuitScriptParser extends antlr.Parser {
1097
1106
  try {
1098
1107
  this.enterOuterAlt(localContext, 1);
1099
1108
  {
1100
- this.state = 289;
1109
+ this.state = 304;
1101
1110
  _la = this.tokenStream.LA(1);
1102
- if (!(_la === 55 || _la === 58)) {
1111
+ if (!(_la === 56 || _la === 59)) {
1103
1112
  this.errorHandler.recoverInline(this);
1104
1113
  }
1105
1114
  else {
@@ -1129,27 +1138,28 @@ class CircuitScriptParser extends antlr.Parser {
1129
1138
  try {
1130
1139
  this.enterOuterAlt(localContext, 1);
1131
1140
  {
1132
- this.state = 291;
1141
+ this.state = 306;
1133
1142
  this.at_block_header();
1134
- this.state = 292;
1143
+ this.state = 307;
1135
1144
  this.match(CircuitScriptParser.NEWLINE);
1136
- this.state = 293;
1145
+ this.state = 308;
1137
1146
  this.match(CircuitScriptParser.INDENT);
1138
- this.state = 296;
1147
+ this.state = 311;
1139
1148
  this.errorHandler.sync(this);
1140
1149
  _la = this.tokenStream.LA(1);
1141
1150
  do {
1142
1151
  {
1143
- this.state = 296;
1152
+ this.state = 311;
1144
1153
  this.errorHandler.sync(this);
1145
1154
  switch (this.tokenStream.LA(1)) {
1146
1155
  case CircuitScriptParser.NEWLINE:
1147
1156
  {
1148
- this.state = 294;
1157
+ this.state = 309;
1149
1158
  this.match(CircuitScriptParser.NEWLINE);
1150
1159
  }
1151
1160
  break;
1152
1161
  case CircuitScriptParser.T__3:
1162
+ case CircuitScriptParser.T__7:
1153
1163
  case CircuitScriptParser.Break:
1154
1164
  case CircuitScriptParser.Branch:
1155
1165
  case CircuitScriptParser.Wire:
@@ -1174,7 +1184,7 @@ class CircuitScriptParser extends antlr.Parser {
1174
1184
  case CircuitScriptParser.INTEGER_VALUE:
1175
1185
  case CircuitScriptParser.STRING_VALUE:
1176
1186
  {
1177
- this.state = 295;
1187
+ this.state = 310;
1178
1188
  this.at_block_expressions();
1179
1189
  }
1180
1190
  break;
@@ -1182,11 +1192,11 @@ class CircuitScriptParser extends antlr.Parser {
1182
1192
  throw new antlr.NoViableAltException(this);
1183
1193
  }
1184
1194
  }
1185
- this.state = 298;
1195
+ this.state = 313;
1186
1196
  this.errorHandler.sync(this);
1187
1197
  _la = this.tokenStream.LA(1);
1188
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 9012229) !== 0));
1189
- this.state = 300;
1198
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 1735911537) !== 0) || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 9012229) !== 0));
1199
+ this.state = 315;
1190
1200
  this.match(CircuitScriptParser.DEDENT);
1191
1201
  }
1192
1202
  }
@@ -1208,10 +1218,11 @@ class CircuitScriptParser extends antlr.Parser {
1208
1218
  let localContext = new At_block_expressionsContext(this.context, this.state);
1209
1219
  this.enterRule(localContext, 42, CircuitScriptParser.RULE_at_block_expressions);
1210
1220
  try {
1211
- this.state = 304;
1221
+ this.state = 319;
1212
1222
  this.errorHandler.sync(this);
1213
1223
  switch (this.tokenStream.LA(1)) {
1214
1224
  case CircuitScriptParser.T__3:
1225
+ case CircuitScriptParser.T__7:
1215
1226
  case CircuitScriptParser.Break:
1216
1227
  case CircuitScriptParser.Branch:
1217
1228
  case CircuitScriptParser.Wire:
@@ -1235,7 +1246,7 @@ class CircuitScriptParser extends antlr.Parser {
1235
1246
  case CircuitScriptParser.ID:
1236
1247
  this.enterOuterAlt(localContext, 1);
1237
1248
  {
1238
- this.state = 302;
1249
+ this.state = 317;
1239
1250
  this.expression();
1240
1251
  }
1241
1252
  break;
@@ -1243,7 +1254,7 @@ class CircuitScriptParser extends antlr.Parser {
1243
1254
  case CircuitScriptParser.STRING_VALUE:
1244
1255
  this.enterOuterAlt(localContext, 2);
1245
1256
  {
1246
- this.state = 303;
1257
+ this.state = 318;
1247
1258
  this.at_block_pin_expr();
1248
1259
  }
1249
1260
  break;
@@ -1272,18 +1283,23 @@ class CircuitScriptParser extends antlr.Parser {
1272
1283
  try {
1273
1284
  this.enterOuterAlt(localContext, 1);
1274
1285
  {
1275
- this.state = 306;
1286
+ this.state = 321;
1276
1287
  this.at_component_expr();
1277
- this.state = 307;
1288
+ this.state = 322;
1278
1289
  this.match(CircuitScriptParser.T__0);
1279
- this.state = 309;
1290
+ this.state = 326;
1280
1291
  this.errorHandler.sync(this);
1281
1292
  _la = this.tokenStream.LA(1);
1282
- if (_la === 52) {
1293
+ while (_la === 53) {
1283
1294
  {
1284
- this.state = 308;
1285
- this.annotation_comment_expr();
1295
+ {
1296
+ this.state = 323;
1297
+ this.annotation_comment_expr();
1298
+ }
1286
1299
  }
1300
+ this.state = 328;
1301
+ this.errorHandler.sync(this);
1302
+ _la = this.tokenStream.LA(1);
1287
1303
  }
1288
1304
  }
1289
1305
  }
@@ -1307,14 +1323,15 @@ class CircuitScriptParser extends antlr.Parser {
1307
1323
  try {
1308
1324
  this.enterOuterAlt(localContext, 1);
1309
1325
  {
1310
- this.state = 311;
1326
+ this.state = 329;
1311
1327
  this.pin_select_expr2();
1312
- this.state = 312;
1328
+ this.state = 330;
1313
1329
  this.match(CircuitScriptParser.T__0);
1314
- this.state = 315;
1330
+ this.state = 333;
1315
1331
  this.errorHandler.sync(this);
1316
1332
  switch (this.tokenStream.LA(1)) {
1317
1333
  case CircuitScriptParser.T__3:
1334
+ case CircuitScriptParser.T__7:
1318
1335
  case CircuitScriptParser.Break:
1319
1336
  case CircuitScriptParser.Branch:
1320
1337
  case CircuitScriptParser.Wire:
@@ -1338,13 +1355,13 @@ class CircuitScriptParser extends antlr.Parser {
1338
1355
  case CircuitScriptParser.NOT_CONNECTED:
1339
1356
  case CircuitScriptParser.ID:
1340
1357
  {
1341
- this.state = 313;
1358
+ this.state = 331;
1342
1359
  this.at_block_pin_expression_simple();
1343
1360
  }
1344
1361
  break;
1345
1362
  case CircuitScriptParser.NEWLINE:
1346
1363
  {
1347
- this.state = 314;
1364
+ this.state = 332;
1348
1365
  this.at_block_pin_expression_complex();
1349
1366
  }
1350
1367
  break;
@@ -1373,10 +1390,11 @@ class CircuitScriptParser extends antlr.Parser {
1373
1390
  try {
1374
1391
  this.enterOuterAlt(localContext, 1);
1375
1392
  {
1376
- this.state = 319;
1393
+ this.state = 337;
1377
1394
  this.errorHandler.sync(this);
1378
1395
  switch (this.tokenStream.LA(1)) {
1379
1396
  case CircuitScriptParser.T__3:
1397
+ case CircuitScriptParser.T__7:
1380
1398
  case CircuitScriptParser.Break:
1381
1399
  case CircuitScriptParser.Branch:
1382
1400
  case CircuitScriptParser.Wire:
@@ -1399,13 +1417,13 @@ class CircuitScriptParser extends antlr.Parser {
1399
1417
  case CircuitScriptParser.ANNOTATION_START:
1400
1418
  case CircuitScriptParser.ID:
1401
1419
  {
1402
- this.state = 317;
1420
+ this.state = 335;
1403
1421
  this.expression();
1404
1422
  }
1405
1423
  break;
1406
1424
  case CircuitScriptParser.NOT_CONNECTED:
1407
1425
  {
1408
- this.state = 318;
1426
+ this.state = 336;
1409
1427
  this.match(CircuitScriptParser.NOT_CONNECTED);
1410
1428
  }
1411
1429
  break;
@@ -1434,7 +1452,7 @@ class CircuitScriptParser extends antlr.Parser {
1434
1452
  try {
1435
1453
  this.enterOuterAlt(localContext, 1);
1436
1454
  {
1437
- this.state = 321;
1455
+ this.state = 339;
1438
1456
  this.expressions_block();
1439
1457
  }
1440
1458
  }
@@ -1458,25 +1476,25 @@ class CircuitScriptParser extends antlr.Parser {
1458
1476
  try {
1459
1477
  this.enterOuterAlt(localContext, 1);
1460
1478
  {
1461
- this.state = 325;
1479
+ this.state = 343;
1462
1480
  this.errorHandler.sync(this);
1463
1481
  switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context)) {
1464
1482
  case 1:
1465
1483
  {
1466
- this.state = 323;
1484
+ this.state = 341;
1467
1485
  this.atom_expr();
1468
1486
  }
1469
1487
  break;
1470
1488
  case 2:
1471
1489
  {
1472
- this.state = 324;
1490
+ this.state = 342;
1473
1491
  this.function_call_expr();
1474
1492
  }
1475
1493
  break;
1476
1494
  }
1477
- this.state = 327;
1495
+ this.state = 345;
1478
1496
  this.match(CircuitScriptParser.T__2);
1479
- this.state = 328;
1497
+ this.state = 346;
1480
1498
  this.data_expr(0);
1481
1499
  }
1482
1500
  }
@@ -1501,18 +1519,18 @@ class CircuitScriptParser extends antlr.Parser {
1501
1519
  try {
1502
1520
  this.enterOuterAlt(localContext, 1);
1503
1521
  {
1504
- this.state = 330;
1522
+ this.state = 348;
1505
1523
  this.atom_expr();
1506
- this.state = 331;
1524
+ this.state = 349;
1507
1525
  _la = this.tokenStream.LA(1);
1508
- if (!(((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 31) !== 0))) {
1526
+ if (!(((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & 31) !== 0))) {
1509
1527
  this.errorHandler.recoverInline(this);
1510
1528
  }
1511
1529
  else {
1512
1530
  this.errorHandler.reportMatch(this);
1513
1531
  this.consume();
1514
1532
  }
1515
- this.state = 332;
1533
+ this.state = 350;
1516
1534
  this.data_expr(0);
1517
1535
  }
1518
1536
  }
@@ -1536,11 +1554,11 @@ class CircuitScriptParser extends antlr.Parser {
1536
1554
  try {
1537
1555
  this.enterOuterAlt(localContext, 1);
1538
1556
  {
1539
- this.state = 334;
1557
+ this.state = 352;
1540
1558
  this.match(CircuitScriptParser.ID);
1541
- this.state = 335;
1559
+ this.state = 353;
1542
1560
  this.match(CircuitScriptParser.T__2);
1543
- this.state = 336;
1561
+ this.state = 354;
1544
1562
  this.data_expr(0);
1545
1563
  }
1546
1564
  }
@@ -1564,46 +1582,46 @@ class CircuitScriptParser extends antlr.Parser {
1564
1582
  let _la;
1565
1583
  try {
1566
1584
  let alternative;
1567
- this.state = 361;
1585
+ this.state = 379;
1568
1586
  this.errorHandler.sync(this);
1569
1587
  switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context)) {
1570
1588
  case 1:
1571
1589
  this.enterOuterAlt(localContext, 1);
1572
1590
  {
1573
1591
  {
1574
- this.state = 338;
1592
+ this.state = 356;
1575
1593
  this.data_expr(0);
1576
- this.state = 343;
1594
+ this.state = 361;
1577
1595
  this.errorHandler.sync(this);
1578
1596
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 29, this.context);
1579
1597
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1580
1598
  if (alternative === 1) {
1581
1599
  {
1582
1600
  {
1583
- this.state = 339;
1601
+ this.state = 357;
1584
1602
  this.match(CircuitScriptParser.T__1);
1585
- this.state = 340;
1603
+ this.state = 358;
1586
1604
  this.data_expr(0);
1587
1605
  }
1588
1606
  }
1589
1607
  }
1590
- this.state = 345;
1608
+ this.state = 363;
1591
1609
  this.errorHandler.sync(this);
1592
1610
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 29, this.context);
1593
1611
  }
1594
- this.state = 350;
1612
+ this.state = 368;
1595
1613
  this.errorHandler.sync(this);
1596
1614
  _la = this.tokenStream.LA(1);
1597
1615
  while (_la === 2) {
1598
1616
  {
1599
1617
  {
1600
- this.state = 346;
1618
+ this.state = 364;
1601
1619
  this.match(CircuitScriptParser.T__1);
1602
- this.state = 347;
1620
+ this.state = 365;
1603
1621
  this.keyword_assignment_expr();
1604
1622
  }
1605
1623
  }
1606
- this.state = 352;
1624
+ this.state = 370;
1607
1625
  this.errorHandler.sync(this);
1608
1626
  _la = this.tokenStream.LA(1);
1609
1627
  }
@@ -1614,21 +1632,21 @@ class CircuitScriptParser extends antlr.Parser {
1614
1632
  this.enterOuterAlt(localContext, 2);
1615
1633
  {
1616
1634
  {
1617
- this.state = 353;
1635
+ this.state = 371;
1618
1636
  this.keyword_assignment_expr();
1619
- this.state = 358;
1637
+ this.state = 376;
1620
1638
  this.errorHandler.sync(this);
1621
1639
  _la = this.tokenStream.LA(1);
1622
1640
  while (_la === 2) {
1623
1641
  {
1624
1642
  {
1625
- this.state = 354;
1643
+ this.state = 372;
1626
1644
  this.match(CircuitScriptParser.T__1);
1627
- this.state = 355;
1645
+ this.state = 373;
1628
1646
  this.keyword_assignment_expr();
1629
1647
  }
1630
1648
  }
1631
- this.state = 360;
1649
+ this.state = 378;
1632
1650
  this.errorHandler.sync(this);
1633
1651
  _la = this.tokenStream.LA(1);
1634
1652
  }
@@ -1657,11 +1675,11 @@ class CircuitScriptParser extends antlr.Parser {
1657
1675
  try {
1658
1676
  this.enterOuterAlt(localContext, 1);
1659
1677
  {
1660
- this.state = 363;
1678
+ this.state = 381;
1661
1679
  this.atom_expr();
1662
- this.state = 364;
1680
+ this.state = 382;
1663
1681
  this.match(CircuitScriptParser.T__2);
1664
- this.state = 365;
1682
+ this.state = 383;
1665
1683
  this.data_expr(0);
1666
1684
  }
1667
1685
  }
@@ -1685,13 +1703,13 @@ class CircuitScriptParser extends antlr.Parser {
1685
1703
  try {
1686
1704
  this.enterOuterAlt(localContext, 1);
1687
1705
  {
1688
- this.state = 367;
1706
+ this.state = 385;
1689
1707
  this.match(CircuitScriptParser.T__3);
1690
- this.state = 368;
1708
+ this.state = 386;
1691
1709
  this.match(CircuitScriptParser.ID);
1692
- this.state = 369;
1710
+ this.state = 387;
1693
1711
  this.match(CircuitScriptParser.T__2);
1694
- this.state = 370;
1712
+ this.state = 388;
1695
1713
  this.data_expr(0);
1696
1714
  }
1697
1715
  }
@@ -1724,7 +1742,7 @@ class CircuitScriptParser extends antlr.Parser {
1724
1742
  let alternative;
1725
1743
  this.enterOuterAlt(localContext, 1);
1726
1744
  {
1727
- this.state = 389;
1745
+ this.state = 407;
1728
1746
  this.errorHandler.sync(this);
1729
1747
  switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context)) {
1730
1748
  case 1:
@@ -1732,11 +1750,11 @@ class CircuitScriptParser extends antlr.Parser {
1732
1750
  localContext = new RoundedBracketsExprContext(localContext);
1733
1751
  this.context = localContext;
1734
1752
  previousContext = localContext;
1735
- this.state = 373;
1753
+ this.state = 391;
1736
1754
  this.match(CircuitScriptParser.OPEN_PAREN);
1737
- this.state = 374;
1755
+ this.state = 392;
1738
1756
  this.data_expr(0);
1739
- this.state = 375;
1757
+ this.state = 393;
1740
1758
  this.match(CircuitScriptParser.CLOSE_PAREN);
1741
1759
  }
1742
1760
  break;
@@ -1745,7 +1763,7 @@ class CircuitScriptParser extends antlr.Parser {
1745
1763
  localContext = new ValueAtomExprContext(localContext);
1746
1764
  this.context = localContext;
1747
1765
  previousContext = localContext;
1748
- this.state = 379;
1766
+ this.state = 397;
1749
1767
  this.errorHandler.sync(this);
1750
1768
  switch (this.tokenStream.LA(1)) {
1751
1769
  case CircuitScriptParser.Minus:
@@ -1756,13 +1774,13 @@ class CircuitScriptParser extends antlr.Parser {
1756
1774
  case CircuitScriptParser.STRING_VALUE:
1757
1775
  case CircuitScriptParser.PERCENTAGE_VALUE:
1758
1776
  {
1759
- this.state = 377;
1777
+ this.state = 395;
1760
1778
  this.value_expr();
1761
1779
  }
1762
1780
  break;
1763
1781
  case CircuitScriptParser.ID:
1764
1782
  {
1765
- this.state = 378;
1783
+ this.state = 396;
1766
1784
  this.atom_expr();
1767
1785
  }
1768
1786
  break;
@@ -1776,9 +1794,9 @@ class CircuitScriptParser extends antlr.Parser {
1776
1794
  localContext = new UnaryOperatorExprContext(localContext);
1777
1795
  this.context = localContext;
1778
1796
  previousContext = localContext;
1779
- this.state = 381;
1797
+ this.state = 399;
1780
1798
  this.unary_operator();
1781
- this.state = 382;
1799
+ this.state = 400;
1782
1800
  this.data_expr(11);
1783
1801
  }
1784
1802
  break;
@@ -1787,7 +1805,7 @@ class CircuitScriptParser extends antlr.Parser {
1787
1805
  localContext = new DataExprContext(localContext);
1788
1806
  this.context = localContext;
1789
1807
  previousContext = localContext;
1790
- this.state = 384;
1808
+ this.state = 402;
1791
1809
  this.create_component_expr();
1792
1810
  }
1793
1811
  break;
@@ -1796,7 +1814,7 @@ class CircuitScriptParser extends antlr.Parser {
1796
1814
  localContext = new DataExprContext(localContext);
1797
1815
  this.context = localContext;
1798
1816
  previousContext = localContext;
1799
- this.state = 385;
1817
+ this.state = 403;
1800
1818
  this.create_graphic_expr();
1801
1819
  }
1802
1820
  break;
@@ -1805,7 +1823,7 @@ class CircuitScriptParser extends antlr.Parser {
1805
1823
  localContext = new DataExprContext(localContext);
1806
1824
  this.context = localContext;
1807
1825
  previousContext = localContext;
1808
- this.state = 386;
1826
+ this.state = 404;
1809
1827
  this.create_module_expr();
1810
1828
  }
1811
1829
  break;
@@ -1814,7 +1832,7 @@ class CircuitScriptParser extends antlr.Parser {
1814
1832
  localContext = new FunctionCallExprContext(localContext);
1815
1833
  this.context = localContext;
1816
1834
  previousContext = localContext;
1817
- this.state = 387;
1835
+ this.state = 405;
1818
1836
  this.function_call_expr();
1819
1837
  }
1820
1838
  break;
@@ -1823,13 +1841,13 @@ class CircuitScriptParser extends antlr.Parser {
1823
1841
  localContext = new ArrayExprContext(localContext);
1824
1842
  this.context = localContext;
1825
1843
  previousContext = localContext;
1826
- this.state = 388;
1844
+ this.state = 406;
1827
1845
  this.array_expr();
1828
1846
  }
1829
1847
  break;
1830
1848
  }
1831
1849
  this.context.stop = this.tokenStream.LT(-1);
1832
- this.state = 411;
1850
+ this.state = 429;
1833
1851
  this.errorHandler.sync(this);
1834
1852
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 36, this.context);
1835
1853
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
@@ -1839,27 +1857,27 @@ class CircuitScriptParser extends antlr.Parser {
1839
1857
  }
1840
1858
  previousContext = localContext;
1841
1859
  {
1842
- this.state = 409;
1860
+ this.state = 427;
1843
1861
  this.errorHandler.sync(this);
1844
1862
  switch (this.interpreter.adaptivePredict(this.tokenStream, 35, this.context)) {
1845
1863
  case 1:
1846
1864
  {
1847
1865
  localContext = new MultiplyExprContext(new Data_exprContext(parentContext, parentState));
1848
1866
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1849
- this.state = 391;
1867
+ this.state = 409;
1850
1868
  if (!(this.precpred(this.context, 10))) {
1851
1869
  throw this.createFailedPredicateException("this.precpred(this.context, 10)");
1852
1870
  }
1853
- this.state = 392;
1871
+ this.state = 410;
1854
1872
  _la = this.tokenStream.LA(1);
1855
- if (!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 7) !== 0))) {
1873
+ if (!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 7) !== 0))) {
1856
1874
  this.errorHandler.recoverInline(this);
1857
1875
  }
1858
1876
  else {
1859
1877
  this.errorHandler.reportMatch(this);
1860
1878
  this.consume();
1861
1879
  }
1862
- this.state = 393;
1880
+ this.state = 411;
1863
1881
  this.data_expr(11);
1864
1882
  }
1865
1883
  break;
@@ -1867,20 +1885,20 @@ class CircuitScriptParser extends antlr.Parser {
1867
1885
  {
1868
1886
  localContext = new AdditionExprContext(new Data_exprContext(parentContext, parentState));
1869
1887
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1870
- this.state = 394;
1888
+ this.state = 412;
1871
1889
  if (!(this.precpred(this.context, 9))) {
1872
1890
  throw this.createFailedPredicateException("this.precpred(this.context, 9)");
1873
1891
  }
1874
- this.state = 395;
1892
+ this.state = 413;
1875
1893
  _la = this.tokenStream.LA(1);
1876
- if (!(_la === 42 || _la === 43)) {
1894
+ if (!(_la === 43 || _la === 44)) {
1877
1895
  this.errorHandler.recoverInline(this);
1878
1896
  }
1879
1897
  else {
1880
1898
  this.errorHandler.reportMatch(this);
1881
1899
  this.consume();
1882
1900
  }
1883
- this.state = 396;
1901
+ this.state = 414;
1884
1902
  this.data_expr(10);
1885
1903
  }
1886
1904
  break;
@@ -1888,13 +1906,13 @@ class CircuitScriptParser extends antlr.Parser {
1888
1906
  {
1889
1907
  localContext = new BinaryOperatorExprContext(new Data_exprContext(parentContext, parentState));
1890
1908
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1891
- this.state = 397;
1909
+ this.state = 415;
1892
1910
  if (!(this.precpred(this.context, 8))) {
1893
1911
  throw this.createFailedPredicateException("this.precpred(this.context, 8)");
1894
1912
  }
1895
- this.state = 398;
1913
+ this.state = 416;
1896
1914
  this.binary_operator();
1897
- this.state = 399;
1915
+ this.state = 417;
1898
1916
  this.data_expr(9);
1899
1917
  }
1900
1918
  break;
@@ -1902,20 +1920,20 @@ class CircuitScriptParser extends antlr.Parser {
1902
1920
  {
1903
1921
  localContext = new LogicalOperatorExprContext(new Data_exprContext(parentContext, parentState));
1904
1922
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1905
- this.state = 401;
1923
+ this.state = 419;
1906
1924
  if (!(this.precpred(this.context, 7))) {
1907
1925
  throw this.createFailedPredicateException("this.precpred(this.context, 7)");
1908
1926
  }
1909
- this.state = 402;
1927
+ this.state = 420;
1910
1928
  _la = this.tokenStream.LA(1);
1911
- if (!(_la === 40 || _la === 41)) {
1929
+ if (!(_la === 41 || _la === 42)) {
1912
1930
  this.errorHandler.recoverInline(this);
1913
1931
  }
1914
1932
  else {
1915
1933
  this.errorHandler.reportMatch(this);
1916
1934
  this.consume();
1917
1935
  }
1918
- this.state = 403;
1936
+ this.state = 421;
1919
1937
  this.data_expr(8);
1920
1938
  }
1921
1939
  break;
@@ -1923,22 +1941,22 @@ class CircuitScriptParser extends antlr.Parser {
1923
1941
  {
1924
1942
  localContext = new ArrayIndexExprContext(new Data_exprContext(parentContext, parentState));
1925
1943
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1926
- this.state = 404;
1944
+ this.state = 422;
1927
1945
  if (!(this.precpred(this.context, 1))) {
1928
1946
  throw this.createFailedPredicateException("this.precpred(this.context, 1)");
1929
1947
  }
1930
- this.state = 405;
1948
+ this.state = 423;
1931
1949
  this.match(CircuitScriptParser.T__4);
1932
- this.state = 406;
1950
+ this.state = 424;
1933
1951
  this.data_expr(0);
1934
- this.state = 407;
1952
+ this.state = 425;
1935
1953
  this.match(CircuitScriptParser.T__5);
1936
1954
  }
1937
1955
  break;
1938
1956
  }
1939
1957
  }
1940
1958
  }
1941
- this.state = 413;
1959
+ this.state = 431;
1942
1960
  this.errorHandler.sync(this);
1943
1961
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 36, this.context);
1944
1962
  }
@@ -1965,9 +1983,9 @@ class CircuitScriptParser extends antlr.Parser {
1965
1983
  try {
1966
1984
  this.enterOuterAlt(localContext, 1);
1967
1985
  {
1968
- this.state = 414;
1986
+ this.state = 432;
1969
1987
  _la = this.tokenStream.LA(1);
1970
- if (!(((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 63) !== 0))) {
1988
+ if (!(((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 63) !== 0))) {
1971
1989
  this.errorHandler.recoverInline(this);
1972
1990
  }
1973
1991
  else {
@@ -1997,9 +2015,9 @@ class CircuitScriptParser extends antlr.Parser {
1997
2015
  try {
1998
2016
  this.enterOuterAlt(localContext, 1);
1999
2017
  {
2000
- this.state = 416;
2018
+ this.state = 434;
2001
2019
  _la = this.tokenStream.LA(1);
2002
- if (!(_la === 31 || _la === 43)) {
2020
+ if (!(_la === 32 || _la === 44)) {
2003
2021
  this.errorHandler.recoverInline(this);
2004
2022
  }
2005
2023
  else {
@@ -2030,18 +2048,18 @@ class CircuitScriptParser extends antlr.Parser {
2030
2048
  this.enterOuterAlt(localContext, 1);
2031
2049
  {
2032
2050
  {
2033
- this.state = 419;
2051
+ this.state = 437;
2034
2052
  this.errorHandler.sync(this);
2035
2053
  _la = this.tokenStream.LA(1);
2036
- if (_la === 43) {
2054
+ if (_la === 44) {
2037
2055
  {
2038
- this.state = 418;
2056
+ this.state = 436;
2039
2057
  this.match(CircuitScriptParser.Minus);
2040
2058
  }
2041
2059
  }
2042
- this.state = 421;
2060
+ this.state = 439;
2043
2061
  _la = this.tokenStream.LA(1);
2044
- if (!(((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 125) !== 0))) {
2062
+ if (!(((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 125) !== 0))) {
2045
2063
  this.errorHandler.recoverInline(this);
2046
2064
  }
2047
2065
  else {
@@ -2072,44 +2090,45 @@ class CircuitScriptParser extends antlr.Parser {
2072
2090
  try {
2073
2091
  this.enterOuterAlt(localContext, 1);
2074
2092
  {
2075
- this.state = 423;
2093
+ this.state = 441;
2076
2094
  this.match(CircuitScriptParser.Define);
2077
- this.state = 424;
2095
+ this.state = 442;
2078
2096
  this.match(CircuitScriptParser.ID);
2079
- this.state = 425;
2097
+ this.state = 443;
2080
2098
  this.match(CircuitScriptParser.OPEN_PAREN);
2081
- this.state = 427;
2099
+ this.state = 445;
2082
2100
  this.errorHandler.sync(this);
2083
2101
  _la = this.tokenStream.LA(1);
2084
- if (_la === 57) {
2102
+ if (_la === 58) {
2085
2103
  {
2086
- this.state = 426;
2104
+ this.state = 444;
2087
2105
  this.function_args_expr();
2088
2106
  }
2089
2107
  }
2090
- this.state = 429;
2108
+ this.state = 447;
2091
2109
  this.match(CircuitScriptParser.CLOSE_PAREN);
2092
- this.state = 430;
2110
+ this.state = 448;
2093
2111
  this.match(CircuitScriptParser.T__0);
2094
- this.state = 431;
2112
+ this.state = 449;
2095
2113
  this.match(CircuitScriptParser.NEWLINE);
2096
- this.state = 432;
2114
+ this.state = 450;
2097
2115
  this.match(CircuitScriptParser.INDENT);
2098
- this.state = 435;
2116
+ this.state = 453;
2099
2117
  this.errorHandler.sync(this);
2100
2118
  _la = this.tokenStream.LA(1);
2101
2119
  do {
2102
2120
  {
2103
- this.state = 435;
2121
+ this.state = 453;
2104
2122
  this.errorHandler.sync(this);
2105
2123
  switch (this.tokenStream.LA(1)) {
2106
2124
  case CircuitScriptParser.NEWLINE:
2107
2125
  {
2108
- this.state = 433;
2126
+ this.state = 451;
2109
2127
  this.match(CircuitScriptParser.NEWLINE);
2110
2128
  }
2111
2129
  break;
2112
2130
  case CircuitScriptParser.T__3:
2131
+ case CircuitScriptParser.T__7:
2113
2132
  case CircuitScriptParser.Break:
2114
2133
  case CircuitScriptParser.Branch:
2115
2134
  case CircuitScriptParser.Wire:
@@ -2133,7 +2152,7 @@ class CircuitScriptParser extends antlr.Parser {
2133
2152
  case CircuitScriptParser.ANNOTATION_START:
2134
2153
  case CircuitScriptParser.ID:
2135
2154
  {
2136
- this.state = 434;
2155
+ this.state = 452;
2137
2156
  this.function_expr();
2138
2157
  }
2139
2158
  break;
@@ -2141,11 +2160,11 @@ class CircuitScriptParser extends antlr.Parser {
2141
2160
  throw new antlr.NoViableAltException(this);
2142
2161
  }
2143
2162
  }
2144
- this.state = 437;
2163
+ this.state = 455;
2145
2164
  this.errorHandler.sync(this);
2146
2165
  _la = this.tokenStream.LA(1);
2147
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 868217905) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 8422405) !== 0));
2148
- this.state = 439;
2166
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 1736435825) !== 0) || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 8422405) !== 0));
2167
+ this.state = 457;
2149
2168
  this.match(CircuitScriptParser.DEDENT);
2150
2169
  }
2151
2170
  }
@@ -2167,10 +2186,11 @@ class CircuitScriptParser extends antlr.Parser {
2167
2186
  let localContext = new Function_exprContext(this.context, this.state);
2168
2187
  this.enterRule(localContext, 74, CircuitScriptParser.RULE_function_expr);
2169
2188
  try {
2170
- this.state = 443;
2189
+ this.state = 461;
2171
2190
  this.errorHandler.sync(this);
2172
2191
  switch (this.tokenStream.LA(1)) {
2173
2192
  case CircuitScriptParser.T__3:
2193
+ case CircuitScriptParser.T__7:
2174
2194
  case CircuitScriptParser.Break:
2175
2195
  case CircuitScriptParser.Branch:
2176
2196
  case CircuitScriptParser.Wire:
@@ -2194,14 +2214,14 @@ class CircuitScriptParser extends antlr.Parser {
2194
2214
  case CircuitScriptParser.ID:
2195
2215
  this.enterOuterAlt(localContext, 1);
2196
2216
  {
2197
- this.state = 441;
2217
+ this.state = 459;
2198
2218
  this.expression();
2199
2219
  }
2200
2220
  break;
2201
2221
  case CircuitScriptParser.Return:
2202
2222
  this.enterOuterAlt(localContext, 2);
2203
2223
  {
2204
- this.state = 442;
2224
+ this.state = 460;
2205
2225
  this.function_return_expr();
2206
2226
  }
2207
2227
  break;
@@ -2229,49 +2249,49 @@ class CircuitScriptParser extends antlr.Parser {
2229
2249
  let _la;
2230
2250
  try {
2231
2251
  let alternative;
2232
- this.state = 474;
2252
+ this.state = 492;
2233
2253
  this.errorHandler.sync(this);
2234
2254
  switch (this.interpreter.adaptivePredict(this.tokenStream, 45, this.context)) {
2235
2255
  case 1:
2236
2256
  this.enterOuterAlt(localContext, 1);
2237
2257
  {
2238
- this.state = 445;
2258
+ this.state = 463;
2239
2259
  this.match(CircuitScriptParser.ID);
2240
- this.state = 450;
2260
+ this.state = 468;
2241
2261
  this.errorHandler.sync(this);
2242
2262
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 42, this.context);
2243
2263
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2244
2264
  if (alternative === 1) {
2245
2265
  {
2246
2266
  {
2247
- this.state = 446;
2267
+ this.state = 464;
2248
2268
  this.match(CircuitScriptParser.T__1);
2249
- this.state = 447;
2269
+ this.state = 465;
2250
2270
  this.match(CircuitScriptParser.ID);
2251
2271
  }
2252
2272
  }
2253
2273
  }
2254
- this.state = 452;
2274
+ this.state = 470;
2255
2275
  this.errorHandler.sync(this);
2256
2276
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 42, this.context);
2257
2277
  }
2258
- this.state = 459;
2278
+ this.state = 477;
2259
2279
  this.errorHandler.sync(this);
2260
2280
  _la = this.tokenStream.LA(1);
2261
2281
  while (_la === 2) {
2262
2282
  {
2263
2283
  {
2264
- this.state = 453;
2284
+ this.state = 471;
2265
2285
  this.match(CircuitScriptParser.T__1);
2266
- this.state = 454;
2286
+ this.state = 472;
2267
2287
  this.match(CircuitScriptParser.ID);
2268
- this.state = 455;
2288
+ this.state = 473;
2269
2289
  this.match(CircuitScriptParser.T__2);
2270
- this.state = 456;
2290
+ this.state = 474;
2271
2291
  this.value_expr();
2272
2292
  }
2273
2293
  }
2274
- this.state = 461;
2294
+ this.state = 479;
2275
2295
  this.errorHandler.sync(this);
2276
2296
  _la = this.tokenStream.LA(1);
2277
2297
  }
@@ -2280,29 +2300,29 @@ class CircuitScriptParser extends antlr.Parser {
2280
2300
  case 2:
2281
2301
  this.enterOuterAlt(localContext, 2);
2282
2302
  {
2283
- this.state = 462;
2303
+ this.state = 480;
2284
2304
  this.match(CircuitScriptParser.ID);
2285
- this.state = 463;
2305
+ this.state = 481;
2286
2306
  this.match(CircuitScriptParser.T__2);
2287
- this.state = 464;
2307
+ this.state = 482;
2288
2308
  this.value_expr();
2289
- this.state = 471;
2309
+ this.state = 489;
2290
2310
  this.errorHandler.sync(this);
2291
2311
  _la = this.tokenStream.LA(1);
2292
2312
  while (_la === 2) {
2293
2313
  {
2294
2314
  {
2295
- this.state = 465;
2315
+ this.state = 483;
2296
2316
  this.match(CircuitScriptParser.T__1);
2297
- this.state = 466;
2317
+ this.state = 484;
2298
2318
  this.match(CircuitScriptParser.ID);
2299
- this.state = 467;
2319
+ this.state = 485;
2300
2320
  this.match(CircuitScriptParser.T__2);
2301
- this.state = 468;
2321
+ this.state = 486;
2302
2322
  this.value_expr();
2303
2323
  }
2304
2324
  }
2305
- this.state = 473;
2325
+ this.state = 491;
2306
2326
  this.errorHandler.sync(this);
2307
2327
  _la = this.tokenStream.LA(1);
2308
2328
  }
@@ -2331,21 +2351,21 @@ class CircuitScriptParser extends antlr.Parser {
2331
2351
  let alternative;
2332
2352
  this.enterOuterAlt(localContext, 1);
2333
2353
  {
2334
- this.state = 476;
2354
+ this.state = 494;
2335
2355
  this.match(CircuitScriptParser.ID);
2336
- this.state = 480;
2356
+ this.state = 498;
2337
2357
  this.errorHandler.sync(this);
2338
2358
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 46, this.context);
2339
2359
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2340
2360
  if (alternative === 1) {
2341
2361
  {
2342
2362
  {
2343
- this.state = 477;
2363
+ this.state = 495;
2344
2364
  this.trailer_expr2();
2345
2365
  }
2346
2366
  }
2347
2367
  }
2348
- this.state = 482;
2368
+ this.state = 500;
2349
2369
  this.errorHandler.sync(this);
2350
2370
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 46, this.context);
2351
2371
  }
@@ -2370,24 +2390,24 @@ class CircuitScriptParser extends antlr.Parser {
2370
2390
  this.enterRule(localContext, 80, CircuitScriptParser.RULE_trailer_expr);
2371
2391
  let _la;
2372
2392
  try {
2373
- this.state = 489;
2393
+ this.state = 507;
2374
2394
  this.errorHandler.sync(this);
2375
2395
  switch (this.tokenStream.LA(1)) {
2376
2396
  case CircuitScriptParser.OPEN_PAREN:
2377
2397
  this.enterOuterAlt(localContext, 1);
2378
2398
  {
2379
- this.state = 483;
2399
+ this.state = 501;
2380
2400
  this.match(CircuitScriptParser.OPEN_PAREN);
2381
- this.state = 485;
2401
+ this.state = 503;
2382
2402
  this.errorHandler.sync(this);
2383
2403
  _la = this.tokenStream.LA(1);
2384
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147484704) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2082823) !== 0)) {
2404
+ if (_la === 5 || _la === 11 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4265621505) !== 0)) {
2385
2405
  {
2386
- this.state = 484;
2406
+ this.state = 502;
2387
2407
  this.parameters();
2388
2408
  }
2389
2409
  }
2390
- this.state = 487;
2410
+ this.state = 505;
2391
2411
  this.match(CircuitScriptParser.CLOSE_PAREN);
2392
2412
  }
2393
2413
  break;
@@ -2395,7 +2415,7 @@ class CircuitScriptParser extends antlr.Parser {
2395
2415
  case CircuitScriptParser.T__6:
2396
2416
  this.enterOuterAlt(localContext, 2);
2397
2417
  {
2398
- this.state = 488;
2418
+ this.state = 506;
2399
2419
  this.trailer_expr2();
2400
2420
  }
2401
2421
  break;
@@ -2421,26 +2441,26 @@ class CircuitScriptParser extends antlr.Parser {
2421
2441
  let localContext = new Trailer_expr2Context(this.context, this.state);
2422
2442
  this.enterRule(localContext, 82, CircuitScriptParser.RULE_trailer_expr2);
2423
2443
  try {
2424
- this.state = 497;
2444
+ this.state = 515;
2425
2445
  this.errorHandler.sync(this);
2426
2446
  switch (this.tokenStream.LA(1)) {
2427
2447
  case CircuitScriptParser.T__6:
2428
2448
  this.enterOuterAlt(localContext, 1);
2429
2449
  {
2430
- this.state = 491;
2450
+ this.state = 509;
2431
2451
  this.match(CircuitScriptParser.T__6);
2432
- this.state = 492;
2452
+ this.state = 510;
2433
2453
  this.match(CircuitScriptParser.ID);
2434
2454
  }
2435
2455
  break;
2436
2456
  case CircuitScriptParser.T__4:
2437
2457
  this.enterOuterAlt(localContext, 2);
2438
2458
  {
2439
- this.state = 493;
2459
+ this.state = 511;
2440
2460
  this.match(CircuitScriptParser.T__4);
2441
- this.state = 494;
2461
+ this.state = 512;
2442
2462
  this.data_expr(0);
2443
- this.state = 495;
2463
+ this.state = 513;
2444
2464
  this.match(CircuitScriptParser.T__5);
2445
2465
  }
2446
2466
  break;
@@ -2470,18 +2490,18 @@ class CircuitScriptParser extends antlr.Parser {
2470
2490
  let alternative;
2471
2491
  this.enterOuterAlt(localContext, 1);
2472
2492
  {
2473
- this.state = 500;
2493
+ this.state = 518;
2474
2494
  this.errorHandler.sync(this);
2475
2495
  _la = this.tokenStream.LA(1);
2476
- if (_la === 42 || _la === 44) {
2496
+ if (_la === 43 || _la === 45) {
2477
2497
  {
2478
- this.state = 499;
2498
+ this.state = 517;
2479
2499
  this.net_namespace_expr();
2480
2500
  }
2481
2501
  }
2482
- this.state = 502;
2502
+ this.state = 520;
2483
2503
  this.match(CircuitScriptParser.ID);
2484
- this.state = 504;
2504
+ this.state = 522;
2485
2505
  this.errorHandler.sync(this);
2486
2506
  alternative = 1;
2487
2507
  do {
@@ -2489,7 +2509,7 @@ class CircuitScriptParser extends antlr.Parser {
2489
2509
  case 1:
2490
2510
  {
2491
2511
  {
2492
- this.state = 503;
2512
+ this.state = 521;
2493
2513
  this.trailer_expr();
2494
2514
  }
2495
2515
  }
@@ -2497,7 +2517,7 @@ class CircuitScriptParser extends antlr.Parser {
2497
2517
  default:
2498
2518
  throw new antlr.NoViableAltException(this);
2499
2519
  }
2500
- this.state = 506;
2520
+ this.state = 524;
2501
2521
  this.errorHandler.sync(this);
2502
2522
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 51, this.context);
2503
2523
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
@@ -2524,23 +2544,23 @@ class CircuitScriptParser extends antlr.Parser {
2524
2544
  try {
2525
2545
  this.enterOuterAlt(localContext, 1);
2526
2546
  {
2527
- this.state = 509;
2547
+ this.state = 527;
2528
2548
  this.errorHandler.sync(this);
2529
2549
  _la = this.tokenStream.LA(1);
2530
- if (_la === 42) {
2550
+ if (_la === 43) {
2531
2551
  {
2532
- this.state = 508;
2552
+ this.state = 526;
2533
2553
  this.match(CircuitScriptParser.Addition);
2534
2554
  }
2535
2555
  }
2536
- this.state = 511;
2556
+ this.state = 529;
2537
2557
  this.match(CircuitScriptParser.Divide);
2538
- this.state = 513;
2558
+ this.state = 531;
2539
2559
  this.errorHandler.sync(this);
2540
2560
  switch (this.interpreter.adaptivePredict(this.tokenStream, 53, this.context)) {
2541
2561
  case 1:
2542
2562
  {
2543
- this.state = 512;
2563
+ this.state = 530;
2544
2564
  this.data_expr(0);
2545
2565
  }
2546
2566
  break;
@@ -2567,9 +2587,9 @@ class CircuitScriptParser extends antlr.Parser {
2567
2587
  try {
2568
2588
  this.enterOuterAlt(localContext, 1);
2569
2589
  {
2570
- this.state = 515;
2590
+ this.state = 533;
2571
2591
  this.match(CircuitScriptParser.Return);
2572
- this.state = 516;
2592
+ this.state = 534;
2573
2593
  this.data_expr(0);
2574
2594
  }
2575
2595
  }
@@ -2593,11 +2613,11 @@ class CircuitScriptParser extends antlr.Parser {
2593
2613
  try {
2594
2614
  this.enterOuterAlt(localContext, 1);
2595
2615
  {
2596
- this.state = 518;
2616
+ this.state = 536;
2597
2617
  this.property_key_expr();
2598
- this.state = 519;
2618
+ this.state = 537;
2599
2619
  this.match(CircuitScriptParser.T__0);
2600
- this.state = 520;
2620
+ this.state = 538;
2601
2621
  this.expressions_block();
2602
2622
  }
2603
2623
  }
@@ -2622,27 +2642,27 @@ class CircuitScriptParser extends antlr.Parser {
2622
2642
  try {
2623
2643
  this.enterOuterAlt(localContext, 1);
2624
2644
  {
2625
- this.state = 522;
2645
+ this.state = 540;
2626
2646
  this.match(CircuitScriptParser.Create);
2627
- this.state = 523;
2647
+ this.state = 541;
2628
2648
  this.match(CircuitScriptParser.Component);
2629
- this.state = 524;
2649
+ this.state = 542;
2630
2650
  this.match(CircuitScriptParser.T__0);
2631
- this.state = 525;
2651
+ this.state = 543;
2632
2652
  this.match(CircuitScriptParser.NEWLINE);
2633
- this.state = 526;
2653
+ this.state = 544;
2634
2654
  this.match(CircuitScriptParser.INDENT);
2635
- this.state = 529;
2655
+ this.state = 547;
2636
2656
  this.errorHandler.sync(this);
2637
2657
  _la = this.tokenStream.LA(1);
2638
2658
  do {
2639
2659
  {
2640
- this.state = 529;
2660
+ this.state = 547;
2641
2661
  this.errorHandler.sync(this);
2642
2662
  switch (this.tokenStream.LA(1)) {
2643
2663
  case CircuitScriptParser.NEWLINE:
2644
2664
  {
2645
- this.state = 527;
2665
+ this.state = 545;
2646
2666
  this.match(CircuitScriptParser.NEWLINE);
2647
2667
  }
2648
2668
  break;
@@ -2650,7 +2670,7 @@ class CircuitScriptParser extends antlr.Parser {
2650
2670
  case CircuitScriptParser.INTEGER_VALUE:
2651
2671
  case CircuitScriptParser.STRING_VALUE:
2652
2672
  {
2653
- this.state = 528;
2673
+ this.state = 546;
2654
2674
  this.property_expr();
2655
2675
  }
2656
2676
  break;
@@ -2658,11 +2678,11 @@ class CircuitScriptParser extends antlr.Parser {
2658
2678
  throw new antlr.NoViableAltException(this);
2659
2679
  }
2660
2680
  }
2661
- this.state = 531;
2681
+ this.state = 549;
2662
2682
  this.errorHandler.sync(this);
2663
2683
  _la = this.tokenStream.LA(1);
2664
- } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 275) !== 0));
2665
- this.state = 533;
2684
+ } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 275) !== 0));
2685
+ this.state = 551;
2666
2686
  this.match(CircuitScriptParser.DEDENT);
2667
2687
  }
2668
2688
  }
@@ -2687,21 +2707,21 @@ class CircuitScriptParser extends antlr.Parser {
2687
2707
  try {
2688
2708
  this.enterOuterAlt(localContext, 1);
2689
2709
  {
2690
- this.state = 535;
2710
+ this.state = 553;
2691
2711
  this.match(CircuitScriptParser.NEWLINE);
2692
- this.state = 536;
2712
+ this.state = 554;
2693
2713
  this.match(CircuitScriptParser.INDENT);
2694
- this.state = 539;
2714
+ this.state = 557;
2695
2715
  this.errorHandler.sync(this);
2696
2716
  _la = this.tokenStream.LA(1);
2697
2717
  do {
2698
2718
  {
2699
- this.state = 539;
2719
+ this.state = 557;
2700
2720
  this.errorHandler.sync(this);
2701
2721
  switch (this.tokenStream.LA(1)) {
2702
2722
  case CircuitScriptParser.NEWLINE:
2703
2723
  {
2704
- this.state = 537;
2724
+ this.state = 555;
2705
2725
  this.match(CircuitScriptParser.NEWLINE);
2706
2726
  }
2707
2727
  break;
@@ -2709,7 +2729,7 @@ class CircuitScriptParser extends antlr.Parser {
2709
2729
  case CircuitScriptParser.For:
2710
2730
  case CircuitScriptParser.ID:
2711
2731
  {
2712
- this.state = 538;
2732
+ this.state = 556;
2713
2733
  this.graphic_expr();
2714
2734
  }
2715
2735
  break;
@@ -2717,11 +2737,11 @@ class CircuitScriptParser extends antlr.Parser {
2717
2737
  throw new antlr.NoViableAltException(this);
2718
2738
  }
2719
2739
  }
2720
- this.state = 541;
2740
+ this.state = 559;
2721
2741
  this.errorHandler.sync(this);
2722
2742
  _la = this.tokenStream.LA(1);
2723
- } while (_la === 15 || _la === 25 || _la === 57 || _la === 65);
2724
- this.state = 543;
2743
+ } while (_la === 16 || _la === 26 || _la === 58 || _la === 66);
2744
+ this.state = 561;
2725
2745
  this.match(CircuitScriptParser.DEDENT);
2726
2746
  }
2727
2747
  }
@@ -2746,26 +2766,26 @@ class CircuitScriptParser extends antlr.Parser {
2746
2766
  try {
2747
2767
  this.enterOuterAlt(localContext, 1);
2748
2768
  {
2749
- this.state = 545;
2769
+ this.state = 563;
2750
2770
  this.match(CircuitScriptParser.Create);
2751
- this.state = 546;
2771
+ this.state = 564;
2752
2772
  this.match(CircuitScriptParser.Graphic);
2753
- this.state = 550;
2773
+ this.state = 568;
2754
2774
  this.errorHandler.sync(this);
2755
2775
  _la = this.tokenStream.LA(1);
2756
- if (_la === 53) {
2776
+ if (_la === 54) {
2757
2777
  {
2758
- this.state = 547;
2778
+ this.state = 565;
2759
2779
  this.match(CircuitScriptParser.OPEN_PAREN);
2760
- this.state = 548;
2780
+ this.state = 566;
2761
2781
  this.match(CircuitScriptParser.ID);
2762
- this.state = 549;
2782
+ this.state = 567;
2763
2783
  this.match(CircuitScriptParser.CLOSE_PAREN);
2764
2784
  }
2765
2785
  }
2766
- this.state = 552;
2786
+ this.state = 570;
2767
2787
  this.match(CircuitScriptParser.T__0);
2768
- this.state = 553;
2788
+ this.state = 571;
2769
2789
  this.graphic_expressions_block();
2770
2790
  }
2771
2791
  }
@@ -2790,49 +2810,49 @@ class CircuitScriptParser extends antlr.Parser {
2790
2810
  try {
2791
2811
  this.enterOuterAlt(localContext, 1);
2792
2812
  {
2793
- this.state = 555;
2813
+ this.state = 573;
2794
2814
  this.match(CircuitScriptParser.Create);
2795
- this.state = 556;
2815
+ this.state = 574;
2796
2816
  this.match(CircuitScriptParser.Module);
2797
- this.state = 557;
2817
+ this.state = 575;
2798
2818
  this.match(CircuitScriptParser.T__0);
2799
- this.state = 558;
2819
+ this.state = 576;
2800
2820
  this.match(CircuitScriptParser.NEWLINE);
2801
- this.state = 559;
2821
+ this.state = 577;
2802
2822
  this.match(CircuitScriptParser.INDENT);
2803
- this.state = 563;
2823
+ this.state = 581;
2804
2824
  this.errorHandler.sync(this);
2805
2825
  _la = this.tokenStream.LA(1);
2806
2826
  do {
2807
2827
  {
2808
- this.state = 563;
2828
+ this.state = 581;
2809
2829
  this.errorHandler.sync(this);
2810
2830
  switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context)) {
2811
2831
  case 1:
2812
2832
  {
2813
- this.state = 560;
2833
+ this.state = 578;
2814
2834
  this.match(CircuitScriptParser.NEWLINE);
2815
2835
  }
2816
2836
  break;
2817
2837
  case 2:
2818
2838
  {
2819
- this.state = 561;
2839
+ this.state = 579;
2820
2840
  this.property_expr();
2821
2841
  }
2822
2842
  break;
2823
2843
  case 3:
2824
2844
  {
2825
- this.state = 562;
2845
+ this.state = 580;
2826
2846
  this.property_block_expr();
2827
2847
  }
2828
2848
  break;
2829
2849
  }
2830
2850
  }
2831
- this.state = 565;
2851
+ this.state = 583;
2832
2852
  this.errorHandler.sync(this);
2833
2853
  _la = this.tokenStream.LA(1);
2834
- } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 275) !== 0));
2835
- this.state = 567;
2854
+ } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 275) !== 0));
2855
+ this.state = 585;
2836
2856
  this.match(CircuitScriptParser.DEDENT);
2837
2857
  }
2838
2858
  }
@@ -2858,21 +2878,21 @@ class CircuitScriptParser extends antlr.Parser {
2858
2878
  this.enterOuterAlt(localContext, 1);
2859
2879
  {
2860
2880
  {
2861
- this.state = 569;
2881
+ this.state = 587;
2862
2882
  this.match(CircuitScriptParser.NEWLINE);
2863
- this.state = 570;
2883
+ this.state = 588;
2864
2884
  this.match(CircuitScriptParser.INDENT);
2865
- this.state = 573;
2885
+ this.state = 591;
2866
2886
  this.errorHandler.sync(this);
2867
2887
  _la = this.tokenStream.LA(1);
2868
2888
  do {
2869
2889
  {
2870
- this.state = 573;
2890
+ this.state = 591;
2871
2891
  this.errorHandler.sync(this);
2872
2892
  switch (this.tokenStream.LA(1)) {
2873
2893
  case CircuitScriptParser.NEWLINE:
2874
2894
  {
2875
- this.state = 571;
2895
+ this.state = 589;
2876
2896
  this.match(CircuitScriptParser.NEWLINE);
2877
2897
  }
2878
2898
  break;
@@ -2880,7 +2900,7 @@ class CircuitScriptParser extends antlr.Parser {
2880
2900
  case CircuitScriptParser.INTEGER_VALUE:
2881
2901
  case CircuitScriptParser.STRING_VALUE:
2882
2902
  {
2883
- this.state = 572;
2903
+ this.state = 590;
2884
2904
  this.property_expr();
2885
2905
  }
2886
2906
  break;
@@ -2888,11 +2908,11 @@ class CircuitScriptParser extends antlr.Parser {
2888
2908
  throw new antlr.NoViableAltException(this);
2889
2909
  }
2890
2910
  }
2891
- this.state = 575;
2911
+ this.state = 593;
2892
2912
  this.errorHandler.sync(this);
2893
2913
  _la = this.tokenStream.LA(1);
2894
- } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 275) !== 0));
2895
- this.state = 577;
2914
+ } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 275) !== 0));
2915
+ this.state = 595;
2896
2916
  this.match(CircuitScriptParser.DEDENT);
2897
2917
  }
2898
2918
  }
@@ -2916,7 +2936,7 @@ class CircuitScriptParser extends antlr.Parser {
2916
2936
  this.enterRule(localContext, 102, CircuitScriptParser.RULE_graphic_expr);
2917
2937
  let _la;
2918
2938
  try {
2919
- this.state = 605;
2939
+ this.state = 623;
2920
2940
  this.errorHandler.sync(this);
2921
2941
  switch (this.tokenStream.LA(1)) {
2922
2942
  case CircuitScriptParser.Pin:
@@ -2924,47 +2944,47 @@ class CircuitScriptParser extends antlr.Parser {
2924
2944
  localContext = new GraphicCommandExprContext(localContext);
2925
2945
  this.enterOuterAlt(localContext, 1);
2926
2946
  {
2927
- this.state = 579;
2947
+ this.state = 597;
2928
2948
  localContext._command = this.tokenStream.LT(1);
2929
2949
  _la = this.tokenStream.LA(1);
2930
- if (!(_la === 15 || _la === 57)) {
2950
+ if (!(_la === 16 || _la === 58)) {
2931
2951
  localContext._command = this.errorHandler.recoverInline(this);
2932
2952
  }
2933
2953
  else {
2934
2954
  this.errorHandler.reportMatch(this);
2935
2955
  this.consume();
2936
2956
  }
2937
- this.state = 581;
2957
+ this.state = 599;
2938
2958
  this.errorHandler.sync(this);
2939
2959
  _la = this.tokenStream.LA(1);
2940
2960
  if (_la === 1) {
2941
2961
  {
2942
- this.state = 580;
2962
+ this.state = 598;
2943
2963
  this.match(CircuitScriptParser.T__0);
2944
2964
  }
2945
2965
  }
2946
- this.state = 589;
2966
+ this.state = 607;
2947
2967
  this.errorHandler.sync(this);
2948
2968
  switch (this.interpreter.adaptivePredict(this.tokenStream, 64, this.context)) {
2949
2969
  case 1:
2950
2970
  {
2951
- this.state = 583;
2971
+ this.state = 601;
2952
2972
  this.parameters();
2953
2973
  }
2954
2974
  break;
2955
2975
  case 2:
2956
2976
  {
2957
- this.state = 584;
2977
+ this.state = 602;
2958
2978
  this.match(CircuitScriptParser.OPEN_PAREN);
2959
- this.state = 585;
2979
+ this.state = 603;
2960
2980
  this.parameters();
2961
- this.state = 586;
2981
+ this.state = 604;
2962
2982
  this.match(CircuitScriptParser.CLOSE_PAREN);
2963
2983
  }
2964
2984
  break;
2965
2985
  case 3:
2966
2986
  {
2967
- this.state = 588;
2987
+ this.state = 606;
2968
2988
  this.nested_properties_inner();
2969
2989
  }
2970
2990
  break;
@@ -2975,33 +2995,33 @@ class CircuitScriptParser extends antlr.Parser {
2975
2995
  localContext = new GraphicForExprContext(localContext);
2976
2996
  this.enterOuterAlt(localContext, 2);
2977
2997
  {
2978
- this.state = 591;
2998
+ this.state = 609;
2979
2999
  this.match(CircuitScriptParser.For);
2980
- this.state = 592;
3000
+ this.state = 610;
2981
3001
  this.match(CircuitScriptParser.ID);
2982
- this.state = 597;
3002
+ this.state = 615;
2983
3003
  this.errorHandler.sync(this);
2984
3004
  _la = this.tokenStream.LA(1);
2985
3005
  while (_la === 2) {
2986
3006
  {
2987
3007
  {
2988
- this.state = 593;
3008
+ this.state = 611;
2989
3009
  this.match(CircuitScriptParser.T__1);
2990
- this.state = 594;
3010
+ this.state = 612;
2991
3011
  this.match(CircuitScriptParser.ID);
2992
3012
  }
2993
3013
  }
2994
- this.state = 599;
3014
+ this.state = 617;
2995
3015
  this.errorHandler.sync(this);
2996
3016
  _la = this.tokenStream.LA(1);
2997
3017
  }
2998
- this.state = 600;
3018
+ this.state = 618;
2999
3019
  this.match(CircuitScriptParser.In);
3000
- this.state = 601;
3020
+ this.state = 619;
3001
3021
  this.data_expr(0);
3002
- this.state = 602;
3022
+ this.state = 620;
3003
3023
  this.match(CircuitScriptParser.T__0);
3004
- this.state = 603;
3024
+ this.state = 621;
3005
3025
  this.graphic_expressions_block();
3006
3026
  }
3007
3027
  break;
@@ -3029,11 +3049,11 @@ class CircuitScriptParser extends antlr.Parser {
3029
3049
  try {
3030
3050
  this.enterOuterAlt(localContext, 1);
3031
3051
  {
3032
- this.state = 607;
3052
+ this.state = 625;
3033
3053
  this.property_key_expr();
3034
- this.state = 608;
3054
+ this.state = 626;
3035
3055
  this.match(CircuitScriptParser.T__0);
3036
- this.state = 609;
3056
+ this.state = 627;
3037
3057
  this.property_value_expr();
3038
3058
  }
3039
3059
  }
@@ -3058,9 +3078,9 @@ class CircuitScriptParser extends antlr.Parser {
3058
3078
  try {
3059
3079
  this.enterOuterAlt(localContext, 1);
3060
3080
  {
3061
- this.state = 611;
3081
+ this.state = 629;
3062
3082
  _la = this.tokenStream.LA(1);
3063
- if (!(((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 19) !== 0))) {
3083
+ if (!(((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 19) !== 0))) {
3064
3084
  this.errorHandler.recoverInline(this);
3065
3085
  }
3066
3086
  else {
@@ -3088,14 +3108,14 @@ class CircuitScriptParser extends antlr.Parser {
3088
3108
  this.enterRule(localContext, 108, CircuitScriptParser.RULE_property_value_expr);
3089
3109
  let _la;
3090
3110
  try {
3091
- this.state = 622;
3111
+ this.state = 640;
3092
3112
  this.errorHandler.sync(this);
3093
3113
  switch (this.tokenStream.LA(1)) {
3094
3114
  case CircuitScriptParser.NEWLINE:
3095
3115
  localContext = new Nested_propertiesContext(localContext);
3096
3116
  this.enterOuterAlt(localContext, 1);
3097
3117
  {
3098
- this.state = 613;
3118
+ this.state = 631;
3099
3119
  this.nested_properties_inner();
3100
3120
  }
3101
3121
  break;
@@ -3116,21 +3136,21 @@ class CircuitScriptParser extends antlr.Parser {
3116
3136
  localContext = new Single_line_propertyContext(localContext);
3117
3137
  this.enterOuterAlt(localContext, 2);
3118
3138
  {
3119
- this.state = 614;
3139
+ this.state = 632;
3120
3140
  this.data_expr(0);
3121
- this.state = 619;
3141
+ this.state = 637;
3122
3142
  this.errorHandler.sync(this);
3123
3143
  _la = this.tokenStream.LA(1);
3124
3144
  while (_la === 2) {
3125
3145
  {
3126
3146
  {
3127
- this.state = 615;
3147
+ this.state = 633;
3128
3148
  this.match(CircuitScriptParser.T__1);
3129
- this.state = 616;
3149
+ this.state = 634;
3130
3150
  this.data_expr(0);
3131
3151
  }
3132
3152
  }
3133
- this.state = 621;
3153
+ this.state = 639;
3134
3154
  this.errorHandler.sync(this);
3135
3155
  _la = this.tokenStream.LA(1);
3136
3156
  }
@@ -3158,27 +3178,27 @@ class CircuitScriptParser extends antlr.Parser {
3158
3178
  let localContext = new Wire_atom_exprContext(this.context, this.state);
3159
3179
  this.enterRule(localContext, 110, CircuitScriptParser.RULE_wire_atom_expr);
3160
3180
  try {
3161
- this.state = 630;
3181
+ this.state = 648;
3162
3182
  this.errorHandler.sync(this);
3163
3183
  switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context)) {
3164
3184
  case 1:
3165
3185
  localContext = new Wire_expr_direction_valueContext(localContext);
3166
3186
  this.enterOuterAlt(localContext, 1);
3167
3187
  {
3168
- this.state = 624;
3188
+ this.state = 642;
3169
3189
  this.match(CircuitScriptParser.ID);
3170
- this.state = 627;
3190
+ this.state = 645;
3171
3191
  this.errorHandler.sync(this);
3172
3192
  switch (this.interpreter.adaptivePredict(this.tokenStream, 69, this.context)) {
3173
3193
  case 1:
3174
3194
  {
3175
- this.state = 625;
3195
+ this.state = 643;
3176
3196
  this.match(CircuitScriptParser.INTEGER_VALUE);
3177
3197
  }
3178
3198
  break;
3179
3199
  case 2:
3180
3200
  {
3181
- this.state = 626;
3201
+ this.state = 644;
3182
3202
  this.data_expr(0);
3183
3203
  }
3184
3204
  break;
@@ -3189,7 +3209,7 @@ class CircuitScriptParser extends antlr.Parser {
3189
3209
  localContext = new Wire_expr_direction_onlyContext(localContext);
3190
3210
  this.enterOuterAlt(localContext, 2);
3191
3211
  {
3192
- this.state = 629;
3212
+ this.state = 647;
3193
3213
  this.match(CircuitScriptParser.ID);
3194
3214
  }
3195
3215
  break;
@@ -3216,21 +3236,21 @@ class CircuitScriptParser extends antlr.Parser {
3216
3236
  let alternative;
3217
3237
  this.enterOuterAlt(localContext, 1);
3218
3238
  {
3219
- this.state = 632;
3239
+ this.state = 650;
3220
3240
  this.match(CircuitScriptParser.Wire);
3221
- this.state = 636;
3241
+ this.state = 654;
3222
3242
  this.errorHandler.sync(this);
3223
3243
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context);
3224
3244
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3225
3245
  if (alternative === 1) {
3226
3246
  {
3227
3247
  {
3228
- this.state = 633;
3248
+ this.state = 651;
3229
3249
  this.wire_atom_expr();
3230
3250
  }
3231
3251
  }
3232
3252
  }
3233
- this.state = 638;
3253
+ this.state = 656;
3234
3254
  this.errorHandler.sync(this);
3235
3255
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context);
3236
3256
  }
@@ -3257,39 +3277,39 @@ class CircuitScriptParser extends antlr.Parser {
3257
3277
  try {
3258
3278
  this.enterOuterAlt(localContext, 1);
3259
3279
  {
3260
- this.state = 639;
3280
+ this.state = 657;
3261
3281
  this.match(CircuitScriptParser.T__4);
3262
- this.state = 650;
3282
+ this.state = 668;
3263
3283
  this.errorHandler.sync(this);
3264
3284
  _la = this.tokenStream.LA(1);
3265
- while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147484704) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2082823) !== 0)) {
3285
+ while (_la === 5 || _la === 11 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4265621505) !== 0)) {
3266
3286
  {
3267
3287
  {
3268
- this.state = 640;
3288
+ this.state = 658;
3269
3289
  this.data_expr(0);
3270
- this.state = 645;
3290
+ this.state = 663;
3271
3291
  this.errorHandler.sync(this);
3272
3292
  _la = this.tokenStream.LA(1);
3273
3293
  while (_la === 2) {
3274
3294
  {
3275
3295
  {
3276
- this.state = 641;
3296
+ this.state = 659;
3277
3297
  this.match(CircuitScriptParser.T__1);
3278
- this.state = 642;
3298
+ this.state = 660;
3279
3299
  this.data_expr(0);
3280
3300
  }
3281
3301
  }
3282
- this.state = 647;
3302
+ this.state = 665;
3283
3303
  this.errorHandler.sync(this);
3284
3304
  _la = this.tokenStream.LA(1);
3285
3305
  }
3286
3306
  }
3287
3307
  }
3288
- this.state = 652;
3308
+ this.state = 670;
3289
3309
  this.errorHandler.sync(this);
3290
3310
  _la = this.tokenStream.LA(1);
3291
3311
  }
3292
- this.state = 653;
3312
+ this.state = 671;
3293
3313
  this.match(CircuitScriptParser.T__5);
3294
3314
  }
3295
3315
  }
@@ -3313,20 +3333,20 @@ class CircuitScriptParser extends antlr.Parser {
3313
3333
  try {
3314
3334
  this.enterOuterAlt(localContext, 1);
3315
3335
  {
3316
- this.state = 655;
3336
+ this.state = 673;
3317
3337
  this.match(CircuitScriptParser.Point);
3318
- this.state = 658;
3338
+ this.state = 676;
3319
3339
  this.errorHandler.sync(this);
3320
3340
  switch (this.interpreter.adaptivePredict(this.tokenStream, 74, this.context)) {
3321
3341
  case 1:
3322
3342
  {
3323
- this.state = 656;
3343
+ this.state = 674;
3324
3344
  this.match(CircuitScriptParser.ID);
3325
3345
  }
3326
3346
  break;
3327
3347
  case 2:
3328
3348
  {
3329
- this.state = 657;
3349
+ this.state = 675;
3330
3350
  this.data_expr(0);
3331
3351
  }
3332
3352
  break;
@@ -3353,9 +3373,9 @@ class CircuitScriptParser extends antlr.Parser {
3353
3373
  try {
3354
3374
  this.enterOuterAlt(localContext, 1);
3355
3375
  {
3356
- this.state = 660;
3376
+ this.state = 678;
3357
3377
  this.match(CircuitScriptParser.Import);
3358
- this.state = 661;
3378
+ this.state = 679;
3359
3379
  this.match(CircuitScriptParser.ID);
3360
3380
  }
3361
3381
  }
@@ -3380,18 +3400,18 @@ class CircuitScriptParser extends antlr.Parser {
3380
3400
  try {
3381
3401
  this.enterOuterAlt(localContext, 1);
3382
3402
  {
3383
- this.state = 663;
3403
+ this.state = 681;
3384
3404
  _la = this.tokenStream.LA(1);
3385
- if (!(_la === 32 || _la === 33)) {
3405
+ if (!(_la === 33 || _la === 34)) {
3386
3406
  this.errorHandler.recoverInline(this);
3387
3407
  }
3388
3408
  else {
3389
3409
  this.errorHandler.reportMatch(this);
3390
3410
  this.consume();
3391
3411
  }
3392
- this.state = 664;
3412
+ this.state = 682;
3393
3413
  this.match(CircuitScriptParser.T__0);
3394
- this.state = 665;
3414
+ this.state = 683;
3395
3415
  this.expressions_block();
3396
3416
  }
3397
3417
  }
@@ -3417,36 +3437,36 @@ class CircuitScriptParser extends antlr.Parser {
3417
3437
  let alternative;
3418
3438
  this.enterOuterAlt(localContext, 1);
3419
3439
  {
3420
- this.state = 667;
3440
+ this.state = 685;
3421
3441
  this.match(CircuitScriptParser.If);
3422
- this.state = 668;
3442
+ this.state = 686;
3423
3443
  this.data_expr(0);
3424
- this.state = 669;
3444
+ this.state = 687;
3425
3445
  this.match(CircuitScriptParser.T__0);
3426
- this.state = 670;
3446
+ this.state = 688;
3427
3447
  this.expressions_block();
3428
- this.state = 674;
3448
+ this.state = 692;
3429
3449
  this.errorHandler.sync(this);
3430
3450
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 75, this.context);
3431
3451
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3432
3452
  if (alternative === 1) {
3433
3453
  {
3434
3454
  {
3435
- this.state = 671;
3455
+ this.state = 689;
3436
3456
  this.if_inner_expr();
3437
3457
  }
3438
3458
  }
3439
3459
  }
3440
- this.state = 676;
3460
+ this.state = 694;
3441
3461
  this.errorHandler.sync(this);
3442
3462
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 75, this.context);
3443
3463
  }
3444
- this.state = 678;
3464
+ this.state = 696;
3445
3465
  this.errorHandler.sync(this);
3446
3466
  _la = this.tokenStream.LA(1);
3447
- if (_la === 30) {
3467
+ if (_la === 31) {
3448
3468
  {
3449
- this.state = 677;
3469
+ this.state = 695;
3450
3470
  this.else_expr();
3451
3471
  }
3452
3472
  }
@@ -3472,15 +3492,15 @@ class CircuitScriptParser extends antlr.Parser {
3472
3492
  try {
3473
3493
  this.enterOuterAlt(localContext, 1);
3474
3494
  {
3475
- this.state = 680;
3495
+ this.state = 698;
3476
3496
  this.match(CircuitScriptParser.Else);
3477
- this.state = 681;
3497
+ this.state = 699;
3478
3498
  this.match(CircuitScriptParser.If);
3479
- this.state = 682;
3499
+ this.state = 700;
3480
3500
  this.data_expr(0);
3481
- this.state = 683;
3501
+ this.state = 701;
3482
3502
  this.match(CircuitScriptParser.T__0);
3483
- this.state = 684;
3503
+ this.state = 702;
3484
3504
  this.expressions_block();
3485
3505
  }
3486
3506
  }
@@ -3504,11 +3524,11 @@ class CircuitScriptParser extends antlr.Parser {
3504
3524
  try {
3505
3525
  this.enterOuterAlt(localContext, 1);
3506
3526
  {
3507
- this.state = 686;
3527
+ this.state = 704;
3508
3528
  this.match(CircuitScriptParser.Else);
3509
- this.state = 687;
3529
+ this.state = 705;
3510
3530
  this.match(CircuitScriptParser.T__0);
3511
- this.state = 688;
3531
+ this.state = 706;
3512
3532
  this.expressions_block();
3513
3533
  }
3514
3534
  }
@@ -3532,13 +3552,13 @@ class CircuitScriptParser extends antlr.Parser {
3532
3552
  try {
3533
3553
  this.enterOuterAlt(localContext, 1);
3534
3554
  {
3535
- this.state = 690;
3555
+ this.state = 708;
3536
3556
  this.match(CircuitScriptParser.While);
3537
- this.state = 691;
3557
+ this.state = 709;
3538
3558
  this.data_expr(0);
3539
- this.state = 692;
3559
+ this.state = 710;
3540
3560
  this.match(CircuitScriptParser.T__0);
3541
- this.state = 693;
3561
+ this.state = 711;
3542
3562
  this.expressions_block();
3543
3563
  }
3544
3564
  }
@@ -3563,33 +3583,33 @@ class CircuitScriptParser extends antlr.Parser {
3563
3583
  try {
3564
3584
  this.enterOuterAlt(localContext, 1);
3565
3585
  {
3566
- this.state = 695;
3586
+ this.state = 713;
3567
3587
  this.match(CircuitScriptParser.For);
3568
- this.state = 696;
3588
+ this.state = 714;
3569
3589
  this.match(CircuitScriptParser.ID);
3570
- this.state = 701;
3590
+ this.state = 719;
3571
3591
  this.errorHandler.sync(this);
3572
3592
  _la = this.tokenStream.LA(1);
3573
3593
  while (_la === 2) {
3574
3594
  {
3575
3595
  {
3576
- this.state = 697;
3596
+ this.state = 715;
3577
3597
  this.match(CircuitScriptParser.T__1);
3578
- this.state = 698;
3598
+ this.state = 716;
3579
3599
  this.match(CircuitScriptParser.ID);
3580
3600
  }
3581
3601
  }
3582
- this.state = 703;
3602
+ this.state = 721;
3583
3603
  this.errorHandler.sync(this);
3584
3604
  _la = this.tokenStream.LA(1);
3585
3605
  }
3586
- this.state = 704;
3606
+ this.state = 722;
3587
3607
  this.match(CircuitScriptParser.In);
3588
- this.state = 705;
3608
+ this.state = 723;
3589
3609
  this.data_expr(0);
3590
- this.state = 706;
3610
+ this.state = 724;
3591
3611
  this.match(CircuitScriptParser.T__0);
3592
- this.state = 707;
3612
+ this.state = 725;
3593
3613
  this.expressions_block();
3594
3614
  }
3595
3615
  }
@@ -3607,16 +3627,39 @@ class CircuitScriptParser extends antlr.Parser {
3607
3627
  }
3608
3628
  return localContext;
3609
3629
  }
3610
- annotation_comment_expr() {
3611
- let localContext = new Annotation_comment_exprContext(this.context, this.state);
3612
- this.enterRule(localContext, 132, CircuitScriptParser.RULE_annotation_comment_expr);
3630
+ part_set_expr() {
3631
+ let localContext = new Part_set_exprContext(this.context, this.state);
3632
+ this.enterRule(localContext, 132, CircuitScriptParser.RULE_part_set_expr);
3633
+ let _la;
3613
3634
  try {
3614
3635
  this.enterOuterAlt(localContext, 1);
3615
3636
  {
3616
- this.state = 709;
3617
- this.match(CircuitScriptParser.ANNOTATION_START);
3618
- this.state = 710;
3619
- this.match(CircuitScriptParser.ID);
3637
+ this.state = 727;
3638
+ this.match(CircuitScriptParser.T__7);
3639
+ this.state = 728;
3640
+ this.match(CircuitScriptParser.T__0);
3641
+ this.state = 729;
3642
+ this.data_expr(0);
3643
+ this.state = 734;
3644
+ this.errorHandler.sync(this);
3645
+ _la = this.tokenStream.LA(1);
3646
+ while (_la === 2) {
3647
+ {
3648
+ {
3649
+ this.state = 730;
3650
+ this.match(CircuitScriptParser.T__1);
3651
+ this.state = 731;
3652
+ this.data_expr(0);
3653
+ }
3654
+ }
3655
+ this.state = 736;
3656
+ this.errorHandler.sync(this);
3657
+ _la = this.tokenStream.LA(1);
3658
+ }
3659
+ this.state = 737;
3660
+ this.match(CircuitScriptParser.T__0);
3661
+ this.state = 738;
3662
+ this.part_match_block();
3620
3663
  }
3621
3664
  }
3622
3665
  catch (re) {
@@ -3633,126 +3676,488 @@ class CircuitScriptParser extends antlr.Parser {
3633
3676
  }
3634
3677
  return localContext;
3635
3678
  }
3636
- sempred(localContext, ruleIndex, predIndex) {
3637
- switch (ruleIndex) {
3638
- case 32:
3639
- return this.data_expr_sempred(localContext, predIndex);
3679
+ part_set_key() {
3680
+ let localContext = new Part_set_keyContext(this.context, this.state);
3681
+ this.enterRule(localContext, 134, CircuitScriptParser.RULE_part_set_key);
3682
+ let _la;
3683
+ try {
3684
+ this.enterOuterAlt(localContext, 1);
3685
+ {
3686
+ this.state = 740;
3687
+ _la = this.tokenStream.LA(1);
3688
+ if (!(((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 59) !== 0))) {
3689
+ this.errorHandler.recoverInline(this);
3690
+ }
3691
+ else {
3692
+ this.errorHandler.reportMatch(this);
3693
+ this.consume();
3694
+ }
3695
+ }
3640
3696
  }
3641
- return true;
3642
- }
3643
- data_expr_sempred(localContext, predIndex) {
3644
- switch (predIndex) {
3645
- case 0:
3646
- return this.precpred(this.context, 10);
3647
- case 1:
3648
- return this.precpred(this.context, 9);
3649
- case 2:
3650
- return this.precpred(this.context, 8);
3651
- case 3:
3652
- return this.precpred(this.context, 7);
3653
- case 4:
3654
- return this.precpred(this.context, 1);
3697
+ catch (re) {
3698
+ if (re instanceof antlr.RecognitionException) {
3699
+ this.errorHandler.reportError(this, re);
3700
+ this.errorHandler.recover(this, re);
3701
+ }
3702
+ else {
3703
+ throw re;
3704
+ }
3655
3705
  }
3656
- return true;
3657
- }
3658
- static get _ATN() {
3659
- if (!CircuitScriptParser.__ATN) {
3660
- CircuitScriptParser.__ATN = new antlr.ATNDeserializer().deserialize(CircuitScriptParser._serializedATN);
3706
+ finally {
3707
+ this.exitRule();
3661
3708
  }
3662
- return CircuitScriptParser.__ATN;
3663
- }
3664
- get vocabulary() {
3665
- return CircuitScriptParser.vocabulary;
3709
+ return localContext;
3666
3710
  }
3667
- }
3668
- exports.CircuitScriptParser = CircuitScriptParser;
3669
- CircuitScriptParser.T__0 = 1;
3670
- CircuitScriptParser.T__1 = 2;
3671
- CircuitScriptParser.T__2 = 3;
3672
- CircuitScriptParser.T__3 = 4;
3673
- CircuitScriptParser.T__4 = 5;
3674
- CircuitScriptParser.T__5 = 6;
3675
- CircuitScriptParser.T__6 = 7;
3676
- CircuitScriptParser.Break = 8;
3677
- CircuitScriptParser.Branch = 9;
3678
- CircuitScriptParser.Create = 10;
3679
- CircuitScriptParser.Component = 11;
3680
- CircuitScriptParser.Graphic = 12;
3681
- CircuitScriptParser.Module = 13;
3682
- CircuitScriptParser.Wire = 14;
3683
- CircuitScriptParser.Pin = 15;
3684
- CircuitScriptParser.Add = 16;
3685
- CircuitScriptParser.At = 17;
3686
- CircuitScriptParser.To = 18;
3687
- CircuitScriptParser.Point = 19;
3688
- CircuitScriptParser.Join = 20;
3689
- CircuitScriptParser.Parallel = 21;
3690
- CircuitScriptParser.Return = 22;
3691
- CircuitScriptParser.Define = 23;
3692
- CircuitScriptParser.Import = 24;
3693
- CircuitScriptParser.For = 25;
3694
- CircuitScriptParser.In = 26;
3695
- CircuitScriptParser.While = 27;
3696
- CircuitScriptParser.Continue = 28;
3697
- CircuitScriptParser.If = 29;
3698
- CircuitScriptParser.Else = 30;
3699
- CircuitScriptParser.Not = 31;
3700
- CircuitScriptParser.Frame = 32;
3701
- CircuitScriptParser.Sheet = 33;
3702
- CircuitScriptParser.Equals = 34;
3703
- CircuitScriptParser.NotEquals = 35;
3704
- CircuitScriptParser.GreaterThan = 36;
3705
- CircuitScriptParser.GreatOrEqualThan = 37;
3706
- CircuitScriptParser.LessThan = 38;
3707
- CircuitScriptParser.LessOrEqualThan = 39;
3708
- CircuitScriptParser.LogicalAnd = 40;
3709
- CircuitScriptParser.LogicalOr = 41;
3710
- CircuitScriptParser.Addition = 42;
3711
- CircuitScriptParser.Minus = 43;
3712
- CircuitScriptParser.Divide = 44;
3713
- CircuitScriptParser.Multiply = 45;
3714
- CircuitScriptParser.Modulus = 46;
3715
- CircuitScriptParser.AdditionAssign = 47;
3716
- CircuitScriptParser.MinusAssign = 48;
3717
- CircuitScriptParser.DivideAssign = 49;
3718
- CircuitScriptParser.MultiplyAssign = 50;
3719
- CircuitScriptParser.ModulusAssign = 51;
3720
- CircuitScriptParser.ANNOTATION_START = 52;
3721
- CircuitScriptParser.OPEN_PAREN = 53;
3722
- CircuitScriptParser.CLOSE_PAREN = 54;
3723
- CircuitScriptParser.NOT_CONNECTED = 55;
3724
- CircuitScriptParser.BOOLEAN_VALUE = 56;
3725
- CircuitScriptParser.ID = 57;
3726
- CircuitScriptParser.INTEGER_VALUE = 58;
3727
- CircuitScriptParser.DECIMAL_VALUE = 59;
3728
- CircuitScriptParser.NUMERIC_VALUE = 60;
3729
- CircuitScriptParser.STRING_VALUE = 61;
3730
- CircuitScriptParser.PERCENTAGE_VALUE = 62;
3731
- CircuitScriptParser.ALPHA_NUMERIC = 63;
3732
- CircuitScriptParser.WS = 64;
3733
- CircuitScriptParser.NEWLINE = 65;
3734
- CircuitScriptParser.COMMENT = 66;
3735
- CircuitScriptParser.INDENT = 67;
3736
- CircuitScriptParser.DEDENT = 68;
3737
- CircuitScriptParser.RULE_script = 0;
3738
- CircuitScriptParser.RULE_expression = 1;
3739
- CircuitScriptParser.RULE_flow_expressions = 2;
3740
- CircuitScriptParser.RULE_graph_expressions = 3;
3741
- CircuitScriptParser.RULE_graph_linear_expression = 4;
3742
- CircuitScriptParser.RULE_expressions_block = 5;
3743
- CircuitScriptParser.RULE_path_block = 6;
3744
- CircuitScriptParser.RULE_property_set_expr2 = 7;
3745
- CircuitScriptParser.RULE_assignment_expr2 = 8;
3746
- CircuitScriptParser.RULE_pin_select_expr = 9;
3747
- CircuitScriptParser.RULE_component_modifier_expr = 10;
3748
- CircuitScriptParser.RULE_data_expr_with_assignment = 11;
3749
- CircuitScriptParser.RULE_add_component_expr = 12;
3750
- CircuitScriptParser.RULE_component_select_expr = 13;
3751
- CircuitScriptParser.RULE_pin_select_expr2 = 14;
3752
- CircuitScriptParser.RULE_at_component_expr = 15;
3753
- CircuitScriptParser.RULE_to_component_expr = 16;
3754
- CircuitScriptParser.RULE_at_to_multiple_expr = 17;
3755
- CircuitScriptParser.RULE_at_to_multiple_line_expr = 18;
3711
+ part_match_block() {
3712
+ let localContext = new Part_match_blockContext(this.context, this.state);
3713
+ this.enterRule(localContext, 136, CircuitScriptParser.RULE_part_match_block);
3714
+ let _la;
3715
+ try {
3716
+ this.enterOuterAlt(localContext, 1);
3717
+ {
3718
+ this.state = 742;
3719
+ this.match(CircuitScriptParser.NEWLINE);
3720
+ this.state = 743;
3721
+ this.match(CircuitScriptParser.INDENT);
3722
+ this.state = 746;
3723
+ this.errorHandler.sync(this);
3724
+ _la = this.tokenStream.LA(1);
3725
+ do {
3726
+ {
3727
+ this.state = 746;
3728
+ this.errorHandler.sync(this);
3729
+ switch (this.tokenStream.LA(1)) {
3730
+ case CircuitScriptParser.NEWLINE:
3731
+ {
3732
+ this.state = 744;
3733
+ this.match(CircuitScriptParser.NEWLINE);
3734
+ }
3735
+ break;
3736
+ case CircuitScriptParser.ID:
3737
+ case CircuitScriptParser.INTEGER_VALUE:
3738
+ case CircuitScriptParser.NUMERIC_VALUE:
3739
+ case CircuitScriptParser.STRING_VALUE:
3740
+ case CircuitScriptParser.PERCENTAGE_VALUE:
3741
+ {
3742
+ this.state = 745;
3743
+ this.part_sub_expr();
3744
+ }
3745
+ break;
3746
+ default:
3747
+ throw new antlr.NoViableAltException(this);
3748
+ }
3749
+ }
3750
+ this.state = 748;
3751
+ this.errorHandler.sync(this);
3752
+ _la = this.tokenStream.LA(1);
3753
+ } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 315) !== 0));
3754
+ this.state = 750;
3755
+ this.match(CircuitScriptParser.DEDENT);
3756
+ }
3757
+ }
3758
+ catch (re) {
3759
+ if (re instanceof antlr.RecognitionException) {
3760
+ this.errorHandler.reportError(this, re);
3761
+ this.errorHandler.recover(this, re);
3762
+ }
3763
+ else {
3764
+ throw re;
3765
+ }
3766
+ }
3767
+ finally {
3768
+ this.exitRule();
3769
+ }
3770
+ return localContext;
3771
+ }
3772
+ part_sub_expr() {
3773
+ let localContext = new Part_sub_exprContext(this.context, this.state);
3774
+ this.enterRule(localContext, 138, CircuitScriptParser.RULE_part_sub_expr);
3775
+ try {
3776
+ this.state = 755;
3777
+ this.errorHandler.sync(this);
3778
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 81, this.context)) {
3779
+ case 1:
3780
+ this.enterOuterAlt(localContext, 1);
3781
+ {
3782
+ this.state = 752;
3783
+ this.part_condition_expr();
3784
+ }
3785
+ break;
3786
+ case 2:
3787
+ this.enterOuterAlt(localContext, 2);
3788
+ {
3789
+ this.state = 753;
3790
+ this.part_value_expr();
3791
+ }
3792
+ break;
3793
+ case 3:
3794
+ this.enterOuterAlt(localContext, 3);
3795
+ {
3796
+ this.state = 754;
3797
+ this.part_condition_key_only_expr();
3798
+ }
3799
+ break;
3800
+ }
3801
+ }
3802
+ catch (re) {
3803
+ if (re instanceof antlr.RecognitionException) {
3804
+ this.errorHandler.reportError(this, re);
3805
+ this.errorHandler.recover(this, re);
3806
+ }
3807
+ else {
3808
+ throw re;
3809
+ }
3810
+ }
3811
+ finally {
3812
+ this.exitRule();
3813
+ }
3814
+ return localContext;
3815
+ }
3816
+ part_condition_expr() {
3817
+ let localContext = new Part_condition_exprContext(this.context, this.state);
3818
+ this.enterRule(localContext, 140, CircuitScriptParser.RULE_part_condition_expr);
3819
+ let _la;
3820
+ try {
3821
+ let alternative;
3822
+ this.enterOuterAlt(localContext, 1);
3823
+ {
3824
+ this.state = 757;
3825
+ localContext._part_set_key = this.part_set_key();
3826
+ localContext._key_id.push(localContext._part_set_key);
3827
+ this.state = 758;
3828
+ this.match(CircuitScriptParser.T__0);
3829
+ this.state = 759;
3830
+ localContext._data_expr = this.data_expr(0);
3831
+ localContext._values.push(localContext._data_expr);
3832
+ this.state = 767;
3833
+ this.errorHandler.sync(this);
3834
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 82, this.context);
3835
+ while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3836
+ if (alternative === 1) {
3837
+ {
3838
+ {
3839
+ this.state = 760;
3840
+ this.match(CircuitScriptParser.T__1);
3841
+ this.state = 761;
3842
+ localContext._part_set_key = this.part_set_key();
3843
+ localContext._key_id.push(localContext._part_set_key);
3844
+ this.state = 762;
3845
+ this.match(CircuitScriptParser.T__0);
3846
+ this.state = 763;
3847
+ localContext._data_expr = this.data_expr(0);
3848
+ localContext._values.push(localContext._data_expr);
3849
+ }
3850
+ }
3851
+ }
3852
+ this.state = 769;
3853
+ this.errorHandler.sync(this);
3854
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 82, this.context);
3855
+ }
3856
+ this.state = 774;
3857
+ this.errorHandler.sync(this);
3858
+ _la = this.tokenStream.LA(1);
3859
+ while (_la === 2) {
3860
+ {
3861
+ {
3862
+ this.state = 770;
3863
+ this.match(CircuitScriptParser.T__1);
3864
+ this.state = 771;
3865
+ localContext._id_only = this.part_set_key();
3866
+ }
3867
+ }
3868
+ this.state = 776;
3869
+ this.errorHandler.sync(this);
3870
+ _la = this.tokenStream.LA(1);
3871
+ }
3872
+ this.state = 777;
3873
+ this.match(CircuitScriptParser.T__0);
3874
+ this.state = 787;
3875
+ this.errorHandler.sync(this);
3876
+ switch (this.tokenStream.LA(1)) {
3877
+ case CircuitScriptParser.NEWLINE:
3878
+ {
3879
+ this.state = 778;
3880
+ this.part_match_block();
3881
+ }
3882
+ break;
3883
+ case CircuitScriptParser.T__4:
3884
+ case CircuitScriptParser.Create:
3885
+ case CircuitScriptParser.Not:
3886
+ case CircuitScriptParser.Addition:
3887
+ case CircuitScriptParser.Minus:
3888
+ case CircuitScriptParser.Divide:
3889
+ case CircuitScriptParser.OPEN_PAREN:
3890
+ case CircuitScriptParser.BOOLEAN_VALUE:
3891
+ case CircuitScriptParser.ID:
3892
+ case CircuitScriptParser.INTEGER_VALUE:
3893
+ case CircuitScriptParser.DECIMAL_VALUE:
3894
+ case CircuitScriptParser.NUMERIC_VALUE:
3895
+ case CircuitScriptParser.STRING_VALUE:
3896
+ case CircuitScriptParser.PERCENTAGE_VALUE:
3897
+ {
3898
+ {
3899
+ this.state = 779;
3900
+ localContext._data_expr = this.data_expr(0);
3901
+ localContext._last_data.push(localContext._data_expr);
3902
+ this.state = 784;
3903
+ this.errorHandler.sync(this);
3904
+ _la = this.tokenStream.LA(1);
3905
+ while (_la === 2) {
3906
+ {
3907
+ {
3908
+ this.state = 780;
3909
+ this.match(CircuitScriptParser.T__1);
3910
+ this.state = 781;
3911
+ localContext._data_expr = this.data_expr(0);
3912
+ localContext._last_data.push(localContext._data_expr);
3913
+ }
3914
+ }
3915
+ this.state = 786;
3916
+ this.errorHandler.sync(this);
3917
+ _la = this.tokenStream.LA(1);
3918
+ }
3919
+ }
3920
+ }
3921
+ break;
3922
+ default:
3923
+ throw new antlr.NoViableAltException(this);
3924
+ }
3925
+ }
3926
+ }
3927
+ catch (re) {
3928
+ if (re instanceof antlr.RecognitionException) {
3929
+ this.errorHandler.reportError(this, re);
3930
+ this.errorHandler.recover(this, re);
3931
+ }
3932
+ else {
3933
+ throw re;
3934
+ }
3935
+ }
3936
+ finally {
3937
+ this.exitRule();
3938
+ }
3939
+ return localContext;
3940
+ }
3941
+ part_condition_key_only_expr() {
3942
+ let localContext = new Part_condition_key_only_exprContext(this.context, this.state);
3943
+ this.enterRule(localContext, 142, CircuitScriptParser.RULE_part_condition_key_only_expr);
3944
+ try {
3945
+ this.enterOuterAlt(localContext, 1);
3946
+ {
3947
+ this.state = 789;
3948
+ this.part_set_key();
3949
+ this.state = 790;
3950
+ this.match(CircuitScriptParser.T__0);
3951
+ this.state = 791;
3952
+ this.part_match_block();
3953
+ }
3954
+ }
3955
+ catch (re) {
3956
+ if (re instanceof antlr.RecognitionException) {
3957
+ this.errorHandler.reportError(this, re);
3958
+ this.errorHandler.recover(this, re);
3959
+ }
3960
+ else {
3961
+ throw re;
3962
+ }
3963
+ }
3964
+ finally {
3965
+ this.exitRule();
3966
+ }
3967
+ return localContext;
3968
+ }
3969
+ part_value_expr() {
3970
+ let localContext = new Part_value_exprContext(this.context, this.state);
3971
+ this.enterRule(localContext, 144, CircuitScriptParser.RULE_part_value_expr);
3972
+ let _la;
3973
+ try {
3974
+ this.enterOuterAlt(localContext, 1);
3975
+ {
3976
+ this.state = 793;
3977
+ this.part_set_key();
3978
+ this.state = 794;
3979
+ this.match(CircuitScriptParser.T__0);
3980
+ this.state = 795;
3981
+ this.data_expr(0);
3982
+ this.state = 800;
3983
+ this.errorHandler.sync(this);
3984
+ _la = this.tokenStream.LA(1);
3985
+ while (_la === 2) {
3986
+ {
3987
+ {
3988
+ this.state = 796;
3989
+ this.match(CircuitScriptParser.T__1);
3990
+ this.state = 797;
3991
+ this.data_expr(0);
3992
+ }
3993
+ }
3994
+ this.state = 802;
3995
+ this.errorHandler.sync(this);
3996
+ _la = this.tokenStream.LA(1);
3997
+ }
3998
+ }
3999
+ }
4000
+ catch (re) {
4001
+ if (re instanceof antlr.RecognitionException) {
4002
+ this.errorHandler.reportError(this, re);
4003
+ this.errorHandler.recover(this, re);
4004
+ }
4005
+ else {
4006
+ throw re;
4007
+ }
4008
+ }
4009
+ finally {
4010
+ this.exitRule();
4011
+ }
4012
+ return localContext;
4013
+ }
4014
+ annotation_comment_expr() {
4015
+ let localContext = new Annotation_comment_exprContext(this.context, this.state);
4016
+ this.enterRule(localContext, 146, CircuitScriptParser.RULE_annotation_comment_expr);
4017
+ try {
4018
+ this.enterOuterAlt(localContext, 1);
4019
+ {
4020
+ this.state = 803;
4021
+ this.match(CircuitScriptParser.ANNOTATION_START);
4022
+ this.state = 804;
4023
+ this.match(CircuitScriptParser.ID);
4024
+ }
4025
+ }
4026
+ catch (re) {
4027
+ if (re instanceof antlr.RecognitionException) {
4028
+ this.errorHandler.reportError(this, re);
4029
+ this.errorHandler.recover(this, re);
4030
+ }
4031
+ else {
4032
+ throw re;
4033
+ }
4034
+ }
4035
+ finally {
4036
+ this.exitRule();
4037
+ }
4038
+ return localContext;
4039
+ }
4040
+ sempred(localContext, ruleIndex, predIndex) {
4041
+ switch (ruleIndex) {
4042
+ case 32:
4043
+ return this.data_expr_sempred(localContext, predIndex);
4044
+ }
4045
+ return true;
4046
+ }
4047
+ data_expr_sempred(localContext, predIndex) {
4048
+ switch (predIndex) {
4049
+ case 0:
4050
+ return this.precpred(this.context, 10);
4051
+ case 1:
4052
+ return this.precpred(this.context, 9);
4053
+ case 2:
4054
+ return this.precpred(this.context, 8);
4055
+ case 3:
4056
+ return this.precpred(this.context, 7);
4057
+ case 4:
4058
+ return this.precpred(this.context, 1);
4059
+ }
4060
+ return true;
4061
+ }
4062
+ static get _ATN() {
4063
+ if (!CircuitScriptParser.__ATN) {
4064
+ CircuitScriptParser.__ATN = new antlr.ATNDeserializer().deserialize(CircuitScriptParser._serializedATN);
4065
+ }
4066
+ return CircuitScriptParser.__ATN;
4067
+ }
4068
+ get vocabulary() {
4069
+ return CircuitScriptParser.vocabulary;
4070
+ }
4071
+ }
4072
+ exports.CircuitScriptParser = CircuitScriptParser;
4073
+ CircuitScriptParser.T__0 = 1;
4074
+ CircuitScriptParser.T__1 = 2;
4075
+ CircuitScriptParser.T__2 = 3;
4076
+ CircuitScriptParser.T__3 = 4;
4077
+ CircuitScriptParser.T__4 = 5;
4078
+ CircuitScriptParser.T__5 = 6;
4079
+ CircuitScriptParser.T__6 = 7;
4080
+ CircuitScriptParser.T__7 = 8;
4081
+ CircuitScriptParser.Break = 9;
4082
+ CircuitScriptParser.Branch = 10;
4083
+ CircuitScriptParser.Create = 11;
4084
+ CircuitScriptParser.Component = 12;
4085
+ CircuitScriptParser.Graphic = 13;
4086
+ CircuitScriptParser.Module = 14;
4087
+ CircuitScriptParser.Wire = 15;
4088
+ CircuitScriptParser.Pin = 16;
4089
+ CircuitScriptParser.Add = 17;
4090
+ CircuitScriptParser.At = 18;
4091
+ CircuitScriptParser.To = 19;
4092
+ CircuitScriptParser.Point = 20;
4093
+ CircuitScriptParser.Join = 21;
4094
+ CircuitScriptParser.Parallel = 22;
4095
+ CircuitScriptParser.Return = 23;
4096
+ CircuitScriptParser.Define = 24;
4097
+ CircuitScriptParser.Import = 25;
4098
+ CircuitScriptParser.For = 26;
4099
+ CircuitScriptParser.In = 27;
4100
+ CircuitScriptParser.While = 28;
4101
+ CircuitScriptParser.Continue = 29;
4102
+ CircuitScriptParser.If = 30;
4103
+ CircuitScriptParser.Else = 31;
4104
+ CircuitScriptParser.Not = 32;
4105
+ CircuitScriptParser.Frame = 33;
4106
+ CircuitScriptParser.Sheet = 34;
4107
+ CircuitScriptParser.Equals = 35;
4108
+ CircuitScriptParser.NotEquals = 36;
4109
+ CircuitScriptParser.GreaterThan = 37;
4110
+ CircuitScriptParser.GreatOrEqualThan = 38;
4111
+ CircuitScriptParser.LessThan = 39;
4112
+ CircuitScriptParser.LessOrEqualThan = 40;
4113
+ CircuitScriptParser.LogicalAnd = 41;
4114
+ CircuitScriptParser.LogicalOr = 42;
4115
+ CircuitScriptParser.Addition = 43;
4116
+ CircuitScriptParser.Minus = 44;
4117
+ CircuitScriptParser.Divide = 45;
4118
+ CircuitScriptParser.Multiply = 46;
4119
+ CircuitScriptParser.Modulus = 47;
4120
+ CircuitScriptParser.AdditionAssign = 48;
4121
+ CircuitScriptParser.MinusAssign = 49;
4122
+ CircuitScriptParser.DivideAssign = 50;
4123
+ CircuitScriptParser.MultiplyAssign = 51;
4124
+ CircuitScriptParser.ModulusAssign = 52;
4125
+ CircuitScriptParser.ANNOTATION_START = 53;
4126
+ CircuitScriptParser.OPEN_PAREN = 54;
4127
+ CircuitScriptParser.CLOSE_PAREN = 55;
4128
+ CircuitScriptParser.NOT_CONNECTED = 56;
4129
+ CircuitScriptParser.BOOLEAN_VALUE = 57;
4130
+ CircuitScriptParser.ID = 58;
4131
+ CircuitScriptParser.INTEGER_VALUE = 59;
4132
+ CircuitScriptParser.DECIMAL_VALUE = 60;
4133
+ CircuitScriptParser.NUMERIC_VALUE = 61;
4134
+ CircuitScriptParser.STRING_VALUE = 62;
4135
+ CircuitScriptParser.PERCENTAGE_VALUE = 63;
4136
+ CircuitScriptParser.ALPHA_NUMERIC = 64;
4137
+ CircuitScriptParser.WS = 65;
4138
+ CircuitScriptParser.NEWLINE = 66;
4139
+ CircuitScriptParser.COMMENT = 67;
4140
+ CircuitScriptParser.INDENT = 68;
4141
+ CircuitScriptParser.DEDENT = 69;
4142
+ CircuitScriptParser.RULE_script = 0;
4143
+ CircuitScriptParser.RULE_expression = 1;
4144
+ CircuitScriptParser.RULE_flow_expressions = 2;
4145
+ CircuitScriptParser.RULE_graph_expressions = 3;
4146
+ CircuitScriptParser.RULE_graph_linear_expression = 4;
4147
+ CircuitScriptParser.RULE_expressions_block = 5;
4148
+ CircuitScriptParser.RULE_path_block = 6;
4149
+ CircuitScriptParser.RULE_property_set_expr2 = 7;
4150
+ CircuitScriptParser.RULE_assignment_expr2 = 8;
4151
+ CircuitScriptParser.RULE_pin_select_expr = 9;
4152
+ CircuitScriptParser.RULE_component_modifier_expr = 10;
4153
+ CircuitScriptParser.RULE_data_expr_with_assignment = 11;
4154
+ CircuitScriptParser.RULE_add_component_expr = 12;
4155
+ CircuitScriptParser.RULE_component_select_expr = 13;
4156
+ CircuitScriptParser.RULE_pin_select_expr2 = 14;
4157
+ CircuitScriptParser.RULE_at_component_expr = 15;
4158
+ CircuitScriptParser.RULE_to_component_expr = 16;
4159
+ CircuitScriptParser.RULE_at_to_multiple_expr = 17;
4160
+ CircuitScriptParser.RULE_at_to_multiple_line_expr = 18;
3756
4161
  CircuitScriptParser.RULE_at_to_multiple_line_expr_to_pin = 19;
3757
4162
  CircuitScriptParser.RULE_at_block = 20;
3758
4163
  CircuitScriptParser.RULE_at_block_expressions = 21;
@@ -3800,10 +4205,17 @@ CircuitScriptParser.RULE_if_inner_expr = 62;
3800
4205
  CircuitScriptParser.RULE_else_expr = 63;
3801
4206
  CircuitScriptParser.RULE_while_expr = 64;
3802
4207
  CircuitScriptParser.RULE_for_expr = 65;
3803
- CircuitScriptParser.RULE_annotation_comment_expr = 66;
4208
+ CircuitScriptParser.RULE_part_set_expr = 66;
4209
+ CircuitScriptParser.RULE_part_set_key = 67;
4210
+ CircuitScriptParser.RULE_part_match_block = 68;
4211
+ CircuitScriptParser.RULE_part_sub_expr = 69;
4212
+ CircuitScriptParser.RULE_part_condition_expr = 70;
4213
+ CircuitScriptParser.RULE_part_condition_key_only_expr = 71;
4214
+ CircuitScriptParser.RULE_part_value_expr = 72;
4215
+ CircuitScriptParser.RULE_annotation_comment_expr = 73;
3804
4216
  CircuitScriptParser.literalNames = [
3805
- null, "':'", "','", "'='", "'..'", "'['", "']'", "'.'", "'break'",
3806
- "'branch'", "'create'", "'component'", "'graphic'", "'module'",
4217
+ null, "':'", "','", "'='", "'..'", "'['", "']'", "'.'", "'set'",
4218
+ "'break'", "'branch'", "'create'", "'component'", "'graphic'", "'module'",
3807
4219
  "'wire'", "'pin'", "'add'", "'at'", "'to'", "'point'", "'join'",
3808
4220
  "'parallel'", "'return'", "'def'", "'import'", "'for'", "'in'",
3809
4221
  "'while'", "'continue'", "'if'", "'else'", null, "'frame'", "'sheet'",
@@ -3812,7 +4224,7 @@ CircuitScriptParser.literalNames = [
3812
4224
  "'#='", "'('", "')'"
3813
4225
  ];
3814
4226
  CircuitScriptParser.symbolicNames = [
3815
- null, null, null, null, null, null, null, null, "Break", "Branch",
4227
+ null, null, null, null, null, null, null, null, null, "Break", "Branch",
3816
4228
  "Create", "Component", "Graphic", "Module", "Wire", "Pin", "Add",
3817
4229
  "At", "To", "Point", "Join", "Parallel", "Return", "Define", "Import",
3818
4230
  "For", "In", "While", "Continue", "If", "Else", "Not", "Frame",
@@ -3844,10 +4256,12 @@ CircuitScriptParser.ruleNames = [
3844
4256
  "nested_properties_inner", "graphic_expr", "property_expr", "property_key_expr",
3845
4257
  "property_value_expr", "wire_atom_expr", "wire_expr", "array_expr",
3846
4258
  "point_expr", "import_expr", "frame_expr", "if_expr", "if_inner_expr",
3847
- "else_expr", "while_expr", "for_expr", "annotation_comment_expr",
4259
+ "else_expr", "while_expr", "for_expr", "part_set_expr", "part_set_key",
4260
+ "part_match_block", "part_sub_expr", "part_condition_expr", "part_condition_key_only_expr",
4261
+ "part_value_expr", "annotation_comment_expr",
3848
4262
  ];
3849
4263
  CircuitScriptParser._serializedATN = [
3850
- 4, 1, 68, 713, 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,
4264
+ 4, 1, 69, 807, 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,
3851
4265
  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,
3852
4266
  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,
3853
4267
  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,
@@ -3857,258 +4271,293 @@ CircuitScriptParser._serializedATN = [
3857
4271
  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,
3858
4272
  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,
3859
4273
  7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65,
3860
- 2, 66, 7, 66, 1, 0, 1, 0, 5, 0, 137, 8, 0, 10, 0, 12, 0, 140, 9, 0, 1, 0, 1, 0, 4, 0, 144,
3861
- 8, 0, 11, 0, 12, 0, 145, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3862
- 1, 1, 1, 1, 1, 1, 1, 3, 1, 163, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 170, 8, 2, 1, 3, 1,
3863
- 3, 3, 3, 174, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 182, 8, 4, 1, 5, 1, 5, 1, 5, 1,
3864
- 5, 4, 5, 188, 8, 5, 11, 5, 12, 5, 189, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7,
3865
- 1, 7, 1, 7, 1, 7, 4, 7, 204, 8, 7, 11, 7, 12, 7, 205, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1,
3866
- 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 221, 8, 10, 1, 11, 1, 11, 3, 11, 225, 8,
3867
- 11, 1, 11, 5, 11, 228, 8, 11, 10, 11, 12, 11, 231, 9, 11, 1, 11, 3, 11, 234, 8, 11, 1,
3868
- 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 3, 13, 242, 8, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1,
3869
- 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 253, 8, 16, 10, 16, 12, 16, 256, 9, 16, 1, 17, 1,
3870
- 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 264, 8, 17, 10, 17, 12, 17, 267, 9, 17, 1, 17, 1,
3871
- 17, 1, 17, 1, 17, 1, 17, 4, 17, 274, 8, 17, 11, 17, 12, 17, 275, 1, 17, 1, 17, 1, 18, 1,
3872
- 18, 1, 18, 1, 18, 1, 18, 5, 18, 285, 8, 18, 10, 18, 12, 18, 288, 9, 18, 1, 19, 1, 19, 1,
3873
- 20, 1, 20, 1, 20, 1, 20, 1, 20, 4, 20, 297, 8, 20, 11, 20, 12, 20, 298, 1, 20, 1, 20, 1,
3874
- 21, 1, 21, 3, 21, 305, 8, 21, 1, 22, 1, 22, 1, 22, 3, 22, 310, 8, 22, 1, 23, 1, 23, 1, 23,
3875
- 1, 23, 3, 23, 316, 8, 23, 1, 24, 1, 24, 3, 24, 320, 8, 24, 1, 25, 1, 25, 1, 26, 1, 26, 3,
3876
- 26, 326, 8, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1,
3877
- 28, 1, 29, 1, 29, 1, 29, 5, 29, 342, 8, 29, 10, 29, 12, 29, 345, 9, 29, 1, 29, 1, 29, 5,
3878
- 29, 349, 8, 29, 10, 29, 12, 29, 352, 9, 29, 1, 29, 1, 29, 1, 29, 5, 29, 357, 8, 29, 10,
3879
- 29, 12, 29, 360, 9, 29, 3, 29, 362, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1,
3880
- 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 380, 8, 32, 1,
3881
- 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 390, 8, 32, 1, 32, 1, 32, 1,
3882
- 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1,
3883
- 32, 1, 32, 1, 32, 5, 32, 410, 8, 32, 10, 32, 12, 32, 413, 9, 32, 1, 33, 1, 33, 1, 34, 1,
3884
- 34, 1, 35, 3, 35, 420, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 428, 8, 36,
3885
- 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 4, 36, 436, 8, 36, 11, 36, 12, 36, 437, 1, 36,
3886
- 1, 36, 1, 37, 1, 37, 3, 37, 444, 8, 37, 1, 38, 1, 38, 1, 38, 5, 38, 449, 8, 38, 10, 38,
3887
- 12, 38, 452, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 458, 8, 38, 10, 38, 12, 38, 461,
3888
- 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 470, 8, 38, 10, 38, 12, 38,
3889
- 473, 9, 38, 3, 38, 475, 8, 38, 1, 39, 1, 39, 5, 39, 479, 8, 39, 10, 39, 12, 39, 482, 9,
3890
- 39, 1, 40, 1, 40, 3, 40, 486, 8, 40, 1, 40, 1, 40, 3, 40, 490, 8, 40, 1, 41, 1, 41, 1, 41,
3891
- 1, 41, 1, 41, 1, 41, 3, 41, 498, 8, 41, 1, 42, 3, 42, 501, 8, 42, 1, 42, 1, 42, 4, 42, 505,
3892
- 8, 42, 11, 42, 12, 42, 506, 1, 43, 3, 43, 510, 8, 43, 1, 43, 1, 43, 3, 43, 514, 8, 43,
3893
- 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46,
3894
- 1, 46, 4, 46, 530, 8, 46, 11, 46, 12, 46, 531, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47,
3895
- 4, 47, 540, 8, 47, 11, 47, 12, 47, 541, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48,
3896
- 3, 48, 551, 8, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49,
3897
- 1, 49, 4, 49, 564, 8, 49, 11, 49, 12, 49, 565, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50,
3898
- 4, 50, 574, 8, 50, 11, 50, 12, 50, 575, 1, 50, 1, 50, 1, 51, 1, 51, 3, 51, 582, 8, 51,
3899
- 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 590, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51,
3900
- 5, 51, 596, 8, 51, 10, 51, 12, 51, 599, 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51,
3901
- 606, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54,
3902
- 618, 8, 54, 10, 54, 12, 54, 621, 9, 54, 3, 54, 623, 8, 54, 1, 55, 1, 55, 1, 55, 3, 55,
3903
- 628, 8, 55, 1, 55, 3, 55, 631, 8, 55, 1, 56, 1, 56, 5, 56, 635, 8, 56, 10, 56, 12, 56,
3904
- 638, 9, 56, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 644, 8, 57, 10, 57, 12, 57, 647, 9, 57,
3905
- 5, 57, 649, 8, 57, 10, 57, 12, 57, 652, 9, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 3, 58,
3906
- 659, 8, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61,
3907
- 1, 61, 5, 61, 673, 8, 61, 10, 61, 12, 61, 676, 9, 61, 1, 61, 3, 61, 679, 8, 61, 1, 62,
3908
- 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64,
3909
- 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 700, 8, 65, 10, 65, 12, 65, 703, 9, 65, 1, 65,
3910
- 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 0, 1, 64, 67, 0, 2, 4, 6, 8, 10, 12,
3911
- 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56,
3912
- 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100,
3913
- 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132,
3914
- 0, 14, 2, 0, 9, 9, 19, 21, 1, 0, 57, 58, 2, 0, 58, 58, 61, 61, 2, 0, 55, 55, 58, 58, 1, 0,
3915
- 47, 51, 1, 0, 44, 46, 1, 0, 42, 43, 1, 0, 40, 41, 1, 0, 34, 39, 2, 0, 31, 31, 43, 43, 2,
3916
- 0, 56, 56, 58, 62, 2, 0, 15, 15, 57, 57, 2, 0, 57, 58, 61, 61, 1, 0, 32, 33, 753, 0, 138,
3917
- 1, 0, 0, 0, 2, 162, 1, 0, 0, 0, 4, 169, 1, 0, 0, 0, 6, 173, 1, 0, 0, 0, 8, 181, 1, 0, 0, 0,
3918
- 10, 183, 1, 0, 0, 0, 12, 193, 1, 0, 0, 0, 14, 197, 1, 0, 0, 0, 16, 209, 1, 0, 0, 0, 18, 213,
3919
- 1, 0, 0, 0, 20, 216, 1, 0, 0, 0, 22, 224, 1, 0, 0, 0, 24, 235, 1, 0, 0, 0, 26, 241, 1, 0,
3920
- 0, 0, 28, 243, 1, 0, 0, 0, 30, 245, 1, 0, 0, 0, 32, 248, 1, 0, 0, 0, 34, 257, 1, 0, 0, 0,
3921
- 36, 279, 1, 0, 0, 0, 38, 289, 1, 0, 0, 0, 40, 291, 1, 0, 0, 0, 42, 304, 1, 0, 0, 0, 44, 306,
3922
- 1, 0, 0, 0, 46, 311, 1, 0, 0, 0, 48, 319, 1, 0, 0, 0, 50, 321, 1, 0, 0, 0, 52, 325, 1, 0,
3923
- 0, 0, 54, 330, 1, 0, 0, 0, 56, 334, 1, 0, 0, 0, 58, 361, 1, 0, 0, 0, 60, 363, 1, 0, 0, 0,
3924
- 62, 367, 1, 0, 0, 0, 64, 389, 1, 0, 0, 0, 66, 414, 1, 0, 0, 0, 68, 416, 1, 0, 0, 0, 70, 419,
3925
- 1, 0, 0, 0, 72, 423, 1, 0, 0, 0, 74, 443, 1, 0, 0, 0, 76, 474, 1, 0, 0, 0, 78, 476, 1, 0,
3926
- 0, 0, 80, 489, 1, 0, 0, 0, 82, 497, 1, 0, 0, 0, 84, 500, 1, 0, 0, 0, 86, 509, 1, 0, 0, 0,
3927
- 88, 515, 1, 0, 0, 0, 90, 518, 1, 0, 0, 0, 92, 522, 1, 0, 0, 0, 94, 535, 1, 0, 0, 0, 96, 545,
3928
- 1, 0, 0, 0, 98, 555, 1, 0, 0, 0, 100, 569, 1, 0, 0, 0, 102, 605, 1, 0, 0, 0, 104, 607, 1,
3929
- 0, 0, 0, 106, 611, 1, 0, 0, 0, 108, 622, 1, 0, 0, 0, 110, 630, 1, 0, 0, 0, 112, 632, 1,
3930
- 0, 0, 0, 114, 639, 1, 0, 0, 0, 116, 655, 1, 0, 0, 0, 118, 660, 1, 0, 0, 0, 120, 663, 1,
3931
- 0, 0, 0, 122, 667, 1, 0, 0, 0, 124, 680, 1, 0, 0, 0, 126, 686, 1, 0, 0, 0, 128, 690, 1,
3932
- 0, 0, 0, 130, 695, 1, 0, 0, 0, 132, 709, 1, 0, 0, 0, 134, 137, 3, 118, 59, 0, 135, 137,
3933
- 5, 65, 0, 0, 136, 134, 1, 0, 0, 0, 136, 135, 1, 0, 0, 0, 137, 140, 1, 0, 0, 0, 138, 136,
3934
- 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 143, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 141, 144,
3935
- 3, 2, 1, 0, 142, 144, 5, 65, 0, 0, 143, 141, 1, 0, 0, 0, 143, 142, 1, 0, 0, 0, 144, 145,
3936
- 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 148,
3937
- 5, 0, 0, 1, 148, 1, 1, 0, 0, 0, 149, 163, 3, 6, 3, 0, 150, 163, 3, 52, 26, 0, 151, 163,
3938
- 3, 54, 27, 0, 152, 163, 3, 60, 30, 0, 153, 163, 3, 14, 7, 0, 154, 163, 3, 62, 31, 0, 155,
3939
- 163, 3, 72, 36, 0, 156, 163, 3, 84, 42, 0, 157, 163, 3, 118, 59, 0, 158, 163, 3, 78,
3940
- 39, 0, 159, 163, 3, 120, 60, 0, 160, 163, 3, 4, 2, 0, 161, 163, 3, 132, 66, 0, 162, 149,
3941
- 1, 0, 0, 0, 162, 150, 1, 0, 0, 0, 162, 151, 1, 0, 0, 0, 162, 152, 1, 0, 0, 0, 162, 153,
3942
- 1, 0, 0, 0, 162, 154, 1, 0, 0, 0, 162, 155, 1, 0, 0, 0, 162, 156, 1, 0, 0, 0, 162, 157,
3943
- 1, 0, 0, 0, 162, 158, 1, 0, 0, 0, 162, 159, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 161,
3944
- 1, 0, 0, 0, 163, 3, 1, 0, 0, 0, 164, 170, 3, 122, 61, 0, 165, 170, 3, 128, 64, 0, 166,
3945
- 170, 3, 130, 65, 0, 167, 170, 5, 8, 0, 0, 168, 170, 5, 28, 0, 0, 169, 164, 1, 0, 0, 0,
3946
- 169, 165, 1, 0, 0, 0, 169, 166, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 169, 168, 1, 0, 0, 0,
3947
- 170, 5, 1, 0, 0, 0, 171, 174, 3, 8, 4, 0, 172, 174, 3, 12, 6, 0, 173, 171, 1, 0, 0, 0, 173,
3948
- 172, 1, 0, 0, 0, 174, 7, 1, 0, 0, 0, 175, 182, 3, 24, 12, 0, 176, 182, 3, 32, 16, 0, 177,
3949
- 182, 3, 30, 15, 0, 178, 182, 3, 40, 20, 0, 179, 182, 3, 112, 56, 0, 180, 182, 3, 116,
3950
- 58, 0, 181, 175, 1, 0, 0, 0, 181, 176, 1, 0, 0, 0, 181, 177, 1, 0, 0, 0, 181, 178, 1, 0,
3951
- 0, 0, 181, 179, 1, 0, 0, 0, 181, 180, 1, 0, 0, 0, 182, 9, 1, 0, 0, 0, 183, 184, 5, 65, 0,
3952
- 0, 184, 187, 5, 67, 0, 0, 185, 188, 5, 65, 0, 0, 186, 188, 3, 2, 1, 0, 187, 185, 1, 0,
3953
- 0, 0, 187, 186, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 189, 190, 1, 0,
3954
- 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 5, 68, 0, 0, 192, 11, 1, 0, 0, 0, 193, 194, 7, 0,
3955
- 0, 0, 194, 195, 5, 1, 0, 0, 195, 196, 3, 10, 5, 0, 196, 13, 1, 0, 0, 0, 197, 198, 3, 78,
3956
- 39, 0, 198, 199, 5, 1, 0, 0, 199, 200, 5, 65, 0, 0, 200, 203, 5, 67, 0, 0, 201, 204, 5,
3957
- 65, 0, 0, 202, 204, 3, 16, 8, 0, 203, 201, 1, 0, 0, 0, 203, 202, 1, 0, 0, 0, 204, 205,
3958
- 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 208,
3959
- 5, 68, 0, 0, 208, 15, 1, 0, 0, 0, 209, 210, 7, 1, 0, 0, 210, 211, 5, 1, 0, 0, 211, 212,
3960
- 3, 70, 35, 0, 212, 17, 1, 0, 0, 0, 213, 214, 5, 15, 0, 0, 214, 215, 3, 64, 32, 0, 215,
3961
- 19, 1, 0, 0, 0, 216, 217, 5, 57, 0, 0, 217, 220, 5, 1, 0, 0, 218, 221, 3, 70, 35, 0, 219,
3962
- 221, 5, 57, 0, 0, 220, 218, 1, 0, 0, 0, 220, 219, 1, 0, 0, 0, 221, 21, 1, 0, 0, 0, 222,
3963
- 225, 3, 64, 32, 0, 223, 225, 3, 52, 26, 0, 224, 222, 1, 0, 0, 0, 224, 223, 1, 0, 0, 0,
3964
- 225, 229, 1, 0, 0, 0, 226, 228, 3, 20, 10, 0, 227, 226, 1, 0, 0, 0, 228, 231, 1, 0, 0,
3965
- 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 233, 1, 0, 0, 0, 231, 229, 1, 0, 0,
3966
- 0, 232, 234, 3, 18, 9, 0, 233, 232, 1, 0, 0, 0, 233, 234, 1, 0, 0, 0, 234, 23, 1, 0, 0,
3967
- 0, 235, 236, 5, 16, 0, 0, 236, 237, 3, 22, 11, 0, 237, 25, 1, 0, 0, 0, 238, 242, 3, 22,
3968
- 11, 0, 239, 242, 3, 18, 9, 0, 240, 242, 5, 19, 0, 0, 241, 238, 1, 0, 0, 0, 241, 239, 1,
3969
- 0, 0, 0, 241, 240, 1, 0, 0, 0, 242, 27, 1, 0, 0, 0, 243, 244, 7, 2, 0, 0, 244, 29, 1, 0,
3970
- 0, 0, 245, 246, 5, 17, 0, 0, 246, 247, 3, 26, 13, 0, 247, 31, 1, 0, 0, 0, 248, 249, 5,
3971
- 18, 0, 0, 249, 254, 3, 26, 13, 0, 250, 251, 5, 2, 0, 0, 251, 253, 3, 26, 13, 0, 252, 250,
3972
- 1, 0, 0, 0, 253, 256, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 33, 1,
3973
- 0, 0, 0, 256, 254, 1, 0, 0, 0, 257, 258, 5, 17, 0, 0, 258, 259, 3, 26, 13, 0, 259, 260,
3974
- 5, 18, 0, 0, 260, 265, 3, 26, 13, 0, 261, 262, 5, 2, 0, 0, 262, 264, 3, 26, 13, 0, 263,
3975
- 261, 1, 0, 0, 0, 264, 267, 1, 0, 0, 0, 265, 263, 1, 0, 0, 0, 265, 266, 1, 0, 0, 0, 266,
3976
- 268, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 268, 269, 5, 1, 0, 0, 269, 270, 5, 65, 0, 0, 270,
3977
- 273, 5, 67, 0, 0, 271, 274, 5, 65, 0, 0, 272, 274, 3, 36, 18, 0, 273, 271, 1, 0, 0, 0,
3978
- 273, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0,
3979
- 276, 277, 1, 0, 0, 0, 277, 278, 5, 68, 0, 0, 278, 35, 1, 0, 0, 0, 279, 280, 3, 28, 14,
3980
- 0, 280, 281, 5, 1, 0, 0, 281, 286, 3, 38, 19, 0, 282, 283, 5, 2, 0, 0, 283, 285, 3, 38,
3981
- 19, 0, 284, 282, 1, 0, 0, 0, 285, 288, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 286, 287, 1, 0,
3982
- 0, 0, 287, 37, 1, 0, 0, 0, 288, 286, 1, 0, 0, 0, 289, 290, 7, 3, 0, 0, 290, 39, 1, 0, 0,
3983
- 0, 291, 292, 3, 44, 22, 0, 292, 293, 5, 65, 0, 0, 293, 296, 5, 67, 0, 0, 294, 297, 5,
3984
- 65, 0, 0, 295, 297, 3, 42, 21, 0, 296, 294, 1, 0, 0, 0, 296, 295, 1, 0, 0, 0, 297, 298,
3985
- 1, 0, 0, 0, 298, 296, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 301,
3986
- 5, 68, 0, 0, 301, 41, 1, 0, 0, 0, 302, 305, 3, 2, 1, 0, 303, 305, 3, 46, 23, 0, 304, 302,
3987
- 1, 0, 0, 0, 304, 303, 1, 0, 0, 0, 305, 43, 1, 0, 0, 0, 306, 307, 3, 30, 15, 0, 307, 309,
3988
- 5, 1, 0, 0, 308, 310, 3, 132, 66, 0, 309, 308, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 45,
3989
- 1, 0, 0, 0, 311, 312, 3, 28, 14, 0, 312, 315, 5, 1, 0, 0, 313, 316, 3, 48, 24, 0, 314,
3990
- 316, 3, 50, 25, 0, 315, 313, 1, 0, 0, 0, 315, 314, 1, 0, 0, 0, 316, 47, 1, 0, 0, 0, 317,
3991
- 320, 3, 2, 1, 0, 318, 320, 5, 55, 0, 0, 319, 317, 1, 0, 0, 0, 319, 318, 1, 0, 0, 0, 320,
3992
- 49, 1, 0, 0, 0, 321, 322, 3, 10, 5, 0, 322, 51, 1, 0, 0, 0, 323, 326, 3, 78, 39, 0, 324,
3993
- 326, 3, 84, 42, 0, 325, 323, 1, 0, 0, 0, 325, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327,
3994
- 328, 5, 3, 0, 0, 328, 329, 3, 64, 32, 0, 329, 53, 1, 0, 0, 0, 330, 331, 3, 78, 39, 0, 331,
3995
- 332, 7, 4, 0, 0, 332, 333, 3, 64, 32, 0, 333, 55, 1, 0, 0, 0, 334, 335, 5, 57, 0, 0, 335,
3996
- 336, 5, 3, 0, 0, 336, 337, 3, 64, 32, 0, 337, 57, 1, 0, 0, 0, 338, 343, 3, 64, 32, 0, 339,
3997
- 340, 5, 2, 0, 0, 340, 342, 3, 64, 32, 0, 341, 339, 1, 0, 0, 0, 342, 345, 1, 0, 0, 0, 343,
3998
- 341, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 350, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 346,
3999
- 347, 5, 2, 0, 0, 347, 349, 3, 56, 28, 0, 348, 346, 1, 0, 0, 0, 349, 352, 1, 0, 0, 0, 350,
4000
- 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 362, 1, 0, 0, 0, 352, 350, 1, 0, 0, 0, 353,
4001
- 358, 3, 56, 28, 0, 354, 355, 5, 2, 0, 0, 355, 357, 3, 56, 28, 0, 356, 354, 1, 0, 0, 0,
4002
- 357, 360, 1, 0, 0, 0, 358, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0,
4003
- 360, 358, 1, 0, 0, 0, 361, 338, 1, 0, 0, 0, 361, 353, 1, 0, 0, 0, 362, 59, 1, 0, 0, 0, 363,
4004
- 364, 3, 78, 39, 0, 364, 365, 5, 3, 0, 0, 365, 366, 3, 64, 32, 0, 366, 61, 1, 0, 0, 0, 367,
4005
- 368, 5, 4, 0, 0, 368, 369, 5, 57, 0, 0, 369, 370, 5, 3, 0, 0, 370, 371, 3, 64, 32, 0, 371,
4006
- 63, 1, 0, 0, 0, 372, 373, 6, 32, -1, 0, 373, 374, 5, 53, 0, 0, 374, 375, 3, 64, 32, 0,
4007
- 375, 376, 5, 54, 0, 0, 376, 390, 1, 0, 0, 0, 377, 380, 3, 70, 35, 0, 378, 380, 3, 78,
4008
- 39, 0, 379, 377, 1, 0, 0, 0, 379, 378, 1, 0, 0, 0, 380, 390, 1, 0, 0, 0, 381, 382, 3, 68,
4009
- 34, 0, 382, 383, 3, 64, 32, 11, 383, 390, 1, 0, 0, 0, 384, 390, 3, 92, 46, 0, 385, 390,
4010
- 3, 96, 48, 0, 386, 390, 3, 98, 49, 0, 387, 390, 3, 84, 42, 0, 388, 390, 3, 114, 57, 0,
4011
- 389, 372, 1, 0, 0, 0, 389, 379, 1, 0, 0, 0, 389, 381, 1, 0, 0, 0, 389, 384, 1, 0, 0, 0,
4012
- 389, 385, 1, 0, 0, 0, 389, 386, 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 389, 388, 1, 0, 0, 0,
4013
- 390, 411, 1, 0, 0, 0, 391, 392, 10, 10, 0, 0, 392, 393, 7, 5, 0, 0, 393, 410, 3, 64, 32,
4014
- 11, 394, 395, 10, 9, 0, 0, 395, 396, 7, 6, 0, 0, 396, 410, 3, 64, 32, 10, 397, 398, 10,
4015
- 8, 0, 0, 398, 399, 3, 66, 33, 0, 399, 400, 3, 64, 32, 9, 400, 410, 1, 0, 0, 0, 401, 402,
4016
- 10, 7, 0, 0, 402, 403, 7, 7, 0, 0, 403, 410, 3, 64, 32, 8, 404, 405, 10, 1, 0, 0, 405,
4017
- 406, 5, 5, 0, 0, 406, 407, 3, 64, 32, 0, 407, 408, 5, 6, 0, 0, 408, 410, 1, 0, 0, 0, 409,
4018
- 391, 1, 0, 0, 0, 409, 394, 1, 0, 0, 0, 409, 397, 1, 0, 0, 0, 409, 401, 1, 0, 0, 0, 409,
4019
- 404, 1, 0, 0, 0, 410, 413, 1, 0, 0, 0, 411, 409, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412,
4020
- 65, 1, 0, 0, 0, 413, 411, 1, 0, 0, 0, 414, 415, 7, 8, 0, 0, 415, 67, 1, 0, 0, 0, 416, 417,
4021
- 7, 9, 0, 0, 417, 69, 1, 0, 0, 0, 418, 420, 5, 43, 0, 0, 419, 418, 1, 0, 0, 0, 419, 420,
4022
- 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 422, 7, 10, 0, 0, 422, 71, 1, 0, 0, 0, 423, 424,
4023
- 5, 23, 0, 0, 424, 425, 5, 57, 0, 0, 425, 427, 5, 53, 0, 0, 426, 428, 3, 76, 38, 0, 427,
4024
- 426, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 430, 5, 54, 0, 0, 430,
4025
- 431, 5, 1, 0, 0, 431, 432, 5, 65, 0, 0, 432, 435, 5, 67, 0, 0, 433, 436, 5, 65, 0, 0, 434,
4026
- 436, 3, 74, 37, 0, 435, 433, 1, 0, 0, 0, 435, 434, 1, 0, 0, 0, 436, 437, 1, 0, 0, 0, 437,
4027
- 435, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 440, 5, 68, 0, 0, 440,
4028
- 73, 1, 0, 0, 0, 441, 444, 3, 2, 1, 0, 442, 444, 3, 88, 44, 0, 443, 441, 1, 0, 0, 0, 443,
4029
- 442, 1, 0, 0, 0, 444, 75, 1, 0, 0, 0, 445, 450, 5, 57, 0, 0, 446, 447, 5, 2, 0, 0, 447,
4030
- 449, 5, 57, 0, 0, 448, 446, 1, 0, 0, 0, 449, 452, 1, 0, 0, 0, 450, 448, 1, 0, 0, 0, 450,
4031
- 451, 1, 0, 0, 0, 451, 459, 1, 0, 0, 0, 452, 450, 1, 0, 0, 0, 453, 454, 5, 2, 0, 0, 454,
4032
- 455, 5, 57, 0, 0, 455, 456, 5, 3, 0, 0, 456, 458, 3, 70, 35, 0, 457, 453, 1, 0, 0, 0, 458,
4033
- 461, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 475, 1, 0, 0, 0, 461,
4034
- 459, 1, 0, 0, 0, 462, 463, 5, 57, 0, 0, 463, 464, 5, 3, 0, 0, 464, 471, 3, 70, 35, 0, 465,
4035
- 466, 5, 2, 0, 0, 466, 467, 5, 57, 0, 0, 467, 468, 5, 3, 0, 0, 468, 470, 3, 70, 35, 0, 469,
4036
- 465, 1, 0, 0, 0, 470, 473, 1, 0, 0, 0, 471, 469, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472,
4037
- 475, 1, 0, 0, 0, 473, 471, 1, 0, 0, 0, 474, 445, 1, 0, 0, 0, 474, 462, 1, 0, 0, 0, 475,
4038
- 77, 1, 0, 0, 0, 476, 480, 5, 57, 0, 0, 477, 479, 3, 82, 41, 0, 478, 477, 1, 0, 0, 0, 479,
4039
- 482, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 79, 1, 0, 0, 0, 482, 480,
4040
- 1, 0, 0, 0, 483, 485, 5, 53, 0, 0, 484, 486, 3, 58, 29, 0, 485, 484, 1, 0, 0, 0, 485, 486,
4041
- 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 490, 5, 54, 0, 0, 488, 490, 3, 82, 41, 0, 489, 483,
4042
- 1, 0, 0, 0, 489, 488, 1, 0, 0, 0, 490, 81, 1, 0, 0, 0, 491, 492, 5, 7, 0, 0, 492, 498, 5,
4043
- 57, 0, 0, 493, 494, 5, 5, 0, 0, 494, 495, 3, 64, 32, 0, 495, 496, 5, 6, 0, 0, 496, 498,
4044
- 1, 0, 0, 0, 497, 491, 1, 0, 0, 0, 497, 493, 1, 0, 0, 0, 498, 83, 1, 0, 0, 0, 499, 501, 3,
4045
- 86, 43, 0, 500, 499, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 504,
4046
- 5, 57, 0, 0, 503, 505, 3, 80, 40, 0, 504, 503, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 504,
4047
- 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 85, 1, 0, 0, 0, 508, 510, 5, 42, 0, 0, 509, 508,
4048
- 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 513, 5, 44, 0, 0, 512, 514,
4049
- 3, 64, 32, 0, 513, 512, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 87, 1, 0, 0, 0, 515, 516,
4050
- 5, 22, 0, 0, 516, 517, 3, 64, 32, 0, 517, 89, 1, 0, 0, 0, 518, 519, 3, 106, 53, 0, 519,
4051
- 520, 5, 1, 0, 0, 520, 521, 3, 10, 5, 0, 521, 91, 1, 0, 0, 0, 522, 523, 5, 10, 0, 0, 523,
4052
- 524, 5, 11, 0, 0, 524, 525, 5, 1, 0, 0, 525, 526, 5, 65, 0, 0, 526, 529, 5, 67, 0, 0, 527,
4053
- 530, 5, 65, 0, 0, 528, 530, 3, 104, 52, 0, 529, 527, 1, 0, 0, 0, 529, 528, 1, 0, 0, 0,
4054
- 530, 531, 1, 0, 0, 0, 531, 529, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0,
4055
- 533, 534, 5, 68, 0, 0, 534, 93, 1, 0, 0, 0, 535, 536, 5, 65, 0, 0, 536, 539, 5, 67, 0,
4056
- 0, 537, 540, 5, 65, 0, 0, 538, 540, 3, 102, 51, 0, 539, 537, 1, 0, 0, 0, 539, 538, 1,
4057
- 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 539, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 543, 1,
4058
- 0, 0, 0, 543, 544, 5, 68, 0, 0, 544, 95, 1, 0, 0, 0, 545, 546, 5, 10, 0, 0, 546, 550, 5,
4059
- 12, 0, 0, 547, 548, 5, 53, 0, 0, 548, 549, 5, 57, 0, 0, 549, 551, 5, 54, 0, 0, 550, 547,
4060
- 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 553, 5, 1, 0, 0, 553, 554,
4061
- 3, 94, 47, 0, 554, 97, 1, 0, 0, 0, 555, 556, 5, 10, 0, 0, 556, 557, 5, 13, 0, 0, 557, 558,
4062
- 5, 1, 0, 0, 558, 559, 5, 65, 0, 0, 559, 563, 5, 67, 0, 0, 560, 564, 5, 65, 0, 0, 561, 564,
4063
- 3, 104, 52, 0, 562, 564, 3, 90, 45, 0, 563, 560, 1, 0, 0, 0, 563, 561, 1, 0, 0, 0, 563,
4064
- 562, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 563, 1, 0, 0, 0, 565, 566, 1, 0, 0, 0, 566,
4065
- 567, 1, 0, 0, 0, 567, 568, 5, 68, 0, 0, 568, 99, 1, 0, 0, 0, 569, 570, 5, 65, 0, 0, 570,
4066
- 573, 5, 67, 0, 0, 571, 574, 5, 65, 0, 0, 572, 574, 3, 104, 52, 0, 573, 571, 1, 0, 0, 0,
4067
- 573, 572, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 573, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0,
4068
- 576, 577, 1, 0, 0, 0, 577, 578, 5, 68, 0, 0, 578, 101, 1, 0, 0, 0, 579, 581, 7, 11, 0,
4069
- 0, 580, 582, 5, 1, 0, 0, 581, 580, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 589, 1, 0, 0,
4070
- 0, 583, 590, 3, 58, 29, 0, 584, 585, 5, 53, 0, 0, 585, 586, 3, 58, 29, 0, 586, 587, 5,
4071
- 54, 0, 0, 587, 590, 1, 0, 0, 0, 588, 590, 3, 100, 50, 0, 589, 583, 1, 0, 0, 0, 589, 584,
4072
- 1, 0, 0, 0, 589, 588, 1, 0, 0, 0, 590, 606, 1, 0, 0, 0, 591, 592, 5, 25, 0, 0, 592, 597,
4073
- 5, 57, 0, 0, 593, 594, 5, 2, 0, 0, 594, 596, 5, 57, 0, 0, 595, 593, 1, 0, 0, 0, 596, 599,
4074
- 1, 0, 0, 0, 597, 595, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 600, 1, 0, 0, 0, 599, 597,
4075
- 1, 0, 0, 0, 600, 601, 5, 26, 0, 0, 601, 602, 3, 64, 32, 0, 602, 603, 5, 1, 0, 0, 603, 604,
4076
- 3, 94, 47, 0, 604, 606, 1, 0, 0, 0, 605, 579, 1, 0, 0, 0, 605, 591, 1, 0, 0, 0, 606, 103,
4077
- 1, 0, 0, 0, 607, 608, 3, 106, 53, 0, 608, 609, 5, 1, 0, 0, 609, 610, 3, 108, 54, 0, 610,
4078
- 105, 1, 0, 0, 0, 611, 612, 7, 12, 0, 0, 612, 107, 1, 0, 0, 0, 613, 623, 3, 100, 50, 0,
4079
- 614, 619, 3, 64, 32, 0, 615, 616, 5, 2, 0, 0, 616, 618, 3, 64, 32, 0, 617, 615, 1, 0,
4080
- 0, 0, 618, 621, 1, 0, 0, 0, 619, 617, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 623, 1, 0,
4081
- 0, 0, 621, 619, 1, 0, 0, 0, 622, 613, 1, 0, 0, 0, 622, 614, 1, 0, 0, 0, 623, 109, 1, 0,
4082
- 0, 0, 624, 627, 5, 57, 0, 0, 625, 628, 5, 58, 0, 0, 626, 628, 3, 64, 32, 0, 627, 625,
4083
- 1, 0, 0, 0, 627, 626, 1, 0, 0, 0, 628, 631, 1, 0, 0, 0, 629, 631, 5, 57, 0, 0, 630, 624,
4084
- 1, 0, 0, 0, 630, 629, 1, 0, 0, 0, 631, 111, 1, 0, 0, 0, 632, 636, 5, 14, 0, 0, 633, 635,
4085
- 3, 110, 55, 0, 634, 633, 1, 0, 0, 0, 635, 638, 1, 0, 0, 0, 636, 634, 1, 0, 0, 0, 636, 637,
4086
- 1, 0, 0, 0, 637, 113, 1, 0, 0, 0, 638, 636, 1, 0, 0, 0, 639, 650, 5, 5, 0, 0, 640, 645,
4087
- 3, 64, 32, 0, 641, 642, 5, 2, 0, 0, 642, 644, 3, 64, 32, 0, 643, 641, 1, 0, 0, 0, 644,
4088
- 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 649, 1, 0, 0, 0, 647,
4089
- 645, 1, 0, 0, 0, 648, 640, 1, 0, 0, 0, 649, 652, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 650,
4090
- 651, 1, 0, 0, 0, 651, 653, 1, 0, 0, 0, 652, 650, 1, 0, 0, 0, 653, 654, 5, 6, 0, 0, 654,
4091
- 115, 1, 0, 0, 0, 655, 658, 5, 19, 0, 0, 656, 659, 5, 57, 0, 0, 657, 659, 3, 64, 32, 0,
4092
- 658, 656, 1, 0, 0, 0, 658, 657, 1, 0, 0, 0, 659, 117, 1, 0, 0, 0, 660, 661, 5, 24, 0, 0,
4093
- 661, 662, 5, 57, 0, 0, 662, 119, 1, 0, 0, 0, 663, 664, 7, 13, 0, 0, 664, 665, 5, 1, 0,
4094
- 0, 665, 666, 3, 10, 5, 0, 666, 121, 1, 0, 0, 0, 667, 668, 5, 29, 0, 0, 668, 669, 3, 64,
4095
- 32, 0, 669, 670, 5, 1, 0, 0, 670, 674, 3, 10, 5, 0, 671, 673, 3, 124, 62, 0, 672, 671,
4096
- 1, 0, 0, 0, 673, 676, 1, 0, 0, 0, 674, 672, 1, 0, 0, 0, 674, 675, 1, 0, 0, 0, 675, 678,
4097
- 1, 0, 0, 0, 676, 674, 1, 0, 0, 0, 677, 679, 3, 126, 63, 0, 678, 677, 1, 0, 0, 0, 678, 679,
4098
- 1, 0, 0, 0, 679, 123, 1, 0, 0, 0, 680, 681, 5, 30, 0, 0, 681, 682, 5, 29, 0, 0, 682, 683,
4099
- 3, 64, 32, 0, 683, 684, 5, 1, 0, 0, 684, 685, 3, 10, 5, 0, 685, 125, 1, 0, 0, 0, 686, 687,
4100
- 5, 30, 0, 0, 687, 688, 5, 1, 0, 0, 688, 689, 3, 10, 5, 0, 689, 127, 1, 0, 0, 0, 690, 691,
4101
- 5, 27, 0, 0, 691, 692, 3, 64, 32, 0, 692, 693, 5, 1, 0, 0, 693, 694, 3, 10, 5, 0, 694,
4102
- 129, 1, 0, 0, 0, 695, 696, 5, 25, 0, 0, 696, 701, 5, 57, 0, 0, 697, 698, 5, 2, 0, 0, 698,
4103
- 700, 5, 57, 0, 0, 699, 697, 1, 0, 0, 0, 700, 703, 1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 701,
4104
- 702, 1, 0, 0, 0, 702, 704, 1, 0, 0, 0, 703, 701, 1, 0, 0, 0, 704, 705, 5, 26, 0, 0, 705,
4105
- 706, 3, 64, 32, 0, 706, 707, 5, 1, 0, 0, 707, 708, 3, 10, 5, 0, 708, 131, 1, 0, 0, 0, 709,
4106
- 710, 5, 52, 0, 0, 710, 711, 5, 57, 0, 0, 711, 133, 1, 0, 0, 0, 78, 136, 138, 143, 145,
4107
- 162, 169, 173, 181, 187, 189, 203, 205, 220, 224, 229, 233, 241, 254, 265, 273,
4108
- 275, 286, 296, 298, 304, 309, 315, 319, 325, 343, 350, 358, 361, 379, 389, 409,
4109
- 411, 419, 427, 435, 437, 443, 450, 459, 471, 474, 480, 485, 489, 497, 500, 506,
4110
- 509, 513, 529, 531, 539, 541, 550, 563, 565, 573, 575, 581, 589, 597, 605, 619,
4111
- 622, 627, 630, 636, 645, 650, 658, 674, 678, 701
4274
+ 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72,
4275
+ 7, 72, 2, 73, 7, 73, 1, 0, 1, 0, 5, 0, 151, 8, 0, 10, 0, 12, 0, 154, 9, 0, 1, 0, 1, 0, 4, 0,
4276
+ 158, 8, 0, 11, 0, 12, 0, 159, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4277
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 178, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 185, 8,
4278
+ 2, 1, 3, 1, 3, 3, 3, 189, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 197, 8, 4, 1, 5, 1,
4279
+ 5, 1, 5, 1, 5, 4, 5, 203, 8, 5, 11, 5, 12, 5, 204, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7,
4280
+ 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 4, 7, 219, 8, 7, 11, 7, 12, 7, 220, 1, 7, 1, 7, 1, 8, 1, 8, 1,
4281
+ 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 236, 8, 10, 1, 11, 1, 11, 3,
4282
+ 11, 240, 8, 11, 1, 11, 5, 11, 243, 8, 11, 10, 11, 12, 11, 246, 9, 11, 1, 11, 3, 11, 249,
4283
+ 8, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 3, 13, 257, 8, 13, 1, 14, 1, 14, 1, 15,
4284
+ 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 268, 8, 16, 10, 16, 12, 16, 271, 9, 16,
4285
+ 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 279, 8, 17, 10, 17, 12, 17, 282, 9, 17,
4286
+ 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 289, 8, 17, 11, 17, 12, 17, 290, 1, 17, 1, 17,
4287
+ 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 300, 8, 18, 10, 18, 12, 18, 303, 9, 18, 1, 19,
4288
+ 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 4, 20, 312, 8, 20, 11, 20, 12, 20, 313, 1, 20,
4289
+ 1, 20, 1, 21, 1, 21, 3, 21, 320, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 325, 8, 22, 10, 22,
4290
+ 12, 22, 328, 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 334, 8, 23, 1, 24, 1, 24, 3, 24,
4291
+ 338, 8, 24, 1, 25, 1, 25, 1, 26, 1, 26, 3, 26, 344, 8, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1,
4292
+ 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 5, 29, 360, 8, 29, 10,
4293
+ 29, 12, 29, 363, 9, 29, 1, 29, 1, 29, 5, 29, 367, 8, 29, 10, 29, 12, 29, 370, 9, 29, 1,
4294
+ 29, 1, 29, 1, 29, 5, 29, 375, 8, 29, 10, 29, 12, 29, 378, 9, 29, 3, 29, 380, 8, 29, 1,
4295
+ 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1,
4296
+ 32, 1, 32, 1, 32, 3, 32, 398, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1,
4297
+ 32, 3, 32, 408, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1,
4298
+ 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 428, 8, 32, 10, 32, 12,
4299
+ 32, 431, 9, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 3, 35, 438, 8, 35, 1, 35, 1, 35, 1, 36,
4300
+ 1, 36, 1, 36, 1, 36, 3, 36, 446, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 4, 36,
4301
+ 454, 8, 36, 11, 36, 12, 36, 455, 1, 36, 1, 36, 1, 37, 1, 37, 3, 37, 462, 8, 37, 1, 38,
4302
+ 1, 38, 1, 38, 5, 38, 467, 8, 38, 10, 38, 12, 38, 470, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38,
4303
+ 5, 38, 476, 8, 38, 10, 38, 12, 38, 479, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38,
4304
+ 1, 38, 5, 38, 488, 8, 38, 10, 38, 12, 38, 491, 9, 38, 3, 38, 493, 8, 38, 1, 39, 1, 39,
4305
+ 5, 39, 497, 8, 39, 10, 39, 12, 39, 500, 9, 39, 1, 40, 1, 40, 3, 40, 504, 8, 40, 1, 40,
4306
+ 1, 40, 3, 40, 508, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 516, 8, 41, 1,
4307
+ 42, 3, 42, 519, 8, 42, 1, 42, 1, 42, 4, 42, 523, 8, 42, 11, 42, 12, 42, 524, 1, 43, 3,
4308
+ 43, 528, 8, 43, 1, 43, 1, 43, 3, 43, 532, 8, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45,
4309
+ 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 548, 8, 46, 11, 46, 12, 46,
4310
+ 549, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 4, 47, 558, 8, 47, 11, 47, 12, 47, 559,
4311
+ 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 569, 8, 48, 1, 48, 1, 48, 1, 48,
4312
+ 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 4, 49, 582, 8, 49, 11, 49, 12, 49,
4313
+ 583, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 4, 50, 592, 8, 50, 11, 50, 12, 50, 593,
4314
+ 1, 50, 1, 50, 1, 51, 1, 51, 3, 51, 600, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51,
4315
+ 3, 51, 608, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 614, 8, 51, 10, 51, 12, 51, 617,
4316
+ 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 624, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52,
4317
+ 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 636, 8, 54, 10, 54, 12, 54, 639, 9, 54,
4318
+ 3, 54, 641, 8, 54, 1, 55, 1, 55, 1, 55, 3, 55, 646, 8, 55, 1, 55, 3, 55, 649, 8, 55, 1,
4319
+ 56, 1, 56, 5, 56, 653, 8, 56, 10, 56, 12, 56, 656, 9, 56, 1, 57, 1, 57, 1, 57, 1, 57, 5,
4320
+ 57, 662, 8, 57, 10, 57, 12, 57, 665, 9, 57, 5, 57, 667, 8, 57, 10, 57, 12, 57, 670, 9,
4321
+ 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 3, 58, 677, 8, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1,
4322
+ 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 691, 8, 61, 10, 61, 12, 61,
4323
+ 694, 9, 61, 1, 61, 3, 61, 697, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1,
4324
+ 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 718,
4325
+ 8, 65, 10, 65, 12, 65, 721, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66,
4326
+ 1, 66, 1, 66, 5, 66, 733, 8, 66, 10, 66, 12, 66, 736, 9, 66, 1, 66, 1, 66, 1, 66, 1, 67,
4327
+ 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 4, 68, 747, 8, 68, 11, 68, 12, 68, 748, 1, 68, 1, 68,
4328
+ 1, 69, 1, 69, 1, 69, 3, 69, 756, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70,
4329
+ 1, 70, 5, 70, 766, 8, 70, 10, 70, 12, 70, 769, 9, 70, 1, 70, 1, 70, 5, 70, 773, 8, 70,
4330
+ 10, 70, 12, 70, 776, 9, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 783, 8, 70, 10, 70,
4331
+ 12, 70, 786, 9, 70, 3, 70, 788, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72,
4332
+ 1, 72, 1, 72, 5, 72, 799, 8, 72, 10, 72, 12, 72, 802, 9, 72, 1, 73, 1, 73, 1, 73, 1, 73,
4333
+ 0, 1, 64, 74, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
4334
+ 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82,
4335
+ 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118,
4336
+ 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 0, 15, 2, 0,
4337
+ 10, 10, 20, 22, 1, 0, 58, 59, 2, 0, 59, 59, 62, 62, 2, 0, 56, 56, 59, 59, 1, 0, 48, 52,
4338
+ 1, 0, 45, 47, 1, 0, 43, 44, 1, 0, 41, 42, 1, 0, 35, 40, 2, 0, 32, 32, 44, 44, 2, 0, 57, 57,
4339
+ 59, 63, 2, 0, 16, 16, 58, 58, 2, 0, 58, 59, 62, 62, 1, 0, 33, 34, 2, 0, 58, 59, 61, 63,
4340
+ 851, 0, 152, 1, 0, 0, 0, 2, 177, 1, 0, 0, 0, 4, 184, 1, 0, 0, 0, 6, 188, 1, 0, 0, 0, 8, 196,
4341
+ 1, 0, 0, 0, 10, 198, 1, 0, 0, 0, 12, 208, 1, 0, 0, 0, 14, 212, 1, 0, 0, 0, 16, 224, 1, 0,
4342
+ 0, 0, 18, 228, 1, 0, 0, 0, 20, 231, 1, 0, 0, 0, 22, 239, 1, 0, 0, 0, 24, 250, 1, 0, 0, 0,
4343
+ 26, 256, 1, 0, 0, 0, 28, 258, 1, 0, 0, 0, 30, 260, 1, 0, 0, 0, 32, 263, 1, 0, 0, 0, 34, 272,
4344
+ 1, 0, 0, 0, 36, 294, 1, 0, 0, 0, 38, 304, 1, 0, 0, 0, 40, 306, 1, 0, 0, 0, 42, 319, 1, 0,
4345
+ 0, 0, 44, 321, 1, 0, 0, 0, 46, 329, 1, 0, 0, 0, 48, 337, 1, 0, 0, 0, 50, 339, 1, 0, 0, 0,
4346
+ 52, 343, 1, 0, 0, 0, 54, 348, 1, 0, 0, 0, 56, 352, 1, 0, 0, 0, 58, 379, 1, 0, 0, 0, 60, 381,
4347
+ 1, 0, 0, 0, 62, 385, 1, 0, 0, 0, 64, 407, 1, 0, 0, 0, 66, 432, 1, 0, 0, 0, 68, 434, 1, 0,
4348
+ 0, 0, 70, 437, 1, 0, 0, 0, 72, 441, 1, 0, 0, 0, 74, 461, 1, 0, 0, 0, 76, 492, 1, 0, 0, 0,
4349
+ 78, 494, 1, 0, 0, 0, 80, 507, 1, 0, 0, 0, 82, 515, 1, 0, 0, 0, 84, 518, 1, 0, 0, 0, 86, 527,
4350
+ 1, 0, 0, 0, 88, 533, 1, 0, 0, 0, 90, 536, 1, 0, 0, 0, 92, 540, 1, 0, 0, 0, 94, 553, 1, 0,
4351
+ 0, 0, 96, 563, 1, 0, 0, 0, 98, 573, 1, 0, 0, 0, 100, 587, 1, 0, 0, 0, 102, 623, 1, 0, 0,
4352
+ 0, 104, 625, 1, 0, 0, 0, 106, 629, 1, 0, 0, 0, 108, 640, 1, 0, 0, 0, 110, 648, 1, 0, 0,
4353
+ 0, 112, 650, 1, 0, 0, 0, 114, 657, 1, 0, 0, 0, 116, 673, 1, 0, 0, 0, 118, 678, 1, 0, 0,
4354
+ 0, 120, 681, 1, 0, 0, 0, 122, 685, 1, 0, 0, 0, 124, 698, 1, 0, 0, 0, 126, 704, 1, 0, 0,
4355
+ 0, 128, 708, 1, 0, 0, 0, 130, 713, 1, 0, 0, 0, 132, 727, 1, 0, 0, 0, 134, 740, 1, 0, 0,
4356
+ 0, 136, 742, 1, 0, 0, 0, 138, 755, 1, 0, 0, 0, 140, 757, 1, 0, 0, 0, 142, 789, 1, 0, 0,
4357
+ 0, 144, 793, 1, 0, 0, 0, 146, 803, 1, 0, 0, 0, 148, 151, 3, 118, 59, 0, 149, 151, 5, 66,
4358
+ 0, 0, 150, 148, 1, 0, 0, 0, 150, 149, 1, 0, 0, 0, 151, 154, 1, 0, 0, 0, 152, 150, 1, 0,
4359
+ 0, 0, 152, 153, 1, 0, 0, 0, 153, 157, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 155, 158, 3, 2,
4360
+ 1, 0, 156, 158, 5, 66, 0, 0, 157, 155, 1, 0, 0, 0, 157, 156, 1, 0, 0, 0, 158, 159, 1, 0,
4361
+ 0, 0, 159, 157, 1, 0, 0, 0, 159, 160, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 162, 5, 0,
4362
+ 0, 1, 162, 1, 1, 0, 0, 0, 163, 178, 3, 6, 3, 0, 164, 178, 3, 52, 26, 0, 165, 178, 3, 54,
4363
+ 27, 0, 166, 178, 3, 60, 30, 0, 167, 178, 3, 14, 7, 0, 168, 178, 3, 62, 31, 0, 169, 178,
4364
+ 3, 72, 36, 0, 170, 178, 3, 84, 42, 0, 171, 178, 3, 118, 59, 0, 172, 178, 3, 78, 39, 0,
4365
+ 173, 178, 3, 120, 60, 0, 174, 178, 3, 4, 2, 0, 175, 178, 3, 146, 73, 0, 176, 178, 3,
4366
+ 132, 66, 0, 177, 163, 1, 0, 0, 0, 177, 164, 1, 0, 0, 0, 177, 165, 1, 0, 0, 0, 177, 166,
4367
+ 1, 0, 0, 0, 177, 167, 1, 0, 0, 0, 177, 168, 1, 0, 0, 0, 177, 169, 1, 0, 0, 0, 177, 170,
4368
+ 1, 0, 0, 0, 177, 171, 1, 0, 0, 0, 177, 172, 1, 0, 0, 0, 177, 173, 1, 0, 0, 0, 177, 174,
4369
+ 1, 0, 0, 0, 177, 175, 1, 0, 0, 0, 177, 176, 1, 0, 0, 0, 178, 3, 1, 0, 0, 0, 179, 185, 3,
4370
+ 122, 61, 0, 180, 185, 3, 128, 64, 0, 181, 185, 3, 130, 65, 0, 182, 185, 5, 9, 0, 0, 183,
4371
+ 185, 5, 29, 0, 0, 184, 179, 1, 0, 0, 0, 184, 180, 1, 0, 0, 0, 184, 181, 1, 0, 0, 0, 184,
4372
+ 182, 1, 0, 0, 0, 184, 183, 1, 0, 0, 0, 185, 5, 1, 0, 0, 0, 186, 189, 3, 8, 4, 0, 187, 189,
4373
+ 3, 12, 6, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, 0, 0, 0, 189, 7, 1, 0, 0, 0, 190, 197, 3,
4374
+ 24, 12, 0, 191, 197, 3, 32, 16, 0, 192, 197, 3, 30, 15, 0, 193, 197, 3, 40, 20, 0, 194,
4375
+ 197, 3, 112, 56, 0, 195, 197, 3, 116, 58, 0, 196, 190, 1, 0, 0, 0, 196, 191, 1, 0, 0,
4376
+ 0, 196, 192, 1, 0, 0, 0, 196, 193, 1, 0, 0, 0, 196, 194, 1, 0, 0, 0, 196, 195, 1, 0, 0,
4377
+ 0, 197, 9, 1, 0, 0, 0, 198, 199, 5, 66, 0, 0, 199, 202, 5, 68, 0, 0, 200, 203, 5, 66, 0,
4378
+ 0, 201, 203, 3, 2, 1, 0, 202, 200, 1, 0, 0, 0, 202, 201, 1, 0, 0, 0, 203, 204, 1, 0, 0,
4379
+ 0, 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 207, 5, 69, 0,
4380
+ 0, 207, 11, 1, 0, 0, 0, 208, 209, 7, 0, 0, 0, 209, 210, 5, 1, 0, 0, 210, 211, 3, 10, 5,
4381
+ 0, 211, 13, 1, 0, 0, 0, 212, 213, 3, 78, 39, 0, 213, 214, 5, 1, 0, 0, 214, 215, 5, 66,
4382
+ 0, 0, 215, 218, 5, 68, 0, 0, 216, 219, 5, 66, 0, 0, 217, 219, 3, 16, 8, 0, 218, 216, 1,
4383
+ 0, 0, 0, 218, 217, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 218, 1, 0, 0, 0, 220, 221, 1,
4384
+ 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 223, 5, 69, 0, 0, 223, 15, 1, 0, 0, 0, 224, 225, 7,
4385
+ 1, 0, 0, 225, 226, 5, 1, 0, 0, 226, 227, 3, 70, 35, 0, 227, 17, 1, 0, 0, 0, 228, 229, 5,
4386
+ 16, 0, 0, 229, 230, 3, 64, 32, 0, 230, 19, 1, 0, 0, 0, 231, 232, 5, 58, 0, 0, 232, 235,
4387
+ 5, 1, 0, 0, 233, 236, 3, 70, 35, 0, 234, 236, 5, 58, 0, 0, 235, 233, 1, 0, 0, 0, 235, 234,
4388
+ 1, 0, 0, 0, 236, 21, 1, 0, 0, 0, 237, 240, 3, 64, 32, 0, 238, 240, 3, 52, 26, 0, 239, 237,
4389
+ 1, 0, 0, 0, 239, 238, 1, 0, 0, 0, 240, 244, 1, 0, 0, 0, 241, 243, 3, 20, 10, 0, 242, 241,
4390
+ 1, 0, 0, 0, 243, 246, 1, 0, 0, 0, 244, 242, 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 248,
4391
+ 1, 0, 0, 0, 246, 244, 1, 0, 0, 0, 247, 249, 3, 18, 9, 0, 248, 247, 1, 0, 0, 0, 248, 249,
4392
+ 1, 0, 0, 0, 249, 23, 1, 0, 0, 0, 250, 251, 5, 17, 0, 0, 251, 252, 3, 22, 11, 0, 252, 25,
4393
+ 1, 0, 0, 0, 253, 257, 3, 22, 11, 0, 254, 257, 3, 18, 9, 0, 255, 257, 5, 20, 0, 0, 256,
4394
+ 253, 1, 0, 0, 0, 256, 254, 1, 0, 0, 0, 256, 255, 1, 0, 0, 0, 257, 27, 1, 0, 0, 0, 258, 259,
4395
+ 7, 2, 0, 0, 259, 29, 1, 0, 0, 0, 260, 261, 5, 18, 0, 0, 261, 262, 3, 26, 13, 0, 262, 31,
4396
+ 1, 0, 0, 0, 263, 264, 5, 19, 0, 0, 264, 269, 3, 26, 13, 0, 265, 266, 5, 2, 0, 0, 266, 268,
4397
+ 3, 26, 13, 0, 267, 265, 1, 0, 0, 0, 268, 271, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 270,
4398
+ 1, 0, 0, 0, 270, 33, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 272, 273, 5, 18, 0, 0, 273, 274,
4399
+ 3, 26, 13, 0, 274, 275, 5, 19, 0, 0, 275, 280, 3, 26, 13, 0, 276, 277, 5, 2, 0, 0, 277,
4400
+ 279, 3, 26, 13, 0, 278, 276, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 280,
4401
+ 281, 1, 0, 0, 0, 281, 283, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 283, 284, 5, 1, 0, 0, 284,
4402
+ 285, 5, 66, 0, 0, 285, 288, 5, 68, 0, 0, 286, 289, 5, 66, 0, 0, 287, 289, 3, 36, 18, 0,
4403
+ 288, 286, 1, 0, 0, 0, 288, 287, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 288, 1, 0, 0, 0,
4404
+ 290, 291, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 293, 5, 69, 0, 0, 293, 35, 1, 0, 0, 0,
4405
+ 294, 295, 3, 28, 14, 0, 295, 296, 5, 1, 0, 0, 296, 301, 3, 38, 19, 0, 297, 298, 5, 2,
4406
+ 0, 0, 298, 300, 3, 38, 19, 0, 299, 297, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1,
4407
+ 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 37, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 305, 7, 3,
4408
+ 0, 0, 305, 39, 1, 0, 0, 0, 306, 307, 3, 44, 22, 0, 307, 308, 5, 66, 0, 0, 308, 311, 5,
4409
+ 68, 0, 0, 309, 312, 5, 66, 0, 0, 310, 312, 3, 42, 21, 0, 311, 309, 1, 0, 0, 0, 311, 310,
4410
+ 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 315,
4411
+ 1, 0, 0, 0, 315, 316, 5, 69, 0, 0, 316, 41, 1, 0, 0, 0, 317, 320, 3, 2, 1, 0, 318, 320,
4412
+ 3, 46, 23, 0, 319, 317, 1, 0, 0, 0, 319, 318, 1, 0, 0, 0, 320, 43, 1, 0, 0, 0, 321, 322,
4413
+ 3, 30, 15, 0, 322, 326, 5, 1, 0, 0, 323, 325, 3, 146, 73, 0, 324, 323, 1, 0, 0, 0, 325,
4414
+ 328, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 45, 1, 0, 0, 0, 328, 326,
4415
+ 1, 0, 0, 0, 329, 330, 3, 28, 14, 0, 330, 333, 5, 1, 0, 0, 331, 334, 3, 48, 24, 0, 332,
4416
+ 334, 3, 50, 25, 0, 333, 331, 1, 0, 0, 0, 333, 332, 1, 0, 0, 0, 334, 47, 1, 0, 0, 0, 335,
4417
+ 338, 3, 2, 1, 0, 336, 338, 5, 56, 0, 0, 337, 335, 1, 0, 0, 0, 337, 336, 1, 0, 0, 0, 338,
4418
+ 49, 1, 0, 0, 0, 339, 340, 3, 10, 5, 0, 340, 51, 1, 0, 0, 0, 341, 344, 3, 78, 39, 0, 342,
4419
+ 344, 3, 84, 42, 0, 343, 341, 1, 0, 0, 0, 343, 342, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345,
4420
+ 346, 5, 3, 0, 0, 346, 347, 3, 64, 32, 0, 347, 53, 1, 0, 0, 0, 348, 349, 3, 78, 39, 0, 349,
4421
+ 350, 7, 4, 0, 0, 350, 351, 3, 64, 32, 0, 351, 55, 1, 0, 0, 0, 352, 353, 5, 58, 0, 0, 353,
4422
+ 354, 5, 3, 0, 0, 354, 355, 3, 64, 32, 0, 355, 57, 1, 0, 0, 0, 356, 361, 3, 64, 32, 0, 357,
4423
+ 358, 5, 2, 0, 0, 358, 360, 3, 64, 32, 0, 359, 357, 1, 0, 0, 0, 360, 363, 1, 0, 0, 0, 361,
4424
+ 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 368, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 364,
4425
+ 365, 5, 2, 0, 0, 365, 367, 3, 56, 28, 0, 366, 364, 1, 0, 0, 0, 367, 370, 1, 0, 0, 0, 368,
4426
+ 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 380, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 371,
4427
+ 376, 3, 56, 28, 0, 372, 373, 5, 2, 0, 0, 373, 375, 3, 56, 28, 0, 374, 372, 1, 0, 0, 0,
4428
+ 375, 378, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 380, 1, 0, 0, 0,
4429
+ 378, 376, 1, 0, 0, 0, 379, 356, 1, 0, 0, 0, 379, 371, 1, 0, 0, 0, 380, 59, 1, 0, 0, 0, 381,
4430
+ 382, 3, 78, 39, 0, 382, 383, 5, 3, 0, 0, 383, 384, 3, 64, 32, 0, 384, 61, 1, 0, 0, 0, 385,
4431
+ 386, 5, 4, 0, 0, 386, 387, 5, 58, 0, 0, 387, 388, 5, 3, 0, 0, 388, 389, 3, 64, 32, 0, 389,
4432
+ 63, 1, 0, 0, 0, 390, 391, 6, 32, -1, 0, 391, 392, 5, 54, 0, 0, 392, 393, 3, 64, 32, 0,
4433
+ 393, 394, 5, 55, 0, 0, 394, 408, 1, 0, 0, 0, 395, 398, 3, 70, 35, 0, 396, 398, 3, 78,
4434
+ 39, 0, 397, 395, 1, 0, 0, 0, 397, 396, 1, 0, 0, 0, 398, 408, 1, 0, 0, 0, 399, 400, 3, 68,
4435
+ 34, 0, 400, 401, 3, 64, 32, 11, 401, 408, 1, 0, 0, 0, 402, 408, 3, 92, 46, 0, 403, 408,
4436
+ 3, 96, 48, 0, 404, 408, 3, 98, 49, 0, 405, 408, 3, 84, 42, 0, 406, 408, 3, 114, 57, 0,
4437
+ 407, 390, 1, 0, 0, 0, 407, 397, 1, 0, 0, 0, 407, 399, 1, 0, 0, 0, 407, 402, 1, 0, 0, 0,
4438
+ 407, 403, 1, 0, 0, 0, 407, 404, 1, 0, 0, 0, 407, 405, 1, 0, 0, 0, 407, 406, 1, 0, 0, 0,
4439
+ 408, 429, 1, 0, 0, 0, 409, 410, 10, 10, 0, 0, 410, 411, 7, 5, 0, 0, 411, 428, 3, 64, 32,
4440
+ 11, 412, 413, 10, 9, 0, 0, 413, 414, 7, 6, 0, 0, 414, 428, 3, 64, 32, 10, 415, 416, 10,
4441
+ 8, 0, 0, 416, 417, 3, 66, 33, 0, 417, 418, 3, 64, 32, 9, 418, 428, 1, 0, 0, 0, 419, 420,
4442
+ 10, 7, 0, 0, 420, 421, 7, 7, 0, 0, 421, 428, 3, 64, 32, 8, 422, 423, 10, 1, 0, 0, 423,
4443
+ 424, 5, 5, 0, 0, 424, 425, 3, 64, 32, 0, 425, 426, 5, 6, 0, 0, 426, 428, 1, 0, 0, 0, 427,
4444
+ 409, 1, 0, 0, 0, 427, 412, 1, 0, 0, 0, 427, 415, 1, 0, 0, 0, 427, 419, 1, 0, 0, 0, 427,
4445
+ 422, 1, 0, 0, 0, 428, 431, 1, 0, 0, 0, 429, 427, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430,
4446
+ 65, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 432, 433, 7, 8, 0, 0, 433, 67, 1, 0, 0, 0, 434, 435,
4447
+ 7, 9, 0, 0, 435, 69, 1, 0, 0, 0, 436, 438, 5, 44, 0, 0, 437, 436, 1, 0, 0, 0, 437, 438,
4448
+ 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 440, 7, 10, 0, 0, 440, 71, 1, 0, 0, 0, 441, 442,
4449
+ 5, 24, 0, 0, 442, 443, 5, 58, 0, 0, 443, 445, 5, 54, 0, 0, 444, 446, 3, 76, 38, 0, 445,
4450
+ 444, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 448, 5, 55, 0, 0, 448,
4451
+ 449, 5, 1, 0, 0, 449, 450, 5, 66, 0, 0, 450, 453, 5, 68, 0, 0, 451, 454, 5, 66, 0, 0, 452,
4452
+ 454, 3, 74, 37, 0, 453, 451, 1, 0, 0, 0, 453, 452, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455,
4453
+ 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458, 5, 69, 0, 0, 458,
4454
+ 73, 1, 0, 0, 0, 459, 462, 3, 2, 1, 0, 460, 462, 3, 88, 44, 0, 461, 459, 1, 0, 0, 0, 461,
4455
+ 460, 1, 0, 0, 0, 462, 75, 1, 0, 0, 0, 463, 468, 5, 58, 0, 0, 464, 465, 5, 2, 0, 0, 465,
4456
+ 467, 5, 58, 0, 0, 466, 464, 1, 0, 0, 0, 467, 470, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 468,
4457
+ 469, 1, 0, 0, 0, 469, 477, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 471, 472, 5, 2, 0, 0, 472,
4458
+ 473, 5, 58, 0, 0, 473, 474, 5, 3, 0, 0, 474, 476, 3, 70, 35, 0, 475, 471, 1, 0, 0, 0, 476,
4459
+ 479, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 493, 1, 0, 0, 0, 479,
4460
+ 477, 1, 0, 0, 0, 480, 481, 5, 58, 0, 0, 481, 482, 5, 3, 0, 0, 482, 489, 3, 70, 35, 0, 483,
4461
+ 484, 5, 2, 0, 0, 484, 485, 5, 58, 0, 0, 485, 486, 5, 3, 0, 0, 486, 488, 3, 70, 35, 0, 487,
4462
+ 483, 1, 0, 0, 0, 488, 491, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490,
4463
+ 493, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 492, 463, 1, 0, 0, 0, 492, 480, 1, 0, 0, 0, 493,
4464
+ 77, 1, 0, 0, 0, 494, 498, 5, 58, 0, 0, 495, 497, 3, 82, 41, 0, 496, 495, 1, 0, 0, 0, 497,
4465
+ 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 79, 1, 0, 0, 0, 500, 498,
4466
+ 1, 0, 0, 0, 501, 503, 5, 54, 0, 0, 502, 504, 3, 58, 29, 0, 503, 502, 1, 0, 0, 0, 503, 504,
4467
+ 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 508, 5, 55, 0, 0, 506, 508, 3, 82, 41, 0, 507, 501,
4468
+ 1, 0, 0, 0, 507, 506, 1, 0, 0, 0, 508, 81, 1, 0, 0, 0, 509, 510, 5, 7, 0, 0, 510, 516, 5,
4469
+ 58, 0, 0, 511, 512, 5, 5, 0, 0, 512, 513, 3, 64, 32, 0, 513, 514, 5, 6, 0, 0, 514, 516,
4470
+ 1, 0, 0, 0, 515, 509, 1, 0, 0, 0, 515, 511, 1, 0, 0, 0, 516, 83, 1, 0, 0, 0, 517, 519, 3,
4471
+ 86, 43, 0, 518, 517, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 522,
4472
+ 5, 58, 0, 0, 521, 523, 3, 80, 40, 0, 522, 521, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 522,
4473
+ 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 85, 1, 0, 0, 0, 526, 528, 5, 43, 0, 0, 527, 526,
4474
+ 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 531, 5, 45, 0, 0, 530, 532,
4475
+ 3, 64, 32, 0, 531, 530, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 87, 1, 0, 0, 0, 533, 534,
4476
+ 5, 23, 0, 0, 534, 535, 3, 64, 32, 0, 535, 89, 1, 0, 0, 0, 536, 537, 3, 106, 53, 0, 537,
4477
+ 538, 5, 1, 0, 0, 538, 539, 3, 10, 5, 0, 539, 91, 1, 0, 0, 0, 540, 541, 5, 11, 0, 0, 541,
4478
+ 542, 5, 12, 0, 0, 542, 543, 5, 1, 0, 0, 543, 544, 5, 66, 0, 0, 544, 547, 5, 68, 0, 0, 545,
4479
+ 548, 5, 66, 0, 0, 546, 548, 3, 104, 52, 0, 547, 545, 1, 0, 0, 0, 547, 546, 1, 0, 0, 0,
4480
+ 548, 549, 1, 0, 0, 0, 549, 547, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0,
4481
+ 551, 552, 5, 69, 0, 0, 552, 93, 1, 0, 0, 0, 553, 554, 5, 66, 0, 0, 554, 557, 5, 68, 0,
4482
+ 0, 555, 558, 5, 66, 0, 0, 556, 558, 3, 102, 51, 0, 557, 555, 1, 0, 0, 0, 557, 556, 1,
4483
+ 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 561, 1,
4484
+ 0, 0, 0, 561, 562, 5, 69, 0, 0, 562, 95, 1, 0, 0, 0, 563, 564, 5, 11, 0, 0, 564, 568, 5,
4485
+ 13, 0, 0, 565, 566, 5, 54, 0, 0, 566, 567, 5, 58, 0, 0, 567, 569, 5, 55, 0, 0, 568, 565,
4486
+ 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 5, 1, 0, 0, 571, 572,
4487
+ 3, 94, 47, 0, 572, 97, 1, 0, 0, 0, 573, 574, 5, 11, 0, 0, 574, 575, 5, 14, 0, 0, 575, 576,
4488
+ 5, 1, 0, 0, 576, 577, 5, 66, 0, 0, 577, 581, 5, 68, 0, 0, 578, 582, 5, 66, 0, 0, 579, 582,
4489
+ 3, 104, 52, 0, 580, 582, 3, 90, 45, 0, 581, 578, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, 581,
4490
+ 580, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 581, 1, 0, 0, 0, 583, 584, 1, 0, 0, 0, 584,
4491
+ 585, 1, 0, 0, 0, 585, 586, 5, 69, 0, 0, 586, 99, 1, 0, 0, 0, 587, 588, 5, 66, 0, 0, 588,
4492
+ 591, 5, 68, 0, 0, 589, 592, 5, 66, 0, 0, 590, 592, 3, 104, 52, 0, 591, 589, 1, 0, 0, 0,
4493
+ 591, 590, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0,
4494
+ 594, 595, 1, 0, 0, 0, 595, 596, 5, 69, 0, 0, 596, 101, 1, 0, 0, 0, 597, 599, 7, 11, 0,
4495
+ 0, 598, 600, 5, 1, 0, 0, 599, 598, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0, 600, 607, 1, 0, 0,
4496
+ 0, 601, 608, 3, 58, 29, 0, 602, 603, 5, 54, 0, 0, 603, 604, 3, 58, 29, 0, 604, 605, 5,
4497
+ 55, 0, 0, 605, 608, 1, 0, 0, 0, 606, 608, 3, 100, 50, 0, 607, 601, 1, 0, 0, 0, 607, 602,
4498
+ 1, 0, 0, 0, 607, 606, 1, 0, 0, 0, 608, 624, 1, 0, 0, 0, 609, 610, 5, 26, 0, 0, 610, 615,
4499
+ 5, 58, 0, 0, 611, 612, 5, 2, 0, 0, 612, 614, 5, 58, 0, 0, 613, 611, 1, 0, 0, 0, 614, 617,
4500
+ 1, 0, 0, 0, 615, 613, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 618, 1, 0, 0, 0, 617, 615,
4501
+ 1, 0, 0, 0, 618, 619, 5, 27, 0, 0, 619, 620, 3, 64, 32, 0, 620, 621, 5, 1, 0, 0, 621, 622,
4502
+ 3, 94, 47, 0, 622, 624, 1, 0, 0, 0, 623, 597, 1, 0, 0, 0, 623, 609, 1, 0, 0, 0, 624, 103,
4503
+ 1, 0, 0, 0, 625, 626, 3, 106, 53, 0, 626, 627, 5, 1, 0, 0, 627, 628, 3, 108, 54, 0, 628,
4504
+ 105, 1, 0, 0, 0, 629, 630, 7, 12, 0, 0, 630, 107, 1, 0, 0, 0, 631, 641, 3, 100, 50, 0,
4505
+ 632, 637, 3, 64, 32, 0, 633, 634, 5, 2, 0, 0, 634, 636, 3, 64, 32, 0, 635, 633, 1, 0,
4506
+ 0, 0, 636, 639, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 637, 638, 1, 0, 0, 0, 638, 641, 1, 0,
4507
+ 0, 0, 639, 637, 1, 0, 0, 0, 640, 631, 1, 0, 0, 0, 640, 632, 1, 0, 0, 0, 641, 109, 1, 0,
4508
+ 0, 0, 642, 645, 5, 58, 0, 0, 643, 646, 5, 59, 0, 0, 644, 646, 3, 64, 32, 0, 645, 643,
4509
+ 1, 0, 0, 0, 645, 644, 1, 0, 0, 0, 646, 649, 1, 0, 0, 0, 647, 649, 5, 58, 0, 0, 648, 642,
4510
+ 1, 0, 0, 0, 648, 647, 1, 0, 0, 0, 649, 111, 1, 0, 0, 0, 650, 654, 5, 15, 0, 0, 651, 653,
4511
+ 3, 110, 55, 0, 652, 651, 1, 0, 0, 0, 653, 656, 1, 0, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655,
4512
+ 1, 0, 0, 0, 655, 113, 1, 0, 0, 0, 656, 654, 1, 0, 0, 0, 657, 668, 5, 5, 0, 0, 658, 663,
4513
+ 3, 64, 32, 0, 659, 660, 5, 2, 0, 0, 660, 662, 3, 64, 32, 0, 661, 659, 1, 0, 0, 0, 662,
4514
+ 665, 1, 0, 0, 0, 663, 661, 1, 0, 0, 0, 663, 664, 1, 0, 0, 0, 664, 667, 1, 0, 0, 0, 665,
4515
+ 663, 1, 0, 0, 0, 666, 658, 1, 0, 0, 0, 667, 670, 1, 0, 0, 0, 668, 666, 1, 0, 0, 0, 668,
4516
+ 669, 1, 0, 0, 0, 669, 671, 1, 0, 0, 0, 670, 668, 1, 0, 0, 0, 671, 672, 5, 6, 0, 0, 672,
4517
+ 115, 1, 0, 0, 0, 673, 676, 5, 20, 0, 0, 674, 677, 5, 58, 0, 0, 675, 677, 3, 64, 32, 0,
4518
+ 676, 674, 1, 0, 0, 0, 676, 675, 1, 0, 0, 0, 677, 117, 1, 0, 0, 0, 678, 679, 5, 25, 0, 0,
4519
+ 679, 680, 5, 58, 0, 0, 680, 119, 1, 0, 0, 0, 681, 682, 7, 13, 0, 0, 682, 683, 5, 1, 0,
4520
+ 0, 683, 684, 3, 10, 5, 0, 684, 121, 1, 0, 0, 0, 685, 686, 5, 30, 0, 0, 686, 687, 3, 64,
4521
+ 32, 0, 687, 688, 5, 1, 0, 0, 688, 692, 3, 10, 5, 0, 689, 691, 3, 124, 62, 0, 690, 689,
4522
+ 1, 0, 0, 0, 691, 694, 1, 0, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 696,
4523
+ 1, 0, 0, 0, 694, 692, 1, 0, 0, 0, 695, 697, 3, 126, 63, 0, 696, 695, 1, 0, 0, 0, 696, 697,
4524
+ 1, 0, 0, 0, 697, 123, 1, 0, 0, 0, 698, 699, 5, 31, 0, 0, 699, 700, 5, 30, 0, 0, 700, 701,
4525
+ 3, 64, 32, 0, 701, 702, 5, 1, 0, 0, 702, 703, 3, 10, 5, 0, 703, 125, 1, 0, 0, 0, 704, 705,
4526
+ 5, 31, 0, 0, 705, 706, 5, 1, 0, 0, 706, 707, 3, 10, 5, 0, 707, 127, 1, 0, 0, 0, 708, 709,
4527
+ 5, 28, 0, 0, 709, 710, 3, 64, 32, 0, 710, 711, 5, 1, 0, 0, 711, 712, 3, 10, 5, 0, 712,
4528
+ 129, 1, 0, 0, 0, 713, 714, 5, 26, 0, 0, 714, 719, 5, 58, 0, 0, 715, 716, 5, 2, 0, 0, 716,
4529
+ 718, 5, 58, 0, 0, 717, 715, 1, 0, 0, 0, 718, 721, 1, 0, 0, 0, 719, 717, 1, 0, 0, 0, 719,
4530
+ 720, 1, 0, 0, 0, 720, 722, 1, 0, 0, 0, 721, 719, 1, 0, 0, 0, 722, 723, 5, 27, 0, 0, 723,
4531
+ 724, 3, 64, 32, 0, 724, 725, 5, 1, 0, 0, 725, 726, 3, 10, 5, 0, 726, 131, 1, 0, 0, 0, 727,
4532
+ 728, 5, 8, 0, 0, 728, 729, 5, 1, 0, 0, 729, 734, 3, 64, 32, 0, 730, 731, 5, 2, 0, 0, 731,
4533
+ 733, 3, 64, 32, 0, 732, 730, 1, 0, 0, 0, 733, 736, 1, 0, 0, 0, 734, 732, 1, 0, 0, 0, 734,
4534
+ 735, 1, 0, 0, 0, 735, 737, 1, 0, 0, 0, 736, 734, 1, 0, 0, 0, 737, 738, 5, 1, 0, 0, 738,
4535
+ 739, 3, 136, 68, 0, 739, 133, 1, 0, 0, 0, 740, 741, 7, 14, 0, 0, 741, 135, 1, 0, 0, 0,
4536
+ 742, 743, 5, 66, 0, 0, 743, 746, 5, 68, 0, 0, 744, 747, 5, 66, 0, 0, 745, 747, 3, 138,
4537
+ 69, 0, 746, 744, 1, 0, 0, 0, 746, 745, 1, 0, 0, 0, 747, 748, 1, 0, 0, 0, 748, 746, 1, 0,
4538
+ 0, 0, 748, 749, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 751, 5, 69, 0, 0, 751, 137, 1, 0,
4539
+ 0, 0, 752, 756, 3, 140, 70, 0, 753, 756, 3, 144, 72, 0, 754, 756, 3, 142, 71, 0, 755,
4540
+ 752, 1, 0, 0, 0, 755, 753, 1, 0, 0, 0, 755, 754, 1, 0, 0, 0, 756, 139, 1, 0, 0, 0, 757,
4541
+ 758, 3, 134, 67, 0, 758, 759, 5, 1, 0, 0, 759, 767, 3, 64, 32, 0, 760, 761, 5, 2, 0, 0,
4542
+ 761, 762, 3, 134, 67, 0, 762, 763, 5, 1, 0, 0, 763, 764, 3, 64, 32, 0, 764, 766, 1, 0,
4543
+ 0, 0, 765, 760, 1, 0, 0, 0, 766, 769, 1, 0, 0, 0, 767, 765, 1, 0, 0, 0, 767, 768, 1, 0,
4544
+ 0, 0, 768, 774, 1, 0, 0, 0, 769, 767, 1, 0, 0, 0, 770, 771, 5, 2, 0, 0, 771, 773, 3, 134,
4545
+ 67, 0, 772, 770, 1, 0, 0, 0, 773, 776, 1, 0, 0, 0, 774, 772, 1, 0, 0, 0, 774, 775, 1, 0,
4546
+ 0, 0, 775, 777, 1, 0, 0, 0, 776, 774, 1, 0, 0, 0, 777, 787, 5, 1, 0, 0, 778, 788, 3, 136,
4547
+ 68, 0, 779, 784, 3, 64, 32, 0, 780, 781, 5, 2, 0, 0, 781, 783, 3, 64, 32, 0, 782, 780,
4548
+ 1, 0, 0, 0, 783, 786, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 788,
4549
+ 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 787, 778, 1, 0, 0, 0, 787, 779, 1, 0, 0, 0, 788, 141,
4550
+ 1, 0, 0, 0, 789, 790, 3, 134, 67, 0, 790, 791, 5, 1, 0, 0, 791, 792, 3, 136, 68, 0, 792,
4551
+ 143, 1, 0, 0, 0, 793, 794, 3, 134, 67, 0, 794, 795, 5, 1, 0, 0, 795, 800, 3, 64, 32, 0,
4552
+ 796, 797, 5, 2, 0, 0, 797, 799, 3, 64, 32, 0, 798, 796, 1, 0, 0, 0, 799, 802, 1, 0, 0,
4553
+ 0, 800, 798, 1, 0, 0, 0, 800, 801, 1, 0, 0, 0, 801, 145, 1, 0, 0, 0, 802, 800, 1, 0, 0,
4554
+ 0, 803, 804, 5, 53, 0, 0, 804, 805, 5, 58, 0, 0, 805, 147, 1, 0, 0, 0, 87, 150, 152, 157,
4555
+ 159, 177, 184, 188, 196, 202, 204, 218, 220, 235, 239, 244, 248, 256, 269, 280,
4556
+ 288, 290, 301, 311, 313, 319, 326, 333, 337, 343, 361, 368, 376, 379, 397, 407,
4557
+ 427, 429, 437, 445, 453, 455, 461, 468, 477, 489, 492, 498, 503, 507, 515, 518,
4558
+ 524, 527, 531, 547, 549, 557, 559, 568, 581, 583, 591, 593, 599, 607, 615, 623,
4559
+ 637, 640, 645, 648, 654, 663, 668, 676, 692, 696, 719, 734, 746, 748, 755, 767,
4560
+ 774, 784, 787, 800
4112
4561
  ];
4113
4562
  CircuitScriptParser.vocabulary = new antlr.Vocabulary(CircuitScriptParser.literalNames, CircuitScriptParser.symbolicNames, []);
4114
4563
  CircuitScriptParser.decisionsToDFA = CircuitScriptParser._ATN.decisionToState.map((ds, index) => new antlr.DFA(ds, index));
@@ -4195,6 +4644,9 @@ class ExpressionContext extends antlr.ParserRuleContext {
4195
4644
  annotation_comment_expr() {
4196
4645
  return this.getRuleContext(0, Annotation_comment_exprContext);
4197
4646
  }
4647
+ part_set_expr() {
4648
+ return this.getRuleContext(0, Part_set_exprContext);
4649
+ }
4198
4650
  get ruleIndex() {
4199
4651
  return CircuitScriptParser.RULE_expression;
4200
4652
  }
@@ -4805,8 +5257,11 @@ class At_block_headerContext extends antlr.ParserRuleContext {
4805
5257
  at_component_expr() {
4806
5258
  return this.getRuleContext(0, At_component_exprContext);
4807
5259
  }
4808
- annotation_comment_expr() {
4809
- return this.getRuleContext(0, Annotation_comment_exprContext);
5260
+ annotation_comment_expr(i) {
5261
+ if (i === undefined) {
5262
+ return this.getRuleContexts(Annotation_comment_exprContext);
5263
+ }
5264
+ return this.getRuleContext(i, Annotation_comment_exprContext);
4810
5265
  }
4811
5266
  get ruleIndex() {
4812
5267
  return CircuitScriptParser.RULE_at_block_header;
@@ -6409,6 +6864,211 @@ class For_exprContext extends antlr.ParserRuleContext {
6409
6864
  }
6410
6865
  }
6411
6866
  exports.For_exprContext = For_exprContext;
6867
+ class Part_set_exprContext extends antlr.ParserRuleContext {
6868
+ constructor(parent, invokingState) {
6869
+ super(parent, invokingState);
6870
+ }
6871
+ data_expr(i) {
6872
+ if (i === undefined) {
6873
+ return this.getRuleContexts(Data_exprContext);
6874
+ }
6875
+ return this.getRuleContext(i, Data_exprContext);
6876
+ }
6877
+ part_match_block() {
6878
+ return this.getRuleContext(0, Part_match_blockContext);
6879
+ }
6880
+ get ruleIndex() {
6881
+ return CircuitScriptParser.RULE_part_set_expr;
6882
+ }
6883
+ accept(visitor) {
6884
+ if (visitor.visitPart_set_expr) {
6885
+ return visitor.visitPart_set_expr(this);
6886
+ }
6887
+ else {
6888
+ return visitor.visitChildren(this);
6889
+ }
6890
+ }
6891
+ }
6892
+ exports.Part_set_exprContext = Part_set_exprContext;
6893
+ class Part_set_keyContext extends antlr.ParserRuleContext {
6894
+ constructor(parent, invokingState) {
6895
+ super(parent, invokingState);
6896
+ }
6897
+ ID() {
6898
+ return this.getToken(CircuitScriptParser.ID, 0);
6899
+ }
6900
+ INTEGER_VALUE() {
6901
+ return this.getToken(CircuitScriptParser.INTEGER_VALUE, 0);
6902
+ }
6903
+ NUMERIC_VALUE() {
6904
+ return this.getToken(CircuitScriptParser.NUMERIC_VALUE, 0);
6905
+ }
6906
+ STRING_VALUE() {
6907
+ return this.getToken(CircuitScriptParser.STRING_VALUE, 0);
6908
+ }
6909
+ PERCENTAGE_VALUE() {
6910
+ return this.getToken(CircuitScriptParser.PERCENTAGE_VALUE, 0);
6911
+ }
6912
+ get ruleIndex() {
6913
+ return CircuitScriptParser.RULE_part_set_key;
6914
+ }
6915
+ accept(visitor) {
6916
+ if (visitor.visitPart_set_key) {
6917
+ return visitor.visitPart_set_key(this);
6918
+ }
6919
+ else {
6920
+ return visitor.visitChildren(this);
6921
+ }
6922
+ }
6923
+ }
6924
+ exports.Part_set_keyContext = Part_set_keyContext;
6925
+ class Part_match_blockContext extends antlr.ParserRuleContext {
6926
+ constructor(parent, invokingState) {
6927
+ super(parent, invokingState);
6928
+ }
6929
+ NEWLINE(i) {
6930
+ if (i === undefined) {
6931
+ return this.getTokens(CircuitScriptParser.NEWLINE);
6932
+ }
6933
+ else {
6934
+ return this.getToken(CircuitScriptParser.NEWLINE, i);
6935
+ }
6936
+ }
6937
+ INDENT() {
6938
+ return this.getToken(CircuitScriptParser.INDENT, 0);
6939
+ }
6940
+ DEDENT() {
6941
+ return this.getToken(CircuitScriptParser.DEDENT, 0);
6942
+ }
6943
+ part_sub_expr(i) {
6944
+ if (i === undefined) {
6945
+ return this.getRuleContexts(Part_sub_exprContext);
6946
+ }
6947
+ return this.getRuleContext(i, Part_sub_exprContext);
6948
+ }
6949
+ get ruleIndex() {
6950
+ return CircuitScriptParser.RULE_part_match_block;
6951
+ }
6952
+ accept(visitor) {
6953
+ if (visitor.visitPart_match_block) {
6954
+ return visitor.visitPart_match_block(this);
6955
+ }
6956
+ else {
6957
+ return visitor.visitChildren(this);
6958
+ }
6959
+ }
6960
+ }
6961
+ exports.Part_match_blockContext = Part_match_blockContext;
6962
+ class Part_sub_exprContext extends antlr.ParserRuleContext {
6963
+ constructor(parent, invokingState) {
6964
+ super(parent, invokingState);
6965
+ }
6966
+ part_condition_expr() {
6967
+ return this.getRuleContext(0, Part_condition_exprContext);
6968
+ }
6969
+ part_value_expr() {
6970
+ return this.getRuleContext(0, Part_value_exprContext);
6971
+ }
6972
+ part_condition_key_only_expr() {
6973
+ return this.getRuleContext(0, Part_condition_key_only_exprContext);
6974
+ }
6975
+ get ruleIndex() {
6976
+ return CircuitScriptParser.RULE_part_sub_expr;
6977
+ }
6978
+ accept(visitor) {
6979
+ if (visitor.visitPart_sub_expr) {
6980
+ return visitor.visitPart_sub_expr(this);
6981
+ }
6982
+ else {
6983
+ return visitor.visitChildren(this);
6984
+ }
6985
+ }
6986
+ }
6987
+ exports.Part_sub_exprContext = Part_sub_exprContext;
6988
+ class Part_condition_exprContext extends antlr.ParserRuleContext {
6989
+ constructor(parent, invokingState) {
6990
+ super(parent, invokingState);
6991
+ this._key_id = [];
6992
+ this._values = [];
6993
+ this._last_data = [];
6994
+ }
6995
+ part_set_key(i) {
6996
+ if (i === undefined) {
6997
+ return this.getRuleContexts(Part_set_keyContext);
6998
+ }
6999
+ return this.getRuleContext(i, Part_set_keyContext);
7000
+ }
7001
+ data_expr(i) {
7002
+ if (i === undefined) {
7003
+ return this.getRuleContexts(Data_exprContext);
7004
+ }
7005
+ return this.getRuleContext(i, Data_exprContext);
7006
+ }
7007
+ part_match_block() {
7008
+ return this.getRuleContext(0, Part_match_blockContext);
7009
+ }
7010
+ get ruleIndex() {
7011
+ return CircuitScriptParser.RULE_part_condition_expr;
7012
+ }
7013
+ accept(visitor) {
7014
+ if (visitor.visitPart_condition_expr) {
7015
+ return visitor.visitPart_condition_expr(this);
7016
+ }
7017
+ else {
7018
+ return visitor.visitChildren(this);
7019
+ }
7020
+ }
7021
+ }
7022
+ exports.Part_condition_exprContext = Part_condition_exprContext;
7023
+ class Part_condition_key_only_exprContext extends antlr.ParserRuleContext {
7024
+ constructor(parent, invokingState) {
7025
+ super(parent, invokingState);
7026
+ }
7027
+ part_set_key() {
7028
+ return this.getRuleContext(0, Part_set_keyContext);
7029
+ }
7030
+ part_match_block() {
7031
+ return this.getRuleContext(0, Part_match_blockContext);
7032
+ }
7033
+ get ruleIndex() {
7034
+ return CircuitScriptParser.RULE_part_condition_key_only_expr;
7035
+ }
7036
+ accept(visitor) {
7037
+ if (visitor.visitPart_condition_key_only_expr) {
7038
+ return visitor.visitPart_condition_key_only_expr(this);
7039
+ }
7040
+ else {
7041
+ return visitor.visitChildren(this);
7042
+ }
7043
+ }
7044
+ }
7045
+ exports.Part_condition_key_only_exprContext = Part_condition_key_only_exprContext;
7046
+ class Part_value_exprContext extends antlr.ParserRuleContext {
7047
+ constructor(parent, invokingState) {
7048
+ super(parent, invokingState);
7049
+ }
7050
+ part_set_key() {
7051
+ return this.getRuleContext(0, Part_set_keyContext);
7052
+ }
7053
+ data_expr(i) {
7054
+ if (i === undefined) {
7055
+ return this.getRuleContexts(Data_exprContext);
7056
+ }
7057
+ return this.getRuleContext(i, Data_exprContext);
7058
+ }
7059
+ get ruleIndex() {
7060
+ return CircuitScriptParser.RULE_part_value_expr;
7061
+ }
7062
+ accept(visitor) {
7063
+ if (visitor.visitPart_value_expr) {
7064
+ return visitor.visitPart_value_expr(this);
7065
+ }
7066
+ else {
7067
+ return visitor.visitChildren(this);
7068
+ }
7069
+ }
7070
+ }
7071
+ exports.Part_value_exprContext = Part_value_exprContext;
6412
7072
  class Annotation_comment_exprContext extends antlr.ParserRuleContext {
6413
7073
  constructor(parent, invokingState) {
6414
7074
  super(parent, invokingState);