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
@@ -23,8 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Create_component_exprContext = exports.Function_return_exprContext = exports.Net_namespace_exprContext = exports.Function_call_exprContext = exports.Trailer_exprContext = exports.Atom_exprContext = exports.Function_args_exprContext = exports.Function_exprContext = exports.Function_def_exprContext = exports.Value_exprContext = exports.Unary_operatorContext = exports.Binary_operatorContext = exports.RoundedBracketsExprContext = exports.BinaryOperatorExprContext = exports.ValueAtomExprContext = exports.UnaryOperatorExprContext = exports.DataExprContext = exports.MultiplyExprContext = exports.AdditionExprContext = exports.FunctionCallExprContext = exports.Data_exprContext = exports.Double_dot_property_set_exprContext = exports.Property_set_exprContext = exports.ParametersContext = exports.Keyword_assignment_exprContext = exports.Assignment_exprContext = exports.Break_keywordContext = exports.At_block_pin_expression_complexContext = exports.At_block_pin_expression_simpleContext = exports.At_block_pin_exprContext = exports.At_block_expressionsContext = exports.At_blockContext = exports.At_to_multiple_line_expr_to_pinContext = exports.At_to_multiple_line_exprContext = exports.At_to_multiple_exprContext = exports.To_component_exprContext = exports.At_component_exprContext = exports.Pin_select_expr2Context = exports.Component_select_exprContext = exports.Add_component_exprContext = exports.Data_expr_with_assignmentContext = exports.Component_modifier_exprContext = exports.Pin_select_exprContext = exports.Assignment_expr2Context = exports.Property_set_expr2Context = exports.Path_block_innerContext = exports.Path_blocksContext = exports.ExpressionContext = exports.ScriptContext = exports.CircuitScriptParser = void 0;
27
- exports.Frame_exprContext = exports.Import_exprContext = exports.Point_exprContext = exports.Wire_exprContext = exports.Wire_expr_direction_onlyContext = exports.Wire_expr_direction_valueContext = exports.Wire_atom_exprContext = exports.Blank_exprContext = exports.Nested_propertiesContext = exports.Single_line_propertyContext = exports.Property_value_exprContext = exports.Property_key_exprContext = exports.Property_exprContext = exports.Sub_exprContext = exports.Create_graphic_exprContext = void 0;
26
+ exports.Function_return_exprContext = exports.Net_namespace_exprContext = exports.Function_call_exprContext = exports.Trailer_exprContext = exports.Atom_exprContext = exports.Function_args_exprContext = exports.Function_exprContext = exports.Function_def_exprContext = exports.Value_exprContext = exports.Unary_operatorContext = exports.Binary_operatorContext = exports.RoundedBracketsExprContext = exports.BinaryOperatorExprContext = exports.ValueAtomExprContext = exports.UnaryOperatorExprContext = exports.DataExprContext = exports.LogicalOperatorExprContext = exports.MultiplyExprContext = exports.AdditionExprContext = exports.FunctionCallExprContext = exports.Data_exprContext = exports.Double_dot_property_set_exprContext = exports.Property_set_exprContext = exports.ParametersContext = exports.Keyword_assignment_exprContext = exports.Assignment_exprContext = exports.Break_keywordContext = exports.At_block_pin_expression_complexContext = exports.At_block_pin_expression_simpleContext = exports.At_block_pin_exprContext = exports.At_block_expressionsContext = exports.At_blockContext = exports.At_to_multiple_line_expr_to_pinContext = exports.At_to_multiple_line_exprContext = exports.At_to_multiple_exprContext = exports.To_component_exprContext = exports.At_component_exprContext = exports.Pin_select_expr2Context = exports.Component_select_exprContext = exports.Add_component_exprContext = exports.Data_expr_with_assignmentContext = exports.Component_modifier_exprContext = exports.Pin_select_exprContext = exports.Assignment_expr2Context = exports.Property_set_expr2Context = exports.Path_block_innerContext = exports.Path_blocksContext = exports.ExpressionContext = exports.ScriptContext = exports.CircuitScriptParser = void 0;
27
+ exports.Else_exprContext = exports.If_inner_exprContext = exports.If_exprContext = exports.Frame_exprContext = exports.Import_exprContext = exports.Point_exprContext = exports.Wire_exprContext = exports.Wire_expr_direction_onlyContext = exports.Wire_expr_direction_valueContext = exports.Wire_atom_exprContext = exports.Blank_exprContext = exports.Nested_propertiesContext = exports.Single_line_propertyContext = exports.Property_value_exprContext = exports.Property_key_exprContext = exports.Property_exprContext = exports.Graphic_exprContext = exports.Create_graphic_exprContext = exports.Create_component_exprContext = void 0;
28
28
  const antlr = __importStar(require("antlr4ng"));
29
29
  class CircuitScriptParser extends antlr.Parser {
30
30
  get grammarFileName() { return "CircuitScript.g4"; }
@@ -46,12 +46,12 @@ class CircuitScriptParser extends antlr.Parser {
46
46
  try {
47
47
  this.enterOuterAlt(localContext, 1);
48
48
  {
49
- this.state = 106;
49
+ this.state = 112;
50
50
  this.errorHandler.sync(this);
51
51
  _la = this.tokenStream.LA(1);
52
52
  do {
53
53
  {
54
- this.state = 106;
54
+ this.state = 112;
55
55
  this.errorHandler.sync(this);
56
56
  switch (this.tokenStream.LA(1)) {
57
57
  case CircuitScriptParser.T__3:
@@ -66,18 +66,19 @@ class CircuitScriptParser extends antlr.Parser {
66
66
  case CircuitScriptParser.Parallel:
67
67
  case CircuitScriptParser.Define:
68
68
  case CircuitScriptParser.Import:
69
+ case CircuitScriptParser.If:
69
70
  case CircuitScriptParser.Frame:
70
71
  case CircuitScriptParser.Addition:
71
72
  case CircuitScriptParser.Divide:
72
73
  case CircuitScriptParser.ID:
73
74
  {
74
- this.state = 104;
75
+ this.state = 110;
75
76
  this.expression();
76
77
  }
77
78
  break;
78
79
  case CircuitScriptParser.NEWLINE:
79
80
  {
80
- this.state = 105;
81
+ this.state = 111;
81
82
  this.match(CircuitScriptParser.NEWLINE);
82
83
  }
83
84
  break;
@@ -85,11 +86,11 @@ class CircuitScriptParser extends antlr.Parser {
85
86
  throw new antlr.NoViableAltException(this);
86
87
  }
87
88
  }
88
- this.state = 108;
89
+ this.state = 114;
89
90
  this.errorHandler.sync(this);
90
91
  _la = this.tokenStream.LA(1);
91
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || _la === 37 || _la === 45);
92
- this.state = 110;
92
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
93
+ this.state = 116;
93
94
  this.match(CircuitScriptParser.EOF);
94
95
  }
95
96
  }
@@ -111,128 +112,135 @@ class CircuitScriptParser extends antlr.Parser {
111
112
  let localContext = new ExpressionContext(this.context, this.state);
112
113
  this.enterRule(localContext, 2, CircuitScriptParser.RULE_expression);
113
114
  try {
114
- this.state = 129;
115
+ this.state = 136;
115
116
  this.errorHandler.sync(this);
116
117
  switch (this.interpreter.adaptivePredict(this.tokenStream, 2, this.context)) {
117
118
  case 1:
118
119
  this.enterOuterAlt(localContext, 1);
119
120
  {
120
- this.state = 112;
121
+ this.state = 118;
121
122
  this.add_component_expr();
122
123
  }
123
124
  break;
124
125
  case 2:
125
126
  this.enterOuterAlt(localContext, 2);
126
127
  {
127
- this.state = 113;
128
+ this.state = 119;
128
129
  this.to_component_expr();
129
130
  }
130
131
  break;
131
132
  case 3:
132
133
  this.enterOuterAlt(localContext, 3);
133
134
  {
134
- this.state = 114;
135
+ this.state = 120;
135
136
  this.at_component_expr();
136
137
  }
137
138
  break;
138
139
  case 4:
139
140
  this.enterOuterAlt(localContext, 4);
140
141
  {
141
- this.state = 115;
142
+ this.state = 121;
142
143
  this.assignment_expr();
143
144
  }
144
145
  break;
145
146
  case 5:
146
147
  this.enterOuterAlt(localContext, 5);
147
148
  {
148
- this.state = 116;
149
+ this.state = 122;
149
150
  this.property_set_expr();
150
151
  }
151
152
  break;
152
153
  case 6:
153
154
  this.enterOuterAlt(localContext, 6);
154
155
  {
155
- this.state = 117;
156
+ this.state = 123;
156
157
  this.property_set_expr2();
157
158
  }
158
159
  break;
159
160
  case 7:
160
161
  this.enterOuterAlt(localContext, 7);
161
162
  {
162
- this.state = 118;
163
+ this.state = 124;
163
164
  this.double_dot_property_set_expr();
164
165
  }
165
166
  break;
166
167
  case 8:
167
168
  this.enterOuterAlt(localContext, 8);
168
169
  {
169
- this.state = 119;
170
+ this.state = 125;
170
171
  this.break_keyword();
171
172
  }
172
173
  break;
173
174
  case 9:
174
175
  this.enterOuterAlt(localContext, 9);
175
176
  {
176
- this.state = 120;
177
+ this.state = 126;
177
178
  this.function_def_expr();
178
179
  }
179
180
  break;
180
181
  case 10:
181
182
  this.enterOuterAlt(localContext, 10);
182
183
  {
183
- this.state = 121;
184
+ this.state = 127;
184
185
  this.function_call_expr();
185
186
  }
186
187
  break;
187
188
  case 11:
188
189
  this.enterOuterAlt(localContext, 11);
189
190
  {
190
- this.state = 122;
191
+ this.state = 128;
191
192
  this.wire_expr();
192
193
  }
193
194
  break;
194
195
  case 12:
195
196
  this.enterOuterAlt(localContext, 12);
196
197
  {
197
- this.state = 123;
198
+ this.state = 129;
198
199
  this.import_expr();
199
200
  }
200
201
  break;
201
202
  case 13:
202
203
  this.enterOuterAlt(localContext, 13);
203
204
  {
204
- this.state = 124;
205
+ this.state = 130;
205
206
  this.frame_expr();
206
207
  }
207
208
  break;
208
209
  case 14:
209
210
  this.enterOuterAlt(localContext, 14);
210
211
  {
211
- this.state = 125;
212
+ this.state = 131;
212
213
  this.atom_expr();
213
214
  }
214
215
  break;
215
216
  case 15:
216
217
  this.enterOuterAlt(localContext, 15);
217
218
  {
218
- this.state = 126;
219
+ this.state = 132;
219
220
  this.at_block();
220
221
  }
221
222
  break;
222
223
  case 16:
223
224
  this.enterOuterAlt(localContext, 16);
224
225
  {
225
- this.state = 127;
226
+ this.state = 133;
226
227
  this.path_blocks();
227
228
  }
228
229
  break;
229
230
  case 17:
230
231
  this.enterOuterAlt(localContext, 17);
231
232
  {
232
- this.state = 128;
233
+ this.state = 134;
233
234
  this.point_expr();
234
235
  }
235
236
  break;
237
+ case 18:
238
+ this.enterOuterAlt(localContext, 18);
239
+ {
240
+ this.state = 135;
241
+ this.if_expr();
242
+ }
243
+ break;
236
244
  }
237
245
  }
238
246
  catch (re) {
@@ -256,7 +264,7 @@ class CircuitScriptParser extends antlr.Parser {
256
264
  let alternative;
257
265
  this.enterOuterAlt(localContext, 1);
258
266
  {
259
- this.state = 132;
267
+ this.state = 139;
260
268
  this.errorHandler.sync(this);
261
269
  alternative = 1;
262
270
  do {
@@ -264,7 +272,7 @@ class CircuitScriptParser extends antlr.Parser {
264
272
  case 1:
265
273
  {
266
274
  {
267
- this.state = 131;
275
+ this.state = 138;
268
276
  this.path_block_inner();
269
277
  }
270
278
  }
@@ -272,7 +280,7 @@ class CircuitScriptParser extends antlr.Parser {
272
280
  default:
273
281
  throw new antlr.NoViableAltException(this);
274
282
  }
275
- this.state = 134;
283
+ this.state = 141;
276
284
  this.errorHandler.sync(this);
277
285
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 3, this.context);
278
286
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
@@ -299,7 +307,7 @@ class CircuitScriptParser extends antlr.Parser {
299
307
  try {
300
308
  this.enterOuterAlt(localContext, 1);
301
309
  {
302
- this.state = 136;
310
+ this.state = 143;
303
311
  _la = this.tokenStream.LA(1);
304
312
  if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 1835520) !== 0))) {
305
313
  this.errorHandler.recoverInline(this);
@@ -308,23 +316,23 @@ class CircuitScriptParser extends antlr.Parser {
308
316
  this.errorHandler.reportMatch(this);
309
317
  this.consume();
310
318
  }
311
- this.state = 137;
319
+ this.state = 144;
312
320
  this.match(CircuitScriptParser.T__0);
313
- this.state = 138;
321
+ this.state = 145;
314
322
  this.match(CircuitScriptParser.NEWLINE);
315
- this.state = 139;
323
+ this.state = 146;
316
324
  this.match(CircuitScriptParser.INDENT);
317
- this.state = 142;
325
+ this.state = 149;
318
326
  this.errorHandler.sync(this);
319
327
  _la = this.tokenStream.LA(1);
320
328
  do {
321
329
  {
322
- this.state = 142;
330
+ this.state = 149;
323
331
  this.errorHandler.sync(this);
324
332
  switch (this.tokenStream.LA(1)) {
325
333
  case CircuitScriptParser.NEWLINE:
326
334
  {
327
- this.state = 140;
335
+ this.state = 147;
328
336
  this.match(CircuitScriptParser.NEWLINE);
329
337
  }
330
338
  break;
@@ -340,12 +348,13 @@ class CircuitScriptParser extends antlr.Parser {
340
348
  case CircuitScriptParser.Parallel:
341
349
  case CircuitScriptParser.Define:
342
350
  case CircuitScriptParser.Import:
351
+ case CircuitScriptParser.If:
343
352
  case CircuitScriptParser.Frame:
344
353
  case CircuitScriptParser.Addition:
345
354
  case CircuitScriptParser.Divide:
346
355
  case CircuitScriptParser.ID:
347
356
  {
348
- this.state = 141;
357
+ this.state = 148;
349
358
  this.expression();
350
359
  }
351
360
  break;
@@ -353,11 +362,11 @@ class CircuitScriptParser extends antlr.Parser {
353
362
  throw new antlr.NoViableAltException(this);
354
363
  }
355
364
  }
356
- this.state = 144;
365
+ this.state = 151;
357
366
  this.errorHandler.sync(this);
358
367
  _la = this.tokenStream.LA(1);
359
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || _la === 37 || _la === 45);
360
- this.state = 146;
368
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
369
+ this.state = 153;
361
370
  this.match(CircuitScriptParser.DEDENT);
362
371
  }
363
372
  }
@@ -382,32 +391,32 @@ class CircuitScriptParser extends antlr.Parser {
382
391
  try {
383
392
  this.enterOuterAlt(localContext, 1);
384
393
  {
385
- this.state = 148;
394
+ this.state = 155;
386
395
  this.atom_expr();
387
- this.state = 149;
396
+ this.state = 156;
388
397
  this.match(CircuitScriptParser.T__0);
389
- this.state = 150;
398
+ this.state = 157;
390
399
  this.match(CircuitScriptParser.NEWLINE);
391
- this.state = 151;
400
+ this.state = 158;
392
401
  this.match(CircuitScriptParser.INDENT);
393
- this.state = 154;
402
+ this.state = 161;
394
403
  this.errorHandler.sync(this);
395
404
  _la = this.tokenStream.LA(1);
396
405
  do {
397
406
  {
398
- this.state = 154;
407
+ this.state = 161;
399
408
  this.errorHandler.sync(this);
400
409
  switch (this.tokenStream.LA(1)) {
401
410
  case CircuitScriptParser.NEWLINE:
402
411
  {
403
- this.state = 152;
412
+ this.state = 159;
404
413
  this.match(CircuitScriptParser.NEWLINE);
405
414
  }
406
415
  break;
407
416
  case CircuitScriptParser.ID:
408
417
  case CircuitScriptParser.INTEGER_VALUE:
409
418
  {
410
- this.state = 153;
419
+ this.state = 160;
411
420
  this.assignment_expr2();
412
421
  }
413
422
  break;
@@ -415,11 +424,11 @@ class CircuitScriptParser extends antlr.Parser {
415
424
  throw new antlr.NoViableAltException(this);
416
425
  }
417
426
  }
418
- this.state = 156;
427
+ this.state = 163;
419
428
  this.errorHandler.sync(this);
420
429
  _la = this.tokenStream.LA(1);
421
- } while (((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 259) !== 0));
422
- this.state = 158;
430
+ } while (((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 259) !== 0));
431
+ this.state = 165;
423
432
  this.match(CircuitScriptParser.DEDENT);
424
433
  }
425
434
  }
@@ -444,18 +453,18 @@ class CircuitScriptParser extends antlr.Parser {
444
453
  try {
445
454
  this.enterOuterAlt(localContext, 1);
446
455
  {
447
- this.state = 160;
456
+ this.state = 167;
448
457
  _la = this.tokenStream.LA(1);
449
- if (!(_la === 37 || _la === 38)) {
458
+ if (!(_la === 44 || _la === 45)) {
450
459
  this.errorHandler.recoverInline(this);
451
460
  }
452
461
  else {
453
462
  this.errorHandler.reportMatch(this);
454
463
  this.consume();
455
464
  }
456
- this.state = 161;
465
+ this.state = 168;
457
466
  this.match(CircuitScriptParser.T__0);
458
- this.state = 162;
467
+ this.state = 169;
459
468
  this.value_expr();
460
469
  }
461
470
  }
@@ -480,11 +489,11 @@ class CircuitScriptParser extends antlr.Parser {
480
489
  try {
481
490
  this.enterOuterAlt(localContext, 1);
482
491
  {
483
- this.state = 164;
492
+ this.state = 171;
484
493
  this.match(CircuitScriptParser.Pin);
485
- this.state = 165;
494
+ this.state = 172;
486
495
  _la = this.tokenStream.LA(1);
487
- if (!(_la === 38 || _la === 41)) {
496
+ if (!(_la === 45 || _la === 48)) {
488
497
  this.errorHandler.recoverInline(this);
489
498
  }
490
499
  else {
@@ -513,11 +522,11 @@ class CircuitScriptParser extends antlr.Parser {
513
522
  try {
514
523
  this.enterOuterAlt(localContext, 1);
515
524
  {
516
- this.state = 167;
525
+ this.state = 174;
517
526
  this.match(CircuitScriptParser.ID);
518
- this.state = 168;
527
+ this.state = 175;
519
528
  this.match(CircuitScriptParser.T__0);
520
- this.state = 171;
529
+ this.state = 178;
521
530
  this.errorHandler.sync(this);
522
531
  switch (this.tokenStream.LA(1)) {
523
532
  case CircuitScriptParser.T__5:
@@ -529,13 +538,13 @@ class CircuitScriptParser extends antlr.Parser {
529
538
  case CircuitScriptParser.STRING_VALUE:
530
539
  case CircuitScriptParser.PERCENTAGE_VALUE:
531
540
  {
532
- this.state = 169;
541
+ this.state = 176;
533
542
  this.value_expr();
534
543
  }
535
544
  break;
536
545
  case CircuitScriptParser.ID:
537
546
  {
538
- this.state = 170;
547
+ this.state = 177;
539
548
  this.match(CircuitScriptParser.ID);
540
549
  }
541
550
  break;
@@ -566,44 +575,44 @@ class CircuitScriptParser extends antlr.Parser {
566
575
  let alternative;
567
576
  this.enterOuterAlt(localContext, 1);
568
577
  {
569
- this.state = 175;
578
+ this.state = 182;
570
579
  this.errorHandler.sync(this);
571
580
  switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context)) {
572
581
  case 1:
573
582
  {
574
- this.state = 173;
583
+ this.state = 180;
575
584
  this.data_expr(0);
576
585
  }
577
586
  break;
578
587
  case 2:
579
588
  {
580
- this.state = 174;
589
+ this.state = 181;
581
590
  this.assignment_expr();
582
591
  }
583
592
  break;
584
593
  }
585
- this.state = 180;
594
+ this.state = 187;
586
595
  this.errorHandler.sync(this);
587
596
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context);
588
597
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
589
598
  if (alternative === 1) {
590
599
  {
591
600
  {
592
- this.state = 177;
601
+ this.state = 184;
593
602
  this.component_modifier_expr();
594
603
  }
595
604
  }
596
605
  }
597
- this.state = 182;
606
+ this.state = 189;
598
607
  this.errorHandler.sync(this);
599
608
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context);
600
609
  }
601
- this.state = 184;
610
+ this.state = 191;
602
611
  this.errorHandler.sync(this);
603
612
  _la = this.tokenStream.LA(1);
604
613
  if (_la === 14) {
605
614
  {
606
- this.state = 183;
615
+ this.state = 190;
607
616
  this.pin_select_expr();
608
617
  }
609
618
  }
@@ -629,9 +638,9 @@ class CircuitScriptParser extends antlr.Parser {
629
638
  try {
630
639
  this.enterOuterAlt(localContext, 1);
631
640
  {
632
- this.state = 186;
641
+ this.state = 193;
633
642
  this.match(CircuitScriptParser.Add);
634
- this.state = 187;
643
+ this.state = 194;
635
644
  this.data_expr_with_assignment();
636
645
  }
637
646
  }
@@ -653,7 +662,7 @@ class CircuitScriptParser extends antlr.Parser {
653
662
  let localContext = new Component_select_exprContext(this.context, this.state);
654
663
  this.enterRule(localContext, 20, CircuitScriptParser.RULE_component_select_expr);
655
664
  try {
656
- this.state = 191;
665
+ this.state = 198;
657
666
  this.errorHandler.sync(this);
658
667
  switch (this.tokenStream.LA(1)) {
659
668
  case CircuitScriptParser.T__5:
@@ -672,14 +681,14 @@ class CircuitScriptParser extends antlr.Parser {
672
681
  case CircuitScriptParser.PERCENTAGE_VALUE:
673
682
  this.enterOuterAlt(localContext, 1);
674
683
  {
675
- this.state = 189;
684
+ this.state = 196;
676
685
  this.data_expr_with_assignment();
677
686
  }
678
687
  break;
679
688
  case CircuitScriptParser.Pin:
680
689
  this.enterOuterAlt(localContext, 2);
681
690
  {
682
- this.state = 190;
691
+ this.state = 197;
683
692
  this.pin_select_expr();
684
693
  }
685
694
  break;
@@ -708,9 +717,9 @@ class CircuitScriptParser extends antlr.Parser {
708
717
  try {
709
718
  this.enterOuterAlt(localContext, 1);
710
719
  {
711
- this.state = 193;
720
+ this.state = 200;
712
721
  _la = this.tokenStream.LA(1);
713
- if (!(_la === 38 || _la === 41)) {
722
+ if (!(_la === 45 || _la === 48)) {
714
723
  this.errorHandler.recoverInline(this);
715
724
  }
716
725
  else {
@@ -739,9 +748,9 @@ class CircuitScriptParser extends antlr.Parser {
739
748
  try {
740
749
  this.enterOuterAlt(localContext, 1);
741
750
  {
742
- this.state = 195;
751
+ this.state = 202;
743
752
  this.match(CircuitScriptParser.At);
744
- this.state = 198;
753
+ this.state = 205;
745
754
  this.errorHandler.sync(this);
746
755
  switch (this.tokenStream.LA(1)) {
747
756
  case CircuitScriptParser.T__5:
@@ -760,13 +769,13 @@ class CircuitScriptParser extends antlr.Parser {
760
769
  case CircuitScriptParser.STRING_VALUE:
761
770
  case CircuitScriptParser.PERCENTAGE_VALUE:
762
771
  {
763
- this.state = 196;
772
+ this.state = 203;
764
773
  this.component_select_expr();
765
774
  }
766
775
  break;
767
776
  case CircuitScriptParser.Point:
768
777
  {
769
- this.state = 197;
778
+ this.state = 204;
770
779
  this.match(CircuitScriptParser.Point);
771
780
  }
772
781
  break;
@@ -796,9 +805,9 @@ class CircuitScriptParser extends antlr.Parser {
796
805
  try {
797
806
  this.enterOuterAlt(localContext, 1);
798
807
  {
799
- this.state = 200;
808
+ this.state = 207;
800
809
  this.match(CircuitScriptParser.To);
801
- this.state = 210;
810
+ this.state = 217;
802
811
  this.errorHandler.sync(this);
803
812
  switch (this.tokenStream.LA(1)) {
804
813
  case CircuitScriptParser.T__5:
@@ -818,21 +827,21 @@ class CircuitScriptParser extends antlr.Parser {
818
827
  case CircuitScriptParser.PERCENTAGE_VALUE:
819
828
  {
820
829
  {
821
- this.state = 201;
830
+ this.state = 208;
822
831
  this.component_select_expr();
823
- this.state = 206;
832
+ this.state = 213;
824
833
  this.errorHandler.sync(this);
825
834
  _la = this.tokenStream.LA(1);
826
835
  while (_la === 2) {
827
836
  {
828
837
  {
829
- this.state = 202;
838
+ this.state = 209;
830
839
  this.match(CircuitScriptParser.T__1);
831
- this.state = 203;
840
+ this.state = 210;
832
841
  this.component_select_expr();
833
842
  }
834
843
  }
835
- this.state = 208;
844
+ this.state = 215;
836
845
  this.errorHandler.sync(this);
837
846
  _la = this.tokenStream.LA(1);
838
847
  }
@@ -841,7 +850,7 @@ class CircuitScriptParser extends antlr.Parser {
841
850
  break;
842
851
  case CircuitScriptParser.Point:
843
852
  {
844
- this.state = 209;
853
+ this.state = 216;
845
854
  this.match(CircuitScriptParser.Point);
846
855
  }
847
856
  break;
@@ -871,54 +880,54 @@ class CircuitScriptParser extends antlr.Parser {
871
880
  try {
872
881
  this.enterOuterAlt(localContext, 1);
873
882
  {
874
- this.state = 212;
883
+ this.state = 219;
875
884
  this.match(CircuitScriptParser.At);
876
- this.state = 213;
885
+ this.state = 220;
877
886
  this.component_select_expr();
878
- this.state = 214;
887
+ this.state = 221;
879
888
  this.match(CircuitScriptParser.To);
880
- this.state = 215;
889
+ this.state = 222;
881
890
  this.component_select_expr();
882
- this.state = 220;
891
+ this.state = 227;
883
892
  this.errorHandler.sync(this);
884
893
  _la = this.tokenStream.LA(1);
885
894
  while (_la === 2) {
886
895
  {
887
896
  {
888
- this.state = 216;
897
+ this.state = 223;
889
898
  this.match(CircuitScriptParser.T__1);
890
- this.state = 217;
899
+ this.state = 224;
891
900
  this.component_select_expr();
892
901
  }
893
902
  }
894
- this.state = 222;
903
+ this.state = 229;
895
904
  this.errorHandler.sync(this);
896
905
  _la = this.tokenStream.LA(1);
897
906
  }
898
- this.state = 223;
907
+ this.state = 230;
899
908
  this.match(CircuitScriptParser.T__0);
900
- this.state = 224;
909
+ this.state = 231;
901
910
  this.match(CircuitScriptParser.NEWLINE);
902
- this.state = 225;
911
+ this.state = 232;
903
912
  this.match(CircuitScriptParser.INDENT);
904
- this.state = 228;
913
+ this.state = 235;
905
914
  this.errorHandler.sync(this);
906
915
  _la = this.tokenStream.LA(1);
907
916
  do {
908
917
  {
909
- this.state = 228;
918
+ this.state = 235;
910
919
  this.errorHandler.sync(this);
911
920
  switch (this.tokenStream.LA(1)) {
912
921
  case CircuitScriptParser.NEWLINE:
913
922
  {
914
- this.state = 226;
923
+ this.state = 233;
915
924
  this.match(CircuitScriptParser.NEWLINE);
916
925
  }
917
926
  break;
918
927
  case CircuitScriptParser.INTEGER_VALUE:
919
928
  case CircuitScriptParser.STRING_VALUE:
920
929
  {
921
- this.state = 227;
930
+ this.state = 234;
922
931
  this.at_to_multiple_line_expr();
923
932
  }
924
933
  break;
@@ -926,11 +935,11 @@ class CircuitScriptParser extends antlr.Parser {
926
935
  throw new antlr.NoViableAltException(this);
927
936
  }
928
937
  }
929
- this.state = 230;
938
+ this.state = 237;
930
939
  this.errorHandler.sync(this);
931
940
  _la = this.tokenStream.LA(1);
932
- } while (((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 137) !== 0));
933
- this.state = 232;
941
+ } while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 137) !== 0));
942
+ this.state = 239;
934
943
  this.match(CircuitScriptParser.DEDENT);
935
944
  }
936
945
  }
@@ -955,25 +964,25 @@ class CircuitScriptParser extends antlr.Parser {
955
964
  try {
956
965
  this.enterOuterAlt(localContext, 1);
957
966
  {
958
- this.state = 234;
967
+ this.state = 241;
959
968
  this.pin_select_expr2();
960
- this.state = 235;
969
+ this.state = 242;
961
970
  this.match(CircuitScriptParser.T__0);
962
- this.state = 236;
971
+ this.state = 243;
963
972
  this.at_to_multiple_line_expr_to_pin();
964
- this.state = 241;
973
+ this.state = 248;
965
974
  this.errorHandler.sync(this);
966
975
  _la = this.tokenStream.LA(1);
967
976
  while (_la === 2) {
968
977
  {
969
978
  {
970
- this.state = 237;
979
+ this.state = 244;
971
980
  this.match(CircuitScriptParser.T__1);
972
- this.state = 238;
981
+ this.state = 245;
973
982
  this.at_to_multiple_line_expr_to_pin();
974
983
  }
975
984
  }
976
- this.state = 243;
985
+ this.state = 250;
977
986
  this.errorHandler.sync(this);
978
987
  _la = this.tokenStream.LA(1);
979
988
  }
@@ -1000,9 +1009,9 @@ class CircuitScriptParser extends antlr.Parser {
1000
1009
  try {
1001
1010
  this.enterOuterAlt(localContext, 1);
1002
1011
  {
1003
- this.state = 244;
1012
+ this.state = 251;
1004
1013
  _la = this.tokenStream.LA(1);
1005
- if (!(_la === 35 || _la === 38)) {
1014
+ if (!(_la === 42 || _la === 45)) {
1006
1015
  this.errorHandler.recoverInline(this);
1007
1016
  }
1008
1017
  else {
@@ -1032,25 +1041,25 @@ class CircuitScriptParser extends antlr.Parser {
1032
1041
  try {
1033
1042
  this.enterOuterAlt(localContext, 1);
1034
1043
  {
1035
- this.state = 246;
1044
+ this.state = 253;
1036
1045
  this.at_component_expr();
1037
- this.state = 247;
1046
+ this.state = 254;
1038
1047
  this.match(CircuitScriptParser.T__0);
1039
- this.state = 248;
1048
+ this.state = 255;
1040
1049
  this.match(CircuitScriptParser.NEWLINE);
1041
- this.state = 249;
1050
+ this.state = 256;
1042
1051
  this.match(CircuitScriptParser.INDENT);
1043
- this.state = 252;
1052
+ this.state = 259;
1044
1053
  this.errorHandler.sync(this);
1045
1054
  _la = this.tokenStream.LA(1);
1046
1055
  do {
1047
1056
  {
1048
- this.state = 252;
1057
+ this.state = 259;
1049
1058
  this.errorHandler.sync(this);
1050
1059
  switch (this.tokenStream.LA(1)) {
1051
1060
  case CircuitScriptParser.NEWLINE:
1052
1061
  {
1053
- this.state = 250;
1062
+ this.state = 257;
1054
1063
  this.match(CircuitScriptParser.NEWLINE);
1055
1064
  }
1056
1065
  break;
@@ -1066,6 +1075,7 @@ class CircuitScriptParser extends antlr.Parser {
1066
1075
  case CircuitScriptParser.Parallel:
1067
1076
  case CircuitScriptParser.Define:
1068
1077
  case CircuitScriptParser.Import:
1078
+ case CircuitScriptParser.If:
1069
1079
  case CircuitScriptParser.Frame:
1070
1080
  case CircuitScriptParser.Addition:
1071
1081
  case CircuitScriptParser.Divide:
@@ -1073,7 +1083,7 @@ class CircuitScriptParser extends antlr.Parser {
1073
1083
  case CircuitScriptParser.INTEGER_VALUE:
1074
1084
  case CircuitScriptParser.STRING_VALUE:
1075
1085
  {
1076
- this.state = 251;
1086
+ this.state = 258;
1077
1087
  this.at_block_expressions();
1078
1088
  }
1079
1089
  break;
@@ -1081,11 +1091,11 @@ class CircuitScriptParser extends antlr.Parser {
1081
1091
  throw new antlr.NoViableAltException(this);
1082
1092
  }
1083
1093
  }
1084
- this.state = 254;
1094
+ this.state = 261;
1085
1095
  this.errorHandler.sync(this);
1086
1096
  _la = this.tokenStream.LA(1);
1087
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 275) !== 0));
1088
- this.state = 256;
1097
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 70405) !== 0));
1098
+ this.state = 263;
1089
1099
  this.match(CircuitScriptParser.DEDENT);
1090
1100
  }
1091
1101
  }
@@ -1107,7 +1117,7 @@ class CircuitScriptParser extends antlr.Parser {
1107
1117
  let localContext = new At_block_expressionsContext(this.context, this.state);
1108
1118
  this.enterRule(localContext, 36, CircuitScriptParser.RULE_at_block_expressions);
1109
1119
  try {
1110
- this.state = 260;
1120
+ this.state = 267;
1111
1121
  this.errorHandler.sync(this);
1112
1122
  switch (this.tokenStream.LA(1)) {
1113
1123
  case CircuitScriptParser.T__3:
@@ -1122,13 +1132,14 @@ class CircuitScriptParser extends antlr.Parser {
1122
1132
  case CircuitScriptParser.Parallel:
1123
1133
  case CircuitScriptParser.Define:
1124
1134
  case CircuitScriptParser.Import:
1135
+ case CircuitScriptParser.If:
1125
1136
  case CircuitScriptParser.Frame:
1126
1137
  case CircuitScriptParser.Addition:
1127
1138
  case CircuitScriptParser.Divide:
1128
1139
  case CircuitScriptParser.ID:
1129
1140
  this.enterOuterAlt(localContext, 1);
1130
1141
  {
1131
- this.state = 258;
1142
+ this.state = 265;
1132
1143
  this.expression();
1133
1144
  }
1134
1145
  break;
@@ -1136,7 +1147,7 @@ class CircuitScriptParser extends antlr.Parser {
1136
1147
  case CircuitScriptParser.STRING_VALUE:
1137
1148
  this.enterOuterAlt(localContext, 2);
1138
1149
  {
1139
- this.state = 259;
1150
+ this.state = 266;
1140
1151
  this.at_block_pin_expr();
1141
1152
  }
1142
1153
  break;
@@ -1164,11 +1175,11 @@ class CircuitScriptParser extends antlr.Parser {
1164
1175
  try {
1165
1176
  this.enterOuterAlt(localContext, 1);
1166
1177
  {
1167
- this.state = 262;
1178
+ this.state = 269;
1168
1179
  this.pin_select_expr2();
1169
- this.state = 263;
1180
+ this.state = 270;
1170
1181
  this.match(CircuitScriptParser.T__0);
1171
- this.state = 266;
1182
+ this.state = 273;
1172
1183
  this.errorHandler.sync(this);
1173
1184
  switch (this.tokenStream.LA(1)) {
1174
1185
  case CircuitScriptParser.T__3:
@@ -1183,19 +1194,20 @@ class CircuitScriptParser extends antlr.Parser {
1183
1194
  case CircuitScriptParser.Parallel:
1184
1195
  case CircuitScriptParser.Define:
1185
1196
  case CircuitScriptParser.Import:
1197
+ case CircuitScriptParser.If:
1186
1198
  case CircuitScriptParser.Frame:
1187
1199
  case CircuitScriptParser.Addition:
1188
1200
  case CircuitScriptParser.Divide:
1189
1201
  case CircuitScriptParser.NOT_CONNECTED:
1190
1202
  case CircuitScriptParser.ID:
1191
1203
  {
1192
- this.state = 264;
1204
+ this.state = 271;
1193
1205
  this.at_block_pin_expression_simple();
1194
1206
  }
1195
1207
  break;
1196
1208
  case CircuitScriptParser.NEWLINE:
1197
1209
  {
1198
- this.state = 265;
1210
+ this.state = 272;
1199
1211
  this.at_block_pin_expression_complex();
1200
1212
  }
1201
1213
  break;
@@ -1224,7 +1236,7 @@ class CircuitScriptParser extends antlr.Parser {
1224
1236
  try {
1225
1237
  this.enterOuterAlt(localContext, 1);
1226
1238
  {
1227
- this.state = 270;
1239
+ this.state = 277;
1228
1240
  this.errorHandler.sync(this);
1229
1241
  switch (this.tokenStream.LA(1)) {
1230
1242
  case CircuitScriptParser.T__3:
@@ -1239,18 +1251,19 @@ class CircuitScriptParser extends antlr.Parser {
1239
1251
  case CircuitScriptParser.Parallel:
1240
1252
  case CircuitScriptParser.Define:
1241
1253
  case CircuitScriptParser.Import:
1254
+ case CircuitScriptParser.If:
1242
1255
  case CircuitScriptParser.Frame:
1243
1256
  case CircuitScriptParser.Addition:
1244
1257
  case CircuitScriptParser.Divide:
1245
1258
  case CircuitScriptParser.ID:
1246
1259
  {
1247
- this.state = 268;
1260
+ this.state = 275;
1248
1261
  this.expression();
1249
1262
  }
1250
1263
  break;
1251
1264
  case CircuitScriptParser.NOT_CONNECTED:
1252
1265
  {
1253
- this.state = 269;
1266
+ this.state = 276;
1254
1267
  this.match(CircuitScriptParser.NOT_CONNECTED);
1255
1268
  }
1256
1269
  break;
@@ -1280,21 +1293,21 @@ class CircuitScriptParser extends antlr.Parser {
1280
1293
  try {
1281
1294
  this.enterOuterAlt(localContext, 1);
1282
1295
  {
1283
- this.state = 272;
1296
+ this.state = 279;
1284
1297
  this.match(CircuitScriptParser.NEWLINE);
1285
- this.state = 273;
1298
+ this.state = 280;
1286
1299
  this.match(CircuitScriptParser.INDENT);
1287
- this.state = 276;
1300
+ this.state = 283;
1288
1301
  this.errorHandler.sync(this);
1289
1302
  _la = this.tokenStream.LA(1);
1290
1303
  do {
1291
1304
  {
1292
- this.state = 276;
1305
+ this.state = 283;
1293
1306
  this.errorHandler.sync(this);
1294
1307
  switch (this.tokenStream.LA(1)) {
1295
1308
  case CircuitScriptParser.NEWLINE:
1296
1309
  {
1297
- this.state = 274;
1310
+ this.state = 281;
1298
1311
  this.match(CircuitScriptParser.NEWLINE);
1299
1312
  }
1300
1313
  break;
@@ -1310,12 +1323,13 @@ class CircuitScriptParser extends antlr.Parser {
1310
1323
  case CircuitScriptParser.Parallel:
1311
1324
  case CircuitScriptParser.Define:
1312
1325
  case CircuitScriptParser.Import:
1326
+ case CircuitScriptParser.If:
1313
1327
  case CircuitScriptParser.Frame:
1314
1328
  case CircuitScriptParser.Addition:
1315
1329
  case CircuitScriptParser.Divide:
1316
1330
  case CircuitScriptParser.ID:
1317
1331
  {
1318
- this.state = 275;
1332
+ this.state = 282;
1319
1333
  this.expression();
1320
1334
  }
1321
1335
  break;
@@ -1323,11 +1337,11 @@ class CircuitScriptParser extends antlr.Parser {
1323
1337
  throw new antlr.NoViableAltException(this);
1324
1338
  }
1325
1339
  }
1326
- this.state = 278;
1340
+ this.state = 285;
1327
1341
  this.errorHandler.sync(this);
1328
1342
  _la = this.tokenStream.LA(1);
1329
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || _la === 37 || _la === 45);
1330
- this.state = 280;
1343
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
1344
+ this.state = 287;
1331
1345
  this.match(CircuitScriptParser.DEDENT);
1332
1346
  }
1333
1347
  }
@@ -1351,7 +1365,7 @@ class CircuitScriptParser extends antlr.Parser {
1351
1365
  try {
1352
1366
  this.enterOuterAlt(localContext, 1);
1353
1367
  {
1354
- this.state = 282;
1368
+ this.state = 289;
1355
1369
  this.match(CircuitScriptParser.Break);
1356
1370
  }
1357
1371
  }
@@ -1375,11 +1389,11 @@ class CircuitScriptParser extends antlr.Parser {
1375
1389
  try {
1376
1390
  this.enterOuterAlt(localContext, 1);
1377
1391
  {
1378
- this.state = 284;
1392
+ this.state = 291;
1379
1393
  this.atom_expr();
1380
- this.state = 285;
1394
+ this.state = 292;
1381
1395
  this.match(CircuitScriptParser.T__2);
1382
- this.state = 286;
1396
+ this.state = 293;
1383
1397
  this.data_expr(0);
1384
1398
  }
1385
1399
  }
@@ -1403,11 +1417,11 @@ class CircuitScriptParser extends antlr.Parser {
1403
1417
  try {
1404
1418
  this.enterOuterAlt(localContext, 1);
1405
1419
  {
1406
- this.state = 288;
1420
+ this.state = 295;
1407
1421
  this.match(CircuitScriptParser.ID);
1408
- this.state = 289;
1422
+ this.state = 296;
1409
1423
  this.match(CircuitScriptParser.T__2);
1410
- this.state = 290;
1424
+ this.state = 297;
1411
1425
  this.data_expr(0);
1412
1426
  }
1413
1427
  }
@@ -1431,46 +1445,46 @@ class CircuitScriptParser extends antlr.Parser {
1431
1445
  let _la;
1432
1446
  try {
1433
1447
  let alternative;
1434
- this.state = 315;
1448
+ this.state = 322;
1435
1449
  this.errorHandler.sync(this);
1436
1450
  switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context)) {
1437
1451
  case 1:
1438
1452
  this.enterOuterAlt(localContext, 1);
1439
1453
  {
1440
1454
  {
1441
- this.state = 292;
1455
+ this.state = 299;
1442
1456
  this.data_expr(0);
1443
- this.state = 297;
1457
+ this.state = 304;
1444
1458
  this.errorHandler.sync(this);
1445
1459
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context);
1446
1460
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1447
1461
  if (alternative === 1) {
1448
1462
  {
1449
1463
  {
1450
- this.state = 293;
1464
+ this.state = 300;
1451
1465
  this.match(CircuitScriptParser.T__1);
1452
- this.state = 294;
1466
+ this.state = 301;
1453
1467
  this.data_expr(0);
1454
1468
  }
1455
1469
  }
1456
1470
  }
1457
- this.state = 299;
1471
+ this.state = 306;
1458
1472
  this.errorHandler.sync(this);
1459
1473
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context);
1460
1474
  }
1461
- this.state = 304;
1475
+ this.state = 311;
1462
1476
  this.errorHandler.sync(this);
1463
1477
  _la = this.tokenStream.LA(1);
1464
1478
  while (_la === 2) {
1465
1479
  {
1466
1480
  {
1467
- this.state = 300;
1481
+ this.state = 307;
1468
1482
  this.match(CircuitScriptParser.T__1);
1469
- this.state = 301;
1483
+ this.state = 308;
1470
1484
  this.keyword_assignment_expr();
1471
1485
  }
1472
1486
  }
1473
- this.state = 306;
1487
+ this.state = 313;
1474
1488
  this.errorHandler.sync(this);
1475
1489
  _la = this.tokenStream.LA(1);
1476
1490
  }
@@ -1481,21 +1495,21 @@ class CircuitScriptParser extends antlr.Parser {
1481
1495
  this.enterOuterAlt(localContext, 2);
1482
1496
  {
1483
1497
  {
1484
- this.state = 307;
1498
+ this.state = 314;
1485
1499
  this.keyword_assignment_expr();
1486
- this.state = 312;
1500
+ this.state = 319;
1487
1501
  this.errorHandler.sync(this);
1488
1502
  _la = this.tokenStream.LA(1);
1489
1503
  while (_la === 2) {
1490
1504
  {
1491
1505
  {
1492
- this.state = 308;
1506
+ this.state = 315;
1493
1507
  this.match(CircuitScriptParser.T__1);
1494
- this.state = 309;
1508
+ this.state = 316;
1495
1509
  this.keyword_assignment_expr();
1496
1510
  }
1497
1511
  }
1498
- this.state = 314;
1512
+ this.state = 321;
1499
1513
  this.errorHandler.sync(this);
1500
1514
  _la = this.tokenStream.LA(1);
1501
1515
  }
@@ -1524,11 +1538,11 @@ class CircuitScriptParser extends antlr.Parser {
1524
1538
  try {
1525
1539
  this.enterOuterAlt(localContext, 1);
1526
1540
  {
1527
- this.state = 317;
1541
+ this.state = 324;
1528
1542
  this.atom_expr();
1529
- this.state = 318;
1543
+ this.state = 325;
1530
1544
  this.match(CircuitScriptParser.T__2);
1531
- this.state = 319;
1545
+ this.state = 326;
1532
1546
  this.data_expr(0);
1533
1547
  }
1534
1548
  }
@@ -1552,13 +1566,13 @@ class CircuitScriptParser extends antlr.Parser {
1552
1566
  try {
1553
1567
  this.enterOuterAlt(localContext, 1);
1554
1568
  {
1555
- this.state = 321;
1569
+ this.state = 328;
1556
1570
  this.match(CircuitScriptParser.T__3);
1557
- this.state = 322;
1571
+ this.state = 329;
1558
1572
  this.match(CircuitScriptParser.ID);
1559
- this.state = 323;
1573
+ this.state = 330;
1560
1574
  this.match(CircuitScriptParser.T__2);
1561
- this.state = 324;
1575
+ this.state = 331;
1562
1576
  this.data_expr(0);
1563
1577
  }
1564
1578
  }
@@ -1591,7 +1605,7 @@ class CircuitScriptParser extends antlr.Parser {
1591
1605
  let alternative;
1592
1606
  this.enterOuterAlt(localContext, 1);
1593
1607
  {
1594
- this.state = 341;
1608
+ this.state = 348;
1595
1609
  this.errorHandler.sync(this);
1596
1610
  switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context)) {
1597
1611
  case 1:
@@ -1599,11 +1613,11 @@ class CircuitScriptParser extends antlr.Parser {
1599
1613
  localContext = new RoundedBracketsExprContext(localContext);
1600
1614
  this.context = localContext;
1601
1615
  previousContext = localContext;
1602
- this.state = 327;
1616
+ this.state = 334;
1603
1617
  this.match(CircuitScriptParser.OPEN_PAREN);
1604
- this.state = 328;
1618
+ this.state = 335;
1605
1619
  this.data_expr(0);
1606
- this.state = 329;
1620
+ this.state = 336;
1607
1621
  this.match(CircuitScriptParser.CLOSE_PAREN);
1608
1622
  }
1609
1623
  break;
@@ -1612,7 +1626,7 @@ class CircuitScriptParser extends antlr.Parser {
1612
1626
  localContext = new ValueAtomExprContext(localContext);
1613
1627
  this.context = localContext;
1614
1628
  previousContext = localContext;
1615
- this.state = 333;
1629
+ this.state = 340;
1616
1630
  this.errorHandler.sync(this);
1617
1631
  switch (this.tokenStream.LA(1)) {
1618
1632
  case CircuitScriptParser.T__5:
@@ -1624,13 +1638,13 @@ class CircuitScriptParser extends antlr.Parser {
1624
1638
  case CircuitScriptParser.STRING_VALUE:
1625
1639
  case CircuitScriptParser.PERCENTAGE_VALUE:
1626
1640
  {
1627
- this.state = 331;
1641
+ this.state = 338;
1628
1642
  this.value_expr();
1629
1643
  }
1630
1644
  break;
1631
1645
  case CircuitScriptParser.ID:
1632
1646
  {
1633
- this.state = 332;
1647
+ this.state = 339;
1634
1648
  this.atom_expr();
1635
1649
  }
1636
1650
  break;
@@ -1644,10 +1658,10 @@ class CircuitScriptParser extends antlr.Parser {
1644
1658
  localContext = new UnaryOperatorExprContext(localContext);
1645
1659
  this.context = localContext;
1646
1660
  previousContext = localContext;
1647
- this.state = 335;
1661
+ this.state = 342;
1648
1662
  this.unary_operator();
1649
- this.state = 336;
1650
- this.data_expr(7);
1663
+ this.state = 343;
1664
+ this.data_expr(8);
1651
1665
  }
1652
1666
  break;
1653
1667
  case 4:
@@ -1655,7 +1669,7 @@ class CircuitScriptParser extends antlr.Parser {
1655
1669
  localContext = new DataExprContext(localContext);
1656
1670
  this.context = localContext;
1657
1671
  previousContext = localContext;
1658
- this.state = 338;
1672
+ this.state = 345;
1659
1673
  this.create_component_expr();
1660
1674
  }
1661
1675
  break;
@@ -1664,7 +1678,7 @@ class CircuitScriptParser extends antlr.Parser {
1664
1678
  localContext = new DataExprContext(localContext);
1665
1679
  this.context = localContext;
1666
1680
  previousContext = localContext;
1667
- this.state = 339;
1681
+ this.state = 346;
1668
1682
  this.create_graphic_expr();
1669
1683
  }
1670
1684
  break;
@@ -1673,13 +1687,13 @@ class CircuitScriptParser extends antlr.Parser {
1673
1687
  localContext = new FunctionCallExprContext(localContext);
1674
1688
  this.context = localContext;
1675
1689
  previousContext = localContext;
1676
- this.state = 340;
1690
+ this.state = 347;
1677
1691
  this.function_call_expr();
1678
1692
  }
1679
1693
  break;
1680
1694
  }
1681
1695
  this.context.stop = this.tokenStream.LT(-1);
1682
- this.state = 355;
1696
+ this.state = 365;
1683
1697
  this.errorHandler.sync(this);
1684
1698
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 34, this.context);
1685
1699
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
@@ -1689,69 +1703,90 @@ class CircuitScriptParser extends antlr.Parser {
1689
1703
  }
1690
1704
  previousContext = localContext;
1691
1705
  {
1692
- this.state = 353;
1706
+ this.state = 363;
1693
1707
  this.errorHandler.sync(this);
1694
1708
  switch (this.interpreter.adaptivePredict(this.tokenStream, 33, this.context)) {
1695
1709
  case 1:
1696
1710
  {
1697
1711
  localContext = new MultiplyExprContext(new Data_exprContext(parentContext, parentState));
1698
1712
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1699
- this.state = 343;
1700
- if (!(this.precpred(this.context, 6))) {
1701
- throw this.createFailedPredicateException("this.precpred(this.context, 6)");
1713
+ this.state = 350;
1714
+ if (!(this.precpred(this.context, 7))) {
1715
+ throw this.createFailedPredicateException("this.precpred(this.context, 7)");
1702
1716
  }
1703
- this.state = 344;
1717
+ this.state = 351;
1704
1718
  _la = this.tokenStream.LA(1);
1705
- if (!(_la === 31 || _la === 32)) {
1719
+ if (!(_la === 38 || _la === 39)) {
1706
1720
  this.errorHandler.recoverInline(this);
1707
1721
  }
1708
1722
  else {
1709
1723
  this.errorHandler.reportMatch(this);
1710
1724
  this.consume();
1711
1725
  }
1712
- this.state = 345;
1713
- this.data_expr(7);
1726
+ this.state = 352;
1727
+ this.data_expr(8);
1714
1728
  }
1715
1729
  break;
1716
1730
  case 2:
1717
1731
  {
1718
1732
  localContext = new AdditionExprContext(new Data_exprContext(parentContext, parentState));
1719
1733
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1720
- this.state = 346;
1721
- if (!(this.precpred(this.context, 5))) {
1722
- throw this.createFailedPredicateException("this.precpred(this.context, 5)");
1734
+ this.state = 353;
1735
+ if (!(this.precpred(this.context, 6))) {
1736
+ throw this.createFailedPredicateException("this.precpred(this.context, 6)");
1723
1737
  }
1724
- this.state = 347;
1738
+ this.state = 354;
1725
1739
  _la = this.tokenStream.LA(1);
1726
- if (!(_la === 29 || _la === 30)) {
1740
+ if (!(_la === 36 || _la === 37)) {
1727
1741
  this.errorHandler.recoverInline(this);
1728
1742
  }
1729
1743
  else {
1730
1744
  this.errorHandler.reportMatch(this);
1731
1745
  this.consume();
1732
1746
  }
1733
- this.state = 348;
1734
- this.data_expr(6);
1747
+ this.state = 355;
1748
+ this.data_expr(7);
1735
1749
  }
1736
1750
  break;
1737
1751
  case 3:
1738
1752
  {
1739
1753
  localContext = new BinaryOperatorExprContext(new Data_exprContext(parentContext, parentState));
1740
1754
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1741
- this.state = 349;
1755
+ this.state = 356;
1756
+ if (!(this.precpred(this.context, 5))) {
1757
+ throw this.createFailedPredicateException("this.precpred(this.context, 5)");
1758
+ }
1759
+ this.state = 357;
1760
+ this.binary_operator();
1761
+ this.state = 358;
1762
+ this.data_expr(6);
1763
+ }
1764
+ break;
1765
+ case 4:
1766
+ {
1767
+ localContext = new LogicalOperatorExprContext(new Data_exprContext(parentContext, parentState));
1768
+ this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1769
+ this.state = 360;
1742
1770
  if (!(this.precpred(this.context, 4))) {
1743
1771
  throw this.createFailedPredicateException("this.precpred(this.context, 4)");
1744
1772
  }
1745
- this.state = 350;
1746
- this.binary_operator();
1747
- this.state = 351;
1773
+ this.state = 361;
1774
+ _la = this.tokenStream.LA(1);
1775
+ if (!(_la === 34 || _la === 35)) {
1776
+ this.errorHandler.recoverInline(this);
1777
+ }
1778
+ else {
1779
+ this.errorHandler.reportMatch(this);
1780
+ this.consume();
1781
+ }
1782
+ this.state = 362;
1748
1783
  this.data_expr(5);
1749
1784
  }
1750
1785
  break;
1751
1786
  }
1752
1787
  }
1753
1788
  }
1754
- this.state = 357;
1789
+ this.state = 367;
1755
1790
  this.errorHandler.sync(this);
1756
1791
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 34, this.context);
1757
1792
  }
@@ -1778,9 +1813,9 @@ class CircuitScriptParser extends antlr.Parser {
1778
1813
  try {
1779
1814
  this.enterOuterAlt(localContext, 1);
1780
1815
  {
1781
- this.state = 358;
1816
+ this.state = 368;
1782
1817
  _la = this.tokenStream.LA(1);
1783
- if (!(_la === 27 || _la === 28)) {
1818
+ if (!(((((_la - 28)) & ~0x1F) === 0 && ((1 << (_la - 28)) & 63) !== 0))) {
1784
1819
  this.errorHandler.recoverInline(this);
1785
1820
  }
1786
1821
  else {
@@ -1810,9 +1845,9 @@ class CircuitScriptParser extends antlr.Parser {
1810
1845
  try {
1811
1846
  this.enterOuterAlt(localContext, 1);
1812
1847
  {
1813
- this.state = 360;
1848
+ this.state = 370;
1814
1849
  _la = this.tokenStream.LA(1);
1815
- if (!(_la === 25 || _la === 30)) {
1850
+ if (!(_la === 26 || _la === 37)) {
1816
1851
  this.errorHandler.recoverInline(this);
1817
1852
  }
1818
1853
  else {
@@ -1840,7 +1875,7 @@ class CircuitScriptParser extends antlr.Parser {
1840
1875
  this.enterRule(localContext, 62, CircuitScriptParser.RULE_value_expr);
1841
1876
  let _la;
1842
1877
  try {
1843
- this.state = 367;
1878
+ this.state = 377;
1844
1879
  this.errorHandler.sync(this);
1845
1880
  switch (this.tokenStream.LA(1)) {
1846
1881
  case CircuitScriptParser.Minus:
@@ -1853,18 +1888,18 @@ class CircuitScriptParser extends antlr.Parser {
1853
1888
  this.enterOuterAlt(localContext, 1);
1854
1889
  {
1855
1890
  {
1856
- this.state = 363;
1891
+ this.state = 373;
1857
1892
  this.errorHandler.sync(this);
1858
1893
  _la = this.tokenStream.LA(1);
1859
- if (_la === 30) {
1894
+ if (_la === 37) {
1860
1895
  {
1861
- this.state = 362;
1896
+ this.state = 372;
1862
1897
  this.match(CircuitScriptParser.Minus);
1863
1898
  }
1864
1899
  }
1865
- this.state = 365;
1900
+ this.state = 375;
1866
1901
  _la = this.tokenStream.LA(1);
1867
- if (!(((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 125) !== 0))) {
1902
+ if (!(((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 125) !== 0))) {
1868
1903
  this.errorHandler.recoverInline(this);
1869
1904
  }
1870
1905
  else {
@@ -1877,7 +1912,7 @@ class CircuitScriptParser extends antlr.Parser {
1877
1912
  case CircuitScriptParser.T__5:
1878
1913
  this.enterOuterAlt(localContext, 2);
1879
1914
  {
1880
- this.state = 366;
1915
+ this.state = 376;
1881
1916
  this.blank_expr();
1882
1917
  }
1883
1918
  break;
@@ -1906,40 +1941,40 @@ class CircuitScriptParser extends antlr.Parser {
1906
1941
  try {
1907
1942
  this.enterOuterAlt(localContext, 1);
1908
1943
  {
1909
- this.state = 369;
1944
+ this.state = 379;
1910
1945
  this.match(CircuitScriptParser.Define);
1911
- this.state = 370;
1946
+ this.state = 380;
1912
1947
  this.match(CircuitScriptParser.ID);
1913
- this.state = 371;
1948
+ this.state = 381;
1914
1949
  this.match(CircuitScriptParser.OPEN_PAREN);
1915
- this.state = 373;
1950
+ this.state = 383;
1916
1951
  this.errorHandler.sync(this);
1917
1952
  _la = this.tokenStream.LA(1);
1918
- if (_la === 37) {
1953
+ if (_la === 44) {
1919
1954
  {
1920
- this.state = 372;
1955
+ this.state = 382;
1921
1956
  this.function_args_expr();
1922
1957
  }
1923
1958
  }
1924
- this.state = 375;
1959
+ this.state = 385;
1925
1960
  this.match(CircuitScriptParser.CLOSE_PAREN);
1926
- this.state = 376;
1961
+ this.state = 386;
1927
1962
  this.match(CircuitScriptParser.T__0);
1928
- this.state = 377;
1963
+ this.state = 387;
1929
1964
  this.match(CircuitScriptParser.NEWLINE);
1930
- this.state = 378;
1965
+ this.state = 388;
1931
1966
  this.match(CircuitScriptParser.INDENT);
1932
- this.state = 381;
1967
+ this.state = 391;
1933
1968
  this.errorHandler.sync(this);
1934
1969
  _la = this.tokenStream.LA(1);
1935
1970
  do {
1936
1971
  {
1937
- this.state = 381;
1972
+ this.state = 391;
1938
1973
  this.errorHandler.sync(this);
1939
1974
  switch (this.tokenStream.LA(1)) {
1940
1975
  case CircuitScriptParser.NEWLINE:
1941
1976
  {
1942
- this.state = 379;
1977
+ this.state = 389;
1943
1978
  this.match(CircuitScriptParser.NEWLINE);
1944
1979
  }
1945
1980
  break;
@@ -1956,12 +1991,13 @@ class CircuitScriptParser extends antlr.Parser {
1956
1991
  case CircuitScriptParser.Return:
1957
1992
  case CircuitScriptParser.Define:
1958
1993
  case CircuitScriptParser.Import:
1994
+ case CircuitScriptParser.If:
1959
1995
  case CircuitScriptParser.Frame:
1960
1996
  case CircuitScriptParser.Addition:
1961
1997
  case CircuitScriptParser.Divide:
1962
1998
  case CircuitScriptParser.ID:
1963
1999
  {
1964
- this.state = 380;
2000
+ this.state = 390;
1965
2001
  this.function_expr();
1966
2002
  }
1967
2003
  break;
@@ -1969,11 +2005,11 @@ class CircuitScriptParser extends antlr.Parser {
1969
2005
  throw new antlr.NoViableAltException(this);
1970
2006
  }
1971
2007
  }
1972
- this.state = 383;
2008
+ this.state = 393;
1973
2009
  this.errorHandler.sync(this);
1974
2010
  _la = this.tokenStream.LA(1);
1975
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2768216848) !== 0) || _la === 37 || _la === 45);
1976
- this.state = 385;
2011
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 167748368) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
2012
+ this.state = 395;
1977
2013
  this.match(CircuitScriptParser.DEDENT);
1978
2014
  }
1979
2015
  }
@@ -1995,7 +2031,7 @@ class CircuitScriptParser extends antlr.Parser {
1995
2031
  let localContext = new Function_exprContext(this.context, this.state);
1996
2032
  this.enterRule(localContext, 66, CircuitScriptParser.RULE_function_expr);
1997
2033
  try {
1998
- this.state = 389;
2034
+ this.state = 399;
1999
2035
  this.errorHandler.sync(this);
2000
2036
  switch (this.tokenStream.LA(1)) {
2001
2037
  case CircuitScriptParser.T__3:
@@ -2010,20 +2046,21 @@ class CircuitScriptParser extends antlr.Parser {
2010
2046
  case CircuitScriptParser.Parallel:
2011
2047
  case CircuitScriptParser.Define:
2012
2048
  case CircuitScriptParser.Import:
2049
+ case CircuitScriptParser.If:
2013
2050
  case CircuitScriptParser.Frame:
2014
2051
  case CircuitScriptParser.Addition:
2015
2052
  case CircuitScriptParser.Divide:
2016
2053
  case CircuitScriptParser.ID:
2017
2054
  this.enterOuterAlt(localContext, 1);
2018
2055
  {
2019
- this.state = 387;
2056
+ this.state = 397;
2020
2057
  this.expression();
2021
2058
  }
2022
2059
  break;
2023
2060
  case CircuitScriptParser.Return:
2024
2061
  this.enterOuterAlt(localContext, 2);
2025
2062
  {
2026
- this.state = 388;
2063
+ this.state = 398;
2027
2064
  this.function_return_expr();
2028
2065
  }
2029
2066
  break;
@@ -2051,49 +2088,49 @@ class CircuitScriptParser extends antlr.Parser {
2051
2088
  let _la;
2052
2089
  try {
2053
2090
  let alternative;
2054
- this.state = 420;
2091
+ this.state = 430;
2055
2092
  this.errorHandler.sync(this);
2056
2093
  switch (this.interpreter.adaptivePredict(this.tokenStream, 44, this.context)) {
2057
2094
  case 1:
2058
2095
  this.enterOuterAlt(localContext, 1);
2059
2096
  {
2060
- this.state = 391;
2097
+ this.state = 401;
2061
2098
  this.match(CircuitScriptParser.ID);
2062
- this.state = 396;
2099
+ this.state = 406;
2063
2100
  this.errorHandler.sync(this);
2064
2101
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 41, this.context);
2065
2102
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2066
2103
  if (alternative === 1) {
2067
2104
  {
2068
2105
  {
2069
- this.state = 392;
2106
+ this.state = 402;
2070
2107
  this.match(CircuitScriptParser.T__1);
2071
- this.state = 393;
2108
+ this.state = 403;
2072
2109
  this.match(CircuitScriptParser.ID);
2073
2110
  }
2074
2111
  }
2075
2112
  }
2076
- this.state = 398;
2113
+ this.state = 408;
2077
2114
  this.errorHandler.sync(this);
2078
2115
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 41, this.context);
2079
2116
  }
2080
- this.state = 405;
2117
+ this.state = 415;
2081
2118
  this.errorHandler.sync(this);
2082
2119
  _la = this.tokenStream.LA(1);
2083
2120
  while (_la === 2) {
2084
2121
  {
2085
2122
  {
2086
- this.state = 399;
2123
+ this.state = 409;
2087
2124
  this.match(CircuitScriptParser.T__1);
2088
- this.state = 400;
2125
+ this.state = 410;
2089
2126
  this.match(CircuitScriptParser.ID);
2090
- this.state = 401;
2127
+ this.state = 411;
2091
2128
  this.match(CircuitScriptParser.T__2);
2092
- this.state = 402;
2129
+ this.state = 412;
2093
2130
  this.value_expr();
2094
2131
  }
2095
2132
  }
2096
- this.state = 407;
2133
+ this.state = 417;
2097
2134
  this.errorHandler.sync(this);
2098
2135
  _la = this.tokenStream.LA(1);
2099
2136
  }
@@ -2102,29 +2139,29 @@ class CircuitScriptParser extends antlr.Parser {
2102
2139
  case 2:
2103
2140
  this.enterOuterAlt(localContext, 2);
2104
2141
  {
2105
- this.state = 408;
2142
+ this.state = 418;
2106
2143
  this.match(CircuitScriptParser.ID);
2107
- this.state = 409;
2144
+ this.state = 419;
2108
2145
  this.match(CircuitScriptParser.T__2);
2109
- this.state = 410;
2146
+ this.state = 420;
2110
2147
  this.value_expr();
2111
- this.state = 417;
2148
+ this.state = 427;
2112
2149
  this.errorHandler.sync(this);
2113
2150
  _la = this.tokenStream.LA(1);
2114
2151
  while (_la === 2) {
2115
2152
  {
2116
2153
  {
2117
- this.state = 411;
2154
+ this.state = 421;
2118
2155
  this.match(CircuitScriptParser.T__1);
2119
- this.state = 412;
2156
+ this.state = 422;
2120
2157
  this.match(CircuitScriptParser.ID);
2121
- this.state = 413;
2158
+ this.state = 423;
2122
2159
  this.match(CircuitScriptParser.T__2);
2123
- this.state = 414;
2160
+ this.state = 424;
2124
2161
  this.value_expr();
2125
2162
  }
2126
2163
  }
2127
- this.state = 419;
2164
+ this.state = 429;
2128
2165
  this.errorHandler.sync(this);
2129
2166
  _la = this.tokenStream.LA(1);
2130
2167
  }
@@ -2153,23 +2190,23 @@ class CircuitScriptParser extends antlr.Parser {
2153
2190
  let alternative;
2154
2191
  this.enterOuterAlt(localContext, 1);
2155
2192
  {
2156
- this.state = 422;
2193
+ this.state = 432;
2157
2194
  this.match(CircuitScriptParser.ID);
2158
- this.state = 427;
2195
+ this.state = 437;
2159
2196
  this.errorHandler.sync(this);
2160
2197
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 45, this.context);
2161
2198
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2162
2199
  if (alternative === 1) {
2163
2200
  {
2164
2201
  {
2165
- this.state = 423;
2202
+ this.state = 433;
2166
2203
  this.match(CircuitScriptParser.T__4);
2167
- this.state = 424;
2204
+ this.state = 434;
2168
2205
  this.match(CircuitScriptParser.ID);
2169
2206
  }
2170
2207
  }
2171
2208
  }
2172
- this.state = 429;
2209
+ this.state = 439;
2173
2210
  this.errorHandler.sync(this);
2174
2211
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 45, this.context);
2175
2212
  }
@@ -2194,33 +2231,33 @@ class CircuitScriptParser extends antlr.Parser {
2194
2231
  this.enterRule(localContext, 72, CircuitScriptParser.RULE_trailer_expr);
2195
2232
  let _la;
2196
2233
  try {
2197
- this.state = 437;
2234
+ this.state = 447;
2198
2235
  this.errorHandler.sync(this);
2199
2236
  switch (this.tokenStream.LA(1)) {
2200
2237
  case CircuitScriptParser.OPEN_PAREN:
2201
2238
  this.enterOuterAlt(localContext, 1);
2202
2239
  {
2203
- this.state = 430;
2240
+ this.state = 440;
2204
2241
  this.match(CircuitScriptParser.OPEN_PAREN);
2205
- this.state = 432;
2242
+ this.state = 442;
2206
2243
  this.errorHandler.sync(this);
2207
2244
  _la = this.tokenStream.LA(1);
2208
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3791651904) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1017) !== 0)) {
2245
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109952) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 16279) !== 0)) {
2209
2246
  {
2210
- this.state = 431;
2247
+ this.state = 441;
2211
2248
  this.parameters();
2212
2249
  }
2213
2250
  }
2214
- this.state = 434;
2251
+ this.state = 444;
2215
2252
  this.match(CircuitScriptParser.CLOSE_PAREN);
2216
2253
  }
2217
2254
  break;
2218
2255
  case CircuitScriptParser.T__4:
2219
2256
  this.enterOuterAlt(localContext, 2);
2220
2257
  {
2221
- this.state = 435;
2258
+ this.state = 445;
2222
2259
  this.match(CircuitScriptParser.T__4);
2223
- this.state = 436;
2260
+ this.state = 446;
2224
2261
  this.match(CircuitScriptParser.ID);
2225
2262
  }
2226
2263
  break;
@@ -2250,18 +2287,18 @@ class CircuitScriptParser extends antlr.Parser {
2250
2287
  let alternative;
2251
2288
  this.enterOuterAlt(localContext, 1);
2252
2289
  {
2253
- this.state = 440;
2290
+ this.state = 450;
2254
2291
  this.errorHandler.sync(this);
2255
2292
  _la = this.tokenStream.LA(1);
2256
- if (_la === 29 || _la === 31) {
2293
+ if (_la === 36 || _la === 38) {
2257
2294
  {
2258
- this.state = 439;
2295
+ this.state = 449;
2259
2296
  this.net_namespace_expr();
2260
2297
  }
2261
2298
  }
2262
- this.state = 442;
2299
+ this.state = 452;
2263
2300
  this.match(CircuitScriptParser.ID);
2264
- this.state = 444;
2301
+ this.state = 454;
2265
2302
  this.errorHandler.sync(this);
2266
2303
  alternative = 1;
2267
2304
  do {
@@ -2269,7 +2306,7 @@ class CircuitScriptParser extends antlr.Parser {
2269
2306
  case 1:
2270
2307
  {
2271
2308
  {
2272
- this.state = 443;
2309
+ this.state = 453;
2273
2310
  this.trailer_expr();
2274
2311
  }
2275
2312
  }
@@ -2277,7 +2314,7 @@ class CircuitScriptParser extends antlr.Parser {
2277
2314
  default:
2278
2315
  throw new antlr.NoViableAltException(this);
2279
2316
  }
2280
- this.state = 446;
2317
+ this.state = 456;
2281
2318
  this.errorHandler.sync(this);
2282
2319
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 49, this.context);
2283
2320
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
@@ -2304,23 +2341,23 @@ class CircuitScriptParser extends antlr.Parser {
2304
2341
  try {
2305
2342
  this.enterOuterAlt(localContext, 1);
2306
2343
  {
2307
- this.state = 449;
2344
+ this.state = 459;
2308
2345
  this.errorHandler.sync(this);
2309
2346
  _la = this.tokenStream.LA(1);
2310
- if (_la === 29) {
2347
+ if (_la === 36) {
2311
2348
  {
2312
- this.state = 448;
2349
+ this.state = 458;
2313
2350
  this.match(CircuitScriptParser.Addition);
2314
2351
  }
2315
2352
  }
2316
- this.state = 451;
2353
+ this.state = 461;
2317
2354
  this.match(CircuitScriptParser.Divide);
2318
- this.state = 453;
2355
+ this.state = 463;
2319
2356
  this.errorHandler.sync(this);
2320
2357
  switch (this.interpreter.adaptivePredict(this.tokenStream, 51, this.context)) {
2321
2358
  case 1:
2322
2359
  {
2323
- this.state = 452;
2360
+ this.state = 462;
2324
2361
  this.data_expr(0);
2325
2362
  }
2326
2363
  break;
@@ -2347,9 +2384,9 @@ class CircuitScriptParser extends antlr.Parser {
2347
2384
  try {
2348
2385
  this.enterOuterAlt(localContext, 1);
2349
2386
  {
2350
- this.state = 455;
2387
+ this.state = 465;
2351
2388
  this.match(CircuitScriptParser.Return);
2352
- this.state = 456;
2389
+ this.state = 466;
2353
2390
  this.data_expr(0);
2354
2391
  }
2355
2392
  }
@@ -2374,27 +2411,27 @@ class CircuitScriptParser extends antlr.Parser {
2374
2411
  try {
2375
2412
  this.enterOuterAlt(localContext, 1);
2376
2413
  {
2377
- this.state = 458;
2414
+ this.state = 468;
2378
2415
  this.match(CircuitScriptParser.Create);
2379
- this.state = 459;
2416
+ this.state = 469;
2380
2417
  this.match(CircuitScriptParser.Component);
2381
- this.state = 460;
2418
+ this.state = 470;
2382
2419
  this.match(CircuitScriptParser.T__0);
2383
- this.state = 461;
2420
+ this.state = 471;
2384
2421
  this.match(CircuitScriptParser.NEWLINE);
2385
- this.state = 462;
2422
+ this.state = 472;
2386
2423
  this.match(CircuitScriptParser.INDENT);
2387
- this.state = 465;
2424
+ this.state = 475;
2388
2425
  this.errorHandler.sync(this);
2389
2426
  _la = this.tokenStream.LA(1);
2390
2427
  do {
2391
2428
  {
2392
- this.state = 465;
2429
+ this.state = 475;
2393
2430
  this.errorHandler.sync(this);
2394
2431
  switch (this.tokenStream.LA(1)) {
2395
2432
  case CircuitScriptParser.NEWLINE:
2396
2433
  {
2397
- this.state = 463;
2434
+ this.state = 473;
2398
2435
  this.match(CircuitScriptParser.NEWLINE);
2399
2436
  }
2400
2437
  break;
@@ -2402,7 +2439,7 @@ class CircuitScriptParser extends antlr.Parser {
2402
2439
  case CircuitScriptParser.INTEGER_VALUE:
2403
2440
  case CircuitScriptParser.STRING_VALUE:
2404
2441
  {
2405
- this.state = 464;
2442
+ this.state = 474;
2406
2443
  this.property_expr();
2407
2444
  }
2408
2445
  break;
@@ -2410,11 +2447,11 @@ class CircuitScriptParser extends antlr.Parser {
2410
2447
  throw new antlr.NoViableAltException(this);
2411
2448
  }
2412
2449
  }
2413
- this.state = 467;
2450
+ this.state = 477;
2414
2451
  this.errorHandler.sync(this);
2415
2452
  _la = this.tokenStream.LA(1);
2416
- } while (((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 275) !== 0));
2417
- this.state = 469;
2453
+ } while (((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 275) !== 0));
2454
+ this.state = 479;
2418
2455
  this.match(CircuitScriptParser.DEDENT);
2419
2456
  }
2420
2457
  }
@@ -2439,46 +2476,46 @@ class CircuitScriptParser extends antlr.Parser {
2439
2476
  try {
2440
2477
  this.enterOuterAlt(localContext, 1);
2441
2478
  {
2442
- this.state = 471;
2479
+ this.state = 481;
2443
2480
  this.match(CircuitScriptParser.Create);
2444
- this.state = 472;
2481
+ this.state = 482;
2445
2482
  this.match(CircuitScriptParser.Graphic);
2446
- this.state = 473;
2483
+ this.state = 483;
2447
2484
  this.match(CircuitScriptParser.T__0);
2448
- this.state = 474;
2485
+ this.state = 484;
2449
2486
  this.match(CircuitScriptParser.NEWLINE);
2450
- this.state = 475;
2487
+ this.state = 485;
2451
2488
  this.match(CircuitScriptParser.INDENT);
2452
- this.state = 478;
2489
+ this.state = 488;
2453
2490
  this.errorHandler.sync(this);
2454
2491
  _la = this.tokenStream.LA(1);
2455
2492
  do {
2456
2493
  {
2457
- this.state = 478;
2494
+ this.state = 488;
2458
2495
  this.errorHandler.sync(this);
2459
2496
  switch (this.tokenStream.LA(1)) {
2460
2497
  case CircuitScriptParser.NEWLINE:
2461
2498
  {
2462
- this.state = 476;
2499
+ this.state = 486;
2463
2500
  this.match(CircuitScriptParser.NEWLINE);
2464
2501
  }
2465
2502
  break;
2466
2503
  case CircuitScriptParser.Pin:
2467
2504
  case CircuitScriptParser.ID:
2468
2505
  {
2469
- this.state = 477;
2470
- this.sub_expr();
2506
+ this.state = 487;
2507
+ this.graphic_expr();
2471
2508
  }
2472
2509
  break;
2473
2510
  default:
2474
2511
  throw new antlr.NoViableAltException(this);
2475
2512
  }
2476
2513
  }
2477
- this.state = 480;
2514
+ this.state = 490;
2478
2515
  this.errorHandler.sync(this);
2479
2516
  _la = this.tokenStream.LA(1);
2480
- } while (((((_la - 14)) & ~0x1F) === 0 && ((1 << (_la - 14)) & 2155872257) !== 0));
2481
- this.state = 482;
2517
+ } while (_la === 14 || _la === 44 || _la === 52);
2518
+ this.state = 492;
2482
2519
  this.match(CircuitScriptParser.DEDENT);
2483
2520
  }
2484
2521
  }
@@ -2496,48 +2533,48 @@ class CircuitScriptParser extends antlr.Parser {
2496
2533
  }
2497
2534
  return localContext;
2498
2535
  }
2499
- sub_expr() {
2500
- let localContext = new Sub_exprContext(this.context, this.state);
2501
- this.enterRule(localContext, 84, CircuitScriptParser.RULE_sub_expr);
2536
+ graphic_expr() {
2537
+ let localContext = new Graphic_exprContext(this.context, this.state);
2538
+ this.enterRule(localContext, 84, CircuitScriptParser.RULE_graphic_expr);
2502
2539
  let _la;
2503
2540
  try {
2504
2541
  this.enterOuterAlt(localContext, 1);
2505
2542
  {
2506
- this.state = 484;
2543
+ this.state = 494;
2507
2544
  localContext._command = this.tokenStream.LT(1);
2508
2545
  _la = this.tokenStream.LA(1);
2509
- if (!(_la === 14 || _la === 37)) {
2546
+ if (!(_la === 14 || _la === 44)) {
2510
2547
  localContext._command = this.errorHandler.recoverInline(this);
2511
2548
  }
2512
2549
  else {
2513
2550
  this.errorHandler.reportMatch(this);
2514
2551
  this.consume();
2515
2552
  }
2516
- this.state = 486;
2553
+ this.state = 496;
2517
2554
  this.errorHandler.sync(this);
2518
2555
  _la = this.tokenStream.LA(1);
2519
2556
  if (_la === 1) {
2520
2557
  {
2521
- this.state = 485;
2558
+ this.state = 495;
2522
2559
  this.match(CircuitScriptParser.T__0);
2523
2560
  }
2524
2561
  }
2525
- this.state = 493;
2562
+ this.state = 503;
2526
2563
  this.errorHandler.sync(this);
2527
2564
  switch (this.interpreter.adaptivePredict(this.tokenStream, 57, this.context)) {
2528
2565
  case 1:
2529
2566
  {
2530
- this.state = 488;
2567
+ this.state = 498;
2531
2568
  this.parameters();
2532
2569
  }
2533
2570
  break;
2534
2571
  case 2:
2535
2572
  {
2536
- this.state = 489;
2573
+ this.state = 499;
2537
2574
  this.match(CircuitScriptParser.OPEN_PAREN);
2538
- this.state = 490;
2575
+ this.state = 500;
2539
2576
  this.parameters();
2540
- this.state = 491;
2577
+ this.state = 501;
2541
2578
  this.match(CircuitScriptParser.CLOSE_PAREN);
2542
2579
  }
2543
2580
  break;
@@ -2564,11 +2601,11 @@ class CircuitScriptParser extends antlr.Parser {
2564
2601
  try {
2565
2602
  this.enterOuterAlt(localContext, 1);
2566
2603
  {
2567
- this.state = 495;
2604
+ this.state = 505;
2568
2605
  this.property_key_expr();
2569
- this.state = 496;
2606
+ this.state = 506;
2570
2607
  this.match(CircuitScriptParser.T__0);
2571
- this.state = 497;
2608
+ this.state = 507;
2572
2609
  this.property_value_expr();
2573
2610
  }
2574
2611
  }
@@ -2593,9 +2630,9 @@ class CircuitScriptParser extends antlr.Parser {
2593
2630
  try {
2594
2631
  this.enterOuterAlt(localContext, 1);
2595
2632
  {
2596
- this.state = 499;
2633
+ this.state = 509;
2597
2634
  _la = this.tokenStream.LA(1);
2598
- if (!(((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 19) !== 0))) {
2635
+ if (!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 19) !== 0))) {
2599
2636
  this.errorHandler.recoverInline(this);
2600
2637
  }
2601
2638
  else {
@@ -2623,28 +2660,28 @@ class CircuitScriptParser extends antlr.Parser {
2623
2660
  this.enterRule(localContext, 90, CircuitScriptParser.RULE_property_value_expr);
2624
2661
  let _la;
2625
2662
  try {
2626
- this.state = 518;
2663
+ this.state = 528;
2627
2664
  this.errorHandler.sync(this);
2628
2665
  switch (this.tokenStream.LA(1)) {
2629
2666
  case CircuitScriptParser.NEWLINE:
2630
2667
  localContext = new Nested_propertiesContext(localContext);
2631
2668
  this.enterOuterAlt(localContext, 1);
2632
2669
  {
2633
- this.state = 501;
2670
+ this.state = 511;
2634
2671
  this.match(CircuitScriptParser.NEWLINE);
2635
- this.state = 502;
2672
+ this.state = 512;
2636
2673
  this.match(CircuitScriptParser.INDENT);
2637
- this.state = 505;
2674
+ this.state = 515;
2638
2675
  this.errorHandler.sync(this);
2639
2676
  _la = this.tokenStream.LA(1);
2640
2677
  do {
2641
2678
  {
2642
- this.state = 505;
2679
+ this.state = 515;
2643
2680
  this.errorHandler.sync(this);
2644
2681
  switch (this.tokenStream.LA(1)) {
2645
2682
  case CircuitScriptParser.NEWLINE:
2646
2683
  {
2647
- this.state = 503;
2684
+ this.state = 513;
2648
2685
  this.match(CircuitScriptParser.NEWLINE);
2649
2686
  }
2650
2687
  break;
@@ -2652,7 +2689,7 @@ class CircuitScriptParser extends antlr.Parser {
2652
2689
  case CircuitScriptParser.INTEGER_VALUE:
2653
2690
  case CircuitScriptParser.STRING_VALUE:
2654
2691
  {
2655
- this.state = 504;
2692
+ this.state = 514;
2656
2693
  this.property_expr();
2657
2694
  }
2658
2695
  break;
@@ -2660,11 +2697,11 @@ class CircuitScriptParser extends antlr.Parser {
2660
2697
  throw new antlr.NoViableAltException(this);
2661
2698
  }
2662
2699
  }
2663
- this.state = 507;
2700
+ this.state = 517;
2664
2701
  this.errorHandler.sync(this);
2665
2702
  _la = this.tokenStream.LA(1);
2666
- } while (((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 275) !== 0));
2667
- this.state = 509;
2703
+ } while (((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 275) !== 0));
2704
+ this.state = 519;
2668
2705
  this.match(CircuitScriptParser.DEDENT);
2669
2706
  }
2670
2707
  break;
@@ -2685,21 +2722,21 @@ class CircuitScriptParser extends antlr.Parser {
2685
2722
  localContext = new Single_line_propertyContext(localContext);
2686
2723
  this.enterOuterAlt(localContext, 2);
2687
2724
  {
2688
- this.state = 510;
2725
+ this.state = 520;
2689
2726
  this.data_expr(0);
2690
- this.state = 515;
2727
+ this.state = 525;
2691
2728
  this.errorHandler.sync(this);
2692
2729
  _la = this.tokenStream.LA(1);
2693
2730
  while (_la === 2) {
2694
2731
  {
2695
2732
  {
2696
- this.state = 511;
2733
+ this.state = 521;
2697
2734
  this.match(CircuitScriptParser.T__1);
2698
- this.state = 512;
2735
+ this.state = 522;
2699
2736
  this.data_expr(0);
2700
2737
  }
2701
2738
  }
2702
- this.state = 517;
2739
+ this.state = 527;
2703
2740
  this.errorHandler.sync(this);
2704
2741
  _la = this.tokenStream.LA(1);
2705
2742
  }
@@ -2729,11 +2766,11 @@ class CircuitScriptParser extends antlr.Parser {
2729
2766
  try {
2730
2767
  this.enterOuterAlt(localContext, 1);
2731
2768
  {
2732
- this.state = 520;
2769
+ this.state = 530;
2733
2770
  this.match(CircuitScriptParser.T__5);
2734
- this.state = 521;
2771
+ this.state = 531;
2735
2772
  this.match(CircuitScriptParser.INTEGER_VALUE);
2736
- this.state = 522;
2773
+ this.state = 532;
2737
2774
  this.match(CircuitScriptParser.T__6);
2738
2775
  }
2739
2776
  }
@@ -2755,27 +2792,27 @@ class CircuitScriptParser extends antlr.Parser {
2755
2792
  let localContext = new Wire_atom_exprContext(this.context, this.state);
2756
2793
  this.enterRule(localContext, 94, CircuitScriptParser.RULE_wire_atom_expr);
2757
2794
  try {
2758
- this.state = 530;
2795
+ this.state = 540;
2759
2796
  this.errorHandler.sync(this);
2760
2797
  switch (this.interpreter.adaptivePredict(this.tokenStream, 63, this.context)) {
2761
2798
  case 1:
2762
2799
  localContext = new Wire_expr_direction_valueContext(localContext);
2763
2800
  this.enterOuterAlt(localContext, 1);
2764
2801
  {
2765
- this.state = 524;
2802
+ this.state = 534;
2766
2803
  this.match(CircuitScriptParser.ID);
2767
- this.state = 527;
2804
+ this.state = 537;
2768
2805
  this.errorHandler.sync(this);
2769
2806
  switch (this.interpreter.adaptivePredict(this.tokenStream, 62, this.context)) {
2770
2807
  case 1:
2771
2808
  {
2772
- this.state = 525;
2809
+ this.state = 535;
2773
2810
  this.match(CircuitScriptParser.INTEGER_VALUE);
2774
2811
  }
2775
2812
  break;
2776
2813
  case 2:
2777
2814
  {
2778
- this.state = 526;
2815
+ this.state = 536;
2779
2816
  this.data_expr(0);
2780
2817
  }
2781
2818
  break;
@@ -2786,7 +2823,7 @@ class CircuitScriptParser extends antlr.Parser {
2786
2823
  localContext = new Wire_expr_direction_onlyContext(localContext);
2787
2824
  this.enterOuterAlt(localContext, 2);
2788
2825
  {
2789
- this.state = 529;
2826
+ this.state = 539;
2790
2827
  this.match(CircuitScriptParser.ID);
2791
2828
  }
2792
2829
  break;
@@ -2813,21 +2850,21 @@ class CircuitScriptParser extends antlr.Parser {
2813
2850
  let alternative;
2814
2851
  this.enterOuterAlt(localContext, 1);
2815
2852
  {
2816
- this.state = 532;
2853
+ this.state = 542;
2817
2854
  this.match(CircuitScriptParser.Wire);
2818
- this.state = 536;
2855
+ this.state = 546;
2819
2856
  this.errorHandler.sync(this);
2820
2857
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 64, this.context);
2821
2858
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2822
2859
  if (alternative === 1) {
2823
2860
  {
2824
2861
  {
2825
- this.state = 533;
2862
+ this.state = 543;
2826
2863
  this.wire_atom_expr();
2827
2864
  }
2828
2865
  }
2829
2866
  }
2830
- this.state = 538;
2867
+ this.state = 548;
2831
2868
  this.errorHandler.sync(this);
2832
2869
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 64, this.context);
2833
2870
  }
@@ -2853,9 +2890,9 @@ class CircuitScriptParser extends antlr.Parser {
2853
2890
  try {
2854
2891
  this.enterOuterAlt(localContext, 1);
2855
2892
  {
2856
- this.state = 539;
2893
+ this.state = 549;
2857
2894
  this.match(CircuitScriptParser.Point);
2858
- this.state = 540;
2895
+ this.state = 550;
2859
2896
  this.match(CircuitScriptParser.ID);
2860
2897
  }
2861
2898
  }
@@ -2879,9 +2916,9 @@ class CircuitScriptParser extends antlr.Parser {
2879
2916
  try {
2880
2917
  this.enterOuterAlt(localContext, 1);
2881
2918
  {
2882
- this.state = 542;
2919
+ this.state = 552;
2883
2920
  this.match(CircuitScriptParser.Import);
2884
- this.state = 543;
2921
+ this.state = 553;
2885
2922
  this.match(CircuitScriptParser.ID);
2886
2923
  }
2887
2924
  }
@@ -2906,25 +2943,25 @@ class CircuitScriptParser extends antlr.Parser {
2906
2943
  try {
2907
2944
  this.enterOuterAlt(localContext, 1);
2908
2945
  {
2909
- this.state = 545;
2946
+ this.state = 555;
2910
2947
  this.match(CircuitScriptParser.Frame);
2911
- this.state = 546;
2948
+ this.state = 556;
2912
2949
  this.match(CircuitScriptParser.T__0);
2913
- this.state = 547;
2950
+ this.state = 557;
2914
2951
  this.match(CircuitScriptParser.NEWLINE);
2915
- this.state = 548;
2952
+ this.state = 558;
2916
2953
  this.match(CircuitScriptParser.INDENT);
2917
- this.state = 551;
2954
+ this.state = 561;
2918
2955
  this.errorHandler.sync(this);
2919
2956
  _la = this.tokenStream.LA(1);
2920
2957
  do {
2921
2958
  {
2922
- this.state = 551;
2959
+ this.state = 561;
2923
2960
  this.errorHandler.sync(this);
2924
2961
  switch (this.tokenStream.LA(1)) {
2925
2962
  case CircuitScriptParser.NEWLINE:
2926
2963
  {
2927
- this.state = 549;
2964
+ this.state = 559;
2928
2965
  this.match(CircuitScriptParser.NEWLINE);
2929
2966
  }
2930
2967
  break;
@@ -2940,12 +2977,13 @@ class CircuitScriptParser extends antlr.Parser {
2940
2977
  case CircuitScriptParser.Parallel:
2941
2978
  case CircuitScriptParser.Define:
2942
2979
  case CircuitScriptParser.Import:
2980
+ case CircuitScriptParser.If:
2943
2981
  case CircuitScriptParser.Frame:
2944
2982
  case CircuitScriptParser.Addition:
2945
2983
  case CircuitScriptParser.Divide:
2946
2984
  case CircuitScriptParser.ID:
2947
2985
  {
2948
- this.state = 550;
2986
+ this.state = 560;
2949
2987
  this.expression();
2950
2988
  }
2951
2989
  break;
@@ -2953,11 +2991,274 @@ class CircuitScriptParser extends antlr.Parser {
2953
2991
  throw new antlr.NoViableAltException(this);
2954
2992
  }
2955
2993
  }
2956
- this.state = 553;
2994
+ this.state = 563;
2957
2995
  this.errorHandler.sync(this);
2958
2996
  _la = this.tokenStream.LA(1);
2959
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || _la === 37 || _la === 45);
2960
- this.state = 555;
2997
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
2998
+ this.state = 565;
2999
+ this.match(CircuitScriptParser.DEDENT);
3000
+ }
3001
+ }
3002
+ catch (re) {
3003
+ if (re instanceof antlr.RecognitionException) {
3004
+ this.errorHandler.reportError(this, re);
3005
+ this.errorHandler.recover(this, re);
3006
+ }
3007
+ else {
3008
+ throw re;
3009
+ }
3010
+ }
3011
+ finally {
3012
+ this.exitRule();
3013
+ }
3014
+ return localContext;
3015
+ }
3016
+ if_expr() {
3017
+ let localContext = new If_exprContext(this.context, this.state);
3018
+ this.enterRule(localContext, 104, CircuitScriptParser.RULE_if_expr);
3019
+ let _la;
3020
+ try {
3021
+ let alternative;
3022
+ this.enterOuterAlt(localContext, 1);
3023
+ {
3024
+ this.state = 567;
3025
+ this.match(CircuitScriptParser.If);
3026
+ this.state = 568;
3027
+ this.data_expr(0);
3028
+ this.state = 569;
3029
+ this.match(CircuitScriptParser.T__0);
3030
+ this.state = 570;
3031
+ this.match(CircuitScriptParser.NEWLINE);
3032
+ this.state = 571;
3033
+ this.match(CircuitScriptParser.INDENT);
3034
+ this.state = 574;
3035
+ this.errorHandler.sync(this);
3036
+ _la = this.tokenStream.LA(1);
3037
+ do {
3038
+ {
3039
+ this.state = 574;
3040
+ this.errorHandler.sync(this);
3041
+ switch (this.tokenStream.LA(1)) {
3042
+ case CircuitScriptParser.NEWLINE:
3043
+ {
3044
+ this.state = 572;
3045
+ this.match(CircuitScriptParser.NEWLINE);
3046
+ }
3047
+ break;
3048
+ case CircuitScriptParser.T__3:
3049
+ case CircuitScriptParser.Break:
3050
+ case CircuitScriptParser.Branch:
3051
+ case CircuitScriptParser.Wire:
3052
+ case CircuitScriptParser.Add:
3053
+ case CircuitScriptParser.At:
3054
+ case CircuitScriptParser.To:
3055
+ case CircuitScriptParser.Point:
3056
+ case CircuitScriptParser.Join:
3057
+ case CircuitScriptParser.Parallel:
3058
+ case CircuitScriptParser.Define:
3059
+ case CircuitScriptParser.Import:
3060
+ case CircuitScriptParser.If:
3061
+ case CircuitScriptParser.Frame:
3062
+ case CircuitScriptParser.Addition:
3063
+ case CircuitScriptParser.Divide:
3064
+ case CircuitScriptParser.ID:
3065
+ {
3066
+ this.state = 573;
3067
+ this.expression();
3068
+ }
3069
+ break;
3070
+ default:
3071
+ throw new antlr.NoViableAltException(this);
3072
+ }
3073
+ }
3074
+ this.state = 576;
3075
+ this.errorHandler.sync(this);
3076
+ _la = this.tokenStream.LA(1);
3077
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
3078
+ this.state = 578;
3079
+ this.match(CircuitScriptParser.DEDENT);
3080
+ this.state = 582;
3081
+ this.errorHandler.sync(this);
3082
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 69, this.context);
3083
+ while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3084
+ if (alternative === 1) {
3085
+ {
3086
+ {
3087
+ this.state = 579;
3088
+ this.if_inner_expr();
3089
+ }
3090
+ }
3091
+ }
3092
+ this.state = 584;
3093
+ this.errorHandler.sync(this);
3094
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 69, this.context);
3095
+ }
3096
+ this.state = 586;
3097
+ this.errorHandler.sync(this);
3098
+ _la = this.tokenStream.LA(1);
3099
+ if (_la === 25) {
3100
+ {
3101
+ this.state = 585;
3102
+ this.else_expr();
3103
+ }
3104
+ }
3105
+ }
3106
+ }
3107
+ catch (re) {
3108
+ if (re instanceof antlr.RecognitionException) {
3109
+ this.errorHandler.reportError(this, re);
3110
+ this.errorHandler.recover(this, re);
3111
+ }
3112
+ else {
3113
+ throw re;
3114
+ }
3115
+ }
3116
+ finally {
3117
+ this.exitRule();
3118
+ }
3119
+ return localContext;
3120
+ }
3121
+ if_inner_expr() {
3122
+ let localContext = new If_inner_exprContext(this.context, this.state);
3123
+ this.enterRule(localContext, 106, CircuitScriptParser.RULE_if_inner_expr);
3124
+ let _la;
3125
+ try {
3126
+ this.enterOuterAlt(localContext, 1);
3127
+ {
3128
+ this.state = 588;
3129
+ this.match(CircuitScriptParser.Else);
3130
+ this.state = 589;
3131
+ this.match(CircuitScriptParser.If);
3132
+ this.state = 590;
3133
+ this.data_expr(0);
3134
+ this.state = 591;
3135
+ this.match(CircuitScriptParser.T__0);
3136
+ this.state = 592;
3137
+ this.match(CircuitScriptParser.NEWLINE);
3138
+ this.state = 593;
3139
+ this.match(CircuitScriptParser.INDENT);
3140
+ this.state = 596;
3141
+ this.errorHandler.sync(this);
3142
+ _la = this.tokenStream.LA(1);
3143
+ do {
3144
+ {
3145
+ this.state = 596;
3146
+ this.errorHandler.sync(this);
3147
+ switch (this.tokenStream.LA(1)) {
3148
+ case CircuitScriptParser.NEWLINE:
3149
+ {
3150
+ this.state = 594;
3151
+ this.match(CircuitScriptParser.NEWLINE);
3152
+ }
3153
+ break;
3154
+ case CircuitScriptParser.T__3:
3155
+ case CircuitScriptParser.Break:
3156
+ case CircuitScriptParser.Branch:
3157
+ case CircuitScriptParser.Wire:
3158
+ case CircuitScriptParser.Add:
3159
+ case CircuitScriptParser.At:
3160
+ case CircuitScriptParser.To:
3161
+ case CircuitScriptParser.Point:
3162
+ case CircuitScriptParser.Join:
3163
+ case CircuitScriptParser.Parallel:
3164
+ case CircuitScriptParser.Define:
3165
+ case CircuitScriptParser.Import:
3166
+ case CircuitScriptParser.If:
3167
+ case CircuitScriptParser.Frame:
3168
+ case CircuitScriptParser.Addition:
3169
+ case CircuitScriptParser.Divide:
3170
+ case CircuitScriptParser.ID:
3171
+ {
3172
+ this.state = 595;
3173
+ this.expression();
3174
+ }
3175
+ break;
3176
+ default:
3177
+ throw new antlr.NoViableAltException(this);
3178
+ }
3179
+ }
3180
+ this.state = 598;
3181
+ this.errorHandler.sync(this);
3182
+ _la = this.tokenStream.LA(1);
3183
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
3184
+ this.state = 600;
3185
+ this.match(CircuitScriptParser.DEDENT);
3186
+ }
3187
+ }
3188
+ catch (re) {
3189
+ if (re instanceof antlr.RecognitionException) {
3190
+ this.errorHandler.reportError(this, re);
3191
+ this.errorHandler.recover(this, re);
3192
+ }
3193
+ else {
3194
+ throw re;
3195
+ }
3196
+ }
3197
+ finally {
3198
+ this.exitRule();
3199
+ }
3200
+ return localContext;
3201
+ }
3202
+ else_expr() {
3203
+ let localContext = new Else_exprContext(this.context, this.state);
3204
+ this.enterRule(localContext, 108, CircuitScriptParser.RULE_else_expr);
3205
+ let _la;
3206
+ try {
3207
+ this.enterOuterAlt(localContext, 1);
3208
+ {
3209
+ this.state = 602;
3210
+ this.match(CircuitScriptParser.Else);
3211
+ this.state = 603;
3212
+ this.match(CircuitScriptParser.T__0);
3213
+ this.state = 604;
3214
+ this.match(CircuitScriptParser.NEWLINE);
3215
+ this.state = 605;
3216
+ this.match(CircuitScriptParser.INDENT);
3217
+ this.state = 608;
3218
+ this.errorHandler.sync(this);
3219
+ _la = this.tokenStream.LA(1);
3220
+ do {
3221
+ {
3222
+ this.state = 608;
3223
+ this.errorHandler.sync(this);
3224
+ switch (this.tokenStream.LA(1)) {
3225
+ case CircuitScriptParser.NEWLINE:
3226
+ {
3227
+ this.state = 606;
3228
+ this.match(CircuitScriptParser.NEWLINE);
3229
+ }
3230
+ break;
3231
+ case CircuitScriptParser.T__3:
3232
+ case CircuitScriptParser.Break:
3233
+ case CircuitScriptParser.Branch:
3234
+ case CircuitScriptParser.Wire:
3235
+ case CircuitScriptParser.Add:
3236
+ case CircuitScriptParser.At:
3237
+ case CircuitScriptParser.To:
3238
+ case CircuitScriptParser.Point:
3239
+ case CircuitScriptParser.Join:
3240
+ case CircuitScriptParser.Parallel:
3241
+ case CircuitScriptParser.Define:
3242
+ case CircuitScriptParser.Import:
3243
+ case CircuitScriptParser.If:
3244
+ case CircuitScriptParser.Frame:
3245
+ case CircuitScriptParser.Addition:
3246
+ case CircuitScriptParser.Divide:
3247
+ case CircuitScriptParser.ID:
3248
+ {
3249
+ this.state = 607;
3250
+ this.expression();
3251
+ }
3252
+ break;
3253
+ default:
3254
+ throw new antlr.NoViableAltException(this);
3255
+ }
3256
+ }
3257
+ this.state = 610;
3258
+ this.errorHandler.sync(this);
3259
+ _la = this.tokenStream.LA(1);
3260
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
3261
+ this.state = 612;
2961
3262
  this.match(CircuitScriptParser.DEDENT);
2962
3263
  }
2963
3264
  }
@@ -2985,10 +3286,12 @@ class CircuitScriptParser extends antlr.Parser {
2985
3286
  data_expr_sempred(localContext, predIndex) {
2986
3287
  switch (predIndex) {
2987
3288
  case 0:
2988
- return this.precpred(this.context, 6);
3289
+ return this.precpred(this.context, 7);
2989
3290
  case 1:
2990
- return this.precpred(this.context, 5);
3291
+ return this.precpred(this.context, 6);
2991
3292
  case 2:
3293
+ return this.precpred(this.context, 5);
3294
+ case 3:
2992
3295
  return this.precpred(this.context, 4);
2993
3296
  }
2994
3297
  return true;
@@ -3028,30 +3331,37 @@ CircuitScriptParser.Return = 21;
3028
3331
  CircuitScriptParser.Define = 22;
3029
3332
  CircuitScriptParser.Import = 23;
3030
3333
  CircuitScriptParser.If = 24;
3031
- CircuitScriptParser.Not = 25;
3032
- CircuitScriptParser.Frame = 26;
3033
- CircuitScriptParser.Equals = 27;
3034
- CircuitScriptParser.NotEquals = 28;
3035
- CircuitScriptParser.Addition = 29;
3036
- CircuitScriptParser.Minus = 30;
3037
- CircuitScriptParser.Divide = 31;
3038
- CircuitScriptParser.Multiply = 32;
3039
- CircuitScriptParser.OPEN_PAREN = 33;
3040
- CircuitScriptParser.CLOSE_PAREN = 34;
3041
- CircuitScriptParser.NOT_CONNECTED = 35;
3042
- CircuitScriptParser.BOOLEAN_VALUE = 36;
3043
- CircuitScriptParser.ID = 37;
3044
- CircuitScriptParser.INTEGER_VALUE = 38;
3045
- CircuitScriptParser.DECIMAL_VALUE = 39;
3046
- CircuitScriptParser.NUMERIC_VALUE = 40;
3047
- CircuitScriptParser.STRING_VALUE = 41;
3048
- CircuitScriptParser.PERCENTAGE_VALUE = 42;
3049
- CircuitScriptParser.ALPHA_NUMERIC = 43;
3050
- CircuitScriptParser.WS = 44;
3051
- CircuitScriptParser.NEWLINE = 45;
3052
- CircuitScriptParser.COMMENT = 46;
3053
- CircuitScriptParser.INDENT = 47;
3054
- CircuitScriptParser.DEDENT = 48;
3334
+ CircuitScriptParser.Else = 25;
3335
+ CircuitScriptParser.Not = 26;
3336
+ CircuitScriptParser.Frame = 27;
3337
+ CircuitScriptParser.Equals = 28;
3338
+ CircuitScriptParser.NotEquals = 29;
3339
+ CircuitScriptParser.GreaterThan = 30;
3340
+ CircuitScriptParser.GreatOrEqualThan = 31;
3341
+ CircuitScriptParser.LessThan = 32;
3342
+ CircuitScriptParser.LessOrEqualThan = 33;
3343
+ CircuitScriptParser.LogicalAnd = 34;
3344
+ CircuitScriptParser.LogicalOr = 35;
3345
+ CircuitScriptParser.Addition = 36;
3346
+ CircuitScriptParser.Minus = 37;
3347
+ CircuitScriptParser.Divide = 38;
3348
+ CircuitScriptParser.Multiply = 39;
3349
+ CircuitScriptParser.OPEN_PAREN = 40;
3350
+ CircuitScriptParser.CLOSE_PAREN = 41;
3351
+ CircuitScriptParser.NOT_CONNECTED = 42;
3352
+ CircuitScriptParser.BOOLEAN_VALUE = 43;
3353
+ CircuitScriptParser.ID = 44;
3354
+ CircuitScriptParser.INTEGER_VALUE = 45;
3355
+ CircuitScriptParser.DECIMAL_VALUE = 46;
3356
+ CircuitScriptParser.NUMERIC_VALUE = 47;
3357
+ CircuitScriptParser.STRING_VALUE = 48;
3358
+ CircuitScriptParser.PERCENTAGE_VALUE = 49;
3359
+ CircuitScriptParser.ALPHA_NUMERIC = 50;
3360
+ CircuitScriptParser.WS = 51;
3361
+ CircuitScriptParser.NEWLINE = 52;
3362
+ CircuitScriptParser.COMMENT = 53;
3363
+ CircuitScriptParser.INDENT = 54;
3364
+ CircuitScriptParser.DEDENT = 55;
3055
3365
  CircuitScriptParser.RULE_script = 0;
3056
3366
  CircuitScriptParser.RULE_expression = 1;
3057
3367
  CircuitScriptParser.RULE_path_blocks = 2;
@@ -3094,7 +3404,7 @@ CircuitScriptParser.RULE_net_namespace_expr = 38;
3094
3404
  CircuitScriptParser.RULE_function_return_expr = 39;
3095
3405
  CircuitScriptParser.RULE_create_component_expr = 40;
3096
3406
  CircuitScriptParser.RULE_create_graphic_expr = 41;
3097
- CircuitScriptParser.RULE_sub_expr = 42;
3407
+ CircuitScriptParser.RULE_graphic_expr = 42;
3098
3408
  CircuitScriptParser.RULE_property_expr = 43;
3099
3409
  CircuitScriptParser.RULE_property_key_expr = 44;
3100
3410
  CircuitScriptParser.RULE_property_value_expr = 45;
@@ -3104,22 +3414,27 @@ CircuitScriptParser.RULE_wire_expr = 48;
3104
3414
  CircuitScriptParser.RULE_point_expr = 49;
3105
3415
  CircuitScriptParser.RULE_import_expr = 50;
3106
3416
  CircuitScriptParser.RULE_frame_expr = 51;
3417
+ CircuitScriptParser.RULE_if_expr = 52;
3418
+ CircuitScriptParser.RULE_if_inner_expr = 53;
3419
+ CircuitScriptParser.RULE_else_expr = 54;
3107
3420
  CircuitScriptParser.literalNames = [
3108
3421
  null, "':'", "','", "'='", "'..'", "'.'", "'['", "']'", "'break'",
3109
3422
  "'branch'", "'create'", "'component'", "'graphic'", "'wire'", "'pin'",
3110
3423
  "'add'", "'at'", "'to'", "'point'", "'join'", "'parallel'", "'return'",
3111
- "'def'", "'import'", "'if'", "'!'", "'frame'", "'=='", "'!='", "'+'",
3112
- "'-'", "'/'", "'*'", "'('", "')'"
3424
+ "'def'", "'import'", "'if'", "'else'", "'!'", "'frame'", "'=='",
3425
+ "'!='", "'>'", "'>='", "'<'", "'<='", "'&&'", "'||'", "'+'", "'-'",
3426
+ "'/'", "'*'", "'('", "')'"
3113
3427
  ];
3114
3428
  CircuitScriptParser.symbolicNames = [
3115
3429
  null, null, null, null, null, null, null, null, "Break", "Branch",
3116
3430
  "Create", "Component", "Graphic", "Wire", "Pin", "Add", "At", "To",
3117
3431
  "Point", "Join", "Parallel", "Return", "Define", "Import", "If",
3118
- "Not", "Frame", "Equals", "NotEquals", "Addition", "Minus", "Divide",
3119
- "Multiply", "OPEN_PAREN", "CLOSE_PAREN", "NOT_CONNECTED", "BOOLEAN_VALUE",
3120
- "ID", "INTEGER_VALUE", "DECIMAL_VALUE", "NUMERIC_VALUE", "STRING_VALUE",
3121
- "PERCENTAGE_VALUE", "ALPHA_NUMERIC", "WS", "NEWLINE", "COMMENT",
3122
- "INDENT", "DEDENT"
3432
+ "Else", "Not", "Frame", "Equals", "NotEquals", "GreaterThan", "GreatOrEqualThan",
3433
+ "LessThan", "LessOrEqualThan", "LogicalAnd", "LogicalOr", "Addition",
3434
+ "Minus", "Divide", "Multiply", "OPEN_PAREN", "CLOSE_PAREN", "NOT_CONNECTED",
3435
+ "BOOLEAN_VALUE", "ID", "INTEGER_VALUE", "DECIMAL_VALUE", "NUMERIC_VALUE",
3436
+ "STRING_VALUE", "PERCENTAGE_VALUE", "ALPHA_NUMERIC", "WS", "NEWLINE",
3437
+ "COMMENT", "INDENT", "DEDENT"
3123
3438
  ];
3124
3439
  CircuitScriptParser.ruleNames = [
3125
3440
  "script", "expression", "path_blocks", "path_block_inner", "property_set_expr2",
@@ -3133,217 +3448,239 @@ CircuitScriptParser.ruleNames = [
3133
3448
  "data_expr", "binary_operator", "unary_operator", "value_expr",
3134
3449
  "function_def_expr", "function_expr", "function_args_expr", "atom_expr",
3135
3450
  "trailer_expr", "function_call_expr", "net_namespace_expr", "function_return_expr",
3136
- "create_component_expr", "create_graphic_expr", "sub_expr", "property_expr",
3137
- "property_key_expr", "property_value_expr", "blank_expr", "wire_atom_expr",
3138
- "wire_expr", "point_expr", "import_expr", "frame_expr",
3451
+ "create_component_expr", "create_graphic_expr", "graphic_expr",
3452
+ "property_expr", "property_key_expr", "property_value_expr", "blank_expr",
3453
+ "wire_atom_expr", "wire_expr", "point_expr", "import_expr", "frame_expr",
3454
+ "if_expr", "if_inner_expr", "else_expr",
3139
3455
  ];
3140
3456
  CircuitScriptParser._serializedATN = [
3141
- 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,
3457
+ 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,
3142
3458
  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,
3143
3459
  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,
3144
3460
  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,
3145
3461
  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,
3146
3462
  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,
3147
3463
  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,
3148
- 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,
3149
- 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,
3150
- 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,
3151
- 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,
3152
- 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,
3153
- 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,
3154
- 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,
3155
- 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,
3156
- 199, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 205, 8, 13, 10, 13, 12, 13, 208, 9, 13,
3157
- 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,
3158
- 14, 12, 14, 222, 9, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 229, 8, 14, 11, 14, 12,
3159
- 14, 230, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 240, 8, 15, 10, 15, 12,
3160
- 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,
3161
- 11, 17, 12, 17, 254, 1, 17, 1, 17, 1, 18, 1, 18, 3, 18, 261, 8, 18, 1, 19, 1, 19, 1, 19,
3162
- 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,
3163
- 21, 277, 8, 21, 11, 21, 12, 21, 278, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1,
3164
- 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 5, 25, 296, 8, 25, 10, 25, 12, 25,
3165
- 299, 9, 25, 1, 25, 1, 25, 5, 25, 303, 8, 25, 10, 25, 12, 25, 306, 9, 25, 1, 25, 1, 25,
3166
- 1, 25, 5, 25, 311, 8, 25, 10, 25, 12, 25, 314, 9, 25, 3, 25, 316, 8, 25, 1, 26, 1, 26,
3167
- 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,
3168
- 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,
3169
- 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,
3170
- 28, 12, 28, 357, 9, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 3, 31, 364, 8, 31, 1, 31, 1,
3171
- 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,
3172
- 1, 32, 1, 32, 1, 32, 4, 32, 382, 8, 32, 11, 32, 12, 32, 383, 1, 32, 1, 32, 1, 33, 1, 33,
3173
- 3, 33, 390, 8, 33, 1, 34, 1, 34, 1, 34, 5, 34, 395, 8, 34, 10, 34, 12, 34, 398, 9, 34,
3174
- 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 404, 8, 34, 10, 34, 12, 34, 407, 9, 34, 1, 34, 1, 34,
3175
- 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 416, 8, 34, 10, 34, 12, 34, 419, 9, 34, 3, 34,
3176
- 421, 8, 34, 1, 35, 1, 35, 1, 35, 5, 35, 426, 8, 35, 10, 35, 12, 35, 429, 9, 35, 1, 36,
3177
- 1, 36, 3, 36, 433, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 438, 8, 36, 1, 37, 3, 37, 441, 8,
3178
- 37, 1, 37, 1, 37, 4, 37, 445, 8, 37, 11, 37, 12, 37, 446, 1, 38, 3, 38, 450, 8, 38, 1,
3179
- 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,
3180
- 40, 1, 40, 4, 40, 466, 8, 40, 11, 40, 12, 40, 467, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1,
3181
- 41, 1, 41, 1, 41, 1, 41, 4, 41, 479, 8, 41, 11, 41, 12, 41, 480, 1, 41, 1, 41, 1, 42, 1,
3182
- 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,
3183
- 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,
3184
- 507, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 514, 8, 45, 10, 45, 12, 45, 517, 9, 45, 3, 45,
3185
- 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,
3186
- 47, 531, 8, 47, 1, 48, 1, 48, 5, 48, 535, 8, 48, 10, 48, 12, 48, 538, 9, 48, 1, 49, 1,
3187
- 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,
3188
- 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,
3189
- 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
3190
- 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102,
3191
- 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,
3192
- 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,
3193
- 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,
3194
- 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,
3195
- 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,
3196
- 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,
3197
- 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,
3198
- 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,
3199
- 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,
3200
- 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,
3201
- 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,
3202
- 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,
3203
- 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,
3204
- 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,
3205
- 542, 1, 0, 0, 0, 102, 545, 1, 0, 0, 0, 104, 107, 3, 2, 1, 0, 105, 107, 5, 45, 0, 0, 106,
3206
- 104, 1, 0, 0, 0, 106, 105, 1, 0, 0, 0, 107, 108, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 108,
3207
- 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,
3208
- 3, 18, 9, 0, 113, 130, 3, 26, 13, 0, 114, 130, 3, 24, 12, 0, 115, 130, 3, 46, 23, 0, 116,
3209
- 130, 3, 52, 26, 0, 117, 130, 3, 8, 4, 0, 118, 130, 3, 54, 27, 0, 119, 130, 3, 44, 22,
3210
- 0, 120, 130, 3, 64, 32, 0, 121, 130, 3, 74, 37, 0, 122, 130, 3, 96, 48, 0, 123, 130,
3211
- 3, 100, 50, 0, 124, 130, 3, 102, 51, 0, 125, 130, 3, 70, 35, 0, 126, 130, 3, 34, 17,
3212
- 0, 127, 130, 3, 4, 2, 0, 128, 130, 3, 98, 49, 0, 129, 112, 1, 0, 0, 0, 129, 113, 1, 0,
3213
- 0, 0, 129, 114, 1, 0, 0, 0, 129, 115, 1, 0, 0, 0, 129, 116, 1, 0, 0, 0, 129, 117, 1, 0,
3214
- 0, 0, 129, 118, 1, 0, 0, 0, 129, 119, 1, 0, 0, 0, 129, 120, 1, 0, 0, 0, 129, 121, 1, 0,
3215
- 0, 0, 129, 122, 1, 0, 0, 0, 129, 123, 1, 0, 0, 0, 129, 124, 1, 0, 0, 0, 129, 125, 1, 0,
3216
- 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,
3217
- 0, 131, 133, 3, 6, 3, 0, 132, 131, 1, 0, 0, 0, 133, 134, 1, 0, 0, 0, 134, 132, 1, 0, 0,
3218
- 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,
3219
- 138, 139, 5, 45, 0, 0, 139, 142, 5, 47, 0, 0, 140, 143, 5, 45, 0, 0, 141, 143, 3, 2, 1,
3220
- 0, 142, 140, 1, 0, 0, 0, 142, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 142, 1, 0, 0,
3221
- 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,
3222
- 148, 149, 3, 70, 35, 0, 149, 150, 5, 1, 0, 0, 150, 151, 5, 45, 0, 0, 151, 154, 5, 47,
3223
- 0, 0, 152, 155, 5, 45, 0, 0, 153, 155, 3, 10, 5, 0, 154, 152, 1, 0, 0, 0, 154, 153, 1,
3224
- 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157, 158, 1,
3225
- 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,
3226
- 0, 0, 162, 163, 3, 62, 31, 0, 163, 11, 1, 0, 0, 0, 164, 165, 5, 14, 0, 0, 165, 166, 7,
3227
- 2, 0, 0, 166, 13, 1, 0, 0, 0, 167, 168, 5, 37, 0, 0, 168, 171, 5, 1, 0, 0, 169, 172, 3,
3228
- 62, 31, 0, 170, 172, 5, 37, 0, 0, 171, 169, 1, 0, 0, 0, 171, 170, 1, 0, 0, 0, 172, 15,
3229
- 1, 0, 0, 0, 173, 176, 3, 56, 28, 0, 174, 176, 3, 46, 23, 0, 175, 173, 1, 0, 0, 0, 175,
3230
- 174, 1, 0, 0, 0, 176, 180, 1, 0, 0, 0, 177, 179, 3, 14, 7, 0, 178, 177, 1, 0, 0, 0, 179,
3231
- 182, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 184, 1, 0, 0, 0, 182,
3232
- 180, 1, 0, 0, 0, 183, 185, 3, 12, 6, 0, 184, 183, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185,
3233
- 17, 1, 0, 0, 0, 186, 187, 5, 15, 0, 0, 187, 188, 3, 16, 8, 0, 188, 19, 1, 0, 0, 0, 189,
3234
- 192, 3, 16, 8, 0, 190, 192, 3, 12, 6, 0, 191, 189, 1, 0, 0, 0, 191, 190, 1, 0, 0, 0, 192,
3235
- 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,
3236
- 3, 20, 10, 0, 197, 199, 5, 18, 0, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, 199, 25,
3237
- 1, 0, 0, 0, 200, 210, 5, 17, 0, 0, 201, 206, 3, 20, 10, 0, 202, 203, 5, 2, 0, 0, 203, 205,
3238
- 3, 20, 10, 0, 204, 202, 1, 0, 0, 0, 205, 208, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 206, 207,
3239
- 1, 0, 0, 0, 207, 211, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 209, 211, 5, 18, 0, 0, 210, 201,
3240
- 1, 0, 0, 0, 210, 209, 1, 0, 0, 0, 211, 27, 1, 0, 0, 0, 212, 213, 5, 16, 0, 0, 213, 214,
3241
- 3, 20, 10, 0, 214, 215, 5, 17, 0, 0, 215, 220, 3, 20, 10, 0, 216, 217, 5, 2, 0, 0, 217,
3242
- 219, 3, 20, 10, 0, 218, 216, 1, 0, 0, 0, 219, 222, 1, 0, 0, 0, 220, 218, 1, 0, 0, 0, 220,
3243
- 221, 1, 0, 0, 0, 221, 223, 1, 0, 0, 0, 222, 220, 1, 0, 0, 0, 223, 224, 5, 1, 0, 0, 224,
3244
- 225, 5, 45, 0, 0, 225, 228, 5, 47, 0, 0, 226, 229, 5, 45, 0, 0, 227, 229, 3, 30, 15, 0,
3245
- 228, 226, 1, 0, 0, 0, 228, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0,
3246
- 230, 231, 1, 0, 0, 0, 231, 232, 1, 0, 0, 0, 232, 233, 5, 48, 0, 0, 233, 29, 1, 0, 0, 0,
3247
- 234, 235, 3, 22, 11, 0, 235, 236, 5, 1, 0, 0, 236, 241, 3, 32, 16, 0, 237, 238, 5, 2,
3248
- 0, 0, 238, 240, 3, 32, 16, 0, 239, 237, 1, 0, 0, 0, 240, 243, 1, 0, 0, 0, 241, 239, 1,
3249
- 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,
3250
- 0, 0, 245, 33, 1, 0, 0, 0, 246, 247, 3, 24, 12, 0, 247, 248, 5, 1, 0, 0, 248, 249, 5, 45,
3251
- 0, 0, 249, 252, 5, 47, 0, 0, 250, 253, 5, 45, 0, 0, 251, 253, 3, 36, 18, 0, 252, 250,
3252
- 1, 0, 0, 0, 252, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255,
3253
- 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 257, 5, 48, 0, 0, 257, 35, 1, 0, 0, 0, 258, 261,
3254
- 3, 2, 1, 0, 259, 261, 3, 38, 19, 0, 260, 258, 1, 0, 0, 0, 260, 259, 1, 0, 0, 0, 261, 37,
3255
- 1, 0, 0, 0, 262, 263, 3, 22, 11, 0, 263, 266, 5, 1, 0, 0, 264, 267, 3, 40, 20, 0, 265,
3256
- 267, 3, 42, 21, 0, 266, 264, 1, 0, 0, 0, 266, 265, 1, 0, 0, 0, 267, 39, 1, 0, 0, 0, 268,
3257
- 271, 3, 2, 1, 0, 269, 271, 5, 35, 0, 0, 270, 268, 1, 0, 0, 0, 270, 269, 1, 0, 0, 0, 271,
3258
- 41, 1, 0, 0, 0, 272, 273, 5, 45, 0, 0, 273, 276, 5, 47, 0, 0, 274, 277, 5, 45, 0, 0, 275,
3259
- 277, 3, 2, 1, 0, 276, 274, 1, 0, 0, 0, 276, 275, 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278,
3260
- 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 5, 48, 0, 0, 281,
3261
- 43, 1, 0, 0, 0, 282, 283, 5, 8, 0, 0, 283, 45, 1, 0, 0, 0, 284, 285, 3, 70, 35, 0, 285,
3262
- 286, 5, 3, 0, 0, 286, 287, 3, 56, 28, 0, 287, 47, 1, 0, 0, 0, 288, 289, 5, 37, 0, 0, 289,
3263
- 290, 5, 3, 0, 0, 290, 291, 3, 56, 28, 0, 291, 49, 1, 0, 0, 0, 292, 297, 3, 56, 28, 0, 293,
3264
- 294, 5, 2, 0, 0, 294, 296, 3, 56, 28, 0, 295, 293, 1, 0, 0, 0, 296, 299, 1, 0, 0, 0, 297,
3265
- 295, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 304, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 300,
3266
- 301, 5, 2, 0, 0, 301, 303, 3, 48, 24, 0, 302, 300, 1, 0, 0, 0, 303, 306, 1, 0, 0, 0, 304,
3267
- 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 316, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307,
3268
- 312, 3, 48, 24, 0, 308, 309, 5, 2, 0, 0, 309, 311, 3, 48, 24, 0, 310, 308, 1, 0, 0, 0,
3269
- 311, 314, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 316, 1, 0, 0, 0,
3270
- 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,
3271
- 318, 3, 70, 35, 0, 318, 319, 5, 3, 0, 0, 319, 320, 3, 56, 28, 0, 320, 53, 1, 0, 0, 0, 321,
3272
- 322, 5, 4, 0, 0, 322, 323, 5, 37, 0, 0, 323, 324, 5, 3, 0, 0, 324, 325, 3, 56, 28, 0, 325,
3273
- 55, 1, 0, 0, 0, 326, 327, 6, 28, -1, 0, 327, 328, 5, 33, 0, 0, 328, 329, 3, 56, 28, 0,
3274
- 329, 330, 5, 34, 0, 0, 330, 342, 1, 0, 0, 0, 331, 334, 3, 62, 31, 0, 332, 334, 3, 70,
3275
- 35, 0, 333, 331, 1, 0, 0, 0, 333, 332, 1, 0, 0, 0, 334, 342, 1, 0, 0, 0, 335, 336, 3, 60,
3276
- 30, 0, 336, 337, 3, 56, 28, 7, 337, 342, 1, 0, 0, 0, 338, 342, 3, 80, 40, 0, 339, 342,
3277
- 3, 82, 41, 0, 340, 342, 3, 74, 37, 0, 341, 326, 1, 0, 0, 0, 341, 333, 1, 0, 0, 0, 341,
3278
- 335, 1, 0, 0, 0, 341, 338, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 340, 1, 0, 0, 0, 342,
3279
- 355, 1, 0, 0, 0, 343, 344, 10, 6, 0, 0, 344, 345, 7, 4, 0, 0, 345, 354, 3, 56, 28, 7, 346,
3280
- 347, 10, 5, 0, 0, 347, 348, 7, 5, 0, 0, 348, 354, 3, 56, 28, 6, 349, 350, 10, 4, 0, 0,
3281
- 350, 351, 3, 58, 29, 0, 351, 352, 3, 56, 28, 5, 352, 354, 1, 0, 0, 0, 353, 343, 1, 0,
3282
- 0, 0, 353, 346, 1, 0, 0, 0, 353, 349, 1, 0, 0, 0, 354, 357, 1, 0, 0, 0, 355, 353, 1, 0,
3283
- 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,
3284
- 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,
3285
- 363, 362, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 368, 7, 8, 0, 0,
3286
- 366, 368, 3, 92, 46, 0, 367, 363, 1, 0, 0, 0, 367, 366, 1, 0, 0, 0, 368, 63, 1, 0, 0, 0,
3287
- 369, 370, 5, 22, 0, 0, 370, 371, 5, 37, 0, 0, 371, 373, 5, 33, 0, 0, 372, 374, 3, 68,
3288
- 34, 0, 373, 372, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 376, 5, 34,
3289
- 0, 0, 376, 377, 5, 1, 0, 0, 377, 378, 5, 45, 0, 0, 378, 381, 5, 47, 0, 0, 379, 382, 5,
3290
- 45, 0, 0, 380, 382, 3, 66, 33, 0, 381, 379, 1, 0, 0, 0, 381, 380, 1, 0, 0, 0, 382, 383,
3291
- 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 386,
3292
- 5, 48, 0, 0, 386, 65, 1, 0, 0, 0, 387, 390, 3, 2, 1, 0, 388, 390, 3, 78, 39, 0, 389, 387,
3293
- 1, 0, 0, 0, 389, 388, 1, 0, 0, 0, 390, 67, 1, 0, 0, 0, 391, 396, 5, 37, 0, 0, 392, 393,
3294
- 5, 2, 0, 0, 393, 395, 5, 37, 0, 0, 394, 392, 1, 0, 0, 0, 395, 398, 1, 0, 0, 0, 396, 394,
3295
- 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 405, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 400,
3296
- 5, 2, 0, 0, 400, 401, 5, 37, 0, 0, 401, 402, 5, 3, 0, 0, 402, 404, 3, 62, 31, 0, 403, 399,
3297
- 1, 0, 0, 0, 404, 407, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 421,
3298
- 1, 0, 0, 0, 407, 405, 1, 0, 0, 0, 408, 409, 5, 37, 0, 0, 409, 410, 5, 3, 0, 0, 410, 417,
3299
- 3, 62, 31, 0, 411, 412, 5, 2, 0, 0, 412, 413, 5, 37, 0, 0, 413, 414, 5, 3, 0, 0, 414, 416,
3300
- 3, 62, 31, 0, 415, 411, 1, 0, 0, 0, 416, 419, 1, 0, 0, 0, 417, 415, 1, 0, 0, 0, 417, 418,
3301
- 1, 0, 0, 0, 418, 421, 1, 0, 0, 0, 419, 417, 1, 0, 0, 0, 420, 391, 1, 0, 0, 0, 420, 408,
3302
- 1, 0, 0, 0, 421, 69, 1, 0, 0, 0, 422, 427, 5, 37, 0, 0, 423, 424, 5, 5, 0, 0, 424, 426,
3303
- 5, 37, 0, 0, 425, 423, 1, 0, 0, 0, 426, 429, 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 427, 428,
3304
- 1, 0, 0, 0, 428, 71, 1, 0, 0, 0, 429, 427, 1, 0, 0, 0, 430, 432, 5, 33, 0, 0, 431, 433,
3305
- 3, 50, 25, 0, 432, 431, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 438,
3306
- 5, 34, 0, 0, 435, 436, 5, 5, 0, 0, 436, 438, 5, 37, 0, 0, 437, 430, 1, 0, 0, 0, 437, 435,
3307
- 1, 0, 0, 0, 438, 73, 1, 0, 0, 0, 439, 441, 3, 76, 38, 0, 440, 439, 1, 0, 0, 0, 440, 441,
3308
- 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 444, 5, 37, 0, 0, 443, 445, 3, 72, 36, 0, 444, 443,
3309
- 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,
3310
- 0, 0, 0, 448, 450, 5, 29, 0, 0, 449, 448, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 451, 1,
3311
- 0, 0, 0, 451, 453, 5, 31, 0, 0, 452, 454, 3, 56, 28, 0, 453, 452, 1, 0, 0, 0, 453, 454,
3312
- 1, 0, 0, 0, 454, 77, 1, 0, 0, 0, 455, 456, 5, 21, 0, 0, 456, 457, 3, 56, 28, 0, 457, 79,
3313
- 1, 0, 0, 0, 458, 459, 5, 10, 0, 0, 459, 460, 5, 11, 0, 0, 460, 461, 5, 1, 0, 0, 461, 462,
3314
- 5, 45, 0, 0, 462, 465, 5, 47, 0, 0, 463, 466, 5, 45, 0, 0, 464, 466, 3, 86, 43, 0, 465,
3315
- 463, 1, 0, 0, 0, 465, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 467,
3316
- 468, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 470, 5, 48, 0, 0, 470, 81, 1, 0, 0, 0, 471,
3317
- 472, 5, 10, 0, 0, 472, 473, 5, 12, 0, 0, 473, 474, 5, 1, 0, 0, 474, 475, 5, 45, 0, 0, 475,
3318
- 478, 5, 47, 0, 0, 476, 479, 5, 45, 0, 0, 477, 479, 3, 84, 42, 0, 478, 476, 1, 0, 0, 0,
3319
- 478, 477, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0,
3320
- 481, 482, 1, 0, 0, 0, 482, 483, 5, 48, 0, 0, 483, 83, 1, 0, 0, 0, 484, 486, 7, 9, 0, 0,
3321
- 485, 487, 5, 1, 0, 0, 486, 485, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 493, 1, 0, 0, 0,
3322
- 488, 494, 3, 50, 25, 0, 489, 490, 5, 33, 0, 0, 490, 491, 3, 50, 25, 0, 491, 492, 5, 34,
3323
- 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,
3324
- 0, 495, 496, 3, 88, 44, 0, 496, 497, 5, 1, 0, 0, 497, 498, 3, 90, 45, 0, 498, 87, 1, 0,
3325
- 0, 0, 499, 500, 7, 10, 0, 0, 500, 89, 1, 0, 0, 0, 501, 502, 5, 45, 0, 0, 502, 505, 5, 47,
3326
- 0, 0, 503, 506, 5, 45, 0, 0, 504, 506, 3, 86, 43, 0, 505, 503, 1, 0, 0, 0, 505, 504, 1,
3327
- 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 505, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 509, 1,
3328
- 0, 0, 0, 509, 519, 5, 48, 0, 0, 510, 515, 3, 56, 28, 0, 511, 512, 5, 2, 0, 0, 512, 514,
3329
- 3, 56, 28, 0, 513, 511, 1, 0, 0, 0, 514, 517, 1, 0, 0, 0, 515, 513, 1, 0, 0, 0, 515, 516,
3330
- 1, 0, 0, 0, 516, 519, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 518, 501, 1, 0, 0, 0, 518, 510,
3331
- 1, 0, 0, 0, 519, 91, 1, 0, 0, 0, 520, 521, 5, 6, 0, 0, 521, 522, 5, 38, 0, 0, 522, 523,
3332
- 5, 7, 0, 0, 523, 93, 1, 0, 0, 0, 524, 527, 5, 37, 0, 0, 525, 528, 5, 38, 0, 0, 526, 528,
3333
- 3, 56, 28, 0, 527, 525, 1, 0, 0, 0, 527, 526, 1, 0, 0, 0, 528, 531, 1, 0, 0, 0, 529, 531,
3334
- 5, 37, 0, 0, 530, 524, 1, 0, 0, 0, 530, 529, 1, 0, 0, 0, 531, 95, 1, 0, 0, 0, 532, 536,
3335
- 5, 13, 0, 0, 533, 535, 3, 94, 47, 0, 534, 533, 1, 0, 0, 0, 535, 538, 1, 0, 0, 0, 536, 534,
3336
- 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,
3337
- 18, 0, 0, 540, 541, 5, 37, 0, 0, 541, 99, 1, 0, 0, 0, 542, 543, 5, 23, 0, 0, 543, 544,
3338
- 5, 37, 0, 0, 544, 101, 1, 0, 0, 0, 545, 546, 5, 26, 0, 0, 546, 547, 5, 1, 0, 0, 547, 548,
3339
- 5, 45, 0, 0, 548, 551, 5, 47, 0, 0, 549, 552, 5, 45, 0, 0, 550, 552, 3, 2, 1, 0, 551, 549,
3340
- 1, 0, 0, 0, 551, 550, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 551, 1, 0, 0, 0, 553, 554,
3341
- 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 5, 48, 0, 0, 556, 103, 1, 0, 0, 0, 67, 106,
3342
- 108, 129, 134, 142, 144, 154, 156, 171, 175, 180, 184, 191, 198, 206, 210, 220,
3343
- 228, 230, 241, 252, 254, 260, 266, 270, 276, 278, 297, 304, 312, 315, 333, 341,
3344
- 353, 355, 363, 367, 373, 381, 383, 389, 396, 405, 417, 420, 427, 432, 437, 440,
3345
- 446, 449, 453, 465, 467, 478, 480, 486, 493, 505, 507, 515, 518, 527, 530, 536,
3346
- 551, 553
3464
+ 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,
3465
+ 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,
3466
+ 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,
3467
+ 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,
3468
+ 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,
3469
+ 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,
3470
+ 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,
3471
+ 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,
3472
+ 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,
3473
+ 5, 13, 212, 8, 13, 10, 13, 12, 13, 215, 9, 13, 1, 13, 3, 13, 218, 8, 13, 1, 14, 1, 14,
3474
+ 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 226, 8, 14, 10, 14, 12, 14, 229, 9, 14, 1, 14, 1, 14,
3475
+ 1, 14, 1, 14, 1, 14, 4, 14, 236, 8, 14, 11, 14, 12, 14, 237, 1, 14, 1, 14, 1, 15, 1, 15,
3476
+ 1, 15, 1, 15, 1, 15, 5, 15, 247, 8, 15, 10, 15, 12, 15, 250, 9, 15, 1, 16, 1, 16, 1, 17,
3477
+ 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 260, 8, 17, 11, 17, 12, 17, 261, 1, 17, 1, 17,
3478
+ 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,
3479
+ 20, 3, 20, 278, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 4, 21, 284, 8, 21, 11, 21, 12, 21, 285,
3480
+ 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,
3481
+ 1, 25, 1, 25, 5, 25, 303, 8, 25, 10, 25, 12, 25, 306, 9, 25, 1, 25, 1, 25, 5, 25, 310,
3482
+ 8, 25, 10, 25, 12, 25, 313, 9, 25, 1, 25, 1, 25, 1, 25, 5, 25, 318, 8, 25, 10, 25, 12,
3483
+ 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,
3484
+ 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,
3485
+ 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,
3486
+ 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 364, 8, 28, 10, 28, 12, 28, 367,
3487
+ 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,
3488
+ 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,
3489
+ 32, 4, 32, 392, 8, 32, 11, 32, 12, 32, 393, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 400, 8,
3490
+ 33, 1, 34, 1, 34, 1, 34, 5, 34, 405, 8, 34, 10, 34, 12, 34, 408, 9, 34, 1, 34, 1, 34, 1,
3491
+ 34, 1, 34, 5, 34, 414, 8, 34, 10, 34, 12, 34, 417, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1,
3492
+ 34, 1, 34, 1, 34, 5, 34, 426, 8, 34, 10, 34, 12, 34, 429, 9, 34, 3, 34, 431, 8, 34, 1,
3493
+ 35, 1, 35, 1, 35, 5, 35, 436, 8, 35, 10, 35, 12, 35, 439, 9, 35, 1, 36, 1, 36, 3, 36, 443,
3494
+ 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,
3495
+ 37, 455, 8, 37, 11, 37, 12, 37, 456, 1, 38, 3, 38, 460, 8, 38, 1, 38, 1, 38, 3, 38, 464,
3496
+ 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,
3497
+ 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,
3498
+ 4, 41, 489, 8, 41, 11, 41, 12, 41, 490, 1, 41, 1, 41, 1, 42, 1, 42, 3, 42, 497, 8, 42,
3499
+ 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,
3500
+ 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 4, 45, 516, 8, 45, 11, 45, 12, 45, 517, 1, 45, 1, 45,
3501
+ 1, 45, 1, 45, 5, 45, 524, 8, 45, 10, 45, 12, 45, 527, 9, 45, 3, 45, 529, 8, 45, 1, 46,
3502
+ 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,
3503
+ 48, 1, 48, 5, 48, 545, 8, 48, 10, 48, 12, 48, 548, 9, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1,
3504
+ 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 4, 51, 562, 8, 51, 11, 51, 12, 51,
3505
+ 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,
3506
+ 52, 12, 52, 576, 1, 52, 1, 52, 5, 52, 581, 8, 52, 10, 52, 12, 52, 584, 9, 52, 1, 52, 3,
3507
+ 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,
3508
+ 11, 53, 12, 53, 598, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 4, 54, 609,
3509
+ 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,
3510
+ 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
3511
+ 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100,
3512
+ 102, 104, 106, 108, 0, 12, 2, 0, 9, 9, 18, 20, 1, 0, 44, 45, 2, 0, 45, 45, 48, 48, 2, 0,
3513
+ 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,
3514
+ 37, 2, 0, 43, 43, 45, 49, 2, 0, 14, 14, 44, 44, 2, 0, 44, 45, 48, 48, 656, 0, 112, 1, 0,
3515
+ 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,
3516
+ 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,
3517
+ 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,
3518
+ 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,
3519
+ 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,
3520
+ 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,
3521
+ 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,
3522
+ 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,
3523
+ 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,
3524
+ 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,
3525
+ 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,
3526
+ 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,
3527
+ 0, 106, 588, 1, 0, 0, 0, 108, 602, 1, 0, 0, 0, 110, 113, 3, 2, 1, 0, 111, 113, 5, 52, 0,
3528
+ 0, 112, 110, 1, 0, 0, 0, 112, 111, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 112, 1, 0, 0,
3529
+ 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,
3530
+ 118, 137, 3, 18, 9, 0, 119, 137, 3, 26, 13, 0, 120, 137, 3, 24, 12, 0, 121, 137, 3, 46,
3531
+ 23, 0, 122, 137, 3, 52, 26, 0, 123, 137, 3, 8, 4, 0, 124, 137, 3, 54, 27, 0, 125, 137,
3532
+ 3, 44, 22, 0, 126, 137, 3, 64, 32, 0, 127, 137, 3, 74, 37, 0, 128, 137, 3, 96, 48, 0,
3533
+ 129, 137, 3, 100, 50, 0, 130, 137, 3, 102, 51, 0, 131, 137, 3, 70, 35, 0, 132, 137,
3534
+ 3, 34, 17, 0, 133, 137, 3, 4, 2, 0, 134, 137, 3, 98, 49, 0, 135, 137, 3, 104, 52, 0, 136,
3535
+ 118, 1, 0, 0, 0, 136, 119, 1, 0, 0, 0, 136, 120, 1, 0, 0, 0, 136, 121, 1, 0, 0, 0, 136,
3536
+ 122, 1, 0, 0, 0, 136, 123, 1, 0, 0, 0, 136, 124, 1, 0, 0, 0, 136, 125, 1, 0, 0, 0, 136,
3537
+ 126, 1, 0, 0, 0, 136, 127, 1, 0, 0, 0, 136, 128, 1, 0, 0, 0, 136, 129, 1, 0, 0, 0, 136,
3538
+ 130, 1, 0, 0, 0, 136, 131, 1, 0, 0, 0, 136, 132, 1, 0, 0, 0, 136, 133, 1, 0, 0, 0, 136,
3539
+ 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,
3540
+ 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,
3541
+ 0, 0, 0, 143, 144, 7, 0, 0, 0, 144, 145, 5, 1, 0, 0, 145, 146, 5, 52, 0, 0, 146, 149, 5,
3542
+ 54, 0, 0, 147, 150, 5, 52, 0, 0, 148, 150, 3, 2, 1, 0, 149, 147, 1, 0, 0, 0, 149, 148,
3543
+ 1, 0, 0, 0, 150, 151, 1, 0, 0, 0, 151, 149, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 153,
3544
+ 1, 0, 0, 0, 153, 154, 5, 55, 0, 0, 154, 7, 1, 0, 0, 0, 155, 156, 3, 70, 35, 0, 156, 157,
3545
+ 5, 1, 0, 0, 157, 158, 5, 52, 0, 0, 158, 161, 5, 54, 0, 0, 159, 162, 5, 52, 0, 0, 160, 162,
3546
+ 3, 10, 5, 0, 161, 159, 1, 0, 0, 0, 161, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 161,
3547
+ 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,
3548
+ 0, 0, 0, 167, 168, 7, 1, 0, 0, 168, 169, 5, 1, 0, 0, 169, 170, 3, 62, 31, 0, 170, 11, 1,
3549
+ 0, 0, 0, 171, 172, 5, 14, 0, 0, 172, 173, 7, 2, 0, 0, 173, 13, 1, 0, 0, 0, 174, 175, 5,
3550
+ 44, 0, 0, 175, 178, 5, 1, 0, 0, 176, 179, 3, 62, 31, 0, 177, 179, 5, 44, 0, 0, 178, 176,
3551
+ 1, 0, 0, 0, 178, 177, 1, 0, 0, 0, 179, 15, 1, 0, 0, 0, 180, 183, 3, 56, 28, 0, 181, 183,
3552
+ 3, 46, 23, 0, 182, 180, 1, 0, 0, 0, 182, 181, 1, 0, 0, 0, 183, 187, 1, 0, 0, 0, 184, 186,
3553
+ 3, 14, 7, 0, 185, 184, 1, 0, 0, 0, 186, 189, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 187, 188,
3554
+ 1, 0, 0, 0, 188, 191, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 190, 192, 3, 12, 6, 0, 191, 190,
3555
+ 1, 0, 0, 0, 191, 192, 1, 0, 0, 0, 192, 17, 1, 0, 0, 0, 193, 194, 5, 15, 0, 0, 194, 195,
3556
+ 3, 16, 8, 0, 195, 19, 1, 0, 0, 0, 196, 199, 3, 16, 8, 0, 197, 199, 3, 12, 6, 0, 198, 196,
3557
+ 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,
3558
+ 0, 0, 0, 202, 205, 5, 16, 0, 0, 203, 206, 3, 20, 10, 0, 204, 206, 5, 18, 0, 0, 205, 203,
3559
+ 1, 0, 0, 0, 205, 204, 1, 0, 0, 0, 206, 25, 1, 0, 0, 0, 207, 217, 5, 17, 0, 0, 208, 213,
3560
+ 3, 20, 10, 0, 209, 210, 5, 2, 0, 0, 210, 212, 3, 20, 10, 0, 211, 209, 1, 0, 0, 0, 212,
3561
+ 215, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 218, 1, 0, 0, 0, 215,
3562
+ 213, 1, 0, 0, 0, 216, 218, 5, 18, 0, 0, 217, 208, 1, 0, 0, 0, 217, 216, 1, 0, 0, 0, 218,
3563
+ 27, 1, 0, 0, 0, 219, 220, 5, 16, 0, 0, 220, 221, 3, 20, 10, 0, 221, 222, 5, 17, 0, 0, 222,
3564
+ 227, 3, 20, 10, 0, 223, 224, 5, 2, 0, 0, 224, 226, 3, 20, 10, 0, 225, 223, 1, 0, 0, 0,
3565
+ 226, 229, 1, 0, 0, 0, 227, 225, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 230, 1, 0, 0, 0,
3566
+ 229, 227, 1, 0, 0, 0, 230, 231, 5, 1, 0, 0, 231, 232, 5, 52, 0, 0, 232, 235, 5, 54, 0,
3567
+ 0, 233, 236, 5, 52, 0, 0, 234, 236, 3, 30, 15, 0, 235, 233, 1, 0, 0, 0, 235, 234, 1, 0,
3568
+ 0, 0, 236, 237, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 239, 1, 0,
3569
+ 0, 0, 239, 240, 5, 55, 0, 0, 240, 29, 1, 0, 0, 0, 241, 242, 3, 22, 11, 0, 242, 243, 5,
3570
+ 1, 0, 0, 243, 248, 3, 32, 16, 0, 244, 245, 5, 2, 0, 0, 245, 247, 3, 32, 16, 0, 246, 244,
3571
+ 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,
3572
+ 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,
3573
+ 12, 0, 254, 255, 5, 1, 0, 0, 255, 256, 5, 52, 0, 0, 256, 259, 5, 54, 0, 0, 257, 260, 5,
3574
+ 52, 0, 0, 258, 260, 3, 36, 18, 0, 259, 257, 1, 0, 0, 0, 259, 258, 1, 0, 0, 0, 260, 261,
3575
+ 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 264,
3576
+ 5, 55, 0, 0, 264, 35, 1, 0, 0, 0, 265, 268, 3, 2, 1, 0, 266, 268, 3, 38, 19, 0, 267, 265,
3577
+ 1, 0, 0, 0, 267, 266, 1, 0, 0, 0, 268, 37, 1, 0, 0, 0, 269, 270, 3, 22, 11, 0, 270, 273,
3578
+ 5, 1, 0, 0, 271, 274, 3, 40, 20, 0, 272, 274, 3, 42, 21, 0, 273, 271, 1, 0, 0, 0, 273,
3579
+ 272, 1, 0, 0, 0, 274, 39, 1, 0, 0, 0, 275, 278, 3, 2, 1, 0, 276, 278, 5, 42, 0, 0, 277,
3580
+ 275, 1, 0, 0, 0, 277, 276, 1, 0, 0, 0, 278, 41, 1, 0, 0, 0, 279, 280, 5, 52, 0, 0, 280,
3581
+ 283, 5, 54, 0, 0, 281, 284, 5, 52, 0, 0, 282, 284, 3, 2, 1, 0, 283, 281, 1, 0, 0, 0, 283,
3582
+ 282, 1, 0, 0, 0, 284, 285, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286,
3583
+ 287, 1, 0, 0, 0, 287, 288, 5, 55, 0, 0, 288, 43, 1, 0, 0, 0, 289, 290, 5, 8, 0, 0, 290,
3584
+ 45, 1, 0, 0, 0, 291, 292, 3, 70, 35, 0, 292, 293, 5, 3, 0, 0, 293, 294, 3, 56, 28, 0, 294,
3585
+ 47, 1, 0, 0, 0, 295, 296, 5, 44, 0, 0, 296, 297, 5, 3, 0, 0, 297, 298, 3, 56, 28, 0, 298,
3586
+ 49, 1, 0, 0, 0, 299, 304, 3, 56, 28, 0, 300, 301, 5, 2, 0, 0, 301, 303, 3, 56, 28, 0, 302,
3587
+ 300, 1, 0, 0, 0, 303, 306, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305,
3588
+ 311, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307, 308, 5, 2, 0, 0, 308, 310, 3, 48, 24, 0, 309,
3589
+ 307, 1, 0, 0, 0, 310, 313, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312,
3590
+ 323, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 314, 319, 3, 48, 24, 0, 315, 316, 5, 2, 0, 0, 316,
3591
+ 318, 3, 48, 24, 0, 317, 315, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319,
3592
+ 320, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 299, 1, 0, 0, 0, 322,
3593
+ 314, 1, 0, 0, 0, 323, 51, 1, 0, 0, 0, 324, 325, 3, 70, 35, 0, 325, 326, 5, 3, 0, 0, 326,
3594
+ 327, 3, 56, 28, 0, 327, 53, 1, 0, 0, 0, 328, 329, 5, 4, 0, 0, 329, 330, 5, 44, 0, 0, 330,
3595
+ 331, 5, 3, 0, 0, 331, 332, 3, 56, 28, 0, 332, 55, 1, 0, 0, 0, 333, 334, 6, 28, -1, 0, 334,
3596
+ 335, 5, 40, 0, 0, 335, 336, 3, 56, 28, 0, 336, 337, 5, 41, 0, 0, 337, 349, 1, 0, 0, 0,
3597
+ 338, 341, 3, 62, 31, 0, 339, 341, 3, 70, 35, 0, 340, 338, 1, 0, 0, 0, 340, 339, 1, 0,
3598
+ 0, 0, 341, 349, 1, 0, 0, 0, 342, 343, 3, 60, 30, 0, 343, 344, 3, 56, 28, 8, 344, 349,
3599
+ 1, 0, 0, 0, 345, 349, 3, 80, 40, 0, 346, 349, 3, 82, 41, 0, 347, 349, 3, 74, 37, 0, 348,
3600
+ 333, 1, 0, 0, 0, 348, 340, 1, 0, 0, 0, 348, 342, 1, 0, 0, 0, 348, 345, 1, 0, 0, 0, 348,
3601
+ 346, 1, 0, 0, 0, 348, 347, 1, 0, 0, 0, 349, 365, 1, 0, 0, 0, 350, 351, 10, 7, 0, 0, 351,
3602
+ 352, 7, 4, 0, 0, 352, 364, 3, 56, 28, 8, 353, 354, 10, 6, 0, 0, 354, 355, 7, 5, 0, 0, 355,
3603
+ 364, 3, 56, 28, 7, 356, 357, 10, 5, 0, 0, 357, 358, 3, 58, 29, 0, 358, 359, 3, 56, 28,
3604
+ 6, 359, 364, 1, 0, 0, 0, 360, 361, 10, 4, 0, 0, 361, 362, 7, 6, 0, 0, 362, 364, 3, 56,
3605
+ 28, 5, 363, 350, 1, 0, 0, 0, 363, 353, 1, 0, 0, 0, 363, 356, 1, 0, 0, 0, 363, 360, 1, 0,
3606
+ 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,
3607
+ 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,
3608
+ 371, 61, 1, 0, 0, 0, 372, 374, 5, 37, 0, 0, 373, 372, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0,
3609
+ 374, 375, 1, 0, 0, 0, 375, 378, 7, 9, 0, 0, 376, 378, 3, 92, 46, 0, 377, 373, 1, 0, 0,
3610
+ 0, 377, 376, 1, 0, 0, 0, 378, 63, 1, 0, 0, 0, 379, 380, 5, 22, 0, 0, 380, 381, 5, 44, 0,
3611
+ 0, 381, 383, 5, 40, 0, 0, 382, 384, 3, 68, 34, 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0,
3612
+ 0, 0, 384, 385, 1, 0, 0, 0, 385, 386, 5, 41, 0, 0, 386, 387, 5, 1, 0, 0, 387, 388, 5, 52,
3613
+ 0, 0, 388, 391, 5, 54, 0, 0, 389, 392, 5, 52, 0, 0, 390, 392, 3, 66, 33, 0, 391, 389,
3614
+ 1, 0, 0, 0, 391, 390, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 391, 1, 0, 0, 0, 393, 394,
3615
+ 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 396, 5, 55, 0, 0, 396, 65, 1, 0, 0, 0, 397, 400,
3616
+ 3, 2, 1, 0, 398, 400, 3, 78, 39, 0, 399, 397, 1, 0, 0, 0, 399, 398, 1, 0, 0, 0, 400, 67,
3617
+ 1, 0, 0, 0, 401, 406, 5, 44, 0, 0, 402, 403, 5, 2, 0, 0, 403, 405, 5, 44, 0, 0, 404, 402,
3618
+ 1, 0, 0, 0, 405, 408, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 415,
3619
+ 1, 0, 0, 0, 408, 406, 1, 0, 0, 0, 409, 410, 5, 2, 0, 0, 410, 411, 5, 44, 0, 0, 411, 412,
3620
+ 5, 3, 0, 0, 412, 414, 3, 62, 31, 0, 413, 409, 1, 0, 0, 0, 414, 417, 1, 0, 0, 0, 415, 413,
3621
+ 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 431, 1, 0, 0, 0, 417, 415, 1, 0, 0, 0, 418, 419,
3622
+ 5, 44, 0, 0, 419, 420, 5, 3, 0, 0, 420, 427, 3, 62, 31, 0, 421, 422, 5, 2, 0, 0, 422, 423,
3623
+ 5, 44, 0, 0, 423, 424, 5, 3, 0, 0, 424, 426, 3, 62, 31, 0, 425, 421, 1, 0, 0, 0, 426, 429,
3624
+ 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 431, 1, 0, 0, 0, 429, 427,
3625
+ 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,
3626
+ 44, 0, 0, 433, 434, 5, 5, 0, 0, 434, 436, 5, 44, 0, 0, 435, 433, 1, 0, 0, 0, 436, 439,
3627
+ 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,
3628
+ 0, 0, 0, 440, 442, 5, 40, 0, 0, 441, 443, 3, 50, 25, 0, 442, 441, 1, 0, 0, 0, 442, 443,
3629
+ 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 448, 5, 41, 0, 0, 445, 446, 5, 5, 0, 0, 446, 448,
3630
+ 5, 44, 0, 0, 447, 440, 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 448, 73, 1, 0, 0, 0, 449, 451,
3631
+ 3, 76, 38, 0, 450, 449, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 454,
3632
+ 5, 44, 0, 0, 453, 455, 3, 72, 36, 0, 454, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 454,
3633
+ 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 75, 1, 0, 0, 0, 458, 460, 5, 36, 0, 0, 459, 458,
3634
+ 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 463, 5, 38, 0, 0, 462, 464,
3635
+ 3, 56, 28, 0, 463, 462, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 77, 1, 0, 0, 0, 465, 466,
3636
+ 5, 21, 0, 0, 466, 467, 3, 56, 28, 0, 467, 79, 1, 0, 0, 0, 468, 469, 5, 10, 0, 0, 469, 470,
3637
+ 5, 11, 0, 0, 470, 471, 5, 1, 0, 0, 471, 472, 5, 52, 0, 0, 472, 475, 5, 54, 0, 0, 473, 476,
3638
+ 5, 52, 0, 0, 474, 476, 3, 86, 43, 0, 475, 473, 1, 0, 0, 0, 475, 474, 1, 0, 0, 0, 476, 477,
3639
+ 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480,
3640
+ 5, 55, 0, 0, 480, 81, 1, 0, 0, 0, 481, 482, 5, 10, 0, 0, 482, 483, 5, 12, 0, 0, 483, 484,
3641
+ 5, 1, 0, 0, 484, 485, 5, 52, 0, 0, 485, 488, 5, 54, 0, 0, 486, 489, 5, 52, 0, 0, 487, 489,
3642
+ 3, 84, 42, 0, 488, 486, 1, 0, 0, 0, 488, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 488,
3643
+ 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 493, 5, 55, 0, 0, 493, 83,
3644
+ 1, 0, 0, 0, 494, 496, 7, 10, 0, 0, 495, 497, 5, 1, 0, 0, 496, 495, 1, 0, 0, 0, 496, 497,
3645
+ 1, 0, 0, 0, 497, 503, 1, 0, 0, 0, 498, 504, 3, 50, 25, 0, 499, 500, 5, 40, 0, 0, 500, 501,
3646
+ 3, 50, 25, 0, 501, 502, 5, 41, 0, 0, 502, 504, 1, 0, 0, 0, 503, 498, 1, 0, 0, 0, 503, 499,
3647
+ 1, 0, 0, 0, 504, 85, 1, 0, 0, 0, 505, 506, 3, 88, 44, 0, 506, 507, 5, 1, 0, 0, 507, 508,
3648
+ 3, 90, 45, 0, 508, 87, 1, 0, 0, 0, 509, 510, 7, 11, 0, 0, 510, 89, 1, 0, 0, 0, 511, 512,
3649
+ 5, 52, 0, 0, 512, 515, 5, 54, 0, 0, 513, 516, 5, 52, 0, 0, 514, 516, 3, 86, 43, 0, 515,
3650
+ 513, 1, 0, 0, 0, 515, 514, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 517,
3651
+ 518, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 529, 5, 55, 0, 0, 520, 525, 3, 56, 28, 0, 521,
3652
+ 522, 5, 2, 0, 0, 522, 524, 3, 56, 28, 0, 523, 521, 1, 0, 0, 0, 524, 527, 1, 0, 0, 0, 525,
3653
+ 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 529, 1, 0, 0, 0, 527, 525, 1, 0, 0, 0, 528,
3654
+ 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,
3655
+ 5, 45, 0, 0, 532, 533, 5, 7, 0, 0, 533, 93, 1, 0, 0, 0, 534, 537, 5, 44, 0, 0, 535, 538,
3656
+ 5, 45, 0, 0, 536, 538, 3, 56, 28, 0, 537, 535, 1, 0, 0, 0, 537, 536, 1, 0, 0, 0, 538, 541,
3657
+ 1, 0, 0, 0, 539, 541, 5, 44, 0, 0, 540, 534, 1, 0, 0, 0, 540, 539, 1, 0, 0, 0, 541, 95,
3658
+ 1, 0, 0, 0, 542, 546, 5, 13, 0, 0, 543, 545, 3, 94, 47, 0, 544, 543, 1, 0, 0, 0, 545, 548,
3659
+ 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,
3660
+ 0, 0, 0, 549, 550, 5, 18, 0, 0, 550, 551, 5, 44, 0, 0, 551, 99, 1, 0, 0, 0, 552, 553, 5,
3661
+ 23, 0, 0, 553, 554, 5, 44, 0, 0, 554, 101, 1, 0, 0, 0, 555, 556, 5, 27, 0, 0, 556, 557,
3662
+ 5, 1, 0, 0, 557, 558, 5, 52, 0, 0, 558, 561, 5, 54, 0, 0, 559, 562, 5, 52, 0, 0, 560, 562,
3663
+ 3, 2, 1, 0, 561, 559, 1, 0, 0, 0, 561, 560, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 561,
3664
+ 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 5, 55, 0, 0, 566, 103,
3665
+ 1, 0, 0, 0, 567, 568, 5, 24, 0, 0, 568, 569, 3, 56, 28, 0, 569, 570, 5, 1, 0, 0, 570, 571,
3666
+ 5, 52, 0, 0, 571, 574, 5, 54, 0, 0, 572, 575, 5, 52, 0, 0, 573, 575, 3, 2, 1, 0, 574, 572,
3667
+ 1, 0, 0, 0, 574, 573, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 576, 577,
3668
+ 1, 0, 0, 0, 577, 578, 1, 0, 0, 0, 578, 582, 5, 55, 0, 0, 579, 581, 3, 106, 53, 0, 580,
3669
+ 579, 1, 0, 0, 0, 581, 584, 1, 0, 0, 0, 582, 580, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583,
3670
+ 586, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 585, 587, 3, 108, 54, 0, 586, 585, 1, 0, 0, 0, 586,
3671
+ 587, 1, 0, 0, 0, 587, 105, 1, 0, 0, 0, 588, 589, 5, 25, 0, 0, 589, 590, 5, 24, 0, 0, 590,
3672
+ 591, 3, 56, 28, 0, 591, 592, 5, 1, 0, 0, 592, 593, 5, 52, 0, 0, 593, 596, 5, 54, 0, 0,
3673
+ 594, 597, 5, 52, 0, 0, 595, 597, 3, 2, 1, 0, 596, 594, 1, 0, 0, 0, 596, 595, 1, 0, 0, 0,
3674
+ 597, 598, 1, 0, 0, 0, 598, 596, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0,
3675
+ 600, 601, 5, 55, 0, 0, 601, 107, 1, 0, 0, 0, 602, 603, 5, 25, 0, 0, 603, 604, 5, 1, 0,
3676
+ 0, 604, 605, 5, 52, 0, 0, 605, 608, 5, 54, 0, 0, 606, 609, 5, 52, 0, 0, 607, 609, 3, 2,
3677
+ 1, 0, 608, 606, 1, 0, 0, 0, 608, 607, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 608, 1, 0,
3678
+ 0, 0, 610, 611, 1, 0, 0, 0, 611, 612, 1, 0, 0, 0, 612, 613, 5, 55, 0, 0, 613, 109, 1, 0,
3679
+ 0, 0, 75, 112, 114, 136, 141, 149, 151, 161, 163, 178, 182, 187, 191, 198, 205, 213,
3680
+ 217, 227, 235, 237, 248, 259, 261, 267, 273, 277, 283, 285, 304, 311, 319, 322,
3681
+ 340, 348, 363, 365, 373, 377, 383, 391, 393, 399, 406, 415, 427, 430, 437, 442,
3682
+ 447, 450, 456, 459, 463, 475, 477, 488, 490, 496, 503, 515, 517, 525, 528, 537,
3683
+ 540, 546, 561, 563, 574, 576, 582, 586, 596, 598, 608, 610
3347
3684
  ];
3348
3685
  CircuitScriptParser.vocabulary = new antlr.Vocabulary(CircuitScriptParser.literalNames, CircuitScriptParser.symbolicNames, []);
3349
3686
  CircuitScriptParser.decisionsToDFA = CircuitScriptParser._ATN.decisionToState.map((ds, index) => new antlr.DFA(ds, index));
@@ -3436,6 +3773,9 @@ class ExpressionContext extends antlr.ParserRuleContext {
3436
3773
  point_expr() {
3437
3774
  return this.getRuleContext(0, Point_exprContext);
3438
3775
  }
3776
+ if_expr() {
3777
+ return this.getRuleContext(0, If_exprContext);
3778
+ }
3439
3779
  get ruleIndex() {
3440
3780
  return CircuitScriptParser.RULE_expression;
3441
3781
  }
@@ -4269,6 +4609,33 @@ class MultiplyExprContext extends Data_exprContext {
4269
4609
  }
4270
4610
  }
4271
4611
  exports.MultiplyExprContext = MultiplyExprContext;
4612
+ class LogicalOperatorExprContext extends Data_exprContext {
4613
+ constructor(ctx) {
4614
+ super(ctx.parent, ctx.invokingState);
4615
+ super.copyFrom(ctx);
4616
+ }
4617
+ data_expr(i) {
4618
+ if (i === undefined) {
4619
+ return this.getRuleContexts(Data_exprContext);
4620
+ }
4621
+ return this.getRuleContext(i, Data_exprContext);
4622
+ }
4623
+ LogicalAnd() {
4624
+ return this.getToken(CircuitScriptParser.LogicalAnd, 0);
4625
+ }
4626
+ LogicalOr() {
4627
+ return this.getToken(CircuitScriptParser.LogicalOr, 0);
4628
+ }
4629
+ accept(visitor) {
4630
+ if (visitor.visitLogicalOperatorExpr) {
4631
+ return visitor.visitLogicalOperatorExpr(this);
4632
+ }
4633
+ else {
4634
+ return visitor.visitChildren(this);
4635
+ }
4636
+ }
4637
+ }
4638
+ exports.LogicalOperatorExprContext = LogicalOperatorExprContext;
4272
4639
  class DataExprContext extends Data_exprContext {
4273
4640
  constructor(ctx) {
4274
4641
  super(ctx.parent, ctx.invokingState);
@@ -4390,6 +4757,18 @@ class Binary_operatorContext extends antlr.ParserRuleContext {
4390
4757
  NotEquals() {
4391
4758
  return this.getToken(CircuitScriptParser.NotEquals, 0);
4392
4759
  }
4760
+ GreaterThan() {
4761
+ return this.getToken(CircuitScriptParser.GreaterThan, 0);
4762
+ }
4763
+ GreatOrEqualThan() {
4764
+ return this.getToken(CircuitScriptParser.GreatOrEqualThan, 0);
4765
+ }
4766
+ LessThan() {
4767
+ return this.getToken(CircuitScriptParser.LessThan, 0);
4768
+ }
4769
+ LessOrEqualThan() {
4770
+ return this.getToken(CircuitScriptParser.LessOrEqualThan, 0);
4771
+ }
4393
4772
  get ruleIndex() {
4394
4773
  return CircuitScriptParser.RULE_binary_operator;
4395
4774
  }
@@ -4772,11 +5151,11 @@ class Create_graphic_exprContext extends antlr.ParserRuleContext {
4772
5151
  DEDENT() {
4773
5152
  return this.getToken(CircuitScriptParser.DEDENT, 0);
4774
5153
  }
4775
- sub_expr(i) {
5154
+ graphic_expr(i) {
4776
5155
  if (i === undefined) {
4777
- return this.getRuleContexts(Sub_exprContext);
5156
+ return this.getRuleContexts(Graphic_exprContext);
4778
5157
  }
4779
- return this.getRuleContext(i, Sub_exprContext);
5158
+ return this.getRuleContext(i, Graphic_exprContext);
4780
5159
  }
4781
5160
  get ruleIndex() {
4782
5161
  return CircuitScriptParser.RULE_create_graphic_expr;
@@ -4791,7 +5170,7 @@ class Create_graphic_exprContext extends antlr.ParserRuleContext {
4791
5170
  }
4792
5171
  }
4793
5172
  exports.Create_graphic_exprContext = Create_graphic_exprContext;
4794
- class Sub_exprContext extends antlr.ParserRuleContext {
5173
+ class Graphic_exprContext extends antlr.ParserRuleContext {
4795
5174
  constructor(parent, invokingState) {
4796
5175
  super(parent, invokingState);
4797
5176
  }
@@ -4811,18 +5190,18 @@ class Sub_exprContext extends antlr.ParserRuleContext {
4811
5190
  return this.getToken(CircuitScriptParser.CLOSE_PAREN, 0);
4812
5191
  }
4813
5192
  get ruleIndex() {
4814
- return CircuitScriptParser.RULE_sub_expr;
5193
+ return CircuitScriptParser.RULE_graphic_expr;
4815
5194
  }
4816
5195
  accept(visitor) {
4817
- if (visitor.visitSub_expr) {
4818
- return visitor.visitSub_expr(this);
5196
+ if (visitor.visitGraphic_expr) {
5197
+ return visitor.visitGraphic_expr(this);
4819
5198
  }
4820
5199
  else {
4821
5200
  return visitor.visitChildren(this);
4822
5201
  }
4823
5202
  }
4824
5203
  }
4825
- exports.Sub_exprContext = Sub_exprContext;
5204
+ exports.Graphic_exprContext = Graphic_exprContext;
4826
5205
  class Property_exprContext extends antlr.ParserRuleContext {
4827
5206
  constructor(parent, invokingState) {
4828
5207
  super(parent, invokingState);
@@ -5126,3 +5505,141 @@ class Frame_exprContext extends antlr.ParserRuleContext {
5126
5505
  }
5127
5506
  }
5128
5507
  exports.Frame_exprContext = Frame_exprContext;
5508
+ class If_exprContext extends antlr.ParserRuleContext {
5509
+ constructor(parent, invokingState) {
5510
+ super(parent, invokingState);
5511
+ }
5512
+ If() {
5513
+ return this.getToken(CircuitScriptParser.If, 0);
5514
+ }
5515
+ data_expr() {
5516
+ return this.getRuleContext(0, Data_exprContext);
5517
+ }
5518
+ NEWLINE(i) {
5519
+ if (i === undefined) {
5520
+ return this.getTokens(CircuitScriptParser.NEWLINE);
5521
+ }
5522
+ else {
5523
+ return this.getToken(CircuitScriptParser.NEWLINE, i);
5524
+ }
5525
+ }
5526
+ INDENT() {
5527
+ return this.getToken(CircuitScriptParser.INDENT, 0);
5528
+ }
5529
+ DEDENT() {
5530
+ return this.getToken(CircuitScriptParser.DEDENT, 0);
5531
+ }
5532
+ expression(i) {
5533
+ if (i === undefined) {
5534
+ return this.getRuleContexts(ExpressionContext);
5535
+ }
5536
+ return this.getRuleContext(i, ExpressionContext);
5537
+ }
5538
+ if_inner_expr(i) {
5539
+ if (i === undefined) {
5540
+ return this.getRuleContexts(If_inner_exprContext);
5541
+ }
5542
+ return this.getRuleContext(i, If_inner_exprContext);
5543
+ }
5544
+ else_expr() {
5545
+ return this.getRuleContext(0, Else_exprContext);
5546
+ }
5547
+ get ruleIndex() {
5548
+ return CircuitScriptParser.RULE_if_expr;
5549
+ }
5550
+ accept(visitor) {
5551
+ if (visitor.visitIf_expr) {
5552
+ return visitor.visitIf_expr(this);
5553
+ }
5554
+ else {
5555
+ return visitor.visitChildren(this);
5556
+ }
5557
+ }
5558
+ }
5559
+ exports.If_exprContext = If_exprContext;
5560
+ class If_inner_exprContext extends antlr.ParserRuleContext {
5561
+ constructor(parent, invokingState) {
5562
+ super(parent, invokingState);
5563
+ }
5564
+ Else() {
5565
+ return this.getToken(CircuitScriptParser.Else, 0);
5566
+ }
5567
+ If() {
5568
+ return this.getToken(CircuitScriptParser.If, 0);
5569
+ }
5570
+ data_expr() {
5571
+ return this.getRuleContext(0, Data_exprContext);
5572
+ }
5573
+ NEWLINE(i) {
5574
+ if (i === undefined) {
5575
+ return this.getTokens(CircuitScriptParser.NEWLINE);
5576
+ }
5577
+ else {
5578
+ return this.getToken(CircuitScriptParser.NEWLINE, i);
5579
+ }
5580
+ }
5581
+ INDENT() {
5582
+ return this.getToken(CircuitScriptParser.INDENT, 0);
5583
+ }
5584
+ DEDENT() {
5585
+ return this.getToken(CircuitScriptParser.DEDENT, 0);
5586
+ }
5587
+ expression(i) {
5588
+ if (i === undefined) {
5589
+ return this.getRuleContexts(ExpressionContext);
5590
+ }
5591
+ return this.getRuleContext(i, ExpressionContext);
5592
+ }
5593
+ get ruleIndex() {
5594
+ return CircuitScriptParser.RULE_if_inner_expr;
5595
+ }
5596
+ accept(visitor) {
5597
+ if (visitor.visitIf_inner_expr) {
5598
+ return visitor.visitIf_inner_expr(this);
5599
+ }
5600
+ else {
5601
+ return visitor.visitChildren(this);
5602
+ }
5603
+ }
5604
+ }
5605
+ exports.If_inner_exprContext = If_inner_exprContext;
5606
+ class Else_exprContext extends antlr.ParserRuleContext {
5607
+ constructor(parent, invokingState) {
5608
+ super(parent, invokingState);
5609
+ }
5610
+ Else() {
5611
+ return this.getToken(CircuitScriptParser.Else, 0);
5612
+ }
5613
+ NEWLINE(i) {
5614
+ if (i === undefined) {
5615
+ return this.getTokens(CircuitScriptParser.NEWLINE);
5616
+ }
5617
+ else {
5618
+ return this.getToken(CircuitScriptParser.NEWLINE, i);
5619
+ }
5620
+ }
5621
+ INDENT() {
5622
+ return this.getToken(CircuitScriptParser.INDENT, 0);
5623
+ }
5624
+ DEDENT() {
5625
+ return this.getToken(CircuitScriptParser.DEDENT, 0);
5626
+ }
5627
+ expression(i) {
5628
+ if (i === undefined) {
5629
+ return this.getRuleContexts(ExpressionContext);
5630
+ }
5631
+ return this.getRuleContext(i, ExpressionContext);
5632
+ }
5633
+ get ruleIndex() {
5634
+ return CircuitScriptParser.RULE_else_expr;
5635
+ }
5636
+ accept(visitor) {
5637
+ if (visitor.visitElse_expr) {
5638
+ return visitor.visitElse_expr(this);
5639
+ }
5640
+ else {
5641
+ return visitor.visitChildren(this);
5642
+ }
5643
+ }
5644
+ }
5645
+ exports.Else_exprContext = Else_exprContext;