circuitscript 0.0.25 → 0.0.26

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 (41) hide show
  1. package/LICENSE +1 -1
  2. package/dist/cjs/BaseVisitor.js +9 -11
  3. package/dist/cjs/SemanticTokenVisitor.js +3 -3
  4. package/dist/cjs/antlr/CircuitScriptLexer.js +189 -166
  5. package/dist/cjs/antlr/CircuitScriptParser.js +1139 -622
  6. package/dist/cjs/draw_symbols.js +6 -0
  7. package/dist/cjs/execute.js +24 -30
  8. package/dist/cjs/export.js +91 -5
  9. package/dist/cjs/globals.js +1 -2
  10. package/dist/cjs/helpers.js +5 -2
  11. package/dist/cjs/main.js +21 -9
  12. package/dist/cjs/objects/ClassComponent.js +1 -0
  13. package/dist/cjs/render.js +1 -1
  14. package/dist/cjs/visitor.js +83 -14
  15. package/dist/esm/BaseVisitor.mjs +9 -11
  16. package/dist/esm/SemanticTokenVisitor.mjs +3 -3
  17. package/dist/esm/antlr/CircuitScriptLexer.mjs +189 -166
  18. package/dist/esm/antlr/CircuitScriptParser.mjs +1132 -619
  19. package/dist/esm/antlr/CircuitScriptVisitor.mjs +5 -1
  20. package/dist/esm/draw_symbols.mjs +7 -1
  21. package/dist/esm/execute.mjs +23 -26
  22. package/dist/esm/export.mjs +89 -6
  23. package/dist/esm/globals.mjs +1 -2
  24. package/dist/esm/helpers.mjs +6 -3
  25. package/dist/esm/main.mjs +21 -9
  26. package/dist/esm/objects/ClassComponent.mjs +1 -0
  27. package/dist/esm/render.mjs +2 -2
  28. package/dist/esm/visitor.mjs +84 -15
  29. package/dist/types/BaseVisitor.d.ts +0 -3
  30. package/dist/types/SemanticTokenVisitor.d.ts +2 -2
  31. package/dist/types/antlr/CircuitScriptLexer.d.ts +29 -22
  32. package/dist/types/antlr/CircuitScriptParser.d.ts +97 -29
  33. package/dist/types/antlr/CircuitScriptVisitor.d.ts +10 -2
  34. package/dist/types/draw_symbols.d.ts +3 -3
  35. package/dist/types/execute.d.ts +2 -4
  36. package/dist/types/export.d.ts +27 -1
  37. package/dist/types/globals.d.ts +2 -3
  38. package/dist/types/objects/ClassComponent.d.ts +1 -0
  39. package/dist/types/visitor.d.ts +5 -2
  40. package/libs/lib.cst +8 -7
  41. package/package.json +1 -1
@@ -24,30 +24,37 @@ export class CircuitScriptParser extends antlr.Parser {
24
24
  static Define = 22;
25
25
  static Import = 23;
26
26
  static If = 24;
27
- static Not = 25;
28
- static Frame = 26;
29
- static Equals = 27;
30
- static NotEquals = 28;
31
- static Addition = 29;
32
- static Minus = 30;
33
- static Divide = 31;
34
- static Multiply = 32;
35
- static OPEN_PAREN = 33;
36
- static CLOSE_PAREN = 34;
37
- static NOT_CONNECTED = 35;
38
- static BOOLEAN_VALUE = 36;
39
- static ID = 37;
40
- static INTEGER_VALUE = 38;
41
- static DECIMAL_VALUE = 39;
42
- static NUMERIC_VALUE = 40;
43
- static STRING_VALUE = 41;
44
- static PERCENTAGE_VALUE = 42;
45
- static ALPHA_NUMERIC = 43;
46
- static WS = 44;
47
- static NEWLINE = 45;
48
- static COMMENT = 46;
49
- static INDENT = 47;
50
- static DEDENT = 48;
27
+ static Else = 25;
28
+ static Not = 26;
29
+ static Frame = 27;
30
+ static Equals = 28;
31
+ static NotEquals = 29;
32
+ static GreaterThan = 30;
33
+ static GreatOrEqualThan = 31;
34
+ static LessThan = 32;
35
+ static LessOrEqualThan = 33;
36
+ static LogicalAnd = 34;
37
+ static LogicalOr = 35;
38
+ static Addition = 36;
39
+ static Minus = 37;
40
+ static Divide = 38;
41
+ static Multiply = 39;
42
+ static OPEN_PAREN = 40;
43
+ static CLOSE_PAREN = 41;
44
+ static NOT_CONNECTED = 42;
45
+ static BOOLEAN_VALUE = 43;
46
+ static ID = 44;
47
+ static INTEGER_VALUE = 45;
48
+ static DECIMAL_VALUE = 46;
49
+ static NUMERIC_VALUE = 47;
50
+ static STRING_VALUE = 48;
51
+ static PERCENTAGE_VALUE = 49;
52
+ static ALPHA_NUMERIC = 50;
53
+ static WS = 51;
54
+ static NEWLINE = 52;
55
+ static COMMENT = 53;
56
+ static INDENT = 54;
57
+ static DEDENT = 55;
51
58
  static RULE_script = 0;
52
59
  static RULE_expression = 1;
53
60
  static RULE_path_blocks = 2;
@@ -90,7 +97,7 @@ export class CircuitScriptParser extends antlr.Parser {
90
97
  static RULE_function_return_expr = 39;
91
98
  static RULE_create_component_expr = 40;
92
99
  static RULE_create_graphic_expr = 41;
93
- static RULE_sub_expr = 42;
100
+ static RULE_graphic_expr = 42;
94
101
  static RULE_property_expr = 43;
95
102
  static RULE_property_key_expr = 44;
96
103
  static RULE_property_value_expr = 45;
@@ -100,22 +107,27 @@ export class CircuitScriptParser extends antlr.Parser {
100
107
  static RULE_point_expr = 49;
101
108
  static RULE_import_expr = 50;
102
109
  static RULE_frame_expr = 51;
110
+ static RULE_if_expr = 52;
111
+ static RULE_if_inner_expr = 53;
112
+ static RULE_else_expr = 54;
103
113
  static literalNames = [
104
114
  null, "':'", "','", "'='", "'..'", "'.'", "'['", "']'", "'break'",
105
115
  "'branch'", "'create'", "'component'", "'graphic'", "'wire'", "'pin'",
106
116
  "'add'", "'at'", "'to'", "'point'", "'join'", "'parallel'", "'return'",
107
- "'def'", "'import'", "'if'", "'!'", "'frame'", "'=='", "'!='", "'+'",
108
- "'-'", "'/'", "'*'", "'('", "')'"
117
+ "'def'", "'import'", "'if'", "'else'", "'!'", "'frame'", "'=='",
118
+ "'!='", "'>'", "'>='", "'<'", "'<='", "'&&'", "'||'", "'+'", "'-'",
119
+ "'/'", "'*'", "'('", "')'"
109
120
  ];
110
121
  static symbolicNames = [
111
122
  null, null, null, null, null, null, null, null, "Break", "Branch",
112
123
  "Create", "Component", "Graphic", "Wire", "Pin", "Add", "At", "To",
113
124
  "Point", "Join", "Parallel", "Return", "Define", "Import", "If",
114
- "Not", "Frame", "Equals", "NotEquals", "Addition", "Minus", "Divide",
115
- "Multiply", "OPEN_PAREN", "CLOSE_PAREN", "NOT_CONNECTED", "BOOLEAN_VALUE",
116
- "ID", "INTEGER_VALUE", "DECIMAL_VALUE", "NUMERIC_VALUE", "STRING_VALUE",
117
- "PERCENTAGE_VALUE", "ALPHA_NUMERIC", "WS", "NEWLINE", "COMMENT",
118
- "INDENT", "DEDENT"
125
+ "Else", "Not", "Frame", "Equals", "NotEquals", "GreaterThan", "GreatOrEqualThan",
126
+ "LessThan", "LessOrEqualThan", "LogicalAnd", "LogicalOr", "Addition",
127
+ "Minus", "Divide", "Multiply", "OPEN_PAREN", "CLOSE_PAREN", "NOT_CONNECTED",
128
+ "BOOLEAN_VALUE", "ID", "INTEGER_VALUE", "DECIMAL_VALUE", "NUMERIC_VALUE",
129
+ "STRING_VALUE", "PERCENTAGE_VALUE", "ALPHA_NUMERIC", "WS", "NEWLINE",
130
+ "COMMENT", "INDENT", "DEDENT"
119
131
  ];
120
132
  static ruleNames = [
121
133
  "script", "expression", "path_blocks", "path_block_inner", "property_set_expr2",
@@ -129,9 +141,10 @@ export class CircuitScriptParser extends antlr.Parser {
129
141
  "data_expr", "binary_operator", "unary_operator", "value_expr",
130
142
  "function_def_expr", "function_expr", "function_args_expr", "atom_expr",
131
143
  "trailer_expr", "function_call_expr", "net_namespace_expr", "function_return_expr",
132
- "create_component_expr", "create_graphic_expr", "sub_expr", "property_expr",
133
- "property_key_expr", "property_value_expr", "blank_expr", "wire_atom_expr",
134
- "wire_expr", "point_expr", "import_expr", "frame_expr",
144
+ "create_component_expr", "create_graphic_expr", "graphic_expr",
145
+ "property_expr", "property_key_expr", "property_value_expr", "blank_expr",
146
+ "wire_atom_expr", "wire_expr", "point_expr", "import_expr", "frame_expr",
147
+ "if_expr", "if_inner_expr", "else_expr",
135
148
  ];
136
149
  get grammarFileName() { return "CircuitScript.g4"; }
137
150
  get literalNames() { return CircuitScriptParser.literalNames; }
@@ -152,12 +165,12 @@ export class CircuitScriptParser extends antlr.Parser {
152
165
  try {
153
166
  this.enterOuterAlt(localContext, 1);
154
167
  {
155
- this.state = 106;
168
+ this.state = 112;
156
169
  this.errorHandler.sync(this);
157
170
  _la = this.tokenStream.LA(1);
158
171
  do {
159
172
  {
160
- this.state = 106;
173
+ this.state = 112;
161
174
  this.errorHandler.sync(this);
162
175
  switch (this.tokenStream.LA(1)) {
163
176
  case CircuitScriptParser.T__3:
@@ -172,18 +185,19 @@ export class CircuitScriptParser extends antlr.Parser {
172
185
  case CircuitScriptParser.Parallel:
173
186
  case CircuitScriptParser.Define:
174
187
  case CircuitScriptParser.Import:
188
+ case CircuitScriptParser.If:
175
189
  case CircuitScriptParser.Frame:
176
190
  case CircuitScriptParser.Addition:
177
191
  case CircuitScriptParser.Divide:
178
192
  case CircuitScriptParser.ID:
179
193
  {
180
- this.state = 104;
194
+ this.state = 110;
181
195
  this.expression();
182
196
  }
183
197
  break;
184
198
  case CircuitScriptParser.NEWLINE:
185
199
  {
186
- this.state = 105;
200
+ this.state = 111;
187
201
  this.match(CircuitScriptParser.NEWLINE);
188
202
  }
189
203
  break;
@@ -191,11 +205,11 @@ export class CircuitScriptParser extends antlr.Parser {
191
205
  throw new antlr.NoViableAltException(this);
192
206
  }
193
207
  }
194
- this.state = 108;
208
+ this.state = 114;
195
209
  this.errorHandler.sync(this);
196
210
  _la = this.tokenStream.LA(1);
197
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || _la === 37 || _la === 45);
198
- this.state = 110;
211
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
212
+ this.state = 116;
199
213
  this.match(CircuitScriptParser.EOF);
200
214
  }
201
215
  }
@@ -217,128 +231,135 @@ export class CircuitScriptParser extends antlr.Parser {
217
231
  let localContext = new ExpressionContext(this.context, this.state);
218
232
  this.enterRule(localContext, 2, CircuitScriptParser.RULE_expression);
219
233
  try {
220
- this.state = 129;
234
+ this.state = 136;
221
235
  this.errorHandler.sync(this);
222
236
  switch (this.interpreter.adaptivePredict(this.tokenStream, 2, this.context)) {
223
237
  case 1:
224
238
  this.enterOuterAlt(localContext, 1);
225
239
  {
226
- this.state = 112;
240
+ this.state = 118;
227
241
  this.add_component_expr();
228
242
  }
229
243
  break;
230
244
  case 2:
231
245
  this.enterOuterAlt(localContext, 2);
232
246
  {
233
- this.state = 113;
247
+ this.state = 119;
234
248
  this.to_component_expr();
235
249
  }
236
250
  break;
237
251
  case 3:
238
252
  this.enterOuterAlt(localContext, 3);
239
253
  {
240
- this.state = 114;
254
+ this.state = 120;
241
255
  this.at_component_expr();
242
256
  }
243
257
  break;
244
258
  case 4:
245
259
  this.enterOuterAlt(localContext, 4);
246
260
  {
247
- this.state = 115;
261
+ this.state = 121;
248
262
  this.assignment_expr();
249
263
  }
250
264
  break;
251
265
  case 5:
252
266
  this.enterOuterAlt(localContext, 5);
253
267
  {
254
- this.state = 116;
268
+ this.state = 122;
255
269
  this.property_set_expr();
256
270
  }
257
271
  break;
258
272
  case 6:
259
273
  this.enterOuterAlt(localContext, 6);
260
274
  {
261
- this.state = 117;
275
+ this.state = 123;
262
276
  this.property_set_expr2();
263
277
  }
264
278
  break;
265
279
  case 7:
266
280
  this.enterOuterAlt(localContext, 7);
267
281
  {
268
- this.state = 118;
282
+ this.state = 124;
269
283
  this.double_dot_property_set_expr();
270
284
  }
271
285
  break;
272
286
  case 8:
273
287
  this.enterOuterAlt(localContext, 8);
274
288
  {
275
- this.state = 119;
289
+ this.state = 125;
276
290
  this.break_keyword();
277
291
  }
278
292
  break;
279
293
  case 9:
280
294
  this.enterOuterAlt(localContext, 9);
281
295
  {
282
- this.state = 120;
296
+ this.state = 126;
283
297
  this.function_def_expr();
284
298
  }
285
299
  break;
286
300
  case 10:
287
301
  this.enterOuterAlt(localContext, 10);
288
302
  {
289
- this.state = 121;
303
+ this.state = 127;
290
304
  this.function_call_expr();
291
305
  }
292
306
  break;
293
307
  case 11:
294
308
  this.enterOuterAlt(localContext, 11);
295
309
  {
296
- this.state = 122;
310
+ this.state = 128;
297
311
  this.wire_expr();
298
312
  }
299
313
  break;
300
314
  case 12:
301
315
  this.enterOuterAlt(localContext, 12);
302
316
  {
303
- this.state = 123;
317
+ this.state = 129;
304
318
  this.import_expr();
305
319
  }
306
320
  break;
307
321
  case 13:
308
322
  this.enterOuterAlt(localContext, 13);
309
323
  {
310
- this.state = 124;
324
+ this.state = 130;
311
325
  this.frame_expr();
312
326
  }
313
327
  break;
314
328
  case 14:
315
329
  this.enterOuterAlt(localContext, 14);
316
330
  {
317
- this.state = 125;
331
+ this.state = 131;
318
332
  this.atom_expr();
319
333
  }
320
334
  break;
321
335
  case 15:
322
336
  this.enterOuterAlt(localContext, 15);
323
337
  {
324
- this.state = 126;
338
+ this.state = 132;
325
339
  this.at_block();
326
340
  }
327
341
  break;
328
342
  case 16:
329
343
  this.enterOuterAlt(localContext, 16);
330
344
  {
331
- this.state = 127;
345
+ this.state = 133;
332
346
  this.path_blocks();
333
347
  }
334
348
  break;
335
349
  case 17:
336
350
  this.enterOuterAlt(localContext, 17);
337
351
  {
338
- this.state = 128;
352
+ this.state = 134;
339
353
  this.point_expr();
340
354
  }
341
355
  break;
356
+ case 18:
357
+ this.enterOuterAlt(localContext, 18);
358
+ {
359
+ this.state = 135;
360
+ this.if_expr();
361
+ }
362
+ break;
342
363
  }
343
364
  }
344
365
  catch (re) {
@@ -362,7 +383,7 @@ export class CircuitScriptParser extends antlr.Parser {
362
383
  let alternative;
363
384
  this.enterOuterAlt(localContext, 1);
364
385
  {
365
- this.state = 132;
386
+ this.state = 139;
366
387
  this.errorHandler.sync(this);
367
388
  alternative = 1;
368
389
  do {
@@ -370,7 +391,7 @@ export class CircuitScriptParser extends antlr.Parser {
370
391
  case 1:
371
392
  {
372
393
  {
373
- this.state = 131;
394
+ this.state = 138;
374
395
  this.path_block_inner();
375
396
  }
376
397
  }
@@ -378,7 +399,7 @@ export class CircuitScriptParser extends antlr.Parser {
378
399
  default:
379
400
  throw new antlr.NoViableAltException(this);
380
401
  }
381
- this.state = 134;
402
+ this.state = 141;
382
403
  this.errorHandler.sync(this);
383
404
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 3, this.context);
384
405
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
@@ -405,7 +426,7 @@ export class CircuitScriptParser extends antlr.Parser {
405
426
  try {
406
427
  this.enterOuterAlt(localContext, 1);
407
428
  {
408
- this.state = 136;
429
+ this.state = 143;
409
430
  _la = this.tokenStream.LA(1);
410
431
  if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 1835520) !== 0))) {
411
432
  this.errorHandler.recoverInline(this);
@@ -414,23 +435,23 @@ export class CircuitScriptParser extends antlr.Parser {
414
435
  this.errorHandler.reportMatch(this);
415
436
  this.consume();
416
437
  }
417
- this.state = 137;
438
+ this.state = 144;
418
439
  this.match(CircuitScriptParser.T__0);
419
- this.state = 138;
440
+ this.state = 145;
420
441
  this.match(CircuitScriptParser.NEWLINE);
421
- this.state = 139;
442
+ this.state = 146;
422
443
  this.match(CircuitScriptParser.INDENT);
423
- this.state = 142;
444
+ this.state = 149;
424
445
  this.errorHandler.sync(this);
425
446
  _la = this.tokenStream.LA(1);
426
447
  do {
427
448
  {
428
- this.state = 142;
449
+ this.state = 149;
429
450
  this.errorHandler.sync(this);
430
451
  switch (this.tokenStream.LA(1)) {
431
452
  case CircuitScriptParser.NEWLINE:
432
453
  {
433
- this.state = 140;
454
+ this.state = 147;
434
455
  this.match(CircuitScriptParser.NEWLINE);
435
456
  }
436
457
  break;
@@ -446,12 +467,13 @@ export class CircuitScriptParser extends antlr.Parser {
446
467
  case CircuitScriptParser.Parallel:
447
468
  case CircuitScriptParser.Define:
448
469
  case CircuitScriptParser.Import:
470
+ case CircuitScriptParser.If:
449
471
  case CircuitScriptParser.Frame:
450
472
  case CircuitScriptParser.Addition:
451
473
  case CircuitScriptParser.Divide:
452
474
  case CircuitScriptParser.ID:
453
475
  {
454
- this.state = 141;
476
+ this.state = 148;
455
477
  this.expression();
456
478
  }
457
479
  break;
@@ -459,11 +481,11 @@ export class CircuitScriptParser extends antlr.Parser {
459
481
  throw new antlr.NoViableAltException(this);
460
482
  }
461
483
  }
462
- this.state = 144;
484
+ this.state = 151;
463
485
  this.errorHandler.sync(this);
464
486
  _la = this.tokenStream.LA(1);
465
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || _la === 37 || _la === 45);
466
- this.state = 146;
487
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
488
+ this.state = 153;
467
489
  this.match(CircuitScriptParser.DEDENT);
468
490
  }
469
491
  }
@@ -488,32 +510,32 @@ export class CircuitScriptParser extends antlr.Parser {
488
510
  try {
489
511
  this.enterOuterAlt(localContext, 1);
490
512
  {
491
- this.state = 148;
513
+ this.state = 155;
492
514
  this.atom_expr();
493
- this.state = 149;
515
+ this.state = 156;
494
516
  this.match(CircuitScriptParser.T__0);
495
- this.state = 150;
517
+ this.state = 157;
496
518
  this.match(CircuitScriptParser.NEWLINE);
497
- this.state = 151;
519
+ this.state = 158;
498
520
  this.match(CircuitScriptParser.INDENT);
499
- this.state = 154;
521
+ this.state = 161;
500
522
  this.errorHandler.sync(this);
501
523
  _la = this.tokenStream.LA(1);
502
524
  do {
503
525
  {
504
- this.state = 154;
526
+ this.state = 161;
505
527
  this.errorHandler.sync(this);
506
528
  switch (this.tokenStream.LA(1)) {
507
529
  case CircuitScriptParser.NEWLINE:
508
530
  {
509
- this.state = 152;
531
+ this.state = 159;
510
532
  this.match(CircuitScriptParser.NEWLINE);
511
533
  }
512
534
  break;
513
535
  case CircuitScriptParser.ID:
514
536
  case CircuitScriptParser.INTEGER_VALUE:
515
537
  {
516
- this.state = 153;
538
+ this.state = 160;
517
539
  this.assignment_expr2();
518
540
  }
519
541
  break;
@@ -521,11 +543,11 @@ export class CircuitScriptParser extends antlr.Parser {
521
543
  throw new antlr.NoViableAltException(this);
522
544
  }
523
545
  }
524
- this.state = 156;
546
+ this.state = 163;
525
547
  this.errorHandler.sync(this);
526
548
  _la = this.tokenStream.LA(1);
527
- } while (((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 259) !== 0));
528
- this.state = 158;
549
+ } while (((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 259) !== 0));
550
+ this.state = 165;
529
551
  this.match(CircuitScriptParser.DEDENT);
530
552
  }
531
553
  }
@@ -550,18 +572,18 @@ export class CircuitScriptParser extends antlr.Parser {
550
572
  try {
551
573
  this.enterOuterAlt(localContext, 1);
552
574
  {
553
- this.state = 160;
575
+ this.state = 167;
554
576
  _la = this.tokenStream.LA(1);
555
- if (!(_la === 37 || _la === 38)) {
577
+ if (!(_la === 44 || _la === 45)) {
556
578
  this.errorHandler.recoverInline(this);
557
579
  }
558
580
  else {
559
581
  this.errorHandler.reportMatch(this);
560
582
  this.consume();
561
583
  }
562
- this.state = 161;
584
+ this.state = 168;
563
585
  this.match(CircuitScriptParser.T__0);
564
- this.state = 162;
586
+ this.state = 169;
565
587
  this.value_expr();
566
588
  }
567
589
  }
@@ -586,11 +608,11 @@ export class CircuitScriptParser extends antlr.Parser {
586
608
  try {
587
609
  this.enterOuterAlt(localContext, 1);
588
610
  {
589
- this.state = 164;
611
+ this.state = 171;
590
612
  this.match(CircuitScriptParser.Pin);
591
- this.state = 165;
613
+ this.state = 172;
592
614
  _la = this.tokenStream.LA(1);
593
- if (!(_la === 38 || _la === 41)) {
615
+ if (!(_la === 45 || _la === 48)) {
594
616
  this.errorHandler.recoverInline(this);
595
617
  }
596
618
  else {
@@ -619,11 +641,11 @@ export class CircuitScriptParser extends antlr.Parser {
619
641
  try {
620
642
  this.enterOuterAlt(localContext, 1);
621
643
  {
622
- this.state = 167;
644
+ this.state = 174;
623
645
  this.match(CircuitScriptParser.ID);
624
- this.state = 168;
646
+ this.state = 175;
625
647
  this.match(CircuitScriptParser.T__0);
626
- this.state = 171;
648
+ this.state = 178;
627
649
  this.errorHandler.sync(this);
628
650
  switch (this.tokenStream.LA(1)) {
629
651
  case CircuitScriptParser.T__5:
@@ -635,13 +657,13 @@ export class CircuitScriptParser extends antlr.Parser {
635
657
  case CircuitScriptParser.STRING_VALUE:
636
658
  case CircuitScriptParser.PERCENTAGE_VALUE:
637
659
  {
638
- this.state = 169;
660
+ this.state = 176;
639
661
  this.value_expr();
640
662
  }
641
663
  break;
642
664
  case CircuitScriptParser.ID:
643
665
  {
644
- this.state = 170;
666
+ this.state = 177;
645
667
  this.match(CircuitScriptParser.ID);
646
668
  }
647
669
  break;
@@ -672,44 +694,44 @@ export class CircuitScriptParser extends antlr.Parser {
672
694
  let alternative;
673
695
  this.enterOuterAlt(localContext, 1);
674
696
  {
675
- this.state = 175;
697
+ this.state = 182;
676
698
  this.errorHandler.sync(this);
677
699
  switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context)) {
678
700
  case 1:
679
701
  {
680
- this.state = 173;
702
+ this.state = 180;
681
703
  this.data_expr(0);
682
704
  }
683
705
  break;
684
706
  case 2:
685
707
  {
686
- this.state = 174;
708
+ this.state = 181;
687
709
  this.assignment_expr();
688
710
  }
689
711
  break;
690
712
  }
691
- this.state = 180;
713
+ this.state = 187;
692
714
  this.errorHandler.sync(this);
693
715
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context);
694
716
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
695
717
  if (alternative === 1) {
696
718
  {
697
719
  {
698
- this.state = 177;
720
+ this.state = 184;
699
721
  this.component_modifier_expr();
700
722
  }
701
723
  }
702
724
  }
703
- this.state = 182;
725
+ this.state = 189;
704
726
  this.errorHandler.sync(this);
705
727
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context);
706
728
  }
707
- this.state = 184;
729
+ this.state = 191;
708
730
  this.errorHandler.sync(this);
709
731
  _la = this.tokenStream.LA(1);
710
732
  if (_la === 14) {
711
733
  {
712
- this.state = 183;
734
+ this.state = 190;
713
735
  this.pin_select_expr();
714
736
  }
715
737
  }
@@ -735,9 +757,9 @@ export class CircuitScriptParser extends antlr.Parser {
735
757
  try {
736
758
  this.enterOuterAlt(localContext, 1);
737
759
  {
738
- this.state = 186;
760
+ this.state = 193;
739
761
  this.match(CircuitScriptParser.Add);
740
- this.state = 187;
762
+ this.state = 194;
741
763
  this.data_expr_with_assignment();
742
764
  }
743
765
  }
@@ -759,7 +781,7 @@ export class CircuitScriptParser extends antlr.Parser {
759
781
  let localContext = new Component_select_exprContext(this.context, this.state);
760
782
  this.enterRule(localContext, 20, CircuitScriptParser.RULE_component_select_expr);
761
783
  try {
762
- this.state = 191;
784
+ this.state = 198;
763
785
  this.errorHandler.sync(this);
764
786
  switch (this.tokenStream.LA(1)) {
765
787
  case CircuitScriptParser.T__5:
@@ -778,14 +800,14 @@ export class CircuitScriptParser extends antlr.Parser {
778
800
  case CircuitScriptParser.PERCENTAGE_VALUE:
779
801
  this.enterOuterAlt(localContext, 1);
780
802
  {
781
- this.state = 189;
803
+ this.state = 196;
782
804
  this.data_expr_with_assignment();
783
805
  }
784
806
  break;
785
807
  case CircuitScriptParser.Pin:
786
808
  this.enterOuterAlt(localContext, 2);
787
809
  {
788
- this.state = 190;
810
+ this.state = 197;
789
811
  this.pin_select_expr();
790
812
  }
791
813
  break;
@@ -814,9 +836,9 @@ export class CircuitScriptParser extends antlr.Parser {
814
836
  try {
815
837
  this.enterOuterAlt(localContext, 1);
816
838
  {
817
- this.state = 193;
839
+ this.state = 200;
818
840
  _la = this.tokenStream.LA(1);
819
- if (!(_la === 38 || _la === 41)) {
841
+ if (!(_la === 45 || _la === 48)) {
820
842
  this.errorHandler.recoverInline(this);
821
843
  }
822
844
  else {
@@ -845,9 +867,9 @@ export class CircuitScriptParser extends antlr.Parser {
845
867
  try {
846
868
  this.enterOuterAlt(localContext, 1);
847
869
  {
848
- this.state = 195;
870
+ this.state = 202;
849
871
  this.match(CircuitScriptParser.At);
850
- this.state = 198;
872
+ this.state = 205;
851
873
  this.errorHandler.sync(this);
852
874
  switch (this.tokenStream.LA(1)) {
853
875
  case CircuitScriptParser.T__5:
@@ -866,13 +888,13 @@ export class CircuitScriptParser extends antlr.Parser {
866
888
  case CircuitScriptParser.STRING_VALUE:
867
889
  case CircuitScriptParser.PERCENTAGE_VALUE:
868
890
  {
869
- this.state = 196;
891
+ this.state = 203;
870
892
  this.component_select_expr();
871
893
  }
872
894
  break;
873
895
  case CircuitScriptParser.Point:
874
896
  {
875
- this.state = 197;
897
+ this.state = 204;
876
898
  this.match(CircuitScriptParser.Point);
877
899
  }
878
900
  break;
@@ -902,9 +924,9 @@ export class CircuitScriptParser extends antlr.Parser {
902
924
  try {
903
925
  this.enterOuterAlt(localContext, 1);
904
926
  {
905
- this.state = 200;
927
+ this.state = 207;
906
928
  this.match(CircuitScriptParser.To);
907
- this.state = 210;
929
+ this.state = 217;
908
930
  this.errorHandler.sync(this);
909
931
  switch (this.tokenStream.LA(1)) {
910
932
  case CircuitScriptParser.T__5:
@@ -924,21 +946,21 @@ export class CircuitScriptParser extends antlr.Parser {
924
946
  case CircuitScriptParser.PERCENTAGE_VALUE:
925
947
  {
926
948
  {
927
- this.state = 201;
949
+ this.state = 208;
928
950
  this.component_select_expr();
929
- this.state = 206;
951
+ this.state = 213;
930
952
  this.errorHandler.sync(this);
931
953
  _la = this.tokenStream.LA(1);
932
954
  while (_la === 2) {
933
955
  {
934
956
  {
935
- this.state = 202;
957
+ this.state = 209;
936
958
  this.match(CircuitScriptParser.T__1);
937
- this.state = 203;
959
+ this.state = 210;
938
960
  this.component_select_expr();
939
961
  }
940
962
  }
941
- this.state = 208;
963
+ this.state = 215;
942
964
  this.errorHandler.sync(this);
943
965
  _la = this.tokenStream.LA(1);
944
966
  }
@@ -947,7 +969,7 @@ export class CircuitScriptParser extends antlr.Parser {
947
969
  break;
948
970
  case CircuitScriptParser.Point:
949
971
  {
950
- this.state = 209;
972
+ this.state = 216;
951
973
  this.match(CircuitScriptParser.Point);
952
974
  }
953
975
  break;
@@ -977,54 +999,54 @@ export class CircuitScriptParser extends antlr.Parser {
977
999
  try {
978
1000
  this.enterOuterAlt(localContext, 1);
979
1001
  {
980
- this.state = 212;
1002
+ this.state = 219;
981
1003
  this.match(CircuitScriptParser.At);
982
- this.state = 213;
1004
+ this.state = 220;
983
1005
  this.component_select_expr();
984
- this.state = 214;
1006
+ this.state = 221;
985
1007
  this.match(CircuitScriptParser.To);
986
- this.state = 215;
1008
+ this.state = 222;
987
1009
  this.component_select_expr();
988
- this.state = 220;
1010
+ this.state = 227;
989
1011
  this.errorHandler.sync(this);
990
1012
  _la = this.tokenStream.LA(1);
991
1013
  while (_la === 2) {
992
1014
  {
993
1015
  {
994
- this.state = 216;
1016
+ this.state = 223;
995
1017
  this.match(CircuitScriptParser.T__1);
996
- this.state = 217;
1018
+ this.state = 224;
997
1019
  this.component_select_expr();
998
1020
  }
999
1021
  }
1000
- this.state = 222;
1022
+ this.state = 229;
1001
1023
  this.errorHandler.sync(this);
1002
1024
  _la = this.tokenStream.LA(1);
1003
1025
  }
1004
- this.state = 223;
1026
+ this.state = 230;
1005
1027
  this.match(CircuitScriptParser.T__0);
1006
- this.state = 224;
1028
+ this.state = 231;
1007
1029
  this.match(CircuitScriptParser.NEWLINE);
1008
- this.state = 225;
1030
+ this.state = 232;
1009
1031
  this.match(CircuitScriptParser.INDENT);
1010
- this.state = 228;
1032
+ this.state = 235;
1011
1033
  this.errorHandler.sync(this);
1012
1034
  _la = this.tokenStream.LA(1);
1013
1035
  do {
1014
1036
  {
1015
- this.state = 228;
1037
+ this.state = 235;
1016
1038
  this.errorHandler.sync(this);
1017
1039
  switch (this.tokenStream.LA(1)) {
1018
1040
  case CircuitScriptParser.NEWLINE:
1019
1041
  {
1020
- this.state = 226;
1042
+ this.state = 233;
1021
1043
  this.match(CircuitScriptParser.NEWLINE);
1022
1044
  }
1023
1045
  break;
1024
1046
  case CircuitScriptParser.INTEGER_VALUE:
1025
1047
  case CircuitScriptParser.STRING_VALUE:
1026
1048
  {
1027
- this.state = 227;
1049
+ this.state = 234;
1028
1050
  this.at_to_multiple_line_expr();
1029
1051
  }
1030
1052
  break;
@@ -1032,11 +1054,11 @@ export class CircuitScriptParser extends antlr.Parser {
1032
1054
  throw new antlr.NoViableAltException(this);
1033
1055
  }
1034
1056
  }
1035
- this.state = 230;
1057
+ this.state = 237;
1036
1058
  this.errorHandler.sync(this);
1037
1059
  _la = this.tokenStream.LA(1);
1038
- } while (((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 137) !== 0));
1039
- this.state = 232;
1060
+ } while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 137) !== 0));
1061
+ this.state = 239;
1040
1062
  this.match(CircuitScriptParser.DEDENT);
1041
1063
  }
1042
1064
  }
@@ -1061,25 +1083,25 @@ export class CircuitScriptParser extends antlr.Parser {
1061
1083
  try {
1062
1084
  this.enterOuterAlt(localContext, 1);
1063
1085
  {
1064
- this.state = 234;
1086
+ this.state = 241;
1065
1087
  this.pin_select_expr2();
1066
- this.state = 235;
1088
+ this.state = 242;
1067
1089
  this.match(CircuitScriptParser.T__0);
1068
- this.state = 236;
1090
+ this.state = 243;
1069
1091
  this.at_to_multiple_line_expr_to_pin();
1070
- this.state = 241;
1092
+ this.state = 248;
1071
1093
  this.errorHandler.sync(this);
1072
1094
  _la = this.tokenStream.LA(1);
1073
1095
  while (_la === 2) {
1074
1096
  {
1075
1097
  {
1076
- this.state = 237;
1098
+ this.state = 244;
1077
1099
  this.match(CircuitScriptParser.T__1);
1078
- this.state = 238;
1100
+ this.state = 245;
1079
1101
  this.at_to_multiple_line_expr_to_pin();
1080
1102
  }
1081
1103
  }
1082
- this.state = 243;
1104
+ this.state = 250;
1083
1105
  this.errorHandler.sync(this);
1084
1106
  _la = this.tokenStream.LA(1);
1085
1107
  }
@@ -1106,9 +1128,9 @@ export class CircuitScriptParser extends antlr.Parser {
1106
1128
  try {
1107
1129
  this.enterOuterAlt(localContext, 1);
1108
1130
  {
1109
- this.state = 244;
1131
+ this.state = 251;
1110
1132
  _la = this.tokenStream.LA(1);
1111
- if (!(_la === 35 || _la === 38)) {
1133
+ if (!(_la === 42 || _la === 45)) {
1112
1134
  this.errorHandler.recoverInline(this);
1113
1135
  }
1114
1136
  else {
@@ -1138,25 +1160,25 @@ export class CircuitScriptParser extends antlr.Parser {
1138
1160
  try {
1139
1161
  this.enterOuterAlt(localContext, 1);
1140
1162
  {
1141
- this.state = 246;
1163
+ this.state = 253;
1142
1164
  this.at_component_expr();
1143
- this.state = 247;
1165
+ this.state = 254;
1144
1166
  this.match(CircuitScriptParser.T__0);
1145
- this.state = 248;
1167
+ this.state = 255;
1146
1168
  this.match(CircuitScriptParser.NEWLINE);
1147
- this.state = 249;
1169
+ this.state = 256;
1148
1170
  this.match(CircuitScriptParser.INDENT);
1149
- this.state = 252;
1171
+ this.state = 259;
1150
1172
  this.errorHandler.sync(this);
1151
1173
  _la = this.tokenStream.LA(1);
1152
1174
  do {
1153
1175
  {
1154
- this.state = 252;
1176
+ this.state = 259;
1155
1177
  this.errorHandler.sync(this);
1156
1178
  switch (this.tokenStream.LA(1)) {
1157
1179
  case CircuitScriptParser.NEWLINE:
1158
1180
  {
1159
- this.state = 250;
1181
+ this.state = 257;
1160
1182
  this.match(CircuitScriptParser.NEWLINE);
1161
1183
  }
1162
1184
  break;
@@ -1172,6 +1194,7 @@ export class CircuitScriptParser extends antlr.Parser {
1172
1194
  case CircuitScriptParser.Parallel:
1173
1195
  case CircuitScriptParser.Define:
1174
1196
  case CircuitScriptParser.Import:
1197
+ case CircuitScriptParser.If:
1175
1198
  case CircuitScriptParser.Frame:
1176
1199
  case CircuitScriptParser.Addition:
1177
1200
  case CircuitScriptParser.Divide:
@@ -1179,7 +1202,7 @@ export class CircuitScriptParser extends antlr.Parser {
1179
1202
  case CircuitScriptParser.INTEGER_VALUE:
1180
1203
  case CircuitScriptParser.STRING_VALUE:
1181
1204
  {
1182
- this.state = 251;
1205
+ this.state = 258;
1183
1206
  this.at_block_expressions();
1184
1207
  }
1185
1208
  break;
@@ -1187,11 +1210,11 @@ export class CircuitScriptParser extends antlr.Parser {
1187
1210
  throw new antlr.NoViableAltException(this);
1188
1211
  }
1189
1212
  }
1190
- this.state = 254;
1213
+ this.state = 261;
1191
1214
  this.errorHandler.sync(this);
1192
1215
  _la = this.tokenStream.LA(1);
1193
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 275) !== 0));
1194
- this.state = 256;
1216
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 70405) !== 0));
1217
+ this.state = 263;
1195
1218
  this.match(CircuitScriptParser.DEDENT);
1196
1219
  }
1197
1220
  }
@@ -1213,7 +1236,7 @@ export class CircuitScriptParser extends antlr.Parser {
1213
1236
  let localContext = new At_block_expressionsContext(this.context, this.state);
1214
1237
  this.enterRule(localContext, 36, CircuitScriptParser.RULE_at_block_expressions);
1215
1238
  try {
1216
- this.state = 260;
1239
+ this.state = 267;
1217
1240
  this.errorHandler.sync(this);
1218
1241
  switch (this.tokenStream.LA(1)) {
1219
1242
  case CircuitScriptParser.T__3:
@@ -1228,13 +1251,14 @@ export class CircuitScriptParser extends antlr.Parser {
1228
1251
  case CircuitScriptParser.Parallel:
1229
1252
  case CircuitScriptParser.Define:
1230
1253
  case CircuitScriptParser.Import:
1254
+ case CircuitScriptParser.If:
1231
1255
  case CircuitScriptParser.Frame:
1232
1256
  case CircuitScriptParser.Addition:
1233
1257
  case CircuitScriptParser.Divide:
1234
1258
  case CircuitScriptParser.ID:
1235
1259
  this.enterOuterAlt(localContext, 1);
1236
1260
  {
1237
- this.state = 258;
1261
+ this.state = 265;
1238
1262
  this.expression();
1239
1263
  }
1240
1264
  break;
@@ -1242,7 +1266,7 @@ export class CircuitScriptParser extends antlr.Parser {
1242
1266
  case CircuitScriptParser.STRING_VALUE:
1243
1267
  this.enterOuterAlt(localContext, 2);
1244
1268
  {
1245
- this.state = 259;
1269
+ this.state = 266;
1246
1270
  this.at_block_pin_expr();
1247
1271
  }
1248
1272
  break;
@@ -1270,11 +1294,11 @@ export class CircuitScriptParser extends antlr.Parser {
1270
1294
  try {
1271
1295
  this.enterOuterAlt(localContext, 1);
1272
1296
  {
1273
- this.state = 262;
1297
+ this.state = 269;
1274
1298
  this.pin_select_expr2();
1275
- this.state = 263;
1299
+ this.state = 270;
1276
1300
  this.match(CircuitScriptParser.T__0);
1277
- this.state = 266;
1301
+ this.state = 273;
1278
1302
  this.errorHandler.sync(this);
1279
1303
  switch (this.tokenStream.LA(1)) {
1280
1304
  case CircuitScriptParser.T__3:
@@ -1289,19 +1313,20 @@ export class CircuitScriptParser extends antlr.Parser {
1289
1313
  case CircuitScriptParser.Parallel:
1290
1314
  case CircuitScriptParser.Define:
1291
1315
  case CircuitScriptParser.Import:
1316
+ case CircuitScriptParser.If:
1292
1317
  case CircuitScriptParser.Frame:
1293
1318
  case CircuitScriptParser.Addition:
1294
1319
  case CircuitScriptParser.Divide:
1295
1320
  case CircuitScriptParser.NOT_CONNECTED:
1296
1321
  case CircuitScriptParser.ID:
1297
1322
  {
1298
- this.state = 264;
1323
+ this.state = 271;
1299
1324
  this.at_block_pin_expression_simple();
1300
1325
  }
1301
1326
  break;
1302
1327
  case CircuitScriptParser.NEWLINE:
1303
1328
  {
1304
- this.state = 265;
1329
+ this.state = 272;
1305
1330
  this.at_block_pin_expression_complex();
1306
1331
  }
1307
1332
  break;
@@ -1330,7 +1355,7 @@ export class CircuitScriptParser extends antlr.Parser {
1330
1355
  try {
1331
1356
  this.enterOuterAlt(localContext, 1);
1332
1357
  {
1333
- this.state = 270;
1358
+ this.state = 277;
1334
1359
  this.errorHandler.sync(this);
1335
1360
  switch (this.tokenStream.LA(1)) {
1336
1361
  case CircuitScriptParser.T__3:
@@ -1345,18 +1370,19 @@ export class CircuitScriptParser extends antlr.Parser {
1345
1370
  case CircuitScriptParser.Parallel:
1346
1371
  case CircuitScriptParser.Define:
1347
1372
  case CircuitScriptParser.Import:
1373
+ case CircuitScriptParser.If:
1348
1374
  case CircuitScriptParser.Frame:
1349
1375
  case CircuitScriptParser.Addition:
1350
1376
  case CircuitScriptParser.Divide:
1351
1377
  case CircuitScriptParser.ID:
1352
1378
  {
1353
- this.state = 268;
1379
+ this.state = 275;
1354
1380
  this.expression();
1355
1381
  }
1356
1382
  break;
1357
1383
  case CircuitScriptParser.NOT_CONNECTED:
1358
1384
  {
1359
- this.state = 269;
1385
+ this.state = 276;
1360
1386
  this.match(CircuitScriptParser.NOT_CONNECTED);
1361
1387
  }
1362
1388
  break;
@@ -1386,21 +1412,21 @@ export class CircuitScriptParser extends antlr.Parser {
1386
1412
  try {
1387
1413
  this.enterOuterAlt(localContext, 1);
1388
1414
  {
1389
- this.state = 272;
1415
+ this.state = 279;
1390
1416
  this.match(CircuitScriptParser.NEWLINE);
1391
- this.state = 273;
1417
+ this.state = 280;
1392
1418
  this.match(CircuitScriptParser.INDENT);
1393
- this.state = 276;
1419
+ this.state = 283;
1394
1420
  this.errorHandler.sync(this);
1395
1421
  _la = this.tokenStream.LA(1);
1396
1422
  do {
1397
1423
  {
1398
- this.state = 276;
1424
+ this.state = 283;
1399
1425
  this.errorHandler.sync(this);
1400
1426
  switch (this.tokenStream.LA(1)) {
1401
1427
  case CircuitScriptParser.NEWLINE:
1402
1428
  {
1403
- this.state = 274;
1429
+ this.state = 281;
1404
1430
  this.match(CircuitScriptParser.NEWLINE);
1405
1431
  }
1406
1432
  break;
@@ -1416,12 +1442,13 @@ export class CircuitScriptParser extends antlr.Parser {
1416
1442
  case CircuitScriptParser.Parallel:
1417
1443
  case CircuitScriptParser.Define:
1418
1444
  case CircuitScriptParser.Import:
1445
+ case CircuitScriptParser.If:
1419
1446
  case CircuitScriptParser.Frame:
1420
1447
  case CircuitScriptParser.Addition:
1421
1448
  case CircuitScriptParser.Divide:
1422
1449
  case CircuitScriptParser.ID:
1423
1450
  {
1424
- this.state = 275;
1451
+ this.state = 282;
1425
1452
  this.expression();
1426
1453
  }
1427
1454
  break;
@@ -1429,11 +1456,11 @@ export class CircuitScriptParser extends antlr.Parser {
1429
1456
  throw new antlr.NoViableAltException(this);
1430
1457
  }
1431
1458
  }
1432
- this.state = 278;
1459
+ this.state = 285;
1433
1460
  this.errorHandler.sync(this);
1434
1461
  _la = this.tokenStream.LA(1);
1435
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || _la === 37 || _la === 45);
1436
- this.state = 280;
1462
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
1463
+ this.state = 287;
1437
1464
  this.match(CircuitScriptParser.DEDENT);
1438
1465
  }
1439
1466
  }
@@ -1457,7 +1484,7 @@ export class CircuitScriptParser extends antlr.Parser {
1457
1484
  try {
1458
1485
  this.enterOuterAlt(localContext, 1);
1459
1486
  {
1460
- this.state = 282;
1487
+ this.state = 289;
1461
1488
  this.match(CircuitScriptParser.Break);
1462
1489
  }
1463
1490
  }
@@ -1481,11 +1508,11 @@ export class CircuitScriptParser extends antlr.Parser {
1481
1508
  try {
1482
1509
  this.enterOuterAlt(localContext, 1);
1483
1510
  {
1484
- this.state = 284;
1511
+ this.state = 291;
1485
1512
  this.atom_expr();
1486
- this.state = 285;
1513
+ this.state = 292;
1487
1514
  this.match(CircuitScriptParser.T__2);
1488
- this.state = 286;
1515
+ this.state = 293;
1489
1516
  this.data_expr(0);
1490
1517
  }
1491
1518
  }
@@ -1509,11 +1536,11 @@ export class CircuitScriptParser extends antlr.Parser {
1509
1536
  try {
1510
1537
  this.enterOuterAlt(localContext, 1);
1511
1538
  {
1512
- this.state = 288;
1539
+ this.state = 295;
1513
1540
  this.match(CircuitScriptParser.ID);
1514
- this.state = 289;
1541
+ this.state = 296;
1515
1542
  this.match(CircuitScriptParser.T__2);
1516
- this.state = 290;
1543
+ this.state = 297;
1517
1544
  this.data_expr(0);
1518
1545
  }
1519
1546
  }
@@ -1537,46 +1564,46 @@ export class CircuitScriptParser extends antlr.Parser {
1537
1564
  let _la;
1538
1565
  try {
1539
1566
  let alternative;
1540
- this.state = 315;
1567
+ this.state = 322;
1541
1568
  this.errorHandler.sync(this);
1542
1569
  switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context)) {
1543
1570
  case 1:
1544
1571
  this.enterOuterAlt(localContext, 1);
1545
1572
  {
1546
1573
  {
1547
- this.state = 292;
1574
+ this.state = 299;
1548
1575
  this.data_expr(0);
1549
- this.state = 297;
1576
+ this.state = 304;
1550
1577
  this.errorHandler.sync(this);
1551
1578
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context);
1552
1579
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1553
1580
  if (alternative === 1) {
1554
1581
  {
1555
1582
  {
1556
- this.state = 293;
1583
+ this.state = 300;
1557
1584
  this.match(CircuitScriptParser.T__1);
1558
- this.state = 294;
1585
+ this.state = 301;
1559
1586
  this.data_expr(0);
1560
1587
  }
1561
1588
  }
1562
1589
  }
1563
- this.state = 299;
1590
+ this.state = 306;
1564
1591
  this.errorHandler.sync(this);
1565
1592
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context);
1566
1593
  }
1567
- this.state = 304;
1594
+ this.state = 311;
1568
1595
  this.errorHandler.sync(this);
1569
1596
  _la = this.tokenStream.LA(1);
1570
1597
  while (_la === 2) {
1571
1598
  {
1572
1599
  {
1573
- this.state = 300;
1600
+ this.state = 307;
1574
1601
  this.match(CircuitScriptParser.T__1);
1575
- this.state = 301;
1602
+ this.state = 308;
1576
1603
  this.keyword_assignment_expr();
1577
1604
  }
1578
1605
  }
1579
- this.state = 306;
1606
+ this.state = 313;
1580
1607
  this.errorHandler.sync(this);
1581
1608
  _la = this.tokenStream.LA(1);
1582
1609
  }
@@ -1587,21 +1614,21 @@ export class CircuitScriptParser extends antlr.Parser {
1587
1614
  this.enterOuterAlt(localContext, 2);
1588
1615
  {
1589
1616
  {
1590
- this.state = 307;
1617
+ this.state = 314;
1591
1618
  this.keyword_assignment_expr();
1592
- this.state = 312;
1619
+ this.state = 319;
1593
1620
  this.errorHandler.sync(this);
1594
1621
  _la = this.tokenStream.LA(1);
1595
1622
  while (_la === 2) {
1596
1623
  {
1597
1624
  {
1598
- this.state = 308;
1625
+ this.state = 315;
1599
1626
  this.match(CircuitScriptParser.T__1);
1600
- this.state = 309;
1627
+ this.state = 316;
1601
1628
  this.keyword_assignment_expr();
1602
1629
  }
1603
1630
  }
1604
- this.state = 314;
1631
+ this.state = 321;
1605
1632
  this.errorHandler.sync(this);
1606
1633
  _la = this.tokenStream.LA(1);
1607
1634
  }
@@ -1630,11 +1657,11 @@ export class CircuitScriptParser extends antlr.Parser {
1630
1657
  try {
1631
1658
  this.enterOuterAlt(localContext, 1);
1632
1659
  {
1633
- this.state = 317;
1660
+ this.state = 324;
1634
1661
  this.atom_expr();
1635
- this.state = 318;
1662
+ this.state = 325;
1636
1663
  this.match(CircuitScriptParser.T__2);
1637
- this.state = 319;
1664
+ this.state = 326;
1638
1665
  this.data_expr(0);
1639
1666
  }
1640
1667
  }
@@ -1658,13 +1685,13 @@ export class CircuitScriptParser extends antlr.Parser {
1658
1685
  try {
1659
1686
  this.enterOuterAlt(localContext, 1);
1660
1687
  {
1661
- this.state = 321;
1688
+ this.state = 328;
1662
1689
  this.match(CircuitScriptParser.T__3);
1663
- this.state = 322;
1690
+ this.state = 329;
1664
1691
  this.match(CircuitScriptParser.ID);
1665
- this.state = 323;
1692
+ this.state = 330;
1666
1693
  this.match(CircuitScriptParser.T__2);
1667
- this.state = 324;
1694
+ this.state = 331;
1668
1695
  this.data_expr(0);
1669
1696
  }
1670
1697
  }
@@ -1697,7 +1724,7 @@ export class CircuitScriptParser extends antlr.Parser {
1697
1724
  let alternative;
1698
1725
  this.enterOuterAlt(localContext, 1);
1699
1726
  {
1700
- this.state = 341;
1727
+ this.state = 348;
1701
1728
  this.errorHandler.sync(this);
1702
1729
  switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context)) {
1703
1730
  case 1:
@@ -1705,11 +1732,11 @@ export class CircuitScriptParser extends antlr.Parser {
1705
1732
  localContext = new RoundedBracketsExprContext(localContext);
1706
1733
  this.context = localContext;
1707
1734
  previousContext = localContext;
1708
- this.state = 327;
1735
+ this.state = 334;
1709
1736
  this.match(CircuitScriptParser.OPEN_PAREN);
1710
- this.state = 328;
1737
+ this.state = 335;
1711
1738
  this.data_expr(0);
1712
- this.state = 329;
1739
+ this.state = 336;
1713
1740
  this.match(CircuitScriptParser.CLOSE_PAREN);
1714
1741
  }
1715
1742
  break;
@@ -1718,7 +1745,7 @@ export class CircuitScriptParser extends antlr.Parser {
1718
1745
  localContext = new ValueAtomExprContext(localContext);
1719
1746
  this.context = localContext;
1720
1747
  previousContext = localContext;
1721
- this.state = 333;
1748
+ this.state = 340;
1722
1749
  this.errorHandler.sync(this);
1723
1750
  switch (this.tokenStream.LA(1)) {
1724
1751
  case CircuitScriptParser.T__5:
@@ -1730,13 +1757,13 @@ export class CircuitScriptParser extends antlr.Parser {
1730
1757
  case CircuitScriptParser.STRING_VALUE:
1731
1758
  case CircuitScriptParser.PERCENTAGE_VALUE:
1732
1759
  {
1733
- this.state = 331;
1760
+ this.state = 338;
1734
1761
  this.value_expr();
1735
1762
  }
1736
1763
  break;
1737
1764
  case CircuitScriptParser.ID:
1738
1765
  {
1739
- this.state = 332;
1766
+ this.state = 339;
1740
1767
  this.atom_expr();
1741
1768
  }
1742
1769
  break;
@@ -1750,10 +1777,10 @@ export class CircuitScriptParser extends antlr.Parser {
1750
1777
  localContext = new UnaryOperatorExprContext(localContext);
1751
1778
  this.context = localContext;
1752
1779
  previousContext = localContext;
1753
- this.state = 335;
1780
+ this.state = 342;
1754
1781
  this.unary_operator();
1755
- this.state = 336;
1756
- this.data_expr(7);
1782
+ this.state = 343;
1783
+ this.data_expr(8);
1757
1784
  }
1758
1785
  break;
1759
1786
  case 4:
@@ -1761,7 +1788,7 @@ export class CircuitScriptParser extends antlr.Parser {
1761
1788
  localContext = new DataExprContext(localContext);
1762
1789
  this.context = localContext;
1763
1790
  previousContext = localContext;
1764
- this.state = 338;
1791
+ this.state = 345;
1765
1792
  this.create_component_expr();
1766
1793
  }
1767
1794
  break;
@@ -1770,7 +1797,7 @@ export class CircuitScriptParser extends antlr.Parser {
1770
1797
  localContext = new DataExprContext(localContext);
1771
1798
  this.context = localContext;
1772
1799
  previousContext = localContext;
1773
- this.state = 339;
1800
+ this.state = 346;
1774
1801
  this.create_graphic_expr();
1775
1802
  }
1776
1803
  break;
@@ -1779,13 +1806,13 @@ export class CircuitScriptParser extends antlr.Parser {
1779
1806
  localContext = new FunctionCallExprContext(localContext);
1780
1807
  this.context = localContext;
1781
1808
  previousContext = localContext;
1782
- this.state = 340;
1809
+ this.state = 347;
1783
1810
  this.function_call_expr();
1784
1811
  }
1785
1812
  break;
1786
1813
  }
1787
1814
  this.context.stop = this.tokenStream.LT(-1);
1788
- this.state = 355;
1815
+ this.state = 365;
1789
1816
  this.errorHandler.sync(this);
1790
1817
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 34, this.context);
1791
1818
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
@@ -1795,69 +1822,90 @@ export class CircuitScriptParser extends antlr.Parser {
1795
1822
  }
1796
1823
  previousContext = localContext;
1797
1824
  {
1798
- this.state = 353;
1825
+ this.state = 363;
1799
1826
  this.errorHandler.sync(this);
1800
1827
  switch (this.interpreter.adaptivePredict(this.tokenStream, 33, this.context)) {
1801
1828
  case 1:
1802
1829
  {
1803
1830
  localContext = new MultiplyExprContext(new Data_exprContext(parentContext, parentState));
1804
1831
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1805
- this.state = 343;
1806
- if (!(this.precpred(this.context, 6))) {
1807
- throw this.createFailedPredicateException("this.precpred(this.context, 6)");
1832
+ this.state = 350;
1833
+ if (!(this.precpred(this.context, 7))) {
1834
+ throw this.createFailedPredicateException("this.precpred(this.context, 7)");
1808
1835
  }
1809
- this.state = 344;
1836
+ this.state = 351;
1810
1837
  _la = this.tokenStream.LA(1);
1811
- if (!(_la === 31 || _la === 32)) {
1838
+ if (!(_la === 38 || _la === 39)) {
1812
1839
  this.errorHandler.recoverInline(this);
1813
1840
  }
1814
1841
  else {
1815
1842
  this.errorHandler.reportMatch(this);
1816
1843
  this.consume();
1817
1844
  }
1818
- this.state = 345;
1819
- this.data_expr(7);
1845
+ this.state = 352;
1846
+ this.data_expr(8);
1820
1847
  }
1821
1848
  break;
1822
1849
  case 2:
1823
1850
  {
1824
1851
  localContext = new AdditionExprContext(new Data_exprContext(parentContext, parentState));
1825
1852
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1826
- this.state = 346;
1827
- if (!(this.precpred(this.context, 5))) {
1828
- throw this.createFailedPredicateException("this.precpred(this.context, 5)");
1853
+ this.state = 353;
1854
+ if (!(this.precpred(this.context, 6))) {
1855
+ throw this.createFailedPredicateException("this.precpred(this.context, 6)");
1829
1856
  }
1830
- this.state = 347;
1857
+ this.state = 354;
1831
1858
  _la = this.tokenStream.LA(1);
1832
- if (!(_la === 29 || _la === 30)) {
1859
+ if (!(_la === 36 || _la === 37)) {
1833
1860
  this.errorHandler.recoverInline(this);
1834
1861
  }
1835
1862
  else {
1836
1863
  this.errorHandler.reportMatch(this);
1837
1864
  this.consume();
1838
1865
  }
1839
- this.state = 348;
1840
- this.data_expr(6);
1866
+ this.state = 355;
1867
+ this.data_expr(7);
1841
1868
  }
1842
1869
  break;
1843
1870
  case 3:
1844
1871
  {
1845
1872
  localContext = new BinaryOperatorExprContext(new Data_exprContext(parentContext, parentState));
1846
1873
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1847
- this.state = 349;
1874
+ this.state = 356;
1875
+ if (!(this.precpred(this.context, 5))) {
1876
+ throw this.createFailedPredicateException("this.precpred(this.context, 5)");
1877
+ }
1878
+ this.state = 357;
1879
+ this.binary_operator();
1880
+ this.state = 358;
1881
+ this.data_expr(6);
1882
+ }
1883
+ break;
1884
+ case 4:
1885
+ {
1886
+ localContext = new LogicalOperatorExprContext(new Data_exprContext(parentContext, parentState));
1887
+ this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1888
+ this.state = 360;
1848
1889
  if (!(this.precpred(this.context, 4))) {
1849
1890
  throw this.createFailedPredicateException("this.precpred(this.context, 4)");
1850
1891
  }
1851
- this.state = 350;
1852
- this.binary_operator();
1853
- this.state = 351;
1892
+ this.state = 361;
1893
+ _la = this.tokenStream.LA(1);
1894
+ if (!(_la === 34 || _la === 35)) {
1895
+ this.errorHandler.recoverInline(this);
1896
+ }
1897
+ else {
1898
+ this.errorHandler.reportMatch(this);
1899
+ this.consume();
1900
+ }
1901
+ this.state = 362;
1854
1902
  this.data_expr(5);
1855
1903
  }
1856
1904
  break;
1857
1905
  }
1858
1906
  }
1859
1907
  }
1860
- this.state = 357;
1908
+ this.state = 367;
1861
1909
  this.errorHandler.sync(this);
1862
1910
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 34, this.context);
1863
1911
  }
@@ -1884,9 +1932,9 @@ export class CircuitScriptParser extends antlr.Parser {
1884
1932
  try {
1885
1933
  this.enterOuterAlt(localContext, 1);
1886
1934
  {
1887
- this.state = 358;
1935
+ this.state = 368;
1888
1936
  _la = this.tokenStream.LA(1);
1889
- if (!(_la === 27 || _la === 28)) {
1937
+ if (!(((((_la - 28)) & ~0x1F) === 0 && ((1 << (_la - 28)) & 63) !== 0))) {
1890
1938
  this.errorHandler.recoverInline(this);
1891
1939
  }
1892
1940
  else {
@@ -1916,9 +1964,9 @@ export class CircuitScriptParser extends antlr.Parser {
1916
1964
  try {
1917
1965
  this.enterOuterAlt(localContext, 1);
1918
1966
  {
1919
- this.state = 360;
1967
+ this.state = 370;
1920
1968
  _la = this.tokenStream.LA(1);
1921
- if (!(_la === 25 || _la === 30)) {
1969
+ if (!(_la === 26 || _la === 37)) {
1922
1970
  this.errorHandler.recoverInline(this);
1923
1971
  }
1924
1972
  else {
@@ -1946,7 +1994,7 @@ export class CircuitScriptParser extends antlr.Parser {
1946
1994
  this.enterRule(localContext, 62, CircuitScriptParser.RULE_value_expr);
1947
1995
  let _la;
1948
1996
  try {
1949
- this.state = 367;
1997
+ this.state = 377;
1950
1998
  this.errorHandler.sync(this);
1951
1999
  switch (this.tokenStream.LA(1)) {
1952
2000
  case CircuitScriptParser.Minus:
@@ -1959,18 +2007,18 @@ export class CircuitScriptParser extends antlr.Parser {
1959
2007
  this.enterOuterAlt(localContext, 1);
1960
2008
  {
1961
2009
  {
1962
- this.state = 363;
2010
+ this.state = 373;
1963
2011
  this.errorHandler.sync(this);
1964
2012
  _la = this.tokenStream.LA(1);
1965
- if (_la === 30) {
2013
+ if (_la === 37) {
1966
2014
  {
1967
- this.state = 362;
2015
+ this.state = 372;
1968
2016
  this.match(CircuitScriptParser.Minus);
1969
2017
  }
1970
2018
  }
1971
- this.state = 365;
2019
+ this.state = 375;
1972
2020
  _la = this.tokenStream.LA(1);
1973
- if (!(((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 125) !== 0))) {
2021
+ if (!(((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 125) !== 0))) {
1974
2022
  this.errorHandler.recoverInline(this);
1975
2023
  }
1976
2024
  else {
@@ -1983,7 +2031,7 @@ export class CircuitScriptParser extends antlr.Parser {
1983
2031
  case CircuitScriptParser.T__5:
1984
2032
  this.enterOuterAlt(localContext, 2);
1985
2033
  {
1986
- this.state = 366;
2034
+ this.state = 376;
1987
2035
  this.blank_expr();
1988
2036
  }
1989
2037
  break;
@@ -2012,40 +2060,40 @@ export class CircuitScriptParser extends antlr.Parser {
2012
2060
  try {
2013
2061
  this.enterOuterAlt(localContext, 1);
2014
2062
  {
2015
- this.state = 369;
2063
+ this.state = 379;
2016
2064
  this.match(CircuitScriptParser.Define);
2017
- this.state = 370;
2065
+ this.state = 380;
2018
2066
  this.match(CircuitScriptParser.ID);
2019
- this.state = 371;
2067
+ this.state = 381;
2020
2068
  this.match(CircuitScriptParser.OPEN_PAREN);
2021
- this.state = 373;
2069
+ this.state = 383;
2022
2070
  this.errorHandler.sync(this);
2023
2071
  _la = this.tokenStream.LA(1);
2024
- if (_la === 37) {
2072
+ if (_la === 44) {
2025
2073
  {
2026
- this.state = 372;
2074
+ this.state = 382;
2027
2075
  this.function_args_expr();
2028
2076
  }
2029
2077
  }
2030
- this.state = 375;
2078
+ this.state = 385;
2031
2079
  this.match(CircuitScriptParser.CLOSE_PAREN);
2032
- this.state = 376;
2080
+ this.state = 386;
2033
2081
  this.match(CircuitScriptParser.T__0);
2034
- this.state = 377;
2082
+ this.state = 387;
2035
2083
  this.match(CircuitScriptParser.NEWLINE);
2036
- this.state = 378;
2084
+ this.state = 388;
2037
2085
  this.match(CircuitScriptParser.INDENT);
2038
- this.state = 381;
2086
+ this.state = 391;
2039
2087
  this.errorHandler.sync(this);
2040
2088
  _la = this.tokenStream.LA(1);
2041
2089
  do {
2042
2090
  {
2043
- this.state = 381;
2091
+ this.state = 391;
2044
2092
  this.errorHandler.sync(this);
2045
2093
  switch (this.tokenStream.LA(1)) {
2046
2094
  case CircuitScriptParser.NEWLINE:
2047
2095
  {
2048
- this.state = 379;
2096
+ this.state = 389;
2049
2097
  this.match(CircuitScriptParser.NEWLINE);
2050
2098
  }
2051
2099
  break;
@@ -2062,12 +2110,13 @@ export class CircuitScriptParser extends antlr.Parser {
2062
2110
  case CircuitScriptParser.Return:
2063
2111
  case CircuitScriptParser.Define:
2064
2112
  case CircuitScriptParser.Import:
2113
+ case CircuitScriptParser.If:
2065
2114
  case CircuitScriptParser.Frame:
2066
2115
  case CircuitScriptParser.Addition:
2067
2116
  case CircuitScriptParser.Divide:
2068
2117
  case CircuitScriptParser.ID:
2069
2118
  {
2070
- this.state = 380;
2119
+ this.state = 390;
2071
2120
  this.function_expr();
2072
2121
  }
2073
2122
  break;
@@ -2075,11 +2124,11 @@ export class CircuitScriptParser extends antlr.Parser {
2075
2124
  throw new antlr.NoViableAltException(this);
2076
2125
  }
2077
2126
  }
2078
- this.state = 383;
2127
+ this.state = 393;
2079
2128
  this.errorHandler.sync(this);
2080
2129
  _la = this.tokenStream.LA(1);
2081
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2768216848) !== 0) || _la === 37 || _la === 45);
2082
- this.state = 385;
2130
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 167748368) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
2131
+ this.state = 395;
2083
2132
  this.match(CircuitScriptParser.DEDENT);
2084
2133
  }
2085
2134
  }
@@ -2101,7 +2150,7 @@ export class CircuitScriptParser extends antlr.Parser {
2101
2150
  let localContext = new Function_exprContext(this.context, this.state);
2102
2151
  this.enterRule(localContext, 66, CircuitScriptParser.RULE_function_expr);
2103
2152
  try {
2104
- this.state = 389;
2153
+ this.state = 399;
2105
2154
  this.errorHandler.sync(this);
2106
2155
  switch (this.tokenStream.LA(1)) {
2107
2156
  case CircuitScriptParser.T__3:
@@ -2116,20 +2165,21 @@ export class CircuitScriptParser extends antlr.Parser {
2116
2165
  case CircuitScriptParser.Parallel:
2117
2166
  case CircuitScriptParser.Define:
2118
2167
  case CircuitScriptParser.Import:
2168
+ case CircuitScriptParser.If:
2119
2169
  case CircuitScriptParser.Frame:
2120
2170
  case CircuitScriptParser.Addition:
2121
2171
  case CircuitScriptParser.Divide:
2122
2172
  case CircuitScriptParser.ID:
2123
2173
  this.enterOuterAlt(localContext, 1);
2124
2174
  {
2125
- this.state = 387;
2175
+ this.state = 397;
2126
2176
  this.expression();
2127
2177
  }
2128
2178
  break;
2129
2179
  case CircuitScriptParser.Return:
2130
2180
  this.enterOuterAlt(localContext, 2);
2131
2181
  {
2132
- this.state = 388;
2182
+ this.state = 398;
2133
2183
  this.function_return_expr();
2134
2184
  }
2135
2185
  break;
@@ -2157,49 +2207,49 @@ export class CircuitScriptParser extends antlr.Parser {
2157
2207
  let _la;
2158
2208
  try {
2159
2209
  let alternative;
2160
- this.state = 420;
2210
+ this.state = 430;
2161
2211
  this.errorHandler.sync(this);
2162
2212
  switch (this.interpreter.adaptivePredict(this.tokenStream, 44, this.context)) {
2163
2213
  case 1:
2164
2214
  this.enterOuterAlt(localContext, 1);
2165
2215
  {
2166
- this.state = 391;
2216
+ this.state = 401;
2167
2217
  this.match(CircuitScriptParser.ID);
2168
- this.state = 396;
2218
+ this.state = 406;
2169
2219
  this.errorHandler.sync(this);
2170
2220
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 41, this.context);
2171
2221
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2172
2222
  if (alternative === 1) {
2173
2223
  {
2174
2224
  {
2175
- this.state = 392;
2225
+ this.state = 402;
2176
2226
  this.match(CircuitScriptParser.T__1);
2177
- this.state = 393;
2227
+ this.state = 403;
2178
2228
  this.match(CircuitScriptParser.ID);
2179
2229
  }
2180
2230
  }
2181
2231
  }
2182
- this.state = 398;
2232
+ this.state = 408;
2183
2233
  this.errorHandler.sync(this);
2184
2234
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 41, this.context);
2185
2235
  }
2186
- this.state = 405;
2236
+ this.state = 415;
2187
2237
  this.errorHandler.sync(this);
2188
2238
  _la = this.tokenStream.LA(1);
2189
2239
  while (_la === 2) {
2190
2240
  {
2191
2241
  {
2192
- this.state = 399;
2242
+ this.state = 409;
2193
2243
  this.match(CircuitScriptParser.T__1);
2194
- this.state = 400;
2244
+ this.state = 410;
2195
2245
  this.match(CircuitScriptParser.ID);
2196
- this.state = 401;
2246
+ this.state = 411;
2197
2247
  this.match(CircuitScriptParser.T__2);
2198
- this.state = 402;
2248
+ this.state = 412;
2199
2249
  this.value_expr();
2200
2250
  }
2201
2251
  }
2202
- this.state = 407;
2252
+ this.state = 417;
2203
2253
  this.errorHandler.sync(this);
2204
2254
  _la = this.tokenStream.LA(1);
2205
2255
  }
@@ -2208,29 +2258,29 @@ export class CircuitScriptParser extends antlr.Parser {
2208
2258
  case 2:
2209
2259
  this.enterOuterAlt(localContext, 2);
2210
2260
  {
2211
- this.state = 408;
2261
+ this.state = 418;
2212
2262
  this.match(CircuitScriptParser.ID);
2213
- this.state = 409;
2263
+ this.state = 419;
2214
2264
  this.match(CircuitScriptParser.T__2);
2215
- this.state = 410;
2265
+ this.state = 420;
2216
2266
  this.value_expr();
2217
- this.state = 417;
2267
+ this.state = 427;
2218
2268
  this.errorHandler.sync(this);
2219
2269
  _la = this.tokenStream.LA(1);
2220
2270
  while (_la === 2) {
2221
2271
  {
2222
2272
  {
2223
- this.state = 411;
2273
+ this.state = 421;
2224
2274
  this.match(CircuitScriptParser.T__1);
2225
- this.state = 412;
2275
+ this.state = 422;
2226
2276
  this.match(CircuitScriptParser.ID);
2227
- this.state = 413;
2277
+ this.state = 423;
2228
2278
  this.match(CircuitScriptParser.T__2);
2229
- this.state = 414;
2279
+ this.state = 424;
2230
2280
  this.value_expr();
2231
2281
  }
2232
2282
  }
2233
- this.state = 419;
2283
+ this.state = 429;
2234
2284
  this.errorHandler.sync(this);
2235
2285
  _la = this.tokenStream.LA(1);
2236
2286
  }
@@ -2259,23 +2309,23 @@ export class CircuitScriptParser extends antlr.Parser {
2259
2309
  let alternative;
2260
2310
  this.enterOuterAlt(localContext, 1);
2261
2311
  {
2262
- this.state = 422;
2312
+ this.state = 432;
2263
2313
  this.match(CircuitScriptParser.ID);
2264
- this.state = 427;
2314
+ this.state = 437;
2265
2315
  this.errorHandler.sync(this);
2266
2316
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 45, this.context);
2267
2317
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2268
2318
  if (alternative === 1) {
2269
2319
  {
2270
2320
  {
2271
- this.state = 423;
2321
+ this.state = 433;
2272
2322
  this.match(CircuitScriptParser.T__4);
2273
- this.state = 424;
2323
+ this.state = 434;
2274
2324
  this.match(CircuitScriptParser.ID);
2275
2325
  }
2276
2326
  }
2277
2327
  }
2278
- this.state = 429;
2328
+ this.state = 439;
2279
2329
  this.errorHandler.sync(this);
2280
2330
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 45, this.context);
2281
2331
  }
@@ -2300,33 +2350,33 @@ export class CircuitScriptParser extends antlr.Parser {
2300
2350
  this.enterRule(localContext, 72, CircuitScriptParser.RULE_trailer_expr);
2301
2351
  let _la;
2302
2352
  try {
2303
- this.state = 437;
2353
+ this.state = 447;
2304
2354
  this.errorHandler.sync(this);
2305
2355
  switch (this.tokenStream.LA(1)) {
2306
2356
  case CircuitScriptParser.OPEN_PAREN:
2307
2357
  this.enterOuterAlt(localContext, 1);
2308
2358
  {
2309
- this.state = 430;
2359
+ this.state = 440;
2310
2360
  this.match(CircuitScriptParser.OPEN_PAREN);
2311
- this.state = 432;
2361
+ this.state = 442;
2312
2362
  this.errorHandler.sync(this);
2313
2363
  _la = this.tokenStream.LA(1);
2314
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3791651904) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1017) !== 0)) {
2364
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109952) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 16279) !== 0)) {
2315
2365
  {
2316
- this.state = 431;
2366
+ this.state = 441;
2317
2367
  this.parameters();
2318
2368
  }
2319
2369
  }
2320
- this.state = 434;
2370
+ this.state = 444;
2321
2371
  this.match(CircuitScriptParser.CLOSE_PAREN);
2322
2372
  }
2323
2373
  break;
2324
2374
  case CircuitScriptParser.T__4:
2325
2375
  this.enterOuterAlt(localContext, 2);
2326
2376
  {
2327
- this.state = 435;
2377
+ this.state = 445;
2328
2378
  this.match(CircuitScriptParser.T__4);
2329
- this.state = 436;
2379
+ this.state = 446;
2330
2380
  this.match(CircuitScriptParser.ID);
2331
2381
  }
2332
2382
  break;
@@ -2356,18 +2406,18 @@ export class CircuitScriptParser extends antlr.Parser {
2356
2406
  let alternative;
2357
2407
  this.enterOuterAlt(localContext, 1);
2358
2408
  {
2359
- this.state = 440;
2409
+ this.state = 450;
2360
2410
  this.errorHandler.sync(this);
2361
2411
  _la = this.tokenStream.LA(1);
2362
- if (_la === 29 || _la === 31) {
2412
+ if (_la === 36 || _la === 38) {
2363
2413
  {
2364
- this.state = 439;
2414
+ this.state = 449;
2365
2415
  this.net_namespace_expr();
2366
2416
  }
2367
2417
  }
2368
- this.state = 442;
2418
+ this.state = 452;
2369
2419
  this.match(CircuitScriptParser.ID);
2370
- this.state = 444;
2420
+ this.state = 454;
2371
2421
  this.errorHandler.sync(this);
2372
2422
  alternative = 1;
2373
2423
  do {
@@ -2375,7 +2425,7 @@ export class CircuitScriptParser extends antlr.Parser {
2375
2425
  case 1:
2376
2426
  {
2377
2427
  {
2378
- this.state = 443;
2428
+ this.state = 453;
2379
2429
  this.trailer_expr();
2380
2430
  }
2381
2431
  }
@@ -2383,7 +2433,7 @@ export class CircuitScriptParser extends antlr.Parser {
2383
2433
  default:
2384
2434
  throw new antlr.NoViableAltException(this);
2385
2435
  }
2386
- this.state = 446;
2436
+ this.state = 456;
2387
2437
  this.errorHandler.sync(this);
2388
2438
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 49, this.context);
2389
2439
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
@@ -2410,23 +2460,23 @@ export class CircuitScriptParser extends antlr.Parser {
2410
2460
  try {
2411
2461
  this.enterOuterAlt(localContext, 1);
2412
2462
  {
2413
- this.state = 449;
2463
+ this.state = 459;
2414
2464
  this.errorHandler.sync(this);
2415
2465
  _la = this.tokenStream.LA(1);
2416
- if (_la === 29) {
2466
+ if (_la === 36) {
2417
2467
  {
2418
- this.state = 448;
2468
+ this.state = 458;
2419
2469
  this.match(CircuitScriptParser.Addition);
2420
2470
  }
2421
2471
  }
2422
- this.state = 451;
2472
+ this.state = 461;
2423
2473
  this.match(CircuitScriptParser.Divide);
2424
- this.state = 453;
2474
+ this.state = 463;
2425
2475
  this.errorHandler.sync(this);
2426
2476
  switch (this.interpreter.adaptivePredict(this.tokenStream, 51, this.context)) {
2427
2477
  case 1:
2428
2478
  {
2429
- this.state = 452;
2479
+ this.state = 462;
2430
2480
  this.data_expr(0);
2431
2481
  }
2432
2482
  break;
@@ -2453,9 +2503,9 @@ export class CircuitScriptParser extends antlr.Parser {
2453
2503
  try {
2454
2504
  this.enterOuterAlt(localContext, 1);
2455
2505
  {
2456
- this.state = 455;
2506
+ this.state = 465;
2457
2507
  this.match(CircuitScriptParser.Return);
2458
- this.state = 456;
2508
+ this.state = 466;
2459
2509
  this.data_expr(0);
2460
2510
  }
2461
2511
  }
@@ -2480,27 +2530,27 @@ export class CircuitScriptParser extends antlr.Parser {
2480
2530
  try {
2481
2531
  this.enterOuterAlt(localContext, 1);
2482
2532
  {
2483
- this.state = 458;
2533
+ this.state = 468;
2484
2534
  this.match(CircuitScriptParser.Create);
2485
- this.state = 459;
2535
+ this.state = 469;
2486
2536
  this.match(CircuitScriptParser.Component);
2487
- this.state = 460;
2537
+ this.state = 470;
2488
2538
  this.match(CircuitScriptParser.T__0);
2489
- this.state = 461;
2539
+ this.state = 471;
2490
2540
  this.match(CircuitScriptParser.NEWLINE);
2491
- this.state = 462;
2541
+ this.state = 472;
2492
2542
  this.match(CircuitScriptParser.INDENT);
2493
- this.state = 465;
2543
+ this.state = 475;
2494
2544
  this.errorHandler.sync(this);
2495
2545
  _la = this.tokenStream.LA(1);
2496
2546
  do {
2497
2547
  {
2498
- this.state = 465;
2548
+ this.state = 475;
2499
2549
  this.errorHandler.sync(this);
2500
2550
  switch (this.tokenStream.LA(1)) {
2501
2551
  case CircuitScriptParser.NEWLINE:
2502
2552
  {
2503
- this.state = 463;
2553
+ this.state = 473;
2504
2554
  this.match(CircuitScriptParser.NEWLINE);
2505
2555
  }
2506
2556
  break;
@@ -2508,7 +2558,7 @@ export class CircuitScriptParser extends antlr.Parser {
2508
2558
  case CircuitScriptParser.INTEGER_VALUE:
2509
2559
  case CircuitScriptParser.STRING_VALUE:
2510
2560
  {
2511
- this.state = 464;
2561
+ this.state = 474;
2512
2562
  this.property_expr();
2513
2563
  }
2514
2564
  break;
@@ -2516,11 +2566,11 @@ export class CircuitScriptParser extends antlr.Parser {
2516
2566
  throw new antlr.NoViableAltException(this);
2517
2567
  }
2518
2568
  }
2519
- this.state = 467;
2569
+ this.state = 477;
2520
2570
  this.errorHandler.sync(this);
2521
2571
  _la = this.tokenStream.LA(1);
2522
- } while (((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 275) !== 0));
2523
- this.state = 469;
2572
+ } while (((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 275) !== 0));
2573
+ this.state = 479;
2524
2574
  this.match(CircuitScriptParser.DEDENT);
2525
2575
  }
2526
2576
  }
@@ -2545,46 +2595,46 @@ export class CircuitScriptParser extends antlr.Parser {
2545
2595
  try {
2546
2596
  this.enterOuterAlt(localContext, 1);
2547
2597
  {
2548
- this.state = 471;
2598
+ this.state = 481;
2549
2599
  this.match(CircuitScriptParser.Create);
2550
- this.state = 472;
2600
+ this.state = 482;
2551
2601
  this.match(CircuitScriptParser.Graphic);
2552
- this.state = 473;
2602
+ this.state = 483;
2553
2603
  this.match(CircuitScriptParser.T__0);
2554
- this.state = 474;
2604
+ this.state = 484;
2555
2605
  this.match(CircuitScriptParser.NEWLINE);
2556
- this.state = 475;
2606
+ this.state = 485;
2557
2607
  this.match(CircuitScriptParser.INDENT);
2558
- this.state = 478;
2608
+ this.state = 488;
2559
2609
  this.errorHandler.sync(this);
2560
2610
  _la = this.tokenStream.LA(1);
2561
2611
  do {
2562
2612
  {
2563
- this.state = 478;
2613
+ this.state = 488;
2564
2614
  this.errorHandler.sync(this);
2565
2615
  switch (this.tokenStream.LA(1)) {
2566
2616
  case CircuitScriptParser.NEWLINE:
2567
2617
  {
2568
- this.state = 476;
2618
+ this.state = 486;
2569
2619
  this.match(CircuitScriptParser.NEWLINE);
2570
2620
  }
2571
2621
  break;
2572
2622
  case CircuitScriptParser.Pin:
2573
2623
  case CircuitScriptParser.ID:
2574
2624
  {
2575
- this.state = 477;
2576
- this.sub_expr();
2625
+ this.state = 487;
2626
+ this.graphic_expr();
2577
2627
  }
2578
2628
  break;
2579
2629
  default:
2580
2630
  throw new antlr.NoViableAltException(this);
2581
2631
  }
2582
2632
  }
2583
- this.state = 480;
2633
+ this.state = 490;
2584
2634
  this.errorHandler.sync(this);
2585
2635
  _la = this.tokenStream.LA(1);
2586
- } while (((((_la - 14)) & ~0x1F) === 0 && ((1 << (_la - 14)) & 2155872257) !== 0));
2587
- this.state = 482;
2636
+ } while (_la === 14 || _la === 44 || _la === 52);
2637
+ this.state = 492;
2588
2638
  this.match(CircuitScriptParser.DEDENT);
2589
2639
  }
2590
2640
  }
@@ -2602,48 +2652,48 @@ export class CircuitScriptParser extends antlr.Parser {
2602
2652
  }
2603
2653
  return localContext;
2604
2654
  }
2605
- sub_expr() {
2606
- let localContext = new Sub_exprContext(this.context, this.state);
2607
- this.enterRule(localContext, 84, CircuitScriptParser.RULE_sub_expr);
2655
+ graphic_expr() {
2656
+ let localContext = new Graphic_exprContext(this.context, this.state);
2657
+ this.enterRule(localContext, 84, CircuitScriptParser.RULE_graphic_expr);
2608
2658
  let _la;
2609
2659
  try {
2610
2660
  this.enterOuterAlt(localContext, 1);
2611
2661
  {
2612
- this.state = 484;
2662
+ this.state = 494;
2613
2663
  localContext._command = this.tokenStream.LT(1);
2614
2664
  _la = this.tokenStream.LA(1);
2615
- if (!(_la === 14 || _la === 37)) {
2665
+ if (!(_la === 14 || _la === 44)) {
2616
2666
  localContext._command = this.errorHandler.recoverInline(this);
2617
2667
  }
2618
2668
  else {
2619
2669
  this.errorHandler.reportMatch(this);
2620
2670
  this.consume();
2621
2671
  }
2622
- this.state = 486;
2672
+ this.state = 496;
2623
2673
  this.errorHandler.sync(this);
2624
2674
  _la = this.tokenStream.LA(1);
2625
2675
  if (_la === 1) {
2626
2676
  {
2627
- this.state = 485;
2677
+ this.state = 495;
2628
2678
  this.match(CircuitScriptParser.T__0);
2629
2679
  }
2630
2680
  }
2631
- this.state = 493;
2681
+ this.state = 503;
2632
2682
  this.errorHandler.sync(this);
2633
2683
  switch (this.interpreter.adaptivePredict(this.tokenStream, 57, this.context)) {
2634
2684
  case 1:
2635
2685
  {
2636
- this.state = 488;
2686
+ this.state = 498;
2637
2687
  this.parameters();
2638
2688
  }
2639
2689
  break;
2640
2690
  case 2:
2641
2691
  {
2642
- this.state = 489;
2692
+ this.state = 499;
2643
2693
  this.match(CircuitScriptParser.OPEN_PAREN);
2644
- this.state = 490;
2694
+ this.state = 500;
2645
2695
  this.parameters();
2646
- this.state = 491;
2696
+ this.state = 501;
2647
2697
  this.match(CircuitScriptParser.CLOSE_PAREN);
2648
2698
  }
2649
2699
  break;
@@ -2670,11 +2720,11 @@ export class CircuitScriptParser extends antlr.Parser {
2670
2720
  try {
2671
2721
  this.enterOuterAlt(localContext, 1);
2672
2722
  {
2673
- this.state = 495;
2723
+ this.state = 505;
2674
2724
  this.property_key_expr();
2675
- this.state = 496;
2725
+ this.state = 506;
2676
2726
  this.match(CircuitScriptParser.T__0);
2677
- this.state = 497;
2727
+ this.state = 507;
2678
2728
  this.property_value_expr();
2679
2729
  }
2680
2730
  }
@@ -2699,9 +2749,9 @@ export class CircuitScriptParser extends antlr.Parser {
2699
2749
  try {
2700
2750
  this.enterOuterAlt(localContext, 1);
2701
2751
  {
2702
- this.state = 499;
2752
+ this.state = 509;
2703
2753
  _la = this.tokenStream.LA(1);
2704
- if (!(((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 19) !== 0))) {
2754
+ if (!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 19) !== 0))) {
2705
2755
  this.errorHandler.recoverInline(this);
2706
2756
  }
2707
2757
  else {
@@ -2729,28 +2779,28 @@ export class CircuitScriptParser extends antlr.Parser {
2729
2779
  this.enterRule(localContext, 90, CircuitScriptParser.RULE_property_value_expr);
2730
2780
  let _la;
2731
2781
  try {
2732
- this.state = 518;
2782
+ this.state = 528;
2733
2783
  this.errorHandler.sync(this);
2734
2784
  switch (this.tokenStream.LA(1)) {
2735
2785
  case CircuitScriptParser.NEWLINE:
2736
2786
  localContext = new Nested_propertiesContext(localContext);
2737
2787
  this.enterOuterAlt(localContext, 1);
2738
2788
  {
2739
- this.state = 501;
2789
+ this.state = 511;
2740
2790
  this.match(CircuitScriptParser.NEWLINE);
2741
- this.state = 502;
2791
+ this.state = 512;
2742
2792
  this.match(CircuitScriptParser.INDENT);
2743
- this.state = 505;
2793
+ this.state = 515;
2744
2794
  this.errorHandler.sync(this);
2745
2795
  _la = this.tokenStream.LA(1);
2746
2796
  do {
2747
2797
  {
2748
- this.state = 505;
2798
+ this.state = 515;
2749
2799
  this.errorHandler.sync(this);
2750
2800
  switch (this.tokenStream.LA(1)) {
2751
2801
  case CircuitScriptParser.NEWLINE:
2752
2802
  {
2753
- this.state = 503;
2803
+ this.state = 513;
2754
2804
  this.match(CircuitScriptParser.NEWLINE);
2755
2805
  }
2756
2806
  break;
@@ -2758,7 +2808,7 @@ export class CircuitScriptParser extends antlr.Parser {
2758
2808
  case CircuitScriptParser.INTEGER_VALUE:
2759
2809
  case CircuitScriptParser.STRING_VALUE:
2760
2810
  {
2761
- this.state = 504;
2811
+ this.state = 514;
2762
2812
  this.property_expr();
2763
2813
  }
2764
2814
  break;
@@ -2766,11 +2816,11 @@ export class CircuitScriptParser extends antlr.Parser {
2766
2816
  throw new antlr.NoViableAltException(this);
2767
2817
  }
2768
2818
  }
2769
- this.state = 507;
2819
+ this.state = 517;
2770
2820
  this.errorHandler.sync(this);
2771
2821
  _la = this.tokenStream.LA(1);
2772
- } while (((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 275) !== 0));
2773
- this.state = 509;
2822
+ } while (((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 275) !== 0));
2823
+ this.state = 519;
2774
2824
  this.match(CircuitScriptParser.DEDENT);
2775
2825
  }
2776
2826
  break;
@@ -2791,21 +2841,21 @@ export class CircuitScriptParser extends antlr.Parser {
2791
2841
  localContext = new Single_line_propertyContext(localContext);
2792
2842
  this.enterOuterAlt(localContext, 2);
2793
2843
  {
2794
- this.state = 510;
2844
+ this.state = 520;
2795
2845
  this.data_expr(0);
2796
- this.state = 515;
2846
+ this.state = 525;
2797
2847
  this.errorHandler.sync(this);
2798
2848
  _la = this.tokenStream.LA(1);
2799
2849
  while (_la === 2) {
2800
2850
  {
2801
2851
  {
2802
- this.state = 511;
2852
+ this.state = 521;
2803
2853
  this.match(CircuitScriptParser.T__1);
2804
- this.state = 512;
2854
+ this.state = 522;
2805
2855
  this.data_expr(0);
2806
2856
  }
2807
2857
  }
2808
- this.state = 517;
2858
+ this.state = 527;
2809
2859
  this.errorHandler.sync(this);
2810
2860
  _la = this.tokenStream.LA(1);
2811
2861
  }
@@ -2835,11 +2885,11 @@ export class CircuitScriptParser extends antlr.Parser {
2835
2885
  try {
2836
2886
  this.enterOuterAlt(localContext, 1);
2837
2887
  {
2838
- this.state = 520;
2888
+ this.state = 530;
2839
2889
  this.match(CircuitScriptParser.T__5);
2840
- this.state = 521;
2890
+ this.state = 531;
2841
2891
  this.match(CircuitScriptParser.INTEGER_VALUE);
2842
- this.state = 522;
2892
+ this.state = 532;
2843
2893
  this.match(CircuitScriptParser.T__6);
2844
2894
  }
2845
2895
  }
@@ -2861,27 +2911,27 @@ export class CircuitScriptParser extends antlr.Parser {
2861
2911
  let localContext = new Wire_atom_exprContext(this.context, this.state);
2862
2912
  this.enterRule(localContext, 94, CircuitScriptParser.RULE_wire_atom_expr);
2863
2913
  try {
2864
- this.state = 530;
2914
+ this.state = 540;
2865
2915
  this.errorHandler.sync(this);
2866
2916
  switch (this.interpreter.adaptivePredict(this.tokenStream, 63, this.context)) {
2867
2917
  case 1:
2868
2918
  localContext = new Wire_expr_direction_valueContext(localContext);
2869
2919
  this.enterOuterAlt(localContext, 1);
2870
2920
  {
2871
- this.state = 524;
2921
+ this.state = 534;
2872
2922
  this.match(CircuitScriptParser.ID);
2873
- this.state = 527;
2923
+ this.state = 537;
2874
2924
  this.errorHandler.sync(this);
2875
2925
  switch (this.interpreter.adaptivePredict(this.tokenStream, 62, this.context)) {
2876
2926
  case 1:
2877
2927
  {
2878
- this.state = 525;
2928
+ this.state = 535;
2879
2929
  this.match(CircuitScriptParser.INTEGER_VALUE);
2880
2930
  }
2881
2931
  break;
2882
2932
  case 2:
2883
2933
  {
2884
- this.state = 526;
2934
+ this.state = 536;
2885
2935
  this.data_expr(0);
2886
2936
  }
2887
2937
  break;
@@ -2892,7 +2942,7 @@ export class CircuitScriptParser extends antlr.Parser {
2892
2942
  localContext = new Wire_expr_direction_onlyContext(localContext);
2893
2943
  this.enterOuterAlt(localContext, 2);
2894
2944
  {
2895
- this.state = 529;
2945
+ this.state = 539;
2896
2946
  this.match(CircuitScriptParser.ID);
2897
2947
  }
2898
2948
  break;
@@ -2919,21 +2969,21 @@ export class CircuitScriptParser extends antlr.Parser {
2919
2969
  let alternative;
2920
2970
  this.enterOuterAlt(localContext, 1);
2921
2971
  {
2922
- this.state = 532;
2972
+ this.state = 542;
2923
2973
  this.match(CircuitScriptParser.Wire);
2924
- this.state = 536;
2974
+ this.state = 546;
2925
2975
  this.errorHandler.sync(this);
2926
2976
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 64, this.context);
2927
2977
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2928
2978
  if (alternative === 1) {
2929
2979
  {
2930
2980
  {
2931
- this.state = 533;
2981
+ this.state = 543;
2932
2982
  this.wire_atom_expr();
2933
2983
  }
2934
2984
  }
2935
2985
  }
2936
- this.state = 538;
2986
+ this.state = 548;
2937
2987
  this.errorHandler.sync(this);
2938
2988
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 64, this.context);
2939
2989
  }
@@ -2959,9 +3009,9 @@ export class CircuitScriptParser extends antlr.Parser {
2959
3009
  try {
2960
3010
  this.enterOuterAlt(localContext, 1);
2961
3011
  {
2962
- this.state = 539;
3012
+ this.state = 549;
2963
3013
  this.match(CircuitScriptParser.Point);
2964
- this.state = 540;
3014
+ this.state = 550;
2965
3015
  this.match(CircuitScriptParser.ID);
2966
3016
  }
2967
3017
  }
@@ -2985,9 +3035,9 @@ export class CircuitScriptParser extends antlr.Parser {
2985
3035
  try {
2986
3036
  this.enterOuterAlt(localContext, 1);
2987
3037
  {
2988
- this.state = 542;
3038
+ this.state = 552;
2989
3039
  this.match(CircuitScriptParser.Import);
2990
- this.state = 543;
3040
+ this.state = 553;
2991
3041
  this.match(CircuitScriptParser.ID);
2992
3042
  }
2993
3043
  }
@@ -3012,25 +3062,25 @@ export class CircuitScriptParser extends antlr.Parser {
3012
3062
  try {
3013
3063
  this.enterOuterAlt(localContext, 1);
3014
3064
  {
3015
- this.state = 545;
3065
+ this.state = 555;
3016
3066
  this.match(CircuitScriptParser.Frame);
3017
- this.state = 546;
3067
+ this.state = 556;
3018
3068
  this.match(CircuitScriptParser.T__0);
3019
- this.state = 547;
3069
+ this.state = 557;
3020
3070
  this.match(CircuitScriptParser.NEWLINE);
3021
- this.state = 548;
3071
+ this.state = 558;
3022
3072
  this.match(CircuitScriptParser.INDENT);
3023
- this.state = 551;
3073
+ this.state = 561;
3024
3074
  this.errorHandler.sync(this);
3025
3075
  _la = this.tokenStream.LA(1);
3026
3076
  do {
3027
3077
  {
3028
- this.state = 551;
3078
+ this.state = 561;
3029
3079
  this.errorHandler.sync(this);
3030
3080
  switch (this.tokenStream.LA(1)) {
3031
3081
  case CircuitScriptParser.NEWLINE:
3032
3082
  {
3033
- this.state = 549;
3083
+ this.state = 559;
3034
3084
  this.match(CircuitScriptParser.NEWLINE);
3035
3085
  }
3036
3086
  break;
@@ -3046,12 +3096,13 @@ export class CircuitScriptParser extends antlr.Parser {
3046
3096
  case CircuitScriptParser.Parallel:
3047
3097
  case CircuitScriptParser.Define:
3048
3098
  case CircuitScriptParser.Import:
3099
+ case CircuitScriptParser.If:
3049
3100
  case CircuitScriptParser.Frame:
3050
3101
  case CircuitScriptParser.Addition:
3051
3102
  case CircuitScriptParser.Divide:
3052
3103
  case CircuitScriptParser.ID:
3053
3104
  {
3054
- this.state = 550;
3105
+ this.state = 560;
3055
3106
  this.expression();
3056
3107
  }
3057
3108
  break;
@@ -3059,11 +3110,274 @@ export class CircuitScriptParser extends antlr.Parser {
3059
3110
  throw new antlr.NoViableAltException(this);
3060
3111
  }
3061
3112
  }
3062
- this.state = 553;
3113
+ this.state = 563;
3063
3114
  this.errorHandler.sync(this);
3064
3115
  _la = this.tokenStream.LA(1);
3065
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || _la === 37 || _la === 45);
3066
- this.state = 555;
3116
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
3117
+ this.state = 565;
3118
+ this.match(CircuitScriptParser.DEDENT);
3119
+ }
3120
+ }
3121
+ catch (re) {
3122
+ if (re instanceof antlr.RecognitionException) {
3123
+ this.errorHandler.reportError(this, re);
3124
+ this.errorHandler.recover(this, re);
3125
+ }
3126
+ else {
3127
+ throw re;
3128
+ }
3129
+ }
3130
+ finally {
3131
+ this.exitRule();
3132
+ }
3133
+ return localContext;
3134
+ }
3135
+ if_expr() {
3136
+ let localContext = new If_exprContext(this.context, this.state);
3137
+ this.enterRule(localContext, 104, CircuitScriptParser.RULE_if_expr);
3138
+ let _la;
3139
+ try {
3140
+ let alternative;
3141
+ this.enterOuterAlt(localContext, 1);
3142
+ {
3143
+ this.state = 567;
3144
+ this.match(CircuitScriptParser.If);
3145
+ this.state = 568;
3146
+ this.data_expr(0);
3147
+ this.state = 569;
3148
+ this.match(CircuitScriptParser.T__0);
3149
+ this.state = 570;
3150
+ this.match(CircuitScriptParser.NEWLINE);
3151
+ this.state = 571;
3152
+ this.match(CircuitScriptParser.INDENT);
3153
+ this.state = 574;
3154
+ this.errorHandler.sync(this);
3155
+ _la = this.tokenStream.LA(1);
3156
+ do {
3157
+ {
3158
+ this.state = 574;
3159
+ this.errorHandler.sync(this);
3160
+ switch (this.tokenStream.LA(1)) {
3161
+ case CircuitScriptParser.NEWLINE:
3162
+ {
3163
+ this.state = 572;
3164
+ this.match(CircuitScriptParser.NEWLINE);
3165
+ }
3166
+ break;
3167
+ case CircuitScriptParser.T__3:
3168
+ case CircuitScriptParser.Break:
3169
+ case CircuitScriptParser.Branch:
3170
+ case CircuitScriptParser.Wire:
3171
+ case CircuitScriptParser.Add:
3172
+ case CircuitScriptParser.At:
3173
+ case CircuitScriptParser.To:
3174
+ case CircuitScriptParser.Point:
3175
+ case CircuitScriptParser.Join:
3176
+ case CircuitScriptParser.Parallel:
3177
+ case CircuitScriptParser.Define:
3178
+ case CircuitScriptParser.Import:
3179
+ case CircuitScriptParser.If:
3180
+ case CircuitScriptParser.Frame:
3181
+ case CircuitScriptParser.Addition:
3182
+ case CircuitScriptParser.Divide:
3183
+ case CircuitScriptParser.ID:
3184
+ {
3185
+ this.state = 573;
3186
+ this.expression();
3187
+ }
3188
+ break;
3189
+ default:
3190
+ throw new antlr.NoViableAltException(this);
3191
+ }
3192
+ }
3193
+ this.state = 576;
3194
+ this.errorHandler.sync(this);
3195
+ _la = this.tokenStream.LA(1);
3196
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
3197
+ this.state = 578;
3198
+ this.match(CircuitScriptParser.DEDENT);
3199
+ this.state = 582;
3200
+ this.errorHandler.sync(this);
3201
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 69, this.context);
3202
+ while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3203
+ if (alternative === 1) {
3204
+ {
3205
+ {
3206
+ this.state = 579;
3207
+ this.if_inner_expr();
3208
+ }
3209
+ }
3210
+ }
3211
+ this.state = 584;
3212
+ this.errorHandler.sync(this);
3213
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 69, this.context);
3214
+ }
3215
+ this.state = 586;
3216
+ this.errorHandler.sync(this);
3217
+ _la = this.tokenStream.LA(1);
3218
+ if (_la === 25) {
3219
+ {
3220
+ this.state = 585;
3221
+ this.else_expr();
3222
+ }
3223
+ }
3224
+ }
3225
+ }
3226
+ catch (re) {
3227
+ if (re instanceof antlr.RecognitionException) {
3228
+ this.errorHandler.reportError(this, re);
3229
+ this.errorHandler.recover(this, re);
3230
+ }
3231
+ else {
3232
+ throw re;
3233
+ }
3234
+ }
3235
+ finally {
3236
+ this.exitRule();
3237
+ }
3238
+ return localContext;
3239
+ }
3240
+ if_inner_expr() {
3241
+ let localContext = new If_inner_exprContext(this.context, this.state);
3242
+ this.enterRule(localContext, 106, CircuitScriptParser.RULE_if_inner_expr);
3243
+ let _la;
3244
+ try {
3245
+ this.enterOuterAlt(localContext, 1);
3246
+ {
3247
+ this.state = 588;
3248
+ this.match(CircuitScriptParser.Else);
3249
+ this.state = 589;
3250
+ this.match(CircuitScriptParser.If);
3251
+ this.state = 590;
3252
+ this.data_expr(0);
3253
+ this.state = 591;
3254
+ this.match(CircuitScriptParser.T__0);
3255
+ this.state = 592;
3256
+ this.match(CircuitScriptParser.NEWLINE);
3257
+ this.state = 593;
3258
+ this.match(CircuitScriptParser.INDENT);
3259
+ this.state = 596;
3260
+ this.errorHandler.sync(this);
3261
+ _la = this.tokenStream.LA(1);
3262
+ do {
3263
+ {
3264
+ this.state = 596;
3265
+ this.errorHandler.sync(this);
3266
+ switch (this.tokenStream.LA(1)) {
3267
+ case CircuitScriptParser.NEWLINE:
3268
+ {
3269
+ this.state = 594;
3270
+ this.match(CircuitScriptParser.NEWLINE);
3271
+ }
3272
+ break;
3273
+ case CircuitScriptParser.T__3:
3274
+ case CircuitScriptParser.Break:
3275
+ case CircuitScriptParser.Branch:
3276
+ case CircuitScriptParser.Wire:
3277
+ case CircuitScriptParser.Add:
3278
+ case CircuitScriptParser.At:
3279
+ case CircuitScriptParser.To:
3280
+ case CircuitScriptParser.Point:
3281
+ case CircuitScriptParser.Join:
3282
+ case CircuitScriptParser.Parallel:
3283
+ case CircuitScriptParser.Define:
3284
+ case CircuitScriptParser.Import:
3285
+ case CircuitScriptParser.If:
3286
+ case CircuitScriptParser.Frame:
3287
+ case CircuitScriptParser.Addition:
3288
+ case CircuitScriptParser.Divide:
3289
+ case CircuitScriptParser.ID:
3290
+ {
3291
+ this.state = 595;
3292
+ this.expression();
3293
+ }
3294
+ break;
3295
+ default:
3296
+ throw new antlr.NoViableAltException(this);
3297
+ }
3298
+ }
3299
+ this.state = 598;
3300
+ this.errorHandler.sync(this);
3301
+ _la = this.tokenStream.LA(1);
3302
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
3303
+ this.state = 600;
3304
+ this.match(CircuitScriptParser.DEDENT);
3305
+ }
3306
+ }
3307
+ catch (re) {
3308
+ if (re instanceof antlr.RecognitionException) {
3309
+ this.errorHandler.reportError(this, re);
3310
+ this.errorHandler.recover(this, re);
3311
+ }
3312
+ else {
3313
+ throw re;
3314
+ }
3315
+ }
3316
+ finally {
3317
+ this.exitRule();
3318
+ }
3319
+ return localContext;
3320
+ }
3321
+ else_expr() {
3322
+ let localContext = new Else_exprContext(this.context, this.state);
3323
+ this.enterRule(localContext, 108, CircuitScriptParser.RULE_else_expr);
3324
+ let _la;
3325
+ try {
3326
+ this.enterOuterAlt(localContext, 1);
3327
+ {
3328
+ this.state = 602;
3329
+ this.match(CircuitScriptParser.Else);
3330
+ this.state = 603;
3331
+ this.match(CircuitScriptParser.T__0);
3332
+ this.state = 604;
3333
+ this.match(CircuitScriptParser.NEWLINE);
3334
+ this.state = 605;
3335
+ this.match(CircuitScriptParser.INDENT);
3336
+ this.state = 608;
3337
+ this.errorHandler.sync(this);
3338
+ _la = this.tokenStream.LA(1);
3339
+ do {
3340
+ {
3341
+ this.state = 608;
3342
+ this.errorHandler.sync(this);
3343
+ switch (this.tokenStream.LA(1)) {
3344
+ case CircuitScriptParser.NEWLINE:
3345
+ {
3346
+ this.state = 606;
3347
+ this.match(CircuitScriptParser.NEWLINE);
3348
+ }
3349
+ break;
3350
+ case CircuitScriptParser.T__3:
3351
+ case CircuitScriptParser.Break:
3352
+ case CircuitScriptParser.Branch:
3353
+ case CircuitScriptParser.Wire:
3354
+ case CircuitScriptParser.Add:
3355
+ case CircuitScriptParser.At:
3356
+ case CircuitScriptParser.To:
3357
+ case CircuitScriptParser.Point:
3358
+ case CircuitScriptParser.Join:
3359
+ case CircuitScriptParser.Parallel:
3360
+ case CircuitScriptParser.Define:
3361
+ case CircuitScriptParser.Import:
3362
+ case CircuitScriptParser.If:
3363
+ case CircuitScriptParser.Frame:
3364
+ case CircuitScriptParser.Addition:
3365
+ case CircuitScriptParser.Divide:
3366
+ case CircuitScriptParser.ID:
3367
+ {
3368
+ this.state = 607;
3369
+ this.expression();
3370
+ }
3371
+ break;
3372
+ default:
3373
+ throw new antlr.NoViableAltException(this);
3374
+ }
3375
+ }
3376
+ this.state = 610;
3377
+ this.errorHandler.sync(this);
3378
+ _la = this.tokenStream.LA(1);
3379
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
3380
+ this.state = 612;
3067
3381
  this.match(CircuitScriptParser.DEDENT);
3068
3382
  }
3069
3383
  }
@@ -3091,221 +3405,244 @@ export class CircuitScriptParser extends antlr.Parser {
3091
3405
  data_expr_sempred(localContext, predIndex) {
3092
3406
  switch (predIndex) {
3093
3407
  case 0:
3094
- return this.precpred(this.context, 6);
3408
+ return this.precpred(this.context, 7);
3095
3409
  case 1:
3096
- return this.precpred(this.context, 5);
3410
+ return this.precpred(this.context, 6);
3097
3411
  case 2:
3412
+ return this.precpred(this.context, 5);
3413
+ case 3:
3098
3414
  return this.precpred(this.context, 4);
3099
3415
  }
3100
3416
  return true;
3101
3417
  }
3102
3418
  static _serializedATN = [
3103
- 4, 1, 48, 558, 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,
3419
+ 4, 1, 55, 615, 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,
3104
3420
  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,
3105
3421
  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,
3106
3422
  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,
3107
3423
  2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33,
3108
3424
  7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39,
3109
3425
  2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46,
3110
- 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 1, 0, 1, 0, 4,
3111
- 0, 107, 8, 0, 11, 0, 12, 0, 108, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3112
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 130, 8, 1, 1, 2, 4, 2, 133, 8, 2,
3113
- 11, 2, 12, 2, 134, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 4, 3, 143, 8, 3, 11, 3, 12, 3, 144,
3114
- 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 155, 8, 4, 11, 4, 12, 4, 156, 1, 4, 1,
3115
- 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 172, 8, 7, 1, 8, 1,
3116
- 8, 3, 8, 176, 8, 8, 1, 8, 5, 8, 179, 8, 8, 10, 8, 12, 8, 182, 9, 8, 1, 8, 3, 8, 185, 8, 8,
3117
- 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 3, 10, 192, 8, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 3, 12,
3118
- 199, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 205, 8, 13, 10, 13, 12, 13, 208, 9, 13,
3119
- 1, 13, 3, 13, 211, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 219, 8, 14, 10,
3120
- 14, 12, 14, 222, 9, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 229, 8, 14, 11, 14, 12,
3121
- 14, 230, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 240, 8, 15, 10, 15, 12,
3122
- 15, 243, 9, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 253, 8, 17,
3123
- 11, 17, 12, 17, 254, 1, 17, 1, 17, 1, 18, 1, 18, 3, 18, 261, 8, 18, 1, 19, 1, 19, 1, 19,
3124
- 1, 19, 3, 19, 267, 8, 19, 1, 20, 1, 20, 3, 20, 271, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 4,
3125
- 21, 277, 8, 21, 11, 21, 12, 21, 278, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1,
3126
- 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 5, 25, 296, 8, 25, 10, 25, 12, 25,
3127
- 299, 9, 25, 1, 25, 1, 25, 5, 25, 303, 8, 25, 10, 25, 12, 25, 306, 9, 25, 1, 25, 1, 25,
3128
- 1, 25, 5, 25, 311, 8, 25, 10, 25, 12, 25, 314, 9, 25, 3, 25, 316, 8, 25, 1, 26, 1, 26,
3129
- 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28,
3130
- 1, 28, 3, 28, 334, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 342, 8, 28, 1,
3131
- 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 354, 8, 28, 10,
3132
- 28, 12, 28, 357, 9, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 3, 31, 364, 8, 31, 1, 31, 1,
3133
- 31, 3, 31, 368, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 374, 8, 32, 1, 32, 1, 32, 1, 32,
3134
- 1, 32, 1, 32, 1, 32, 4, 32, 382, 8, 32, 11, 32, 12, 32, 383, 1, 32, 1, 32, 1, 33, 1, 33,
3135
- 3, 33, 390, 8, 33, 1, 34, 1, 34, 1, 34, 5, 34, 395, 8, 34, 10, 34, 12, 34, 398, 9, 34,
3136
- 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 404, 8, 34, 10, 34, 12, 34, 407, 9, 34, 1, 34, 1, 34,
3137
- 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 416, 8, 34, 10, 34, 12, 34, 419, 9, 34, 3, 34,
3138
- 421, 8, 34, 1, 35, 1, 35, 1, 35, 5, 35, 426, 8, 35, 10, 35, 12, 35, 429, 9, 35, 1, 36,
3139
- 1, 36, 3, 36, 433, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 438, 8, 36, 1, 37, 3, 37, 441, 8,
3140
- 37, 1, 37, 1, 37, 4, 37, 445, 8, 37, 11, 37, 12, 37, 446, 1, 38, 3, 38, 450, 8, 38, 1,
3141
- 38, 1, 38, 3, 38, 454, 8, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1,
3142
- 40, 1, 40, 4, 40, 466, 8, 40, 11, 40, 12, 40, 467, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1,
3143
- 41, 1, 41, 1, 41, 1, 41, 4, 41, 479, 8, 41, 11, 41, 12, 41, 480, 1, 41, 1, 41, 1, 42, 1,
3144
- 42, 3, 42, 487, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 494, 8, 42, 1, 43, 1, 43,
3145
- 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 4, 45, 506, 8, 45, 11, 45, 12, 45,
3146
- 507, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 514, 8, 45, 10, 45, 12, 45, 517, 9, 45, 3, 45,
3147
- 519, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 3, 47, 528, 8, 47, 1, 47, 3,
3148
- 47, 531, 8, 47, 1, 48, 1, 48, 5, 48, 535, 8, 48, 10, 48, 12, 48, 538, 9, 48, 1, 49, 1,
3149
- 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 4, 51, 552, 8,
3150
- 51, 11, 51, 12, 51, 553, 1, 51, 1, 51, 1, 51, 0, 1, 56, 52, 0, 2, 4, 6, 8, 10, 12, 14, 16,
3151
- 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
3152
- 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102,
3153
- 0, 11, 2, 0, 9, 9, 18, 20, 1, 0, 37, 38, 2, 0, 38, 38, 41, 41, 2, 0, 35, 35, 38, 38, 1, 0,
3154
- 31, 32, 1, 0, 29, 30, 1, 0, 27, 28, 2, 0, 25, 25, 30, 30, 2, 0, 36, 36, 38, 42, 2, 0, 14,
3155
- 14, 37, 37, 2, 0, 37, 38, 41, 41, 592, 0, 106, 1, 0, 0, 0, 2, 129, 1, 0, 0, 0, 4, 132, 1,
3156
- 0, 0, 0, 6, 136, 1, 0, 0, 0, 8, 148, 1, 0, 0, 0, 10, 160, 1, 0, 0, 0, 12, 164, 1, 0, 0, 0,
3157
- 14, 167, 1, 0, 0, 0, 16, 175, 1, 0, 0, 0, 18, 186, 1, 0, 0, 0, 20, 191, 1, 0, 0, 0, 22, 193,
3158
- 1, 0, 0, 0, 24, 195, 1, 0, 0, 0, 26, 200, 1, 0, 0, 0, 28, 212, 1, 0, 0, 0, 30, 234, 1, 0,
3159
- 0, 0, 32, 244, 1, 0, 0, 0, 34, 246, 1, 0, 0, 0, 36, 260, 1, 0, 0, 0, 38, 262, 1, 0, 0, 0,
3160
- 40, 270, 1, 0, 0, 0, 42, 272, 1, 0, 0, 0, 44, 282, 1, 0, 0, 0, 46, 284, 1, 0, 0, 0, 48, 288,
3161
- 1, 0, 0, 0, 50, 315, 1, 0, 0, 0, 52, 317, 1, 0, 0, 0, 54, 321, 1, 0, 0, 0, 56, 341, 1, 0,
3162
- 0, 0, 58, 358, 1, 0, 0, 0, 60, 360, 1, 0, 0, 0, 62, 367, 1, 0, 0, 0, 64, 369, 1, 0, 0, 0,
3163
- 66, 389, 1, 0, 0, 0, 68, 420, 1, 0, 0, 0, 70, 422, 1, 0, 0, 0, 72, 437, 1, 0, 0, 0, 74, 440,
3164
- 1, 0, 0, 0, 76, 449, 1, 0, 0, 0, 78, 455, 1, 0, 0, 0, 80, 458, 1, 0, 0, 0, 82, 471, 1, 0,
3165
- 0, 0, 84, 484, 1, 0, 0, 0, 86, 495, 1, 0, 0, 0, 88, 499, 1, 0, 0, 0, 90, 518, 1, 0, 0, 0,
3166
- 92, 520, 1, 0, 0, 0, 94, 530, 1, 0, 0, 0, 96, 532, 1, 0, 0, 0, 98, 539, 1, 0, 0, 0, 100,
3167
- 542, 1, 0, 0, 0, 102, 545, 1, 0, 0, 0, 104, 107, 3, 2, 1, 0, 105, 107, 5, 45, 0, 0, 106,
3168
- 104, 1, 0, 0, 0, 106, 105, 1, 0, 0, 0, 107, 108, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 108,
3169
- 109, 1, 0, 0, 0, 109, 110, 1, 0, 0, 0, 110, 111, 5, 0, 0, 1, 111, 1, 1, 0, 0, 0, 112, 130,
3170
- 3, 18, 9, 0, 113, 130, 3, 26, 13, 0, 114, 130, 3, 24, 12, 0, 115, 130, 3, 46, 23, 0, 116,
3171
- 130, 3, 52, 26, 0, 117, 130, 3, 8, 4, 0, 118, 130, 3, 54, 27, 0, 119, 130, 3, 44, 22,
3172
- 0, 120, 130, 3, 64, 32, 0, 121, 130, 3, 74, 37, 0, 122, 130, 3, 96, 48, 0, 123, 130,
3173
- 3, 100, 50, 0, 124, 130, 3, 102, 51, 0, 125, 130, 3, 70, 35, 0, 126, 130, 3, 34, 17,
3174
- 0, 127, 130, 3, 4, 2, 0, 128, 130, 3, 98, 49, 0, 129, 112, 1, 0, 0, 0, 129, 113, 1, 0,
3175
- 0, 0, 129, 114, 1, 0, 0, 0, 129, 115, 1, 0, 0, 0, 129, 116, 1, 0, 0, 0, 129, 117, 1, 0,
3176
- 0, 0, 129, 118, 1, 0, 0, 0, 129, 119, 1, 0, 0, 0, 129, 120, 1, 0, 0, 0, 129, 121, 1, 0,
3177
- 0, 0, 129, 122, 1, 0, 0, 0, 129, 123, 1, 0, 0, 0, 129, 124, 1, 0, 0, 0, 129, 125, 1, 0,
3178
- 0, 0, 129, 126, 1, 0, 0, 0, 129, 127, 1, 0, 0, 0, 129, 128, 1, 0, 0, 0, 130, 3, 1, 0, 0,
3179
- 0, 131, 133, 3, 6, 3, 0, 132, 131, 1, 0, 0, 0, 133, 134, 1, 0, 0, 0, 134, 132, 1, 0, 0,
3180
- 0, 134, 135, 1, 0, 0, 0, 135, 5, 1, 0, 0, 0, 136, 137, 7, 0, 0, 0, 137, 138, 5, 1, 0, 0,
3181
- 138, 139, 5, 45, 0, 0, 139, 142, 5, 47, 0, 0, 140, 143, 5, 45, 0, 0, 141, 143, 3, 2, 1,
3182
- 0, 142, 140, 1, 0, 0, 0, 142, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 142, 1, 0, 0,
3183
- 0, 144, 145, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 147, 5, 48, 0, 0, 147, 7, 1, 0, 0, 0,
3184
- 148, 149, 3, 70, 35, 0, 149, 150, 5, 1, 0, 0, 150, 151, 5, 45, 0, 0, 151, 154, 5, 47,
3185
- 0, 0, 152, 155, 5, 45, 0, 0, 153, 155, 3, 10, 5, 0, 154, 152, 1, 0, 0, 0, 154, 153, 1,
3186
- 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157, 158, 1,
3187
- 0, 0, 0, 158, 159, 5, 48, 0, 0, 159, 9, 1, 0, 0, 0, 160, 161, 7, 1, 0, 0, 161, 162, 5, 1,
3188
- 0, 0, 162, 163, 3, 62, 31, 0, 163, 11, 1, 0, 0, 0, 164, 165, 5, 14, 0, 0, 165, 166, 7,
3189
- 2, 0, 0, 166, 13, 1, 0, 0, 0, 167, 168, 5, 37, 0, 0, 168, 171, 5, 1, 0, 0, 169, 172, 3,
3190
- 62, 31, 0, 170, 172, 5, 37, 0, 0, 171, 169, 1, 0, 0, 0, 171, 170, 1, 0, 0, 0, 172, 15,
3191
- 1, 0, 0, 0, 173, 176, 3, 56, 28, 0, 174, 176, 3, 46, 23, 0, 175, 173, 1, 0, 0, 0, 175,
3192
- 174, 1, 0, 0, 0, 176, 180, 1, 0, 0, 0, 177, 179, 3, 14, 7, 0, 178, 177, 1, 0, 0, 0, 179,
3193
- 182, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 184, 1, 0, 0, 0, 182,
3194
- 180, 1, 0, 0, 0, 183, 185, 3, 12, 6, 0, 184, 183, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185,
3195
- 17, 1, 0, 0, 0, 186, 187, 5, 15, 0, 0, 187, 188, 3, 16, 8, 0, 188, 19, 1, 0, 0, 0, 189,
3196
- 192, 3, 16, 8, 0, 190, 192, 3, 12, 6, 0, 191, 189, 1, 0, 0, 0, 191, 190, 1, 0, 0, 0, 192,
3197
- 21, 1, 0, 0, 0, 193, 194, 7, 2, 0, 0, 194, 23, 1, 0, 0, 0, 195, 198, 5, 16, 0, 0, 196, 199,
3198
- 3, 20, 10, 0, 197, 199, 5, 18, 0, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, 199, 25,
3199
- 1, 0, 0, 0, 200, 210, 5, 17, 0, 0, 201, 206, 3, 20, 10, 0, 202, 203, 5, 2, 0, 0, 203, 205,
3200
- 3, 20, 10, 0, 204, 202, 1, 0, 0, 0, 205, 208, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 206, 207,
3201
- 1, 0, 0, 0, 207, 211, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 209, 211, 5, 18, 0, 0, 210, 201,
3202
- 1, 0, 0, 0, 210, 209, 1, 0, 0, 0, 211, 27, 1, 0, 0, 0, 212, 213, 5, 16, 0, 0, 213, 214,
3203
- 3, 20, 10, 0, 214, 215, 5, 17, 0, 0, 215, 220, 3, 20, 10, 0, 216, 217, 5, 2, 0, 0, 217,
3204
- 219, 3, 20, 10, 0, 218, 216, 1, 0, 0, 0, 219, 222, 1, 0, 0, 0, 220, 218, 1, 0, 0, 0, 220,
3205
- 221, 1, 0, 0, 0, 221, 223, 1, 0, 0, 0, 222, 220, 1, 0, 0, 0, 223, 224, 5, 1, 0, 0, 224,
3206
- 225, 5, 45, 0, 0, 225, 228, 5, 47, 0, 0, 226, 229, 5, 45, 0, 0, 227, 229, 3, 30, 15, 0,
3207
- 228, 226, 1, 0, 0, 0, 228, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0,
3208
- 230, 231, 1, 0, 0, 0, 231, 232, 1, 0, 0, 0, 232, 233, 5, 48, 0, 0, 233, 29, 1, 0, 0, 0,
3209
- 234, 235, 3, 22, 11, 0, 235, 236, 5, 1, 0, 0, 236, 241, 3, 32, 16, 0, 237, 238, 5, 2,
3210
- 0, 0, 238, 240, 3, 32, 16, 0, 239, 237, 1, 0, 0, 0, 240, 243, 1, 0, 0, 0, 241, 239, 1,
3211
- 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 31, 1, 0, 0, 0, 243, 241, 1, 0, 0, 0, 244, 245, 7, 3,
3212
- 0, 0, 245, 33, 1, 0, 0, 0, 246, 247, 3, 24, 12, 0, 247, 248, 5, 1, 0, 0, 248, 249, 5, 45,
3213
- 0, 0, 249, 252, 5, 47, 0, 0, 250, 253, 5, 45, 0, 0, 251, 253, 3, 36, 18, 0, 252, 250,
3214
- 1, 0, 0, 0, 252, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255,
3215
- 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 257, 5, 48, 0, 0, 257, 35, 1, 0, 0, 0, 258, 261,
3216
- 3, 2, 1, 0, 259, 261, 3, 38, 19, 0, 260, 258, 1, 0, 0, 0, 260, 259, 1, 0, 0, 0, 261, 37,
3217
- 1, 0, 0, 0, 262, 263, 3, 22, 11, 0, 263, 266, 5, 1, 0, 0, 264, 267, 3, 40, 20, 0, 265,
3218
- 267, 3, 42, 21, 0, 266, 264, 1, 0, 0, 0, 266, 265, 1, 0, 0, 0, 267, 39, 1, 0, 0, 0, 268,
3219
- 271, 3, 2, 1, 0, 269, 271, 5, 35, 0, 0, 270, 268, 1, 0, 0, 0, 270, 269, 1, 0, 0, 0, 271,
3220
- 41, 1, 0, 0, 0, 272, 273, 5, 45, 0, 0, 273, 276, 5, 47, 0, 0, 274, 277, 5, 45, 0, 0, 275,
3221
- 277, 3, 2, 1, 0, 276, 274, 1, 0, 0, 0, 276, 275, 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278,
3222
- 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 5, 48, 0, 0, 281,
3223
- 43, 1, 0, 0, 0, 282, 283, 5, 8, 0, 0, 283, 45, 1, 0, 0, 0, 284, 285, 3, 70, 35, 0, 285,
3224
- 286, 5, 3, 0, 0, 286, 287, 3, 56, 28, 0, 287, 47, 1, 0, 0, 0, 288, 289, 5, 37, 0, 0, 289,
3225
- 290, 5, 3, 0, 0, 290, 291, 3, 56, 28, 0, 291, 49, 1, 0, 0, 0, 292, 297, 3, 56, 28, 0, 293,
3226
- 294, 5, 2, 0, 0, 294, 296, 3, 56, 28, 0, 295, 293, 1, 0, 0, 0, 296, 299, 1, 0, 0, 0, 297,
3227
- 295, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 304, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 300,
3228
- 301, 5, 2, 0, 0, 301, 303, 3, 48, 24, 0, 302, 300, 1, 0, 0, 0, 303, 306, 1, 0, 0, 0, 304,
3229
- 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 316, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307,
3230
- 312, 3, 48, 24, 0, 308, 309, 5, 2, 0, 0, 309, 311, 3, 48, 24, 0, 310, 308, 1, 0, 0, 0,
3231
- 311, 314, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 316, 1, 0, 0, 0,
3232
- 314, 312, 1, 0, 0, 0, 315, 292, 1, 0, 0, 0, 315, 307, 1, 0, 0, 0, 316, 51, 1, 0, 0, 0, 317,
3233
- 318, 3, 70, 35, 0, 318, 319, 5, 3, 0, 0, 319, 320, 3, 56, 28, 0, 320, 53, 1, 0, 0, 0, 321,
3234
- 322, 5, 4, 0, 0, 322, 323, 5, 37, 0, 0, 323, 324, 5, 3, 0, 0, 324, 325, 3, 56, 28, 0, 325,
3235
- 55, 1, 0, 0, 0, 326, 327, 6, 28, -1, 0, 327, 328, 5, 33, 0, 0, 328, 329, 3, 56, 28, 0,
3236
- 329, 330, 5, 34, 0, 0, 330, 342, 1, 0, 0, 0, 331, 334, 3, 62, 31, 0, 332, 334, 3, 70,
3237
- 35, 0, 333, 331, 1, 0, 0, 0, 333, 332, 1, 0, 0, 0, 334, 342, 1, 0, 0, 0, 335, 336, 3, 60,
3238
- 30, 0, 336, 337, 3, 56, 28, 7, 337, 342, 1, 0, 0, 0, 338, 342, 3, 80, 40, 0, 339, 342,
3239
- 3, 82, 41, 0, 340, 342, 3, 74, 37, 0, 341, 326, 1, 0, 0, 0, 341, 333, 1, 0, 0, 0, 341,
3240
- 335, 1, 0, 0, 0, 341, 338, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 340, 1, 0, 0, 0, 342,
3241
- 355, 1, 0, 0, 0, 343, 344, 10, 6, 0, 0, 344, 345, 7, 4, 0, 0, 345, 354, 3, 56, 28, 7, 346,
3242
- 347, 10, 5, 0, 0, 347, 348, 7, 5, 0, 0, 348, 354, 3, 56, 28, 6, 349, 350, 10, 4, 0, 0,
3243
- 350, 351, 3, 58, 29, 0, 351, 352, 3, 56, 28, 5, 352, 354, 1, 0, 0, 0, 353, 343, 1, 0,
3244
- 0, 0, 353, 346, 1, 0, 0, 0, 353, 349, 1, 0, 0, 0, 354, 357, 1, 0, 0, 0, 355, 353, 1, 0,
3245
- 0, 0, 355, 356, 1, 0, 0, 0, 356, 57, 1, 0, 0, 0, 357, 355, 1, 0, 0, 0, 358, 359, 7, 6, 0,
3246
- 0, 359, 59, 1, 0, 0, 0, 360, 361, 7, 7, 0, 0, 361, 61, 1, 0, 0, 0, 362, 364, 5, 30, 0, 0,
3247
- 363, 362, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 368, 7, 8, 0, 0,
3248
- 366, 368, 3, 92, 46, 0, 367, 363, 1, 0, 0, 0, 367, 366, 1, 0, 0, 0, 368, 63, 1, 0, 0, 0,
3249
- 369, 370, 5, 22, 0, 0, 370, 371, 5, 37, 0, 0, 371, 373, 5, 33, 0, 0, 372, 374, 3, 68,
3250
- 34, 0, 373, 372, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 376, 5, 34,
3251
- 0, 0, 376, 377, 5, 1, 0, 0, 377, 378, 5, 45, 0, 0, 378, 381, 5, 47, 0, 0, 379, 382, 5,
3252
- 45, 0, 0, 380, 382, 3, 66, 33, 0, 381, 379, 1, 0, 0, 0, 381, 380, 1, 0, 0, 0, 382, 383,
3253
- 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 386,
3254
- 5, 48, 0, 0, 386, 65, 1, 0, 0, 0, 387, 390, 3, 2, 1, 0, 388, 390, 3, 78, 39, 0, 389, 387,
3255
- 1, 0, 0, 0, 389, 388, 1, 0, 0, 0, 390, 67, 1, 0, 0, 0, 391, 396, 5, 37, 0, 0, 392, 393,
3256
- 5, 2, 0, 0, 393, 395, 5, 37, 0, 0, 394, 392, 1, 0, 0, 0, 395, 398, 1, 0, 0, 0, 396, 394,
3257
- 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 405, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 400,
3258
- 5, 2, 0, 0, 400, 401, 5, 37, 0, 0, 401, 402, 5, 3, 0, 0, 402, 404, 3, 62, 31, 0, 403, 399,
3259
- 1, 0, 0, 0, 404, 407, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 421,
3260
- 1, 0, 0, 0, 407, 405, 1, 0, 0, 0, 408, 409, 5, 37, 0, 0, 409, 410, 5, 3, 0, 0, 410, 417,
3261
- 3, 62, 31, 0, 411, 412, 5, 2, 0, 0, 412, 413, 5, 37, 0, 0, 413, 414, 5, 3, 0, 0, 414, 416,
3262
- 3, 62, 31, 0, 415, 411, 1, 0, 0, 0, 416, 419, 1, 0, 0, 0, 417, 415, 1, 0, 0, 0, 417, 418,
3263
- 1, 0, 0, 0, 418, 421, 1, 0, 0, 0, 419, 417, 1, 0, 0, 0, 420, 391, 1, 0, 0, 0, 420, 408,
3264
- 1, 0, 0, 0, 421, 69, 1, 0, 0, 0, 422, 427, 5, 37, 0, 0, 423, 424, 5, 5, 0, 0, 424, 426,
3265
- 5, 37, 0, 0, 425, 423, 1, 0, 0, 0, 426, 429, 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 427, 428,
3266
- 1, 0, 0, 0, 428, 71, 1, 0, 0, 0, 429, 427, 1, 0, 0, 0, 430, 432, 5, 33, 0, 0, 431, 433,
3267
- 3, 50, 25, 0, 432, 431, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 438,
3268
- 5, 34, 0, 0, 435, 436, 5, 5, 0, 0, 436, 438, 5, 37, 0, 0, 437, 430, 1, 0, 0, 0, 437, 435,
3269
- 1, 0, 0, 0, 438, 73, 1, 0, 0, 0, 439, 441, 3, 76, 38, 0, 440, 439, 1, 0, 0, 0, 440, 441,
3270
- 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 444, 5, 37, 0, 0, 443, 445, 3, 72, 36, 0, 444, 443,
3271
- 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 75, 1,
3272
- 0, 0, 0, 448, 450, 5, 29, 0, 0, 449, 448, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 451, 1,
3273
- 0, 0, 0, 451, 453, 5, 31, 0, 0, 452, 454, 3, 56, 28, 0, 453, 452, 1, 0, 0, 0, 453, 454,
3274
- 1, 0, 0, 0, 454, 77, 1, 0, 0, 0, 455, 456, 5, 21, 0, 0, 456, 457, 3, 56, 28, 0, 457, 79,
3275
- 1, 0, 0, 0, 458, 459, 5, 10, 0, 0, 459, 460, 5, 11, 0, 0, 460, 461, 5, 1, 0, 0, 461, 462,
3276
- 5, 45, 0, 0, 462, 465, 5, 47, 0, 0, 463, 466, 5, 45, 0, 0, 464, 466, 3, 86, 43, 0, 465,
3277
- 463, 1, 0, 0, 0, 465, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 467,
3278
- 468, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 470, 5, 48, 0, 0, 470, 81, 1, 0, 0, 0, 471,
3279
- 472, 5, 10, 0, 0, 472, 473, 5, 12, 0, 0, 473, 474, 5, 1, 0, 0, 474, 475, 5, 45, 0, 0, 475,
3280
- 478, 5, 47, 0, 0, 476, 479, 5, 45, 0, 0, 477, 479, 3, 84, 42, 0, 478, 476, 1, 0, 0, 0,
3281
- 478, 477, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0,
3282
- 481, 482, 1, 0, 0, 0, 482, 483, 5, 48, 0, 0, 483, 83, 1, 0, 0, 0, 484, 486, 7, 9, 0, 0,
3283
- 485, 487, 5, 1, 0, 0, 486, 485, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 493, 1, 0, 0, 0,
3284
- 488, 494, 3, 50, 25, 0, 489, 490, 5, 33, 0, 0, 490, 491, 3, 50, 25, 0, 491, 492, 5, 34,
3285
- 0, 0, 492, 494, 1, 0, 0, 0, 493, 488, 1, 0, 0, 0, 493, 489, 1, 0, 0, 0, 494, 85, 1, 0, 0,
3286
- 0, 495, 496, 3, 88, 44, 0, 496, 497, 5, 1, 0, 0, 497, 498, 3, 90, 45, 0, 498, 87, 1, 0,
3287
- 0, 0, 499, 500, 7, 10, 0, 0, 500, 89, 1, 0, 0, 0, 501, 502, 5, 45, 0, 0, 502, 505, 5, 47,
3288
- 0, 0, 503, 506, 5, 45, 0, 0, 504, 506, 3, 86, 43, 0, 505, 503, 1, 0, 0, 0, 505, 504, 1,
3289
- 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 505, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 509, 1,
3290
- 0, 0, 0, 509, 519, 5, 48, 0, 0, 510, 515, 3, 56, 28, 0, 511, 512, 5, 2, 0, 0, 512, 514,
3291
- 3, 56, 28, 0, 513, 511, 1, 0, 0, 0, 514, 517, 1, 0, 0, 0, 515, 513, 1, 0, 0, 0, 515, 516,
3292
- 1, 0, 0, 0, 516, 519, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 518, 501, 1, 0, 0, 0, 518, 510,
3293
- 1, 0, 0, 0, 519, 91, 1, 0, 0, 0, 520, 521, 5, 6, 0, 0, 521, 522, 5, 38, 0, 0, 522, 523,
3294
- 5, 7, 0, 0, 523, 93, 1, 0, 0, 0, 524, 527, 5, 37, 0, 0, 525, 528, 5, 38, 0, 0, 526, 528,
3295
- 3, 56, 28, 0, 527, 525, 1, 0, 0, 0, 527, 526, 1, 0, 0, 0, 528, 531, 1, 0, 0, 0, 529, 531,
3296
- 5, 37, 0, 0, 530, 524, 1, 0, 0, 0, 530, 529, 1, 0, 0, 0, 531, 95, 1, 0, 0, 0, 532, 536,
3297
- 5, 13, 0, 0, 533, 535, 3, 94, 47, 0, 534, 533, 1, 0, 0, 0, 535, 538, 1, 0, 0, 0, 536, 534,
3298
- 1, 0, 0, 0, 536, 537, 1, 0, 0, 0, 537, 97, 1, 0, 0, 0, 538, 536, 1, 0, 0, 0, 539, 540, 5,
3299
- 18, 0, 0, 540, 541, 5, 37, 0, 0, 541, 99, 1, 0, 0, 0, 542, 543, 5, 23, 0, 0, 543, 544,
3300
- 5, 37, 0, 0, 544, 101, 1, 0, 0, 0, 545, 546, 5, 26, 0, 0, 546, 547, 5, 1, 0, 0, 547, 548,
3301
- 5, 45, 0, 0, 548, 551, 5, 47, 0, 0, 549, 552, 5, 45, 0, 0, 550, 552, 3, 2, 1, 0, 551, 549,
3302
- 1, 0, 0, 0, 551, 550, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 551, 1, 0, 0, 0, 553, 554,
3303
- 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 5, 48, 0, 0, 556, 103, 1, 0, 0, 0, 67, 106,
3304
- 108, 129, 134, 142, 144, 154, 156, 171, 175, 180, 184, 191, 198, 206, 210, 220,
3305
- 228, 230, 241, 252, 254, 260, 266, 270, 276, 278, 297, 304, 312, 315, 333, 341,
3306
- 353, 355, 363, 367, 373, 381, 383, 389, 396, 405, 417, 420, 427, 432, 437, 440,
3307
- 446, 449, 453, 465, 467, 478, 480, 486, 493, 505, 507, 515, 518, 527, 530, 536,
3308
- 551, 553
3426
+ 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,
3427
+ 2, 53, 7, 53, 2, 54, 7, 54, 1, 0, 1, 0, 4, 0, 113, 8, 0, 11, 0, 12, 0, 114, 1, 0, 1, 0, 1,
3428
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3429
+ 1, 1, 1, 3, 1, 137, 8, 1, 1, 2, 4, 2, 140, 8, 2, 11, 2, 12, 2, 141, 1, 3, 1, 3, 1, 3, 1, 3,
3430
+ 1, 3, 1, 3, 4, 3, 150, 8, 3, 11, 3, 12, 3, 151, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1,
3431
+ 4, 4, 4, 162, 8, 4, 11, 4, 12, 4, 163, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6,
3432
+ 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 179, 8, 7, 1, 8, 1, 8, 3, 8, 183, 8, 8, 1, 8, 5, 8, 186, 8, 8,
3433
+ 10, 8, 12, 8, 189, 9, 8, 1, 8, 3, 8, 192, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 3, 10, 199,
3434
+ 8, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 3, 12, 206, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13,
3435
+ 5, 13, 212, 8, 13, 10, 13, 12, 13, 215, 9, 13, 1, 13, 3, 13, 218, 8, 13, 1, 14, 1, 14,
3436
+ 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 226, 8, 14, 10, 14, 12, 14, 229, 9, 14, 1, 14, 1, 14,
3437
+ 1, 14, 1, 14, 1, 14, 4, 14, 236, 8, 14, 11, 14, 12, 14, 237, 1, 14, 1, 14, 1, 15, 1, 15,
3438
+ 1, 15, 1, 15, 1, 15, 5, 15, 247, 8, 15, 10, 15, 12, 15, 250, 9, 15, 1, 16, 1, 16, 1, 17,
3439
+ 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 260, 8, 17, 11, 17, 12, 17, 261, 1, 17, 1, 17,
3440
+ 1, 18, 1, 18, 3, 18, 268, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 274, 8, 19, 1, 20, 1,
3441
+ 20, 3, 20, 278, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 4, 21, 284, 8, 21, 11, 21, 12, 21, 285,
3442
+ 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25,
3443
+ 1, 25, 1, 25, 5, 25, 303, 8, 25, 10, 25, 12, 25, 306, 9, 25, 1, 25, 1, 25, 5, 25, 310,
3444
+ 8, 25, 10, 25, 12, 25, 313, 9, 25, 1, 25, 1, 25, 1, 25, 5, 25, 318, 8, 25, 10, 25, 12,
3445
+ 25, 321, 9, 25, 3, 25, 323, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27,
3446
+ 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 341, 8, 28, 1, 28, 1, 28,
3447
+ 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 349, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28,
3448
+ 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 364, 8, 28, 10, 28, 12, 28, 367,
3449
+ 9, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 3, 31, 374, 8, 31, 1, 31, 1, 31, 3, 31, 378, 8,
3450
+ 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 384, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1,
3451
+ 32, 4, 32, 392, 8, 32, 11, 32, 12, 32, 393, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 400, 8,
3452
+ 33, 1, 34, 1, 34, 1, 34, 5, 34, 405, 8, 34, 10, 34, 12, 34, 408, 9, 34, 1, 34, 1, 34, 1,
3453
+ 34, 1, 34, 5, 34, 414, 8, 34, 10, 34, 12, 34, 417, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1,
3454
+ 34, 1, 34, 1, 34, 5, 34, 426, 8, 34, 10, 34, 12, 34, 429, 9, 34, 3, 34, 431, 8, 34, 1,
3455
+ 35, 1, 35, 1, 35, 5, 35, 436, 8, 35, 10, 35, 12, 35, 439, 9, 35, 1, 36, 1, 36, 3, 36, 443,
3456
+ 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 448, 8, 36, 1, 37, 3, 37, 451, 8, 37, 1, 37, 1, 37, 4,
3457
+ 37, 455, 8, 37, 11, 37, 12, 37, 456, 1, 38, 3, 38, 460, 8, 38, 1, 38, 1, 38, 3, 38, 464,
3458
+ 8, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 4, 40, 476,
3459
+ 8, 40, 11, 40, 12, 40, 477, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41,
3460
+ 4, 41, 489, 8, 41, 11, 41, 12, 41, 490, 1, 41, 1, 41, 1, 42, 1, 42, 3, 42, 497, 8, 42,
3461
+ 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 504, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44,
3462
+ 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 4, 45, 516, 8, 45, 11, 45, 12, 45, 517, 1, 45, 1, 45,
3463
+ 1, 45, 1, 45, 5, 45, 524, 8, 45, 10, 45, 12, 45, 527, 9, 45, 3, 45, 529, 8, 45, 1, 46,
3464
+ 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 3, 47, 538, 8, 47, 1, 47, 3, 47, 541, 8, 47, 1,
3465
+ 48, 1, 48, 5, 48, 545, 8, 48, 10, 48, 12, 48, 548, 9, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1,
3466
+ 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 4, 51, 562, 8, 51, 11, 51, 12, 51,
3467
+ 563, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 4, 52, 575, 8, 52, 11,
3468
+ 52, 12, 52, 576, 1, 52, 1, 52, 5, 52, 581, 8, 52, 10, 52, 12, 52, 584, 9, 52, 1, 52, 3,
3469
+ 52, 587, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 4, 53, 597, 8, 53,
3470
+ 11, 53, 12, 53, 598, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 4, 54, 609,
3471
+ 8, 54, 11, 54, 12, 54, 610, 1, 54, 1, 54, 1, 54, 0, 1, 56, 55, 0, 2, 4, 6, 8, 10, 12, 14,
3472
+ 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
3473
+ 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100,
3474
+ 102, 104, 106, 108, 0, 12, 2, 0, 9, 9, 18, 20, 1, 0, 44, 45, 2, 0, 45, 45, 48, 48, 2, 0,
3475
+ 42, 42, 45, 45, 1, 0, 38, 39, 1, 0, 36, 37, 1, 0, 34, 35, 1, 0, 28, 33, 2, 0, 26, 26, 37,
3476
+ 37, 2, 0, 43, 43, 45, 49, 2, 0, 14, 14, 44, 44, 2, 0, 44, 45, 48, 48, 656, 0, 112, 1, 0,
3477
+ 0, 0, 2, 136, 1, 0, 0, 0, 4, 139, 1, 0, 0, 0, 6, 143, 1, 0, 0, 0, 8, 155, 1, 0, 0, 0, 10, 167,
3478
+ 1, 0, 0, 0, 12, 171, 1, 0, 0, 0, 14, 174, 1, 0, 0, 0, 16, 182, 1, 0, 0, 0, 18, 193, 1, 0,
3479
+ 0, 0, 20, 198, 1, 0, 0, 0, 22, 200, 1, 0, 0, 0, 24, 202, 1, 0, 0, 0, 26, 207, 1, 0, 0, 0,
3480
+ 28, 219, 1, 0, 0, 0, 30, 241, 1, 0, 0, 0, 32, 251, 1, 0, 0, 0, 34, 253, 1, 0, 0, 0, 36, 267,
3481
+ 1, 0, 0, 0, 38, 269, 1, 0, 0, 0, 40, 277, 1, 0, 0, 0, 42, 279, 1, 0, 0, 0, 44, 289, 1, 0,
3482
+ 0, 0, 46, 291, 1, 0, 0, 0, 48, 295, 1, 0, 0, 0, 50, 322, 1, 0, 0, 0, 52, 324, 1, 0, 0, 0,
3483
+ 54, 328, 1, 0, 0, 0, 56, 348, 1, 0, 0, 0, 58, 368, 1, 0, 0, 0, 60, 370, 1, 0, 0, 0, 62, 377,
3484
+ 1, 0, 0, 0, 64, 379, 1, 0, 0, 0, 66, 399, 1, 0, 0, 0, 68, 430, 1, 0, 0, 0, 70, 432, 1, 0,
3485
+ 0, 0, 72, 447, 1, 0, 0, 0, 74, 450, 1, 0, 0, 0, 76, 459, 1, 0, 0, 0, 78, 465, 1, 0, 0, 0,
3486
+ 80, 468, 1, 0, 0, 0, 82, 481, 1, 0, 0, 0, 84, 494, 1, 0, 0, 0, 86, 505, 1, 0, 0, 0, 88, 509,
3487
+ 1, 0, 0, 0, 90, 528, 1, 0, 0, 0, 92, 530, 1, 0, 0, 0, 94, 540, 1, 0, 0, 0, 96, 542, 1, 0,
3488
+ 0, 0, 98, 549, 1, 0, 0, 0, 100, 552, 1, 0, 0, 0, 102, 555, 1, 0, 0, 0, 104, 567, 1, 0, 0,
3489
+ 0, 106, 588, 1, 0, 0, 0, 108, 602, 1, 0, 0, 0, 110, 113, 3, 2, 1, 0, 111, 113, 5, 52, 0,
3490
+ 0, 112, 110, 1, 0, 0, 0, 112, 111, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 112, 1, 0, 0,
3491
+ 0, 114, 115, 1, 0, 0, 0, 115, 116, 1, 0, 0, 0, 116, 117, 5, 0, 0, 1, 117, 1, 1, 0, 0, 0,
3492
+ 118, 137, 3, 18, 9, 0, 119, 137, 3, 26, 13, 0, 120, 137, 3, 24, 12, 0, 121, 137, 3, 46,
3493
+ 23, 0, 122, 137, 3, 52, 26, 0, 123, 137, 3, 8, 4, 0, 124, 137, 3, 54, 27, 0, 125, 137,
3494
+ 3, 44, 22, 0, 126, 137, 3, 64, 32, 0, 127, 137, 3, 74, 37, 0, 128, 137, 3, 96, 48, 0,
3495
+ 129, 137, 3, 100, 50, 0, 130, 137, 3, 102, 51, 0, 131, 137, 3, 70, 35, 0, 132, 137,
3496
+ 3, 34, 17, 0, 133, 137, 3, 4, 2, 0, 134, 137, 3, 98, 49, 0, 135, 137, 3, 104, 52, 0, 136,
3497
+ 118, 1, 0, 0, 0, 136, 119, 1, 0, 0, 0, 136, 120, 1, 0, 0, 0, 136, 121, 1, 0, 0, 0, 136,
3498
+ 122, 1, 0, 0, 0, 136, 123, 1, 0, 0, 0, 136, 124, 1, 0, 0, 0, 136, 125, 1, 0, 0, 0, 136,
3499
+ 126, 1, 0, 0, 0, 136, 127, 1, 0, 0, 0, 136, 128, 1, 0, 0, 0, 136, 129, 1, 0, 0, 0, 136,
3500
+ 130, 1, 0, 0, 0, 136, 131, 1, 0, 0, 0, 136, 132, 1, 0, 0, 0, 136, 133, 1, 0, 0, 0, 136,
3501
+ 134, 1, 0, 0, 0, 136, 135, 1, 0, 0, 0, 137, 3, 1, 0, 0, 0, 138, 140, 3, 6, 3, 0, 139, 138,
3502
+ 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 139, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 5, 1,
3503
+ 0, 0, 0, 143, 144, 7, 0, 0, 0, 144, 145, 5, 1, 0, 0, 145, 146, 5, 52, 0, 0, 146, 149, 5,
3504
+ 54, 0, 0, 147, 150, 5, 52, 0, 0, 148, 150, 3, 2, 1, 0, 149, 147, 1, 0, 0, 0, 149, 148,
3505
+ 1, 0, 0, 0, 150, 151, 1, 0, 0, 0, 151, 149, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 153,
3506
+ 1, 0, 0, 0, 153, 154, 5, 55, 0, 0, 154, 7, 1, 0, 0, 0, 155, 156, 3, 70, 35, 0, 156, 157,
3507
+ 5, 1, 0, 0, 157, 158, 5, 52, 0, 0, 158, 161, 5, 54, 0, 0, 159, 162, 5, 52, 0, 0, 160, 162,
3508
+ 3, 10, 5, 0, 161, 159, 1, 0, 0, 0, 161, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 161,
3509
+ 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 166, 5, 55, 0, 0, 166, 9, 1,
3510
+ 0, 0, 0, 167, 168, 7, 1, 0, 0, 168, 169, 5, 1, 0, 0, 169, 170, 3, 62, 31, 0, 170, 11, 1,
3511
+ 0, 0, 0, 171, 172, 5, 14, 0, 0, 172, 173, 7, 2, 0, 0, 173, 13, 1, 0, 0, 0, 174, 175, 5,
3512
+ 44, 0, 0, 175, 178, 5, 1, 0, 0, 176, 179, 3, 62, 31, 0, 177, 179, 5, 44, 0, 0, 178, 176,
3513
+ 1, 0, 0, 0, 178, 177, 1, 0, 0, 0, 179, 15, 1, 0, 0, 0, 180, 183, 3, 56, 28, 0, 181, 183,
3514
+ 3, 46, 23, 0, 182, 180, 1, 0, 0, 0, 182, 181, 1, 0, 0, 0, 183, 187, 1, 0, 0, 0, 184, 186,
3515
+ 3, 14, 7, 0, 185, 184, 1, 0, 0, 0, 186, 189, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 187, 188,
3516
+ 1, 0, 0, 0, 188, 191, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 190, 192, 3, 12, 6, 0, 191, 190,
3517
+ 1, 0, 0, 0, 191, 192, 1, 0, 0, 0, 192, 17, 1, 0, 0, 0, 193, 194, 5, 15, 0, 0, 194, 195,
3518
+ 3, 16, 8, 0, 195, 19, 1, 0, 0, 0, 196, 199, 3, 16, 8, 0, 197, 199, 3, 12, 6, 0, 198, 196,
3519
+ 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, 199, 21, 1, 0, 0, 0, 200, 201, 7, 2, 0, 0, 201, 23, 1,
3520
+ 0, 0, 0, 202, 205, 5, 16, 0, 0, 203, 206, 3, 20, 10, 0, 204, 206, 5, 18, 0, 0, 205, 203,
3521
+ 1, 0, 0, 0, 205, 204, 1, 0, 0, 0, 206, 25, 1, 0, 0, 0, 207, 217, 5, 17, 0, 0, 208, 213,
3522
+ 3, 20, 10, 0, 209, 210, 5, 2, 0, 0, 210, 212, 3, 20, 10, 0, 211, 209, 1, 0, 0, 0, 212,
3523
+ 215, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 218, 1, 0, 0, 0, 215,
3524
+ 213, 1, 0, 0, 0, 216, 218, 5, 18, 0, 0, 217, 208, 1, 0, 0, 0, 217, 216, 1, 0, 0, 0, 218,
3525
+ 27, 1, 0, 0, 0, 219, 220, 5, 16, 0, 0, 220, 221, 3, 20, 10, 0, 221, 222, 5, 17, 0, 0, 222,
3526
+ 227, 3, 20, 10, 0, 223, 224, 5, 2, 0, 0, 224, 226, 3, 20, 10, 0, 225, 223, 1, 0, 0, 0,
3527
+ 226, 229, 1, 0, 0, 0, 227, 225, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 230, 1, 0, 0, 0,
3528
+ 229, 227, 1, 0, 0, 0, 230, 231, 5, 1, 0, 0, 231, 232, 5, 52, 0, 0, 232, 235, 5, 54, 0,
3529
+ 0, 233, 236, 5, 52, 0, 0, 234, 236, 3, 30, 15, 0, 235, 233, 1, 0, 0, 0, 235, 234, 1, 0,
3530
+ 0, 0, 236, 237, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 239, 1, 0,
3531
+ 0, 0, 239, 240, 5, 55, 0, 0, 240, 29, 1, 0, 0, 0, 241, 242, 3, 22, 11, 0, 242, 243, 5,
3532
+ 1, 0, 0, 243, 248, 3, 32, 16, 0, 244, 245, 5, 2, 0, 0, 245, 247, 3, 32, 16, 0, 246, 244,
3533
+ 1, 0, 0, 0, 247, 250, 1, 0, 0, 0, 248, 246, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 31, 1,
3534
+ 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 252, 7, 3, 0, 0, 252, 33, 1, 0, 0, 0, 253, 254, 3, 24,
3535
+ 12, 0, 254, 255, 5, 1, 0, 0, 255, 256, 5, 52, 0, 0, 256, 259, 5, 54, 0, 0, 257, 260, 5,
3536
+ 52, 0, 0, 258, 260, 3, 36, 18, 0, 259, 257, 1, 0, 0, 0, 259, 258, 1, 0, 0, 0, 260, 261,
3537
+ 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 264,
3538
+ 5, 55, 0, 0, 264, 35, 1, 0, 0, 0, 265, 268, 3, 2, 1, 0, 266, 268, 3, 38, 19, 0, 267, 265,
3539
+ 1, 0, 0, 0, 267, 266, 1, 0, 0, 0, 268, 37, 1, 0, 0, 0, 269, 270, 3, 22, 11, 0, 270, 273,
3540
+ 5, 1, 0, 0, 271, 274, 3, 40, 20, 0, 272, 274, 3, 42, 21, 0, 273, 271, 1, 0, 0, 0, 273,
3541
+ 272, 1, 0, 0, 0, 274, 39, 1, 0, 0, 0, 275, 278, 3, 2, 1, 0, 276, 278, 5, 42, 0, 0, 277,
3542
+ 275, 1, 0, 0, 0, 277, 276, 1, 0, 0, 0, 278, 41, 1, 0, 0, 0, 279, 280, 5, 52, 0, 0, 280,
3543
+ 283, 5, 54, 0, 0, 281, 284, 5, 52, 0, 0, 282, 284, 3, 2, 1, 0, 283, 281, 1, 0, 0, 0, 283,
3544
+ 282, 1, 0, 0, 0, 284, 285, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286,
3545
+ 287, 1, 0, 0, 0, 287, 288, 5, 55, 0, 0, 288, 43, 1, 0, 0, 0, 289, 290, 5, 8, 0, 0, 290,
3546
+ 45, 1, 0, 0, 0, 291, 292, 3, 70, 35, 0, 292, 293, 5, 3, 0, 0, 293, 294, 3, 56, 28, 0, 294,
3547
+ 47, 1, 0, 0, 0, 295, 296, 5, 44, 0, 0, 296, 297, 5, 3, 0, 0, 297, 298, 3, 56, 28, 0, 298,
3548
+ 49, 1, 0, 0, 0, 299, 304, 3, 56, 28, 0, 300, 301, 5, 2, 0, 0, 301, 303, 3, 56, 28, 0, 302,
3549
+ 300, 1, 0, 0, 0, 303, 306, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305,
3550
+ 311, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307, 308, 5, 2, 0, 0, 308, 310, 3, 48, 24, 0, 309,
3551
+ 307, 1, 0, 0, 0, 310, 313, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312,
3552
+ 323, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 314, 319, 3, 48, 24, 0, 315, 316, 5, 2, 0, 0, 316,
3553
+ 318, 3, 48, 24, 0, 317, 315, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319,
3554
+ 320, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 299, 1, 0, 0, 0, 322,
3555
+ 314, 1, 0, 0, 0, 323, 51, 1, 0, 0, 0, 324, 325, 3, 70, 35, 0, 325, 326, 5, 3, 0, 0, 326,
3556
+ 327, 3, 56, 28, 0, 327, 53, 1, 0, 0, 0, 328, 329, 5, 4, 0, 0, 329, 330, 5, 44, 0, 0, 330,
3557
+ 331, 5, 3, 0, 0, 331, 332, 3, 56, 28, 0, 332, 55, 1, 0, 0, 0, 333, 334, 6, 28, -1, 0, 334,
3558
+ 335, 5, 40, 0, 0, 335, 336, 3, 56, 28, 0, 336, 337, 5, 41, 0, 0, 337, 349, 1, 0, 0, 0,
3559
+ 338, 341, 3, 62, 31, 0, 339, 341, 3, 70, 35, 0, 340, 338, 1, 0, 0, 0, 340, 339, 1, 0,
3560
+ 0, 0, 341, 349, 1, 0, 0, 0, 342, 343, 3, 60, 30, 0, 343, 344, 3, 56, 28, 8, 344, 349,
3561
+ 1, 0, 0, 0, 345, 349, 3, 80, 40, 0, 346, 349, 3, 82, 41, 0, 347, 349, 3, 74, 37, 0, 348,
3562
+ 333, 1, 0, 0, 0, 348, 340, 1, 0, 0, 0, 348, 342, 1, 0, 0, 0, 348, 345, 1, 0, 0, 0, 348,
3563
+ 346, 1, 0, 0, 0, 348, 347, 1, 0, 0, 0, 349, 365, 1, 0, 0, 0, 350, 351, 10, 7, 0, 0, 351,
3564
+ 352, 7, 4, 0, 0, 352, 364, 3, 56, 28, 8, 353, 354, 10, 6, 0, 0, 354, 355, 7, 5, 0, 0, 355,
3565
+ 364, 3, 56, 28, 7, 356, 357, 10, 5, 0, 0, 357, 358, 3, 58, 29, 0, 358, 359, 3, 56, 28,
3566
+ 6, 359, 364, 1, 0, 0, 0, 360, 361, 10, 4, 0, 0, 361, 362, 7, 6, 0, 0, 362, 364, 3, 56,
3567
+ 28, 5, 363, 350, 1, 0, 0, 0, 363, 353, 1, 0, 0, 0, 363, 356, 1, 0, 0, 0, 363, 360, 1, 0,
3568
+ 0, 0, 364, 367, 1, 0, 0, 0, 365, 363, 1, 0, 0, 0, 365, 366, 1, 0, 0, 0, 366, 57, 1, 0, 0,
3569
+ 0, 367, 365, 1, 0, 0, 0, 368, 369, 7, 7, 0, 0, 369, 59, 1, 0, 0, 0, 370, 371, 7, 8, 0, 0,
3570
+ 371, 61, 1, 0, 0, 0, 372, 374, 5, 37, 0, 0, 373, 372, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0,
3571
+ 374, 375, 1, 0, 0, 0, 375, 378, 7, 9, 0, 0, 376, 378, 3, 92, 46, 0, 377, 373, 1, 0, 0,
3572
+ 0, 377, 376, 1, 0, 0, 0, 378, 63, 1, 0, 0, 0, 379, 380, 5, 22, 0, 0, 380, 381, 5, 44, 0,
3573
+ 0, 381, 383, 5, 40, 0, 0, 382, 384, 3, 68, 34, 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0,
3574
+ 0, 0, 384, 385, 1, 0, 0, 0, 385, 386, 5, 41, 0, 0, 386, 387, 5, 1, 0, 0, 387, 388, 5, 52,
3575
+ 0, 0, 388, 391, 5, 54, 0, 0, 389, 392, 5, 52, 0, 0, 390, 392, 3, 66, 33, 0, 391, 389,
3576
+ 1, 0, 0, 0, 391, 390, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 391, 1, 0, 0, 0, 393, 394,
3577
+ 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 396, 5, 55, 0, 0, 396, 65, 1, 0, 0, 0, 397, 400,
3578
+ 3, 2, 1, 0, 398, 400, 3, 78, 39, 0, 399, 397, 1, 0, 0, 0, 399, 398, 1, 0, 0, 0, 400, 67,
3579
+ 1, 0, 0, 0, 401, 406, 5, 44, 0, 0, 402, 403, 5, 2, 0, 0, 403, 405, 5, 44, 0, 0, 404, 402,
3580
+ 1, 0, 0, 0, 405, 408, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 415,
3581
+ 1, 0, 0, 0, 408, 406, 1, 0, 0, 0, 409, 410, 5, 2, 0, 0, 410, 411, 5, 44, 0, 0, 411, 412,
3582
+ 5, 3, 0, 0, 412, 414, 3, 62, 31, 0, 413, 409, 1, 0, 0, 0, 414, 417, 1, 0, 0, 0, 415, 413,
3583
+ 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 431, 1, 0, 0, 0, 417, 415, 1, 0, 0, 0, 418, 419,
3584
+ 5, 44, 0, 0, 419, 420, 5, 3, 0, 0, 420, 427, 3, 62, 31, 0, 421, 422, 5, 2, 0, 0, 422, 423,
3585
+ 5, 44, 0, 0, 423, 424, 5, 3, 0, 0, 424, 426, 3, 62, 31, 0, 425, 421, 1, 0, 0, 0, 426, 429,
3586
+ 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 431, 1, 0, 0, 0, 429, 427,
3587
+ 1, 0, 0, 0, 430, 401, 1, 0, 0, 0, 430, 418, 1, 0, 0, 0, 431, 69, 1, 0, 0, 0, 432, 437, 5,
3588
+ 44, 0, 0, 433, 434, 5, 5, 0, 0, 434, 436, 5, 44, 0, 0, 435, 433, 1, 0, 0, 0, 436, 439,
3589
+ 1, 0, 0, 0, 437, 435, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 71, 1, 0, 0, 0, 439, 437, 1,
3590
+ 0, 0, 0, 440, 442, 5, 40, 0, 0, 441, 443, 3, 50, 25, 0, 442, 441, 1, 0, 0, 0, 442, 443,
3591
+ 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 448, 5, 41, 0, 0, 445, 446, 5, 5, 0, 0, 446, 448,
3592
+ 5, 44, 0, 0, 447, 440, 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 448, 73, 1, 0, 0, 0, 449, 451,
3593
+ 3, 76, 38, 0, 450, 449, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 454,
3594
+ 5, 44, 0, 0, 453, 455, 3, 72, 36, 0, 454, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 454,
3595
+ 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 75, 1, 0, 0, 0, 458, 460, 5, 36, 0, 0, 459, 458,
3596
+ 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 463, 5, 38, 0, 0, 462, 464,
3597
+ 3, 56, 28, 0, 463, 462, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 77, 1, 0, 0, 0, 465, 466,
3598
+ 5, 21, 0, 0, 466, 467, 3, 56, 28, 0, 467, 79, 1, 0, 0, 0, 468, 469, 5, 10, 0, 0, 469, 470,
3599
+ 5, 11, 0, 0, 470, 471, 5, 1, 0, 0, 471, 472, 5, 52, 0, 0, 472, 475, 5, 54, 0, 0, 473, 476,
3600
+ 5, 52, 0, 0, 474, 476, 3, 86, 43, 0, 475, 473, 1, 0, 0, 0, 475, 474, 1, 0, 0, 0, 476, 477,
3601
+ 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480,
3602
+ 5, 55, 0, 0, 480, 81, 1, 0, 0, 0, 481, 482, 5, 10, 0, 0, 482, 483, 5, 12, 0, 0, 483, 484,
3603
+ 5, 1, 0, 0, 484, 485, 5, 52, 0, 0, 485, 488, 5, 54, 0, 0, 486, 489, 5, 52, 0, 0, 487, 489,
3604
+ 3, 84, 42, 0, 488, 486, 1, 0, 0, 0, 488, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 488,
3605
+ 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 493, 5, 55, 0, 0, 493, 83,
3606
+ 1, 0, 0, 0, 494, 496, 7, 10, 0, 0, 495, 497, 5, 1, 0, 0, 496, 495, 1, 0, 0, 0, 496, 497,
3607
+ 1, 0, 0, 0, 497, 503, 1, 0, 0, 0, 498, 504, 3, 50, 25, 0, 499, 500, 5, 40, 0, 0, 500, 501,
3608
+ 3, 50, 25, 0, 501, 502, 5, 41, 0, 0, 502, 504, 1, 0, 0, 0, 503, 498, 1, 0, 0, 0, 503, 499,
3609
+ 1, 0, 0, 0, 504, 85, 1, 0, 0, 0, 505, 506, 3, 88, 44, 0, 506, 507, 5, 1, 0, 0, 507, 508,
3610
+ 3, 90, 45, 0, 508, 87, 1, 0, 0, 0, 509, 510, 7, 11, 0, 0, 510, 89, 1, 0, 0, 0, 511, 512,
3611
+ 5, 52, 0, 0, 512, 515, 5, 54, 0, 0, 513, 516, 5, 52, 0, 0, 514, 516, 3, 86, 43, 0, 515,
3612
+ 513, 1, 0, 0, 0, 515, 514, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 517,
3613
+ 518, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 529, 5, 55, 0, 0, 520, 525, 3, 56, 28, 0, 521,
3614
+ 522, 5, 2, 0, 0, 522, 524, 3, 56, 28, 0, 523, 521, 1, 0, 0, 0, 524, 527, 1, 0, 0, 0, 525,
3615
+ 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 529, 1, 0, 0, 0, 527, 525, 1, 0, 0, 0, 528,
3616
+ 511, 1, 0, 0, 0, 528, 520, 1, 0, 0, 0, 529, 91, 1, 0, 0, 0, 530, 531, 5, 6, 0, 0, 531, 532,
3617
+ 5, 45, 0, 0, 532, 533, 5, 7, 0, 0, 533, 93, 1, 0, 0, 0, 534, 537, 5, 44, 0, 0, 535, 538,
3618
+ 5, 45, 0, 0, 536, 538, 3, 56, 28, 0, 537, 535, 1, 0, 0, 0, 537, 536, 1, 0, 0, 0, 538, 541,
3619
+ 1, 0, 0, 0, 539, 541, 5, 44, 0, 0, 540, 534, 1, 0, 0, 0, 540, 539, 1, 0, 0, 0, 541, 95,
3620
+ 1, 0, 0, 0, 542, 546, 5, 13, 0, 0, 543, 545, 3, 94, 47, 0, 544, 543, 1, 0, 0, 0, 545, 548,
3621
+ 1, 0, 0, 0, 546, 544, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 97, 1, 0, 0, 0, 548, 546, 1,
3622
+ 0, 0, 0, 549, 550, 5, 18, 0, 0, 550, 551, 5, 44, 0, 0, 551, 99, 1, 0, 0, 0, 552, 553, 5,
3623
+ 23, 0, 0, 553, 554, 5, 44, 0, 0, 554, 101, 1, 0, 0, 0, 555, 556, 5, 27, 0, 0, 556, 557,
3624
+ 5, 1, 0, 0, 557, 558, 5, 52, 0, 0, 558, 561, 5, 54, 0, 0, 559, 562, 5, 52, 0, 0, 560, 562,
3625
+ 3, 2, 1, 0, 561, 559, 1, 0, 0, 0, 561, 560, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 561,
3626
+ 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 5, 55, 0, 0, 566, 103,
3627
+ 1, 0, 0, 0, 567, 568, 5, 24, 0, 0, 568, 569, 3, 56, 28, 0, 569, 570, 5, 1, 0, 0, 570, 571,
3628
+ 5, 52, 0, 0, 571, 574, 5, 54, 0, 0, 572, 575, 5, 52, 0, 0, 573, 575, 3, 2, 1, 0, 574, 572,
3629
+ 1, 0, 0, 0, 574, 573, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 576, 577,
3630
+ 1, 0, 0, 0, 577, 578, 1, 0, 0, 0, 578, 582, 5, 55, 0, 0, 579, 581, 3, 106, 53, 0, 580,
3631
+ 579, 1, 0, 0, 0, 581, 584, 1, 0, 0, 0, 582, 580, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583,
3632
+ 586, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 585, 587, 3, 108, 54, 0, 586, 585, 1, 0, 0, 0, 586,
3633
+ 587, 1, 0, 0, 0, 587, 105, 1, 0, 0, 0, 588, 589, 5, 25, 0, 0, 589, 590, 5, 24, 0, 0, 590,
3634
+ 591, 3, 56, 28, 0, 591, 592, 5, 1, 0, 0, 592, 593, 5, 52, 0, 0, 593, 596, 5, 54, 0, 0,
3635
+ 594, 597, 5, 52, 0, 0, 595, 597, 3, 2, 1, 0, 596, 594, 1, 0, 0, 0, 596, 595, 1, 0, 0, 0,
3636
+ 597, 598, 1, 0, 0, 0, 598, 596, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0,
3637
+ 600, 601, 5, 55, 0, 0, 601, 107, 1, 0, 0, 0, 602, 603, 5, 25, 0, 0, 603, 604, 5, 1, 0,
3638
+ 0, 604, 605, 5, 52, 0, 0, 605, 608, 5, 54, 0, 0, 606, 609, 5, 52, 0, 0, 607, 609, 3, 2,
3639
+ 1, 0, 608, 606, 1, 0, 0, 0, 608, 607, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 608, 1, 0,
3640
+ 0, 0, 610, 611, 1, 0, 0, 0, 611, 612, 1, 0, 0, 0, 612, 613, 5, 55, 0, 0, 613, 109, 1, 0,
3641
+ 0, 0, 75, 112, 114, 136, 141, 149, 151, 161, 163, 178, 182, 187, 191, 198, 205, 213,
3642
+ 217, 227, 235, 237, 248, 259, 261, 267, 273, 277, 283, 285, 304, 311, 319, 322,
3643
+ 340, 348, 363, 365, 373, 377, 383, 391, 393, 399, 406, 415, 427, 430, 437, 442,
3644
+ 447, 450, 456, 459, 463, 475, 477, 488, 490, 496, 503, 515, 517, 525, 528, 537,
3645
+ 540, 546, 561, 563, 574, 576, 582, 586, 596, 598, 608, 610
3309
3646
  ];
3310
3647
  static __ATN;
3311
3648
  static get _ATN() {
@@ -3408,6 +3745,9 @@ export class ExpressionContext extends antlr.ParserRuleContext {
3408
3745
  point_expr() {
3409
3746
  return this.getRuleContext(0, Point_exprContext);
3410
3747
  }
3748
+ if_expr() {
3749
+ return this.getRuleContext(0, If_exprContext);
3750
+ }
3411
3751
  get ruleIndex() {
3412
3752
  return CircuitScriptParser.RULE_expression;
3413
3753
  }
@@ -4210,6 +4550,32 @@ export class MultiplyExprContext extends Data_exprContext {
4210
4550
  }
4211
4551
  }
4212
4552
  }
4553
+ export class LogicalOperatorExprContext extends Data_exprContext {
4554
+ constructor(ctx) {
4555
+ super(ctx.parent, ctx.invokingState);
4556
+ super.copyFrom(ctx);
4557
+ }
4558
+ data_expr(i) {
4559
+ if (i === undefined) {
4560
+ return this.getRuleContexts(Data_exprContext);
4561
+ }
4562
+ return this.getRuleContext(i, Data_exprContext);
4563
+ }
4564
+ LogicalAnd() {
4565
+ return this.getToken(CircuitScriptParser.LogicalAnd, 0);
4566
+ }
4567
+ LogicalOr() {
4568
+ return this.getToken(CircuitScriptParser.LogicalOr, 0);
4569
+ }
4570
+ accept(visitor) {
4571
+ if (visitor.visitLogicalOperatorExpr) {
4572
+ return visitor.visitLogicalOperatorExpr(this);
4573
+ }
4574
+ else {
4575
+ return visitor.visitChildren(this);
4576
+ }
4577
+ }
4578
+ }
4213
4579
  export class DataExprContext extends Data_exprContext {
4214
4580
  constructor(ctx) {
4215
4581
  super(ctx.parent, ctx.invokingState);
@@ -4326,6 +4692,18 @@ export class Binary_operatorContext extends antlr.ParserRuleContext {
4326
4692
  NotEquals() {
4327
4693
  return this.getToken(CircuitScriptParser.NotEquals, 0);
4328
4694
  }
4695
+ GreaterThan() {
4696
+ return this.getToken(CircuitScriptParser.GreaterThan, 0);
4697
+ }
4698
+ GreatOrEqualThan() {
4699
+ return this.getToken(CircuitScriptParser.GreatOrEqualThan, 0);
4700
+ }
4701
+ LessThan() {
4702
+ return this.getToken(CircuitScriptParser.LessThan, 0);
4703
+ }
4704
+ LessOrEqualThan() {
4705
+ return this.getToken(CircuitScriptParser.LessOrEqualThan, 0);
4706
+ }
4329
4707
  get ruleIndex() {
4330
4708
  return CircuitScriptParser.RULE_binary_operator;
4331
4709
  }
@@ -4696,11 +5074,11 @@ export class Create_graphic_exprContext extends antlr.ParserRuleContext {
4696
5074
  DEDENT() {
4697
5075
  return this.getToken(CircuitScriptParser.DEDENT, 0);
4698
5076
  }
4699
- sub_expr(i) {
5077
+ graphic_expr(i) {
4700
5078
  if (i === undefined) {
4701
- return this.getRuleContexts(Sub_exprContext);
5079
+ return this.getRuleContexts(Graphic_exprContext);
4702
5080
  }
4703
- return this.getRuleContext(i, Sub_exprContext);
5081
+ return this.getRuleContext(i, Graphic_exprContext);
4704
5082
  }
4705
5083
  get ruleIndex() {
4706
5084
  return CircuitScriptParser.RULE_create_graphic_expr;
@@ -4714,7 +5092,7 @@ export class Create_graphic_exprContext extends antlr.ParserRuleContext {
4714
5092
  }
4715
5093
  }
4716
5094
  }
4717
- export class Sub_exprContext extends antlr.ParserRuleContext {
5095
+ export class Graphic_exprContext extends antlr.ParserRuleContext {
4718
5096
  _command;
4719
5097
  constructor(parent, invokingState) {
4720
5098
  super(parent, invokingState);
@@ -4735,11 +5113,11 @@ export class Sub_exprContext extends antlr.ParserRuleContext {
4735
5113
  return this.getToken(CircuitScriptParser.CLOSE_PAREN, 0);
4736
5114
  }
4737
5115
  get ruleIndex() {
4738
- return CircuitScriptParser.RULE_sub_expr;
5116
+ return CircuitScriptParser.RULE_graphic_expr;
4739
5117
  }
4740
5118
  accept(visitor) {
4741
- if (visitor.visitSub_expr) {
4742
- return visitor.visitSub_expr(this);
5119
+ if (visitor.visitGraphic_expr) {
5120
+ return visitor.visitGraphic_expr(this);
4743
5121
  }
4744
5122
  else {
4745
5123
  return visitor.visitChildren(this);
@@ -5036,3 +5414,138 @@ export class Frame_exprContext extends antlr.ParserRuleContext {
5036
5414
  }
5037
5415
  }
5038
5416
  }
5417
+ export class If_exprContext extends antlr.ParserRuleContext {
5418
+ constructor(parent, invokingState) {
5419
+ super(parent, invokingState);
5420
+ }
5421
+ If() {
5422
+ return this.getToken(CircuitScriptParser.If, 0);
5423
+ }
5424
+ data_expr() {
5425
+ return this.getRuleContext(0, Data_exprContext);
5426
+ }
5427
+ NEWLINE(i) {
5428
+ if (i === undefined) {
5429
+ return this.getTokens(CircuitScriptParser.NEWLINE);
5430
+ }
5431
+ else {
5432
+ return this.getToken(CircuitScriptParser.NEWLINE, i);
5433
+ }
5434
+ }
5435
+ INDENT() {
5436
+ return this.getToken(CircuitScriptParser.INDENT, 0);
5437
+ }
5438
+ DEDENT() {
5439
+ return this.getToken(CircuitScriptParser.DEDENT, 0);
5440
+ }
5441
+ expression(i) {
5442
+ if (i === undefined) {
5443
+ return this.getRuleContexts(ExpressionContext);
5444
+ }
5445
+ return this.getRuleContext(i, ExpressionContext);
5446
+ }
5447
+ if_inner_expr(i) {
5448
+ if (i === undefined) {
5449
+ return this.getRuleContexts(If_inner_exprContext);
5450
+ }
5451
+ return this.getRuleContext(i, If_inner_exprContext);
5452
+ }
5453
+ else_expr() {
5454
+ return this.getRuleContext(0, Else_exprContext);
5455
+ }
5456
+ get ruleIndex() {
5457
+ return CircuitScriptParser.RULE_if_expr;
5458
+ }
5459
+ accept(visitor) {
5460
+ if (visitor.visitIf_expr) {
5461
+ return visitor.visitIf_expr(this);
5462
+ }
5463
+ else {
5464
+ return visitor.visitChildren(this);
5465
+ }
5466
+ }
5467
+ }
5468
+ export class If_inner_exprContext extends antlr.ParserRuleContext {
5469
+ constructor(parent, invokingState) {
5470
+ super(parent, invokingState);
5471
+ }
5472
+ Else() {
5473
+ return this.getToken(CircuitScriptParser.Else, 0);
5474
+ }
5475
+ If() {
5476
+ return this.getToken(CircuitScriptParser.If, 0);
5477
+ }
5478
+ data_expr() {
5479
+ return this.getRuleContext(0, Data_exprContext);
5480
+ }
5481
+ NEWLINE(i) {
5482
+ if (i === undefined) {
5483
+ return this.getTokens(CircuitScriptParser.NEWLINE);
5484
+ }
5485
+ else {
5486
+ return this.getToken(CircuitScriptParser.NEWLINE, i);
5487
+ }
5488
+ }
5489
+ INDENT() {
5490
+ return this.getToken(CircuitScriptParser.INDENT, 0);
5491
+ }
5492
+ DEDENT() {
5493
+ return this.getToken(CircuitScriptParser.DEDENT, 0);
5494
+ }
5495
+ expression(i) {
5496
+ if (i === undefined) {
5497
+ return this.getRuleContexts(ExpressionContext);
5498
+ }
5499
+ return this.getRuleContext(i, ExpressionContext);
5500
+ }
5501
+ get ruleIndex() {
5502
+ return CircuitScriptParser.RULE_if_inner_expr;
5503
+ }
5504
+ accept(visitor) {
5505
+ if (visitor.visitIf_inner_expr) {
5506
+ return visitor.visitIf_inner_expr(this);
5507
+ }
5508
+ else {
5509
+ return visitor.visitChildren(this);
5510
+ }
5511
+ }
5512
+ }
5513
+ export class Else_exprContext extends antlr.ParserRuleContext {
5514
+ constructor(parent, invokingState) {
5515
+ super(parent, invokingState);
5516
+ }
5517
+ Else() {
5518
+ return this.getToken(CircuitScriptParser.Else, 0);
5519
+ }
5520
+ NEWLINE(i) {
5521
+ if (i === undefined) {
5522
+ return this.getTokens(CircuitScriptParser.NEWLINE);
5523
+ }
5524
+ else {
5525
+ return this.getToken(CircuitScriptParser.NEWLINE, i);
5526
+ }
5527
+ }
5528
+ INDENT() {
5529
+ return this.getToken(CircuitScriptParser.INDENT, 0);
5530
+ }
5531
+ DEDENT() {
5532
+ return this.getToken(CircuitScriptParser.DEDENT, 0);
5533
+ }
5534
+ expression(i) {
5535
+ if (i === undefined) {
5536
+ return this.getRuleContexts(ExpressionContext);
5537
+ }
5538
+ return this.getRuleContext(i, ExpressionContext);
5539
+ }
5540
+ get ruleIndex() {
5541
+ return CircuitScriptParser.RULE_else_expr;
5542
+ }
5543
+ accept(visitor) {
5544
+ if (visitor.visitElse_expr) {
5545
+ return visitor.visitElse_expr(this);
5546
+ }
5547
+ else {
5548
+ return visitor.visitChildren(this);
5549
+ }
5550
+ }
5551
+ }