@knowvah/dot-engine 2.3.0 → 2.4.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 (118) hide show
  1. package/dist/common/arith.d.ts +12 -0
  2. package/dist/common/arith.d.ts.map +1 -1
  3. package/dist/common/edge-in-box.d.ts +31 -0
  4. package/dist/common/edge-in-box.d.ts.map +1 -0
  5. package/dist/common/htmltable-emit.d.ts +1 -1
  6. package/dist/common/htmltable-emit.d.ts.map +1 -1
  7. package/dist/common/make-label.d.ts +3 -1
  8. package/dist/common/make-label.d.ts.map +1 -1
  9. package/dist/common/poly-gencode.d.ts +12 -1
  10. package/dist/common/poly-gencode.d.ts.map +1 -1
  11. package/dist/gvc/device.d.ts.map +1 -1
  12. package/dist/gvc/emit-gates.d.ts +35 -0
  13. package/dist/gvc/emit-gates.d.ts.map +1 -0
  14. package/dist/gvc/job.d.ts +4 -0
  15. package/dist/gvc/job.d.ts.map +1 -1
  16. package/dist/gvc/viewport.d.ts +13 -0
  17. package/dist/gvc/viewport.d.ts.map +1 -1
  18. package/dist/index.js +1030 -742
  19. package/dist/index.js.map +4 -4
  20. package/dist/layout/circo/blockpath.d.ts +1 -38
  21. package/dist/layout/circo/blockpath.d.ts.map +1 -1
  22. package/dist/layout/circo/crossings.d.ts +59 -0
  23. package/dist/layout/circo/crossings.d.ts.map +1 -0
  24. package/dist/layout/dot/edge-route-chain.d.ts +5 -3
  25. package/dist/layout/dot/edge-route-chain.d.ts.map +1 -1
  26. package/dist/layout/dot/edge-route.d.ts.map +1 -1
  27. package/dist/layout/dot/index.d.ts +10 -2
  28. package/dist/layout/dot/index.d.ts.map +1 -1
  29. package/dist/layout/dot/ortho-adapter.d.ts +7 -3
  30. package/dist/layout/dot/ortho-adapter.d.ts.map +1 -1
  31. package/dist/layout/dot/pack-components.d.ts +4 -1
  32. package/dist/layout/dot/pack-components.d.ts.map +1 -1
  33. package/dist/layout/dot/splines-flat-multi.d.ts +7 -5
  34. package/dist/layout/dot/splines-flat-multi.d.ts.map +1 -1
  35. package/dist/layout/dot/splines-flat.d.ts +2 -13
  36. package/dist/layout/dot/splines-flat.d.ts.map +1 -1
  37. package/dist/layout/dot/splines-route.d.ts.map +1 -1
  38. package/dist/layout/neato/constraint-adjust.d.ts +32 -0
  39. package/dist/layout/neato/constraint-adjust.d.ts.map +1 -1
  40. package/dist/layout/neato/multispline.d.ts.map +1 -1
  41. package/dist/layout/neato/splines.d.ts.map +1 -1
  42. package/dist/layout/pack/poly-place.d.ts.map +1 -1
  43. package/dist/layout/sfdp/__fixtures__/pcp-rotate-native.d.ts +23 -0
  44. package/dist/layout/sfdp/__fixtures__/pcp-rotate-native.d.ts.map +1 -0
  45. package/dist/layout/sfdp/spring-driver.d.ts +6 -0
  46. package/dist/layout/sfdp/spring-driver.d.ts.map +1 -1
  47. package/dist/ortho/index.d.ts +4 -1
  48. package/dist/ortho/index.d.ts.map +1 -1
  49. package/dist/ortho/maze.d.ts +5 -2
  50. package/dist/ortho/maze.d.ts.map +1 -1
  51. package/dist/ortho/partition.d.ts +8 -1
  52. package/dist/ortho/partition.d.ts.map +1 -1
  53. package/dist/ortho/trap-segment.d.ts +2 -1
  54. package/dist/ortho/trap-segment.d.ts.map +1 -1
  55. package/dist/ortho/trapezoid.d.ts.map +1 -1
  56. package/dist/parser/index.d.ts +0 -7
  57. package/dist/parser/index.d.ts.map +1 -1
  58. package/dist/parser/number-scan.d.ts +31 -0
  59. package/dist/parser/number-scan.d.ts.map +1 -0
  60. package/dist/pathplan/route.d.ts.map +1 -1
  61. package/dist/pathplan/solvers.d.ts +15 -3
  62. package/dist/pathplan/solvers.d.ts.map +1 -1
  63. package/dist/render/dot/edge-draw.d.ts +12 -0
  64. package/dist/render/dot/edge-draw.d.ts.map +1 -1
  65. package/dist/render/svg-graph.d.ts +6 -5
  66. package/dist/render/svg-graph.d.ts.map +1 -1
  67. package/dist/render/svg.d.ts +2 -21
  68. package/dist/render/svg.d.ts.map +1 -1
  69. package/dist/render.js +1030 -742
  70. package/dist/render.js.map +4 -4
  71. package/dist/xdot/parse.d.ts.map +1 -1
  72. package/package.json +1 -1
  73. package/src/common/arith.ts +25 -0
  74. package/src/common/edge-in-box.ts +54 -0
  75. package/src/common/graph-init.ts +3 -3
  76. package/src/common/htmltable-emit.ts +4 -2
  77. package/src/common/make-label.ts +3 -1
  78. package/src/common/poly-gencode.ts +18 -4
  79. package/src/gvc/device.ts +8 -41
  80. package/src/gvc/edge-labels.ts +30 -13
  81. package/src/gvc/emit-gates.ts +89 -0
  82. package/src/gvc/job.ts +4 -0
  83. package/src/gvc/viewport.ts +29 -0
  84. package/src/layout/circo/blockpath.ts +6 -125
  85. package/src/layout/circo/crossings.ts +171 -0
  86. package/src/layout/dot/__fixtures__/2784.dot +1 -0
  87. package/src/layout/dot/__fixtures__/2784.native-16.1.svg +48 -0
  88. package/src/layout/dot/edge-route-chain.ts +11 -5
  89. package/src/layout/dot/edge-route.ts +19 -8
  90. package/src/layout/dot/index.ts +14 -4
  91. package/src/layout/dot/ortho-adapter.ts +11 -6
  92. package/src/layout/dot/pack-components.ts +11 -4
  93. package/src/layout/dot/splines-flat-multi.ts +21 -8
  94. package/src/layout/dot/splines-flat.ts +8 -35
  95. package/src/layout/dot/splines-route.ts +10 -2
  96. package/src/layout/dot/splines.ts +6 -6
  97. package/src/layout/neato/constraint-adjust.ts +10 -4
  98. package/src/layout/neato/multispline.ts +26 -9
  99. package/src/layout/neato/splines.ts +7 -7
  100. package/src/layout/pack/poly-place.ts +9 -2
  101. package/src/layout/sfdp/__fixtures__/pcp-rotate-native.ts +94 -0
  102. package/src/layout/sfdp/spring-driver.ts +45 -13
  103. package/src/ortho/index.ts +22 -13
  104. package/src/ortho/maze.ts +8 -2
  105. package/src/ortho/partition.ts +17 -2
  106. package/src/ortho/trap-segment.ts +47 -24
  107. package/src/ortho/trapezoid.ts +24 -15
  108. package/src/parser/dot.js +345 -380
  109. package/src/parser/dot.pegjs +25 -10
  110. package/src/parser/index.ts +15 -0
  111. package/src/parser/number-scan.ts +118 -0
  112. package/src/pathplan/route.ts +79 -34
  113. package/src/pathplan/solvers.ts +78 -50
  114. package/src/render/dot/edge-draw.ts +25 -0
  115. package/src/render/svg-graph.ts +77 -47
  116. package/src/render/svg-helpers.ts +2 -2
  117. package/src/render/svg.ts +4 -41
  118. package/src/xdot/parse.ts +19 -5
package/src/parser/dot.js CHANGED
@@ -167,9 +167,9 @@ function peg$parse(input, options) {
167
167
  const peg$c0 = "{";
168
168
  const peg$c1 = "}";
169
169
  const peg$c2 = ";";
170
- const peg$c3 = "[";
171
- const peg$c4 = "]";
172
- const peg$c5 = "=";
170
+ const peg$c3 = "=";
171
+ const peg$c4 = "[";
172
+ const peg$c5 = "]";
173
173
  const peg$c6 = ":";
174
174
  const peg$c7 = "->";
175
175
  const peg$c8 = "--";
@@ -194,33 +194,31 @@ function peg$parse(input, options) {
194
194
  const peg$r3 = /^[A-Za-z_\x80-\uFFFF]/;
195
195
  const peg$r4 = /^[A-Za-z_0-9\x80-\uFFFF]/;
196
196
  const peg$r5 = /^[0-9]/;
197
- const peg$r6 = /^[eE]/;
198
- const peg$r7 = /^[+\-]/;
199
- const peg$r8 = /^[Ss]/;
200
- const peg$r9 = /^[Tt]/;
201
- const peg$r10 = /^[Rr]/;
202
- const peg$r11 = /^[Ii]/;
203
- const peg$r12 = /^[Cc]/;
204
- const peg$r13 = /^[Gg]/;
205
- const peg$r14 = /^[Aa]/;
206
- const peg$r15 = /^[Pp]/;
207
- const peg$r16 = /^[Hh]/;
208
- const peg$r17 = /^[Dd]/;
209
- const peg$r18 = /^[Nn]/;
210
- const peg$r19 = /^[Oo]/;
211
- const peg$r20 = /^[Ee]/;
212
- const peg$r21 = /^[Uu]/;
213
- const peg$r22 = /^[Bb]/;
214
- const peg$r23 = /^[ \t\r\n]/;
215
- const peg$r24 = /^[^\n]/;
197
+ const peg$r6 = /^[Ss]/;
198
+ const peg$r7 = /^[Tt]/;
199
+ const peg$r8 = /^[Rr]/;
200
+ const peg$r9 = /^[Ii]/;
201
+ const peg$r10 = /^[Cc]/;
202
+ const peg$r11 = /^[Gg]/;
203
+ const peg$r12 = /^[Aa]/;
204
+ const peg$r13 = /^[Pp]/;
205
+ const peg$r14 = /^[Hh]/;
206
+ const peg$r15 = /^[Dd]/;
207
+ const peg$r16 = /^[Nn]/;
208
+ const peg$r17 = /^[Oo]/;
209
+ const peg$r18 = /^[Ee]/;
210
+ const peg$r19 = /^[Uu]/;
211
+ const peg$r20 = /^[Bb]/;
212
+ const peg$r21 = /^[ \t\r\n]/;
213
+ const peg$r22 = /^[^\n]/;
216
214
 
217
215
  const peg$e0 = peg$literalExpectation("{", false);
218
216
  const peg$e1 = peg$literalExpectation("}", false);
219
217
  const peg$e2 = peg$literalExpectation(";", false);
220
- const peg$e3 = peg$literalExpectation("[", false);
221
- const peg$e4 = peg$literalExpectation("]", false);
222
- const peg$e5 = peg$classExpectation([";", ","], false, false, false);
223
- const peg$e6 = peg$literalExpectation("=", false);
218
+ const peg$e3 = peg$literalExpectation("=", false);
219
+ const peg$e4 = peg$literalExpectation("[", false);
220
+ const peg$e5 = peg$literalExpectation("]", false);
221
+ const peg$e6 = peg$classExpectation([";", ","], false, false, false);
224
222
  const peg$e7 = peg$literalExpectation(":", false);
225
223
  const peg$e8 = peg$otherExpectation("edge operator");
226
224
  const peg$e9 = peg$literalExpectation("->", false);
@@ -240,30 +238,28 @@ function peg$parse(input, options) {
240
238
  const peg$e23 = peg$literalExpectation("-", false);
241
239
  const peg$e24 = peg$classExpectation([["0", "9"]], false, false, false);
242
240
  const peg$e25 = peg$literalExpectation(".", false);
243
- const peg$e26 = peg$classExpectation(["e", "E"], false, false, false);
244
- const peg$e27 = peg$classExpectation(["+", "-"], false, false, false);
245
- const peg$e28 = peg$classExpectation(["S", "s"], false, false, false);
246
- const peg$e29 = peg$classExpectation(["T", "t"], false, false, false);
247
- const peg$e30 = peg$classExpectation(["R", "r"], false, false, false);
248
- const peg$e31 = peg$classExpectation(["I", "i"], false, false, false);
249
- const peg$e32 = peg$classExpectation(["C", "c"], false, false, false);
250
- const peg$e33 = peg$classExpectation(["G", "g"], false, false, false);
251
- const peg$e34 = peg$classExpectation(["A", "a"], false, false, false);
252
- const peg$e35 = peg$classExpectation(["P", "p"], false, false, false);
253
- const peg$e36 = peg$classExpectation(["H", "h"], false, false, false);
254
- const peg$e37 = peg$classExpectation(["D", "d"], false, false, false);
255
- const peg$e38 = peg$classExpectation(["N", "n"], false, false, false);
256
- const peg$e39 = peg$classExpectation(["O", "o"], false, false, false);
257
- const peg$e40 = peg$classExpectation(["E", "e"], false, false, false);
258
- const peg$e41 = peg$classExpectation(["U", "u"], false, false, false);
259
- const peg$e42 = peg$classExpectation(["B", "b"], false, false, false);
260
- const peg$e43 = peg$classExpectation([" ", "\t", "\r", "\n"], false, false, false);
261
- const peg$e44 = peg$literalExpectation("/*", false);
262
- const peg$e45 = peg$literalExpectation("*/", false);
263
- const peg$e46 = peg$literalExpectation("//", false);
264
- const peg$e47 = peg$classExpectation(["\n"], true, false, false);
265
- const peg$e48 = peg$literalExpectation("\n", false);
266
- const peg$e49 = peg$literalExpectation("#", false);
241
+ const peg$e26 = peg$classExpectation(["S", "s"], false, false, false);
242
+ const peg$e27 = peg$classExpectation(["T", "t"], false, false, false);
243
+ const peg$e28 = peg$classExpectation(["R", "r"], false, false, false);
244
+ const peg$e29 = peg$classExpectation(["I", "i"], false, false, false);
245
+ const peg$e30 = peg$classExpectation(["C", "c"], false, false, false);
246
+ const peg$e31 = peg$classExpectation(["G", "g"], false, false, false);
247
+ const peg$e32 = peg$classExpectation(["A", "a"], false, false, false);
248
+ const peg$e33 = peg$classExpectation(["P", "p"], false, false, false);
249
+ const peg$e34 = peg$classExpectation(["H", "h"], false, false, false);
250
+ const peg$e35 = peg$classExpectation(["D", "d"], false, false, false);
251
+ const peg$e36 = peg$classExpectation(["N", "n"], false, false, false);
252
+ const peg$e37 = peg$classExpectation(["O", "o"], false, false, false);
253
+ const peg$e38 = peg$classExpectation(["E", "e"], false, false, false);
254
+ const peg$e39 = peg$classExpectation(["U", "u"], false, false, false);
255
+ const peg$e40 = peg$classExpectation(["B", "b"], false, false, false);
256
+ const peg$e41 = peg$classExpectation([" ", "\t", "\r", "\n"], false, false, false);
257
+ const peg$e42 = peg$literalExpectation("/*", false);
258
+ const peg$e43 = peg$literalExpectation("*/", false);
259
+ const peg$e44 = peg$literalExpectation("//", false);
260
+ const peg$e45 = peg$classExpectation(["\n"], true, false, false);
261
+ const peg$e46 = peg$literalExpectation("\n", false);
262
+ const peg$e47 = peg$literalExpectation("#", false);
267
263
 
268
264
  function peg$f0(s, t, id, stmts) {
269
265
  return {
@@ -285,18 +281,24 @@ function peg$parse(input, options) {
285
281
  function peg$f9(stmts) { return stmts; }
286
282
  function peg$f10(s) { return s; }
287
283
  function peg$f11(s) { return s; }
288
- function peg$f12(t, attrs) { return { type: "attr", target: t, attrs: attrs }; }
284
+ function peg$f12(t, m, attrs) {
285
+ // grammar.y:attrstmt calls nomacros() when a macro name is present;
286
+ // the attributes are still applied unchanged.
287
+ if (m) console.error("Warning: attribute macros not implemented");
288
+ return { type: "attr", target: t, attrs: attrs };
289
+ }
289
290
  function peg$f13(a) { return { type: "assign", key: a.key, value: a.value }; }
290
- function peg$f14() { return "graph"; }
291
- function peg$f15() { return "node"; }
292
- function peg$f16() { return "edge"; }
293
- function peg$f17(defs, rest) { return defs.concat(rest); }
294
- function peg$f18(defs) { return defs; }
295
- function peg$f19() { return []; }
296
- function peg$f20(a) { return a; }
297
- function peg$f21(pairs) { return pairs; }
298
- function peg$f22(k, v) { return { key: k, value: v }; }
299
- function peg$f23(head, chain, attrs) {
291
+ function peg$f14() { return true; }
292
+ function peg$f15() { return false; }
293
+ function peg$f16() { return "graph"; }
294
+ function peg$f17() { return "node"; }
295
+ function peg$f18() { return "edge"; }
296
+ function peg$f19(defs, rest) { return defs.concat(rest); }
297
+ function peg$f20() { return []; }
298
+ function peg$f21(a) { return a; }
299
+ function peg$f22(pairs) { return pairs; }
300
+ function peg$f23(k, v) { return { key: k, value: v }; }
301
+ function peg$f24(head, chain, attrs) {
300
302
  if (chain.length > 0) {
301
303
  const nodes = [head].concat(chain);
302
304
  return { type: "edge", nodes: nodes, attrs: attrs };
@@ -310,28 +312,28 @@ function peg$parse(input, options) {
310
312
  return { type: "node", id: head, attrs: attrs };
311
313
  }
312
314
  }
313
- function peg$f24(s) { return s; }
314
- function peg$f25(n) { return n; }
315
- function peg$f26(id, port, compass) { return { id: id, port: port, compass: compass }; }
316
- function peg$f27(id, port) { return { id: id, port: port, compass: null }; }
317
- function peg$f28(id) { return { id: id, port: null, compass: null }; }
318
- function peg$f29(s, rest) { return [s].concat(rest); }
319
- function peg$f30() { return []; }
320
- function peg$f31(id, stmts) { return { type: "subgraph", id: id, stmts: stmts }; }
321
- function peg$f32(stmts) { return { type: "subgraph", id: null, stmts: stmts }; }
315
+ function peg$f25(s) { return s; }
316
+ function peg$f26(n) { return n; }
317
+ function peg$f27(id, port, compass) { return { id: id, port: port, compass: compass }; }
318
+ function peg$f28(id, port) { return { id: id, port: port, compass: null }; }
319
+ function peg$f29(id) { return { id: id, port: null, compass: null }; }
320
+ function peg$f30(s, rest) { return [s].concat(rest); }
321
+ function peg$f31() { return []; }
322
+ function peg$f32(id, stmts) { return { type: "subgraph", id: id, stmts: stmts }; }
322
323
  function peg$f33(stmts) { return { type: "subgraph", id: null, stmts: stmts }; }
323
- function peg$f34(first, s) { return s; }
324
- function peg$f35(first, rest) { return rest.length > 0 ? first + rest.join("") : first; }
325
- function peg$f36(chars) { return chars.join(""); }
326
- function peg$f37() { return '"'; }
327
- function peg$f38() { return ''; }
328
- function peg$f39(c) { return '\\' + c; }
329
- function peg$f40(content) { return "\u0001" + content; }
330
- function peg$f41(chars) { return chars.join(""); }
331
- function peg$f42(nested, content) { return "<" + content + ">"; }
332
- function peg$f43(n) { return n; }
333
- function peg$f44(first, rest) { return first + rest.join(""); }
334
- function peg$f45(s) { return Array.isArray(s) ? s.flat(Infinity).filter(x => x !== null && x !== undefined).join("") : String(s); }
324
+ function peg$f34(stmts) { return { type: "subgraph", id: null, stmts: stmts }; }
325
+ function peg$f35(first, s) { return s; }
326
+ function peg$f36(first, rest) { return rest.length > 0 ? first + rest.join("") : first; }
327
+ function peg$f37(chars) { return chars.join(""); }
328
+ function peg$f38() { return '"'; }
329
+ function peg$f39() { return ''; }
330
+ function peg$f40(c) { return '\\' + c; }
331
+ function peg$f41(content) { return "\u0001" + content; }
332
+ function peg$f42(chars) { return chars.join(""); }
333
+ function peg$f43(nested, content) { return "<" + content + ">"; }
334
+ function peg$f44(n) { return n; }
335
+ function peg$f45(first, rest) { return first + rest.join(""); }
336
+ function peg$f46(s) { return Array.isArray(s) ? s.flat(Infinity).filter(x => x !== null && x !== undefined).join("") : String(s); }
335
337
  let peg$currPos = options.peg$currPos | 0;
336
338
  let peg$savedPos = peg$currPos;
337
339
  const peg$posDetailsCache = [{ line: 1, column: 1 }];
@@ -743,16 +745,22 @@ function peg$parse(input, options) {
743
745
  }
744
746
 
745
747
  function peg$parseAttrStmt() {
746
- let s0, s1, s2, s3;
748
+ let s0, s1, s2, s3, s4;
747
749
 
748
750
  s0 = peg$currPos;
749
751
  s1 = peg$parseAttrType();
750
752
  if (s1 !== peg$FAILED) {
751
753
  s2 = peg$parse_();
752
- s3 = peg$parseAttrList();
754
+ s3 = peg$parseOptMacroName();
753
755
  if (s3 !== peg$FAILED) {
754
- peg$savedPos = s0;
755
- s0 = peg$f12(s1, s3);
756
+ s4 = peg$parseAttrListReq();
757
+ if (s4 !== peg$FAILED) {
758
+ peg$savedPos = s0;
759
+ s0 = peg$f12(s1, s3, s4);
760
+ } else {
761
+ peg$currPos = s0;
762
+ s0 = peg$FAILED;
763
+ }
756
764
  } else {
757
765
  peg$currPos = s0;
758
766
  s0 = peg$FAILED;
@@ -774,6 +782,43 @@ function peg$parse(input, options) {
774
782
  return s0;
775
783
  }
776
784
 
785
+ function peg$parseOptMacroName() {
786
+ let s0, s1, s2, s3, s4;
787
+
788
+ s0 = peg$currPos;
789
+ s1 = peg$parseAtom();
790
+ if (s1 !== peg$FAILED) {
791
+ s2 = peg$parse_();
792
+ if (input.charCodeAt(peg$currPos) === 61) {
793
+ s3 = peg$c3;
794
+ peg$currPos++;
795
+ } else {
796
+ s3 = peg$FAILED;
797
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
798
+ }
799
+ if (s3 !== peg$FAILED) {
800
+ s4 = peg$parse_();
801
+ peg$savedPos = s0;
802
+ s0 = peg$f14();
803
+ } else {
804
+ peg$currPos = s0;
805
+ s0 = peg$FAILED;
806
+ }
807
+ } else {
808
+ peg$currPos = s0;
809
+ s0 = peg$FAILED;
810
+ }
811
+ if (s0 === peg$FAILED) {
812
+ s0 = peg$currPos;
813
+ s1 = '';
814
+ peg$savedPos = s0;
815
+ s1 = peg$f15();
816
+ s0 = s1;
817
+ }
818
+
819
+ return s0;
820
+ }
821
+
777
822
  function peg$parseAttrType() {
778
823
  let s0, s1;
779
824
 
@@ -781,7 +826,7 @@ function peg$parse(input, options) {
781
826
  s1 = peg$parseGraphKw();
782
827
  if (s1 !== peg$FAILED) {
783
828
  peg$savedPos = s0;
784
- s1 = peg$f14();
829
+ s1 = peg$f16();
785
830
  }
786
831
  s0 = s1;
787
832
  if (s0 === peg$FAILED) {
@@ -789,7 +834,7 @@ function peg$parse(input, options) {
789
834
  s1 = peg$parseNodeKw();
790
835
  if (s1 !== peg$FAILED) {
791
836
  peg$savedPos = s0;
792
- s1 = peg$f15();
837
+ s1 = peg$f17();
793
838
  }
794
839
  s0 = s1;
795
840
  if (s0 === peg$FAILED) {
@@ -797,7 +842,7 @@ function peg$parse(input, options) {
797
842
  s1 = peg$parseEdgeKw();
798
843
  if (s1 !== peg$FAILED) {
799
844
  peg$savedPos = s0;
800
- s1 = peg$f16();
845
+ s1 = peg$f18();
801
846
  }
802
847
  s0 = s1;
803
848
  }
@@ -806,34 +851,34 @@ function peg$parse(input, options) {
806
851
  return s0;
807
852
  }
808
853
 
809
- function peg$parseAttrList() {
854
+ function peg$parseAttrListReq() {
810
855
  let s0, s1, s2, s3, s4, s5, s6, s7;
811
856
 
812
857
  s0 = peg$currPos;
813
858
  s1 = peg$parse_();
814
859
  if (input.charCodeAt(peg$currPos) === 91) {
815
- s2 = peg$c3;
860
+ s2 = peg$c4;
816
861
  peg$currPos++;
817
862
  } else {
818
863
  s2 = peg$FAILED;
819
- if (peg$silentFails === 0) { peg$fail(peg$e3); }
864
+ if (peg$silentFails === 0) { peg$fail(peg$e4); }
820
865
  }
821
866
  if (s2 !== peg$FAILED) {
822
867
  s3 = peg$parse_();
823
868
  s4 = peg$parseAttrDefs();
824
869
  s5 = peg$parse_();
825
870
  if (input.charCodeAt(peg$currPos) === 93) {
826
- s6 = peg$c4;
871
+ s6 = peg$c5;
827
872
  peg$currPos++;
828
873
  } else {
829
874
  s6 = peg$FAILED;
830
- if (peg$silentFails === 0) { peg$fail(peg$e4); }
875
+ if (peg$silentFails === 0) { peg$fail(peg$e5); }
831
876
  }
832
877
  if (s6 !== peg$FAILED) {
833
878
  s7 = peg$parseAttrList();
834
879
  if (s7 !== peg$FAILED) {
835
880
  peg$savedPos = s0;
836
- s0 = peg$f17(s4, s7);
881
+ s0 = peg$f19(s4, s7);
837
882
  } else {
838
883
  peg$currPos = s0;
839
884
  s0 = peg$FAILED;
@@ -846,45 +891,20 @@ function peg$parse(input, options) {
846
891
  peg$currPos = s0;
847
892
  s0 = peg$FAILED;
848
893
  }
894
+
895
+ return s0;
896
+ }
897
+
898
+ function peg$parseAttrList() {
899
+ let s0, s1;
900
+
901
+ s0 = peg$parseAttrListReq();
849
902
  if (s0 === peg$FAILED) {
850
903
  s0 = peg$currPos;
851
- s1 = peg$parse_();
852
- if (input.charCodeAt(peg$currPos) === 91) {
853
- s2 = peg$c3;
854
- peg$currPos++;
855
- } else {
856
- s2 = peg$FAILED;
857
- if (peg$silentFails === 0) { peg$fail(peg$e3); }
858
- }
859
- if (s2 !== peg$FAILED) {
860
- s3 = peg$parse_();
861
- s4 = peg$parseAttrDefs();
862
- s5 = peg$parse_();
863
- if (input.charCodeAt(peg$currPos) === 93) {
864
- s6 = peg$c4;
865
- peg$currPos++;
866
- } else {
867
- s6 = peg$FAILED;
868
- if (peg$silentFails === 0) { peg$fail(peg$e4); }
869
- }
870
- if (s6 !== peg$FAILED) {
871
- peg$savedPos = s0;
872
- s0 = peg$f18(s4);
873
- } else {
874
- peg$currPos = s0;
875
- s0 = peg$FAILED;
876
- }
877
- } else {
878
- peg$currPos = s0;
879
- s0 = peg$FAILED;
880
- }
881
- if (s0 === peg$FAILED) {
882
- s0 = peg$currPos;
883
- s1 = '';
884
- peg$savedPos = s0;
885
- s1 = peg$f19();
886
- s0 = s1;
887
- }
904
+ s1 = '';
905
+ peg$savedPos = s0;
906
+ s1 = peg$f20();
907
+ s0 = s1;
888
908
  }
889
909
 
890
910
  return s0;
@@ -905,7 +925,7 @@ function peg$parse(input, options) {
905
925
  peg$currPos++;
906
926
  } else {
907
927
  s6 = peg$FAILED;
908
- if (peg$silentFails === 0) { peg$fail(peg$e5); }
928
+ if (peg$silentFails === 0) { peg$fail(peg$e6); }
909
929
  }
910
930
  if (s6 !== peg$FAILED) {
911
931
  s7 = peg$parse_();
@@ -919,7 +939,7 @@ function peg$parse(input, options) {
919
939
  s5 = null;
920
940
  }
921
941
  peg$savedPos = s2;
922
- s2 = peg$f20(s3);
942
+ s2 = peg$f21(s3);
923
943
  } else {
924
944
  peg$currPos = s2;
925
945
  s2 = peg$FAILED;
@@ -936,7 +956,7 @@ function peg$parse(input, options) {
936
956
  peg$currPos++;
937
957
  } else {
938
958
  s6 = peg$FAILED;
939
- if (peg$silentFails === 0) { peg$fail(peg$e5); }
959
+ if (peg$silentFails === 0) { peg$fail(peg$e6); }
940
960
  }
941
961
  if (s6 !== peg$FAILED) {
942
962
  s7 = peg$parse_();
@@ -950,14 +970,14 @@ function peg$parse(input, options) {
950
970
  s5 = null;
951
971
  }
952
972
  peg$savedPos = s2;
953
- s2 = peg$f20(s3);
973
+ s2 = peg$f21(s3);
954
974
  } else {
955
975
  peg$currPos = s2;
956
976
  s2 = peg$FAILED;
957
977
  }
958
978
  }
959
979
  peg$savedPos = s0;
960
- s1 = peg$f21(s1);
980
+ s1 = peg$f22(s1);
961
981
  s0 = s1;
962
982
 
963
983
  return s0;
@@ -971,18 +991,18 @@ function peg$parse(input, options) {
971
991
  if (s1 !== peg$FAILED) {
972
992
  s2 = peg$parse_();
973
993
  if (input.charCodeAt(peg$currPos) === 61) {
974
- s3 = peg$c5;
994
+ s3 = peg$c3;
975
995
  peg$currPos++;
976
996
  } else {
977
997
  s3 = peg$FAILED;
978
- if (peg$silentFails === 0) { peg$fail(peg$e6); }
998
+ if (peg$silentFails === 0) { peg$fail(peg$e3); }
979
999
  }
980
1000
  if (s3 !== peg$FAILED) {
981
1001
  s4 = peg$parse_();
982
1002
  s5 = peg$parseAtom();
983
1003
  if (s5 !== peg$FAILED) {
984
1004
  peg$savedPos = s0;
985
- s0 = peg$f22(s1, s5);
1005
+ s0 = peg$f23(s1, s5);
986
1006
  } else {
987
1007
  peg$currPos = s0;
988
1008
  s0 = peg$FAILED;
@@ -1012,7 +1032,7 @@ function peg$parse(input, options) {
1012
1032
  s5 = peg$parseAttrList();
1013
1033
  if (s5 !== peg$FAILED) {
1014
1034
  peg$savedPos = s0;
1015
- s0 = peg$f23(s1, s3, s5);
1035
+ s0 = peg$f24(s1, s3, s5);
1016
1036
  } else {
1017
1037
  peg$currPos = s0;
1018
1038
  s0 = peg$FAILED;
@@ -1036,7 +1056,7 @@ function peg$parse(input, options) {
1036
1056
  s1 = peg$parseSubgraph();
1037
1057
  if (s1 !== peg$FAILED) {
1038
1058
  peg$savedPos = s0;
1039
- s1 = peg$f24(s1);
1059
+ s1 = peg$f25(s1);
1040
1060
  }
1041
1061
  s0 = s1;
1042
1062
  if (s0 === peg$FAILED) {
@@ -1044,7 +1064,7 @@ function peg$parse(input, options) {
1044
1064
  s1 = peg$parseNode();
1045
1065
  if (s1 !== peg$FAILED) {
1046
1066
  peg$savedPos = s0;
1047
- s1 = peg$f25(s1);
1067
+ s1 = peg$f26(s1);
1048
1068
  }
1049
1069
  s0 = s1;
1050
1070
  }
@@ -1083,7 +1103,7 @@ function peg$parse(input, options) {
1083
1103
  s9 = peg$parseAtom();
1084
1104
  if (s9 !== peg$FAILED) {
1085
1105
  peg$savedPos = s0;
1086
- s0 = peg$f26(s1, s5, s9);
1106
+ s0 = peg$f27(s1, s5, s9);
1087
1107
  } else {
1088
1108
  peg$currPos = s0;
1089
1109
  s0 = peg$FAILED;
@@ -1121,7 +1141,7 @@ function peg$parse(input, options) {
1121
1141
  s5 = peg$parseAtom();
1122
1142
  if (s5 !== peg$FAILED) {
1123
1143
  peg$savedPos = s0;
1124
- s0 = peg$f27(s1, s5);
1144
+ s0 = peg$f28(s1, s5);
1125
1145
  } else {
1126
1146
  peg$currPos = s0;
1127
1147
  s0 = peg$FAILED;
@@ -1139,7 +1159,7 @@ function peg$parse(input, options) {
1139
1159
  s1 = peg$parseAtom();
1140
1160
  if (s1 !== peg$FAILED) {
1141
1161
  peg$savedPos = s0;
1142
- s1 = peg$f28(s1);
1162
+ s1 = peg$f29(s1);
1143
1163
  }
1144
1164
  s0 = s1;
1145
1165
  }
@@ -1161,7 +1181,7 @@ function peg$parse(input, options) {
1161
1181
  s5 = peg$parseEdgeChain();
1162
1182
  if (s5 !== peg$FAILED) {
1163
1183
  peg$savedPos = s0;
1164
- s0 = peg$f29(s3, s5);
1184
+ s0 = peg$f30(s3, s5);
1165
1185
  } else {
1166
1186
  peg$currPos = s0;
1167
1187
  s0 = peg$FAILED;
@@ -1178,7 +1198,7 @@ function peg$parse(input, options) {
1178
1198
  s0 = peg$currPos;
1179
1199
  s1 = '';
1180
1200
  peg$savedPos = s0;
1181
- s1 = peg$f30();
1201
+ s1 = peg$f31();
1182
1202
  s0 = s1;
1183
1203
  }
1184
1204
 
@@ -1245,7 +1265,7 @@ function peg$parse(input, options) {
1245
1265
  }
1246
1266
  if (s9 !== peg$FAILED) {
1247
1267
  peg$savedPos = s0;
1248
- s0 = peg$f31(s3, s7);
1268
+ s0 = peg$f32(s3, s7);
1249
1269
  } else {
1250
1270
  peg$currPos = s0;
1251
1271
  s0 = peg$FAILED;
@@ -1292,7 +1312,7 @@ function peg$parse(input, options) {
1292
1312
  }
1293
1313
  if (s7 !== peg$FAILED) {
1294
1314
  peg$savedPos = s0;
1295
- s0 = peg$f32(s5);
1315
+ s0 = peg$f33(s5);
1296
1316
  } else {
1297
1317
  peg$currPos = s0;
1298
1318
  s0 = peg$FAILED;
@@ -1332,7 +1352,7 @@ function peg$parse(input, options) {
1332
1352
  }
1333
1353
  if (s5 !== peg$FAILED) {
1334
1354
  peg$savedPos = s0;
1335
- s0 = peg$f33(s3);
1355
+ s0 = peg$f34(s3);
1336
1356
  } else {
1337
1357
  peg$currPos = s0;
1338
1358
  s0 = peg$FAILED;
@@ -1372,7 +1392,7 @@ function peg$parse(input, options) {
1372
1392
  s7 = peg$parseQAtom();
1373
1393
  if (s7 !== peg$FAILED) {
1374
1394
  peg$savedPos = s3;
1375
- s3 = peg$f34(s1, s7);
1395
+ s3 = peg$f35(s1, s7);
1376
1396
  } else {
1377
1397
  peg$currPos = s3;
1378
1398
  s3 = peg$FAILED;
@@ -1397,7 +1417,7 @@ function peg$parse(input, options) {
1397
1417
  s7 = peg$parseQAtom();
1398
1418
  if (s7 !== peg$FAILED) {
1399
1419
  peg$savedPos = s3;
1400
- s3 = peg$f34(s1, s7);
1420
+ s3 = peg$f35(s1, s7);
1401
1421
  } else {
1402
1422
  peg$currPos = s3;
1403
1423
  s3 = peg$FAILED;
@@ -1408,7 +1428,7 @@ function peg$parse(input, options) {
1408
1428
  }
1409
1429
  }
1410
1430
  peg$savedPos = s0;
1411
- s0 = peg$f35(s1, s2);
1431
+ s0 = peg$f36(s1, s2);
1412
1432
  } else {
1413
1433
  peg$currPos = s0;
1414
1434
  s0 = peg$FAILED;
@@ -1458,7 +1478,7 @@ function peg$parse(input, options) {
1458
1478
  }
1459
1479
  if (s3 !== peg$FAILED) {
1460
1480
  peg$savedPos = s0;
1461
- s0 = peg$f36(s2);
1481
+ s0 = peg$f37(s2);
1462
1482
  } else {
1463
1483
  peg$currPos = s0;
1464
1484
  s0 = peg$FAILED;
@@ -1484,7 +1504,7 @@ function peg$parse(input, options) {
1484
1504
  }
1485
1505
  if (s1 !== peg$FAILED) {
1486
1506
  peg$savedPos = s0;
1487
- s1 = peg$f37();
1507
+ s1 = peg$f38();
1488
1508
  }
1489
1509
  s0 = s1;
1490
1510
  if (s0 === peg$FAILED) {
@@ -1498,7 +1518,7 @@ function peg$parse(input, options) {
1498
1518
  }
1499
1519
  if (s1 !== peg$FAILED) {
1500
1520
  peg$savedPos = s0;
1501
- s1 = peg$f38();
1521
+ s1 = peg$f39();
1502
1522
  }
1503
1523
  s0 = s1;
1504
1524
  if (s0 === peg$FAILED) {
@@ -1520,7 +1540,7 @@ function peg$parse(input, options) {
1520
1540
  }
1521
1541
  if (s2 !== peg$FAILED) {
1522
1542
  peg$savedPos = s0;
1523
- s0 = peg$f39(s2);
1543
+ s0 = peg$f40(s2);
1524
1544
  } else {
1525
1545
  peg$currPos = s0;
1526
1546
  s0 = peg$FAILED;
@@ -1566,7 +1586,7 @@ function peg$parse(input, options) {
1566
1586
  }
1567
1587
  if (s3 !== peg$FAILED) {
1568
1588
  peg$savedPos = s0;
1569
- s0 = peg$f40(s2);
1589
+ s0 = peg$f41(s2);
1570
1590
  } else {
1571
1591
  peg$currPos = s0;
1572
1592
  s0 = peg$FAILED;
@@ -1590,7 +1610,7 @@ function peg$parse(input, options) {
1590
1610
  s2 = peg$parseHtmlChar();
1591
1611
  }
1592
1612
  peg$savedPos = s0;
1593
- s1 = peg$f41(s1);
1613
+ s1 = peg$f42(s1);
1594
1614
  s0 = s1;
1595
1615
 
1596
1616
  return s0;
@@ -1619,7 +1639,7 @@ function peg$parse(input, options) {
1619
1639
  }
1620
1640
  if (s3 !== peg$FAILED) {
1621
1641
  peg$savedPos = s0;
1622
- s0 = peg$f42(s1, s2);
1642
+ s0 = peg$f43(s1, s2);
1623
1643
  } else {
1624
1644
  peg$currPos = s0;
1625
1645
  s0 = peg$FAILED;
@@ -1665,7 +1685,7 @@ function peg$parse(input, options) {
1665
1685
  s2 = peg$parseName();
1666
1686
  if (s2 !== peg$FAILED) {
1667
1687
  peg$savedPos = s0;
1668
- s0 = peg$f43(s2);
1688
+ s0 = peg$f44(s2);
1669
1689
  } else {
1670
1690
  peg$currPos = s0;
1671
1691
  s0 = peg$FAILED;
@@ -1710,7 +1730,7 @@ function peg$parse(input, options) {
1710
1730
  }
1711
1731
  }
1712
1732
  peg$savedPos = s0;
1713
- s0 = peg$f44(s1, s2);
1733
+ s0 = peg$f45(s1, s2);
1714
1734
  } else {
1715
1735
  peg$currPos = s0;
1716
1736
  s0 = peg$FAILED;
@@ -1845,62 +1865,7 @@ function peg$parse(input, options) {
1845
1865
  }
1846
1866
  }
1847
1867
  if (s3 !== peg$FAILED) {
1848
- s4 = peg$currPos;
1849
- s5 = input.charAt(peg$currPos);
1850
- if (peg$r6.test(s5)) {
1851
- peg$currPos++;
1852
- } else {
1853
- s5 = peg$FAILED;
1854
- if (peg$silentFails === 0) { peg$fail(peg$e26); }
1855
- }
1856
- if (s5 !== peg$FAILED) {
1857
- s6 = input.charAt(peg$currPos);
1858
- if (peg$r7.test(s6)) {
1859
- peg$currPos++;
1860
- } else {
1861
- s6 = peg$FAILED;
1862
- if (peg$silentFails === 0) { peg$fail(peg$e27); }
1863
- }
1864
- if (s6 === peg$FAILED) {
1865
- s6 = null;
1866
- }
1867
- s7 = [];
1868
- s8 = input.charAt(peg$currPos);
1869
- if (peg$r5.test(s8)) {
1870
- peg$currPos++;
1871
- } else {
1872
- s8 = peg$FAILED;
1873
- if (peg$silentFails === 0) { peg$fail(peg$e24); }
1874
- }
1875
- if (s8 !== peg$FAILED) {
1876
- while (s8 !== peg$FAILED) {
1877
- s7.push(s8);
1878
- s8 = input.charAt(peg$currPos);
1879
- if (peg$r5.test(s8)) {
1880
- peg$currPos++;
1881
- } else {
1882
- s8 = peg$FAILED;
1883
- if (peg$silentFails === 0) { peg$fail(peg$e24); }
1884
- }
1885
- }
1886
- } else {
1887
- s7 = peg$FAILED;
1888
- }
1889
- if (s7 !== peg$FAILED) {
1890
- s5 = [s5, s6, s7];
1891
- s4 = s5;
1892
- } else {
1893
- peg$currPos = s4;
1894
- s4 = peg$FAILED;
1895
- }
1896
- } else {
1897
- peg$currPos = s4;
1898
- s4 = peg$FAILED;
1899
- }
1900
- if (s4 === peg$FAILED) {
1901
- s4 = null;
1902
- }
1903
- s2 = [s2, s3, s4];
1868
+ s2 = [s2, s3];
1904
1869
  s1 = s2;
1905
1870
  } else {
1906
1871
  peg$currPos = s1;
@@ -1908,7 +1873,7 @@ function peg$parse(input, options) {
1908
1873
  }
1909
1874
  if (s1 !== peg$FAILED) {
1910
1875
  peg$savedPos = s0;
1911
- s1 = peg$f45(s1);
1876
+ s1 = peg$f46(s1);
1912
1877
  }
1913
1878
  s0 = s1;
1914
1879
 
@@ -1920,51 +1885,51 @@ function peg$parse(input, options) {
1920
1885
 
1921
1886
  s0 = peg$currPos;
1922
1887
  s1 = input.charAt(peg$currPos);
1923
- if (peg$r8.test(s1)) {
1888
+ if (peg$r6.test(s1)) {
1924
1889
  peg$currPos++;
1925
1890
  } else {
1926
1891
  s1 = peg$FAILED;
1927
- if (peg$silentFails === 0) { peg$fail(peg$e28); }
1892
+ if (peg$silentFails === 0) { peg$fail(peg$e26); }
1928
1893
  }
1929
1894
  if (s1 !== peg$FAILED) {
1930
1895
  s2 = input.charAt(peg$currPos);
1931
- if (peg$r9.test(s2)) {
1896
+ if (peg$r7.test(s2)) {
1932
1897
  peg$currPos++;
1933
1898
  } else {
1934
1899
  s2 = peg$FAILED;
1935
- if (peg$silentFails === 0) { peg$fail(peg$e29); }
1900
+ if (peg$silentFails === 0) { peg$fail(peg$e27); }
1936
1901
  }
1937
1902
  if (s2 !== peg$FAILED) {
1938
1903
  s3 = input.charAt(peg$currPos);
1939
- if (peg$r10.test(s3)) {
1904
+ if (peg$r8.test(s3)) {
1940
1905
  peg$currPos++;
1941
1906
  } else {
1942
1907
  s3 = peg$FAILED;
1943
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
1908
+ if (peg$silentFails === 0) { peg$fail(peg$e28); }
1944
1909
  }
1945
1910
  if (s3 !== peg$FAILED) {
1946
1911
  s4 = input.charAt(peg$currPos);
1947
- if (peg$r11.test(s4)) {
1912
+ if (peg$r9.test(s4)) {
1948
1913
  peg$currPos++;
1949
1914
  } else {
1950
1915
  s4 = peg$FAILED;
1951
- if (peg$silentFails === 0) { peg$fail(peg$e31); }
1916
+ if (peg$silentFails === 0) { peg$fail(peg$e29); }
1952
1917
  }
1953
1918
  if (s4 !== peg$FAILED) {
1954
1919
  s5 = input.charAt(peg$currPos);
1955
- if (peg$r12.test(s5)) {
1920
+ if (peg$r10.test(s5)) {
1956
1921
  peg$currPos++;
1957
1922
  } else {
1958
1923
  s5 = peg$FAILED;
1959
- if (peg$silentFails === 0) { peg$fail(peg$e32); }
1924
+ if (peg$silentFails === 0) { peg$fail(peg$e30); }
1960
1925
  }
1961
1926
  if (s5 !== peg$FAILED) {
1962
1927
  s6 = input.charAt(peg$currPos);
1963
- if (peg$r9.test(s6)) {
1928
+ if (peg$r7.test(s6)) {
1964
1929
  peg$currPos++;
1965
1930
  } else {
1966
1931
  s6 = peg$FAILED;
1967
- if (peg$silentFails === 0) { peg$fail(peg$e29); }
1932
+ if (peg$silentFails === 0) { peg$fail(peg$e27); }
1968
1933
  }
1969
1934
  if (s6 !== peg$FAILED) {
1970
1935
  s7 = peg$currPos;
@@ -2017,43 +1982,43 @@ function peg$parse(input, options) {
2017
1982
 
2018
1983
  s0 = peg$currPos;
2019
1984
  s1 = input.charAt(peg$currPos);
2020
- if (peg$r13.test(s1)) {
1985
+ if (peg$r11.test(s1)) {
2021
1986
  peg$currPos++;
2022
1987
  } else {
2023
1988
  s1 = peg$FAILED;
2024
- if (peg$silentFails === 0) { peg$fail(peg$e33); }
1989
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2025
1990
  }
2026
1991
  if (s1 !== peg$FAILED) {
2027
1992
  s2 = input.charAt(peg$currPos);
2028
- if (peg$r10.test(s2)) {
1993
+ if (peg$r8.test(s2)) {
2029
1994
  peg$currPos++;
2030
1995
  } else {
2031
1996
  s2 = peg$FAILED;
2032
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
1997
+ if (peg$silentFails === 0) { peg$fail(peg$e28); }
2033
1998
  }
2034
1999
  if (s2 !== peg$FAILED) {
2035
2000
  s3 = input.charAt(peg$currPos);
2036
- if (peg$r14.test(s3)) {
2001
+ if (peg$r12.test(s3)) {
2037
2002
  peg$currPos++;
2038
2003
  } else {
2039
2004
  s3 = peg$FAILED;
2040
- if (peg$silentFails === 0) { peg$fail(peg$e34); }
2005
+ if (peg$silentFails === 0) { peg$fail(peg$e32); }
2041
2006
  }
2042
2007
  if (s3 !== peg$FAILED) {
2043
2008
  s4 = input.charAt(peg$currPos);
2044
- if (peg$r15.test(s4)) {
2009
+ if (peg$r13.test(s4)) {
2045
2010
  peg$currPos++;
2046
2011
  } else {
2047
2012
  s4 = peg$FAILED;
2048
- if (peg$silentFails === 0) { peg$fail(peg$e35); }
2013
+ if (peg$silentFails === 0) { peg$fail(peg$e33); }
2049
2014
  }
2050
2015
  if (s4 !== peg$FAILED) {
2051
2016
  s5 = input.charAt(peg$currPos);
2052
- if (peg$r16.test(s5)) {
2017
+ if (peg$r14.test(s5)) {
2053
2018
  peg$currPos++;
2054
2019
  } else {
2055
2020
  s5 = peg$FAILED;
2056
- if (peg$silentFails === 0) { peg$fail(peg$e36); }
2021
+ if (peg$silentFails === 0) { peg$fail(peg$e34); }
2057
2022
  }
2058
2023
  if (s5 !== peg$FAILED) {
2059
2024
  s6 = peg$currPos;
@@ -2102,59 +2067,59 @@ function peg$parse(input, options) {
2102
2067
 
2103
2068
  s0 = peg$currPos;
2104
2069
  s1 = input.charAt(peg$currPos);
2105
- if (peg$r17.test(s1)) {
2070
+ if (peg$r15.test(s1)) {
2106
2071
  peg$currPos++;
2107
2072
  } else {
2108
2073
  s1 = peg$FAILED;
2109
- if (peg$silentFails === 0) { peg$fail(peg$e37); }
2074
+ if (peg$silentFails === 0) { peg$fail(peg$e35); }
2110
2075
  }
2111
2076
  if (s1 !== peg$FAILED) {
2112
2077
  s2 = input.charAt(peg$currPos);
2113
- if (peg$r11.test(s2)) {
2078
+ if (peg$r9.test(s2)) {
2114
2079
  peg$currPos++;
2115
2080
  } else {
2116
2081
  s2 = peg$FAILED;
2117
- if (peg$silentFails === 0) { peg$fail(peg$e31); }
2082
+ if (peg$silentFails === 0) { peg$fail(peg$e29); }
2118
2083
  }
2119
2084
  if (s2 !== peg$FAILED) {
2120
2085
  s3 = input.charAt(peg$currPos);
2121
- if (peg$r13.test(s3)) {
2086
+ if (peg$r11.test(s3)) {
2122
2087
  peg$currPos++;
2123
2088
  } else {
2124
2089
  s3 = peg$FAILED;
2125
- if (peg$silentFails === 0) { peg$fail(peg$e33); }
2090
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2126
2091
  }
2127
2092
  if (s3 !== peg$FAILED) {
2128
2093
  s4 = input.charAt(peg$currPos);
2129
- if (peg$r10.test(s4)) {
2094
+ if (peg$r8.test(s4)) {
2130
2095
  peg$currPos++;
2131
2096
  } else {
2132
2097
  s4 = peg$FAILED;
2133
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
2098
+ if (peg$silentFails === 0) { peg$fail(peg$e28); }
2134
2099
  }
2135
2100
  if (s4 !== peg$FAILED) {
2136
2101
  s5 = input.charAt(peg$currPos);
2137
- if (peg$r14.test(s5)) {
2102
+ if (peg$r12.test(s5)) {
2138
2103
  peg$currPos++;
2139
2104
  } else {
2140
2105
  s5 = peg$FAILED;
2141
- if (peg$silentFails === 0) { peg$fail(peg$e34); }
2106
+ if (peg$silentFails === 0) { peg$fail(peg$e32); }
2142
2107
  }
2143
2108
  if (s5 !== peg$FAILED) {
2144
2109
  s6 = input.charAt(peg$currPos);
2145
- if (peg$r15.test(s6)) {
2110
+ if (peg$r13.test(s6)) {
2146
2111
  peg$currPos++;
2147
2112
  } else {
2148
2113
  s6 = peg$FAILED;
2149
- if (peg$silentFails === 0) { peg$fail(peg$e35); }
2114
+ if (peg$silentFails === 0) { peg$fail(peg$e33); }
2150
2115
  }
2151
2116
  if (s6 !== peg$FAILED) {
2152
2117
  s7 = input.charAt(peg$currPos);
2153
- if (peg$r16.test(s7)) {
2118
+ if (peg$r14.test(s7)) {
2154
2119
  peg$currPos++;
2155
2120
  } else {
2156
2121
  s7 = peg$FAILED;
2157
- if (peg$silentFails === 0) { peg$fail(peg$e36); }
2122
+ if (peg$silentFails === 0) { peg$fail(peg$e34); }
2158
2123
  }
2159
2124
  if (s7 !== peg$FAILED) {
2160
2125
  s8 = peg$currPos;
@@ -2211,35 +2176,35 @@ function peg$parse(input, options) {
2211
2176
 
2212
2177
  s0 = peg$currPos;
2213
2178
  s1 = input.charAt(peg$currPos);
2214
- if (peg$r18.test(s1)) {
2179
+ if (peg$r16.test(s1)) {
2215
2180
  peg$currPos++;
2216
2181
  } else {
2217
2182
  s1 = peg$FAILED;
2218
- if (peg$silentFails === 0) { peg$fail(peg$e38); }
2183
+ if (peg$silentFails === 0) { peg$fail(peg$e36); }
2219
2184
  }
2220
2185
  if (s1 !== peg$FAILED) {
2221
2186
  s2 = input.charAt(peg$currPos);
2222
- if (peg$r19.test(s2)) {
2187
+ if (peg$r17.test(s2)) {
2223
2188
  peg$currPos++;
2224
2189
  } else {
2225
2190
  s2 = peg$FAILED;
2226
- if (peg$silentFails === 0) { peg$fail(peg$e39); }
2191
+ if (peg$silentFails === 0) { peg$fail(peg$e37); }
2227
2192
  }
2228
2193
  if (s2 !== peg$FAILED) {
2229
2194
  s3 = input.charAt(peg$currPos);
2230
- if (peg$r17.test(s3)) {
2195
+ if (peg$r15.test(s3)) {
2231
2196
  peg$currPos++;
2232
2197
  } else {
2233
2198
  s3 = peg$FAILED;
2234
- if (peg$silentFails === 0) { peg$fail(peg$e37); }
2199
+ if (peg$silentFails === 0) { peg$fail(peg$e35); }
2235
2200
  }
2236
2201
  if (s3 !== peg$FAILED) {
2237
2202
  s4 = input.charAt(peg$currPos);
2238
- if (peg$r20.test(s4)) {
2203
+ if (peg$r18.test(s4)) {
2239
2204
  peg$currPos++;
2240
2205
  } else {
2241
2206
  s4 = peg$FAILED;
2242
- if (peg$silentFails === 0) { peg$fail(peg$e40); }
2207
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
2243
2208
  }
2244
2209
  if (s4 !== peg$FAILED) {
2245
2210
  s5 = peg$currPos;
@@ -2284,35 +2249,35 @@ function peg$parse(input, options) {
2284
2249
 
2285
2250
  s0 = peg$currPos;
2286
2251
  s1 = input.charAt(peg$currPos);
2287
- if (peg$r20.test(s1)) {
2252
+ if (peg$r18.test(s1)) {
2288
2253
  peg$currPos++;
2289
2254
  } else {
2290
2255
  s1 = peg$FAILED;
2291
- if (peg$silentFails === 0) { peg$fail(peg$e40); }
2256
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
2292
2257
  }
2293
2258
  if (s1 !== peg$FAILED) {
2294
2259
  s2 = input.charAt(peg$currPos);
2295
- if (peg$r17.test(s2)) {
2260
+ if (peg$r15.test(s2)) {
2296
2261
  peg$currPos++;
2297
2262
  } else {
2298
2263
  s2 = peg$FAILED;
2299
- if (peg$silentFails === 0) { peg$fail(peg$e37); }
2264
+ if (peg$silentFails === 0) { peg$fail(peg$e35); }
2300
2265
  }
2301
2266
  if (s2 !== peg$FAILED) {
2302
2267
  s3 = input.charAt(peg$currPos);
2303
- if (peg$r13.test(s3)) {
2268
+ if (peg$r11.test(s3)) {
2304
2269
  peg$currPos++;
2305
2270
  } else {
2306
2271
  s3 = peg$FAILED;
2307
- if (peg$silentFails === 0) { peg$fail(peg$e33); }
2272
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2308
2273
  }
2309
2274
  if (s3 !== peg$FAILED) {
2310
2275
  s4 = input.charAt(peg$currPos);
2311
- if (peg$r20.test(s4)) {
2276
+ if (peg$r18.test(s4)) {
2312
2277
  peg$currPos++;
2313
2278
  } else {
2314
2279
  s4 = peg$FAILED;
2315
- if (peg$silentFails === 0) { peg$fail(peg$e40); }
2280
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
2316
2281
  }
2317
2282
  if (s4 !== peg$FAILED) {
2318
2283
  s5 = peg$currPos;
@@ -2357,67 +2322,67 @@ function peg$parse(input, options) {
2357
2322
 
2358
2323
  s0 = peg$currPos;
2359
2324
  s1 = input.charAt(peg$currPos);
2360
- if (peg$r8.test(s1)) {
2325
+ if (peg$r6.test(s1)) {
2361
2326
  peg$currPos++;
2362
2327
  } else {
2363
2328
  s1 = peg$FAILED;
2364
- if (peg$silentFails === 0) { peg$fail(peg$e28); }
2329
+ if (peg$silentFails === 0) { peg$fail(peg$e26); }
2365
2330
  }
2366
2331
  if (s1 !== peg$FAILED) {
2367
2332
  s2 = input.charAt(peg$currPos);
2368
- if (peg$r21.test(s2)) {
2333
+ if (peg$r19.test(s2)) {
2369
2334
  peg$currPos++;
2370
2335
  } else {
2371
2336
  s2 = peg$FAILED;
2372
- if (peg$silentFails === 0) { peg$fail(peg$e41); }
2337
+ if (peg$silentFails === 0) { peg$fail(peg$e39); }
2373
2338
  }
2374
2339
  if (s2 !== peg$FAILED) {
2375
2340
  s3 = input.charAt(peg$currPos);
2376
- if (peg$r22.test(s3)) {
2341
+ if (peg$r20.test(s3)) {
2377
2342
  peg$currPos++;
2378
2343
  } else {
2379
2344
  s3 = peg$FAILED;
2380
- if (peg$silentFails === 0) { peg$fail(peg$e42); }
2345
+ if (peg$silentFails === 0) { peg$fail(peg$e40); }
2381
2346
  }
2382
2347
  if (s3 !== peg$FAILED) {
2383
2348
  s4 = input.charAt(peg$currPos);
2384
- if (peg$r13.test(s4)) {
2349
+ if (peg$r11.test(s4)) {
2385
2350
  peg$currPos++;
2386
2351
  } else {
2387
2352
  s4 = peg$FAILED;
2388
- if (peg$silentFails === 0) { peg$fail(peg$e33); }
2353
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2389
2354
  }
2390
2355
  if (s4 !== peg$FAILED) {
2391
2356
  s5 = input.charAt(peg$currPos);
2392
- if (peg$r10.test(s5)) {
2357
+ if (peg$r8.test(s5)) {
2393
2358
  peg$currPos++;
2394
2359
  } else {
2395
2360
  s5 = peg$FAILED;
2396
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
2361
+ if (peg$silentFails === 0) { peg$fail(peg$e28); }
2397
2362
  }
2398
2363
  if (s5 !== peg$FAILED) {
2399
2364
  s6 = input.charAt(peg$currPos);
2400
- if (peg$r14.test(s6)) {
2365
+ if (peg$r12.test(s6)) {
2401
2366
  peg$currPos++;
2402
2367
  } else {
2403
2368
  s6 = peg$FAILED;
2404
- if (peg$silentFails === 0) { peg$fail(peg$e34); }
2369
+ if (peg$silentFails === 0) { peg$fail(peg$e32); }
2405
2370
  }
2406
2371
  if (s6 !== peg$FAILED) {
2407
2372
  s7 = input.charAt(peg$currPos);
2408
- if (peg$r15.test(s7)) {
2373
+ if (peg$r13.test(s7)) {
2409
2374
  peg$currPos++;
2410
2375
  } else {
2411
2376
  s7 = peg$FAILED;
2412
- if (peg$silentFails === 0) { peg$fail(peg$e35); }
2377
+ if (peg$silentFails === 0) { peg$fail(peg$e33); }
2413
2378
  }
2414
2379
  if (s7 !== peg$FAILED) {
2415
2380
  s8 = input.charAt(peg$currPos);
2416
- if (peg$r16.test(s8)) {
2381
+ if (peg$r14.test(s8)) {
2417
2382
  peg$currPos++;
2418
2383
  } else {
2419
2384
  s8 = peg$FAILED;
2420
- if (peg$silentFails === 0) { peg$fail(peg$e36); }
2385
+ if (peg$silentFails === 0) { peg$fail(peg$e34); }
2421
2386
  }
2422
2387
  if (s8 !== peg$FAILED) {
2423
2388
  s9 = peg$currPos;
@@ -2493,51 +2458,51 @@ function peg$parse(input, options) {
2493
2458
  s0 = peg$currPos;
2494
2459
  s1 = peg$currPos;
2495
2460
  s2 = input.charAt(peg$currPos);
2496
- if (peg$r8.test(s2)) {
2461
+ if (peg$r6.test(s2)) {
2497
2462
  peg$currPos++;
2498
2463
  } else {
2499
2464
  s2 = peg$FAILED;
2500
- if (peg$silentFails === 0) { peg$fail(peg$e28); }
2465
+ if (peg$silentFails === 0) { peg$fail(peg$e26); }
2501
2466
  }
2502
2467
  if (s2 !== peg$FAILED) {
2503
2468
  s3 = input.charAt(peg$currPos);
2504
- if (peg$r9.test(s3)) {
2469
+ if (peg$r7.test(s3)) {
2505
2470
  peg$currPos++;
2506
2471
  } else {
2507
2472
  s3 = peg$FAILED;
2508
- if (peg$silentFails === 0) { peg$fail(peg$e29); }
2473
+ if (peg$silentFails === 0) { peg$fail(peg$e27); }
2509
2474
  }
2510
2475
  if (s3 !== peg$FAILED) {
2511
2476
  s4 = input.charAt(peg$currPos);
2512
- if (peg$r10.test(s4)) {
2477
+ if (peg$r8.test(s4)) {
2513
2478
  peg$currPos++;
2514
2479
  } else {
2515
2480
  s4 = peg$FAILED;
2516
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
2481
+ if (peg$silentFails === 0) { peg$fail(peg$e28); }
2517
2482
  }
2518
2483
  if (s4 !== peg$FAILED) {
2519
2484
  s5 = input.charAt(peg$currPos);
2520
- if (peg$r11.test(s5)) {
2485
+ if (peg$r9.test(s5)) {
2521
2486
  peg$currPos++;
2522
2487
  } else {
2523
2488
  s5 = peg$FAILED;
2524
- if (peg$silentFails === 0) { peg$fail(peg$e31); }
2489
+ if (peg$silentFails === 0) { peg$fail(peg$e29); }
2525
2490
  }
2526
2491
  if (s5 !== peg$FAILED) {
2527
2492
  s6 = input.charAt(peg$currPos);
2528
- if (peg$r12.test(s6)) {
2493
+ if (peg$r10.test(s6)) {
2529
2494
  peg$currPos++;
2530
2495
  } else {
2531
2496
  s6 = peg$FAILED;
2532
- if (peg$silentFails === 0) { peg$fail(peg$e32); }
2497
+ if (peg$silentFails === 0) { peg$fail(peg$e30); }
2533
2498
  }
2534
2499
  if (s6 !== peg$FAILED) {
2535
2500
  s7 = input.charAt(peg$currPos);
2536
- if (peg$r9.test(s7)) {
2501
+ if (peg$r7.test(s7)) {
2537
2502
  peg$currPos++;
2538
2503
  } else {
2539
2504
  s7 = peg$FAILED;
2540
- if (peg$silentFails === 0) { peg$fail(peg$e29); }
2505
+ if (peg$silentFails === 0) { peg$fail(peg$e27); }
2541
2506
  }
2542
2507
  if (s7 !== peg$FAILED) {
2543
2508
  s2 = [s2, s3, s4, s5, s6, s7];
@@ -2569,59 +2534,59 @@ function peg$parse(input, options) {
2569
2534
  if (s1 === peg$FAILED) {
2570
2535
  s1 = peg$currPos;
2571
2536
  s2 = input.charAt(peg$currPos);
2572
- if (peg$r17.test(s2)) {
2537
+ if (peg$r15.test(s2)) {
2573
2538
  peg$currPos++;
2574
2539
  } else {
2575
2540
  s2 = peg$FAILED;
2576
- if (peg$silentFails === 0) { peg$fail(peg$e37); }
2541
+ if (peg$silentFails === 0) { peg$fail(peg$e35); }
2577
2542
  }
2578
2543
  if (s2 !== peg$FAILED) {
2579
2544
  s3 = input.charAt(peg$currPos);
2580
- if (peg$r11.test(s3)) {
2545
+ if (peg$r9.test(s3)) {
2581
2546
  peg$currPos++;
2582
2547
  } else {
2583
2548
  s3 = peg$FAILED;
2584
- if (peg$silentFails === 0) { peg$fail(peg$e31); }
2549
+ if (peg$silentFails === 0) { peg$fail(peg$e29); }
2585
2550
  }
2586
2551
  if (s3 !== peg$FAILED) {
2587
2552
  s4 = input.charAt(peg$currPos);
2588
- if (peg$r13.test(s4)) {
2553
+ if (peg$r11.test(s4)) {
2589
2554
  peg$currPos++;
2590
2555
  } else {
2591
2556
  s4 = peg$FAILED;
2592
- if (peg$silentFails === 0) { peg$fail(peg$e33); }
2557
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2593
2558
  }
2594
2559
  if (s4 !== peg$FAILED) {
2595
2560
  s5 = input.charAt(peg$currPos);
2596
- if (peg$r10.test(s5)) {
2561
+ if (peg$r8.test(s5)) {
2597
2562
  peg$currPos++;
2598
2563
  } else {
2599
2564
  s5 = peg$FAILED;
2600
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
2565
+ if (peg$silentFails === 0) { peg$fail(peg$e28); }
2601
2566
  }
2602
2567
  if (s5 !== peg$FAILED) {
2603
2568
  s6 = input.charAt(peg$currPos);
2604
- if (peg$r14.test(s6)) {
2569
+ if (peg$r12.test(s6)) {
2605
2570
  peg$currPos++;
2606
2571
  } else {
2607
2572
  s6 = peg$FAILED;
2608
- if (peg$silentFails === 0) { peg$fail(peg$e34); }
2573
+ if (peg$silentFails === 0) { peg$fail(peg$e32); }
2609
2574
  }
2610
2575
  if (s6 !== peg$FAILED) {
2611
2576
  s7 = input.charAt(peg$currPos);
2612
- if (peg$r15.test(s7)) {
2577
+ if (peg$r13.test(s7)) {
2613
2578
  peg$currPos++;
2614
2579
  } else {
2615
2580
  s7 = peg$FAILED;
2616
- if (peg$silentFails === 0) { peg$fail(peg$e35); }
2581
+ if (peg$silentFails === 0) { peg$fail(peg$e33); }
2617
2582
  }
2618
2583
  if (s7 !== peg$FAILED) {
2619
2584
  s8 = input.charAt(peg$currPos);
2620
- if (peg$r16.test(s8)) {
2585
+ if (peg$r14.test(s8)) {
2621
2586
  peg$currPos++;
2622
2587
  } else {
2623
2588
  s8 = peg$FAILED;
2624
- if (peg$silentFails === 0) { peg$fail(peg$e36); }
2589
+ if (peg$silentFails === 0) { peg$fail(peg$e34); }
2625
2590
  }
2626
2591
  if (s8 !== peg$FAILED) {
2627
2592
  s2 = [s2, s3, s4, s5, s6, s7, s8];
@@ -2657,43 +2622,43 @@ function peg$parse(input, options) {
2657
2622
  if (s1 === peg$FAILED) {
2658
2623
  s1 = peg$currPos;
2659
2624
  s2 = input.charAt(peg$currPos);
2660
- if (peg$r13.test(s2)) {
2625
+ if (peg$r11.test(s2)) {
2661
2626
  peg$currPos++;
2662
2627
  } else {
2663
2628
  s2 = peg$FAILED;
2664
- if (peg$silentFails === 0) { peg$fail(peg$e33); }
2629
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2665
2630
  }
2666
2631
  if (s2 !== peg$FAILED) {
2667
2632
  s3 = input.charAt(peg$currPos);
2668
- if (peg$r10.test(s3)) {
2633
+ if (peg$r8.test(s3)) {
2669
2634
  peg$currPos++;
2670
2635
  } else {
2671
2636
  s3 = peg$FAILED;
2672
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
2637
+ if (peg$silentFails === 0) { peg$fail(peg$e28); }
2673
2638
  }
2674
2639
  if (s3 !== peg$FAILED) {
2675
2640
  s4 = input.charAt(peg$currPos);
2676
- if (peg$r14.test(s4)) {
2641
+ if (peg$r12.test(s4)) {
2677
2642
  peg$currPos++;
2678
2643
  } else {
2679
2644
  s4 = peg$FAILED;
2680
- if (peg$silentFails === 0) { peg$fail(peg$e34); }
2645
+ if (peg$silentFails === 0) { peg$fail(peg$e32); }
2681
2646
  }
2682
2647
  if (s4 !== peg$FAILED) {
2683
2648
  s5 = input.charAt(peg$currPos);
2684
- if (peg$r15.test(s5)) {
2649
+ if (peg$r13.test(s5)) {
2685
2650
  peg$currPos++;
2686
2651
  } else {
2687
2652
  s5 = peg$FAILED;
2688
- if (peg$silentFails === 0) { peg$fail(peg$e35); }
2653
+ if (peg$silentFails === 0) { peg$fail(peg$e33); }
2689
2654
  }
2690
2655
  if (s5 !== peg$FAILED) {
2691
2656
  s6 = input.charAt(peg$currPos);
2692
- if (peg$r16.test(s6)) {
2657
+ if (peg$r14.test(s6)) {
2693
2658
  peg$currPos++;
2694
2659
  } else {
2695
2660
  s6 = peg$FAILED;
2696
- if (peg$silentFails === 0) { peg$fail(peg$e36); }
2661
+ if (peg$silentFails === 0) { peg$fail(peg$e34); }
2697
2662
  }
2698
2663
  if (s6 !== peg$FAILED) {
2699
2664
  s2 = [s2, s3, s4, s5, s6];
@@ -2721,35 +2686,35 @@ function peg$parse(input, options) {
2721
2686
  if (s1 === peg$FAILED) {
2722
2687
  s1 = peg$currPos;
2723
2688
  s2 = input.charAt(peg$currPos);
2724
- if (peg$r18.test(s2)) {
2689
+ if (peg$r16.test(s2)) {
2725
2690
  peg$currPos++;
2726
2691
  } else {
2727
2692
  s2 = peg$FAILED;
2728
- if (peg$silentFails === 0) { peg$fail(peg$e38); }
2693
+ if (peg$silentFails === 0) { peg$fail(peg$e36); }
2729
2694
  }
2730
2695
  if (s2 !== peg$FAILED) {
2731
2696
  s3 = input.charAt(peg$currPos);
2732
- if (peg$r19.test(s3)) {
2697
+ if (peg$r17.test(s3)) {
2733
2698
  peg$currPos++;
2734
2699
  } else {
2735
2700
  s3 = peg$FAILED;
2736
- if (peg$silentFails === 0) { peg$fail(peg$e39); }
2701
+ if (peg$silentFails === 0) { peg$fail(peg$e37); }
2737
2702
  }
2738
2703
  if (s3 !== peg$FAILED) {
2739
2704
  s4 = input.charAt(peg$currPos);
2740
- if (peg$r17.test(s4)) {
2705
+ if (peg$r15.test(s4)) {
2741
2706
  peg$currPos++;
2742
2707
  } else {
2743
2708
  s4 = peg$FAILED;
2744
- if (peg$silentFails === 0) { peg$fail(peg$e37); }
2709
+ if (peg$silentFails === 0) { peg$fail(peg$e35); }
2745
2710
  }
2746
2711
  if (s4 !== peg$FAILED) {
2747
2712
  s5 = input.charAt(peg$currPos);
2748
- if (peg$r20.test(s5)) {
2713
+ if (peg$r18.test(s5)) {
2749
2714
  peg$currPos++;
2750
2715
  } else {
2751
2716
  s5 = peg$FAILED;
2752
- if (peg$silentFails === 0) { peg$fail(peg$e40); }
2717
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
2753
2718
  }
2754
2719
  if (s5 !== peg$FAILED) {
2755
2720
  s2 = [s2, s3, s4, s5];
@@ -2773,35 +2738,35 @@ function peg$parse(input, options) {
2773
2738
  if (s1 === peg$FAILED) {
2774
2739
  s1 = peg$currPos;
2775
2740
  s2 = input.charAt(peg$currPos);
2776
- if (peg$r20.test(s2)) {
2741
+ if (peg$r18.test(s2)) {
2777
2742
  peg$currPos++;
2778
2743
  } else {
2779
2744
  s2 = peg$FAILED;
2780
- if (peg$silentFails === 0) { peg$fail(peg$e40); }
2745
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
2781
2746
  }
2782
2747
  if (s2 !== peg$FAILED) {
2783
2748
  s3 = input.charAt(peg$currPos);
2784
- if (peg$r17.test(s3)) {
2749
+ if (peg$r15.test(s3)) {
2785
2750
  peg$currPos++;
2786
2751
  } else {
2787
2752
  s3 = peg$FAILED;
2788
- if (peg$silentFails === 0) { peg$fail(peg$e37); }
2753
+ if (peg$silentFails === 0) { peg$fail(peg$e35); }
2789
2754
  }
2790
2755
  if (s3 !== peg$FAILED) {
2791
2756
  s4 = input.charAt(peg$currPos);
2792
- if (peg$r13.test(s4)) {
2757
+ if (peg$r11.test(s4)) {
2793
2758
  peg$currPos++;
2794
2759
  } else {
2795
2760
  s4 = peg$FAILED;
2796
- if (peg$silentFails === 0) { peg$fail(peg$e33); }
2761
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2797
2762
  }
2798
2763
  if (s4 !== peg$FAILED) {
2799
2764
  s5 = input.charAt(peg$currPos);
2800
- if (peg$r20.test(s5)) {
2765
+ if (peg$r18.test(s5)) {
2801
2766
  peg$currPos++;
2802
2767
  } else {
2803
2768
  s5 = peg$FAILED;
2804
- if (peg$silentFails === 0) { peg$fail(peg$e40); }
2769
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
2805
2770
  }
2806
2771
  if (s5 !== peg$FAILED) {
2807
2772
  s2 = [s2, s3, s4, s5];
@@ -2825,67 +2790,67 @@ function peg$parse(input, options) {
2825
2790
  if (s1 === peg$FAILED) {
2826
2791
  s1 = peg$currPos;
2827
2792
  s2 = input.charAt(peg$currPos);
2828
- if (peg$r8.test(s2)) {
2793
+ if (peg$r6.test(s2)) {
2829
2794
  peg$currPos++;
2830
2795
  } else {
2831
2796
  s2 = peg$FAILED;
2832
- if (peg$silentFails === 0) { peg$fail(peg$e28); }
2797
+ if (peg$silentFails === 0) { peg$fail(peg$e26); }
2833
2798
  }
2834
2799
  if (s2 !== peg$FAILED) {
2835
2800
  s3 = input.charAt(peg$currPos);
2836
- if (peg$r21.test(s3)) {
2801
+ if (peg$r19.test(s3)) {
2837
2802
  peg$currPos++;
2838
2803
  } else {
2839
2804
  s3 = peg$FAILED;
2840
- if (peg$silentFails === 0) { peg$fail(peg$e41); }
2805
+ if (peg$silentFails === 0) { peg$fail(peg$e39); }
2841
2806
  }
2842
2807
  if (s3 !== peg$FAILED) {
2843
2808
  s4 = input.charAt(peg$currPos);
2844
- if (peg$r22.test(s4)) {
2809
+ if (peg$r20.test(s4)) {
2845
2810
  peg$currPos++;
2846
2811
  } else {
2847
2812
  s4 = peg$FAILED;
2848
- if (peg$silentFails === 0) { peg$fail(peg$e42); }
2813
+ if (peg$silentFails === 0) { peg$fail(peg$e40); }
2849
2814
  }
2850
2815
  if (s4 !== peg$FAILED) {
2851
2816
  s5 = input.charAt(peg$currPos);
2852
- if (peg$r13.test(s5)) {
2817
+ if (peg$r11.test(s5)) {
2853
2818
  peg$currPos++;
2854
2819
  } else {
2855
2820
  s5 = peg$FAILED;
2856
- if (peg$silentFails === 0) { peg$fail(peg$e33); }
2821
+ if (peg$silentFails === 0) { peg$fail(peg$e31); }
2857
2822
  }
2858
2823
  if (s5 !== peg$FAILED) {
2859
2824
  s6 = input.charAt(peg$currPos);
2860
- if (peg$r10.test(s6)) {
2825
+ if (peg$r8.test(s6)) {
2861
2826
  peg$currPos++;
2862
2827
  } else {
2863
2828
  s6 = peg$FAILED;
2864
- if (peg$silentFails === 0) { peg$fail(peg$e30); }
2829
+ if (peg$silentFails === 0) { peg$fail(peg$e28); }
2865
2830
  }
2866
2831
  if (s6 !== peg$FAILED) {
2867
2832
  s7 = input.charAt(peg$currPos);
2868
- if (peg$r14.test(s7)) {
2833
+ if (peg$r12.test(s7)) {
2869
2834
  peg$currPos++;
2870
2835
  } else {
2871
2836
  s7 = peg$FAILED;
2872
- if (peg$silentFails === 0) { peg$fail(peg$e34); }
2837
+ if (peg$silentFails === 0) { peg$fail(peg$e32); }
2873
2838
  }
2874
2839
  if (s7 !== peg$FAILED) {
2875
2840
  s8 = input.charAt(peg$currPos);
2876
- if (peg$r15.test(s8)) {
2841
+ if (peg$r13.test(s8)) {
2877
2842
  peg$currPos++;
2878
2843
  } else {
2879
2844
  s8 = peg$FAILED;
2880
- if (peg$silentFails === 0) { peg$fail(peg$e35); }
2845
+ if (peg$silentFails === 0) { peg$fail(peg$e33); }
2881
2846
  }
2882
2847
  if (s8 !== peg$FAILED) {
2883
2848
  s9 = input.charAt(peg$currPos);
2884
- if (peg$r16.test(s9)) {
2849
+ if (peg$r14.test(s9)) {
2885
2850
  peg$currPos++;
2886
2851
  } else {
2887
2852
  s9 = peg$FAILED;
2888
- if (peg$silentFails === 0) { peg$fail(peg$e36); }
2853
+ if (peg$silentFails === 0) { peg$fail(peg$e34); }
2889
2854
  }
2890
2855
  if (s9 !== peg$FAILED) {
2891
2856
  s2 = [s2, s3, s4, s5, s6, s7, s8, s9];
@@ -2959,21 +2924,21 @@ function peg$parse(input, options) {
2959
2924
  s0 = [];
2960
2925
  s1 = [];
2961
2926
  s2 = input.charAt(peg$currPos);
2962
- if (peg$r23.test(s2)) {
2927
+ if (peg$r21.test(s2)) {
2963
2928
  peg$currPos++;
2964
2929
  } else {
2965
2930
  s2 = peg$FAILED;
2966
- if (peg$silentFails === 0) { peg$fail(peg$e43); }
2931
+ if (peg$silentFails === 0) { peg$fail(peg$e41); }
2967
2932
  }
2968
2933
  if (s2 !== peg$FAILED) {
2969
2934
  while (s2 !== peg$FAILED) {
2970
2935
  s1.push(s2);
2971
2936
  s2 = input.charAt(peg$currPos);
2972
- if (peg$r23.test(s2)) {
2937
+ if (peg$r21.test(s2)) {
2973
2938
  peg$currPos++;
2974
2939
  } else {
2975
2940
  s2 = peg$FAILED;
2976
- if (peg$silentFails === 0) { peg$fail(peg$e43); }
2941
+ if (peg$silentFails === 0) { peg$fail(peg$e41); }
2977
2942
  }
2978
2943
  }
2979
2944
  } else {
@@ -2992,21 +2957,21 @@ function peg$parse(input, options) {
2992
2957
  s0.push(s1);
2993
2958
  s1 = [];
2994
2959
  s2 = input.charAt(peg$currPos);
2995
- if (peg$r23.test(s2)) {
2960
+ if (peg$r21.test(s2)) {
2996
2961
  peg$currPos++;
2997
2962
  } else {
2998
2963
  s2 = peg$FAILED;
2999
- if (peg$silentFails === 0) { peg$fail(peg$e43); }
2964
+ if (peg$silentFails === 0) { peg$fail(peg$e41); }
3000
2965
  }
3001
2966
  if (s2 !== peg$FAILED) {
3002
2967
  while (s2 !== peg$FAILED) {
3003
2968
  s1.push(s2);
3004
2969
  s2 = input.charAt(peg$currPos);
3005
- if (peg$r23.test(s2)) {
2970
+ if (peg$r21.test(s2)) {
3006
2971
  peg$currPos++;
3007
2972
  } else {
3008
2973
  s2 = peg$FAILED;
3009
- if (peg$silentFails === 0) { peg$fail(peg$e43); }
2974
+ if (peg$silentFails === 0) { peg$fail(peg$e41); }
3010
2975
  }
3011
2976
  }
3012
2977
  } else {
@@ -3035,7 +3000,7 @@ function peg$parse(input, options) {
3035
3000
  peg$currPos += 2;
3036
3001
  } else {
3037
3002
  s1 = peg$FAILED;
3038
- if (peg$silentFails === 0) { peg$fail(peg$e44); }
3003
+ if (peg$silentFails === 0) { peg$fail(peg$e42); }
3039
3004
  }
3040
3005
  if (s1 !== peg$FAILED) {
3041
3006
  s2 = [];
@@ -3047,7 +3012,7 @@ function peg$parse(input, options) {
3047
3012
  peg$currPos += 2;
3048
3013
  } else {
3049
3014
  s5 = peg$FAILED;
3050
- if (peg$silentFails === 0) { peg$fail(peg$e45); }
3015
+ if (peg$silentFails === 0) { peg$fail(peg$e43); }
3051
3016
  }
3052
3017
  peg$silentFails--;
3053
3018
  if (s5 === peg$FAILED) {
@@ -3085,7 +3050,7 @@ function peg$parse(input, options) {
3085
3050
  peg$currPos += 2;
3086
3051
  } else {
3087
3052
  s5 = peg$FAILED;
3088
- if (peg$silentFails === 0) { peg$fail(peg$e45); }
3053
+ if (peg$silentFails === 0) { peg$fail(peg$e43); }
3089
3054
  }
3090
3055
  peg$silentFails--;
3091
3056
  if (s5 === peg$FAILED) {
@@ -3119,7 +3084,7 @@ function peg$parse(input, options) {
3119
3084
  peg$currPos += 2;
3120
3085
  } else {
3121
3086
  s3 = peg$FAILED;
3122
- if (peg$silentFails === 0) { peg$fail(peg$e45); }
3087
+ if (peg$silentFails === 0) { peg$fail(peg$e43); }
3123
3088
  }
3124
3089
  if (s3 !== peg$FAILED) {
3125
3090
  s1 = [s1, s2, s3];
@@ -3145,25 +3110,25 @@ function peg$parse(input, options) {
3145
3110
  peg$currPos += 2;
3146
3111
  } else {
3147
3112
  s1 = peg$FAILED;
3148
- if (peg$silentFails === 0) { peg$fail(peg$e46); }
3113
+ if (peg$silentFails === 0) { peg$fail(peg$e44); }
3149
3114
  }
3150
3115
  if (s1 !== peg$FAILED) {
3151
3116
  s2 = [];
3152
3117
  s3 = input.charAt(peg$currPos);
3153
- if (peg$r24.test(s3)) {
3118
+ if (peg$r22.test(s3)) {
3154
3119
  peg$currPos++;
3155
3120
  } else {
3156
3121
  s3 = peg$FAILED;
3157
- if (peg$silentFails === 0) { peg$fail(peg$e47); }
3122
+ if (peg$silentFails === 0) { peg$fail(peg$e45); }
3158
3123
  }
3159
3124
  while (s3 !== peg$FAILED) {
3160
3125
  s2.push(s3);
3161
3126
  s3 = input.charAt(peg$currPos);
3162
- if (peg$r24.test(s3)) {
3127
+ if (peg$r22.test(s3)) {
3163
3128
  peg$currPos++;
3164
3129
  } else {
3165
3130
  s3 = peg$FAILED;
3166
- if (peg$silentFails === 0) { peg$fail(peg$e47); }
3131
+ if (peg$silentFails === 0) { peg$fail(peg$e45); }
3167
3132
  }
3168
3133
  }
3169
3134
  if (input.charCodeAt(peg$currPos) === 10) {
@@ -3171,7 +3136,7 @@ function peg$parse(input, options) {
3171
3136
  peg$currPos++;
3172
3137
  } else {
3173
3138
  s3 = peg$FAILED;
3174
- if (peg$silentFails === 0) { peg$fail(peg$e48); }
3139
+ if (peg$silentFails === 0) { peg$fail(peg$e46); }
3175
3140
  }
3176
3141
  if (s3 === peg$FAILED) {
3177
3142
  s3 = peg$currPos;
@@ -3215,25 +3180,25 @@ function peg$parse(input, options) {
3215
3180
  peg$currPos++;
3216
3181
  } else {
3217
3182
  s1 = peg$FAILED;
3218
- if (peg$silentFails === 0) { peg$fail(peg$e49); }
3183
+ if (peg$silentFails === 0) { peg$fail(peg$e47); }
3219
3184
  }
3220
3185
  if (s1 !== peg$FAILED) {
3221
3186
  s2 = [];
3222
3187
  s3 = input.charAt(peg$currPos);
3223
- if (peg$r24.test(s3)) {
3188
+ if (peg$r22.test(s3)) {
3224
3189
  peg$currPos++;
3225
3190
  } else {
3226
3191
  s3 = peg$FAILED;
3227
- if (peg$silentFails === 0) { peg$fail(peg$e47); }
3192
+ if (peg$silentFails === 0) { peg$fail(peg$e45); }
3228
3193
  }
3229
3194
  while (s3 !== peg$FAILED) {
3230
3195
  s2.push(s3);
3231
3196
  s3 = input.charAt(peg$currPos);
3232
- if (peg$r24.test(s3)) {
3197
+ if (peg$r22.test(s3)) {
3233
3198
  peg$currPos++;
3234
3199
  } else {
3235
3200
  s3 = peg$FAILED;
3236
- if (peg$silentFails === 0) { peg$fail(peg$e47); }
3201
+ if (peg$silentFails === 0) { peg$fail(peg$e45); }
3237
3202
  }
3238
3203
  }
3239
3204
  if (input.charCodeAt(peg$currPos) === 10) {
@@ -3241,7 +3206,7 @@ function peg$parse(input, options) {
3241
3206
  peg$currPos++;
3242
3207
  } else {
3243
3208
  s3 = peg$FAILED;
3244
- if (peg$silentFails === 0) { peg$fail(peg$e48); }
3209
+ if (peg$silentFails === 0) { peg$fail(peg$e46); }
3245
3210
  }
3246
3211
  if (s3 === peg$FAILED) {
3247
3212
  s3 = peg$currPos;