@plurnk/plurnk-contracts 1.16.5 → 1.17.0

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 (88) hide show
  1. package/README.md +13 -29
  2. package/SPEC.md +600 -519
  3. package/dist/conformance/agui-v1.json +3 -3
  4. package/dist/schema/CapabilityProjection.json +2 -4
  5. package/dist/schema/ClientStatement.json +5 -52
  6. package/dist/schema/FunctionalityDefinitionState.json +2 -2
  7. package/dist/schema/LineMarker.json +1 -1
  8. package/dist/schema/LoopPolicy.json +2 -3
  9. package/dist/schema/MatcherBody.json +6 -6
  10. package/dist/schema/McpServerDefinition.json +17 -0
  11. package/dist/schema/ModelCatalogPage.json +10 -1
  12. package/dist/schema/ModelRoute.json +9 -0
  13. package/dist/schema/Notice.json +1 -1
  14. package/dist/schema/ParsedPath.json +3 -2
  15. package/dist/schema/Plan.json +9 -5
  16. package/dist/schema/PlurnkStatement.json +86 -134
  17. package/dist/schema/ProposalProjection.json +2 -1
  18. package/dist/schema/ResourceSelection.json +51 -27
  19. package/dist/schema/SkillDefinition.json +3 -3
  20. package/dist/src/AcpPlanValue.d.ts +0 -1
  21. package/dist/src/AcpPlanValue.d.ts.map +1 -1
  22. package/dist/src/AcpPlanValue.js +14 -13
  23. package/dist/src/AcpPlanValue.js.map +1 -1
  24. package/dist/src/ApplicationPort.d.ts +16 -14
  25. package/dist/src/ApplicationPort.d.ts.map +1 -1
  26. package/dist/src/AstBuilder.d.ts +3 -2
  27. package/dist/src/AstBuilder.d.ts.map +1 -1
  28. package/dist/src/AstBuilder.js +340 -187
  29. package/dist/src/AstBuilder.js.map +1 -1
  30. package/dist/src/JsonDocument.d.ts +2 -0
  31. package/dist/src/JsonDocument.d.ts.map +1 -0
  32. package/dist/src/JsonDocument.js +14 -0
  33. package/dist/src/JsonDocument.js.map +1 -0
  34. package/dist/src/LoopLifecycle.d.ts +3 -0
  35. package/dist/src/LoopLifecycle.d.ts.map +1 -0
  36. package/dist/src/LoopLifecycle.js +14 -0
  37. package/dist/src/LoopLifecycle.js.map +1 -0
  38. package/dist/src/PlanValue.d.ts +1 -1
  39. package/dist/src/PlanValue.d.ts.map +1 -1
  40. package/dist/src/PlanValue.js +10 -6
  41. package/dist/src/PlanValue.js.map +1 -1
  42. package/dist/src/PlurnkErrorStrategy.d.ts.map +1 -1
  43. package/dist/src/PlurnkErrorStrategy.js +37 -142
  44. package/dist/src/PlurnkErrorStrategy.js.map +1 -1
  45. package/dist/src/PlurnkParseError.d.ts +3 -1
  46. package/dist/src/PlurnkParseError.d.ts.map +1 -1
  47. package/dist/src/PlurnkParseError.js +4 -1
  48. package/dist/src/PlurnkParseError.js.map +1 -1
  49. package/dist/src/PlurnkParser.d.ts +9 -5
  50. package/dist/src/PlurnkParser.d.ts.map +1 -1
  51. package/dist/src/PlurnkParser.js +175 -180
  52. package/dist/src/PlurnkParser.js.map +1 -1
  53. package/dist/src/RecordingListener.d.ts +1 -1
  54. package/dist/src/RecordingListener.d.ts.map +1 -1
  55. package/dist/src/RecordingListener.js +24 -6
  56. package/dist/src/RecordingListener.js.map +1 -1
  57. package/dist/src/TurnDisposition.d.ts +11 -0
  58. package/dist/src/TurnDisposition.d.ts.map +1 -0
  59. package/dist/src/TurnDisposition.js +32 -0
  60. package/dist/src/TurnDisposition.js.map +1 -0
  61. package/dist/src/Validator.js +1 -1
  62. package/dist/src/Validator.js.map +1 -1
  63. package/dist/src/generated/plurnkLexer.d.ts +93 -105
  64. package/dist/src/generated/plurnkLexer.d.ts.map +1 -1
  65. package/dist/src/generated/plurnkLexer.js +673 -828
  66. package/dist/src/generated/plurnkLexer.js.map +1 -1
  67. package/dist/src/generated/plurnkParser.d.ts +111 -152
  68. package/dist/src/generated/plurnkParser.d.ts.map +1 -1
  69. package/dist/src/generated/plurnkParser.js +756 -1082
  70. package/dist/src/generated/plurnkParser.js.map +1 -1
  71. package/dist/src/generated/plurnkParserVisitor.d.ts +15 -36
  72. package/dist/src/generated/plurnkParserVisitor.d.ts.map +1 -1
  73. package/dist/src/generated/plurnkParserVisitor.js +12 -30
  74. package/dist/src/generated/plurnkParserVisitor.js.map +1 -1
  75. package/dist/src/index.d.ts +5 -1
  76. package/dist/src/index.d.ts.map +1 -1
  77. package/dist/src/index.js +4 -1
  78. package/dist/src/index.js.map +1 -1
  79. package/dist/src/types.d.ts +3 -7
  80. package/dist/src/types.d.ts.map +1 -1
  81. package/dist/src/types.generated.d.ts +147 -80
  82. package/dist/src/types.generated.d.ts.map +1 -1
  83. package/dist/src/types.js +3 -3
  84. package/dist/src/types.js.map +1 -1
  85. package/package.json +4 -8
  86. package/plurnk.md +103 -119
  87. package/dist/plurnk.gemma.gbnf +0 -141
  88. package/dist/plurnk.qwen.gbnf +0 -130
@@ -1,40 +1,37 @@
1
1
  import * as antlr from "antlr4ng";
2
2
  export class plurnkLexer extends antlr.Lexer {
3
- static LPAREN = 1;
4
- static RPAREN = 2;
5
- static LBRACE = 3;
6
- static RBRACE = 4;
7
- static L_MARKER = 5;
8
- static COMBINED_L_MARKER = 6;
9
- static BODY_OPEN = 7;
10
- static SECTION_END = 8;
11
- static TARGET_TEXT = 9;
12
- static METADATA_TEXT = 10;
13
- static BODY_TEXT = 11;
14
- static TEXT = 12;
15
- static ANNOTATION = 13;
16
- static SEND_LABEL = 14;
17
- static EXECUTOR = 15;
18
- static OPEN_PLAN = 16;
19
- static OPEN_FIND = 17;
20
- static OPEN_READ = 18;
21
- static OPEN_EDIT = 19;
22
- static OPEN_COPY = 20;
23
- static OPEN_MOVE = 21;
24
- static OPEN_SEND = 22;
25
- static OPEN_EXEC = 23;
26
- static OPEN_BARE = 24;
27
- static OPEN_WORK = 25;
28
- static OPEN_FORK = 26;
29
- static OPEN_KILL = 27;
30
- static OPEN_LOOK = 28;
31
- static OPEN_BUFF = 29;
32
- static FENCE_OPEN = 30;
33
- static FENCE_CLOSE = 31;
34
- static WS = 32;
35
- static SLOTS_WS = 33;
36
- static TEXT_HASH = 34;
37
- static TARGET_BACKSLASH = 35;
3
+ static OPEN_FIND = 1;
4
+ static OPEN_READ = 2;
5
+ static OPEN_EDIT = 3;
6
+ static OPEN_COPY = 4;
7
+ static OPEN_MOVE = 5;
8
+ static OPEN_SEND = 6;
9
+ static OPEN_TASK = 7;
10
+ static OPEN_EXEC = 8;
11
+ static OPEN_BARE = 9;
12
+ static OPEN_WORK = 10;
13
+ static OPEN_FORK = 11;
14
+ static OPEN_KILL = 12;
15
+ static OPEN_LOOK = 13;
16
+ static LPAREN = 14;
17
+ static RPAREN = 15;
18
+ static LBRACKET = 16;
19
+ static RBRACKET = 17;
20
+ static L_MARKER = 18;
21
+ static BODY_OPEN = 19;
22
+ static SECTION_END = 20;
23
+ static TARGET_TEXT = 21;
24
+ static METADATA_TEXT = 22;
25
+ static BODY_TEXT = 23;
26
+ static TEXT = 24;
27
+ static ASIDE = 25;
28
+ static OPEN = 26;
29
+ static WS = 27;
30
+ static SLOTS_WS = 28;
31
+ static TARGET_BACKSLASH = 29;
32
+ static TARGET_TICK = 30;
33
+ static METADATA_QUOTE = 31;
34
+ static B_CR = 32;
38
35
  static SLOTS = 1;
39
36
  static TARGET = 2;
40
37
  static METADATA = 3;
@@ -45,167 +42,278 @@ export class plurnkLexer extends antlr.Lexer {
45
42
  static literalNames = [
46
43
  null, null, null, null, null, null, null, null, null, null, null,
47
44
  null, null, null, null, null, null, null, null, null, null, null,
48
- null, null, null, null, null, null, null, null, null, null, null,
49
- null, "'#'", "'\\'"
45
+ null, null, null, null, null, null, null, "'\\'", null, "'\"'",
46
+ "'\\r'"
50
47
  ];
51
48
  static symbolicNames = [
52
- null, "LPAREN", "RPAREN", "LBRACE", "RBRACE", "L_MARKER", "COMBINED_L_MARKER",
53
- "BODY_OPEN", "SECTION_END", "TARGET_TEXT", "METADATA_TEXT", "BODY_TEXT",
54
- "TEXT", "ANNOTATION", "SEND_LABEL", "EXECUTOR", "OPEN_PLAN", "OPEN_FIND",
55
- "OPEN_READ", "OPEN_EDIT", "OPEN_COPY", "OPEN_MOVE", "OPEN_SEND",
56
- "OPEN_EXEC", "OPEN_BARE", "OPEN_WORK", "OPEN_FORK", "OPEN_KILL",
57
- "OPEN_LOOK", "OPEN_BUFF", "FENCE_OPEN", "FENCE_CLOSE", "WS", "SLOTS_WS",
58
- "TEXT_HASH", "TARGET_BACKSLASH"
49
+ null, "OPEN_FIND", "OPEN_READ", "OPEN_EDIT", "OPEN_COPY", "OPEN_MOVE",
50
+ "OPEN_SEND", "OPEN_TASK", "OPEN_EXEC", "OPEN_BARE", "OPEN_WORK",
51
+ "OPEN_FORK", "OPEN_KILL", "OPEN_LOOK", "LPAREN", "RPAREN", "LBRACKET",
52
+ "RBRACKET", "L_MARKER", "BODY_OPEN", "SECTION_END", "TARGET_TEXT",
53
+ "METADATA_TEXT", "BODY_TEXT", "TEXT", "ASIDE", "OPEN", "WS", "SLOTS_WS",
54
+ "TARGET_BACKSLASH", "TARGET_TICK", "METADATA_QUOTE", "B_CR"
59
55
  ];
60
56
  static modeNames = [
61
57
  "DEFAULT_MODE", "SLOTS", "TARGET", "METADATA", "BODY",
62
58
  ];
63
59
  static ruleNames = [
64
- "DELIMITER", "NUM", "L_PATTERN", "LINE_ANCHOR", "TEXT_COORD", "TEXT_L_PATTERN",
65
- "COMBINED_LINE_COORD", "COMBINED_TEXT_COORD", "COMBINED_TEXT_L_PATTERN",
66
- "EOL", "OPEN_PLAN", "OPEN_FIND", "OPEN_READ", "OPEN_EDIT", "OPEN_COPY",
67
- "OPEN_MOVE", "OPEN_SEND", "OPEN_EXEC", "OPEN_BARE", "OPEN_WORK",
68
- "OPEN_FORK", "OPEN_KILL", "OPEN_LOOK", "OPEN_BUFF", "FENCE_OPEN",
69
- "FENCE_CLOSE", "WS", "THINK_BLOCK", "CHANNEL_BLOCK", "TEXT", "TEXT_HASH",
70
- "SLOTS_WS", "SLOTS_SEND_LABEL", "SLOTS_EXECUTOR", "SLOTS_LPAREN",
71
- "SLOTS_LBRACE", "SLOTS_TEXT_L", "SLOTS_L", "SLOTS_COMBINED_TEXT_L",
72
- "SLOTS_ANNOTATION", "SLOTS_INLINE_BODY", "SLOTS_DIRECT_END", "SLOTS_BODY_OPEN",
60
+ "FENCE", "NAME", "NUM", "L_PATTERN", "LINE_ANCHOR", "DIGIT_ANCHOR",
61
+ "TEXT_COORD", "TEXT_L_PATTERN", "COMBINED_LINE_COORD", "COMBINED_TEXT_COORD",
62
+ "COMBINED_TEXT_L_PATTERN", "EOL", "OPEN", "UNKNOWN_TAG", "WS", "THINK_BLOCK",
63
+ "CHANNEL_BLOCK", "TEXT_RUN", "TEXT_TICK", "SLOTS_NEXT_OPENER", "SLOTS_WS",
64
+ "SLOTS_LPAREN", "SLOTS_LBRACKET", "SLOTS_TEXT_L", "SLOTS_L", "SLOTS_COMBINED_TEXT_L",
65
+ "SLOTS_ASIDE", "SLOTS_ASIDE_OPEN", "SLOTS_END", "SLOTS_INLINE_BODY",
66
+ "SLOTS_NEXT_HEADING", "SLOTS_BODY_OPEN", "TARGET_FENCE", "TARGET_BODY_OPEN",
73
67
  "TARGET_ESCAPE", "TARGET_INNER", "TARGET_BACKSLASH", "TARGET_NEST_OPEN",
74
- "TARGET_NEST_END", "TARGET_END", "METADATA_INNER", "METADATA_NEST_OPEN",
75
- "METADATA_NEST_END", "METADATA_END", "B_FENCE_CLOSE", "B_FENCE_END",
76
- "B_SECTION_END", "B_DIRECT_END", "B_EMPTY_SPACED_END", "B_RUN",
77
- "B_CRLF", "B_LF", "B_CR",
68
+ "TARGET_NEST_END", "TARGET_TEXT_SCOPE", "TARGET_SCOPE", "TARGET_TICK",
69
+ "TARGET_END", "METADATA_FENCE", "METADATA_BODY_OPEN", "METADATA_STRING",
70
+ "METADATA_INNER", "METADATA_TICK", "METADATA_QUOTE", "METADATA_NEST_OPEN",
71
+ "METADATA_NEST_END", "METADATA_END", "B_END", "B_EMPTY_END", "B_NEXT_HEADING",
72
+ "B_RUN", "B_TICK", "B_CRLF", "B_LF", "B_CR",
78
73
  ];
79
- activeDelimiter = null;
80
74
  openOp = "";
81
75
  openHeading = "";
82
76
  openHeadingLine = 0;
83
77
  openHeadingColumn = 0;
78
+ fenceLength = 0;
79
+ fenceDelimiter = "";
80
+ started = false;
81
+ // {§inline-chain} — a closer on the heading line may be followed by the next opener on the same line.
82
+ inlineChain = false;
83
+ unclosedAsides = [];
84
+ // After a closer's text, does an opener (backticks, digits, a known name) follow on the same line?
85
+ openerFollows() {
86
+ let cursor = 1;
87
+ while (this.inputStream.LA(cursor) === 0x20 || this.inputStream.LA(cursor) === 0x09)
88
+ cursor++;
89
+ let ticks = 0;
90
+ while (this.inputStream.LA(cursor) === 0x60) {
91
+ ticks++;
92
+ cursor++;
93
+ }
94
+ if (ticks < 3)
95
+ return false;
96
+ while (this.inputStream.LA(cursor) >= 0x30 && this.inputStream.LA(cursor) <= 0x39)
97
+ cursor++;
98
+ let name = "";
99
+ for (;;) {
100
+ const c = this.inputStream.LA(cursor);
101
+ if (c <= 0)
102
+ break;
103
+ const ch = String.fromCharCode(c);
104
+ if (!/[A-Za-z0-9_.+-]/.test(ch))
105
+ break;
106
+ name += ch;
107
+ cursor++;
108
+ }
109
+ return name !== "" && (Object.hasOwn(plurnkLexer.OPERATIONS, name) || this.knownExecutor(name));
110
+ }
111
+ noteUnclosedAside() {
112
+ this.unclosedAsides.push({ line: this.currentTokenStartLine, column: this.currentTokenColumn });
113
+ }
114
+ takeUnclosedAsides() {
115
+ const taken = this.unclosedAsides;
116
+ this.unclosedAsides = [];
117
+ return taken;
118
+ }
119
+ asideClosesOnLine() {
120
+ let cursor = 1;
121
+ for (;;) {
122
+ const c = this.inputStream.LA(cursor);
123
+ if (c <= 0 || c === 0x0A || c === 0x0D)
124
+ return false;
125
+ if (c === 0x2D && this.inputStream.LA(cursor + 1) === 0x2D && this.inputStream.LA(cursor + 2) === 0x3E)
126
+ return true;
127
+ cursor++;
128
+ }
129
+ }
130
+ // {§fence-heading-in-body} - tags that end an open block from inside it; the host adds executors.
131
+ knownExecutors = new Set(["sh"]);
132
+ // {§executor-case} - an executor tag matches its registered name in any case (`SH` is `sh`).
133
+ knownExecutor(name) {
134
+ if (this.knownExecutors.has(name))
135
+ return true;
136
+ const lower = name.toLowerCase();
137
+ for (const known of this.knownExecutors)
138
+ if (known.toLowerCase() === lower)
139
+ return true;
140
+ return false;
141
+ }
84
142
  slotReady = false;
85
143
  targetDepth = 0;
86
144
  metadataDepth = 0;
87
145
  metadataReady = false;
88
- bodyAtStart = false;
89
- terminalSend = false;
90
- documentFence = false;
91
- static PROTOCOL_OPS = [
92
- "FIND", "READ", "EDIT", "COPY", "MOVE",
93
- "SEND", "EXEC", "BARE", "WORK", "FORK", "KILL",
94
- ];
95
- static CLIENT_OPS = ["LOOK", "BUFF"];
96
- isDelimiterChar(c) {
97
- return (c >= 0x30 && c <= 0x39)
98
- || (c >= 0x41 && c <= 0x5A)
99
- || (c >= 0x61 && c <= 0x7A)
100
- || c === 0x5F;
101
- }
102
- matchesLiteral(offset, literal) {
103
- for (let i = 0; i < literal.length; i++) {
104
- if (this.inputStream.LA(offset + i) !== literal.charCodeAt(i))
105
- return false;
106
- }
107
- return true;
146
+ inlineBody = false;
147
+ inlineBodies = [];
148
+ unknownTags = [];
149
+ // {§interstitial-fence} - only a native operation or a known executor opens a block.
150
+ knownHeading() {
151
+ const name = this.text.replace(/^\x60+[0-9]*/, "");
152
+ return Object.hasOwn(plurnkLexer.OPERATIONS, name) || this.knownExecutor(name);
153
+ }
154
+ noteUnknownTag() {
155
+ this.unknownTags.push({ line: this.currentTokenStartLine, column: this.currentTokenColumn, tag: this.text.replace(/^\x60+[0-9]*/, "") });
156
+ }
157
+ takeUnknownTags() {
158
+ const taken = this.unknownTags;
159
+ this.unknownTags = [];
160
+ return taken;
108
161
  }
109
- headingAt(offset) {
110
- let level;
111
- let cursor = offset;
112
- if (this.matchesLiteral(cursor, "## PLAN")) {
113
- level = 1;
114
- cursor += "## PLAN".length;
115
- }
116
- else if (this.matchesLiteral(cursor, "### ")) {
117
- level = 2;
118
- cursor += 4;
119
- }
120
- else {
121
- return null;
122
- }
123
- let op = "PLAN";
124
- if (level === 2) {
125
- const operations = [...plurnkLexer.PROTOCOL_OPS, ...plurnkLexer.CLIENT_OPS];
126
- op = operations.find((candidate) => this.matchesLiteral(cursor, candidate)) ?? "";
127
- if (op.length === 0)
128
- return null;
129
- cursor += op.length;
130
- }
131
- let delimiter = "";
132
- while (this.isDelimiterChar(this.inputStream.LA(cursor))) {
133
- delimiter += String.fromCharCode(this.inputStream.LA(cursor));
134
- cursor++;
135
- }
136
- const next = this.inputStream.LA(cursor);
137
- const headerContinues = next <= 0
138
- || next === 0x20 || next === 0x09
139
- || next === 0x5B || next === 0x28 || next === 0x7B || next === 0x3C
140
- || next === 0x0A || next === 0x0D;
141
- if (!headerContinues)
142
- return null;
143
- const startsNextTurn = this.terminalSend;
144
- if (this.activeDelimiter !== null && delimiter !== this.activeDelimiter && !startsNextTurn)
145
- return null;
146
- return { level, op, delimiter };
147
- }
148
- matchesHeading(level, op) {
149
- // The initial PLAN terminates tolerated provider preamble text, even when
150
- // the provider omitted a separating newline. Once PLAN establishes the
151
- // lane, every heading retains the ordinary column-zero boundary.
152
- const initialPlan = level === 1 && op === "PLAN" && this.activeDelimiter === null;
153
- if (this.column !== 0 && !initialPlan)
154
- return false;
155
- const heading = this.headingAt(1);
156
- return heading !== null && heading.level === level && heading.op === op;
157
- }
158
- open(level, op) {
159
- const prefixLength = (level === 1 ? "## " : "### ").length + op.length;
160
- const delimiter = this.text.slice(prefixLength);
161
- const startsNextTurn = this.terminalSend;
162
- if (this.activeDelimiter === null || startsNextTurn)
163
- this.activeDelimiter = delimiter;
164
- this.openOp = op;
162
+ static OPERATIONS = {
163
+ FIND: plurnkLexer.OPEN_FIND, READ: plurnkLexer.OPEN_READ,
164
+ EDIT: plurnkLexer.OPEN_EDIT, COPY: plurnkLexer.OPEN_COPY, MOVE: plurnkLexer.OPEN_MOVE,
165
+ SEND: plurnkLexer.OPEN_SEND, EXEC: plurnkLexer.OPEN_EXEC, BARE: plurnkLexer.OPEN_BARE,
166
+ TASK: plurnkLexer.OPEN_TASK,
167
+ WORK: plurnkLexer.OPEN_WORK, FORK: plurnkLexer.OPEN_FORK, KILL: plurnkLexer.OPEN_KILL,
168
+ LOOK: plurnkLexer.OPEN_LOOK,
169
+ };
170
+ open(implicitName) {
171
+ this.fenceLength = 0;
172
+ while (this.text.charCodeAt(this.fenceLength) === 0x60)
173
+ this.fenceLength++;
174
+ // {§numeric-delimiter} - digits between the backticks and the name identify the block.
175
+ let digits = this.fenceLength;
176
+ while (this.text.charCodeAt(digits) >= 0x30 && this.text.charCodeAt(digits) <= 0x39)
177
+ digits++;
178
+ this.fenceDelimiter = this.text.slice(this.fenceLength, digits);
179
+ const name = implicitName ?? this.text.slice(digits);
180
+ const native = Object.hasOwn(plurnkLexer.OPERATIONS, name) ? plurnkLexer.OPERATIONS[name] : undefined;
181
+ this.openOp = native === undefined ? "EXEC" : name;
182
+ this.type = native ?? plurnkLexer.OPEN_EXEC;
183
+ this.inlineChain = false;
165
184
  this.openHeading = this.text;
166
185
  this.openHeadingLine = this.currentTokenStartLine;
167
186
  this.openHeadingColumn = this.currentTokenColumn;
187
+ this.started = true;
168
188
  this.slotReady = true;
169
- // {§exec-executor-slot} — an EXEC heading admits `{cwd=…}` before any path; elsewhere metadata follows a target.
170
- this.metadataReady = op === "EXEC";
171
- this.bodyAtStart = false;
172
- this.terminalSend = false;
189
+ // {§one-line-turn} - TASK takes its inventory as a heading-line block; a bracket there is a slot.
190
+ this.metadataReady = this.openOp === "EXEC" || this.openOp === "TASK";
191
+ this.inlineBody = false;
192
+ }
193
+ // {§indented-fences} - a fence line may carry leading horizontal whitespace; the line still
194
+ // starts there for every fence purpose (CommonMark allows three spaces; this allows any).
195
+ atLineStart() {
196
+ for (let back = 1;; back++) {
197
+ const c = this.inputStream.LA(-back);
198
+ if (c <= 0 || c === 0x0A || c === 0x0D)
199
+ return true;
200
+ if (c !== 0x20 && c !== 0x09)
201
+ return false;
202
+ }
203
+ }
204
+ skipHorizontal(offset) {
205
+ while (this.inputStream.LA(offset) === 0x20 || this.inputStream.LA(offset) === 0x09)
206
+ offset++;
207
+ return offset;
173
208
  }
174
209
  offsetAfterEol(offset) {
175
210
  if (this.inputStream.LA(offset) === 0x0D && this.inputStream.LA(offset + 1) === 0x0A)
176
211
  return offset + 2;
177
- if (this.inputStream.LA(offset) === 0x0A)
178
- return offset + 1;
179
- return null;
212
+ return this.inputStream.LA(offset) === 0x0A ? offset + 1 : null;
213
+ }
214
+ // {§fence-closer} - a closer is a line of at least the opener's backticks carrying exactly the
215
+ // opener's numeric delimiter (none when the opener had none). Count is CommonMark's rule; the
216
+ // delimiter is what lets an equal-count block nest ({§numeric-delimiter}).
217
+ closingAt(offset) {
218
+ if (this.inputStream.LA(offset === 1 ? -1 : offset - 1) === 0x60)
219
+ return false;
220
+ offset = this.skipHorizontal(offset);
221
+ let cursor = offset;
222
+ while (this.inputStream.LA(cursor) === 0x60)
223
+ cursor++;
224
+ if (cursor - offset < this.fenceLength)
225
+ return false;
226
+ let digits = "";
227
+ while (this.inputStream.LA(cursor) >= 0x30 && this.inputStream.LA(cursor) <= 0x39) {
228
+ digits += String.fromCharCode(this.inputStream.LA(cursor));
229
+ cursor++;
230
+ }
231
+ if (digits !== this.fenceDelimiter)
232
+ return false;
233
+ while (this.inputStream.LA(cursor) === 0x20 || this.inputStream.LA(cursor) === 0x09)
234
+ cursor++;
235
+ if (this.inputStream.LA(cursor) <= 0 || this.offsetAfterEol(cursor) !== null)
236
+ return true;
237
+ // {§inline-chain} — a closer followed on its line by the next opener still closes.
238
+ let ticks = 0;
239
+ while (this.inputStream.LA(cursor + ticks) === 0x60)
240
+ ticks++;
241
+ if (ticks < 3)
242
+ return false;
243
+ let at = cursor + ticks;
244
+ while (this.inputStream.LA(at) >= 0x30 && this.inputStream.LA(at) <= 0x39)
245
+ at++;
246
+ let name = "";
247
+ for (;;) {
248
+ const c = this.inputStream.LA(at);
249
+ if (c <= 0)
250
+ break;
251
+ const ch = String.fromCharCode(c);
252
+ if (!/[A-Za-z0-9_.+-]/.test(ch))
253
+ break;
254
+ name += ch;
255
+ at++;
256
+ }
257
+ return name !== "" && (Object.hasOwn(plurnkLexer.OPERATIONS, name) || this.knownExecutor(name));
258
+ }
259
+ // {§fence-heading-in-body} - a fence line of four or more backticks naming an operation or a known
260
+ // executor is a heading wherever it stands: it ends the open block without closing it, so a
261
+ // glued opener (eight backticks then READ) can never swallow the turn. A delimited block is exempt: its
262
+ // delimiter says everything up to its own closer is body ({§numeric-delimiter}).
263
+ headingAt(offset) {
264
+ let cursor = offset;
265
+ while (this.inputStream.LA(cursor) === 0x60)
266
+ cursor++;
267
+ if (cursor - offset < 4)
268
+ return false;
269
+ while (this.inputStream.LA(cursor) >= 0x30 && this.inputStream.LA(cursor) <= 0x39)
270
+ cursor++;
271
+ let name = "";
272
+ for (;;) {
273
+ const c = this.inputStream.LA(cursor);
274
+ if (c <= 0)
275
+ break;
276
+ const ch = String.fromCharCode(c);
277
+ if (!/[A-Za-z0-9_.+-]/.test(ch))
278
+ break;
279
+ name += ch;
280
+ cursor++;
281
+ }
282
+ if (name === "")
283
+ return false;
284
+ if (!Object.hasOwn(plurnkLexer.OPERATIONS, name) && !this.knownExecutor(name))
285
+ return false;
286
+ const next = this.inputStream.LA(cursor);
287
+ return next <= 0 || next === 0x20 || next === 0x09 || next === 0x28 || next === 0x3C || next === 0x5B
288
+ || this.offsetAfterEol(cursor) !== null;
180
289
  }
181
- headingAfterDirectEol() {
290
+ headingAfterEol() {
182
291
  const after = this.offsetAfterEol(1);
183
- return after !== null && this.headingAt(after) !== null;
292
+ return after !== null && this.headingAt(this.skipHorizontal(after));
184
293
  }
185
- headingAfterBlankLine() {
186
- let after = this.offsetAfterEol(1);
187
- if (after === null)
188
- return false;
189
- while (this.inputStream.LA(after) === 0x20 || this.inputStream.LA(after) === 0x09)
190
- after++;
191
- after = this.offsetAfterEol(after);
192
- return after !== null && this.headingAt(after) !== null;
294
+ closingAfterEol() {
295
+ const after = this.offsetAfterEol(1);
296
+ return after !== null && this.closingAt(this.skipHorizontal(after));
297
+ }
298
+ targetScopeEnd() {
299
+ let offset = 1;
300
+ while (this.inputStream.LA(offset) === 0x20 || this.inputStream.LA(offset) === 0x09)
301
+ offset++;
302
+ return this.targetDepth === 0 && this.inputStream.LA(offset) === 0x29;
303
+ }
304
+ inlineBodyAhead() {
305
+ const previous = this.inputStream.LA(-1);
306
+ return previous === 0x20 || previous === 0x09;
193
307
  }
194
- headingAfterEmptySpacedLine() {
195
- if (!this.bodyAtStart)
196
- return false;
197
- let after = 1;
198
- while (this.inputStream.LA(after) === 0x20 || this.inputStream.LA(after) === 0x09)
199
- after++;
200
- const lineEnd = this.offsetAfterEol(after);
201
- return lineEnd !== null && this.headingAt(lineEnd) !== null;
202
- }
203
- beginBody() { this.bodyAtStart = true; }
204
- retainBody() { this.bodyAtStart = false; }
205
- // {§heading-inline-body} — body text on the heading line is tolerated AND announced: the
206
- // parser turns each note into one warning-severity advisory after the statement.
207
- inlineBodies = [];
208
308
  noteInlineBody() {
309
+ this.inlineBody = true;
310
+ // {§naked-pattern} - a sigil is a matcher on any heading, and every heading-line word on FIND,
311
+ // READ or KILL is one, so only a bodied operation's stray heading text is worth an advisory.
312
+ const first = this.text.charCodeAt(0);
313
+ if (first === 0x2F || first === 0x24 || first === 0x7E || first === 0x26 || first === 0x5E)
314
+ return;
315
+ if (this.openOp === "FIND" || this.openOp === "READ" || this.openOp === "KILL")
316
+ return;
209
317
  this.inlineBodies.push({ line: this.getOpenTagLine(), column: this.getOpenTagColumn(), heading: this.getOpenHeading() });
210
318
  }
211
319
  takeInlineBodies() {
@@ -213,27 +321,16 @@ export class plurnkLexer extends antlr.Lexer {
213
321
  this.inlineBodies = [];
214
322
  return taken;
215
323
  }
216
- openDocumentFence() { this.documentFence = true; }
217
- closeDocumentFence() { this.documentFence = false; }
218
- inDocumentFence() { return this.documentFence; }
219
- fenceAfterDirectEol() {
220
- const after = this.offsetAfterEol(1);
221
- return after !== null && this.matchesLiteral(after, "```");
222
- }
223
- getOpenTag() { return this.openOp + (this.activeDelimiter ?? ""); }
324
+ getOpenTag() { return this.openOp; }
224
325
  getOpenOp() { return this.openOp; }
225
326
  getOpenTagLine() { return this.openHeadingLine; }
226
327
  getOpenTagColumn() { return this.openHeadingColumn; }
227
328
  getOpenHeading() { return this.openHeading; }
228
- // {§kill-scope} — KILL scopes lines of a log body or an entry, so it takes anchors like EDIT.
329
+ getFenceLength() { return this.fenceLength; }
229
330
  isTextCoordinateOp() {
230
331
  return this.openOp === "READ" || this.openOp === "EDIT" || this.openOp === "COPY" || this.openOp === "MOVE"
231
332
  || this.openOp === "KILL" || this.openOp === "LOOK";
232
333
  }
233
- inlineBodyAhead() {
234
- const previous = this.inputStream.LA(-1);
235
- return previous === 0x20 || previous === 0x09;
236
- }
237
334
  constructor(input) {
238
335
  super(input);
239
336
  this.interpreter = new antlr.LexerATNSimulator(this, plurnkLexer._ATN, plurnkLexer.decisionsToDFA, new antlr.PredictionContextCache());
@@ -247,659 +344,452 @@ export class plurnkLexer extends antlr.Lexer {
247
344
  get modeNames() { return plurnkLexer.modeNames; }
248
345
  action(localContext, ruleIndex, actionIndex) {
249
346
  switch (ruleIndex) {
250
- case 10:
251
- this.OPEN_PLAN_action(localContext, actionIndex);
252
- break;
253
- case 11:
254
- this.OPEN_FIND_action(localContext, actionIndex);
255
- break;
256
347
  case 12:
257
- this.OPEN_READ_action(localContext, actionIndex);
348
+ this.OPEN_action(localContext, actionIndex);
258
349
  break;
259
350
  case 13:
260
- this.OPEN_EDIT_action(localContext, actionIndex);
261
- break;
262
- case 14:
263
- this.OPEN_COPY_action(localContext, actionIndex);
264
- break;
265
- case 15:
266
- this.OPEN_MOVE_action(localContext, actionIndex);
267
- break;
268
- case 16:
269
- this.OPEN_SEND_action(localContext, actionIndex);
351
+ this.UNKNOWN_TAG_action(localContext, actionIndex);
270
352
  break;
271
353
  case 17:
272
- this.OPEN_EXEC_action(localContext, actionIndex);
354
+ this.TEXT_RUN_action(localContext, actionIndex);
273
355
  break;
274
356
  case 18:
275
- this.OPEN_BARE_action(localContext, actionIndex);
357
+ this.TEXT_TICK_action(localContext, actionIndex);
276
358
  break;
277
359
  case 19:
278
- this.OPEN_WORK_action(localContext, actionIndex);
360
+ this.SLOTS_NEXT_OPENER_action(localContext, actionIndex);
279
361
  break;
280
362
  case 20:
281
- this.OPEN_FORK_action(localContext, actionIndex);
363
+ this.SLOTS_WS_action(localContext, actionIndex);
282
364
  break;
283
365
  case 21:
284
- this.OPEN_KILL_action(localContext, actionIndex);
366
+ this.SLOTS_LPAREN_action(localContext, actionIndex);
285
367
  break;
286
368
  case 22:
287
- this.OPEN_LOOK_action(localContext, actionIndex);
288
- break;
289
- case 23:
290
- this.OPEN_BUFF_action(localContext, actionIndex);
291
- break;
292
- case 24:
293
- this.FENCE_OPEN_action(localContext, actionIndex);
294
- break;
295
- case 25:
296
- this.FENCE_CLOSE_action(localContext, actionIndex);
297
- break;
298
- case 31:
299
- this.SLOTS_WS_action(localContext, actionIndex);
369
+ this.SLOTS_LBRACKET_action(localContext, actionIndex);
300
370
  break;
301
- case 32:
302
- this.SLOTS_SEND_LABEL_action(localContext, actionIndex);
303
- break;
304
- case 33:
305
- this.SLOTS_EXECUTOR_action(localContext, actionIndex);
306
- break;
307
- case 34:
308
- this.SLOTS_LPAREN_action(localContext, actionIndex);
371
+ case 27:
372
+ this.SLOTS_ASIDE_OPEN_action(localContext, actionIndex);
309
373
  break;
310
- case 35:
311
- this.SLOTS_LBRACE_action(localContext, actionIndex);
374
+ case 28:
375
+ this.SLOTS_END_action(localContext, actionIndex);
312
376
  break;
313
- case 40:
377
+ case 29:
314
378
  this.SLOTS_INLINE_BODY_action(localContext, actionIndex);
315
379
  break;
316
- case 42:
317
- this.SLOTS_BODY_OPEN_action(localContext, actionIndex);
380
+ case 32:
381
+ this.TARGET_FENCE_action(localContext, actionIndex);
318
382
  break;
319
- case 46:
383
+ case 37:
320
384
  this.TARGET_NEST_OPEN_action(localContext, actionIndex);
321
385
  break;
322
- case 47:
386
+ case 38:
323
387
  this.TARGET_NEST_END_action(localContext, actionIndex);
324
388
  break;
325
- case 48:
389
+ case 42:
326
390
  this.TARGET_END_action(localContext, actionIndex);
327
391
  break;
328
- case 50:
392
+ case 43:
393
+ this.METADATA_FENCE_action(localContext, actionIndex);
394
+ break;
395
+ case 49:
329
396
  this.METADATA_NEST_OPEN_action(localContext, actionIndex);
330
397
  break;
331
- case 51:
398
+ case 50:
332
399
  this.METADATA_NEST_END_action(localContext, actionIndex);
333
400
  break;
334
- case 52:
401
+ case 51:
335
402
  this.METADATA_END_action(localContext, actionIndex);
336
403
  break;
337
- case 53:
338
- this.B_FENCE_CLOSE_action(localContext, actionIndex);
404
+ case 52:
405
+ this.B_END_action(localContext, actionIndex);
339
406
  break;
340
- case 58:
341
- this.B_RUN_action(localContext, actionIndex);
407
+ case 53:
408
+ this.B_EMPTY_END_action(localContext, actionIndex);
342
409
  break;
343
- case 59:
410
+ case 57:
344
411
  this.B_CRLF_action(localContext, actionIndex);
345
412
  break;
346
- case 60:
413
+ case 58:
347
414
  this.B_LF_action(localContext, actionIndex);
348
415
  break;
349
- case 61:
350
- this.B_CR_action(localContext, actionIndex);
351
- break;
352
416
  }
353
417
  }
354
- OPEN_PLAN_action(localContext, actionIndex) {
418
+ OPEN_action(localContext, actionIndex) {
355
419
  switch (actionIndex) {
356
420
  case 0:
357
- this.open(1, "PLAN");
421
+ this.open();
358
422
  break;
359
423
  }
360
424
  }
361
- OPEN_FIND_action(localContext, actionIndex) {
425
+ UNKNOWN_TAG_action(localContext, actionIndex) {
362
426
  switch (actionIndex) {
363
427
  case 1:
364
- this.open(2, "FIND");
428
+ this.noteUnknownTag();
365
429
  break;
366
430
  }
367
431
  }
368
- OPEN_READ_action(localContext, actionIndex) {
432
+ TEXT_RUN_action(localContext, actionIndex) {
369
433
  switch (actionIndex) {
370
434
  case 2:
371
- this.open(2, "READ");
435
+ this.inlineChain = false;
372
436
  break;
373
437
  }
374
438
  }
375
- OPEN_EDIT_action(localContext, actionIndex) {
439
+ TEXT_TICK_action(localContext, actionIndex) {
376
440
  switch (actionIndex) {
377
441
  case 3:
378
- this.open(2, "EDIT");
442
+ this.inlineChain = false;
379
443
  break;
380
444
  }
381
445
  }
382
- OPEN_COPY_action(localContext, actionIndex) {
446
+ SLOTS_NEXT_OPENER_action(localContext, actionIndex) {
383
447
  switch (actionIndex) {
384
448
  case 4:
385
- this.open(2, "COPY");
449
+ this.inlineChain = true;
386
450
  break;
387
451
  }
388
452
  }
389
- OPEN_MOVE_action(localContext, actionIndex) {
453
+ SLOTS_WS_action(localContext, actionIndex) {
390
454
  switch (actionIndex) {
391
455
  case 5:
392
- this.open(2, "MOVE");
456
+ this.slotReady = true;
393
457
  break;
394
458
  }
395
459
  }
396
- OPEN_SEND_action(localContext, actionIndex) {
460
+ SLOTS_LPAREN_action(localContext, actionIndex) {
397
461
  switch (actionIndex) {
398
462
  case 6:
399
- this.open(2, "SEND");
463
+ this.targetDepth = 0;
464
+ this.metadataReady = false;
400
465
  break;
401
466
  }
402
467
  }
403
- OPEN_EXEC_action(localContext, actionIndex) {
468
+ SLOTS_LBRACKET_action(localContext, actionIndex) {
404
469
  switch (actionIndex) {
405
470
  case 7:
406
- this.open(2, "EXEC");
471
+ this.metadataDepth = 0;
407
472
  break;
408
473
  }
409
474
  }
410
- OPEN_BARE_action(localContext, actionIndex) {
475
+ SLOTS_ASIDE_OPEN_action(localContext, actionIndex) {
411
476
  switch (actionIndex) {
412
477
  case 8:
413
- this.open(2, "BARE");
478
+ this.noteUnclosedAside();
414
479
  break;
415
480
  }
416
481
  }
417
- OPEN_WORK_action(localContext, actionIndex) {
482
+ SLOTS_END_action(localContext, actionIndex) {
418
483
  switch (actionIndex) {
419
484
  case 9:
420
- this.open(2, "WORK");
485
+ this.inlineChain = this.openerFollows();
421
486
  break;
422
487
  }
423
488
  }
424
- OPEN_FORK_action(localContext, actionIndex) {
489
+ SLOTS_INLINE_BODY_action(localContext, actionIndex) {
425
490
  switch (actionIndex) {
426
491
  case 10:
427
- this.open(2, "FORK");
492
+ this.noteInlineBody();
428
493
  break;
429
494
  }
430
495
  }
431
- OPEN_KILL_action(localContext, actionIndex) {
496
+ TARGET_FENCE_action(localContext, actionIndex) {
432
497
  switch (actionIndex) {
433
498
  case 11:
434
- this.open(2, "KILL");
499
+ this.inlineChain = this.openerFollows();
435
500
  break;
436
501
  }
437
502
  }
438
- OPEN_LOOK_action(localContext, actionIndex) {
503
+ TARGET_NEST_OPEN_action(localContext, actionIndex) {
439
504
  switch (actionIndex) {
440
505
  case 12:
441
- this.open(2, "LOOK");
506
+ this.targetDepth++;
442
507
  break;
443
508
  }
444
509
  }
445
- OPEN_BUFF_action(localContext, actionIndex) {
510
+ TARGET_NEST_END_action(localContext, actionIndex) {
446
511
  switch (actionIndex) {
447
512
  case 13:
448
- this.open(2, "BUFF");
513
+ this.targetDepth--;
449
514
  break;
450
515
  }
451
516
  }
452
- FENCE_OPEN_action(localContext, actionIndex) {
517
+ TARGET_END_action(localContext, actionIndex) {
453
518
  switch (actionIndex) {
454
519
  case 14:
455
- this.openDocumentFence();
456
- break;
457
- }
458
- }
459
- FENCE_CLOSE_action(localContext, actionIndex) {
460
- switch (actionIndex) {
461
- case 15:
462
- this.closeDocumentFence();
463
- break;
464
- }
465
- }
466
- SLOTS_WS_action(localContext, actionIndex) {
467
- switch (actionIndex) {
468
- case 16:
469
- this.slotReady = true;
470
- break;
471
- }
472
- }
473
- SLOTS_SEND_LABEL_action(localContext, actionIndex) {
474
- switch (actionIndex) {
475
- case 17:
476
- this.terminalSend = true;
477
- this.slotReady = true;
478
- this.metadataReady = false;
479
- break;
480
- }
481
- }
482
- SLOTS_EXECUTOR_action(localContext, actionIndex) {
483
- switch (actionIndex) {
484
- case 18:
485
520
  this.slotReady = true;
486
521
  this.metadataReady = true;
487
522
  break;
488
523
  }
489
524
  }
490
- SLOTS_LPAREN_action(localContext, actionIndex) {
491
- switch (actionIndex) {
492
- case 19:
493
- this.targetDepth = 0;
494
- this.metadataReady = false;
495
- break;
496
- }
497
- }
498
- SLOTS_LBRACE_action(localContext, actionIndex) {
525
+ METADATA_FENCE_action(localContext, actionIndex) {
499
526
  switch (actionIndex) {
500
- case 20:
501
- this.metadataDepth = 0;
502
- break;
503
- }
504
- }
505
- SLOTS_INLINE_BODY_action(localContext, actionIndex) {
506
- switch (actionIndex) {
507
- case 21:
508
- this.noteInlineBody();
509
- this.retainBody();
510
- break;
511
- }
512
- }
513
- SLOTS_BODY_OPEN_action(localContext, actionIndex) {
514
- switch (actionIndex) {
515
- case 22:
516
- this.beginBody();
517
- break;
518
- }
519
- }
520
- TARGET_NEST_OPEN_action(localContext, actionIndex) {
521
- switch (actionIndex) {
522
- case 23:
523
- this.targetDepth++;
524
- break;
525
- }
526
- }
527
- TARGET_NEST_END_action(localContext, actionIndex) {
528
- switch (actionIndex) {
529
- case 24:
530
- this.targetDepth--;
531
- break;
532
- }
533
- }
534
- TARGET_END_action(localContext, actionIndex) {
535
- switch (actionIndex) {
536
- case 25:
537
- this.slotReady = true;
538
- this.metadataReady = true;
527
+ case 15:
528
+ this.inlineChain = this.openerFollows();
539
529
  break;
540
530
  }
541
531
  }
542
532
  METADATA_NEST_OPEN_action(localContext, actionIndex) {
543
533
  switch (actionIndex) {
544
- case 26:
534
+ case 16:
545
535
  this.metadataDepth++;
546
536
  break;
547
537
  }
548
538
  }
549
539
  METADATA_NEST_END_action(localContext, actionIndex) {
550
540
  switch (actionIndex) {
551
- case 27:
541
+ case 17:
552
542
  this.metadataDepth--;
553
543
  break;
554
544
  }
555
545
  }
556
546
  METADATA_END_action(localContext, actionIndex) {
557
547
  switch (actionIndex) {
558
- case 28:
548
+ case 18:
559
549
  this.slotReady = true;
560
550
  this.metadataReady = true;
561
551
  break;
562
552
  }
563
553
  }
564
- B_FENCE_CLOSE_action(localContext, actionIndex) {
554
+ B_END_action(localContext, actionIndex) {
565
555
  switch (actionIndex) {
566
- case 29:
567
- this.closeDocumentFence();
556
+ case 19:
557
+ this.inlineChain = this.openerFollows();
568
558
  break;
569
559
  }
570
560
  }
571
- B_RUN_action(localContext, actionIndex) {
561
+ B_EMPTY_END_action(localContext, actionIndex) {
572
562
  switch (actionIndex) {
573
- case 30:
574
- this.retainBody();
563
+ case 20:
564
+ this.inlineChain = this.openerFollows();
575
565
  break;
576
566
  }
577
567
  }
578
568
  B_CRLF_action(localContext, actionIndex) {
579
569
  switch (actionIndex) {
580
- case 31:
581
- this.retainBody();
570
+ case 21:
571
+ this.inlineBody = false;
582
572
  break;
583
573
  }
584
574
  }
585
575
  B_LF_action(localContext, actionIndex) {
586
576
  switch (actionIndex) {
587
- case 32:
588
- this.retainBody();
589
- break;
590
- }
591
- }
592
- B_CR_action(localContext, actionIndex) {
593
- switch (actionIndex) {
594
- case 33:
595
- this.retainBody();
577
+ case 22:
578
+ this.inlineBody = false;
596
579
  break;
597
580
  }
598
581
  }
599
582
  sempred(localContext, ruleIndex, predIndex) {
600
583
  switch (ruleIndex) {
601
- case 10:
602
- return this.OPEN_PLAN_sempred(localContext, predIndex);
603
- case 11:
604
- return this.OPEN_FIND_sempred(localContext, predIndex);
605
584
  case 12:
606
- return this.OPEN_READ_sempred(localContext, predIndex);
585
+ return this.OPEN_sempred(localContext, predIndex);
607
586
  case 13:
608
- return this.OPEN_EDIT_sempred(localContext, predIndex);
609
- case 14:
610
- return this.OPEN_COPY_sempred(localContext, predIndex);
611
- case 15:
612
- return this.OPEN_MOVE_sempred(localContext, predIndex);
613
- case 16:
614
- return this.OPEN_SEND_sempred(localContext, predIndex);
615
- case 17:
616
- return this.OPEN_EXEC_sempred(localContext, predIndex);
617
- case 18:
618
- return this.OPEN_BARE_sempred(localContext, predIndex);
587
+ return this.UNKNOWN_TAG_sempred(localContext, predIndex);
619
588
  case 19:
620
- return this.OPEN_WORK_sempred(localContext, predIndex);
621
- case 20:
622
- return this.OPEN_FORK_sempred(localContext, predIndex);
589
+ return this.SLOTS_NEXT_OPENER_sempred(localContext, predIndex);
623
590
  case 21:
624
- return this.OPEN_KILL_sempred(localContext, predIndex);
591
+ return this.SLOTS_LPAREN_sempred(localContext, predIndex);
625
592
  case 22:
626
- return this.OPEN_LOOK_sempred(localContext, predIndex);
593
+ return this.SLOTS_LBRACKET_sempred(localContext, predIndex);
627
594
  case 23:
628
- return this.OPEN_BUFF_sempred(localContext, predIndex);
595
+ return this.SLOTS_TEXT_L_sempred(localContext, predIndex);
629
596
  case 24:
630
- return this.FENCE_OPEN_sempred(localContext, predIndex);
597
+ return this.SLOTS_L_sempred(localContext, predIndex);
631
598
  case 25:
632
- return this.FENCE_CLOSE_sempred(localContext, predIndex);
599
+ return this.SLOTS_COMBINED_TEXT_L_sempred(localContext, predIndex);
600
+ case 26:
601
+ return this.SLOTS_ASIDE_sempred(localContext, predIndex);
602
+ case 27:
603
+ return this.SLOTS_ASIDE_OPEN_sempred(localContext, predIndex);
604
+ case 28:
605
+ return this.SLOTS_END_sempred(localContext, predIndex);
606
+ case 29:
607
+ return this.SLOTS_INLINE_BODY_sempred(localContext, predIndex);
608
+ case 30:
609
+ return this.SLOTS_NEXT_HEADING_sempred(localContext, predIndex);
633
610
  case 32:
634
- return this.SLOTS_SEND_LABEL_sempred(localContext, predIndex);
635
- case 33:
636
- return this.SLOTS_EXECUTOR_sempred(localContext, predIndex);
637
- case 34:
638
- return this.SLOTS_LPAREN_sempred(localContext, predIndex);
639
- case 35:
640
- return this.SLOTS_LBRACE_sempred(localContext, predIndex);
641
- case 36:
642
- return this.SLOTS_TEXT_L_sempred(localContext, predIndex);
643
- case 37:
644
- return this.SLOTS_L_sempred(localContext, predIndex);
611
+ return this.TARGET_FENCE_sempred(localContext, predIndex);
645
612
  case 38:
646
- return this.SLOTS_COMBINED_TEXT_L_sempred(localContext, predIndex);
613
+ return this.TARGET_NEST_END_sempred(localContext, predIndex);
647
614
  case 39:
648
- return this.SLOTS_ANNOTATION_sempred(localContext, predIndex);
615
+ return this.TARGET_TEXT_SCOPE_sempred(localContext, predIndex);
649
616
  case 40:
650
- return this.SLOTS_INLINE_BODY_sempred(localContext, predIndex);
651
- case 41:
652
- return this.SLOTS_DIRECT_END_sempred(localContext, predIndex);
653
- case 47:
654
- return this.TARGET_NEST_END_sempred(localContext, predIndex);
655
- case 51:
617
+ return this.TARGET_SCOPE_sempred(localContext, predIndex);
618
+ case 43:
619
+ return this.METADATA_FENCE_sempred(localContext, predIndex);
620
+ case 50:
656
621
  return this.METADATA_NEST_END_sempred(localContext, predIndex);
622
+ case 52:
623
+ return this.B_END_sempred(localContext, predIndex);
657
624
  case 53:
658
- return this.B_FENCE_CLOSE_sempred(localContext, predIndex);
625
+ return this.B_EMPTY_END_sempred(localContext, predIndex);
659
626
  case 54:
660
- return this.B_FENCE_END_sempred(localContext, predIndex);
661
- case 55:
662
- return this.B_SECTION_END_sempred(localContext, predIndex);
663
- case 56:
664
- return this.B_DIRECT_END_sempred(localContext, predIndex);
665
- case 57:
666
- return this.B_EMPTY_SPACED_END_sempred(localContext, predIndex);
627
+ return this.B_NEXT_HEADING_sempred(localContext, predIndex);
667
628
  }
668
629
  return true;
669
630
  }
670
- OPEN_PLAN_sempred(localContext, predIndex) {
631
+ OPEN_sempred(localContext, predIndex) {
671
632
  switch (predIndex) {
672
633
  case 0:
673
- return this.matchesHeading(1, "PLAN");
674
- }
675
- return true;
676
- }
677
- OPEN_FIND_sempred(localContext, predIndex) {
678
- switch (predIndex) {
634
+ return this.atLineStart() || !this.started || this.inlineChain;
679
635
  case 1:
680
- return this.matchesHeading(2, "FIND");
636
+ return this.knownHeading();
681
637
  }
682
638
  return true;
683
639
  }
684
- OPEN_READ_sempred(localContext, predIndex) {
640
+ UNKNOWN_TAG_sempred(localContext, predIndex) {
685
641
  switch (predIndex) {
686
642
  case 2:
687
- return this.matchesHeading(2, "READ");
643
+ return this.atLineStart() || !this.started;
688
644
  }
689
645
  return true;
690
646
  }
691
- OPEN_EDIT_sempred(localContext, predIndex) {
647
+ SLOTS_NEXT_OPENER_sempred(localContext, predIndex) {
692
648
  switch (predIndex) {
693
649
  case 3:
694
- return this.matchesHeading(2, "EDIT");
650
+ return this.slotReady && this.openerFollows();
695
651
  }
696
652
  return true;
697
653
  }
698
- OPEN_COPY_sempred(localContext, predIndex) {
654
+ SLOTS_LPAREN_sempred(localContext, predIndex) {
699
655
  switch (predIndex) {
700
656
  case 4:
701
- return this.matchesHeading(2, "COPY");
657
+ return this.slotReady;
702
658
  }
703
659
  return true;
704
660
  }
705
- OPEN_MOVE_sempred(localContext, predIndex) {
661
+ SLOTS_LBRACKET_sempred(localContext, predIndex) {
706
662
  switch (predIndex) {
707
663
  case 5:
708
- return this.matchesHeading(2, "MOVE");
664
+ return this.slotReady && this.metadataReady;
709
665
  }
710
666
  return true;
711
667
  }
712
- OPEN_SEND_sempred(localContext, predIndex) {
668
+ SLOTS_TEXT_L_sempred(localContext, predIndex) {
713
669
  switch (predIndex) {
714
670
  case 6:
715
- return this.matchesHeading(2, "SEND");
671
+ return this.slotReady && this.isTextCoordinateOp();
716
672
  }
717
673
  return true;
718
674
  }
719
- OPEN_EXEC_sempred(localContext, predIndex) {
675
+ SLOTS_L_sempred(localContext, predIndex) {
720
676
  switch (predIndex) {
721
677
  case 7:
722
- return this.matchesHeading(2, "EXEC");
678
+ return this.slotReady;
723
679
  }
724
680
  return true;
725
681
  }
726
- OPEN_BARE_sempred(localContext, predIndex) {
682
+ SLOTS_COMBINED_TEXT_L_sempred(localContext, predIndex) {
727
683
  switch (predIndex) {
728
684
  case 8:
729
- return this.matchesHeading(2, "BARE");
685
+ return this.slotReady && this.isTextCoordinateOp();
730
686
  }
731
687
  return true;
732
688
  }
733
- OPEN_WORK_sempred(localContext, predIndex) {
689
+ SLOTS_ASIDE_sempred(localContext, predIndex) {
734
690
  switch (predIndex) {
735
691
  case 9:
736
- return this.matchesHeading(2, "WORK");
692
+ return this.slotReady;
737
693
  }
738
694
  return true;
739
695
  }
740
- OPEN_FORK_sempred(localContext, predIndex) {
696
+ SLOTS_ASIDE_OPEN_sempred(localContext, predIndex) {
741
697
  switch (predIndex) {
742
698
  case 10:
743
- return this.matchesHeading(2, "FORK");
699
+ return this.slotReady && !this.asideClosesOnLine();
744
700
  }
745
701
  return true;
746
702
  }
747
- OPEN_KILL_sempred(localContext, predIndex) {
703
+ SLOTS_END_sempred(localContext, predIndex) {
748
704
  switch (predIndex) {
749
705
  case 11:
750
- return this.matchesHeading(2, "KILL");
706
+ return this.closingAt(1);
751
707
  }
752
708
  return true;
753
709
  }
754
- OPEN_LOOK_sempred(localContext, predIndex) {
710
+ SLOTS_INLINE_BODY_sempred(localContext, predIndex) {
755
711
  switch (predIndex) {
756
712
  case 12:
757
- return this.matchesHeading(2, "LOOK");
713
+ return this.slotReady && this.inlineBodyAhead();
758
714
  }
759
715
  return true;
760
716
  }
761
- OPEN_BUFF_sempred(localContext, predIndex) {
717
+ SLOTS_NEXT_HEADING_sempred(localContext, predIndex) {
762
718
  switch (predIndex) {
763
719
  case 13:
764
- return this.matchesHeading(2, "BUFF");
720
+ return this.fenceDelimiter === "" && this.headingAfterEol();
765
721
  }
766
722
  return true;
767
723
  }
768
- FENCE_OPEN_sempred(localContext, predIndex) {
724
+ TARGET_FENCE_sempred(localContext, predIndex) {
769
725
  switch (predIndex) {
770
726
  case 14:
771
- return this.column === 0 && !this.inDocumentFence();
727
+ return this.closingAt(1);
772
728
  }
773
729
  return true;
774
730
  }
775
- FENCE_CLOSE_sempred(localContext, predIndex) {
731
+ TARGET_NEST_END_sempred(localContext, predIndex) {
776
732
  switch (predIndex) {
777
733
  case 15:
778
- return this.column === 0 && this.inDocumentFence();
734
+ return this.targetDepth > 0;
779
735
  }
780
736
  return true;
781
737
  }
782
- SLOTS_SEND_LABEL_sempred(localContext, predIndex) {
738
+ TARGET_TEXT_SCOPE_sempred(localContext, predIndex) {
783
739
  switch (predIndex) {
784
740
  case 16:
785
- return this.slotReady && this.openOp === "SEND";
786
- }
787
- return true;
788
- }
789
- SLOTS_EXECUTOR_sempred(localContext, predIndex) {
790
- switch (predIndex) {
741
+ return this.isTextCoordinateOp();
791
742
  case 17:
792
- return this.slotReady && this.openOp === "EXEC";
743
+ return this.targetScopeEnd();
793
744
  }
794
745
  return true;
795
746
  }
796
- SLOTS_LPAREN_sempred(localContext, predIndex) {
747
+ TARGET_SCOPE_sempred(localContext, predIndex) {
797
748
  switch (predIndex) {
798
749
  case 18:
799
- return this.slotReady;
800
- }
801
- return true;
802
- }
803
- SLOTS_LBRACE_sempred(localContext, predIndex) {
804
- switch (predIndex) {
750
+ return this.openOp === "FIND" || this.openOp === "EXEC" || this.openOp === "SEND";
805
751
  case 19:
806
- return this.slotReady && this.metadataReady;
752
+ return this.targetScopeEnd();
807
753
  }
808
754
  return true;
809
755
  }
810
- SLOTS_TEXT_L_sempred(localContext, predIndex) {
756
+ METADATA_FENCE_sempred(localContext, predIndex) {
811
757
  switch (predIndex) {
812
758
  case 20:
813
- return this.slotReady && this.isTextCoordinateOp();
759
+ return this.closingAt(1);
814
760
  }
815
761
  return true;
816
762
  }
817
- SLOTS_L_sempred(localContext, predIndex) {
763
+ METADATA_NEST_END_sempred(localContext, predIndex) {
818
764
  switch (predIndex) {
819
765
  case 21:
820
- return this.slotReady;
766
+ return this.metadataDepth > 0;
821
767
  }
822
768
  return true;
823
769
  }
824
- SLOTS_COMBINED_TEXT_L_sempred(localContext, predIndex) {
770
+ B_END_sempred(localContext, predIndex) {
825
771
  switch (predIndex) {
826
772
  case 22:
827
- return this.slotReady && this.isTextCoordinateOp();
773
+ return this.closingAfterEol();
828
774
  }
829
775
  return true;
830
776
  }
831
- SLOTS_ANNOTATION_sempred(localContext, predIndex) {
777
+ B_EMPTY_END_sempred(localContext, predIndex) {
832
778
  switch (predIndex) {
833
779
  case 23:
834
- return this.slotReady;
780
+ return (this.atLineStart() || this.inlineBody) && this.closingAt(1);
835
781
  }
836
782
  return true;
837
783
  }
838
- SLOTS_INLINE_BODY_sempred(localContext, predIndex) {
784
+ B_NEXT_HEADING_sempred(localContext, predIndex) {
839
785
  switch (predIndex) {
840
786
  case 24:
841
- return this.slotReady && this.inlineBodyAhead();
842
- }
843
- return true;
844
- }
845
- SLOTS_DIRECT_END_sempred(localContext, predIndex) {
846
- switch (predIndex) {
847
- case 25:
848
- return this.headingAfterDirectEol();
849
- }
850
- return true;
851
- }
852
- TARGET_NEST_END_sempred(localContext, predIndex) {
853
- switch (predIndex) {
854
- case 26:
855
- return this.targetDepth > 0;
856
- }
857
- return true;
858
- }
859
- METADATA_NEST_END_sempred(localContext, predIndex) {
860
- switch (predIndex) {
861
- case 27:
862
- return this.metadataDepth > 0;
863
- }
864
- return true;
865
- }
866
- B_FENCE_CLOSE_sempred(localContext, predIndex) {
867
- switch (predIndex) {
868
- case 28:
869
- return this.column === 0 && this.inDocumentFence();
870
- }
871
- return true;
872
- }
873
- B_FENCE_END_sempred(localContext, predIndex) {
874
- switch (predIndex) {
875
- case 29:
876
- return this.inDocumentFence() && this.fenceAfterDirectEol();
877
- }
878
- return true;
879
- }
880
- B_SECTION_END_sempred(localContext, predIndex) {
881
- switch (predIndex) {
882
- case 30:
883
- return this.headingAfterBlankLine();
884
- }
885
- return true;
886
- }
887
- B_DIRECT_END_sempred(localContext, predIndex) {
888
- switch (predIndex) {
889
- case 31:
890
- return this.headingAfterDirectEol();
891
- }
892
- return true;
893
- }
894
- B_EMPTY_SPACED_END_sempred(localContext, predIndex) {
895
- switch (predIndex) {
896
- case 32:
897
- return this.headingAfterEmptySpacedLine();
787
+ return this.fenceDelimiter === "" && this.headingAfterEol();
898
788
  }
899
789
  return true;
900
790
  }
901
791
  static _serializedATN = [
902
- 4, 0, 35, 811, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3,
792
+ 4, 0, 32, 684, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3,
903
793
  7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2,
904
794
  11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7,
905
795
  17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2,
@@ -908,296 +798,251 @@ export class plurnkLexer extends antlr.Lexer {
908
798
  37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7,
909
799
  43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2,
910
800
  50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7,
911
- 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 1, 0, 4, 0, 131,
912
- 8, 0, 11, 0, 12, 0, 132, 1, 1, 3, 1, 136, 8, 1, 1, 1, 4, 1, 139, 8, 1, 11, 1, 12, 1, 140,
913
- 1, 1, 1, 1, 4, 1, 145, 8, 1, 11, 1, 12, 1, 146, 3, 1, 149, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1,
914
- 2, 3, 2, 156, 8, 2, 3, 2, 158, 8, 2, 1, 2, 5, 2, 161, 8, 2, 10, 2, 12, 2, 164, 9, 2, 1, 2,
915
- 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 177, 8, 4, 1, 5, 1, 5, 1, 5,
916
- 1, 5, 3, 5, 183, 8, 5, 1, 5, 5, 5, 186, 8, 5, 10, 5, 12, 5, 189, 9, 5, 1, 5, 1, 5, 1, 6, 1,
917
- 6, 1, 6, 1, 6, 5, 6, 197, 8, 6, 10, 6, 12, 6, 200, 9, 6, 1, 7, 1, 7, 3, 7, 204, 8, 7, 1, 8,
918
- 1, 8, 1, 8, 1, 8, 3, 8, 210, 8, 8, 1, 8, 5, 8, 213, 8, 8, 10, 8, 12, 8, 216, 9, 8, 1, 8, 1,
919
- 8, 1, 9, 3, 9, 221, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10,
920
- 1, 10, 1, 10, 3, 10, 235, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11,
921
- 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 252, 8, 11, 1, 11, 1, 11, 1, 11,
922
- 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12,
923
- 269, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13,
924
- 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 286, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14,
925
- 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 303, 8, 14, 1, 14,
926
- 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15,
927
- 1, 15, 3, 15, 320, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16,
928
- 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 337, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16,
929
- 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 354,
930
- 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18,
931
- 1, 18, 1, 18, 1, 18, 3, 18, 371, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19,
932
- 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 388, 8, 19, 1, 19, 1, 19,
933
- 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20,
934
- 3, 20, 405, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21,
935
- 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 422, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22,
936
- 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 439, 8, 22,
937
- 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23,
938
- 1, 23, 1, 23, 3, 23, 456, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24,
939
- 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24,
940
- 1, 24, 1, 24, 1, 24, 3, 24, 482, 8, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25,
941
- 1, 25, 1, 25, 3, 25, 493, 8, 25, 1, 25, 1, 25, 1, 26, 4, 26, 498, 8, 26, 11, 26, 12, 26,
942
- 499, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27,
943
- 513, 8, 27, 10, 27, 12, 27, 516, 9, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27,
944
- 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28,
945
- 1, 28, 1, 28, 1, 28, 5, 28, 541, 8, 28, 10, 28, 12, 28, 544, 9, 28, 1, 28, 1, 28, 1, 28,
946
- 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 4, 29, 560,
947
- 8, 29, 11, 29, 12, 29, 561, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 4, 31, 569, 8, 31, 11, 31,
948
- 12, 31, 570, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
949
- 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 595,
950
- 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 4, 33, 605, 8, 33, 11, 33,
951
- 12, 33, 606, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34,
952
- 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36,
953
- 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39,
954
- 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 650, 8, 39, 10, 39, 12, 39, 653, 9, 39, 1, 39, 1, 39,
955
- 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41,
956
- 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43,
957
- 1, 43, 1, 43, 1, 44, 4, 44, 686, 8, 44, 11, 44, 12, 44, 687, 1, 44, 1, 44, 1, 45, 1, 45,
958
- 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47,
959
- 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 4, 49, 714, 8, 49, 11, 49, 12, 49, 715,
960
- 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51,
961
- 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53,
962
- 743, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54,
963
- 1, 55, 1, 55, 1, 55, 5, 55, 759, 8, 55, 10, 55, 12, 55, 762, 9, 55, 1, 55, 1, 55, 1, 55,
964
- 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 4, 57, 777, 8, 57,
965
- 11, 57, 12, 57, 778, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 4, 58, 787, 8, 58, 11, 58,
966
- 12, 58, 788, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59,
967
- 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 514, 542, 651,
968
- 0, 62, 5, 0, 7, 0, 9, 0, 11, 0, 13, 0, 15, 0, 17, 0, 19, 0, 21, 0, 23, 0, 25, 16, 27, 17,
969
- 29, 18, 31, 19, 33, 20, 35, 21, 37, 22, 39, 23, 41, 24, 43, 25, 45, 26, 47, 27, 49, 28,
970
- 51, 29, 53, 30, 55, 31, 57, 32, 59, 0, 61, 0, 63, 12, 65, 34, 67, 33, 69, 0, 71, 0, 73,
971
- 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 35, 97, 0, 99,
972
- 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121,
973
- 0, 123, 0, 125, 0, 127, 0, 5, 0, 1, 2, 3, 4, 14, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122,
974
- 1, 0, 48, 57, 3, 0, 48, 57, 65, 90, 97, 122, 2, 0, 32, 32, 58, 58, 1, 0, 49, 57, 3, 0, 9,
975
- 10, 13, 13, 32, 32, 4, 0, 9, 10, 13, 13, 32, 32, 35, 35, 2, 0, 9, 9, 32, 32, 6, 0, 43, 43,
976
- 45, 46, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 10, 10, 13, 13, 6, 0, 9, 10, 13, 13, 32,
977
- 32, 40, 40, 60, 60, 91, 91, 2, 0, 40, 41, 92, 92, 5, 0, 10, 10, 13, 13, 40, 41, 60, 60,
978
- 92, 92, 4, 0, 10, 10, 13, 13, 123, 123, 125, 125, 844, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0,
979
- 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0,
980
- 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0,
981
- 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0,
982
- 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 1, 67, 1, 0,
983
- 0, 0, 1, 69, 1, 0, 0, 0, 1, 71, 1, 0, 0, 0, 1, 73, 1, 0, 0, 0, 1, 75, 1, 0, 0, 0, 1, 77, 1, 0,
984
- 0, 0, 1, 79, 1, 0, 0, 0, 1, 81, 1, 0, 0, 0, 1, 83, 1, 0, 0, 0, 1, 85, 1, 0, 0, 0, 1, 87, 1, 0,
985
- 0, 0, 1, 89, 1, 0, 0, 0, 2, 91, 1, 0, 0, 0, 2, 93, 1, 0, 0, 0, 2, 95, 1, 0, 0, 0, 2, 97, 1, 0,
986
- 0, 0, 2, 99, 1, 0, 0, 0, 2, 101, 1, 0, 0, 0, 3, 103, 1, 0, 0, 0, 3, 105, 1, 0, 0, 0, 3, 107,
987
- 1, 0, 0, 0, 3, 109, 1, 0, 0, 0, 4, 111, 1, 0, 0, 0, 4, 113, 1, 0, 0, 0, 4, 115, 1, 0, 0, 0,
988
- 4, 117, 1, 0, 0, 0, 4, 119, 1, 0, 0, 0, 4, 121, 1, 0, 0, 0, 4, 123, 1, 0, 0, 0, 4, 125, 1,
989
- 0, 0, 0, 4, 127, 1, 0, 0, 0, 5, 130, 1, 0, 0, 0, 7, 135, 1, 0, 0, 0, 9, 150, 1, 0, 0, 0, 11,
990
- 167, 1, 0, 0, 0, 13, 176, 1, 0, 0, 0, 15, 178, 1, 0, 0, 0, 17, 192, 1, 0, 0, 0, 19, 203,
991
- 1, 0, 0, 0, 21, 205, 1, 0, 0, 0, 23, 220, 1, 0, 0, 0, 25, 224, 1, 0, 0, 0, 27, 240, 1, 0,
992
- 0, 0, 29, 257, 1, 0, 0, 0, 31, 274, 1, 0, 0, 0, 33, 291, 1, 0, 0, 0, 35, 308, 1, 0, 0, 0,
993
- 37, 325, 1, 0, 0, 0, 39, 342, 1, 0, 0, 0, 41, 359, 1, 0, 0, 0, 43, 376, 1, 0, 0, 0, 45, 393,
994
- 1, 0, 0, 0, 47, 410, 1, 0, 0, 0, 49, 427, 1, 0, 0, 0, 51, 444, 1, 0, 0, 0, 53, 461, 1, 0,
995
- 0, 0, 55, 486, 1, 0, 0, 0, 57, 497, 1, 0, 0, 0, 59, 503, 1, 0, 0, 0, 61, 528, 1, 0, 0, 0,
996
- 63, 559, 1, 0, 0, 0, 65, 563, 1, 0, 0, 0, 67, 568, 1, 0, 0, 0, 69, 576, 1, 0, 0, 0, 71, 601,
997
- 1, 0, 0, 0, 73, 613, 1, 0, 0, 0, 75, 620, 1, 0, 0, 0, 77, 627, 1, 0, 0, 0, 79, 632, 1, 0,
998
- 0, 0, 81, 637, 1, 0, 0, 0, 83, 642, 1, 0, 0, 0, 85, 660, 1, 0, 0, 0, 87, 667, 1, 0, 0, 0,
999
- 89, 673, 1, 0, 0, 0, 91, 679, 1, 0, 0, 0, 93, 685, 1, 0, 0, 0, 95, 691, 1, 0, 0, 0, 97, 695,
1000
- 1, 0, 0, 0, 99, 700, 1, 0, 0, 0, 101, 706, 1, 0, 0, 0, 103, 713, 1, 0, 0, 0, 105, 719, 1,
1001
- 0, 0, 0, 107, 724, 1, 0, 0, 0, 109, 730, 1, 0, 0, 0, 111, 736, 1, 0, 0, 0, 113, 749, 1,
1002
- 0, 0, 0, 115, 755, 1, 0, 0, 0, 117, 768, 1, 0, 0, 0, 119, 774, 1, 0, 0, 0, 121, 786, 1,
1003
- 0, 0, 0, 123, 794, 1, 0, 0, 0, 125, 801, 1, 0, 0, 0, 127, 806, 1, 0, 0, 0, 129, 131, 7,
1004
- 0, 0, 0, 130, 129, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 130, 1, 0, 0, 0, 132, 133, 1,
1005
- 0, 0, 0, 133, 6, 1, 0, 0, 0, 134, 136, 5, 45, 0, 0, 135, 134, 1, 0, 0, 0, 135, 136, 1, 0,
1006
- 0, 0, 136, 138, 1, 0, 0, 0, 137, 139, 7, 1, 0, 0, 138, 137, 1, 0, 0, 0, 139, 140, 1, 0,
1007
- 0, 0, 140, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 148, 1, 0, 0, 0, 142, 144, 5, 46,
1008
- 0, 0, 143, 145, 7, 1, 0, 0, 144, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 144, 1, 0,
1009
- 0, 0, 146, 147, 1, 0, 0, 0, 147, 149, 1, 0, 0, 0, 148, 142, 1, 0, 0, 0, 148, 149, 1, 0,
1010
- 0, 0, 149, 8, 1, 0, 0, 0, 150, 151, 5, 60, 0, 0, 151, 162, 3, 7, 1, 0, 152, 158, 5, 45,
1011
- 0, 0, 153, 155, 5, 44, 0, 0, 154, 156, 5, 32, 0, 0, 155, 154, 1, 0, 0, 0, 155, 156, 1,
1012
- 0, 0, 0, 156, 158, 1, 0, 0, 0, 157, 152, 1, 0, 0, 0, 157, 153, 1, 0, 0, 0, 158, 159, 1,
1013
- 0, 0, 0, 159, 161, 3, 7, 1, 0, 160, 157, 1, 0, 0, 0, 161, 164, 1, 0, 0, 0, 162, 160, 1,
1014
- 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 165, 1, 0, 0, 0, 164, 162, 1, 0, 0, 0, 165, 166, 5,
1015
- 62, 0, 0, 166, 10, 1, 0, 0, 0, 167, 168, 5, 64, 0, 0, 168, 169, 7, 2, 0, 0, 169, 170, 7,
1016
- 2, 0, 0, 170, 171, 7, 2, 0, 0, 171, 172, 7, 2, 0, 0, 172, 173, 7, 2, 0, 0, 173, 12, 1, 0,
1017
- 0, 0, 174, 177, 3, 7, 1, 0, 175, 177, 3, 11, 3, 0, 176, 174, 1, 0, 0, 0, 176, 175, 1, 0,
1018
- 0, 0, 177, 14, 1, 0, 0, 0, 178, 179, 5, 60, 0, 0, 179, 187, 3, 13, 4, 0, 180, 182, 5, 44,
1019
- 0, 0, 181, 183, 5, 32, 0, 0, 182, 181, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, 184, 1, 0,
1020
- 0, 0, 184, 186, 3, 13, 4, 0, 185, 180, 1, 0, 0, 0, 186, 189, 1, 0, 0, 0, 187, 185, 1, 0,
1021
- 0, 0, 187, 188, 1, 0, 0, 0, 188, 190, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 190, 191, 5, 62,
1022
- 0, 0, 191, 16, 1, 0, 0, 0, 192, 193, 3, 11, 3, 0, 193, 194, 7, 3, 0, 0, 194, 198, 7, 4,
1023
- 0, 0, 195, 197, 7, 1, 0, 0, 196, 195, 1, 0, 0, 0, 197, 200, 1, 0, 0, 0, 198, 196, 1, 0,
1024
- 0, 0, 198, 199, 1, 0, 0, 0, 199, 18, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 201, 204, 3, 13,
1025
- 4, 0, 202, 204, 3, 17, 6, 0, 203, 201, 1, 0, 0, 0, 203, 202, 1, 0, 0, 0, 204, 20, 1, 0,
1026
- 0, 0, 205, 206, 5, 60, 0, 0, 206, 214, 3, 19, 7, 0, 207, 209, 5, 44, 0, 0, 208, 210, 5,
1027
- 32, 0, 0, 209, 208, 1, 0, 0, 0, 209, 210, 1, 0, 0, 0, 210, 211, 1, 0, 0, 0, 211, 213, 3,
1028
- 19, 7, 0, 212, 207, 1, 0, 0, 0, 213, 216, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 214, 215, 1,
1029
- 0, 0, 0, 215, 217, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 217, 218, 5, 62, 0, 0, 218, 22, 1,
1030
- 0, 0, 0, 219, 221, 5, 13, 0, 0, 220, 219, 1, 0, 0, 0, 220, 221, 1, 0, 0, 0, 221, 222, 1,
1031
- 0, 0, 0, 222, 223, 5, 10, 0, 0, 223, 24, 1, 0, 0, 0, 224, 225, 4, 10, 0, 0, 225, 226, 5,
1032
- 35, 0, 0, 226, 227, 5, 35, 0, 0, 227, 228, 5, 32, 0, 0, 228, 229, 5, 80, 0, 0, 229, 230,
1033
- 5, 76, 0, 0, 230, 231, 5, 65, 0, 0, 231, 232, 5, 78, 0, 0, 232, 234, 1, 0, 0, 0, 233, 235,
1034
- 3, 5, 0, 0, 234, 233, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 237,
1035
- 6, 10, 0, 0, 237, 238, 1, 0, 0, 0, 238, 239, 6, 10, 1, 0, 239, 26, 1, 0, 0, 0, 240, 241,
1036
- 4, 11, 1, 0, 241, 242, 5, 35, 0, 0, 242, 243, 5, 35, 0, 0, 243, 244, 5, 35, 0, 0, 244,
1037
- 245, 5, 32, 0, 0, 245, 246, 5, 70, 0, 0, 246, 247, 5, 73, 0, 0, 247, 248, 5, 78, 0, 0,
1038
- 248, 249, 5, 68, 0, 0, 249, 251, 1, 0, 0, 0, 250, 252, 3, 5, 0, 0, 251, 250, 1, 0, 0, 0,
1039
- 251, 252, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 254, 6, 11, 2, 0, 254, 255, 1, 0, 0, 0,
1040
- 255, 256, 6, 11, 1, 0, 256, 28, 1, 0, 0, 0, 257, 258, 4, 12, 2, 0, 258, 259, 5, 35, 0,
1041
- 0, 259, 260, 5, 35, 0, 0, 260, 261, 5, 35, 0, 0, 261, 262, 5, 32, 0, 0, 262, 263, 5, 82,
1042
- 0, 0, 263, 264, 5, 69, 0, 0, 264, 265, 5, 65, 0, 0, 265, 266, 5, 68, 0, 0, 266, 268, 1,
1043
- 0, 0, 0, 267, 269, 3, 5, 0, 0, 268, 267, 1, 0, 0, 0, 268, 269, 1, 0, 0, 0, 269, 270, 1,
1044
- 0, 0, 0, 270, 271, 6, 12, 3, 0, 271, 272, 1, 0, 0, 0, 272, 273, 6, 12, 1, 0, 273, 30, 1,
1045
- 0, 0, 0, 274, 275, 4, 13, 3, 0, 275, 276, 5, 35, 0, 0, 276, 277, 5, 35, 0, 0, 277, 278,
1046
- 5, 35, 0, 0, 278, 279, 5, 32, 0, 0, 279, 280, 5, 69, 0, 0, 280, 281, 5, 68, 0, 0, 281,
1047
- 282, 5, 73, 0, 0, 282, 283, 5, 84, 0, 0, 283, 285, 1, 0, 0, 0, 284, 286, 3, 5, 0, 0, 285,
1048
- 284, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 288, 6, 13, 4, 0, 288,
1049
- 289, 1, 0, 0, 0, 289, 290, 6, 13, 1, 0, 290, 32, 1, 0, 0, 0, 291, 292, 4, 14, 4, 0, 292,
1050
- 293, 5, 35, 0, 0, 293, 294, 5, 35, 0, 0, 294, 295, 5, 35, 0, 0, 295, 296, 5, 32, 0, 0,
1051
- 296, 297, 5, 67, 0, 0, 297, 298, 5, 79, 0, 0, 298, 299, 5, 80, 0, 0, 299, 300, 5, 89,
1052
- 0, 0, 300, 302, 1, 0, 0, 0, 301, 303, 3, 5, 0, 0, 302, 301, 1, 0, 0, 0, 302, 303, 1, 0,
1053
- 0, 0, 303, 304, 1, 0, 0, 0, 304, 305, 6, 14, 5, 0, 305, 306, 1, 0, 0, 0, 306, 307, 6, 14,
1054
- 1, 0, 307, 34, 1, 0, 0, 0, 308, 309, 4, 15, 5, 0, 309, 310, 5, 35, 0, 0, 310, 311, 5, 35,
1055
- 0, 0, 311, 312, 5, 35, 0, 0, 312, 313, 5, 32, 0, 0, 313, 314, 5, 77, 0, 0, 314, 315, 5,
1056
- 79, 0, 0, 315, 316, 5, 86, 0, 0, 316, 317, 5, 69, 0, 0, 317, 319, 1, 0, 0, 0, 318, 320,
1057
- 3, 5, 0, 0, 319, 318, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 322,
1058
- 6, 15, 6, 0, 322, 323, 1, 0, 0, 0, 323, 324, 6, 15, 1, 0, 324, 36, 1, 0, 0, 0, 325, 326,
1059
- 4, 16, 6, 0, 326, 327, 5, 35, 0, 0, 327, 328, 5, 35, 0, 0, 328, 329, 5, 35, 0, 0, 329,
1060
- 330, 5, 32, 0, 0, 330, 331, 5, 83, 0, 0, 331, 332, 5, 69, 0, 0, 332, 333, 5, 78, 0, 0,
1061
- 333, 334, 5, 68, 0, 0, 334, 336, 1, 0, 0, 0, 335, 337, 3, 5, 0, 0, 336, 335, 1, 0, 0, 0,
1062
- 336, 337, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 339, 6, 16, 7, 0, 339, 340, 1, 0, 0, 0,
1063
- 340, 341, 6, 16, 1, 0, 341, 38, 1, 0, 0, 0, 342, 343, 4, 17, 7, 0, 343, 344, 5, 35, 0,
1064
- 0, 344, 345, 5, 35, 0, 0, 345, 346, 5, 35, 0, 0, 346, 347, 5, 32, 0, 0, 347, 348, 5, 69,
1065
- 0, 0, 348, 349, 5, 88, 0, 0, 349, 350, 5, 69, 0, 0, 350, 351, 5, 67, 0, 0, 351, 353, 1,
1066
- 0, 0, 0, 352, 354, 3, 5, 0, 0, 353, 352, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 355, 1,
1067
- 0, 0, 0, 355, 356, 6, 17, 8, 0, 356, 357, 1, 0, 0, 0, 357, 358, 6, 17, 1, 0, 358, 40, 1,
1068
- 0, 0, 0, 359, 360, 4, 18, 8, 0, 360, 361, 5, 35, 0, 0, 361, 362, 5, 35, 0, 0, 362, 363,
1069
- 5, 35, 0, 0, 363, 364, 5, 32, 0, 0, 364, 365, 5, 66, 0, 0, 365, 366, 5, 65, 0, 0, 366,
1070
- 367, 5, 82, 0, 0, 367, 368, 5, 69, 0, 0, 368, 370, 1, 0, 0, 0, 369, 371, 3, 5, 0, 0, 370,
1071
- 369, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 373, 6, 18, 9, 0, 373,
1072
- 374, 1, 0, 0, 0, 374, 375, 6, 18, 1, 0, 375, 42, 1, 0, 0, 0, 376, 377, 4, 19, 9, 0, 377,
1073
- 378, 5, 35, 0, 0, 378, 379, 5, 35, 0, 0, 379, 380, 5, 35, 0, 0, 380, 381, 5, 32, 0, 0,
1074
- 381, 382, 5, 87, 0, 0, 382, 383, 5, 79, 0, 0, 383, 384, 5, 82, 0, 0, 384, 385, 5, 75,
1075
- 0, 0, 385, 387, 1, 0, 0, 0, 386, 388, 3, 5, 0, 0, 387, 386, 1, 0, 0, 0, 387, 388, 1, 0,
1076
- 0, 0, 388, 389, 1, 0, 0, 0, 389, 390, 6, 19, 10, 0, 390, 391, 1, 0, 0, 0, 391, 392, 6,
1077
- 19, 1, 0, 392, 44, 1, 0, 0, 0, 393, 394, 4, 20, 10, 0, 394, 395, 5, 35, 0, 0, 395, 396,
1078
- 5, 35, 0, 0, 396, 397, 5, 35, 0, 0, 397, 398, 5, 32, 0, 0, 398, 399, 5, 70, 0, 0, 399,
1079
- 400, 5, 79, 0, 0, 400, 401, 5, 82, 0, 0, 401, 402, 5, 75, 0, 0, 402, 404, 1, 0, 0, 0, 403,
1080
- 405, 3, 5, 0, 0, 404, 403, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406,
1081
- 407, 6, 20, 11, 0, 407, 408, 1, 0, 0, 0, 408, 409, 6, 20, 1, 0, 409, 46, 1, 0, 0, 0, 410,
1082
- 411, 4, 21, 11, 0, 411, 412, 5, 35, 0, 0, 412, 413, 5, 35, 0, 0, 413, 414, 5, 35, 0, 0,
1083
- 414, 415, 5, 32, 0, 0, 415, 416, 5, 75, 0, 0, 416, 417, 5, 73, 0, 0, 417, 418, 5, 76,
1084
- 0, 0, 418, 419, 5, 76, 0, 0, 419, 421, 1, 0, 0, 0, 420, 422, 3, 5, 0, 0, 421, 420, 1, 0,
1085
- 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 424, 6, 21, 12, 0, 424, 425, 1,
1086
- 0, 0, 0, 425, 426, 6, 21, 1, 0, 426, 48, 1, 0, 0, 0, 427, 428, 4, 22, 12, 0, 428, 429,
1087
- 5, 35, 0, 0, 429, 430, 5, 35, 0, 0, 430, 431, 5, 35, 0, 0, 431, 432, 5, 32, 0, 0, 432,
1088
- 433, 5, 76, 0, 0, 433, 434, 5, 79, 0, 0, 434, 435, 5, 79, 0, 0, 435, 436, 5, 75, 0, 0,
1089
- 436, 438, 1, 0, 0, 0, 437, 439, 3, 5, 0, 0, 438, 437, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0,
1090
- 439, 440, 1, 0, 0, 0, 440, 441, 6, 22, 13, 0, 441, 442, 1, 0, 0, 0, 442, 443, 6, 22, 1,
1091
- 0, 443, 50, 1, 0, 0, 0, 444, 445, 4, 23, 13, 0, 445, 446, 5, 35, 0, 0, 446, 447, 5, 35,
1092
- 0, 0, 447, 448, 5, 35, 0, 0, 448, 449, 5, 32, 0, 0, 449, 450, 5, 66, 0, 0, 450, 451, 5,
1093
- 85, 0, 0, 451, 452, 5, 70, 0, 0, 452, 453, 5, 70, 0, 0, 453, 455, 1, 0, 0, 0, 454, 456,
1094
- 3, 5, 0, 0, 455, 454, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458,
1095
- 6, 23, 14, 0, 458, 459, 1, 0, 0, 0, 459, 460, 6, 23, 1, 0, 460, 52, 1, 0, 0, 0, 461, 481,
1096
- 4, 24, 14, 0, 462, 463, 5, 96, 0, 0, 463, 464, 5, 96, 0, 0, 464, 465, 5, 96, 0, 0, 465,
1097
- 466, 5, 101, 0, 0, 466, 467, 5, 120, 0, 0, 467, 468, 5, 97, 0, 0, 468, 469, 5, 109, 0,
1098
- 0, 469, 470, 5, 112, 0, 0, 470, 471, 5, 108, 0, 0, 471, 482, 5, 101, 0, 0, 472, 473,
1099
- 5, 96, 0, 0, 473, 474, 5, 96, 0, 0, 474, 475, 5, 96, 0, 0, 475, 476, 5, 112, 0, 0, 476,
1100
- 477, 5, 108, 0, 0, 477, 478, 5, 117, 0, 0, 478, 479, 5, 114, 0, 0, 479, 480, 5, 110,
1101
- 0, 0, 480, 482, 5, 107, 0, 0, 481, 462, 1, 0, 0, 0, 481, 472, 1, 0, 0, 0, 482, 483, 1,
1102
- 0, 0, 0, 483, 484, 3, 23, 9, 0, 484, 485, 6, 24, 15, 0, 485, 54, 1, 0, 0, 0, 486, 487,
1103
- 4, 25, 15, 0, 487, 488, 5, 96, 0, 0, 488, 489, 5, 96, 0, 0, 489, 490, 5, 96, 0, 0, 490,
1104
- 492, 1, 0, 0, 0, 491, 493, 3, 23, 9, 0, 492, 491, 1, 0, 0, 0, 492, 493, 1, 0, 0, 0, 493,
1105
- 494, 1, 0, 0, 0, 494, 495, 6, 25, 16, 0, 495, 56, 1, 0, 0, 0, 496, 498, 7, 5, 0, 0, 497,
1106
- 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500,
1107
- 501, 1, 0, 0, 0, 501, 502, 6, 26, 17, 0, 502, 58, 1, 0, 0, 0, 503, 504, 5, 60, 0, 0, 504,
1108
- 505, 5, 116, 0, 0, 505, 506, 5, 104, 0, 0, 506, 507, 5, 105, 0, 0, 507, 508, 5, 110,
1109
- 0, 0, 508, 509, 5, 107, 0, 0, 509, 510, 5, 62, 0, 0, 510, 514, 1, 0, 0, 0, 511, 513, 9,
1110
- 0, 0, 0, 512, 511, 1, 0, 0, 0, 513, 516, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 514, 512, 1,
1111
- 0, 0, 0, 515, 517, 1, 0, 0, 0, 516, 514, 1, 0, 0, 0, 517, 518, 5, 60, 0, 0, 518, 519, 5,
1112
- 47, 0, 0, 519, 520, 5, 116, 0, 0, 520, 521, 5, 104, 0, 0, 521, 522, 5, 105, 0, 0, 522,
1113
- 523, 5, 110, 0, 0, 523, 524, 5, 107, 0, 0, 524, 525, 5, 62, 0, 0, 525, 526, 1, 0, 0, 0,
1114
- 526, 527, 6, 27, 18, 0, 527, 60, 1, 0, 0, 0, 528, 529, 5, 60, 0, 0, 529, 530, 5, 124,
1115
- 0, 0, 530, 531, 5, 99, 0, 0, 531, 532, 5, 104, 0, 0, 532, 533, 5, 97, 0, 0, 533, 534,
1116
- 5, 110, 0, 0, 534, 535, 5, 110, 0, 0, 535, 536, 5, 101, 0, 0, 536, 537, 5, 108, 0, 0,
1117
- 537, 538, 5, 62, 0, 0, 538, 542, 1, 0, 0, 0, 539, 541, 9, 0, 0, 0, 540, 539, 1, 0, 0, 0,
1118
- 541, 544, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 543, 545, 1, 0, 0, 0,
1119
- 544, 542, 1, 0, 0, 0, 545, 546, 5, 60, 0, 0, 546, 547, 5, 99, 0, 0, 547, 548, 5, 104,
1120
- 0, 0, 548, 549, 5, 97, 0, 0, 549, 550, 5, 110, 0, 0, 550, 551, 5, 110, 0, 0, 551, 552,
1121
- 5, 101, 0, 0, 552, 553, 5, 108, 0, 0, 553, 554, 5, 124, 0, 0, 554, 555, 5, 62, 0, 0, 555,
1122
- 556, 1, 0, 0, 0, 556, 557, 6, 28, 18, 0, 557, 62, 1, 0, 0, 0, 558, 560, 8, 6, 0, 0, 559,
1123
- 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562,
1124
- 64, 1, 0, 0, 0, 563, 564, 5, 35, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 6, 30, 18, 0, 566,
1125
- 66, 1, 0, 0, 0, 567, 569, 7, 7, 0, 0, 568, 567, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 568,
1126
- 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 573, 6, 31, 19, 0, 573, 574,
1127
- 1, 0, 0, 0, 574, 575, 6, 31, 20, 0, 575, 68, 1, 0, 0, 0, 576, 577, 4, 32, 16, 0, 577, 594,
1128
- 5, 40, 0, 0, 578, 579, 5, 78, 0, 0, 579, 580, 5, 69, 0, 0, 580, 581, 5, 88, 0, 0, 581,
1129
- 595, 5, 84, 0, 0, 582, 583, 5, 87, 0, 0, 583, 584, 5, 65, 0, 0, 584, 585, 5, 73, 0, 0,
1130
- 585, 595, 5, 84, 0, 0, 586, 587, 5, 84, 0, 0, 587, 588, 5, 69, 0, 0, 588, 589, 5, 82,
1131
- 0, 0, 589, 595, 5, 77, 0, 0, 590, 591, 5, 70, 0, 0, 591, 592, 5, 65, 0, 0, 592, 593, 5,
1132
- 73, 0, 0, 593, 595, 5, 76, 0, 0, 594, 578, 1, 0, 0, 0, 594, 582, 1, 0, 0, 0, 594, 586,
1133
- 1, 0, 0, 0, 594, 590, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 597, 5, 41, 0, 0, 597, 598,
1134
- 6, 32, 21, 0, 598, 599, 1, 0, 0, 0, 599, 600, 6, 32, 22, 0, 600, 70, 1, 0, 0, 0, 601, 602,
1135
- 4, 33, 17, 0, 602, 604, 5, 91, 0, 0, 603, 605, 7, 8, 0, 0, 604, 603, 1, 0, 0, 0, 605, 606,
1136
- 1, 0, 0, 0, 606, 604, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, 608, 609,
1137
- 5, 93, 0, 0, 609, 610, 6, 33, 23, 0, 610, 611, 1, 0, 0, 0, 611, 612, 6, 33, 24, 0, 612,
1138
- 72, 1, 0, 0, 0, 613, 614, 4, 34, 18, 0, 614, 615, 5, 40, 0, 0, 615, 616, 6, 34, 25, 0,
1139
- 616, 617, 1, 0, 0, 0, 617, 618, 6, 34, 26, 0, 618, 619, 6, 34, 27, 0, 619, 74, 1, 0, 0,
1140
- 0, 620, 621, 4, 35, 19, 0, 621, 622, 5, 123, 0, 0, 622, 623, 6, 35, 28, 0, 623, 624,
1141
- 1, 0, 0, 0, 624, 625, 6, 35, 29, 0, 625, 626, 6, 35, 30, 0, 626, 76, 1, 0, 0, 0, 627, 628,
1142
- 4, 36, 20, 0, 628, 629, 3, 15, 5, 0, 629, 630, 1, 0, 0, 0, 630, 631, 6, 36, 31, 0, 631,
1143
- 78, 1, 0, 0, 0, 632, 633, 4, 37, 21, 0, 633, 634, 3, 9, 2, 0, 634, 635, 1, 0, 0, 0, 635,
1144
- 636, 6, 37, 31, 0, 636, 80, 1, 0, 0, 0, 637, 638, 4, 38, 22, 0, 638, 639, 3, 21, 8, 0,
1145
- 639, 640, 1, 0, 0, 0, 640, 641, 6, 38, 32, 0, 641, 82, 1, 0, 0, 0, 642, 643, 4, 39, 23,
1146
- 0, 643, 644, 5, 60, 0, 0, 644, 645, 5, 33, 0, 0, 645, 646, 5, 45, 0, 0, 646, 647, 5, 45,
1147
- 0, 0, 647, 651, 1, 0, 0, 0, 648, 650, 8, 9, 0, 0, 649, 648, 1, 0, 0, 0, 650, 653, 1, 0,
1148
- 0, 0, 651, 652, 1, 0, 0, 0, 651, 649, 1, 0, 0, 0, 652, 654, 1, 0, 0, 0, 653, 651, 1, 0,
1149
- 0, 0, 654, 655, 5, 45, 0, 0, 655, 656, 5, 45, 0, 0, 656, 657, 5, 62, 0, 0, 657, 658, 1,
1150
- 0, 0, 0, 658, 659, 6, 39, 33, 0, 659, 84, 1, 0, 0, 0, 660, 661, 4, 40, 24, 0, 661, 662,
1151
- 8, 10, 0, 0, 662, 663, 6, 40, 34, 0, 663, 664, 1, 0, 0, 0, 664, 665, 6, 40, 35, 0, 665,
1152
- 666, 6, 40, 36, 0, 666, 86, 1, 0, 0, 0, 667, 668, 4, 41, 25, 0, 668, 669, 3, 23, 9, 0,
1153
- 669, 670, 1, 0, 0, 0, 670, 671, 6, 41, 37, 0, 671, 672, 6, 41, 38, 0, 672, 88, 1, 0, 0,
1154
- 0, 673, 674, 3, 23, 9, 0, 674, 675, 6, 42, 39, 0, 675, 676, 1, 0, 0, 0, 676, 677, 6, 42,
1155
- 40, 0, 677, 678, 6, 42, 36, 0, 678, 90, 1, 0, 0, 0, 679, 680, 5, 92, 0, 0, 680, 681, 7,
1156
- 11, 0, 0, 681, 682, 1, 0, 0, 0, 682, 683, 6, 43, 41, 0, 683, 92, 1, 0, 0, 0, 684, 686,
1157
- 8, 12, 0, 0, 685, 684, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 687, 688,
1158
- 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 690, 6, 44, 41, 0, 690, 94, 1, 0, 0, 0, 691, 692,
1159
- 5, 92, 0, 0, 692, 693, 1, 0, 0, 0, 693, 694, 6, 45, 41, 0, 694, 96, 1, 0, 0, 0, 695, 696,
1160
- 5, 40, 0, 0, 696, 697, 6, 46, 42, 0, 697, 698, 1, 0, 0, 0, 698, 699, 6, 46, 41, 0, 699,
1161
- 98, 1, 0, 0, 0, 700, 701, 4, 47, 26, 0, 701, 702, 5, 41, 0, 0, 702, 703, 6, 47, 43, 0,
1162
- 703, 704, 1, 0, 0, 0, 704, 705, 6, 47, 41, 0, 705, 100, 1, 0, 0, 0, 706, 707, 5, 41, 0,
1163
- 0, 707, 708, 6, 48, 44, 0, 708, 709, 1, 0, 0, 0, 709, 710, 6, 48, 45, 0, 710, 711, 6,
1164
- 48, 1, 0, 711, 102, 1, 0, 0, 0, 712, 714, 8, 13, 0, 0, 713, 712, 1, 0, 0, 0, 714, 715,
1165
- 1, 0, 0, 0, 715, 713, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 718,
1166
- 6, 49, 46, 0, 718, 104, 1, 0, 0, 0, 719, 720, 5, 123, 0, 0, 720, 721, 6, 50, 47, 0, 721,
1167
- 722, 1, 0, 0, 0, 722, 723, 6, 50, 46, 0, 723, 106, 1, 0, 0, 0, 724, 725, 4, 51, 27, 0,
1168
- 725, 726, 5, 125, 0, 0, 726, 727, 6, 51, 48, 0, 727, 728, 1, 0, 0, 0, 728, 729, 6, 51,
1169
- 46, 0, 729, 108, 1, 0, 0, 0, 730, 731, 5, 125, 0, 0, 731, 732, 6, 52, 49, 0, 732, 733,
1170
- 1, 0, 0, 0, 733, 734, 6, 52, 50, 0, 734, 735, 6, 52, 1, 0, 735, 110, 1, 0, 0, 0, 736, 737,
1171
- 4, 53, 28, 0, 737, 738, 5, 96, 0, 0, 738, 739, 5, 96, 0, 0, 739, 740, 5, 96, 0, 0, 740,
1172
- 742, 1, 0, 0, 0, 741, 743, 3, 23, 9, 0, 742, 741, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743,
1173
- 744, 1, 0, 0, 0, 744, 745, 6, 53, 51, 0, 745, 746, 1, 0, 0, 0, 746, 747, 6, 53, 52, 0,
1174
- 747, 748, 6, 53, 38, 0, 748, 112, 1, 0, 0, 0, 749, 750, 4, 54, 29, 0, 750, 751, 3, 23,
1175
- 9, 0, 751, 752, 1, 0, 0, 0, 752, 753, 6, 54, 37, 0, 753, 754, 6, 54, 38, 0, 754, 114,
1176
- 1, 0, 0, 0, 755, 756, 4, 55, 30, 0, 756, 760, 3, 23, 9, 0, 757, 759, 7, 7, 0, 0, 758, 757,
1177
- 1, 0, 0, 0, 759, 762, 1, 0, 0, 0, 760, 758, 1, 0, 0, 0, 760, 761, 1, 0, 0, 0, 761, 763,
1178
- 1, 0, 0, 0, 762, 760, 1, 0, 0, 0, 763, 764, 3, 23, 9, 0, 764, 765, 1, 0, 0, 0, 765, 766,
1179
- 6, 55, 37, 0, 766, 767, 6, 55, 38, 0, 767, 116, 1, 0, 0, 0, 768, 769, 4, 56, 31, 0, 769,
1180
- 770, 3, 23, 9, 0, 770, 771, 1, 0, 0, 0, 771, 772, 6, 56, 37, 0, 772, 773, 6, 56, 38, 0,
1181
- 773, 118, 1, 0, 0, 0, 774, 776, 4, 57, 32, 0, 775, 777, 7, 7, 0, 0, 776, 775, 1, 0, 0,
1182
- 0, 777, 778, 1, 0, 0, 0, 778, 776, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 780, 1, 0, 0,
1183
- 0, 780, 781, 3, 23, 9, 0, 781, 782, 1, 0, 0, 0, 782, 783, 6, 57, 37, 0, 783, 784, 6, 57,
1184
- 38, 0, 784, 120, 1, 0, 0, 0, 785, 787, 8, 9, 0, 0, 786, 785, 1, 0, 0, 0, 787, 788, 1, 0,
1185
- 0, 0, 788, 786, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 790, 1, 0, 0, 0, 790, 791, 6, 58,
1186
- 53, 0, 791, 792, 1, 0, 0, 0, 792, 793, 6, 58, 35, 0, 793, 122, 1, 0, 0, 0, 794, 795, 5,
1187
- 13, 0, 0, 795, 796, 5, 10, 0, 0, 796, 797, 1, 0, 0, 0, 797, 798, 6, 59, 54, 0, 798, 799,
1188
- 1, 0, 0, 0, 799, 800, 6, 59, 35, 0, 800, 124, 1, 0, 0, 0, 801, 802, 5, 10, 0, 0, 802, 803,
1189
- 6, 60, 55, 0, 803, 804, 1, 0, 0, 0, 804, 805, 6, 60, 35, 0, 805, 126, 1, 0, 0, 0, 806,
1190
- 807, 5, 13, 0, 0, 807, 808, 6, 61, 56, 0, 808, 809, 1, 0, 0, 0, 809, 810, 6, 61, 35, 0,
1191
- 810, 128, 1, 0, 0, 0, 51, 0, 1, 2, 3, 4, 132, 135, 140, 146, 148, 155, 157, 162, 176,
1192
- 182, 187, 198, 203, 209, 214, 220, 234, 251, 268, 285, 302, 319, 336, 353, 370,
1193
- 387, 404, 421, 438, 455, 481, 492, 499, 514, 542, 561, 570, 594, 606, 651, 687,
1194
- 715, 742, 760, 778, 788, 57, 1, 10, 0, 2, 1, 0, 1, 11, 1, 1, 12, 2, 1, 13, 3, 1, 14, 4,
1195
- 1, 15, 5, 1, 16, 6, 1, 17, 7, 1, 18, 8, 1, 19, 9, 1, 20, 10, 1, 21, 11, 1, 22, 12, 1, 23,
1196
- 13, 1, 24, 14, 1, 25, 15, 0, 1, 0, 7, 12, 0, 1, 31, 16, 6, 0, 0, 1, 32, 17, 7, 14, 0, 1, 33,
1197
- 18, 7, 15, 0, 1, 34, 19, 7, 1, 0, 2, 2, 0, 1, 35, 20, 7, 3, 0, 2, 3, 0, 7, 5, 0, 7, 6, 0, 7,
1198
- 13, 0, 1, 40, 21, 7, 11, 0, 2, 4, 0, 7, 8, 0, 2, 0, 0, 1, 42, 22, 7, 7, 0, 7, 9, 0, 1, 46, 23,
1199
- 1, 47, 24, 1, 48, 25, 7, 2, 0, 7, 10, 0, 1, 50, 26, 1, 51, 27, 1, 52, 28, 7, 4, 0, 1, 53,
1200
- 29, 7, 31, 0, 1, 58, 30, 1, 59, 31, 1, 60, 32, 1, 61, 33
801
+ 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 131, 8, 0,
802
+ 10, 0, 12, 0, 134, 9, 0, 1, 1, 4, 1, 137, 8, 1, 11, 1, 12, 1, 138, 1, 2, 3, 2, 142, 8, 2,
803
+ 1, 2, 4, 2, 145, 8, 2, 11, 2, 12, 2, 146, 1, 2, 1, 2, 4, 2, 151, 8, 2, 11, 2, 12, 2, 152,
804
+ 3, 2, 155, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 162, 8, 3, 3, 3, 164, 8, 3, 1, 3, 5, 3,
805
+ 167, 8, 3, 10, 3, 12, 3, 170, 9, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1,
806
+ 5, 1, 5, 1, 5, 3, 5, 184, 8, 5, 1, 5, 3, 5, 187, 8, 5, 1, 5, 3, 5, 190, 8, 5, 1, 6, 1, 6, 1,
807
+ 6, 3, 6, 195, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 201, 8, 7, 1, 7, 5, 7, 204, 8, 7, 10, 7, 12,
808
+ 7, 207, 9, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 215, 8, 8, 10, 8, 12, 8, 218, 9, 8,
809
+ 1, 9, 1, 9, 3, 9, 222, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 228, 8, 10, 1, 10, 5, 10,
810
+ 231, 8, 10, 10, 10, 12, 10, 234, 9, 10, 1, 10, 1, 10, 1, 11, 3, 11, 239, 8, 11, 1, 11,
811
+ 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 246, 8, 12, 10, 12, 12, 12, 249, 9, 12, 1, 12, 1, 12,
812
+ 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 5, 13, 260, 8, 13, 10, 13, 12, 13, 263,
813
+ 9, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 4, 14, 272, 8, 14, 11, 14, 12, 14,
814
+ 273, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15,
815
+ 287, 8, 15, 10, 15, 12, 15, 290, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15,
816
+ 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16,
817
+ 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 316, 8, 16, 10, 16, 12, 16, 319, 9, 16, 1, 16, 1, 16,
818
+ 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17,
819
+ 4, 17, 336, 8, 17, 11, 17, 12, 17, 337, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18,
820
+ 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 4, 19, 353, 8, 19, 11, 19, 12, 19, 354, 1, 19,
821
+ 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 4, 20, 363, 8, 20, 11, 20, 12, 20, 364, 1, 20, 1, 20,
822
+ 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22,
823
+ 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24,
824
+ 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26,
825
+ 407, 8, 26, 10, 26, 12, 26, 410, 9, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27,
826
+ 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 425, 8, 27, 10, 27, 12, 27, 428, 9, 27,
827
+ 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 5, 28, 437, 8, 28, 10, 28, 12, 28, 440,
828
+ 9, 28, 1, 28, 5, 28, 443, 8, 28, 10, 28, 12, 28, 446, 9, 28, 1, 28, 1, 28, 1, 28, 1, 28,
829
+ 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30,
830
+ 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 5, 32, 474, 8, 32, 10, 32,
831
+ 12, 32, 477, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
832
+ 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 4, 35, 495, 8, 35, 11, 35, 12, 35, 496, 1, 35,
833
+ 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38,
834
+ 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40,
835
+ 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43,
836
+ 1, 43, 1, 43, 5, 43, 541, 8, 43, 10, 43, 12, 43, 544, 9, 43, 1, 43, 1, 43, 1, 43, 1, 43,
837
+ 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 560, 8, 45,
838
+ 10, 45, 12, 45, 563, 9, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 4, 46, 570, 8, 46, 11, 46,
839
+ 12, 46, 571, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49,
840
+ 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51,
841
+ 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 5, 52, 604, 8, 52, 10, 52, 12, 52, 607, 9, 52,
842
+ 1, 52, 1, 52, 5, 52, 611, 8, 52, 10, 52, 12, 52, 614, 9, 52, 1, 52, 5, 52, 617, 8, 52,
843
+ 10, 52, 12, 52, 620, 9, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 5, 53, 629,
844
+ 8, 53, 10, 53, 12, 53, 632, 9, 53, 1, 53, 1, 53, 5, 53, 636, 8, 53, 10, 53, 12, 53, 639,
845
+ 9, 53, 1, 53, 5, 53, 642, 8, 53, 10, 53, 12, 53, 645, 9, 53, 1, 53, 1, 53, 1, 53, 1, 53,
846
+ 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 4, 55, 659, 8, 55, 11, 55, 12, 55,
847
+ 660, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57,
848
+ 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 3, 288, 317, 408,
849
+ 0, 60, 5, 0, 7, 0, 9, 0, 11, 0, 13, 0, 15, 0, 17, 0, 19, 0, 21, 0, 23, 0, 25, 0, 27, 0, 29,
850
+ 26, 31, 0, 33, 27, 35, 0, 37, 0, 39, 0, 41, 0, 43, 0, 45, 28, 47, 0, 49, 0, 51, 0, 53, 0,
851
+ 55, 0, 57, 0, 59, 0, 61, 0, 63, 0, 65, 0, 67, 0, 69, 0, 71, 0, 73, 0, 75, 0, 77, 29, 79,
852
+ 0, 81, 0, 83, 0, 85, 0, 87, 30, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 31, 103,
853
+ 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 32, 5,
854
+ 0, 1, 2, 3, 4, 15, 6, 0, 43, 43, 45, 46, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57,
855
+ 3, 0, 48, 57, 65, 90, 97, 122, 2, 0, 32, 32, 58, 58, 1, 0, 49, 57, 3, 0, 9, 10, 13, 13,
856
+ 32, 32, 4, 0, 9, 10, 13, 13, 32, 32, 96, 96, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 13, 13, 7,
857
+ 0, 9, 10, 13, 13, 32, 32, 40, 40, 60, 60, 91, 91, 96, 96, 2, 0, 40, 41, 92, 92, 6, 0, 10,
858
+ 10, 13, 13, 40, 41, 60, 60, 92, 92, 96, 96, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 6, 0,
859
+ 10, 10, 13, 13, 34, 34, 91, 91, 93, 93, 96, 96, 3, 0, 10, 10, 13, 13, 96, 96, 713, 0,
860
+ 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0,
861
+ 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 1, 43, 1, 0, 0, 0, 1, 45, 1, 0, 0, 0, 1, 47, 1, 0, 0, 0, 1,
862
+ 49, 1, 0, 0, 0, 1, 51, 1, 0, 0, 0, 1, 53, 1, 0, 0, 0, 1, 55, 1, 0, 0, 0, 1, 57, 1, 0, 0, 0, 1,
863
+ 59, 1, 0, 0, 0, 1, 61, 1, 0, 0, 0, 1, 63, 1, 0, 0, 0, 1, 65, 1, 0, 0, 0, 1, 67, 1, 0, 0, 0, 2,
864
+ 69, 1, 0, 0, 0, 2, 71, 1, 0, 0, 0, 2, 73, 1, 0, 0, 0, 2, 75, 1, 0, 0, 0, 2, 77, 1, 0, 0, 0, 2,
865
+ 79, 1, 0, 0, 0, 2, 81, 1, 0, 0, 0, 2, 83, 1, 0, 0, 0, 2, 85, 1, 0, 0, 0, 2, 87, 1, 0, 0, 0, 2,
866
+ 89, 1, 0, 0, 0, 3, 91, 1, 0, 0, 0, 3, 93, 1, 0, 0, 0, 3, 95, 1, 0, 0, 0, 3, 97, 1, 0, 0, 0, 3,
867
+ 99, 1, 0, 0, 0, 3, 101, 1, 0, 0, 0, 3, 103, 1, 0, 0, 0, 3, 105, 1, 0, 0, 0, 3, 107, 1, 0, 0,
868
+ 0, 4, 109, 1, 0, 0, 0, 4, 111, 1, 0, 0, 0, 4, 113, 1, 0, 0, 0, 4, 115, 1, 0, 0, 0, 4, 117,
869
+ 1, 0, 0, 0, 4, 119, 1, 0, 0, 0, 4, 121, 1, 0, 0, 0, 4, 123, 1, 0, 0, 0, 5, 125, 1, 0, 0, 0,
870
+ 7, 136, 1, 0, 0, 0, 9, 141, 1, 0, 0, 0, 11, 156, 1, 0, 0, 0, 13, 173, 1, 0, 0, 0, 15, 180,
871
+ 1, 0, 0, 0, 17, 194, 1, 0, 0, 0, 19, 196, 1, 0, 0, 0, 21, 210, 1, 0, 0, 0, 23, 221, 1, 0,
872
+ 0, 0, 25, 223, 1, 0, 0, 0, 27, 238, 1, 0, 0, 0, 29, 242, 1, 0, 0, 0, 31, 256, 1, 0, 0, 0,
873
+ 33, 271, 1, 0, 0, 0, 35, 277, 1, 0, 0, 0, 37, 303, 1, 0, 0, 0, 39, 335, 1, 0, 0, 0, 41, 344,
874
+ 1, 0, 0, 0, 43, 350, 1, 0, 0, 0, 45, 362, 1, 0, 0, 0, 47, 370, 1, 0, 0, 0, 49, 377, 1, 0,
875
+ 0, 0, 51, 384, 1, 0, 0, 0, 53, 389, 1, 0, 0, 0, 55, 394, 1, 0, 0, 0, 57, 399, 1, 0, 0, 0,
876
+ 59, 417, 1, 0, 0, 0, 61, 433, 1, 0, 0, 0, 63, 452, 1, 0, 0, 0, 65, 459, 1, 0, 0, 0, 67, 465,
877
+ 1, 0, 0, 0, 69, 470, 1, 0, 0, 0, 71, 483, 1, 0, 0, 0, 73, 488, 1, 0, 0, 0, 75, 494, 1, 0,
878
+ 0, 0, 77, 500, 1, 0, 0, 0, 79, 504, 1, 0, 0, 0, 81, 509, 1, 0, 0, 0, 83, 515, 1, 0, 0, 0,
879
+ 85, 521, 1, 0, 0, 0, 87, 527, 1, 0, 0, 0, 89, 531, 1, 0, 0, 0, 91, 537, 1, 0, 0, 0, 93, 550,
880
+ 1, 0, 0, 0, 95, 555, 1, 0, 0, 0, 97, 569, 1, 0, 0, 0, 99, 575, 1, 0, 0, 0, 101, 579, 1, 0,
881
+ 0, 0, 103, 583, 1, 0, 0, 0, 105, 588, 1, 0, 0, 0, 107, 594, 1, 0, 0, 0, 109, 600, 1, 0,
882
+ 0, 0, 111, 626, 1, 0, 0, 0, 113, 651, 1, 0, 0, 0, 115, 658, 1, 0, 0, 0, 117, 664, 1, 0,
883
+ 0, 0, 119, 668, 1, 0, 0, 0, 121, 675, 1, 0, 0, 0, 123, 680, 1, 0, 0, 0, 125, 126, 5, 96,
884
+ 0, 0, 126, 127, 5, 96, 0, 0, 127, 128, 5, 96, 0, 0, 128, 132, 1, 0, 0, 0, 129, 131, 5,
885
+ 96, 0, 0, 130, 129, 1, 0, 0, 0, 131, 134, 1, 0, 0, 0, 132, 130, 1, 0, 0, 0, 132, 133, 1,
886
+ 0, 0, 0, 133, 6, 1, 0, 0, 0, 134, 132, 1, 0, 0, 0, 135, 137, 7, 0, 0, 0, 136, 135, 1, 0,
887
+ 0, 0, 137, 138, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 8, 1, 0, 0,
888
+ 0, 140, 142, 5, 45, 0, 0, 141, 140, 1, 0, 0, 0, 141, 142, 1, 0, 0, 0, 142, 144, 1, 0, 0,
889
+ 0, 143, 145, 7, 1, 0, 0, 144, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 144, 1, 0, 0,
890
+ 0, 146, 147, 1, 0, 0, 0, 147, 154, 1, 0, 0, 0, 148, 150, 5, 46, 0, 0, 149, 151, 7, 1, 0,
891
+ 0, 150, 149, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0,
892
+ 0, 153, 155, 1, 0, 0, 0, 154, 148, 1, 0, 0, 0, 154, 155, 1, 0, 0, 0, 155, 10, 1, 0, 0, 0,
893
+ 156, 157, 5, 60, 0, 0, 157, 168, 3, 9, 2, 0, 158, 164, 5, 45, 0, 0, 159, 161, 5, 44, 0,
894
+ 0, 160, 162, 5, 32, 0, 0, 161, 160, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 164, 1, 0, 0,
895
+ 0, 163, 158, 1, 0, 0, 0, 163, 159, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 167, 3, 9, 2,
896
+ 0, 166, 163, 1, 0, 0, 0, 167, 170, 1, 0, 0, 0, 168, 166, 1, 0, 0, 0, 168, 169, 1, 0, 0,
897
+ 0, 169, 171, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 171, 172, 5, 62, 0, 0, 172, 12, 1, 0, 0,
898
+ 0, 173, 174, 5, 64, 0, 0, 174, 175, 7, 2, 0, 0, 175, 176, 7, 2, 0, 0, 176, 177, 7, 2, 0,
899
+ 0, 177, 178, 7, 2, 0, 0, 178, 179, 7, 2, 0, 0, 179, 14, 1, 0, 0, 0, 180, 181, 5, 64, 0,
900
+ 0, 181, 183, 7, 1, 0, 0, 182, 184, 7, 1, 0, 0, 183, 182, 1, 0, 0, 0, 183, 184, 1, 0, 0,
901
+ 0, 184, 186, 1, 0, 0, 0, 185, 187, 7, 1, 0, 0, 186, 185, 1, 0, 0, 0, 186, 187, 1, 0, 0,
902
+ 0, 187, 189, 1, 0, 0, 0, 188, 190, 7, 1, 0, 0, 189, 188, 1, 0, 0, 0, 189, 190, 1, 0, 0,
903
+ 0, 190, 16, 1, 0, 0, 0, 191, 195, 3, 9, 2, 0, 192, 195, 3, 13, 4, 0, 193, 195, 3, 15, 5,
904
+ 0, 194, 191, 1, 0, 0, 0, 194, 192, 1, 0, 0, 0, 194, 193, 1, 0, 0, 0, 195, 18, 1, 0, 0, 0,
905
+ 196, 197, 5, 60, 0, 0, 197, 205, 3, 17, 6, 0, 198, 200, 5, 44, 0, 0, 199, 201, 5, 32,
906
+ 0, 0, 200, 199, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 204, 3, 17,
907
+ 6, 0, 203, 198, 1, 0, 0, 0, 204, 207, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0,
908
+ 0, 0, 206, 208, 1, 0, 0, 0, 207, 205, 1, 0, 0, 0, 208, 209, 5, 62, 0, 0, 209, 20, 1, 0,
909
+ 0, 0, 210, 211, 3, 13, 4, 0, 211, 212, 7, 3, 0, 0, 212, 216, 7, 4, 0, 0, 213, 215, 7, 1,
910
+ 0, 0, 214, 213, 1, 0, 0, 0, 215, 218, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 216, 217, 1, 0,
911
+ 0, 0, 217, 22, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 219, 222, 3, 17, 6, 0, 220, 222, 3, 21,
912
+ 8, 0, 221, 219, 1, 0, 0, 0, 221, 220, 1, 0, 0, 0, 222, 24, 1, 0, 0, 0, 223, 224, 5, 60,
913
+ 0, 0, 224, 232, 3, 23, 9, 0, 225, 227, 5, 44, 0, 0, 226, 228, 5, 32, 0, 0, 227, 226, 1,
914
+ 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 231, 3, 23, 9, 0, 230, 225, 1,
915
+ 0, 0, 0, 231, 234, 1, 0, 0, 0, 232, 230, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 235, 1,
916
+ 0, 0, 0, 234, 232, 1, 0, 0, 0, 235, 236, 5, 62, 0, 0, 236, 26, 1, 0, 0, 0, 237, 239, 5,
917
+ 13, 0, 0, 238, 237, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 240, 1, 0, 0, 0, 240, 241, 5,
918
+ 10, 0, 0, 241, 28, 1, 0, 0, 0, 242, 243, 4, 12, 0, 0, 243, 247, 3, 5, 0, 0, 244, 246, 7,
919
+ 1, 0, 0, 245, 244, 1, 0, 0, 0, 246, 249, 1, 0, 0, 0, 247, 245, 1, 0, 0, 0, 247, 248, 1,
920
+ 0, 0, 0, 248, 250, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 250, 251, 3, 7, 1, 0, 251, 252, 4,
921
+ 12, 1, 0, 252, 253, 6, 12, 0, 0, 253, 254, 1, 0, 0, 0, 254, 255, 6, 12, 1, 0, 255, 30,
922
+ 1, 0, 0, 0, 256, 257, 4, 13, 2, 0, 257, 261, 3, 5, 0, 0, 258, 260, 7, 1, 0, 0, 259, 258,
923
+ 1, 0, 0, 0, 260, 263, 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 264,
924
+ 1, 0, 0, 0, 263, 261, 1, 0, 0, 0, 264, 265, 3, 7, 1, 0, 265, 266, 6, 13, 2, 0, 266, 267,
925
+ 1, 0, 0, 0, 267, 268, 6, 13, 3, 0, 268, 269, 6, 13, 4, 0, 269, 32, 1, 0, 0, 0, 270, 272,
926
+ 7, 5, 0, 0, 271, 270, 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, 273, 274,
927
+ 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 276, 6, 14, 4, 0, 276, 34, 1, 0, 0, 0, 277, 278,
928
+ 5, 60, 0, 0, 278, 279, 5, 116, 0, 0, 279, 280, 5, 104, 0, 0, 280, 281, 5, 105, 0, 0, 281,
929
+ 282, 5, 110, 0, 0, 282, 283, 5, 107, 0, 0, 283, 284, 5, 62, 0, 0, 284, 288, 1, 0, 0, 0,
930
+ 285, 287, 9, 0, 0, 0, 286, 285, 1, 0, 0, 0, 287, 290, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0,
931
+ 288, 286, 1, 0, 0, 0, 289, 291, 1, 0, 0, 0, 290, 288, 1, 0, 0, 0, 291, 292, 5, 60, 0, 0,
932
+ 292, 293, 5, 47, 0, 0, 293, 294, 5, 116, 0, 0, 294, 295, 5, 104, 0, 0, 295, 296, 5, 105,
933
+ 0, 0, 296, 297, 5, 110, 0, 0, 297, 298, 5, 107, 0, 0, 298, 299, 5, 62, 0, 0, 299, 300,
934
+ 1, 0, 0, 0, 300, 301, 6, 15, 3, 0, 301, 302, 6, 15, 4, 0, 302, 36, 1, 0, 0, 0, 303, 304,
935
+ 5, 60, 0, 0, 304, 305, 5, 124, 0, 0, 305, 306, 5, 99, 0, 0, 306, 307, 5, 104, 0, 0, 307,
936
+ 308, 5, 97, 0, 0, 308, 309, 5, 110, 0, 0, 309, 310, 5, 110, 0, 0, 310, 311, 5, 101, 0,
937
+ 0, 311, 312, 5, 108, 0, 0, 312, 313, 5, 62, 0, 0, 313, 317, 1, 0, 0, 0, 314, 316, 9, 0,
938
+ 0, 0, 315, 314, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 317, 315, 1, 0,
939
+ 0, 0, 318, 320, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320, 321, 5, 60, 0, 0, 321, 322, 5, 99,
940
+ 0, 0, 322, 323, 5, 104, 0, 0, 323, 324, 5, 97, 0, 0, 324, 325, 5, 110, 0, 0, 325, 326,
941
+ 5, 110, 0, 0, 326, 327, 5, 101, 0, 0, 327, 328, 5, 108, 0, 0, 328, 329, 5, 124, 0, 0,
942
+ 329, 330, 5, 62, 0, 0, 330, 331, 1, 0, 0, 0, 331, 332, 6, 16, 3, 0, 332, 333, 6, 16, 4,
943
+ 0, 333, 38, 1, 0, 0, 0, 334, 336, 8, 6, 0, 0, 335, 334, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0,
944
+ 337, 335, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 340, 6, 17, 5, 0,
945
+ 340, 341, 1, 0, 0, 0, 341, 342, 6, 17, 3, 0, 342, 343, 6, 17, 4, 0, 343, 40, 1, 0, 0, 0,
946
+ 344, 345, 5, 96, 0, 0, 345, 346, 6, 18, 6, 0, 346, 347, 1, 0, 0, 0, 347, 348, 6, 18, 3,
947
+ 0, 348, 349, 6, 18, 4, 0, 349, 42, 1, 0, 0, 0, 350, 352, 4, 19, 3, 0, 351, 353, 7, 7, 0,
948
+ 0, 352, 351, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 352, 1, 0, 0, 0, 354, 355, 1, 0, 0,
949
+ 0, 355, 356, 1, 0, 0, 0, 356, 357, 6, 19, 7, 0, 357, 358, 1, 0, 0, 0, 358, 359, 6, 19,
950
+ 8, 0, 359, 360, 6, 19, 9, 0, 360, 44, 1, 0, 0, 0, 361, 363, 7, 7, 0, 0, 362, 361, 1, 0,
951
+ 0, 0, 363, 364, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 366, 1, 0,
952
+ 0, 0, 366, 367, 6, 20, 10, 0, 367, 368, 1, 0, 0, 0, 368, 369, 6, 20, 11, 0, 369, 46, 1,
953
+ 0, 0, 0, 370, 371, 4, 21, 4, 0, 371, 372, 5, 40, 0, 0, 372, 373, 6, 21, 12, 0, 373, 374,
954
+ 1, 0, 0, 0, 374, 375, 6, 21, 13, 0, 375, 376, 6, 21, 14, 0, 376, 48, 1, 0, 0, 0, 377, 378,
955
+ 4, 22, 5, 0, 378, 379, 5, 91, 0, 0, 379, 380, 6, 22, 15, 0, 380, 381, 1, 0, 0, 0, 381,
956
+ 382, 6, 22, 16, 0, 382, 383, 6, 22, 17, 0, 383, 50, 1, 0, 0, 0, 384, 385, 4, 23, 6, 0,
957
+ 385, 386, 3, 19, 7, 0, 386, 387, 1, 0, 0, 0, 387, 388, 6, 23, 18, 0, 388, 52, 1, 0, 0,
958
+ 0, 389, 390, 4, 24, 7, 0, 390, 391, 3, 11, 3, 0, 391, 392, 1, 0, 0, 0, 392, 393, 6, 24,
959
+ 18, 0, 393, 54, 1, 0, 0, 0, 394, 395, 4, 25, 8, 0, 395, 396, 3, 25, 10, 0, 396, 397, 1,
960
+ 0, 0, 0, 397, 398, 6, 25, 18, 0, 398, 56, 1, 0, 0, 0, 399, 400, 4, 26, 9, 0, 400, 401,
961
+ 5, 60, 0, 0, 401, 402, 5, 33, 0, 0, 402, 403, 5, 45, 0, 0, 403, 404, 5, 45, 0, 0, 404,
962
+ 408, 1, 0, 0, 0, 405, 407, 8, 8, 0, 0, 406, 405, 1, 0, 0, 0, 407, 410, 1, 0, 0, 0, 408,
963
+ 409, 1, 0, 0, 0, 408, 406, 1, 0, 0, 0, 409, 411, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 411,
964
+ 412, 5, 45, 0, 0, 412, 413, 5, 45, 0, 0, 413, 414, 5, 62, 0, 0, 414, 415, 1, 0, 0, 0, 415,
965
+ 416, 6, 26, 19, 0, 416, 58, 1, 0, 0, 0, 417, 418, 4, 27, 10, 0, 418, 419, 5, 60, 0, 0,
966
+ 419, 420, 5, 33, 0, 0, 420, 421, 5, 45, 0, 0, 421, 422, 5, 45, 0, 0, 422, 426, 1, 0, 0,
967
+ 0, 423, 425, 8, 8, 0, 0, 424, 423, 1, 0, 0, 0, 425, 428, 1, 0, 0, 0, 426, 424, 1, 0, 0,
968
+ 0, 426, 427, 1, 0, 0, 0, 427, 429, 1, 0, 0, 0, 428, 426, 1, 0, 0, 0, 429, 430, 6, 27, 20,
969
+ 0, 430, 431, 1, 0, 0, 0, 431, 432, 6, 27, 19, 0, 432, 60, 1, 0, 0, 0, 433, 434, 4, 28,
970
+ 11, 0, 434, 438, 3, 5, 0, 0, 435, 437, 7, 1, 0, 0, 436, 435, 1, 0, 0, 0, 437, 440, 1, 0,
971
+ 0, 0, 438, 436, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 444, 1, 0, 0, 0, 440, 438, 1, 0,
972
+ 0, 0, 441, 443, 7, 7, 0, 0, 442, 441, 1, 0, 0, 0, 443, 446, 1, 0, 0, 0, 444, 442, 1, 0,
973
+ 0, 0, 444, 445, 1, 0, 0, 0, 445, 447, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 447, 448, 6, 28,
974
+ 21, 0, 448, 449, 1, 0, 0, 0, 449, 450, 6, 28, 8, 0, 450, 451, 6, 28, 9, 0, 451, 62, 1,
975
+ 0, 0, 0, 452, 453, 4, 29, 12, 0, 453, 454, 8, 9, 0, 0, 454, 455, 6, 29, 22, 0, 455, 456,
976
+ 1, 0, 0, 0, 456, 457, 6, 29, 23, 0, 457, 458, 6, 29, 24, 0, 458, 64, 1, 0, 0, 0, 459, 460,
977
+ 4, 30, 13, 0, 460, 461, 3, 27, 11, 0, 461, 462, 1, 0, 0, 0, 462, 463, 6, 30, 8, 0, 463,
978
+ 464, 6, 30, 9, 0, 464, 66, 1, 0, 0, 0, 465, 466, 3, 27, 11, 0, 466, 467, 1, 0, 0, 0, 467,
979
+ 468, 6, 31, 25, 0, 468, 469, 6, 31, 24, 0, 469, 68, 1, 0, 0, 0, 470, 471, 4, 32, 14, 0,
980
+ 471, 475, 3, 5, 0, 0, 472, 474, 7, 7, 0, 0, 473, 472, 1, 0, 0, 0, 474, 477, 1, 0, 0, 0,
981
+ 475, 473, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 478, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0,
982
+ 478, 479, 6, 32, 26, 0, 479, 480, 1, 0, 0, 0, 480, 481, 6, 32, 8, 0, 481, 482, 6, 32,
983
+ 9, 0, 482, 70, 1, 0, 0, 0, 483, 484, 3, 27, 11, 0, 484, 485, 1, 0, 0, 0, 485, 486, 6, 33,
984
+ 8, 0, 486, 487, 6, 33, 9, 0, 487, 72, 1, 0, 0, 0, 488, 489, 5, 92, 0, 0, 489, 490, 7, 10,
985
+ 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 6, 34, 27, 0, 492, 74, 1, 0, 0, 0, 493, 495, 8, 11,
986
+ 0, 0, 494, 493, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 494, 1, 0, 0, 0, 496, 497, 1, 0,
987
+ 0, 0, 497, 498, 1, 0, 0, 0, 498, 499, 6, 35, 27, 0, 499, 76, 1, 0, 0, 0, 500, 501, 5, 92,
988
+ 0, 0, 501, 502, 1, 0, 0, 0, 502, 503, 6, 36, 27, 0, 503, 78, 1, 0, 0, 0, 504, 505, 5, 40,
989
+ 0, 0, 505, 506, 6, 37, 28, 0, 506, 507, 1, 0, 0, 0, 507, 508, 6, 37, 27, 0, 508, 80, 1,
990
+ 0, 0, 0, 509, 510, 4, 38, 15, 0, 510, 511, 5, 41, 0, 0, 511, 512, 6, 38, 29, 0, 512, 513,
991
+ 1, 0, 0, 0, 513, 514, 6, 38, 27, 0, 514, 82, 1, 0, 0, 0, 515, 516, 4, 39, 16, 0, 516, 517,
992
+ 3, 19, 7, 0, 517, 518, 4, 39, 17, 0, 518, 519, 1, 0, 0, 0, 519, 520, 6, 39, 18, 0, 520,
993
+ 84, 1, 0, 0, 0, 521, 522, 4, 40, 18, 0, 522, 523, 3, 11, 3, 0, 523, 524, 4, 40, 19, 0,
994
+ 524, 525, 1, 0, 0, 0, 525, 526, 6, 40, 18, 0, 526, 86, 1, 0, 0, 0, 527, 528, 5, 96, 0,
995
+ 0, 528, 529, 1, 0, 0, 0, 529, 530, 6, 41, 27, 0, 530, 88, 1, 0, 0, 0, 531, 532, 5, 41,
996
+ 0, 0, 532, 533, 6, 42, 30, 0, 533, 534, 1, 0, 0, 0, 534, 535, 6, 42, 31, 0, 535, 536,
997
+ 6, 42, 1, 0, 536, 90, 1, 0, 0, 0, 537, 538, 4, 43, 20, 0, 538, 542, 3, 5, 0, 0, 539, 541,
998
+ 7, 7, 0, 0, 540, 539, 1, 0, 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 542, 543,
999
+ 1, 0, 0, 0, 543, 545, 1, 0, 0, 0, 544, 542, 1, 0, 0, 0, 545, 546, 6, 43, 32, 0, 546, 547,
1000
+ 1, 0, 0, 0, 547, 548, 6, 43, 8, 0, 548, 549, 6, 43, 9, 0, 549, 92, 1, 0, 0, 0, 550, 551,
1001
+ 3, 27, 11, 0, 551, 552, 1, 0, 0, 0, 552, 553, 6, 44, 8, 0, 553, 554, 6, 44, 9, 0, 554,
1002
+ 94, 1, 0, 0, 0, 555, 561, 5, 34, 0, 0, 556, 557, 5, 92, 0, 0, 557, 560, 8, 8, 0, 0, 558,
1003
+ 560, 8, 12, 0, 0, 559, 556, 1, 0, 0, 0, 559, 558, 1, 0, 0, 0, 560, 563, 1, 0, 0, 0, 561,
1004
+ 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 564, 1, 0, 0, 0, 563, 561, 1, 0, 0, 0, 564,
1005
+ 565, 5, 34, 0, 0, 565, 566, 1, 0, 0, 0, 566, 567, 6, 45, 33, 0, 567, 96, 1, 0, 0, 0, 568,
1006
+ 570, 8, 13, 0, 0, 569, 568, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571,
1007
+ 572, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 574, 6, 46, 33, 0, 574, 98, 1, 0, 0, 0, 575,
1008
+ 576, 5, 96, 0, 0, 576, 577, 1, 0, 0, 0, 577, 578, 6, 47, 33, 0, 578, 100, 1, 0, 0, 0, 579,
1009
+ 580, 5, 34, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 6, 48, 33, 0, 582, 102, 1, 0, 0, 0, 583,
1010
+ 584, 5, 91, 0, 0, 584, 585, 6, 49, 34, 0, 585, 586, 1, 0, 0, 0, 586, 587, 6, 49, 33, 0,
1011
+ 587, 104, 1, 0, 0, 0, 588, 589, 4, 50, 21, 0, 589, 590, 5, 93, 0, 0, 590, 591, 6, 50,
1012
+ 35, 0, 591, 592, 1, 0, 0, 0, 592, 593, 6, 50, 33, 0, 593, 106, 1, 0, 0, 0, 594, 595, 5,
1013
+ 93, 0, 0, 595, 596, 6, 51, 36, 0, 596, 597, 1, 0, 0, 0, 597, 598, 6, 51, 37, 0, 598, 599,
1014
+ 6, 51, 1, 0, 599, 108, 1, 0, 0, 0, 600, 601, 4, 52, 22, 0, 601, 605, 3, 27, 11, 0, 602,
1015
+ 604, 7, 7, 0, 0, 603, 602, 1, 0, 0, 0, 604, 607, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605,
1016
+ 606, 1, 0, 0, 0, 606, 608, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 608, 612, 3, 5, 0, 0, 609,
1017
+ 611, 7, 1, 0, 0, 610, 609, 1, 0, 0, 0, 611, 614, 1, 0, 0, 0, 612, 610, 1, 0, 0, 0, 612,
1018
+ 613, 1, 0, 0, 0, 613, 618, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 615, 617, 7, 7, 0, 0, 616,
1019
+ 615, 1, 0, 0, 0, 617, 620, 1, 0, 0, 0, 618, 616, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619,
1020
+ 621, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 621, 622, 6, 52, 38, 0, 622, 623, 1, 0, 0, 0, 623,
1021
+ 624, 6, 52, 8, 0, 624, 625, 6, 52, 9, 0, 625, 110, 1, 0, 0, 0, 626, 630, 4, 53, 23, 0,
1022
+ 627, 629, 7, 7, 0, 0, 628, 627, 1, 0, 0, 0, 629, 632, 1, 0, 0, 0, 630, 628, 1, 0, 0, 0,
1023
+ 630, 631, 1, 0, 0, 0, 631, 633, 1, 0, 0, 0, 632, 630, 1, 0, 0, 0, 633, 637, 3, 5, 0, 0,
1024
+ 634, 636, 7, 1, 0, 0, 635, 634, 1, 0, 0, 0, 636, 639, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0,
1025
+ 637, 638, 1, 0, 0, 0, 638, 643, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 640, 642, 7, 7, 0, 0,
1026
+ 641, 640, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0,
1027
+ 644, 646, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 647, 6, 53, 39, 0, 647, 648, 1, 0, 0,
1028
+ 0, 648, 649, 6, 53, 8, 0, 649, 650, 6, 53, 9, 0, 650, 112, 1, 0, 0, 0, 651, 652, 4, 54,
1029
+ 24, 0, 652, 653, 3, 27, 11, 0, 653, 654, 1, 0, 0, 0, 654, 655, 6, 54, 8, 0, 655, 656,
1030
+ 6, 54, 9, 0, 656, 114, 1, 0, 0, 0, 657, 659, 8, 14, 0, 0, 658, 657, 1, 0, 0, 0, 659, 660,
1031
+ 1, 0, 0, 0, 660, 658, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 663,
1032
+ 6, 55, 23, 0, 663, 116, 1, 0, 0, 0, 664, 665, 5, 96, 0, 0, 665, 666, 1, 0, 0, 0, 666, 667,
1033
+ 6, 56, 23, 0, 667, 118, 1, 0, 0, 0, 668, 669, 5, 13, 0, 0, 669, 670, 5, 10, 0, 0, 670,
1034
+ 671, 1, 0, 0, 0, 671, 672, 6, 57, 40, 0, 672, 673, 1, 0, 0, 0, 673, 674, 6, 57, 23, 0,
1035
+ 674, 120, 1, 0, 0, 0, 675, 676, 5, 10, 0, 0, 676, 677, 6, 58, 41, 0, 677, 678, 1, 0, 0,
1036
+ 0, 678, 679, 6, 58, 23, 0, 679, 122, 1, 0, 0, 0, 680, 681, 5, 13, 0, 0, 681, 682, 1, 0,
1037
+ 0, 0, 682, 683, 6, 59, 23, 0, 683, 124, 1, 0, 0, 0, 50, 0, 1, 2, 3, 4, 132, 138, 141, 146,
1038
+ 152, 154, 161, 163, 168, 183, 186, 189, 194, 200, 205, 216, 221, 227, 232, 238,
1039
+ 247, 261, 273, 288, 317, 337, 354, 364, 408, 426, 438, 444, 475, 496, 542, 559,
1040
+ 561, 571, 605, 612, 618, 630, 637, 643, 660, 42, 1, 12, 0, 2, 1, 0, 1, 13, 1, 7, 24,
1041
+ 0, 0, 1, 0, 1, 17, 2, 1, 18, 3, 1, 19, 4, 7, 20, 0, 2, 0, 0, 1, 20, 5, 6, 0, 0, 1, 21, 6, 7,
1042
+ 14, 0, 2, 2, 0, 1, 22, 7, 7, 16, 0, 2, 3, 0, 7, 18, 0, 7, 25, 0, 1, 27, 8, 1, 28, 9, 1, 29,
1043
+ 10, 7, 23, 0, 2, 4, 0, 7, 19, 0, 1, 32, 11, 7, 21, 0, 1, 37, 12, 1, 38, 13, 1, 42, 14, 7,
1044
+ 15, 0, 1, 43, 15, 7, 22, 0, 1, 49, 16, 1, 50, 17, 1, 51, 18, 7, 17, 0, 1, 52, 19, 1, 53,
1045
+ 20, 1, 57, 21, 1, 58, 22
1201
1046
  ];
1202
1047
  static __ATN;
1203
1048
  static get _ATN() {