@motionscript/code 0.0.0-stage → 0.1.0-alpha.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.
- package/CHANGELOG.md +5 -0
- package/LICENSE +201 -0
- package/README.md +76 -3
- package/dist/browser/chunks/chunk-HET2RCSD.js +2 -0
- package/dist/browser/chunks/chunk-HET2RCSD.js.map +7 -0
- package/dist/browser/chunks/chunk-SYZUZB3M.js +2 -0
- package/dist/browser/chunks/chunk-SYZUZB3M.js.map +7 -0
- package/dist/browser/chunks/dist-3F5TQHM6.js +2 -0
- package/dist/browser/chunks/dist-3F5TQHM6.js.map +7 -0
- package/dist/browser/chunks/dist-3SIR23P4.js +2 -0
- package/dist/browser/chunks/dist-3SIR23P4.js.map +7 -0
- package/dist/browser/chunks/dist-AQRNACF3.js +2 -0
- package/dist/browser/chunks/dist-AQRNACF3.js.map +7 -0
- package/dist/browser/chunks/dist-B46VH2YP.js +2 -0
- package/dist/browser/chunks/dist-B46VH2YP.js.map +7 -0
- package/dist/browser/chunks/dist-FH6BHJ6A.js +7 -0
- package/dist/browser/chunks/dist-FH6BHJ6A.js.map +7 -0
- package/dist/browser/chunks/dist-FQDUBZKU.js +2 -0
- package/dist/browser/chunks/dist-FQDUBZKU.js.map +7 -0
- package/dist/browser/chunks/dist-GPNEVCJI.js +2 -0
- package/dist/browser/chunks/dist-GPNEVCJI.js.map +7 -0
- package/dist/browser/chunks/dist-LRSXSDHT.js +2 -0
- package/dist/browser/chunks/dist-LRSXSDHT.js.map +7 -0
- package/dist/browser/chunks/dist-N4CNBNHL.js +2 -0
- package/dist/browser/chunks/dist-N4CNBNHL.js.map +7 -0
- package/dist/browser/chunks/dist-OXJDTPQ6.js +2 -0
- package/dist/browser/chunks/dist-OXJDTPQ6.js.map +7 -0
- package/dist/browser/chunks/dist-SH7H4MRK.js +2 -0
- package/dist/browser/chunks/dist-SH7H4MRK.js.map +7 -0
- package/dist/browser/chunks/dist-UG3NTKWL.js +2 -0
- package/dist/browser/chunks/dist-UG3NTKWL.js.map +7 -0
- package/dist/browser/chunks/dist-W5ZXIMV7.js +2 -0
- package/dist/browser/chunks/dist-W5ZXIMV7.js.map +7 -0
- package/dist/browser/index.js +8 -0
- package/dist/browser/index.js.map +7 -0
- package/dist/browser/manifest.json +11 -0
- package/dist/code-range.d.ts +69 -0
- package/dist/code-range.d.ts.map +1 -0
- package/dist/code-range.js +124 -0
- package/dist/code-range.js.map +1 -0
- package/dist/diff.d.ts +42 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +179 -0
- package/dist/diff.js.map +1 -0
- package/dist/engine.d.ts +15 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +17 -0
- package/dist/engine.js.map +1 -0
- package/dist/highlight.d.ts +43 -0
- package/dist/highlight.d.ts.map +1 -0
- package/dist/highlight.js +243 -0
- package/dist/highlight.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/layout.d.ts +77 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +74 -0
- package/dist/layout.js.map +1 -0
- package/dist/measure-cache.d.ts +38 -0
- package/dist/measure-cache.d.ts.map +1 -0
- package/dist/measure-cache.js +0 -0
- package/dist/measure-cache.js.map +1 -0
- package/dist/node.d.ts +293 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +733 -0
- package/dist/node.js.map +1 -0
- package/dist/nodes.d.ts +18 -0
- package/dist/nodes.d.ts.map +1 -0
- package/dist/nodes.js +18 -0
- package/dist/nodes.js.map +1 -0
- package/dist/render.d.ts +28 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +223 -0
- package/dist/render.js.map +1 -0
- package/dist/style.d.ts +88 -0
- package/dist/style.d.ts.map +1 -0
- package/dist/style.js +203 -0
- package/dist/style.js.map +1 -0
- package/dist/tokens.d.ts +24 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +50 -0
- package/dist/tokens.js.map +1 -0
- package/dist/transitions.d.ts +115 -0
- package/dist/transitions.d.ts.map +1 -0
- package/dist/transitions.js +85 -0
- package/dist/transitions.js.map +1 -0
- package/package.json +82 -3
- package/registry.json +6 -0
- package/src/code-range.ts +156 -0
- package/src/diff.ts +216 -0
- package/src/engine.ts +21 -0
- package/src/highlight.ts +291 -0
- package/src/index.ts +3 -0
- package/src/layout.ts +157 -0
- package/src/measure-cache.ts +0 -0
- package/src/node.ts +834 -0
- package/src/nodes.ts +18 -0
- package/src/render.ts +247 -0
- package/src/style.ts +251 -0
- package/src/tokens.ts +75 -0
- package/src/transitions.ts +184 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../node_modules/.pnpm/@lezer+markdown@1.6.4/node_modules/@lezer/markdown/dist/index.js"],
|
|
4
|
+
"sourcesContent": ["import { NodeType, NodeProp, NodeSet, Tree, Parser, parseMixed } from '@lezer/common';\nimport { styleTags, tags, Tag } from '@lezer/highlight';\n\nclass CompositeBlock {\n static create(type, value, from, parentHash, end) {\n let hash = (parentHash + (parentHash << 8) + type + (value << 4)) | 0;\n return new CompositeBlock(type, value, from, hash, end, [], []);\n }\n constructor(type, \n // Used for indentation in list items, markup character in lists\n value, from, hash, end, children, positions) {\n this.type = type;\n this.value = value;\n this.from = from;\n this.hash = hash;\n this.end = end;\n this.children = children;\n this.positions = positions;\n this.hashProp = [[NodeProp.contextHash, hash]];\n }\n addChild(child, pos) {\n if (child.prop(NodeProp.contextHash) != this.hash)\n child = new Tree(child.type, child.children, child.positions, child.length, this.hashProp);\n this.children.push(child);\n this.positions.push(pos);\n }\n toTree(nodeSet, end = this.end) {\n let last = this.children.length - 1;\n if (last >= 0)\n end = Math.max(end, this.positions[last] + this.children[last].length + this.from);\n return new Tree(nodeSet.types[this.type], this.children, this.positions, end - this.from).balance({\n makeTree: (children, positions, length) => new Tree(NodeType.none, children, positions, length, this.hashProp)\n });\n }\n}\nvar Type;\n(function (Type) {\n Type[Type[\"Document\"] = 1] = \"Document\";\n Type[Type[\"CodeBlock\"] = 2] = \"CodeBlock\";\n Type[Type[\"FencedCode\"] = 3] = \"FencedCode\";\n Type[Type[\"Blockquote\"] = 4] = \"Blockquote\";\n Type[Type[\"HorizontalRule\"] = 5] = \"HorizontalRule\";\n Type[Type[\"BulletList\"] = 6] = \"BulletList\";\n Type[Type[\"OrderedList\"] = 7] = \"OrderedList\";\n Type[Type[\"ListItem\"] = 8] = \"ListItem\";\n Type[Type[\"ATXHeading1\"] = 9] = \"ATXHeading1\";\n Type[Type[\"ATXHeading2\"] = 10] = \"ATXHeading2\";\n Type[Type[\"ATXHeading3\"] = 11] = \"ATXHeading3\";\n Type[Type[\"ATXHeading4\"] = 12] = \"ATXHeading4\";\n Type[Type[\"ATXHeading5\"] = 13] = \"ATXHeading5\";\n Type[Type[\"ATXHeading6\"] = 14] = \"ATXHeading6\";\n Type[Type[\"SetextHeading1\"] = 15] = \"SetextHeading1\";\n Type[Type[\"SetextHeading2\"] = 16] = \"SetextHeading2\";\n Type[Type[\"HTMLBlock\"] = 17] = \"HTMLBlock\";\n Type[Type[\"LinkReference\"] = 18] = \"LinkReference\";\n Type[Type[\"Paragraph\"] = 19] = \"Paragraph\";\n Type[Type[\"CommentBlock\"] = 20] = \"CommentBlock\";\n Type[Type[\"ProcessingInstructionBlock\"] = 21] = \"ProcessingInstructionBlock\";\n // Inline\n Type[Type[\"Escape\"] = 22] = \"Escape\";\n Type[Type[\"Entity\"] = 23] = \"Entity\";\n Type[Type[\"HardBreak\"] = 24] = \"HardBreak\";\n Type[Type[\"Emphasis\"] = 25] = \"Emphasis\";\n Type[Type[\"StrongEmphasis\"] = 26] = \"StrongEmphasis\";\n Type[Type[\"Link\"] = 27] = \"Link\";\n Type[Type[\"Image\"] = 28] = \"Image\";\n Type[Type[\"InlineCode\"] = 29] = \"InlineCode\";\n Type[Type[\"HTMLTag\"] = 30] = \"HTMLTag\";\n Type[Type[\"Comment\"] = 31] = \"Comment\";\n Type[Type[\"ProcessingInstruction\"] = 32] = \"ProcessingInstruction\";\n Type[Type[\"Autolink\"] = 33] = \"Autolink\";\n // Smaller tokens\n Type[Type[\"HeaderMark\"] = 34] = \"HeaderMark\";\n Type[Type[\"QuoteMark\"] = 35] = \"QuoteMark\";\n Type[Type[\"ListMark\"] = 36] = \"ListMark\";\n Type[Type[\"LinkMark\"] = 37] = \"LinkMark\";\n Type[Type[\"EmphasisMark\"] = 38] = \"EmphasisMark\";\n Type[Type[\"CodeMark\"] = 39] = \"CodeMark\";\n Type[Type[\"CodeText\"] = 40] = \"CodeText\";\n Type[Type[\"CodeInfo\"] = 41] = \"CodeInfo\";\n Type[Type[\"LinkTitle\"] = 42] = \"LinkTitle\";\n Type[Type[\"LinkLabel\"] = 43] = \"LinkLabel\";\n Type[Type[\"URL\"] = 44] = \"URL\";\n})(Type || (Type = {}));\n/**\nData structure used to accumulate a block's content during [leaf\nblock parsing](#BlockParser.leaf).\n*/\nclass LeafBlock {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the block.\n */\n start, \n /**\n The block's text content.\n */\n content) {\n this.start = start;\n this.content = content;\n /**\n @internal\n */\n this.marks = [];\n /**\n The block parsers active for this block.\n */\n this.parsers = [];\n }\n}\n/**\nData structure used during block-level per-line parsing.\n*/\nclass Line {\n constructor() {\n /**\n The line's full text.\n */\n this.text = \"\";\n /**\n The base indent provided by the composite contexts (that have\n been handled so far).\n */\n this.baseIndent = 0;\n /**\n The string position corresponding to the base indent.\n */\n this.basePos = 0;\n /**\n The number of contexts handled @internal\n */\n this.depth = 0;\n /**\n Any markers (i.e. block quote markers) parsed for the contexts. @internal\n */\n this.markers = [];\n /**\n The position of the next non-whitespace character beyond any\n list, blockquote, or other composite block markers.\n */\n this.pos = 0;\n /**\n The column of the next non-whitespace character.\n */\n this.indent = 0;\n /**\n The character code of the character after `pos`.\n */\n this.next = -1;\n }\n /**\n @internal\n */\n forward() {\n if (this.basePos > this.pos)\n this.forwardInner();\n }\n /**\n @internal\n */\n forwardInner() {\n let newPos = this.skipSpace(this.basePos);\n this.indent = this.countIndent(newPos, this.pos, this.indent);\n this.pos = newPos;\n this.next = newPos == this.text.length ? -1 : this.text.charCodeAt(newPos);\n }\n /**\n Skip whitespace after the given position, return the position of\n the next non-space character or the end of the line if there's\n only space after `from`.\n */\n skipSpace(from) { return skipSpace(this.text, from); }\n /**\n @internal\n */\n reset(text) {\n this.text = text;\n this.baseIndent = this.basePos = this.pos = this.indent = 0;\n this.forwardInner();\n this.depth = 1;\n while (this.markers.length)\n this.markers.pop();\n }\n /**\n Move the line's base position forward to the given position.\n This should only be called by composite [block\n parsers](#BlockParser.parse) or [markup skipping\n functions](#NodeSpec.composite).\n */\n moveBase(to) {\n this.basePos = to;\n this.baseIndent = this.countIndent(to, this.pos, this.indent);\n }\n /**\n Move the line's base position forward to the given _column_.\n */\n moveBaseColumn(indent) {\n this.baseIndent = indent;\n this.basePos = this.findColumn(indent);\n }\n /**\n Store a composite-block-level marker. Should be called from\n [markup skipping functions](#NodeSpec.composite) when they\n consume any non-whitespace characters.\n */\n addMarker(elt) {\n this.markers.push(elt);\n }\n /**\n Find the column position at `to`, optionally starting at a given\n position and column.\n */\n countIndent(to, from = 0, indent = 0) {\n for (let i = from; i < to; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return indent;\n }\n /**\n Find the position corresponding to the given column.\n */\n findColumn(goal) {\n let i = 0;\n for (let indent = 0; i < this.text.length && indent < goal; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return i;\n }\n /**\n @internal\n */\n scrub() {\n if (!this.baseIndent)\n return this.text;\n let result = \"\";\n for (let i = 0; i < this.basePos; i++)\n result += \" \";\n return result + this.text.slice(this.basePos);\n }\n}\nfunction skipForList(bl, cx, line) {\n if (line.pos == line.text.length ||\n (bl != cx.block && line.indent >= cx.stack[line.depth + 1].value + line.baseIndent))\n return true;\n if (line.indent >= line.baseIndent + 4)\n return false;\n let size = (bl.type == Type.OrderedList ? isOrderedList : isBulletList)(line, cx, false);\n return size > 0 &&\n (bl.type != Type.BulletList || isHorizontalRule(line, cx, false) < 0) &&\n line.text.charCodeAt(line.pos + size - 1) == bl.value;\n}\nconst DefaultSkipMarkup = {\n [Type.Blockquote](bl, cx, line) {\n if (line.next != 62 /* '>' */)\n return false;\n line.markers.push(elt(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1));\n line.moveBase(line.pos + (space(line.text.charCodeAt(line.pos + 1)) ? 2 : 1));\n bl.end = cx.lineStart + line.text.length;\n return true;\n },\n [Type.ListItem](bl, _cx, line) {\n if (line.indent < line.baseIndent + bl.value && line.next > -1)\n return false;\n line.moveBaseColumn(line.baseIndent + bl.value);\n return true;\n },\n [Type.OrderedList]: skipForList,\n [Type.BulletList]: skipForList,\n [Type.Document]() { return true; }\n};\nfunction space(ch) { return ch == 32 || ch == 9 || ch == 10 || ch == 13; }\nfunction skipSpace(line, i = 0) {\n while (i < line.length && space(line.charCodeAt(i)))\n i++;\n return i;\n}\nfunction skipSpaceBack(line, i, to) {\n while (i > to && space(line.charCodeAt(i - 1)))\n i--;\n return i;\n}\nfunction isFencedCode(line) {\n if (line.next != 96 && line.next != 126 /* '`~' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n if (pos < line.pos + 3)\n return -1;\n if (line.next == 96)\n for (let i = pos; i < line.text.length; i++)\n if (line.text.charCodeAt(i) == 96)\n return -1;\n return pos;\n}\nfunction isBlockquote(line) {\n return line.next != 62 /* '>' */ ? -1 : line.text.charCodeAt(line.pos + 1) == 32 ? 2 : 1;\n}\nfunction isHorizontalRule(line, cx, breaking) {\n if (line.next != 42 && line.next != 45 && line.next != 95 /* '_-*' */)\n return -1;\n let count = 1;\n for (let pos = line.pos + 1; pos < line.text.length; pos++) {\n let ch = line.text.charCodeAt(pos);\n if (ch == line.next)\n count++;\n else if (!space(ch))\n return -1;\n }\n // Setext headers take precedence\n if (breaking && line.next == 45 && isSetextUnderline(line) > -1 && line.depth == cx.stack.length &&\n cx.parser.leafBlockParsers.indexOf(DefaultLeafBlocks.SetextHeading) > -1)\n return -1;\n return count < 3 ? -1 : 1;\n}\nfunction inList(cx, type) {\n for (let i = cx.stack.length - 1; i >= 0; i--)\n if (cx.stack[i].type == type)\n return true;\n return false;\n}\nfunction isBulletList(line, cx, breaking) {\n return (line.next == 45 || line.next == 43 || line.next == 42 /* '-+*' */) &&\n (line.pos == line.text.length - 1 || space(line.text.charCodeAt(line.pos + 1))) &&\n (!breaking || inList(cx, Type.BulletList) || line.skipSpace(line.pos + 2) < line.text.length) ? 1 : -1;\n}\nfunction isOrderedList(line, cx, breaking) {\n let pos = line.pos, next = line.next;\n for (;;) {\n if (next >= 48 && next <= 57 /* '0-9' */)\n pos++;\n else\n break;\n if (pos == line.text.length)\n return -1;\n next = line.text.charCodeAt(pos);\n }\n if (pos == line.pos || pos > line.pos + 9 ||\n (next != 46 && next != 41 /* '.)' */) ||\n (pos < line.text.length - 1 && !space(line.text.charCodeAt(pos + 1))) ||\n breaking && !inList(cx, Type.OrderedList) &&\n (line.skipSpace(pos + 1) == line.text.length || pos > line.pos + 1 || line.next != 49 /* '1' */))\n return -1;\n return pos + 1 - line.pos;\n}\nfunction isAtxHeading(line) {\n if (line.next != 35 /* '#' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == 35)\n pos++;\n if (pos < line.text.length && line.text.charCodeAt(pos) != 32)\n return -1;\n let size = pos - line.pos;\n return size > 6 ? -1 : size;\n}\nfunction isSetextUnderline(line) {\n if (line.next != 45 && line.next != 61 /* '-=' */ || line.indent >= line.baseIndent + 4)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n let end = pos;\n while (pos < line.text.length && space(line.text.charCodeAt(pos)))\n pos++;\n return pos == line.text.length ? end : -1;\n}\nconst EmptyLine = /^[ \\t]*$/, CommentEnd = /-->/, ProcessingEnd = /\\?>/;\nconst HTMLBlockStyle = [\n [/^<(?:script|pre|style)(?:\\s|>|$)/i, /<\\/(?:script|pre|style)>/i],\n [/^\\s*<!--/, CommentEnd],\n [/^\\s*<\\?/, ProcessingEnd],\n [/^\\s*<![A-Z]/, />/],\n [/^\\s*<!\\[CDATA\\[/, /\\]\\]>/],\n [/^\\s*<\\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\s|\\/?>|$)/i, EmptyLine],\n [/^\\s*(?:<\\/[a-z][\\w-]*\\s*>|<[a-z][\\w-]*(\\s+[a-z:_][\\w-.]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*>)\\s*$/i, EmptyLine]\n];\nfunction isHTMLBlock(line, _cx, breaking) {\n if (line.next != 60 /* '<' */)\n return -1;\n let rest = line.text.slice(line.pos);\n for (let i = 0, e = HTMLBlockStyle.length - (breaking ? 1 : 0); i < e; i++)\n if (HTMLBlockStyle[i][0].test(rest))\n return i;\n return -1;\n}\nfunction getListIndent(line, pos) {\n let indentAfter = line.countIndent(pos, line.pos, line.indent);\n let indented = line.countIndent(line.skipSpace(pos), pos, indentAfter);\n return indented >= indentAfter + 5 ? indentAfter + 1 : indented;\n}\nfunction addCodeText(marks, from, to) {\n let last = marks.length - 1;\n if (last >= 0 && marks[last].to == from && marks[last].type == Type.CodeText)\n marks[last].to = to;\n else\n marks.push(elt(Type.CodeText, from, to));\n}\n// Rules for parsing blocks. A return value of false means the rule\n// doesn't apply here, true means it does. When true is returned and\n// `p.line` has been updated, the rule is assumed to have consumed a\n// leaf block. Otherwise, it is assumed to have opened a context.\nconst DefaultBlockParsers = {\n LinkReference: undefined,\n IndentedCode(cx, line) {\n let base = line.baseIndent + 4;\n if (line.indent < base)\n return false;\n let start = line.findColumn(base);\n let from = cx.lineStart + start, to = cx.lineStart + line.text.length;\n let marks = [], pendingMarks = [];\n addCodeText(marks, from, to);\n while (cx.nextLine() && line.depth >= cx.stack.length) {\n if (line.pos == line.text.length) { // Empty\n addCodeText(pendingMarks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n pendingMarks.push(m);\n }\n else if (line.indent < base) {\n break;\n }\n else {\n if (pendingMarks.length) {\n for (let m of pendingMarks) {\n if (m.type == Type.CodeText)\n addCodeText(marks, m.from, m.to);\n else\n marks.push(m);\n }\n pendingMarks = [];\n }\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n marks.push(m);\n to = cx.lineStart + line.text.length;\n let codeStart = cx.lineStart + line.findColumn(line.baseIndent + 4);\n if (codeStart < to)\n addCodeText(marks, codeStart, to);\n }\n }\n if (pendingMarks.length) {\n pendingMarks = pendingMarks.filter(m => m.type != Type.CodeText);\n if (pendingMarks.length)\n line.markers = pendingMarks.concat(line.markers);\n }\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(Type.CodeBlock, to - from), from);\n return true;\n },\n FencedCode(cx, line) {\n let fenceEnd = isFencedCode(line);\n if (fenceEnd < 0)\n return false;\n let from = cx.lineStart + line.pos, ch = line.next, len = fenceEnd - line.pos;\n let infoFrom = line.skipSpace(fenceEnd), infoTo = skipSpaceBack(line.text, line.text.length, infoFrom);\n let marks = [elt(Type.CodeMark, from, from + len)];\n if (infoFrom < infoTo)\n marks.push(elt(Type.CodeInfo, cx.lineStart + infoFrom, cx.lineStart + infoTo));\n for (let first = true, empty = true, hasLine = false; cx.nextLine() && line.depth >= cx.stack.length; first = false) {\n let i = line.pos;\n if (line.indent - line.baseIndent < 4)\n while (i < line.text.length && line.text.charCodeAt(i) == ch)\n i++;\n if (i - line.pos >= len && line.skipSpace(i) == line.text.length) {\n for (let m of line.markers)\n marks.push(m);\n if (empty && hasLine)\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n marks.push(elt(Type.CodeMark, cx.lineStart + line.pos, cx.lineStart + i));\n cx.nextLine();\n break;\n }\n else {\n hasLine = true;\n if (!first) {\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n empty = false;\n }\n for (let m of line.markers)\n marks.push(m);\n let textStart = cx.lineStart + line.basePos, textEnd = cx.lineStart + line.text.length;\n if (textStart < textEnd) {\n addCodeText(marks, textStart, textEnd);\n empty = false;\n }\n }\n }\n cx.addNode(cx.buffer.writeElements(marks, -from)\n .finish(Type.FencedCode, cx.prevLineEnd() - from), from);\n return true;\n },\n Blockquote(cx, line) {\n let size = isBlockquote(line);\n if (size < 0)\n return false;\n cx.startContext(Type.Blockquote, line.pos);\n cx.addNode(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1);\n line.moveBase(line.pos + size);\n return null;\n },\n HorizontalRule(cx, line) {\n if (isHorizontalRule(line, cx, false) < 0)\n return false;\n let from = cx.lineStart + line.pos;\n cx.nextLine();\n cx.addNode(Type.HorizontalRule, from);\n return true;\n },\n BulletList(cx, line) {\n let size = isBulletList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.BulletList)\n cx.startContext(Type.BulletList, line.basePos, line.next);\n let newBase = getListIndent(line, line.pos + 1);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n OrderedList(cx, line) {\n let size = isOrderedList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.OrderedList)\n cx.startContext(Type.OrderedList, line.basePos, line.text.charCodeAt(line.pos + size - 1));\n let newBase = getListIndent(line, line.pos + size);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n ATXHeading(cx, line) {\n let size = isAtxHeading(line);\n if (size < 0)\n return false;\n let off = line.pos, from = cx.lineStart + off;\n let endOfSpace = skipSpaceBack(line.text, line.text.length, off), after = endOfSpace;\n while (after > off && line.text.charCodeAt(after - 1) == line.next)\n after--;\n if (after == endOfSpace || after == off || !space(line.text.charCodeAt(after - 1)))\n after = line.text.length;\n let buf = cx.buffer\n .write(Type.HeaderMark, 0, size)\n .writeElements(cx.parser.parseInline(line.text.slice(off + size + 1, after), from + size + 1), -from);\n if (after < line.text.length)\n buf.write(Type.HeaderMark, after - off, endOfSpace - off);\n let node = buf.finish(Type.ATXHeading1 - 1 + size, line.text.length - off);\n cx.nextLine();\n cx.addNode(node, from);\n return true;\n },\n HTMLBlock(cx, line) {\n let type = isHTMLBlock(line, cx, false);\n if (type < 0)\n return false;\n let from = cx.lineStart + line.pos, end = HTMLBlockStyle[type][1];\n let marks = [], trailing = end != EmptyLine;\n while (!end.test(line.text) && cx.nextLine()) {\n if (line.depth < cx.stack.length) {\n trailing = false;\n break;\n }\n for (let m of line.markers)\n marks.push(m);\n }\n if (trailing)\n cx.nextLine();\n let nodeType = end == CommentEnd ? Type.CommentBlock : end == ProcessingEnd ? Type.ProcessingInstructionBlock : Type.HTMLBlock;\n let to = cx.prevLineEnd();\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(nodeType, to - from), from);\n return true;\n },\n SetextHeading: undefined // Specifies relative precedence for block-continue function\n};\n// This implements a state machine that incrementally parses link references. At each\n// next line, it looks ahead to see if the line continues the reference or not. If it\n// doesn't and a valid link is available ending before that line, it finishes that.\n// Similarly, on `finish` (when the leaf is terminated by external circumstances), it\n// creates a link reference if there's a valid reference up to the current point.\nclass LinkReferenceParser {\n constructor(leaf) {\n this.stage = 0 /* RefStage.Start */;\n this.elts = [];\n this.pos = 0;\n this.start = leaf.start;\n this.advance(leaf.content);\n }\n nextLine(cx, line, leaf) {\n if (this.stage == -1 /* RefStage.Failed */)\n return false;\n let content = leaf.content + \"\\n\" + line.scrub();\n let finish = this.advance(content);\n if (finish > -1 && finish < content.length)\n return this.complete(cx, leaf, finish);\n return false;\n }\n finish(cx, leaf) {\n if ((this.stage == 2 /* RefStage.Link */ || this.stage == 3 /* RefStage.Title */) && skipSpace(leaf.content, this.pos) == leaf.content.length)\n return this.complete(cx, leaf, leaf.content.length);\n return false;\n }\n complete(cx, leaf, len) {\n cx.addLeafElement(leaf, elt(Type.LinkReference, this.start, this.start + len, this.elts));\n return true;\n }\n nextStage(elt) {\n if (elt) {\n this.pos = elt.to - this.start;\n this.elts.push(elt);\n this.stage++;\n return true;\n }\n if (elt === false)\n this.stage = -1 /* RefStage.Failed */;\n return false;\n }\n advance(content) {\n for (;;) {\n if (this.stage == -1 /* RefStage.Failed */) {\n return -1;\n }\n else if (this.stage == 0 /* RefStage.Start */) {\n if (!this.nextStage(parseLinkLabel(content, this.pos, this.start, true)))\n return -1;\n if (content.charCodeAt(this.pos) != 58 /* ':' */)\n return this.stage = -1 /* RefStage.Failed */;\n this.elts.push(elt(Type.LinkMark, this.pos + this.start, this.pos + this.start + 1));\n this.pos++;\n }\n else if (this.stage == 1 /* RefStage.Label */) {\n if (!this.nextStage(parseURL(content, skipSpace(content, this.pos), this.start)))\n return -1;\n }\n else if (this.stage == 2 /* RefStage.Link */) {\n let skip = skipSpace(content, this.pos), end = 0;\n if (skip > this.pos) {\n let title = parseLinkTitle(content, skip, this.start);\n if (title) {\n let titleEnd = lineEnd(content, title.to - this.start);\n if (titleEnd > 0) {\n this.nextStage(title);\n end = titleEnd;\n }\n }\n }\n if (!end)\n end = lineEnd(content, this.pos);\n return end > 0 && end < content.length ? end : -1;\n }\n else { // RefStage.Title\n return lineEnd(content, this.pos);\n }\n }\n }\n}\nfunction lineEnd(text, pos) {\n for (; pos < text.length; pos++) {\n let next = text.charCodeAt(pos);\n if (next == 10)\n break;\n if (!space(next))\n return -1;\n }\n return pos;\n}\nclass SetextHeadingParser {\n nextLine(cx, line, leaf) {\n let underline = line.depth < cx.stack.length ? -1 : isSetextUnderline(line);\n let next = line.next;\n if (underline < 0)\n return false;\n let underlineMark = elt(Type.HeaderMark, cx.lineStart + line.pos, cx.lineStart + underline);\n cx.nextLine();\n cx.addLeafElement(leaf, elt(next == 61 ? Type.SetextHeading1 : Type.SetextHeading2, leaf.start, cx.prevLineEnd(), [\n ...cx.parser.parseInline(leaf.content, leaf.start),\n underlineMark\n ]));\n return true;\n }\n finish() {\n return false;\n }\n}\nconst DefaultLeafBlocks = {\n LinkReference(_, leaf) { return leaf.content.charCodeAt(0) == 91 /* '[' */ ? new LinkReferenceParser(leaf) : null; },\n SetextHeading() { return new SetextHeadingParser; }\n};\nconst DefaultEndLeaf = [\n (_, line) => isAtxHeading(line) >= 0,\n (_, line) => isFencedCode(line) >= 0,\n (_, line) => isBlockquote(line) >= 0,\n (p, line) => isBulletList(line, p, true) >= 0,\n (p, line) => isOrderedList(line, p, true) >= 0,\n (p, line) => isHorizontalRule(line, p, true) >= 0,\n (p, line) => isHTMLBlock(line, p, true) >= 0\n];\nconst scanLineResult = { text: \"\", end: 0 };\n/**\nBlock-level parsing functions get access to this context object.\n*/\nclass BlockContext {\n /**\n @internal\n */\n constructor(\n /**\n The parser configuration used.\n */\n parser, \n /**\n @internal\n */\n input, fragments, \n /**\n @internal\n */\n ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.line = new Line();\n this.atEnd = false;\n /**\n For reused nodes on gaps, we can't directly put the original\n node into the tree, since that may be bigger than its parent.\n When this happens, we create a dummy tree that is replaced by\n the proper node in `injectGaps` @internal\n */\n this.reusePlaceholders = new Map;\n this.stoppedAt = null;\n /**\n The range index that absoluteLineStart points into @internal\n */\n this.rangeI = 0;\n this.to = ranges[ranges.length - 1].to;\n this.lineStart = this.absoluteLineStart = this.absoluteLineEnd = ranges[0].from;\n this.block = CompositeBlock.create(Type.Document, 0, this.lineStart, 0, 0);\n this.stack = [this.block];\n this.fragments = fragments.length ? new FragmentCursor(fragments, input) : null;\n this.readLine();\n }\n get parsedPos() {\n return this.absoluteLineStart;\n }\n advance() {\n if (this.stoppedAt != null && this.absoluteLineStart > this.stoppedAt)\n return this.finish();\n let { line } = this;\n for (;;) {\n for (let markI = 0;;) {\n let next = line.depth < this.stack.length ? this.stack[this.stack.length - 1] : null;\n while (markI < line.markers.length && (!next || line.markers[markI].from < next.end)) {\n let mark = line.markers[markI++];\n this.addNode(mark.type, mark.from, mark.to);\n }\n if (!next)\n break;\n this.finishContext();\n }\n if (line.pos < line.text.length)\n break;\n // Empty line\n if (!this.nextLine())\n return this.finish();\n }\n if (this.fragments && this.reuseFragment(line.basePos))\n return null;\n start: for (;;) {\n for (let type of this.parser.blockParsers)\n if (type) {\n let result = type(this, line);\n if (result != false) {\n if (result == true)\n return null;\n line.forward();\n continue start;\n }\n }\n break;\n }\n let leaf = new LeafBlock(this.lineStart + line.pos, line.text.slice(line.pos));\n for (let parse of this.parser.leafBlockParsers)\n if (parse) {\n let parser = parse(this, leaf);\n if (parser)\n leaf.parsers.push(parser);\n }\n lines: while (this.nextLine()) {\n if (line.pos == line.text.length)\n break;\n if (line.indent < line.baseIndent + 4) {\n for (let stop of this.parser.endLeafBlock)\n if (stop(this, line, leaf))\n break lines;\n }\n for (let parser of leaf.parsers)\n if (parser.nextLine(this, line, leaf))\n return null;\n leaf.content += \"\\n\" + line.scrub();\n for (let m of line.markers)\n leaf.marks.push(m);\n }\n this.finishLeaf(leaf);\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n reuseFragment(start) {\n if (!this.fragments.moveTo(this.absoluteLineStart + start, this.absoluteLineStart) ||\n !this.fragments.matches(this.block.hash))\n return false;\n let taken = this.fragments.takeNodes(this);\n if (!taken)\n return false;\n this.absoluteLineStart += taken;\n this.lineStart = toRelative(this.absoluteLineStart, this.ranges);\n this.moveRangeI();\n if (this.absoluteLineStart < this.to) {\n this.lineStart++;\n this.absoluteLineStart++;\n this.readLine();\n }\n else {\n this.atEnd = true;\n this.readLine();\n }\n return true;\n }\n /**\n The number of parent blocks surrounding the current block.\n */\n get depth() {\n return this.stack.length;\n }\n /**\n Get the type of the parent block at the given depth. When no\n depth is passed, return the type of the innermost parent.\n */\n parentType(depth = this.depth - 1) {\n return this.parser.nodeSet.types[this.stack[depth].type];\n }\n /**\n Move to the next input line. This should only be called by\n (non-composite) [block parsers](#BlockParser.parse) that consume\n the line directly, or leaf block parser\n [`nextLine`](#LeafBlockParser.nextLine) methods when they\n consume the current line (and return true).\n */\n nextLine() {\n this.lineStart += this.line.text.length;\n if (this.absoluteLineEnd >= this.to) {\n this.absoluteLineStart = this.absoluteLineEnd;\n this.atEnd = true;\n this.readLine();\n return false;\n }\n else {\n this.lineStart++;\n this.absoluteLineStart = this.absoluteLineEnd + 1;\n this.moveRangeI();\n this.readLine();\n return true;\n }\n }\n /**\n Retrieve the text of the line after the current one, without\n actually moving the context's current line forward.\n */\n peekLine() {\n return this.scanLine(this.absoluteLineEnd + 1).text;\n }\n moveRangeI() {\n while (this.rangeI < this.ranges.length - 1 && this.absoluteLineStart >= this.ranges[this.rangeI].to) {\n this.rangeI++;\n this.absoluteLineStart = Math.max(this.absoluteLineStart, this.ranges[this.rangeI].from);\n }\n }\n /**\n @internal\n Collect the text for the next line.\n */\n scanLine(start) {\n let r = scanLineResult;\n r.end = start;\n if (start >= this.to) {\n r.text = \"\";\n }\n else {\n r.text = this.lineChunkAt(start);\n r.end += r.text.length;\n if (this.ranges.length > 1) {\n let textOffset = this.absoluteLineStart, rangeI = this.rangeI;\n while (this.ranges[rangeI].to < r.end) {\n rangeI++;\n let nextFrom = this.ranges[rangeI].from;\n let after = this.lineChunkAt(nextFrom);\n r.end = nextFrom + after.length;\n r.text = r.text.slice(0, this.ranges[rangeI - 1].to - textOffset) + after;\n textOffset = r.end - r.text.length;\n }\n }\n }\n return r;\n }\n /**\n @internal\n Populate this.line with the content of the next line. Skip\n leading characters covered by composite blocks.\n */\n readLine() {\n let { line } = this, { text, end } = this.scanLine(this.absoluteLineStart);\n this.absoluteLineEnd = end;\n line.reset(text);\n for (; line.depth < this.stack.length; line.depth++) {\n let cx = this.stack[line.depth], handler = this.parser.skipContextMarkup[cx.type];\n if (!handler)\n throw new Error(\"Unhandled block context \" + Type[cx.type]);\n let marks = this.line.markers.length;\n if (!handler(cx, this, line)) {\n if (this.line.markers.length > marks)\n cx.end = this.line.markers[this.line.markers.length - 1].to;\n line.forward();\n break;\n }\n line.forward();\n }\n }\n lineChunkAt(pos) {\n let next = this.input.chunk(pos), text;\n if (!this.input.lineChunks) {\n let eol = next.indexOf(\"\\n\");\n text = eol < 0 ? next : next.slice(0, eol);\n }\n else {\n text = next == \"\\n\" ? \"\" : next;\n }\n return pos + text.length > this.to ? text.slice(0, this.to - pos) : text;\n }\n /**\n The end position of the previous line.\n */\n prevLineEnd() { return this.atEnd ? this.lineStart : this.lineStart - 1; }\n /**\n @internal\n */\n startContext(type, start, value = 0) {\n this.block = CompositeBlock.create(type, value, this.lineStart + start, this.block.hash, this.lineStart + this.line.text.length);\n this.stack.push(this.block);\n }\n /**\n Start a composite block. Should only be called from [block\n parser functions](#BlockParser.parse) that return null.\n */\n startComposite(type, start, value = 0) {\n this.startContext(this.parser.getNodeType(type), start, value);\n }\n /**\n @internal\n */\n addNode(block, from, to) {\n if (typeof block == \"number\")\n block = new Tree(this.parser.nodeSet.types[block], none, none, (to !== null && to !== void 0 ? to : this.prevLineEnd()) - from);\n this.block.addChild(block, from - this.block.from);\n }\n /**\n Add a block element. Can be called by [block\n parsers](#BlockParser.parse).\n */\n addElement(elt) {\n this.block.addChild(elt.toTree(this.parser.nodeSet), elt.from - this.block.from);\n }\n /**\n Add a block element from a [leaf parser](#LeafBlockParser). This\n makes sure any extra composite block markup (such as blockquote\n markers) inside the block are also added to the syntax tree.\n */\n addLeafElement(leaf, elt) {\n this.addNode(this.buffer\n .writeElements(injectMarks(elt.children, leaf.marks), -elt.from)\n .finish(elt.type, elt.to - elt.from), elt.from);\n }\n /**\n @internal\n */\n finishContext() {\n let cx = this.stack.pop();\n let top = this.stack[this.stack.length - 1];\n top.addChild(cx.toTree(this.parser.nodeSet), cx.from - top.from);\n this.block = top;\n }\n finish() {\n while (this.stack.length > 1)\n this.finishContext();\n return this.addGaps(this.block.toTree(this.parser.nodeSet, this.lineStart));\n }\n addGaps(tree) {\n return this.ranges.length > 1 ?\n injectGaps(this.ranges, 0, tree.topNode, this.ranges[0].from, this.reusePlaceholders) : tree;\n }\n /**\n @internal\n */\n finishLeaf(leaf) {\n for (let parser of leaf.parsers)\n if (parser.finish(this, leaf))\n return;\n let inline = injectMarks(this.parser.parseInline(leaf.content, leaf.start), leaf.marks);\n this.addNode(this.buffer\n .writeElements(inline, -leaf.start)\n .finish(Type.Paragraph, leaf.content.length), leaf.start);\n }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n /**\n @internal\n */\n get buffer() { return new Buffer(this.parser.nodeSet); }\n}\nfunction injectGaps(ranges, rangeI, tree, offset, dummies) {\n let rangeEnd = ranges[rangeI].to;\n let children = [], positions = [], start = tree.from + offset;\n function movePastNext(upto, inclusive) {\n while (inclusive ? upto >= rangeEnd : upto > rangeEnd) {\n let size = ranges[rangeI + 1].from - rangeEnd;\n offset += size;\n upto += size;\n rangeI++;\n rangeEnd = ranges[rangeI].to;\n }\n }\n for (let ch = tree.firstChild; ch; ch = ch.nextSibling) {\n movePastNext(ch.from + offset, true);\n let from = ch.from + offset, node, reuse = dummies.get(ch.tree);\n if (reuse) {\n node = reuse;\n }\n else if (ch.to + offset > rangeEnd) {\n node = injectGaps(ranges, rangeI, ch, offset, dummies);\n movePastNext(ch.to + offset, false);\n }\n else {\n node = ch.toTree();\n }\n children.push(node);\n positions.push(from - start);\n }\n movePastNext(tree.to + offset, false);\n return new Tree(tree.type, children, positions, tree.to + offset - start, tree.tree ? tree.tree.propValues : undefined);\n}\n/**\nA Markdown parser configuration.\n*/\nclass MarkdownParser extends Parser {\n /**\n @internal\n */\n constructor(\n /**\n The parser's syntax [node\n types](https://lezer.codemirror.net/docs/ref/#common.NodeSet).\n */\n nodeSet, \n /**\n @internal\n */\n blockParsers, \n /**\n @internal\n */\n leafBlockParsers, \n /**\n @internal\n */\n blockNames, \n /**\n @internal\n */\n endLeafBlock, \n /**\n @internal\n */\n skipContextMarkup, \n /**\n @internal\n */\n inlineParsers, \n /**\n @internal\n */\n inlineNames, \n /**\n @internal\n */\n wrappers) {\n super();\n this.nodeSet = nodeSet;\n this.blockParsers = blockParsers;\n this.leafBlockParsers = leafBlockParsers;\n this.blockNames = blockNames;\n this.endLeafBlock = endLeafBlock;\n this.skipContextMarkup = skipContextMarkup;\n this.inlineParsers = inlineParsers;\n this.inlineNames = inlineNames;\n this.wrappers = wrappers;\n /**\n @internal\n */\n this.nodeTypes = Object.create(null);\n for (let t of nodeSet.types)\n this.nodeTypes[t.name] = t.id;\n }\n createParse(input, fragments, ranges) {\n let parse = new BlockContext(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Reconfigure the parser.\n */\n configure(spec) {\n let config = resolveConfig(spec);\n if (!config)\n return this;\n let { nodeSet, skipContextMarkup } = this;\n let blockParsers = this.blockParsers.slice(), leafBlockParsers = this.leafBlockParsers.slice(), blockNames = this.blockNames.slice(), inlineParsers = this.inlineParsers.slice(), inlineNames = this.inlineNames.slice(), endLeafBlock = this.endLeafBlock.slice(), wrappers = this.wrappers;\n if (nonEmpty(config.defineNodes)) {\n skipContextMarkup = Object.assign({}, skipContextMarkup);\n let nodeTypes = nodeSet.types.slice(), styles;\n for (let s of config.defineNodes) {\n let { name, block, composite, style } = typeof s == \"string\" ? { name: s } : s;\n if (nodeTypes.some(t => t.name == name))\n continue;\n if (composite)\n skipContextMarkup[nodeTypes.length] =\n (bl, cx, line) => composite(cx, line, bl.value);\n let id = nodeTypes.length;\n let group = composite ? [\"Block\", \"BlockContext\"] : !block ? undefined\n : id >= Type.ATXHeading1 && id <= Type.SetextHeading2 ? [\"Block\", \"LeafBlock\", \"Heading\"] : [\"Block\", \"LeafBlock\"];\n nodeTypes.push(NodeType.define({\n id,\n name,\n props: group && [[NodeProp.group, group]]\n }));\n if (style) {\n if (!styles)\n styles = {};\n if (Array.isArray(style) || style instanceof Tag)\n styles[name] = style;\n else\n Object.assign(styles, style);\n }\n }\n nodeSet = new NodeSet(nodeTypes);\n if (styles)\n nodeSet = nodeSet.extend(styleTags(styles));\n }\n if (nonEmpty(config.props))\n nodeSet = nodeSet.extend(...config.props);\n if (nonEmpty(config.remove)) {\n for (let rm of config.remove) {\n let block = this.blockNames.indexOf(rm), inline = this.inlineNames.indexOf(rm);\n if (block > -1)\n blockParsers[block] = leafBlockParsers[block] = undefined;\n if (inline > -1)\n inlineParsers[inline] = undefined;\n }\n }\n if (nonEmpty(config.parseBlock)) {\n for (let spec of config.parseBlock) {\n let found = blockNames.indexOf(spec.name);\n if (found > -1) {\n blockParsers[found] = spec.parse;\n leafBlockParsers[found] = spec.leaf;\n }\n else {\n let pos = spec.before ? findName(blockNames, spec.before)\n : spec.after ? findName(blockNames, spec.after) + 1 : blockNames.length - 1;\n blockParsers.splice(pos, 0, spec.parse);\n leafBlockParsers.splice(pos, 0, spec.leaf);\n blockNames.splice(pos, 0, spec.name);\n }\n if (spec.endLeaf)\n endLeafBlock.push(spec.endLeaf);\n }\n }\n if (nonEmpty(config.parseInline)) {\n for (let spec of config.parseInline) {\n let found = inlineNames.indexOf(spec.name);\n if (found > -1) {\n inlineParsers[found] = spec.parse;\n }\n else {\n let pos = spec.before ? findName(inlineNames, spec.before)\n : spec.after ? findName(inlineNames, spec.after) + 1 : inlineNames.length - 1;\n inlineParsers.splice(pos, 0, spec.parse);\n inlineNames.splice(pos, 0, spec.name);\n }\n }\n }\n if (config.wrap)\n wrappers = wrappers.concat(config.wrap);\n return new MarkdownParser(nodeSet, blockParsers, leafBlockParsers, blockNames, endLeafBlock, skipContextMarkup, inlineParsers, inlineNames, wrappers);\n }\n /**\n @internal\n */\n getNodeType(name) {\n let found = this.nodeTypes[name];\n if (found == null)\n throw new RangeError(`Unknown node type '${name}'`);\n return found;\n }\n /**\n Parse the given piece of inline text at the given offset,\n returning an array of [`Element`](#Element) objects representing\n the inline content.\n */\n parseInline(text, offset) {\n let cx = new InlineContext(this, text, offset);\n outer: for (let pos = offset; pos < cx.end;) {\n let next = cx.char(pos);\n for (let token of this.inlineParsers)\n if (token) {\n let result = token(cx, next, pos);\n if (result >= 0) {\n pos = result;\n continue outer;\n }\n }\n pos++;\n }\n return cx.resolveMarkers(0);\n }\n}\nfunction nonEmpty(a) {\n return a != null && a.length > 0;\n}\nfunction resolveConfig(spec) {\n if (!Array.isArray(spec))\n return spec;\n if (spec.length == 0)\n return null;\n let conf = resolveConfig(spec[0]);\n if (spec.length == 1)\n return conf;\n let rest = resolveConfig(spec.slice(1));\n if (!rest || !conf)\n return conf || rest;\n let conc = (a, b) => (a || none).concat(b || none);\n let wrapA = conf.wrap, wrapB = rest.wrap;\n return {\n props: conc(conf.props, rest.props),\n defineNodes: conc(conf.defineNodes, rest.defineNodes),\n parseBlock: conc(conf.parseBlock, rest.parseBlock),\n parseInline: conc(conf.parseInline, rest.parseInline),\n remove: conc(conf.remove, rest.remove),\n wrap: !wrapA ? wrapB : !wrapB ? wrapA :\n (inner, input, fragments, ranges) => wrapA(wrapB(inner, input, fragments, ranges), input, fragments, ranges)\n };\n}\nfunction findName(names, name) {\n let found = names.indexOf(name);\n if (found < 0)\n throw new RangeError(`Position specified relative to unknown parser ${name}`);\n return found;\n}\nlet nodeTypes = [NodeType.none];\nfor (let i = 1, name; name = Type[i]; i++) {\n nodeTypes[i] = NodeType.define({\n id: i,\n name,\n props: i >= Type.Escape ? [] : [[NodeProp.group, i in DefaultSkipMarkup ? [\"Block\", \"BlockContext\"] : [\"Block\", \"LeafBlock\"]]],\n top: name == \"Document\"\n });\n}\nconst none = [];\nclass Buffer {\n constructor(nodeSet) {\n this.nodeSet = nodeSet;\n this.content = [];\n this.nodes = [];\n }\n write(type, from, to, children = 0) {\n this.content.push(type, from, to, 4 + children * 4);\n return this;\n }\n writeElements(elts, offset = 0) {\n for (let e of elts)\n e.writeTo(this, offset);\n return this;\n }\n finish(type, length) {\n return Tree.build({\n buffer: this.content,\n nodeSet: this.nodeSet,\n reused: this.nodes,\n topID: type,\n length\n });\n }\n}\n/**\nElements are used to compose syntax nodes during parsing.\n*/\nclass Element {\n /**\n @internal\n */\n constructor(\n /**\n The node's\n [id](https://lezer.codemirror.net/docs/ref/#common.NodeType.id).\n */\n type, \n /**\n The start of the node, as an offset from the start of the document.\n */\n from, \n /**\n The end of the node.\n */\n to, \n /**\n The node's child nodes @internal\n */\n children = none) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.children = children;\n }\n /**\n @internal\n */\n writeTo(buf, offset) {\n let startOff = buf.content.length;\n buf.writeElements(this.children, offset);\n buf.content.push(this.type, this.from + offset, this.to + offset, buf.content.length + 4 - startOff);\n }\n /**\n @internal\n */\n toTree(nodeSet) {\n return new Buffer(nodeSet).writeElements(this.children, -this.from).finish(this.type, this.to - this.from);\n }\n}\nclass TreeElement {\n constructor(tree, from) {\n this.tree = tree;\n this.from = from;\n }\n get to() { return this.from + this.tree.length; }\n get type() { return this.tree.type.id; }\n get children() { return none; }\n writeTo(buf, offset) {\n buf.nodes.push(this.tree);\n buf.content.push(buf.nodes.length - 1, this.from + offset, this.to + offset, -1);\n }\n toTree() { return this.tree; }\n}\nfunction elt(type, from, to, children) {\n return new Element(type, from, to, children);\n}\nconst EmphasisUnderscore = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst EmphasisAsterisk = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst LinkStart = {}, ImageStart = {};\nclass InlineDelimiter {\n constructor(type, from, to, side) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.side = side;\n }\n}\nconst Escapable = \"!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~\";\nlet Punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\u2010-\\u2027]/;\ntry {\n Punctuation = new RegExp(\"[\\\\p{S}|\\\\p{P}]\", \"u\");\n}\ncatch (_) { }\nconst DefaultInline = {\n Escape(cx, next, start) {\n if (next != 92 /* '\\\\' */ || start == cx.end - 1)\n return -1;\n let escaped = cx.char(start + 1);\n for (let i = 0; i < Escapable.length; i++)\n if (Escapable.charCodeAt(i) == escaped)\n return cx.append(elt(Type.Escape, start, start + 2));\n return -1;\n },\n Entity(cx, next, start) {\n if (next != 38 /* '&' */)\n return -1;\n let m = /^(?:#\\d+|#x[a-f\\d]+|\\w+);/i.exec(cx.slice(start + 1, start + 31));\n return m ? cx.append(elt(Type.Entity, start, start + 1 + m[0].length)) : -1;\n },\n InlineCode(cx, next, start) {\n if (next != 96 /* '`' */ || start && cx.char(start - 1) == 96)\n return -1;\n let pos = start + 1;\n while (pos < cx.end && cx.char(pos) == 96)\n pos++;\n let size = pos - start, curSize = 0;\n for (; pos < cx.end; pos++) {\n if (cx.char(pos) == 96) {\n curSize++;\n if (curSize == size && cx.char(pos + 1) != 96)\n return cx.append(elt(Type.InlineCode, start, pos + 1, [\n elt(Type.CodeMark, start, start + size),\n elt(Type.CodeMark, pos + 1 - size, pos + 1)\n ]));\n }\n else {\n curSize = 0;\n }\n }\n return -1;\n },\n HTMLTag(cx, next, start) {\n if (next != 60 /* '<' */ || start == cx.end - 1)\n return -1;\n let after = cx.slice(start + 1, cx.end);\n let url = /^(?:[a-z][-\\w+.]+:[^\\s>]+|[a-z\\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?(?:\\.[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?)*)>/i.exec(after);\n if (url) {\n return cx.append(elt(Type.Autolink, start, start + 1 + url[0].length, [\n elt(Type.LinkMark, start, start + 1),\n // url[0] includes the closing bracket, so exclude it from this slice\n elt(Type.URL, start + 1, start + url[0].length),\n elt(Type.LinkMark, start + url[0].length, start + 1 + url[0].length)\n ]));\n }\n let comment = /^!--[^>](?:-[^-]|[^-])*?-->/i.exec(after);\n if (comment)\n return cx.append(elt(Type.Comment, start, start + 1 + comment[0].length));\n let procInst = /^\\?[^]*?\\?>/.exec(after);\n if (procInst)\n return cx.append(elt(Type.ProcessingInstruction, start, start + 1 + procInst[0].length));\n let m = /^(?:![A-Z][^]*?>|!\\[CDATA\\[[^]*?\\]\\]>|\\/\\s*[a-zA-Z][\\w-]*\\s*>|\\s*[a-zA-Z][\\w-]*(\\s+[a-zA-Z:_][\\w-.:]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*(\\/\\s*)?>)/.exec(after);\n if (!m)\n return -1;\n return cx.append(elt(Type.HTMLTag, start, start + 1 + m[0].length));\n },\n Emphasis(cx, next, start) {\n if (next != 95 && next != 42)\n return -1;\n let pos = start + 1;\n while (cx.char(pos) == next)\n pos++;\n let before = cx.slice(start - 1, start), after = cx.slice(pos, pos + 1);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let leftFlanking = !sAfter && (!pAfter || sBefore || pBefore);\n let rightFlanking = !sBefore && (!pBefore || sAfter || pAfter);\n let canOpen = leftFlanking && (next == 42 || !rightFlanking || pBefore);\n let canClose = rightFlanking && (next == 42 || !leftFlanking || pAfter);\n return cx.append(new InlineDelimiter(next == 95 ? EmphasisUnderscore : EmphasisAsterisk, start, pos, (canOpen ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (canClose ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n },\n HardBreak(cx, next, start) {\n if (next == 92 /* '\\\\' */ && cx.char(start + 1) == 10 /* '\\n' */)\n return cx.append(elt(Type.HardBreak, start, start + 2));\n if (next == 32) {\n let pos = start + 1;\n while (cx.char(pos) == 32)\n pos++;\n if (cx.char(pos) == 10 && pos >= start + 2)\n return cx.append(elt(Type.HardBreak, start, pos + 1));\n }\n return -1;\n },\n Link(cx, next, start) {\n return next == 91 /* '[' */ ? cx.append(new InlineDelimiter(LinkStart, start, start + 1, 1 /* Mark.Open */)) : -1;\n },\n Image(cx, next, start) {\n return next == 33 /* '!' */ && cx.char(start + 1) == 91 /* '[' */\n ? cx.append(new InlineDelimiter(ImageStart, start, start + 2, 1 /* Mark.Open */)) : -1;\n },\n LinkEnd(cx, next, start) {\n if (next != 93 /* ']' */)\n return -1;\n // Scanning back to the next link/image start marker\n for (let i = cx.parts.length - 1; i >= 0; i--) {\n let part = cx.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart)) {\n // If this one has been set invalid (because it would produce\n // a nested link) or there's no valid link here ignore both.\n if (!part.side || cx.skipSpace(part.to) == start && !/[(\\[]/.test(cx.slice(start + 1, start + 2))) {\n cx.parts[i] = null;\n return -1;\n }\n // Finish the content and replace the entire range in\n // this.parts with the link/image node.\n let content = cx.takeContent(i);\n let link = cx.parts[i] = finishLink(cx, content, part.type == LinkStart ? Type.Link : Type.Image, part.from, start + 1);\n // Set any open-link markers before this link to invalid.\n if (part.type == LinkStart)\n for (let j = 0; j < i; j++) {\n let p = cx.parts[j];\n if (p instanceof InlineDelimiter && p.type == LinkStart)\n p.side = 0 /* Mark.None */;\n }\n return link.to;\n }\n }\n return -1;\n }\n};\nfunction finishLink(cx, content, type, start, startPos) {\n let { text } = cx, next = cx.char(startPos), endPos = startPos;\n content.unshift(elt(Type.LinkMark, start, start + (type == Type.Image ? 2 : 1)));\n content.push(elt(Type.LinkMark, startPos - 1, startPos));\n if (next == 40 /* '(' */) {\n let pos = cx.skipSpace(startPos + 1);\n let dest = parseURL(text, pos - cx.offset, cx.offset), title;\n if (dest) {\n pos = cx.skipSpace(dest.to);\n // The destination and title must be separated by whitespace\n if (pos != dest.to) {\n title = parseLinkTitle(text, pos - cx.offset, cx.offset);\n if (title)\n pos = cx.skipSpace(title.to);\n }\n }\n if (cx.char(pos) == 41 /* ')' */) {\n content.push(elt(Type.LinkMark, startPos, startPos + 1));\n endPos = pos + 1;\n if (dest)\n content.push(dest);\n if (title)\n content.push(title);\n content.push(elt(Type.LinkMark, pos, endPos));\n }\n }\n else if (next == 91 /* '[' */) {\n let label = parseLinkLabel(text, startPos - cx.offset, cx.offset, false);\n if (label) {\n content.push(label);\n endPos = label.to;\n }\n }\n return elt(type, start, endPos, content);\n}\n// These return `null` when falling off the end of the input, `false`\n// when parsing fails otherwise (for use in the incremental link\n// reference parser).\nfunction parseURL(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next == 60 /* '<' */) {\n for (let pos = start + 1; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (ch == 62 /* '>' */)\n return elt(Type.URL, start + offset, pos + 1 + offset);\n if (ch == 60 || ch == 10 /* '<\\n' */)\n return false;\n }\n return null;\n }\n else {\n let depth = 0, pos = start;\n for (let escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (space(ch)) {\n break;\n }\n else if (escaped) {\n escaped = false;\n }\n else if (ch == 40 /* '(' */) {\n depth++;\n }\n else if (ch == 41 /* ')' */) {\n if (!depth)\n break;\n depth--;\n }\n else if (ch == 92 /* '\\\\' */) {\n escaped = true;\n }\n }\n return pos > start ? elt(Type.URL, start + offset, pos + offset) : pos == text.length ? null : false;\n }\n}\nfunction parseLinkTitle(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next != 39 && next != 34 && next != 40 /* '\"\\'(' */)\n return false;\n let end = next == 40 ? 41 : next;\n for (let pos = start + 1, escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == end)\n return elt(Type.LinkTitle, start + offset, pos + 1 + offset);\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n return null;\n}\nfunction parseLinkLabel(text, start, offset, requireNonWS) {\n for (let escaped = false, pos = start + 1, end = Math.min(text.length, pos + 999); pos < end; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == 93 /* ']' */)\n return requireNonWS ? false : elt(Type.LinkLabel, start + offset, pos + 1 + offset);\n else {\n if (requireNonWS && !space(ch))\n requireNonWS = false;\n if (ch == 91 /* '[' */)\n return false;\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n }\n return null;\n}\n/**\nInline parsing functions get access to this context, and use it to\nread the content and emit syntax nodes.\n*/\nclass InlineContext {\n /**\n @internal\n */\n constructor(\n /**\n The parser that is being used.\n */\n parser, \n /**\n The text of this inline section.\n */\n text, \n /**\n The starting offset of the section in the document.\n */\n offset) {\n this.parser = parser;\n this.text = text;\n this.offset = offset;\n /**\n @internal\n */\n this.parts = [];\n }\n /**\n Get the character code at the given (document-relative)\n position.\n */\n char(pos) { return pos >= this.end ? -1 : this.text.charCodeAt(pos - this.offset); }\n /**\n The position of the end of this inline section.\n */\n get end() { return this.offset + this.text.length; }\n /**\n Get a substring of this inline section. Again uses\n document-relative positions.\n */\n slice(from, to) { return this.text.slice(from - this.offset, to - this.offset); }\n /**\n @internal\n */\n append(elt) {\n this.parts.push(elt);\n return elt.to;\n }\n /**\n Add a [delimiter](#DelimiterType) at this given position. `open`\n and `close` indicate whether this delimiter is opening, closing,\n or both. Returns the end of the delimiter, for convenient\n returning from [parse functions](#InlineParser.parse).\n */\n addDelimiter(type, from, to, open, close) {\n return this.append(new InlineDelimiter(type, from, to, (open ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (close ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n }\n /**\n Returns true when there is an unmatched link or image opening\n token before the current position.\n */\n get hasOpenLink() {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart))\n return true;\n }\n return false;\n }\n /**\n Add an inline element. Returns the end of the element.\n */\n addElement(elt) {\n return this.append(elt);\n }\n /**\n Resolve markers between this.parts.length and from, wrapping matched markers in the\n appropriate node and updating the content of this.parts. @internal\n */\n resolveMarkers(from) {\n // Scan forward, looking for closing tokens\n for (let i = from; i < this.parts.length; i++) {\n let close = this.parts[i];\n if (!(close instanceof InlineDelimiter && close.type.resolve && (close.side & 2 /* Mark.Close */)))\n continue;\n let emp = close.type == EmphasisUnderscore || close.type == EmphasisAsterisk;\n let closeSize = close.to - close.from;\n let open, j = i - 1;\n // Continue scanning for a matching opening token\n for (; j >= from; j--) {\n let part = this.parts[j];\n if (part instanceof InlineDelimiter && (part.side & 1 /* Mark.Open */) && part.type == close.type &&\n // Ignore emphasis delimiters where the character count doesn't match\n !(emp && ((close.side & 1 /* Mark.Open */) || (part.side & 2 /* Mark.Close */)) &&\n (part.to - part.from + closeSize) % 3 == 0 && ((part.to - part.from) % 3 || closeSize % 3))) {\n open = part;\n break;\n }\n }\n if (!open)\n continue;\n let type = close.type.resolve, content = [];\n let start = open.from, end = close.to;\n // Emphasis marker effect depends on the character count. Size consumed is minimum of the two\n // markers.\n if (emp) {\n let size = Math.min(2, open.to - open.from, closeSize);\n start = open.to - size;\n end = close.from + size;\n type = size == 1 ? \"Emphasis\" : \"StrongEmphasis\";\n }\n // Move the covered region into content, optionally adding marker nodes\n if (open.type.mark)\n content.push(this.elt(open.type.mark, start, open.to));\n for (let k = j + 1; k < i; k++) {\n if (this.parts[k] instanceof Element)\n content.push(this.parts[k]);\n this.parts[k] = null;\n }\n if (close.type.mark)\n content.push(this.elt(close.type.mark, close.from, end));\n let element = this.elt(type, start, end, content);\n // If there are leftover emphasis marker characters, shrink the close/open markers. Otherwise, clear them.\n this.parts[j] = emp && open.from != start ? new InlineDelimiter(open.type, open.from, start, open.side) : null;\n let keep = this.parts[i] = emp && close.to != end ? new InlineDelimiter(close.type, end, close.to, close.side) : null;\n // Insert the new element in this.parts\n if (keep)\n this.parts.splice(i, 0, element);\n else\n this.parts[i] = element;\n }\n // Collect the elements remaining in this.parts into an array.\n let result = [];\n for (let i = from; i < this.parts.length; i++) {\n let part = this.parts[i];\n if (part instanceof Element)\n result.push(part);\n }\n return result;\n }\n /**\n Find an opening delimiter of the given type. Returns `null` if\n no delimiter is found, or an index that can be passed to\n [`takeContent`](#InlineContext.takeContent) otherwise.\n */\n findOpeningDelimiter(type) {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && part.type == type && (part.side & 1 /* Mark.Open */))\n return i;\n }\n return null;\n }\n /**\n Remove all inline elements and delimiters starting from the\n given index (which you should get from\n [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter),\n resolve delimiters inside of them, and return them as an array\n of elements.\n */\n takeContent(startIndex) {\n let content = this.resolveMarkers(startIndex);\n this.parts.length = startIndex;\n return content;\n }\n /**\n Return the delimiter at the given index. Mostly useful to get\n additional info out of a delimiter index returned by\n [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter).\n Returns null if there is no delimiter at this index.\n */\n getDelimiterAt(index) {\n let part = this.parts[index];\n return part instanceof InlineDelimiter ? part : null;\n }\n /**\n Skip space after the given (document) position, returning either\n the position of the next non-space character or the end of the\n section.\n */\n skipSpace(from) { return skipSpace(this.text, from - this.offset) + this.offset; }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n}\n/**\nThe opening delimiter type used by the standard link parser.\n*/\nInlineContext.linkStart = LinkStart;\n/**\nOpening delimiter type used for standard images.\n*/\nInlineContext.imageStart = ImageStart;\nfunction injectMarks(elements, marks) {\n if (!marks.length)\n return elements;\n if (!elements.length)\n return marks;\n let elts = elements.slice(), eI = 0;\n for (let mark of marks) {\n while (eI < elts.length && elts[eI].to < mark.to)\n eI++;\n if (eI < elts.length && elts[eI].from < mark.from) {\n let e = elts[eI];\n if (e instanceof Element)\n elts[eI] = new Element(e.type, e.from, e.to, injectMarks(e.children, [mark]));\n }\n else {\n elts.splice(eI++, 0, mark);\n }\n }\n return elts;\n}\n// These are blocks that can span blank lines, and should thus only be\n// reused if their next sibling is also being reused.\nconst NotLast = [Type.CodeBlock, Type.ListItem, Type.OrderedList, Type.BulletList];\nclass FragmentCursor {\n constructor(fragments, input) {\n this.fragments = fragments;\n this.input = input;\n // Index into fragment array\n this.i = 0;\n // Active fragment\n this.fragment = null;\n this.fragmentEnd = -1;\n // Cursor into the current fragment, if any. When `moveTo` returns\n // true, this points at the first block after `pos`.\n this.cursor = null;\n if (fragments.length)\n this.fragment = fragments[this.i++];\n }\n nextFragment() {\n this.fragment = this.i < this.fragments.length ? this.fragments[this.i++] : null;\n this.cursor = null;\n this.fragmentEnd = -1;\n }\n moveTo(pos, lineStart) {\n while (this.fragment && this.fragment.to <= pos)\n this.nextFragment();\n if (!this.fragment || this.fragment.from > (pos ? pos - 1 : 0))\n return false;\n if (this.fragmentEnd < 0) {\n let end = this.fragment.to;\n while (end > 0 && this.input.read(end - 1, end) != \"\\n\")\n end--;\n this.fragmentEnd = end ? end - 1 : 0;\n }\n let c = this.cursor;\n if (!c) {\n c = this.cursor = this.fragment.tree.cursor();\n c.firstChild();\n }\n let rPos = pos + this.fragment.offset;\n while (c.to <= rPos)\n if (!c.parent())\n return false;\n for (;;) {\n if (c.from >= rPos)\n return this.fragment.from <= lineStart;\n if (!c.childAfter(rPos))\n return false;\n }\n }\n matches(hash) {\n let tree = this.cursor.tree;\n return tree && tree.prop(NodeProp.contextHash) == hash;\n }\n takeNodes(cx) {\n let cur = this.cursor, off = this.fragment.offset, fragEnd = this.fragmentEnd - (this.fragment.openEnd ? 1 : 0);\n let start = cx.absoluteLineStart, end = start, blockI = cx.block.children.length;\n let prevEnd = end, prevI = blockI;\n for (;;) {\n if (cur.to - off > fragEnd) {\n if (cur.type.isAnonymous && cur.firstChild())\n continue;\n break;\n }\n let pos = toRelative(cur.from - off, cx.ranges);\n if (cur.to - off <= cx.ranges[cx.rangeI].to) { // Fits in current range\n cx.addNode(cur.tree, pos);\n }\n else {\n let dummy = new Tree(cx.parser.nodeSet.types[Type.Paragraph], [], [], 0, cx.block.hashProp);\n cx.reusePlaceholders.set(dummy, cur.tree);\n cx.addNode(dummy, pos);\n }\n // Taken content must always end in a block, because incremental\n // parsing happens on block boundaries. Never stop directly\n // after an indented code block, since those can continue after\n // any number of blank lines.\n if (cur.type.is(\"Block\")) {\n if (NotLast.indexOf(cur.type.id) < 0) {\n end = cur.to - off;\n blockI = cx.block.children.length;\n }\n else {\n end = prevEnd;\n blockI = prevI;\n }\n prevEnd = cur.to - off;\n prevI = cx.block.children.length;\n }\n if (!cur.nextSibling())\n break;\n }\n while (cx.block.children.length > blockI) {\n cx.block.children.pop();\n cx.block.positions.pop();\n }\n return end - start;\n }\n}\n// Convert an input-stream-relative position to a\n// Markdown-doc-relative position by subtracting the size of all input\n// gaps before `abs`.\nfunction toRelative(abs, ranges) {\n let pos = abs;\n for (let i = 1; i < ranges.length; i++) {\n let gapFrom = ranges[i - 1].to, gapTo = ranges[i].from;\n if (gapFrom < abs)\n pos -= gapTo - gapFrom;\n }\n return pos;\n}\nconst markdownHighlighting = styleTags({\n \"Blockquote/...\": tags.quote,\n HorizontalRule: tags.contentSeparator,\n \"ATXHeading1/... SetextHeading1/...\": tags.heading1,\n \"ATXHeading2/... SetextHeading2/...\": tags.heading2,\n \"ATXHeading3/...\": tags.heading3,\n \"ATXHeading4/...\": tags.heading4,\n \"ATXHeading5/...\": tags.heading5,\n \"ATXHeading6/...\": tags.heading6,\n \"Comment CommentBlock\": tags.comment,\n Escape: tags.escape,\n Entity: tags.character,\n \"Emphasis/...\": tags.emphasis,\n \"StrongEmphasis/...\": tags.strong,\n \"Link/... Image/...\": tags.link,\n \"OrderedList/... BulletList/...\": tags.list,\n \"BlockQuote/...\": tags.quote,\n \"InlineCode CodeText\": tags.monospace,\n \"URL Autolink\": tags.url,\n \"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark\": tags.processingInstruction,\n \"CodeInfo LinkLabel\": tags.labelName,\n LinkTitle: tags.string,\n Paragraph: tags.content\n});\n/**\nThe default CommonMark parser.\n*/\nconst parser = new MarkdownParser(new NodeSet(nodeTypes).extend(markdownHighlighting), Object.keys(DefaultBlockParsers).map(n => DefaultBlockParsers[n]), Object.keys(DefaultBlockParsers).map(n => DefaultLeafBlocks[n]), Object.keys(DefaultBlockParsers), DefaultEndLeaf, DefaultSkipMarkup, Object.keys(DefaultInline).map(n => DefaultInline[n]), Object.keys(DefaultInline), []);\n\nfunction leftOverSpace(node, from, to) {\n let ranges = [];\n for (let n = node.firstChild, pos = from;; n = n.nextSibling) {\n let nextPos = n ? n.from : to;\n if (nextPos > pos)\n ranges.push({ from: pos, to: nextPos });\n if (!n)\n break;\n pos = n.to;\n }\n return ranges;\n}\n/**\nCreate a Markdown extension to enable nested parsing on code\nblocks and/or embedded HTML.\n*/\nfunction parseCode(config) {\n let { codeParser, htmlParser } = config;\n let wrap = parseMixed((node, input) => {\n let id = node.type.id;\n if (codeParser && (id == Type.CodeBlock || id == Type.FencedCode)) {\n let info = \"\";\n if (id == Type.FencedCode) {\n let infoNode = node.node.getChild(Type.CodeInfo);\n if (infoNode)\n info = input.read(infoNode.from, infoNode.to);\n }\n let parser = codeParser(info);\n if (parser)\n return { parser, overlay: node => node.type.id == Type.CodeText, bracketed: id == Type.FencedCode };\n }\n else if (htmlParser && (id == Type.HTMLBlock || id == Type.HTMLTag || id == Type.CommentBlock)) {\n return { parser: htmlParser, overlay: leftOverSpace(node.node, node.from, node.to) };\n }\n return null;\n });\n return { wrap };\n}\n\nconst StrikethroughDelim = { resolve: \"Strikethrough\", mark: \"StrikethroughMark\" };\n/**\nAn extension that implements\n[GFM-style](https://github.github.com/gfm/#strikethrough-extension-)\nStrikethrough syntax using `~~` delimiters.\n*/\nconst Strikethrough = {\n defineNodes: [{\n name: \"Strikethrough\",\n style: { \"Strikethrough/...\": tags.strikethrough }\n }, {\n name: \"StrikethroughMark\",\n style: tags.processingInstruction\n }],\n parseInline: [{\n name: \"Strikethrough\",\n parse(cx, next, pos) {\n if (next != 126 /* '~' */ || cx.char(pos + 1) != 126 || cx.char(pos + 2) == 126)\n return -1;\n let before = cx.slice(pos - 1, pos), after = cx.slice(pos + 2, pos + 3);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n return cx.addDelimiter(StrikethroughDelim, pos, pos + 2, !sAfter && (!pAfter || sBefore || pBefore), !sBefore && (!pBefore || sAfter || pAfter));\n },\n after: \"Emphasis\"\n }]\n};\n// Parse a line as a table row and return the row count. When `elts`\n// is given, push syntax elements for the content onto it.\nfunction parseRow(cx, line, startI = 0, elts, offset = 0) {\n let count = 0, first = true, cellStart = -1, cellEnd = -1, esc = false;\n let parseCell = () => {\n elts.push(cx.elt(\"TableCell\", offset + cellStart, offset + cellEnd, cx.parser.parseInline(line.slice(cellStart, cellEnd), offset + cellStart)));\n };\n for (let i = startI; i < line.length; i++) {\n let next = line.charCodeAt(i);\n if (next == 124 /* '|' */ && !esc) {\n if (!first || cellStart > -1)\n count++;\n first = false;\n if (elts) {\n if (cellStart > -1)\n parseCell();\n elts.push(cx.elt(\"TableDelimiter\", i + offset, i + offset + 1));\n }\n cellStart = cellEnd = -1;\n }\n else if (esc || next != 32 && next != 9) {\n if (cellStart < 0)\n cellStart = i;\n cellEnd = i + 1;\n }\n esc = !esc && next == 92;\n }\n if (cellStart > -1) {\n count++;\n if (elts)\n parseCell();\n }\n return count;\n}\nfunction hasPipe(str, start) {\n for (let i = start; i < str.length; i++) {\n let next = str.charCodeAt(i);\n if (next == 124 /* '|' */)\n return true;\n if (next == 92 /* '\\\\' */)\n i++;\n }\n return false;\n}\nconst delimiterLine = /^\\|?(\\s*:?-+:?\\s*\\|)+(\\s*:?-+:?\\s*)?$/;\nclass TableParser {\n constructor() {\n // Null means we haven't seen the second line yet, false means this\n // isn't a table, and an array means this is a table and we've\n // parsed the given rows so far.\n this.rows = null;\n }\n nextLine(cx, line, leaf) {\n if (this.rows == null) { // Second line\n this.rows = false;\n let lineText;\n if ((line.next == 45 || line.next == 58 || line.next == 124 /* '-:|' */) &&\n delimiterLine.test(lineText = line.text.slice(line.pos))) {\n let firstRow = [], firstCount = parseRow(cx, leaf.content, 0, firstRow, leaf.start);\n if (firstCount == parseRow(cx, lineText, 0))\n this.rows = [cx.elt(\"TableHeader\", leaf.start, leaf.start + leaf.content.length, firstRow),\n cx.elt(\"TableDelimiter\", cx.lineStart + line.pos, cx.lineStart + line.text.length)];\n }\n }\n else if (this.rows) { // Line after the second\n let content = [];\n parseRow(cx, line.text, line.pos, content, cx.lineStart);\n this.rows.push(cx.elt(\"TableRow\", cx.lineStart + line.pos, cx.lineStart + line.text.length, content));\n }\n return false;\n }\n finish(cx, leaf) {\n if (!this.rows)\n return false;\n cx.addLeafElement(leaf, cx.elt(\"Table\", leaf.start, leaf.start + leaf.content.length, this.rows));\n return true;\n }\n}\n/**\nThis extension provides\n[GFM-style](https://github.github.com/gfm/#tables-extension-)\ntables, using syntax like this:\n\n```\n| head 1 | head 2 |\n| --- | --- |\n| cell 1 | cell 2 |\n```\n*/\nconst Table = {\n defineNodes: [\n { name: \"Table\", block: true },\n { name: \"TableHeader\", style: { \"TableHeader/...\": tags.heading } },\n \"TableRow\",\n { name: \"TableCell\", style: tags.content },\n { name: \"TableDelimiter\", style: tags.processingInstruction },\n ],\n parseBlock: [{\n name: \"Table\",\n leaf(_, leaf) { return hasPipe(leaf.content, 0) ? new TableParser : null; },\n endLeaf(cx, line, leaf) {\n if (leaf.parsers.some(p => p instanceof TableParser) || !hasPipe(line.text, line.basePos))\n return false;\n let next = cx.peekLine();\n return delimiterLine.test(next) && parseRow(cx, line.text, line.basePos) == parseRow(cx, next, line.basePos);\n },\n before: \"SetextHeading\"\n }]\n};\nclass TaskParser {\n nextLine() { return false; }\n finish(cx, leaf) {\n cx.addLeafElement(leaf, cx.elt(\"Task\", leaf.start, leaf.start + leaf.content.length, [\n cx.elt(\"TaskMarker\", leaf.start, leaf.start + 3),\n ...cx.parser.parseInline(leaf.content.slice(3), leaf.start + 3)\n ]));\n return true;\n }\n}\n/**\nExtension providing\n[GFM-style](https://github.github.com/gfm/#task-list-items-extension-)\ntask list items, where list items can be prefixed with `[ ]` or\n`[x]` to add a checkbox.\n*/\nconst TaskList = {\n defineNodes: [\n { name: \"Task\", block: true, style: tags.list },\n { name: \"TaskMarker\", style: tags.atom }\n ],\n parseBlock: [{\n name: \"TaskList\",\n leaf(cx, leaf) {\n return /^\\[[ xX]\\][ \\t]/.test(leaf.content) && cx.parentType().name == \"ListItem\" ? new TaskParser : null;\n },\n after: \"SetextHeading\"\n }]\n};\nconst autolinkRE = /(www\\.)|(https?:\\/\\/)|([\\w.+-]{1,100}@)|(mailto:|xmpp:)/gy;\nconst urlRE = /[\\w-]+(\\.[\\w-]+)+(:\\d+)?(\\/[^\\s<]*)?/gy;\nconst lastTwoDomainWords = /[\\w-]+\\.[\\w-]+($|[/:])/;\nconst emailRE = /[\\w.+-]+@[\\w-]+(\\.[\\w.-]+)+/gy;\nconst xmppResourceRE = /\\/[a-zA-Z\\d@.]+/gy;\nfunction count(str, from, to, ch) {\n let result = 0;\n for (let i = from; i < to; i++)\n if (str[i] == ch)\n result++;\n return result;\n}\nfunction autolinkURLEnd(text, from) {\n urlRE.lastIndex = from;\n let m = urlRE.exec(text);\n if (!m || lastTwoDomainWords.exec(m[0])[0].indexOf(\"_\") > -1)\n return -1;\n let end = from + m[0].length;\n for (;;) {\n let last = text[end - 1], m;\n if (/[?!.,:*_~]/.test(last) ||\n last == \")\" && count(text, from, end, \")\") > count(text, from, end, \"(\"))\n end--;\n else if (last == \";\" && (m = /&(?:#\\d+|#x[a-f\\d]+|\\w+);$/.exec(text.slice(from, end))))\n end = from + m.index;\n else\n break;\n }\n return end;\n}\nfunction autolinkEmailEnd(text, from) {\n emailRE.lastIndex = from;\n let m = emailRE.exec(text);\n if (!m)\n return -1;\n let last = m[0][m[0].length - 1];\n return last == \"_\" || last == \"-\" ? -1 : from + m[0].length - (last == \".\" ? 1 : 0);\n}\n/**\nExtension that implements autolinking for\n`www.`/`http://`/`https://`/`mailto:`/`xmpp:` URLs and email\naddresses.\n*/\nconst Autolink = {\n parseInline: [{\n name: \"Autolink\",\n parse(cx, next, absPos) {\n let pos = absPos - cx.offset;\n if (pos && /\\w/.test(cx.text[pos - 1]))\n return -1;\n autolinkRE.lastIndex = pos;\n let m = autolinkRE.exec(cx.text), end = -1;\n if (!m)\n return -1;\n if (m[1] || m[2]) { // www., http://\n end = autolinkURLEnd(cx.text, pos + m[0].length);\n if (end > -1 && cx.hasOpenLink) {\n let noBracket = /([^\\[\\]]|\\[[^\\]]*\\])*/.exec(cx.text.slice(pos, end));\n end = pos + noBracket[0].length;\n }\n }\n else if (m[3]) { // email address\n end = autolinkEmailEnd(cx.text, pos);\n }\n else { // mailto:/xmpp:\n end = autolinkEmailEnd(cx.text, pos + m[0].length);\n if (end > -1 && m[0] == \"xmpp:\") {\n xmppResourceRE.lastIndex = end;\n m = xmppResourceRE.exec(cx.text);\n if (m)\n end = m.index + m[0].length;\n }\n }\n if (end < 0)\n return -1;\n cx.addElement(cx.elt(\"URL\", absPos, end + cx.offset));\n return end + cx.offset;\n }\n }]\n};\n/**\nExtension bundle containing [`Table`](#Table),\n[`TaskList`](#TaskList), [`Strikethrough`](#Strikethrough), and\n[`Autolink`](#Autolink).\n*/\nconst GFM = [Table, TaskList, Strikethrough, Autolink];\nfunction parseSubSuper(ch, node, mark) {\n return (cx, next, pos) => {\n if (next != ch || cx.char(pos + 1) == ch)\n return -1;\n let elts = [cx.elt(mark, pos, pos + 1)];\n for (let i = pos + 1; i < cx.end; i++) {\n let next = cx.char(i);\n if (next == ch)\n return cx.addElement(cx.elt(node, pos, i + 1, elts.concat(cx.elt(mark, i, i + 1))));\n if (next == 92 /* '\\\\' */)\n elts.push(cx.elt(\"Escape\", i, i++ + 2));\n if (space(next))\n break;\n }\n return -1;\n };\n}\n/**\nExtension providing\n[Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\nsuperscript using `^` markers.\n*/\nconst Superscript = {\n defineNodes: [\n { name: \"Superscript\", style: tags.special(tags.content) },\n { name: \"SuperscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Superscript\",\n parse: parseSubSuper(94 /* '^' */, \"Superscript\", \"SuperscriptMark\")\n }]\n};\n/**\nExtension providing\n[Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\nsubscript using `~` markers.\n*/\nconst Subscript = {\n defineNodes: [\n { name: \"Subscript\", style: tags.special(tags.content) },\n { name: \"SubscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Subscript\",\n parse: parseSubSuper(126 /* '~' */, \"Subscript\", \"SubscriptMark\")\n }]\n};\n/**\nExtension that parses two colons with only letters, underscores,\nand numbers between them as `Emoji` nodes.\n*/\nconst Emoji = {\n defineNodes: [{ name: \"Emoji\", style: tags.character }],\n parseInline: [{\n name: \"Emoji\",\n parse(cx, next, pos) {\n let match;\n if (next != 58 /* ':' */ || !(match = /^[a-zA-Z_0-9]+:/.exec(cx.slice(pos + 1, cx.end))))\n return -1;\n return cx.addElement(cx.elt(\"Emoji\", pos, pos + 1 + match[0].length));\n }\n }]\n};\n\nexport { Autolink, BlockContext, Element, Emoji, GFM, InlineContext, LeafBlock, Line, MarkdownParser, Strikethrough, Subscript, Superscript, Table, TaskList, parseCode, parser };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CompositeBlock", "_CompositeBlock", "type", "value", "from", "parentHash", "end", "hash", "children", "positions", "NodeProp", "child", "pos", "Tree", "nodeSet", "last", "length", "NodeType", "Type", "LeafBlock", "start", "content", "Line", "newPos", "skipSpace", "text", "to", "indent", "elt", "i", "goal", "result", "skipForList", "bl", "cx", "line", "size", "isOrderedList", "isBulletList", "isHorizontalRule", "DefaultSkipMarkup", "space", "_cx", "ch", "skipSpaceBack", "isFencedCode", "isBlockquote", "breaking", "count", "isSetextUnderline", "DefaultLeafBlocks", "inList", "next", "isAtxHeading", "EmptyLine", "CommentEnd", "ProcessingEnd", "HTMLBlockStyle", "isHTMLBlock", "rest", "e", "getListIndent", "indentAfter", "indented", "addCodeText", "marks", "DefaultBlockParsers", "base", "pendingMarks", "m", "codeStart", "fenceEnd", "len", "infoFrom", "infoTo", "first", "empty", "hasLine", "textStart", "textEnd", "newBase", "off", "endOfSpace", "after", "buf", "node", "trailing", "nodeType", "LinkReferenceParser", "leaf", "finish", "parseLinkLabel", "parseURL", "skip", "title", "parseLinkTitle", "titleEnd", "lineEnd", "SetextHeadingParser", "underline", "underlineMark", "_", "DefaultEndLeaf", "p", "scanLineResult", "BlockContext", "parser", "input", "fragments", "ranges", "FragmentCursor", "markI", "mark", "parse", "lines", "stop", "taken", "toRelative", "depth", "r", "textOffset", "rangeI", "nextFrom", "handler", "eol", "block", "none", "injectMarks", "top", "tree", "injectGaps", "inline", "TreeElement", "Buffer", "offset", "dummies", "rangeEnd", "movePastNext", "upto", "inclusive", "reuse", "MarkdownParser", "_MarkdownParser", "Parser", "blockParsers", "leafBlockParsers", "blockNames", "endLeafBlock", "skipContextMarkup", "inlineParsers", "inlineNames", "wrappers", "t", "w", "spec", "config", "resolveConfig", "nonEmpty", "nodeTypes", "styles", "s", "name", "composite", "style", "id", "group", "Tag", "NodeSet", "styleTags", "rm", "found", "findName", "InlineContext", "outer", "token", "a", "conf", "conc", "b", "wrapA", "wrapB", "inner", "names", "elts", "Element", "startOff", "EmphasisUnderscore", "EmphasisAsterisk", "LinkStart", "ImageStart", "InlineDelimiter", "side", "Escapable", "Punctuation", "DefaultInline", "escaped", "curSize", "url", "comment", "procInst", "before", "pBefore", "pAfter", "sBefore", "sAfter", "leftFlanking", "rightFlanking", "canOpen", "canClose", "part", "link", "finishLink", "j", "startPos", "endPos", "dest", "label", "requireNonWS", "open", "close", "emp", "closeSize", "k", "element", "startIndex", "index", "elements", "eI", "NotLast", "lineStart", "c", "rPos", "cur", "fragEnd", "blockI", "prevEnd", "prevI", "dummy", "abs", "gapFrom", "gapTo", "markdownHighlighting", "tags", "n", "leftOverSpace", "nextPos", "parseCode", "codeParser", "htmlParser", "parseMixed", "info", "infoNode", "StrikethroughDelim", "Strikethrough", "parseRow", "startI", "cellStart", "cellEnd", "esc", "parseCell", "hasPipe", "str", "delimiterLine", "TableParser", "lineText", "firstRow", "Table", "TaskParser", "TaskList", "autolinkRE", "urlRE", "lastTwoDomainWords", "emailRE", "xmppResourceRE", "autolinkURLEnd", "autolinkEmailEnd", "Autolink", "absPos", "noBracket", "GFM", "parseSubSuper", "Superscript", "Subscript", "Emoji", "match"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as i,b as n,c as $,d as c}from"./chunk-HET2RCSD.js";import{i as a,l as O}from"./chunk-SYZUZB3M.js";var T=177,S=179,o=184,r=12,W=13,V=17,R=20,Y=25,l=53,p=95,x=142,m=144,w=145,h=148,k=10,j=13,U=32,G=9,t=47,g=41,s=125,y=new n((e,X)=>{for(let P=0,Q=e.next;(X.context&&(Q<0||Q==k||Q==j||Q==t&&e.peek(P+1)==t)||Q==g||Q==s)&&e.acceptToken(T),!(Q!=U&&Q!=G);)Q=e.peek(++P)},{contextual:!0}),Z=new Set([p,o,R,r,V,m,w,x,h,W,l,Y]),d=new $({start:!1,shift:(e,X)=>X==S?e:Z.has(X)}),u=a({"func interface struct chan map const type var":O.definitionKeyword,"import package":O.moduleKeyword,"switch for go select return break continue goto fallthrough case if else defer":O.controlKeyword,range:O.keyword,Bool:O.bool,String:O.string,Rune:O.character,Number:O.number,Nil:O.null,VariableName:O.variableName,DefName:O.definition(O.variableName),TypeName:O.typeName,LabelName:O.labelName,FieldName:O.propertyName,"FunctionDecl/DefName":O.function(O.definition(O.variableName)),"TypeSpec/DefName":O.definition(O.typeName),"CallExpr/VariableName":O.function(O.variableName),LineComment:O.lineComment,BlockComment:O.blockComment,LogicOp:O.logicOperator,ArithOp:O.arithmeticOperator,BitOp:O.bitwiseOperator,"DerefOp .":O.derefOperator,"UpdateOp IncDecOp":O.updateOperator,CompareOp:O.compareOperator,"= :=":O.definitionOperator,"<-":O.operator,'~ "*"':O.modifier,"; ,":O.separator,"... :":O.punctuation,"( )":O.paren,"[ ]":O.squareBracket,"{ }":O.brace}),b={__proto__:null,package:10,import:18,true:380,false:380,nil:383,struct:48,func:68,interface:78,chan:94,map:118,make:157,new:159,const:204,type:212,var:224,if:236,else:238,switch:242,case:248,default:250,for:260,range:266,go:270,select:274,return:284,break:288,continue:290,goto:292,fallthrough:296,defer:300},q=c.deserialize({version:14,states:"!=xO#{QQOOP$SOQOOO&UQTO'#CbO&]QRO'#FlO]QQOOOOQP'#Cn'#CnOOQP'#Co'#CoO&eQQO'#C|O(kQQO'#C{O)]QRO'#GiO+tQQO'#D_OOQP'#Ge'#GeO+{QQO'#GeO.aQTO'#GaO.hQQO'#D`OOQP'#Gm'#GmO.mQRO'#GdO/hQQO'#DgOOQP'#Gd'#GdO/uQQO'#DrO2bQQO'#DsO4QQTO'#GqO,^QTO'#GaO4XQQO'#DxO4^QQO'#D{OOQO'#EQ'#EQOOQO'#ER'#EROOQO'#ES'#ESOOQO'#ET'#ETO4cQQO'#EPO5}QQO'#EPOOQP'#Ga'#GaO6UQQO'#E`O6^QQO'#EcOOQP'#G`'#G`O6cQQO'#EsOOQP'#G_'#G_O&]QRO'#FnOOQO'#Fn'#FnO9QQQO'#G^QOQQOOO&]QROOO9XQQO'#C`O9^QSO'#CdO9lQQO'#C}O9tQQO'#DSO9yQQO'#D[O:kQQO'#CsO:pQQO'#DhO:uQQO'#EeO:}QQO'#EiO;VQQO'#EoO;_QQO'#EuO<uQQO'#ExO<|QQO'#FRO4cQQO'#FWO=WQQO'#FYO=]QRO'#F_O=jQRO'#FaO=uQQO'#FaOOQP'#Fe'#FeO4cQQO'#FgP=zOWO'#C^POOO)CAz)CAzOOQO'#G]'#G]OOQO,5<W,5<WOOQO-E9j-E9jO?TQTO'#CqOOQO'#C|'#C|OOQP,59g,59gO?tQQO'#D_O@fQSO'#FuO@kQQO'#C}O@pQQO'#D[O9XQQO'#FqO@uQRO,5=TOAyQQO,59yOCVQSO,5:[O@kQQO'#C}OCaQQO'#DjOOQP,59^,59^OOQO,5<a,5<aO?tQQO'#DeOOQO,5:e,5:eOOQO-E9s-E9sOOQP,59z,59zOOQP,59|,59|OCqQSO,5:QO(kQQO,5:ROC{QQO,5:RO&]QRO'#FxOOQO'#Fx'#FxOFjQQO'#GpOFwQQO,5:^OF|QQO,5:_OHdQQO,5:`OHlQQO,5:aOHvQRO'#FyOIaQRO,5=]OIuQQO'#DzOOQP,5:d,5:dOOQO'#EV'#EVOOQO'#EW'#EWOOQO'#EX'#EXOOQO'#EZ'#EZOOQO'#E['#E[O4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:wOOQP,5:x,5:xO?tQQO'#EOOOQP,5:g,5:gOOQP,5:k,5:kO9yQQO,59vO4cQQO,5:zO4cQQO,5:}OI|QRO,5;_OOQO,5<Y,5<YOOQO-E9l-E9lO]QQOOOOQP'#Cb'#CbOOQP,58z,58zOOQP'#Cf'#CfOJWQQO'#CfOJ]QSO'#CkOOQP,59O,59OOJkQQO'#DPOLZQQO,5<UOLbQQO,59iOLsQQO,5<TOMpQQO'#DUOOQP,59n,59nOOQP,59v,59vONfQQO,59vONmQQO'#CwOOQP,59_,59_O?tQQO,5:SONxQRO'#EgO! VQQO'#EhOOQP,5;P,5;PO! |QQO'#EkO!!WQQO'#EnOOQP,5;T,5;TO!!`QRO'#EqO!!mQQO'#ErOOQP,5;Z,5;ZO!!uQTO'#CbO!!|QTO,5;aO&]QRO,5;aO!#WQQO,5;jO!$yQTO,5;dO!%WQQO'#EzOOQP,5;d,5;dO&]QRO,5;dO!%cQSO,5;mO!%mQQO'#E`O!%uQQO'#EcO!%zQQO'#FTO!&UQQO'#FTOOQP,5;m,5;mO!&ZQQO,5;mO!&`QTO,5;rO!&mQQO'#F[OOQP,5;t,5;tO!&xQTO'#GqOOQP,5;y,5;yOOQP'#Et'#EtOOQP,5;{,5;{O!']QTO,5<RPOOO'#Fk'#FkP!'jOWO,58xPOOO,58x,58xO!'uQQO,59yO!'zQQO'#GgOOQP,59i,59iO(kQQO,59vOOQP,5<],5<]OOQP-E9o-E9oOOQP1G/e1G/eOOQP1G/v1G/vO!([QSO'#DlO!(lQQO'#DlO!(wQQO'#DkOOQO'#Go'#GoO!(|QQO'#GoO!)UQQO,5:UO!)ZQQO'#GnO!)fQQO,5:PPOQO'#Cq'#CqO(kQQO1G/lOOQP1G/m1G/mO(kQQO1G/mOOQO,5<d,5<dOOQO-E9v-E9vOOQP1G/x1G/xO!)kQSO1G/yOOQP'#Cy'#CyOOQP1G/z1G/zO?tQQO1G/}O!)xQSO1G/{O!*YQQO1G/|O!*gQTO,5<eOOQP-E9w-E9wOOQP,5:f,5:fO!+QQQO,5:fOOQP1G0[1G0[O!,vQTO1G0[O!.wQTO1G0[O!/OQTO1G0[O!0pQTO1G0[O!1QQTO1G0cO!1bQQO,5:jOOQP1G/b1G/bOOQP1G0f1G0fOOQP1G0i1G0iOOQP1G0y1G0yOOQP,59Q,59QO&]QRO'#FmO!1mQSO,59VOOQP,59V,59VOOQO'#DQ'#DQO?tQQO'#DQO!1{QQO'#DQOOQO'#Gh'#GhO!2SQQO'#GhO!2[QQO,59kO!2aQSO'#CqOJkQQO'#DPOOQP,5=R,5=RO@kQQO1G1pOOQP1G/w1G/wO.hQQO'#ElO!2rQRO1G1oO@kQQO1G1oO@kQQO'#DVO?tQQO'#DWOOQP'#Gk'#GkO!2}QRO'#GjOOQP'#Gj'#GjO&]QRO'#FsO!3`QQO,59pOOQP,59p,59pO!3gQRO'#CxO!3uQQO'#CxO!3|QRO'#CxO.hQQO'#CxO&]QRO'#FoO!4XQQO,59cOOQP,59c,59cO!4dQQO1G/nO4cQQO,5;RO!4iQQO,5;RO&]QRO'#FzO!4nQQO,5;SOOQP,5;S,5;SO!6aQQO'#DgO?tQQO,5;VOOQP,5;V,5;VO&]QRO'#F}O!6hQQO,5;YOOQP,5;Y,5;YO!6pQRO,5;]O4cQQO,5;]O&]QRO'#GOO!6{QQO,5;^OOQP,5;^,5;^O!7TQRO1G0{O!7`QQO1G0{O4cQQO1G1UO!8vQQO1G1UOOQP1G1O1G1OO!9OQQO'#GPO!9YQQO,5;fOOQP,5;f,5;fO4cQQO'#E{O!9eQQO'#E{O<uQQO1G1OOOQP1G1X1G1XO!9jQQO,5:zO!9jQQO,5:}O!9tQSO,5;oO!:OQQO,5;oO!:VQQO,5;oO!9OQQO'#GRO!:aQQO,5;vOOQP,5;v,5;vO!<PQQO'#F]O!<WQQO'#F]POOO-E9i-E9iPOOO1G.d1G.dO!<]QQO,5:VO!<gQQO,5=ZO!<tQQO,5=ZOOQP1G/p1G/pO!<|QQO,5=YO!=WQQO,5=YOOQP1G/k1G/kOOQP7+%W7+%WOOQP7+%X7+%XOOQP7+%e7+%eO!=cQQO7+%eO!=hQQO7+%iOOQP7+%g7+%gO!=mQQO7+%gO!=rQQO7+%hO!>PQSO7+%hOOQP7+%h7+%hO4cQQO7+%hOOQP1G0Q1G0QO!>^QQO1G0QOOQP1G0U1G0UO!>fQQO1G0UOF|QQO1G0UOOQO,5<X,5<XOOQO-E9k-E9kOOQP1G.q1G.qOOQO,59l,59lO?tQQO,59lO!?cQQO,5=SO!?jQQO,5=SOOQP1G/V1G/VO!?rQQO,59yO!?}QRO7+'[O!@YQQO'#EmO!@dQQO'#HOO!@lQQO,5;WOOQP7+'Z7+'ZO!@qQRO7+'ZOOQP,59q,59qOOQP,59r,59rOOQO'#DZ'#DZO!@]QQO'#FtO!@|QRO,59tOOQO,5<_,5<_OOQO-E9q-E9qOOQP1G/[1G/[OOQP,59d,59dOHgQQO'#FpO!3uQQO,59dO!A_QRO,59dO!AjQRO,59dOOQO,5<Z,5<ZOOQO-E9m-E9mOOQP1G.}1G.}O(kQQO7+%YOOQP1G0m1G0mO4cQQO1G0mOOQO,5<f,5<fOOQO-E9x-E9xOOQP1G0n1G0nO!AxQQO'#GdOOQP1G0q1G0qOOQO,5<i,5<iOOQO-E9{-E9{OOQP1G0t1G0tO4cQQO1G0wOOQP1G0w1G0wOOQO,5<j,5<jOOQO-E9|-E9|OOQP1G0x1G0xO!B]QQO7+&gO!BeQSO7+&gO!CsQSO7+&pO!CzQQO7+&pOOQO,5<k,5<kOOQO-E9}-E9}OOQP1G1Q1G1QO!DRQQO,5;gOOQO,5;g,5;gO!DWQSO7+&jOOQP7+&j7+&jO!DbQQO7+&pO!7`QQO1G1[O!DgQQO1G1ZOOQO1G1Z1G1ZO!DnQSO1G1ZOOQO,5<m,5<mOOQO-E:P-E:POOQP1G1b1G1bO!DxQSO'#GqO!E]QQO'#F^O!EbQQO'#F^O!EgQQO,5;wOOQO,5;w,5;wO!ElQSO1G/qOOQO1G/q1G/qO!EyQSO'#DoO!FZQQO'#DoO!FfQQO'#DnOOQO,5<c,5<cO!FkQQO1G2uOOQO-E9u-E9uOOQO,5<b,5<bO!FxQQO1G2tOOQO-E9t-E9tOOQP<<IP<<IPOOQP<<IT<<ITOOQP<<IR<<IRO!GSQSO<<ISOOQP<<IS<<ISO4cQQO<<ISO!GaQSO<<ISOOQP7+%l7+%lO!GkQQO7+%lOOQP7+%p7+%pO!GpQQO7+%pO!GuQQO7+%pOOQO1G/W1G/WOOQO,5<^,5<^O!G}QQO1G2nOOQO-E9p-E9pOOQP<<Jv<<JvO.hQQO'#F{O!@YQQO,5;XOOQO,5;X,5;XO!HUQQO,5=jO!H^QQO,5=jOOQO1G0r1G0rOOQP<<Ju<<JuOOQP,5<`,5<`OOQP-E9r-E9rOOQO,5<[,5<[OOQO-E9n-E9nO!HfQRO1G/OOOQP1G/O1G/OOOQP<<Ht<<HtOOQP7+&X7+&XO!HqQQO'#DeOOQP7+&c7+&cOOQP<<JR<<JRO!HxQRO<<JRO!ITQQO<<J[O!I]QQO<<J[OOQO1G1R1G1ROOQP<<JU<<JUO4cQQO<<J[O!IbQSO7+&vOOQO7+&u7+&uO!IlQQO7+&uO4cQQO,5;xOOQO1G1c1G1cO!<]QQO,5:YP!<]QQO'#FwP?tQQO'#FvOOQPAN>nAN>nO4cQQOAN>nO!IsQSOAN>nOOQP<<IW<<IWOOQP<<I[<<I[O!I}QQO<<I[P!>nQQO'#FrOOQO,5<g,5<gOOQO-E9y-E9yOOQO1G0s1G0sOOQO,5<h,5<hO!JVQQO1G3UOOQO-E9z-E9zOOQP7+$j7+$jO!J_QQO'#GnO!B]QQOAN?mO!JjQQOAN?vO!JqQQOAN?vO!KzQSOAN?vOOQO<<Ja<<JaO!LRQSO1G1dO!L]QSO1G/tOOQO1G/t1G/tO!LjQSOG24YOOQPG24YG24YOOQPAN>vAN>vO!LtQQOAN>vP.hQQO'#F|OOQPG25XG25XO!LyQQOG25bO!MOQQO'#FPOOQPG25bG25bO!MZQQOG25bOOQPLD)tLD)tOOQPG24bG24bO!JqQQOLD*|O!9OQQO'#GQO!McQQO,5;kOOQP,5;k,5;kO?tQQO'#FQO!MnQQO'#FQO!MsQQOLD*|OOQP!$'Nh!$'NhOOQO,5<l,5<lOOQO-E:O-E:OOOQP1G1V1G1VO!MzQQO,5;lOOQO,5;l,5;lO!NPQQO!$'NhOOQO1G1W1G1WO!JqQQO!)9DSOOQP!.K9n!.K9nO# {QTO'#CqO#!`QTO'#CqO##}QSO'#CqO#$XQSO'#CqO#&]QSO'#CqO#&gQQO'#FyO#&tQQO'#FyO#'OQQO,5=]O#'ZQQO,5=]O#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO!7`QQO,5:wO!7`QQO,5:zO!7`QQO,5:}O#(yQSO'#CbO#)}QSO'#CbO#*bQSO'#GqO#*rQSO'#GqO#+PQRO'#GgO#+yQSO,5<eO#,ZQSO,5<eO#,hQSO1G0[O#-rQTO1G0[O#-yQSO1G0[O#.TQSO1G0[O#0{QTO1G0[O#1SQSO1G0[O#2eQSO1G0[O#2lQTO1G0[O#2sQSO1G0[O#4XQSO1G0[O#4`QTO1G0[O#4jQSO1G0[O#4wQSO1G0cO#5dQTO'#CqO#5kQTO'#CqO#6bQSO'#GqO#'cQQO'#EPO!7`QQO'#EPOF|QQO'#EPO#8]QQO'#EPO#8gQQO'#EPO#8qQQO'#EPO#8{QQO'#E`O#9TQQO'#EcO@kQQO'#C}O?tQQO,5:RO#9YQQO,59vO#:iQQO,59vO?tQQO,59vO?tQQO1G/lO?tQQO1G/mO?tQQO7+%YO?tQQO'#C{O#:pQQO'#DgO#9YQQO'#D[O#:wQQO'#D[O#:|QSO,5:QO#;WQQO,5:RO#;]QQO1G/nO?tQQO,5:SO#;bQQO'#Dh",stateData:"#;m~O$yOSPOS$zPQ~OVvOX{O[oO^YOaoOdoOh!POjcOr|Ow}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO$v%QP~OTzO~P]O$z!`O~OVeXZeX^eX^!TXj!TXnUXneX!QeX!WeX!W!TX!|eX#ReX#TeX#UeX#WUX$weX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O!a#hX~P$XOV!bO$w!bO~O[!wX^pX^!wXa!wXd!wXhpXh!wXrpXr!wXwpXw!wX!PpX!P!wX!QpX!Q!wX!WpX!W!wX!]pX!]!wX!p!wX!q!wX%OpX%O!wX%U!wX%V!wX%YpX%Y!wX%f!wX%g!wX%h!wX%i!wX%j!wX~O^!hOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%O!eO%Y!fO~On!lO#W%]XV%]X^%]Xh%]Xr%]Xw%]X!P%]X!Q%]X!W%]X!]%]X#T%]X$w%]X%O%]X%Y%]Xu%]X~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!WaO!]!QO!phO!qhO%O+wO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO~P*aOj!qO^%XX]%XXn%XX!V%XX~O!W!tOV%TXZ%TX^%TXn%TX!Q%TX!W%TX!|%TX#R%TX#T%TX#U%TX$w%TX%Y%TX%`%TX%f%TX%g%TX%i%TX%j%TX%k%TX%l%TX%m%TX%n%TX%o%TX%p%TX%q%TX]%TX!V%TXj%TXi%TX!a%TXu%TX~OZ!sO~P,^O%O!eO~O!W!tO^%WXj%WX]%WXn%WX!V%WXu%WXV%WX$w%WX%`%WX#T%WX[%WX!a%WX~Ou!{O!QnO!V!zO~P*aOV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlOi%dP~O^#QO~OZ#RO^#VOn#TO!Q#cO!W#SO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX$w`X~O!|#`O~P2gO^#VO~O^#eO~O!QnO~P*aO[oO^YOaoOdoOh!POr!pOw}O!QnO!WaO!]!QO!phO!qhO%O+wO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!P#hO~P4jO#T#iO#U#iO~O#W#jO~O!a#kO~OVvO[oO^YOaoOdoOh!POjcOr|Ow}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O$v%QX~P6hO%O#oO~OZ#rO[#qO^#sO%O#oO~O^#uO%O#oO~Oj#yO~O^!hOh!POr!jOw}O!P!OO!Q#|O!WaO!]!QO%O!eO%Y!fO~Oj#}O~O!W$PO~O^$RO%O#oO~O^$UO%O#oO~O^$XO%O#oO~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O$ZO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oj$`O~P;_OV$fOjcO~P;_Oj$kO~O!QnOV$RX$w$RX~P*aO%O$oOV$TX$w$TX~O%O$oO~O${$rO$|$rO$}$tO~OZeX^!TX!W!TXj!TXn!TXh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~O]!TX!V!TXu!TX#T!TXV!TX$w!TX%`!TX[!TX!a!TX~P>VO^!hOh!POr-TOw}O!P-_O!Q-`O!W-^O!]-eO%O!eO%Y!fO~OZ!sO~O^#uO~O!P$xO~On!lO#W%]aV%]a^%]ah%]ar%]aw%]a!P%]a!Q%]a!W%]a!]%]a#T%]a$w%]a%O%]a%Y%]au%]a~O]${O^#QO~OZ#RO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O]$|O!|,WO~PBROj!qOn%QO!QnOi%cP~P*aO!V%WO!|#`O~PBRO!V%YO~OV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oi%dX#p%dX#q%dX~PDQOi%]O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-QO!WaO!]!QO!phO!qhO%O+{O%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^%aO%O%_O~O!QnO!a%cO~P*aO!QnOn$mX#T$mX#U$mXV$mX$w$mX!a$mX~P*aOn#TO#T%ea#U%eaV%ea$w%ea!a%ea~O]%fO~PF|OV#ga$w#ga~PDTO[%sO~OZ#rO[#qO]%vO%O#oO~O^!hOh!POn%zOr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO]%[P~O^&OOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%Y!fO^%ZXj%ZX~O%O%}O~PKfOjcO^qa]qanqa!Vqa~O^#uO!W&SO~O^!hOh!POr-TOw}O{&WO!P-_O!Q-`O!W-^O!]-eO%O,xO%Y!fO~Oi&^O~PL{O^!hOh!POr!jOw}O!Q!kO!WaO!]!QO%O!eO%Y!fO~O!P#hO~PMwOi&eO%O,yO%Y!fO~O#T&gOV#ZX$w#ZX~P?tO]&kO%O#oO~O^!hOh!POr-TOw}O!P-_O!Q-`O!]-eO%O!eO%Y!fO~O!W&lO#T&mO~P! _O]&qO%O#oO~O#T&sOV#eX$w#eX~P?tO]&vO%O#oO~OjeX~P$XOjcO!|,XO~P2gOn!lO#W&yO#W%]X~O^#VOn#TO!Q#cO!W#SO!|,XO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX~OZ&zOj$`O$w`X~P!#cOi'OO#p'PO#q'QO~OZ#ROjcO~P!#cO#T'TO#U#iO~O#W'UO~OV'WO!QnO~P*aOV'XO~OjcO~O!|#`OV#za$w#za~PBROi'[O#p']O#q'^O~On#TO!|#`OV%eX$w%eX!a%eX~PBRO!|#`OV$Za$w$Za~PBRO${$rO$|$rO$}'`O~O]${O~O%O!eO]%ZXn%ZX!V%ZX~PKfO!|#`Oi!_Xn!_X!a!`X~PBROi!_Xn!_X!a!`X~O!a'aO~On'bOi%cX~Oi'dO~On'eO!V%bX!a%bX~O!V'gO~O]'jOn'kO!|,YO~PBROn'nO!V'mO!a'oO!|#`O~PBRO!QnO!V'qO!a'rO~P*aO!|#`On$ma#T$ma#U$maV$ma$w$ma!a$ma~PBRO]'sOu'tO~O%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi!|!xi#R!xi#T!xi#U!xi$w!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~O!V!xii!xi!a!xi~P!+YO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi!V!xii!xi!a!xi~O!|!xi~P!-TO!|#`O~P!-TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%q!xi~O!|#`O!V!xii!xi!a!xi~P!/VO!|#`OV#Pi$w#Pi!a#Pi~PBRO]'uOn'wOu'vO~OZ#rO[#qO]'zO%O#oO~Ou'|O~P?tOn'}O]%[X~O](PO~OZeX^mX^!TXj!TX!W!TX~OjcOV$]i$w$]i~O%`(ZOV%^X$w%^Xn%^X!V%^X~Oi(`O~PL{O[(aO!W!tOVlX$wlX~On(bO~P?tO[(aOVlX$wlX~Oi(hO%O,yO%Y!fO~O!V(iO~O#T(kO~O](nO%O#oO~O[oO^YOaoOdoOh!POr!pOu-bOw}O!P!OO!QnO!V-UO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O+zO~P!4vO](sO%O#oO~O#T(tOV#ea$w#ea~O](xO%O#oO~O#k(yOV#ii$w#ii~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O+xO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^(|O%O%_O~O#p%dP#q%dP~P/uOi)PO#p'PO#q'QO~O!a)RO~O!QnO#y)VO~P*aOV)WO!|#`O~PBROj#wa~P;_OV)WO!QnO~P*aOi)]O#p']O#q'^O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O,eO~P!:lO!a)bO~Oj!qO!QnO~P*aOj!qO!QnOi%ca~P*aOn)iOi%ca~O!V%ba!a%ba~P?tOn)lO!V%ba!a%ba~O])nO~O])oO~O!V)pO~O!QnO!V)rO!a)sO~P*aO!V)rO!a)sO!|#`O~PBRO])uOn)vO~O])wOn)xO~O^!hOh!POr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO~O]%[a~P!>nOn)|O]%[a~O]${O]tXntX~OjcOV$^q$w$^q~On*PO{&WO~P?tOn*SO!V%rX~O!V*UO~OjcOV$]q$w$]q~O%`(ZOV|a$w|an|a!V|a~O[*]OVla$wla~O[*]O!W!tOVla$wla~On*PO{&WO!W*`O^%WXj%WX~P! _OjcO#j!UO~OjcO!|,XO~PBROZ*dO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O!|#`O~P!BoO#^*eO~P?tO!a*fO~Oj$`O!|,XO~P!BoO#W*hO~Oj#wi~P;_OV*kO!|#`O~PBROn#TO!Q#cO!|#`O!a$QX#T%eX~PBRO#T*lO~O#W*lO~O!a*mO~O!|#`Oi!_in!_i~PBRO!|#`Oi!bXn!bX!a!cX~PBROi!bXn!bX!a!cX~O!a*nO~Oj!qO!QnOi%ci~P*aO!V%bi!a%bi~P?tO!V*qO!a*rO!|#`O~PBRO!V*qO!|#`O~PBRO]*tO~O]*uO~O]*uOu*vO~O]%[i~P!>nO%O!eO!V%ra~On*|O!V%ra~O[+OOVli$wli~O%O+yO~P!4vO#k+QOV#iy$w#iy~O^+RO%O%_O~O]+SO~O!|,XOj#xq~PBROj#wq~P;_O!V+ZO!|#`O~PBRO]+[On+]O~O%O!eO!V%ri~O^#QOn'eO!V%bX~O#^+`O~P?tOj+aO~O^#VO!W#SO!|#`O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~OZ+cO~P!JvO!|#`O!a$Qi~PBRO!|#`Oi!bin!bi~PBRO!V+dO!|#`O~PBRO]+eO~O]+fO~Oi+iO#p+jO#q+kO~O^+lO%O%_O~Oi+pO#p+jO#q+kO~O!a+rO~O#^+sO~P?tO!a+tO~O]+uO~OZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXVeXneX!QeX#ReX#TeX#UeX$weX~O]eX]!TX!VeXieX!aeX~P!NUOjeX~P!NUOZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXn!TX!VeX~O]eX!V!TX~P#!gOh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~P#!gOZeX^eX^!TXj!TXneX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O]eXueX~P#$xO]$mXn$mXu$mX~PF|Oj$mXn$mX~P!7`On+|O]%eau%ea~On+}Oj%ea~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-OO!WaO!]!QO!phO!qhO%O+yO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~OZeX]!TX^UXhUXnUXn!TXrUXuUXwUX!PUX!QUX!WUX!W!TX!]UX%OUX%YUX~OnUX!QeX!aeX#TeX#WUX~P#$xOn+|O!|,YO]%eXu%eX~PBROn+}O!|,XOj%eX~PBRO^&OOV%ZXj%ZX$w%ZX]%ZXn%ZX!V%ZXu%ZX%`%ZX#T%ZX[%ZX!a%ZX~P?wO!|,YO]$man$mau$ma~PBRO!|,XOj$man$ma~PBRO%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~Oj!xi~P!+YOn!xiu!xi~P#,hO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%p!xi%q!xi~O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xij!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi~O!|!xi~P#/_On!xiu!xi~P#.TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi%p!xi%q!xi~O!|,WO~P#1^O!|,XO~P#/_O!|,YOn!xiu!xi~P#1^O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OZ!xi]!xi^!xi!W!xi%q!xi~O!|,WO~P#3QO!|,XOj!xi~P!/VO!|,YOn!xiu!xi~P#3QO!|,XOj#Pi~PBROV!TXZeX^mX!W!TX$w!TX~O%`!TX~P#5RO[!TXhmXnmXrmXwmX!PmX!QmX!WmX!]mX%OmX%YmX~P#5ROn#TO!Q,aO!|,XO#R#dOj`X#T%eX#U%eX~PBRO[oO^YOaoOdoOh!POr!pOw}O!P#hO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO%O+yO~P#6{O!Q-PO%O+xO~P#6{O!Q-QO%O+{O~P#6{O#T,bO#U,bO~O#W,cO~O^!hOh!POr-TOw}O!P-_O!Q-WO!W-^O!]-eO%O!eO%Y!fO~O^!hOh!POr-TOw}O!Q-`O!W-^O!]-eO%O!eO%Y!fO~O!P-VO~P#9zO%O+wO~P!4vO!P-XO~O!V-YO!|#`O~PBRO!V-ZO~O!V-[O~O!W-dO~OP%ka%Oa~",goto:"!FW%sPP%tP%wP%zP'SP'XPPPP'`'cP'u'uP)w'u-_PPP0j0m0qP1V4b1VP7s8WP1VP8a8d8hP8p8w1VPP1V8{<`?vPPCY-_-_-_PCdCuCxPC{DQ'u'uDV'uES'u'u'u'uGUIW'uPPJR'uJUMjMjMj'u! r! r!#SP!$`!%d!&d'cP'cPP'cP!&yP!'V!'^!&yP!'a!'h!'n!'w!&yP!'z!(R!&y!(U!(fPP!&yP!(x!)UPP!&y!)Y!)c!&yP!)g!)gP!&yP!&yP!)j!)m!&v!&yP!&yPPP!&yP!&yP!)q!)q!)w!)}!*U!*[!*d!*j!*p!*w!*}!+T!+Z!.q!.x!/O!/X!/m!/s!/z!0Q!0W!0^!0d!0jPPPPPPPPP!0p!1f!1k!1{!2kPP!7P!:^P!>u!?Z!?_!@Z!@fP!@p!D_!Df!Di!DuPPPPPPPPPPPP!FSR!aPRyO!WXOScw!R!T!U!W#O#k#n#u$R$X&O&j&u&|'W'Y']'})W)|*k*w+gQ#pzU#r{#s%uQ#x|U$T!S$U&pQ$^!VQ$y!lR)U'RVROS#nQ#t{T%t#s%uR#t{qrOScw!U!V!W#O#k#n&|'W'Y)W*k+g%PoOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%O]OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^#u!iW^!O!h!t!z#e#h#u#v#y#|#}$P$Q$T$W$v$x%W%Y%a%x%y&O&S&W&]&`&b&d&m'e'|'}(S([(c(i(o(|)l)|*P*Q*S*p*w*|+R+^+j+l,h-U-V-W-X-Y-Z-[-]-_-d'cbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR$O!PT&c#}&dW%`#R&z*d+cQ&Q#vS&V#y&]S&`#}&dR*Y(b'cZOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d%fWOSWYacmnw!O!U!V!W!X!Z!_!q!z#O#Q#S#T#V#^#_#`#a#b#c#h#i#j#k#n#v#|$f$v$x%W%Y%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(i(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S&b#}&d!{-]!h!t#e#u#y$P$Q$T$W%a%x%y&O&W&]&`&m'e'|'}(S([(c(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-dQ#v|S$v!j!pU&P#v$v,hZ,h#x&Q&U&V-TS%{#u&OV){'})|*wR#z}T&[#y&]]&X#y&](S([(o*QZ&Z#y&](S(o*QT([&Y(]'s_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d'r_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!w^'bbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&a#}&dR(d&bS!u]fX!x`&_(e(oQ!r[Q%O!qQ)d'aU)f'b)i*oR+X*nR%R!qR%P!qV)h'b)i*oV)g'b)i*odtOScw#O#k#n&|'Y+gQ$h!WQ&R#wQ&w$[S'S$c$iQ(V&TQ*O(RQ*V(WQ*b(yQ*c(zR+_+Q%PfOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%PgOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^!q#Weg!o!y$[$_$c$j$m$q$}%^%b%d%m'V'p(z({)S)Y)^)c)e)q)t*i*s+T+V+W+Y,f,g,i,j,w,z-aR#fh#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z[,V%^,f,i,p,s,v`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q!Y#^e!y$j$m$q$}%b%d%i%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aY,Q!o,k,n,q,tl,R$[$_$c(z)S*i,g,j,l,o,r,u,w,z_,S%^,f,i,m,p,s,v!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z],V%^,f,i,p,s,v!S#ae!y$j$m$q$}%b%d%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aS,Z!o,tf,[$[$_$c(z)S*i,g,j,u,w,zX,]%^,f,i,v!Q#be!y$j$m$q$}%b%d%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aQ,^!od,_$[$_$c(z)S*i,g,j,w,zV,`%^,f,iprOScw!U!V!W#O#k#n&|'W'Y)W*k+gR)a']etOScw#O#k#n&|'Y+gQ$S!RT&i$R&jR$S!RQ$V!ST&o$U&pQ&U#xR&m$TS(T&S&lV*{*S*|+^R$V!SQ$Y!TT&t$X&uR$Y!TdsOScw#O#k#n&|'Y+gT$p![!]dtOScw#O#k#n&|'Y+gQ*b(yR+_+QQ$a!VQ&{$_Q)T'RR*g)ST&|$`&}Q+b+SQ+m+fR+v+uT+g+a+hR$i!WR$l!YT'Y$k'ZXuOSw#nQ$s!`R'_$sSSO#nR!dSQ%u#sR'y%uUwOS#nR#mwQ&d#}R(g&dQ(c&`R*Z(cS!mX$^R$z!mQ(O%{R)}(OQ&]#yR(_&]Q(]&YR*X(]'r^OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!v^S'f%T+PR)m'fQ'c%RR)j'cW#Oc&|'Y+gR%[#O^#Ue$[$_$c$m)^,zU%e#U,O,PQ,O,fR,P,gQ&j$RR(m&jS*Q(S(oR*y*QQ*T(TR*}*TQ&p$UR(r&pQ&u$XR(w&uQ&}$`R)O&}Q+h+aR+o+hQ'Z$kR)['ZQ!cRQ#luQ#nyQ%Z!|Q&x$]Q'R$bQ'x%tQ(^&[Q(f&cQ(l&iQ(q&oR(v&tVxOS#nWuOSw#nY!|c#O&|'Y+gR%r#kdtOScw#O#k#n&|'Y+gQ$]!UQ$b!VQ$g!WQ)X'WQ*j)WR+U*kdeOScw#O#k#n&|'Y+gQ!oYQ!ya`#gmn,{,|,}-O-P-QQ$[!UQ$_!VQ$c!WQ$j!Xd$m!Z#i#j&g&s'P'T'U(k(tQ$q!_Q$}!qQ%^#QQ%b#SQ%d#TW%h#^,Q,R,SQ%i#_Q%j#`Q%k#aQ%l#bQ%m#cQ'V$fQ'p%cQ(z&xQ({&yQ)S'RQ)Y'XQ)^']Q)c'aU)e'b)i*oQ)q'oQ)t'rQ*i)VQ*s)sQ+T*hQ+V*lQ+W*nQ+Y*rS,f#V'wS,g,b,cQ,i+|Q,j+}Q,k,TQ,l,UQ,m,VQ,n,WQ,o,XQ,p,YQ,q,ZQ,r,[Q,s,]Q,t,^Q,u,_Q,v,`Q,w,aU,z'W)W*kV-a&l*`-^#bZW!O!h!t!z#e#h#u#v#y#|$P$Q$T$W$v$x%W%Y%a%x%y&O&W&]&`&m'e'|'}(S([(c(i(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-d%P[OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^$zdOSacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S!gW-]Q!nYS#{!O-_Q$u!hS%T!t+jS%X!z-UQ%n#e[%o#h#|$x-V-W-XW%w#u'})|*wU&P#v$v,h[&X#y&](S([(o*QQ&f$PQ&h$QQ&n$TQ&r$WS'h%W-YS'i%Y-ZW'l%a(|+R+lS'{%x%yQ(Q&OQ(Y&WQ(d&`Q(p&mU)k'e)l*pQ)z'|Q*[(cS*^(i-[Q+P*`R-c-dS#w|!pS$w!j-TQ&T#xQ(R&QQ(W&UR(X&VT%|#u&OhqOScw!U!V#O#k#n&|'Y+gU$Q!R$R&jU$W!T$X&uQ$e!WY%y#u&O'})|*wQ)`']V-S'W)W*kS&[#y&]S*R(S(oR*z*QY&Y#y&](S(o*QR*W(['``OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&_#}&dW(S&S*S*|+^Q(e&bQ(o&lR*x*PS%U!t*`R+q+jR%S!qQ#PcQ(}&|Q)Z'YR+n+ghpOScw!U!V#O#k#n&|'Y+gQ$d!WQ$n!ZQ%g#VU%p#i'T,bU%q#j'U,cQ(j&gQ(u&sQ)Q'PQ)_']Q)y'wQ*_(kQ*a(tV-R'W)W*kT(U&S&l",nodeNames:"\u26A0 LineComment BlockComment SourceFile PackageClause package DefName ; ImportDecl import ImportSpec . String ) ( SpecList ExprStatement Number Bool Nil Rune VariableName TypedLiteral StructType struct } { StructBody FieldDecl FieldName , PointerType * FunctionType func Parameters Parameter ... InterfaceType interface InterfaceBody MethodElem UnderlyingType ~ TypeElem LogicOp ChannelType chan <- ParenthesizedType QualifiedType TypeName ParameterizedType ] [ TypeArgs ArrayType SliceType MapType map LiteralValue Element Key : Element Key ParenthesizedExpr FunctionLiteral Block Conversion SelectorExpr IndexExpr SliceExpr TypeAssertion CallExpr ParameterizedExpr Arguments CallExpr make new Arguments UnaryExp ArithOp LogicOp BitOp DerefOp BinaryExp ArithOp BitOp BitOp CompareOp LogicOp LogicOp SendStatement IncDecStatement IncDecOp Assignment = UpdateOp VarDecl := ConstDecl const ConstSpec SpecList TypeDecl type TypeSpec TypeParams TypeParam SpecList VarDecl var VarSpec SpecList LabeledStatement LabelName IfStatement if else SwitchStatement switch SwitchBlock Case case default TypeSwitchStatement SwitchBlock Case ForStatement for ForClause RangeClause range GoStatement go SelectStatement select SelectBlock Case ReceiveStatement ReturnStatement return GotoStatement break continue goto FallthroughStatement fallthrough DeferStatement defer FunctionDecl MethodDecl",maxTerm:218,context:d,nodeProps:[["isolate",-3,2,12,20,""],["group",-18,12,17,18,19,20,21,22,66,67,69,70,71,72,73,74,77,81,86,"Expr",-20,16,68,93,94,96,99,101,105,111,115,117,120,126,129,134,136,141,143,147,149,"Statement",-12,23,31,33,38,46,49,50,51,52,56,57,58,"Type"],["openedBy",13,"(",25,"{",53,"["],["closedBy",14,")",26,"}",54,"]"]],propSources:[u],skippedNodes:[0,1,2,153],repeatNodeCount:23,tokenData:":b~RvXY#iYZ#i]^#ipq#iqr#zrs$Xuv&Pvw&^wx&yxy(qyz(vz{({{|)T|})e}!O)j!O!P)u!P!Q+}!Q!R,y!R![-t![!]2^!]!^2k!^!_2p!_!`3]!`!a3e!c!}3x!}#O4j#P#Q4o#Q#R4t#R#S4|#S#T9X#T#o3x#o#p9q#p#q9v#q#r:W#r#s:]$g;'S3x;'S;=`4d<%lO3x~#nS$y~XY#iYZ#i]^#ipq#iU$PP%hQ!_!`$SS$XO!|S~$^W[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y<%lO$X~${O[~~%ORO;'S$X;'S;=`%X;=`O$X~%^X[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y;=`<%l$X<%lO$X~%|P;=`<%l$X~&UP%l~!_!`&X~&^O#U~~&cR%j~vw&l!_!`&X#Q#R&q~&qO%p~~&vP%o~!_!`&X~'OWd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k<%lO&y~'mOd~~'pRO;'S&y;'S;=`'y;=`O&y~(OXd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k;=`<%l&y<%lO&y~(nP;=`<%l&y~(vO^~~({O]~~)QP%Y~!_!`&X~)YQ%f~{|)`!_!`&X~)eO#R~~)jOn~~)oQ%g~}!O)`!_!`&X~)zRZS!O!P*T!Q![*`#R#S+w~*WP!O!P*Z~*`Ou~Q*eTaQ!Q![*`!g!h*t#R#S+w#X#Y*t#]#^+rQ*wS{|+T}!O+T!Q![+^#R#S+lQ+WQ!Q![+^#R#S+lQ+cRaQ!Q![+^#R#S+l#]#^+rQ+oP!Q![+^Q+wOaQQ+zP!Q![*`~,SR%k~z{,]!P!Q,b!_!`&X~,bO$z~~,gSP~OY,bZ;'S,b;'S;=`,s<%lO,b~,vP;=`<%l,bQ-O[aQ!O!P*`!Q![-t!d!e.c!g!h*t!q!r/Z!z!{/x#R#S.]#U#V.c#X#Y*t#]#^+r#c#d/Z#l#m/xQ-yUaQ!O!P*`!Q![-t!g!h*t#R#S.]#X#Y*t#]#^+rQ.`P!Q![-tQ.fR!Q!R.o!R!S.o#R#S/QQ.tSaQ!Q!R.o!R!S.o#R#S/Q#]#^+rQ/TQ!Q!R.o!R!S.oQ/^Q!Q!Y/d#R#S/rQ/iRaQ!Q!Y/d#R#S/r#]#^+rQ/uP!Q!Y/dQ/{T!O!P0[!Q![1c!c!i1c#R#S2Q#T#Z1cQ0_S!Q![0k!c!i0k#R#S1V#T#Z0kQ0pVaQ!Q![0k!c!i0k!r!s*t#R#S1V#T#Z0k#]#^+r#d#e*tQ1YR!Q![0k!c!i0k#T#Z0kQ1hWaQ!O!P0k!Q![1c!c!i1c!r!s*t#R#S2Q#T#Z1c#]#^+r#d#e*tQ2TR!Q![1c!c!i1c#T#Z1c~2cP!a~!_!`2f~2kO#W~~2pOV~~2uR!|S}!O3O!^!_3T!_!`$S~3TO!Q~~3YP%m~!_!`&X~3bP#T~!_!`$S~3jQ!|S!_!`$S!`!a3p~3uP%n~!_!`&X~3}V%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~4gP;=`<%l3x~4oO!W~~4tO!V~~4yP%i~!_!`&X~5RV%O~!Q![5h!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~5o^aQ%O~!O!P*`!Q![5h!c!g3x!g!h6k!h!}3x#R#S4|#T#X3x#X#Y6k#Y#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~6pX%O~{|+T}!O+T!Q![7]!c!}3x#R#S8P#T#o3x$g;'S3x;'S;=`4d<%lO3x~7dXaQ%O~!Q![7]!c!}3x#R#S8P#T#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~8UV%O~!Q![7]!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~8rVaQ%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~9[TO#S9X#S#T$v#T;'S9X;'S;=`9k<%lO9X~9nP;=`<%l9X~9vOj~~9{Q%`~!_!`&X#p#q:R~:WO%q~~:]Oi~~:bO{~",tokenizers:[y,1,2,new i("j~RQYZXz{^~^O$|~~aP!P!Qd~iO$}~~",25,181)],topRules:{SourceFile:[0,3]},dynamicPrecedences:{19:1,51:-1,55:2,69:-1,108:-1},specialized:[{term:184,get:e=>b[e]||-1}],tokenPrec:5451});export{q as parser};
|
|
2
|
+
//# sourceMappingURL=dist-FQDUBZKU.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../node_modules/.pnpm/@lezer+go@1.0.1/node_modules/@lezer/go/dist/index.js"],
|
|
4
|
+
"sourcesContent": ["import { ExternalTokenizer, ContextTracker, LRParser, LocalTokenGroup } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst insertedSemi = 177,\n space$1 = 179,\n identifier = 184,\n String = 12,\n closeParen$1 = 13,\n Number = 17,\n Rune = 20,\n closeBrace$1 = 25,\n closeBracket = 53,\n IncDecOp = 95,\n _return = 142,\n _break = 144,\n _continue = 145,\n fallthrough = 148;\n\nconst newline = 10, carriageReturn = 13, space = 32, tab = 9, slash = 47, closeParen = 41, closeBrace = 125;\n\nconst semicolon = new ExternalTokenizer((input, stack) => {\n for (let scan = 0, next = input.next;;) {\n if (stack.context && (next < 0 || next == newline || next == carriageReturn ||\n next == slash && input.peek(scan + 1) == slash) ||\n next == closeParen || next == closeBrace)\n input.acceptToken(insertedSemi);\n if (next != space && next != tab) break\n next = input.peek(++scan);\n }\n}, {contextual: true});\n\nlet trackedTokens = new Set([IncDecOp, identifier, Rune, String, Number,\n _break, _continue, _return, fallthrough,\n closeParen$1, closeBracket, closeBrace$1]);\n\nconst trackTokens = new ContextTracker({\n start: false,\n shift: (context, term) => term == space$1 ? context : trackedTokens.has(term)\n});\n\nconst goHighlighting = styleTags({\n \"func interface struct chan map const type var\": tags.definitionKeyword,\n \"import package\": tags.moduleKeyword,\n \"switch for go select return break continue goto fallthrough case if else defer\": tags.controlKeyword,\n \"range\": tags.keyword,\n Bool: tags.bool,\n String: tags.string,\n Rune: tags.character,\n Number: tags.number,\n Nil: tags.null,\n VariableName: tags.variableName,\n DefName: tags.definition(tags.variableName),\n TypeName: tags.typeName,\n LabelName: tags.labelName,\n FieldName: tags.propertyName,\n \"FunctionDecl/DefName\": tags.function(tags.definition(tags.variableName)),\n \"TypeSpec/DefName\": tags.definition(tags.typeName),\n \"CallExpr/VariableName\": tags.function(tags.variableName),\n LineComment: tags.lineComment,\n BlockComment: tags.blockComment,\n LogicOp: tags.logicOperator,\n ArithOp: tags.arithmeticOperator,\n BitOp: tags.bitwiseOperator,\n \"DerefOp .\": tags.derefOperator,\n \"UpdateOp IncDecOp\": tags.updateOperator,\n CompareOp: tags.compareOperator,\n \"= :=\": tags.definitionOperator,\n \"<-\": tags.operator,\n \"~ \\\"*\\\"\": tags.modifier,\n \"; ,\": tags.separator,\n \"... :\": tags.punctuation,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,package:10, import:18, true:380, false:380, nil:383, struct:48, func:68, interface:78, chan:94, map:118, make:157, new:159, const:204, type:212, var:224, if:236, else:238, switch:242, case:248, default:250, for:260, range:266, go:270, select:274, return:284, break:288, continue:290, goto:292, fallthrough:296, defer:300};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"!=xO#{QQOOP$SOQOOO&UQTO'#CbO&]QRO'#FlO]QQOOOOQP'#Cn'#CnOOQP'#Co'#CoO&eQQO'#C|O(kQQO'#C{O)]QRO'#GiO+tQQO'#D_OOQP'#Ge'#GeO+{QQO'#GeO.aQTO'#GaO.hQQO'#D`OOQP'#Gm'#GmO.mQRO'#GdO/hQQO'#DgOOQP'#Gd'#GdO/uQQO'#DrO2bQQO'#DsO4QQTO'#GqO,^QTO'#GaO4XQQO'#DxO4^QQO'#D{OOQO'#EQ'#EQOOQO'#ER'#EROOQO'#ES'#ESOOQO'#ET'#ETO4cQQO'#EPO5}QQO'#EPOOQP'#Ga'#GaO6UQQO'#E`O6^QQO'#EcOOQP'#G`'#G`O6cQQO'#EsOOQP'#G_'#G_O&]QRO'#FnOOQO'#Fn'#FnO9QQQO'#G^QOQQOOO&]QROOO9XQQO'#C`O9^QSO'#CdO9lQQO'#C}O9tQQO'#DSO9yQQO'#D[O:kQQO'#CsO:pQQO'#DhO:uQQO'#EeO:}QQO'#EiO;VQQO'#EoO;_QQO'#EuO<uQQO'#ExO<|QQO'#FRO4cQQO'#FWO=WQQO'#FYO=]QRO'#F_O=jQRO'#FaO=uQQO'#FaOOQP'#Fe'#FeO4cQQO'#FgP=zOWO'#C^POOO)CAz)CAzOOQO'#G]'#G]OOQO,5<W,5<WOOQO-E9j-E9jO?TQTO'#CqOOQO'#C|'#C|OOQP,59g,59gO?tQQO'#D_O@fQSO'#FuO@kQQO'#C}O@pQQO'#D[O9XQQO'#FqO@uQRO,5=TOAyQQO,59yOCVQSO,5:[O@kQQO'#C}OCaQQO'#DjOOQP,59^,59^OOQO,5<a,5<aO?tQQO'#DeOOQO,5:e,5:eOOQO-E9s-E9sOOQP,59z,59zOOQP,59|,59|OCqQSO,5:QO(kQQO,5:ROC{QQO,5:RO&]QRO'#FxOOQO'#Fx'#FxOFjQQO'#GpOFwQQO,5:^OF|QQO,5:_OHdQQO,5:`OHlQQO,5:aOHvQRO'#FyOIaQRO,5=]OIuQQO'#DzOOQP,5:d,5:dOOQO'#EV'#EVOOQO'#EW'#EWOOQO'#EX'#EXOOQO'#EZ'#EZOOQO'#E['#E[O4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:wOOQP,5:x,5:xO?tQQO'#EOOOQP,5:g,5:gOOQP,5:k,5:kO9yQQO,59vO4cQQO,5:zO4cQQO,5:}OI|QRO,5;_OOQO,5<Y,5<YOOQO-E9l-E9lO]QQOOOOQP'#Cb'#CbOOQP,58z,58zOOQP'#Cf'#CfOJWQQO'#CfOJ]QSO'#CkOOQP,59O,59OOJkQQO'#DPOLZQQO,5<UOLbQQO,59iOLsQQO,5<TOMpQQO'#DUOOQP,59n,59nOOQP,59v,59vONfQQO,59vONmQQO'#CwOOQP,59_,59_O?tQQO,5:SONxQRO'#EgO! VQQO'#EhOOQP,5;P,5;PO! |QQO'#EkO!!WQQO'#EnOOQP,5;T,5;TO!!`QRO'#EqO!!mQQO'#ErOOQP,5;Z,5;ZO!!uQTO'#CbO!!|QTO,5;aO&]QRO,5;aO!#WQQO,5;jO!$yQTO,5;dO!%WQQO'#EzOOQP,5;d,5;dO&]QRO,5;dO!%cQSO,5;mO!%mQQO'#E`O!%uQQO'#EcO!%zQQO'#FTO!&UQQO'#FTOOQP,5;m,5;mO!&ZQQO,5;mO!&`QTO,5;rO!&mQQO'#F[OOQP,5;t,5;tO!&xQTO'#GqOOQP,5;y,5;yOOQP'#Et'#EtOOQP,5;{,5;{O!']QTO,5<RPOOO'#Fk'#FkP!'jOWO,58xPOOO,58x,58xO!'uQQO,59yO!'zQQO'#GgOOQP,59i,59iO(kQQO,59vOOQP,5<],5<]OOQP-E9o-E9oOOQP1G/e1G/eOOQP1G/v1G/vO!([QSO'#DlO!(lQQO'#DlO!(wQQO'#DkOOQO'#Go'#GoO!(|QQO'#GoO!)UQQO,5:UO!)ZQQO'#GnO!)fQQO,5:PPOQO'#Cq'#CqO(kQQO1G/lOOQP1G/m1G/mO(kQQO1G/mOOQO,5<d,5<dOOQO-E9v-E9vOOQP1G/x1G/xO!)kQSO1G/yOOQP'#Cy'#CyOOQP1G/z1G/zO?tQQO1G/}O!)xQSO1G/{O!*YQQO1G/|O!*gQTO,5<eOOQP-E9w-E9wOOQP,5:f,5:fO!+QQQO,5:fOOQP1G0[1G0[O!,vQTO1G0[O!.wQTO1G0[O!/OQTO1G0[O!0pQTO1G0[O!1QQTO1G0cO!1bQQO,5:jOOQP1G/b1G/bOOQP1G0f1G0fOOQP1G0i1G0iOOQP1G0y1G0yOOQP,59Q,59QO&]QRO'#FmO!1mQSO,59VOOQP,59V,59VOOQO'#DQ'#DQO?tQQO'#DQO!1{QQO'#DQOOQO'#Gh'#GhO!2SQQO'#GhO!2[QQO,59kO!2aQSO'#CqOJkQQO'#DPOOQP,5=R,5=RO@kQQO1G1pOOQP1G/w1G/wO.hQQO'#ElO!2rQRO1G1oO@kQQO1G1oO@kQQO'#DVO?tQQO'#DWOOQP'#Gk'#GkO!2}QRO'#GjOOQP'#Gj'#GjO&]QRO'#FsO!3`QQO,59pOOQP,59p,59pO!3gQRO'#CxO!3uQQO'#CxO!3|QRO'#CxO.hQQO'#CxO&]QRO'#FoO!4XQQO,59cOOQP,59c,59cO!4dQQO1G/nO4cQQO,5;RO!4iQQO,5;RO&]QRO'#FzO!4nQQO,5;SOOQP,5;S,5;SO!6aQQO'#DgO?tQQO,5;VOOQP,5;V,5;VO&]QRO'#F}O!6hQQO,5;YOOQP,5;Y,5;YO!6pQRO,5;]O4cQQO,5;]O&]QRO'#GOO!6{QQO,5;^OOQP,5;^,5;^O!7TQRO1G0{O!7`QQO1G0{O4cQQO1G1UO!8vQQO1G1UOOQP1G1O1G1OO!9OQQO'#GPO!9YQQO,5;fOOQP,5;f,5;fO4cQQO'#E{O!9eQQO'#E{O<uQQO1G1OOOQP1G1X1G1XO!9jQQO,5:zO!9jQQO,5:}O!9tQSO,5;oO!:OQQO,5;oO!:VQQO,5;oO!9OQQO'#GRO!:aQQO,5;vOOQP,5;v,5;vO!<PQQO'#F]O!<WQQO'#F]POOO-E9i-E9iPOOO1G.d1G.dO!<]QQO,5:VO!<gQQO,5=ZO!<tQQO,5=ZOOQP1G/p1G/pO!<|QQO,5=YO!=WQQO,5=YOOQP1G/k1G/kOOQP7+%W7+%WOOQP7+%X7+%XOOQP7+%e7+%eO!=cQQO7+%eO!=hQQO7+%iOOQP7+%g7+%gO!=mQQO7+%gO!=rQQO7+%hO!>PQSO7+%hOOQP7+%h7+%hO4cQQO7+%hOOQP1G0Q1G0QO!>^QQO1G0QOOQP1G0U1G0UO!>fQQO1G0UOF|QQO1G0UOOQO,5<X,5<XOOQO-E9k-E9kOOQP1G.q1G.qOOQO,59l,59lO?tQQO,59lO!?cQQO,5=SO!?jQQO,5=SOOQP1G/V1G/VO!?rQQO,59yO!?}QRO7+'[O!@YQQO'#EmO!@dQQO'#HOO!@lQQO,5;WOOQP7+'Z7+'ZO!@qQRO7+'ZOOQP,59q,59qOOQP,59r,59rOOQO'#DZ'#DZO!@]QQO'#FtO!@|QRO,59tOOQO,5<_,5<_OOQO-E9q-E9qOOQP1G/[1G/[OOQP,59d,59dOHgQQO'#FpO!3uQQO,59dO!A_QRO,59dO!AjQRO,59dOOQO,5<Z,5<ZOOQO-E9m-E9mOOQP1G.}1G.}O(kQQO7+%YOOQP1G0m1G0mO4cQQO1G0mOOQO,5<f,5<fOOQO-E9x-E9xOOQP1G0n1G0nO!AxQQO'#GdOOQP1G0q1G0qOOQO,5<i,5<iOOQO-E9{-E9{OOQP1G0t1G0tO4cQQO1G0wOOQP1G0w1G0wOOQO,5<j,5<jOOQO-E9|-E9|OOQP1G0x1G0xO!B]QQO7+&gO!BeQSO7+&gO!CsQSO7+&pO!CzQQO7+&pOOQO,5<k,5<kOOQO-E9}-E9}OOQP1G1Q1G1QO!DRQQO,5;gOOQO,5;g,5;gO!DWQSO7+&jOOQP7+&j7+&jO!DbQQO7+&pO!7`QQO1G1[O!DgQQO1G1ZOOQO1G1Z1G1ZO!DnQSO1G1ZOOQO,5<m,5<mOOQO-E:P-E:POOQP1G1b1G1bO!DxQSO'#GqO!E]QQO'#F^O!EbQQO'#F^O!EgQQO,5;wOOQO,5;w,5;wO!ElQSO1G/qOOQO1G/q1G/qO!EyQSO'#DoO!FZQQO'#DoO!FfQQO'#DnOOQO,5<c,5<cO!FkQQO1G2uOOQO-E9u-E9uOOQO,5<b,5<bO!FxQQO1G2tOOQO-E9t-E9tOOQP<<IP<<IPOOQP<<IT<<ITOOQP<<IR<<IRO!GSQSO<<ISOOQP<<IS<<ISO4cQQO<<ISO!GaQSO<<ISOOQP7+%l7+%lO!GkQQO7+%lOOQP7+%p7+%pO!GpQQO7+%pO!GuQQO7+%pOOQO1G/W1G/WOOQO,5<^,5<^O!G}QQO1G2nOOQO-E9p-E9pOOQP<<Jv<<JvO.hQQO'#F{O!@YQQO,5;XOOQO,5;X,5;XO!HUQQO,5=jO!H^QQO,5=jOOQO1G0r1G0rOOQP<<Ju<<JuOOQP,5<`,5<`OOQP-E9r-E9rOOQO,5<[,5<[OOQO-E9n-E9nO!HfQRO1G/OOOQP1G/O1G/OOOQP<<Ht<<HtOOQP7+&X7+&XO!HqQQO'#DeOOQP7+&c7+&cOOQP<<JR<<JRO!HxQRO<<JRO!ITQQO<<J[O!I]QQO<<J[OOQO1G1R1G1ROOQP<<JU<<JUO4cQQO<<J[O!IbQSO7+&vOOQO7+&u7+&uO!IlQQO7+&uO4cQQO,5;xOOQO1G1c1G1cO!<]QQO,5:YP!<]QQO'#FwP?tQQO'#FvOOQPAN>nAN>nO4cQQOAN>nO!IsQSOAN>nOOQP<<IW<<IWOOQP<<I[<<I[O!I}QQO<<I[P!>nQQO'#FrOOQO,5<g,5<gOOQO-E9y-E9yOOQO1G0s1G0sOOQO,5<h,5<hO!JVQQO1G3UOOQO-E9z-E9zOOQP7+$j7+$jO!J_QQO'#GnO!B]QQOAN?mO!JjQQOAN?vO!JqQQOAN?vO!KzQSOAN?vOOQO<<Ja<<JaO!LRQSO1G1dO!L]QSO1G/tOOQO1G/t1G/tO!LjQSOG24YOOQPG24YG24YOOQPAN>vAN>vO!LtQQOAN>vP.hQQO'#F|OOQPG25XG25XO!LyQQOG25bO!MOQQO'#FPOOQPG25bG25bO!MZQQOG25bOOQPLD)tLD)tOOQPG24bG24bO!JqQQOLD*|O!9OQQO'#GQO!McQQO,5;kOOQP,5;k,5;kO?tQQO'#FQO!MnQQO'#FQO!MsQQOLD*|OOQP!$'Nh!$'NhOOQO,5<l,5<lOOQO-E:O-E:OOOQP1G1V1G1VO!MzQQO,5;lOOQO,5;l,5;lO!NPQQO!$'NhOOQO1G1W1G1WO!JqQQO!)9DSOOQP!.K9n!.K9nO# {QTO'#CqO#!`QTO'#CqO##}QSO'#CqO#$XQSO'#CqO#&]QSO'#CqO#&gQQO'#FyO#&tQQO'#FyO#'OQQO,5=]O#'ZQQO,5=]O#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO!7`QQO,5:wO!7`QQO,5:zO!7`QQO,5:}O#(yQSO'#CbO#)}QSO'#CbO#*bQSO'#GqO#*rQSO'#GqO#+PQRO'#GgO#+yQSO,5<eO#,ZQSO,5<eO#,hQSO1G0[O#-rQTO1G0[O#-yQSO1G0[O#.TQSO1G0[O#0{QTO1G0[O#1SQSO1G0[O#2eQSO1G0[O#2lQTO1G0[O#2sQSO1G0[O#4XQSO1G0[O#4`QTO1G0[O#4jQSO1G0[O#4wQSO1G0cO#5dQTO'#CqO#5kQTO'#CqO#6bQSO'#GqO#'cQQO'#EPO!7`QQO'#EPOF|QQO'#EPO#8]QQO'#EPO#8gQQO'#EPO#8qQQO'#EPO#8{QQO'#E`O#9TQQO'#EcO@kQQO'#C}O?tQQO,5:RO#9YQQO,59vO#:iQQO,59vO?tQQO,59vO?tQQO1G/lO?tQQO1G/mO?tQQO7+%YO?tQQO'#C{O#:pQQO'#DgO#9YQQO'#D[O#:wQQO'#D[O#:|QSO,5:QO#;WQQO,5:RO#;]QQO1G/nO?tQQO,5:SO#;bQQO'#Dh\",\n stateData: \"#;m~O$yOSPOS$zPQ~OVvOX{O[oO^YOaoOdoOh!POjcOr|Ow}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO$v%QP~OTzO~P]O$z!`O~OVeXZeX^eX^!TXj!TXnUXneX!QeX!WeX!W!TX!|eX#ReX#TeX#UeX#WUX$weX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O!a#hX~P$XOV!bO$w!bO~O[!wX^pX^!wXa!wXd!wXhpXh!wXrpXr!wXwpXw!wX!PpX!P!wX!QpX!Q!wX!WpX!W!wX!]pX!]!wX!p!wX!q!wX%OpX%O!wX%U!wX%V!wX%YpX%Y!wX%f!wX%g!wX%h!wX%i!wX%j!wX~O^!hOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%O!eO%Y!fO~On!lO#W%]XV%]X^%]Xh%]Xr%]Xw%]X!P%]X!Q%]X!W%]X!]%]X#T%]X$w%]X%O%]X%Y%]Xu%]X~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!WaO!]!QO!phO!qhO%O+wO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO~P*aOj!qO^%XX]%XXn%XX!V%XX~O!W!tOV%TXZ%TX^%TXn%TX!Q%TX!W%TX!|%TX#R%TX#T%TX#U%TX$w%TX%Y%TX%`%TX%f%TX%g%TX%i%TX%j%TX%k%TX%l%TX%m%TX%n%TX%o%TX%p%TX%q%TX]%TX!V%TXj%TXi%TX!a%TXu%TX~OZ!sO~P,^O%O!eO~O!W!tO^%WXj%WX]%WXn%WX!V%WXu%WXV%WX$w%WX%`%WX#T%WX[%WX!a%WX~Ou!{O!QnO!V!zO~P*aOV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlOi%dP~O^#QO~OZ#RO^#VOn#TO!Q#cO!W#SO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX$w`X~O!|#`O~P2gO^#VO~O^#eO~O!QnO~P*aO[oO^YOaoOdoOh!POr!pOw}O!QnO!WaO!]!QO!phO!qhO%O+wO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!P#hO~P4jO#T#iO#U#iO~O#W#jO~O!a#kO~OVvO[oO^YOaoOdoOh!POjcOr|Ow}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O$v%QX~P6hO%O#oO~OZ#rO[#qO^#sO%O#oO~O^#uO%O#oO~Oj#yO~O^!hOh!POr!jOw}O!P!OO!Q#|O!WaO!]!QO%O!eO%Y!fO~Oj#}O~O!W$PO~O^$RO%O#oO~O^$UO%O#oO~O^$XO%O#oO~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O$ZO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oj$`O~P;_OV$fOjcO~P;_Oj$kO~O!QnOV$RX$w$RX~P*aO%O$oOV$TX$w$TX~O%O$oO~O${$rO$|$rO$}$tO~OZeX^!TX!W!TXj!TXn!TXh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~O]!TX!V!TXu!TX#T!TXV!TX$w!TX%`!TX[!TX!a!TX~P>VO^!hOh!POr-TOw}O!P-_O!Q-`O!W-^O!]-eO%O!eO%Y!fO~OZ!sO~O^#uO~O!P$xO~On!lO#W%]aV%]a^%]ah%]ar%]aw%]a!P%]a!Q%]a!W%]a!]%]a#T%]a$w%]a%O%]a%Y%]au%]a~O]${O^#QO~OZ#RO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O]$|O!|,WO~PBROj!qOn%QO!QnOi%cP~P*aO!V%WO!|#`O~PBRO!V%YO~OV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oi%dX#p%dX#q%dX~PDQOi%]O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-QO!WaO!]!QO!phO!qhO%O+{O%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^%aO%O%_O~O!QnO!a%cO~P*aO!QnOn$mX#T$mX#U$mXV$mX$w$mX!a$mX~P*aOn#TO#T%ea#U%eaV%ea$w%ea!a%ea~O]%fO~PF|OV#ga$w#ga~PDTO[%sO~OZ#rO[#qO]%vO%O#oO~O^!hOh!POn%zOr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO]%[P~O^&OOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%Y!fO^%ZXj%ZX~O%O%}O~PKfOjcO^qa]qanqa!Vqa~O^#uO!W&SO~O^!hOh!POr-TOw}O{&WO!P-_O!Q-`O!W-^O!]-eO%O,xO%Y!fO~Oi&^O~PL{O^!hOh!POr!jOw}O!Q!kO!WaO!]!QO%O!eO%Y!fO~O!P#hO~PMwOi&eO%O,yO%Y!fO~O#T&gOV#ZX$w#ZX~P?tO]&kO%O#oO~O^!hOh!POr-TOw}O!P-_O!Q-`O!]-eO%O!eO%Y!fO~O!W&lO#T&mO~P! _O]&qO%O#oO~O#T&sOV#eX$w#eX~P?tO]&vO%O#oO~OjeX~P$XOjcO!|,XO~P2gOn!lO#W&yO#W%]X~O^#VOn#TO!Q#cO!W#SO!|,XO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX~OZ&zOj$`O$w`X~P!#cOi'OO#p'PO#q'QO~OZ#ROjcO~P!#cO#T'TO#U#iO~O#W'UO~OV'WO!QnO~P*aOV'XO~OjcO~O!|#`OV#za$w#za~PBROi'[O#p']O#q'^O~On#TO!|#`OV%eX$w%eX!a%eX~PBRO!|#`OV$Za$w$Za~PBRO${$rO$|$rO$}'`O~O]${O~O%O!eO]%ZXn%ZX!V%ZX~PKfO!|#`Oi!_Xn!_X!a!`X~PBROi!_Xn!_X!a!`X~O!a'aO~On'bOi%cX~Oi'dO~On'eO!V%bX!a%bX~O!V'gO~O]'jOn'kO!|,YO~PBROn'nO!V'mO!a'oO!|#`O~PBRO!QnO!V'qO!a'rO~P*aO!|#`On$ma#T$ma#U$maV$ma$w$ma!a$ma~PBRO]'sOu'tO~O%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi!|!xi#R!xi#T!xi#U!xi$w!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~O!V!xii!xi!a!xi~P!+YO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi!V!xii!xi!a!xi~O!|!xi~P!-TO!|#`O~P!-TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%q!xi~O!|#`O!V!xii!xi!a!xi~P!/VO!|#`OV#Pi$w#Pi!a#Pi~PBRO]'uOn'wOu'vO~OZ#rO[#qO]'zO%O#oO~Ou'|O~P?tOn'}O]%[X~O](PO~OZeX^mX^!TXj!TX!W!TX~OjcOV$]i$w$]i~O%`(ZOV%^X$w%^Xn%^X!V%^X~Oi(`O~PL{O[(aO!W!tOVlX$wlX~On(bO~P?tO[(aOVlX$wlX~Oi(hO%O,yO%Y!fO~O!V(iO~O#T(kO~O](nO%O#oO~O[oO^YOaoOdoOh!POr!pOu-bOw}O!P!OO!QnO!V-UO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O+zO~P!4vO](sO%O#oO~O#T(tOV#ea$w#ea~O](xO%O#oO~O#k(yOV#ii$w#ii~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O+xO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^(|O%O%_O~O#p%dP#q%dP~P/uOi)PO#p'PO#q'QO~O!a)RO~O!QnO#y)VO~P*aOV)WO!|#`O~PBROj#wa~P;_OV)WO!QnO~P*aOi)]O#p']O#q'^O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O,eO~P!:lO!a)bO~Oj!qO!QnO~P*aOj!qO!QnOi%ca~P*aOn)iOi%ca~O!V%ba!a%ba~P?tOn)lO!V%ba!a%ba~O])nO~O])oO~O!V)pO~O!QnO!V)rO!a)sO~P*aO!V)rO!a)sO!|#`O~PBRO])uOn)vO~O])wOn)xO~O^!hOh!POr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO~O]%[a~P!>nOn)|O]%[a~O]${O]tXntX~OjcOV$^q$w$^q~On*PO{&WO~P?tOn*SO!V%rX~O!V*UO~OjcOV$]q$w$]q~O%`(ZOV|a$w|an|a!V|a~O[*]OVla$wla~O[*]O!W!tOVla$wla~On*PO{&WO!W*`O^%WXj%WX~P! _OjcO#j!UO~OjcO!|,XO~PBROZ*dO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O!|#`O~P!BoO#^*eO~P?tO!a*fO~Oj$`O!|,XO~P!BoO#W*hO~Oj#wi~P;_OV*kO!|#`O~PBROn#TO!Q#cO!|#`O!a$QX#T%eX~PBRO#T*lO~O#W*lO~O!a*mO~O!|#`Oi!_in!_i~PBRO!|#`Oi!bXn!bX!a!cX~PBROi!bXn!bX!a!cX~O!a*nO~Oj!qO!QnOi%ci~P*aO!V%bi!a%bi~P?tO!V*qO!a*rO!|#`O~PBRO!V*qO!|#`O~PBRO]*tO~O]*uO~O]*uOu*vO~O]%[i~P!>nO%O!eO!V%ra~On*|O!V%ra~O[+OOVli$wli~O%O+yO~P!4vO#k+QOV#iy$w#iy~O^+RO%O%_O~O]+SO~O!|,XOj#xq~PBROj#wq~P;_O!V+ZO!|#`O~PBRO]+[On+]O~O%O!eO!V%ri~O^#QOn'eO!V%bX~O#^+`O~P?tOj+aO~O^#VO!W#SO!|#`O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~OZ+cO~P!JvO!|#`O!a$Qi~PBRO!|#`Oi!bin!bi~PBRO!V+dO!|#`O~PBRO]+eO~O]+fO~Oi+iO#p+jO#q+kO~O^+lO%O%_O~Oi+pO#p+jO#q+kO~O!a+rO~O#^+sO~P?tO!a+tO~O]+uO~OZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXVeXneX!QeX#ReX#TeX#UeX$weX~O]eX]!TX!VeXieX!aeX~P!NUOjeX~P!NUOZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXn!TX!VeX~O]eX!V!TX~P#!gOh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~P#!gOZeX^eX^!TXj!TXneX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O]eXueX~P#$xO]$mXn$mXu$mX~PF|Oj$mXn$mX~P!7`On+|O]%eau%ea~On+}Oj%ea~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-OO!WaO!]!QO!phO!qhO%O+yO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~OZeX]!TX^UXhUXnUXn!TXrUXuUXwUX!PUX!QUX!WUX!W!TX!]UX%OUX%YUX~OnUX!QeX!aeX#TeX#WUX~P#$xOn+|O!|,YO]%eXu%eX~PBROn+}O!|,XOj%eX~PBRO^&OOV%ZXj%ZX$w%ZX]%ZXn%ZX!V%ZXu%ZX%`%ZX#T%ZX[%ZX!a%ZX~P?wO!|,YO]$man$mau$ma~PBRO!|,XOj$man$ma~PBRO%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~Oj!xi~P!+YOn!xiu!xi~P#,hO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%p!xi%q!xi~O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xij!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi~O!|!xi~P#/_On!xiu!xi~P#.TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi%p!xi%q!xi~O!|,WO~P#1^O!|,XO~P#/_O!|,YOn!xiu!xi~P#1^O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OZ!xi]!xi^!xi!W!xi%q!xi~O!|,WO~P#3QO!|,XOj!xi~P!/VO!|,YOn!xiu!xi~P#3QO!|,XOj#Pi~PBROV!TXZeX^mX!W!TX$w!TX~O%`!TX~P#5RO[!TXhmXnmXrmXwmX!PmX!QmX!WmX!]mX%OmX%YmX~P#5ROn#TO!Q,aO!|,XO#R#dOj`X#T%eX#U%eX~PBRO[oO^YOaoOdoOh!POr!pOw}O!P#hO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO%O+yO~P#6{O!Q-PO%O+xO~P#6{O!Q-QO%O+{O~P#6{O#T,bO#U,bO~O#W,cO~O^!hOh!POr-TOw}O!P-_O!Q-WO!W-^O!]-eO%O!eO%Y!fO~O^!hOh!POr-TOw}O!Q-`O!W-^O!]-eO%O!eO%Y!fO~O!P-VO~P#9zO%O+wO~P!4vO!P-XO~O!V-YO!|#`O~PBRO!V-ZO~O!V-[O~O!W-dO~OP%ka%Oa~\",\n goto: \"!FW%sPP%tP%wP%zP'SP'XPPPP'`'cP'u'uP)w'u-_PPP0j0m0qP1V4b1VP7s8WP1VP8a8d8hP8p8w1VPP1V8{<`?vPPCY-_-_-_PCdCuCxPC{DQ'u'uDV'uES'u'u'u'uGUIW'uPPJR'uJUMjMjMj'u! r! r!#SP!$`!%d!&d'cP'cPP'cP!&yP!'V!'^!&yP!'a!'h!'n!'w!&yP!'z!(R!&y!(U!(fPP!&yP!(x!)UPP!&y!)Y!)c!&yP!)g!)gP!&yP!&yP!)j!)m!&v!&yP!&yPPP!&yP!&yP!)q!)q!)w!)}!*U!*[!*d!*j!*p!*w!*}!+T!+Z!.q!.x!/O!/X!/m!/s!/z!0Q!0W!0^!0d!0jPPPPPPPPP!0p!1f!1k!1{!2kPP!7P!:^P!>u!?Z!?_!@Z!@fP!@p!D_!Df!Di!DuPPPPPPPPPPPP!FSR!aPRyO!WXOScw!R!T!U!W#O#k#n#u$R$X&O&j&u&|'W'Y']'})W)|*k*w+gQ#pzU#r{#s%uQ#x|U$T!S$U&pQ$^!VQ$y!lR)U'RVROS#nQ#t{T%t#s%uR#t{qrOScw!U!V!W#O#k#n&|'W'Y)W*k+g%PoOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%O]OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^#u!iW^!O!h!t!z#e#h#u#v#y#|#}$P$Q$T$W$v$x%W%Y%a%x%y&O&S&W&]&`&b&d&m'e'|'}(S([(c(i(o(|)l)|*P*Q*S*p*w*|+R+^+j+l,h-U-V-W-X-Y-Z-[-]-_-d'cbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR$O!PT&c#}&dW%`#R&z*d+cQ&Q#vS&V#y&]S&`#}&dR*Y(b'cZOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d%fWOSWYacmnw!O!U!V!W!X!Z!_!q!z#O#Q#S#T#V#^#_#`#a#b#c#h#i#j#k#n#v#|$f$v$x%W%Y%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(i(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S&b#}&d!{-]!h!t#e#u#y$P$Q$T$W%a%x%y&O&W&]&`&m'e'|'}(S([(c(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-dQ#v|S$v!j!pU&P#v$v,hZ,h#x&Q&U&V-TS%{#u&OV){'})|*wR#z}T&[#y&]]&X#y&](S([(o*QZ&Z#y&](S(o*QT([&Y(]'s_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d'r_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!w^'bbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&a#}&dR(d&bS!u]fX!x`&_(e(oQ!r[Q%O!qQ)d'aU)f'b)i*oR+X*nR%R!qR%P!qV)h'b)i*oV)g'b)i*odtOScw#O#k#n&|'Y+gQ$h!WQ&R#wQ&w$[S'S$c$iQ(V&TQ*O(RQ*V(WQ*b(yQ*c(zR+_+Q%PfOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%PgOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^!q#Weg!o!y$[$_$c$j$m$q$}%^%b%d%m'V'p(z({)S)Y)^)c)e)q)t*i*s+T+V+W+Y,f,g,i,j,w,z-aR#fh#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z[,V%^,f,i,p,s,v`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q!Y#^e!y$j$m$q$}%b%d%i%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aY,Q!o,k,n,q,tl,R$[$_$c(z)S*i,g,j,l,o,r,u,w,z_,S%^,f,i,m,p,s,v!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z],V%^,f,i,p,s,v!S#ae!y$j$m$q$}%b%d%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aS,Z!o,tf,[$[$_$c(z)S*i,g,j,u,w,zX,]%^,f,i,v!Q#be!y$j$m$q$}%b%d%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aQ,^!od,_$[$_$c(z)S*i,g,j,w,zV,`%^,f,iprOScw!U!V!W#O#k#n&|'W'Y)W*k+gR)a']etOScw#O#k#n&|'Y+gQ$S!RT&i$R&jR$S!RQ$V!ST&o$U&pQ&U#xR&m$TS(T&S&lV*{*S*|+^R$V!SQ$Y!TT&t$X&uR$Y!TdsOScw#O#k#n&|'Y+gT$p![!]dtOScw#O#k#n&|'Y+gQ*b(yR+_+QQ$a!VQ&{$_Q)T'RR*g)ST&|$`&}Q+b+SQ+m+fR+v+uT+g+a+hR$i!WR$l!YT'Y$k'ZXuOSw#nQ$s!`R'_$sSSO#nR!dSQ%u#sR'y%uUwOS#nR#mwQ&d#}R(g&dQ(c&`R*Z(cS!mX$^R$z!mQ(O%{R)}(OQ&]#yR(_&]Q(]&YR*X(]'r^OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!v^S'f%T+PR)m'fQ'c%RR)j'cW#Oc&|'Y+gR%[#O^#Ue$[$_$c$m)^,zU%e#U,O,PQ,O,fR,P,gQ&j$RR(m&jS*Q(S(oR*y*QQ*T(TR*}*TQ&p$UR(r&pQ&u$XR(w&uQ&}$`R)O&}Q+h+aR+o+hQ'Z$kR)['ZQ!cRQ#luQ#nyQ%Z!|Q&x$]Q'R$bQ'x%tQ(^&[Q(f&cQ(l&iQ(q&oR(v&tVxOS#nWuOSw#nY!|c#O&|'Y+gR%r#kdtOScw#O#k#n&|'Y+gQ$]!UQ$b!VQ$g!WQ)X'WQ*j)WR+U*kdeOScw#O#k#n&|'Y+gQ!oYQ!ya`#gmn,{,|,}-O-P-QQ$[!UQ$_!VQ$c!WQ$j!Xd$m!Z#i#j&g&s'P'T'U(k(tQ$q!_Q$}!qQ%^#QQ%b#SQ%d#TW%h#^,Q,R,SQ%i#_Q%j#`Q%k#aQ%l#bQ%m#cQ'V$fQ'p%cQ(z&xQ({&yQ)S'RQ)Y'XQ)^']Q)c'aU)e'b)i*oQ)q'oQ)t'rQ*i)VQ*s)sQ+T*hQ+V*lQ+W*nQ+Y*rS,f#V'wS,g,b,cQ,i+|Q,j+}Q,k,TQ,l,UQ,m,VQ,n,WQ,o,XQ,p,YQ,q,ZQ,r,[Q,s,]Q,t,^Q,u,_Q,v,`Q,w,aU,z'W)W*kV-a&l*`-^#bZW!O!h!t!z#e#h#u#v#y#|$P$Q$T$W$v$x%W%Y%a%x%y&O&W&]&`&m'e'|'}(S([(c(i(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-d%P[OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^$zdOSacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S!gW-]Q!nYS#{!O-_Q$u!hS%T!t+jS%X!z-UQ%n#e[%o#h#|$x-V-W-XW%w#u'})|*wU&P#v$v,h[&X#y&](S([(o*QQ&f$PQ&h$QQ&n$TQ&r$WS'h%W-YS'i%Y-ZW'l%a(|+R+lS'{%x%yQ(Q&OQ(Y&WQ(d&`Q(p&mU)k'e)l*pQ)z'|Q*[(cS*^(i-[Q+P*`R-c-dS#w|!pS$w!j-TQ&T#xQ(R&QQ(W&UR(X&VT%|#u&OhqOScw!U!V#O#k#n&|'Y+gU$Q!R$R&jU$W!T$X&uQ$e!WY%y#u&O'})|*wQ)`']V-S'W)W*kS&[#y&]S*R(S(oR*z*QY&Y#y&](S(o*QR*W(['``OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&_#}&dW(S&S*S*|+^Q(e&bQ(o&lR*x*PS%U!t*`R+q+jR%S!qQ#PcQ(}&|Q)Z'YR+n+ghpOScw!U!V#O#k#n&|'Y+gQ$d!WQ$n!ZQ%g#VU%p#i'T,bU%q#j'U,cQ(j&gQ(u&sQ)Q'PQ)_']Q)y'wQ*_(kQ*a(tV-R'W)W*kT(U&S&l\",\n nodeNames: \"\u26A0 LineComment BlockComment SourceFile PackageClause package DefName ; ImportDecl import ImportSpec . String ) ( SpecList ExprStatement Number Bool Nil Rune VariableName TypedLiteral StructType struct } { StructBody FieldDecl FieldName , PointerType * FunctionType func Parameters Parameter ... InterfaceType interface InterfaceBody MethodElem UnderlyingType ~ TypeElem LogicOp ChannelType chan <- ParenthesizedType QualifiedType TypeName ParameterizedType ] [ TypeArgs ArrayType SliceType MapType map LiteralValue Element Key : Element Key ParenthesizedExpr FunctionLiteral Block Conversion SelectorExpr IndexExpr SliceExpr TypeAssertion CallExpr ParameterizedExpr Arguments CallExpr make new Arguments UnaryExp ArithOp LogicOp BitOp DerefOp BinaryExp ArithOp BitOp BitOp CompareOp LogicOp LogicOp SendStatement IncDecStatement IncDecOp Assignment = UpdateOp VarDecl := ConstDecl const ConstSpec SpecList TypeDecl type TypeSpec TypeParams TypeParam SpecList VarDecl var VarSpec SpecList LabeledStatement LabelName IfStatement if else SwitchStatement switch SwitchBlock Case case default TypeSwitchStatement SwitchBlock Case ForStatement for ForClause RangeClause range GoStatement go SelectStatement select SelectBlock Case ReceiveStatement ReturnStatement return GotoStatement break continue goto FallthroughStatement fallthrough DeferStatement defer FunctionDecl MethodDecl\",\n maxTerm: 218,\n context: trackTokens,\n nodeProps: [\n [\"isolate\", -3,2,12,20,\"\"],\n [\"group\", -18,12,17,18,19,20,21,22,66,67,69,70,71,72,73,74,77,81,86,\"Expr\",-20,16,68,93,94,96,99,101,105,111,115,117,120,126,129,134,136,141,143,147,149,\"Statement\",-12,23,31,33,38,46,49,50,51,52,56,57,58,\"Type\"],\n [\"openedBy\", 13,\"(\",25,\"{\",53,\"[\"],\n [\"closedBy\", 14,\")\",26,\"}\",54,\"]\"]\n ],\n propSources: [goHighlighting],\n skippedNodes: [0,1,2,153],\n repeatNodeCount: 23,\n tokenData: \":b~RvXY#iYZ#i]^#ipq#iqr#zrs$Xuv&Pvw&^wx&yxy(qyz(vz{({{|)T|})e}!O)j!O!P)u!P!Q+}!Q!R,y!R![-t![!]2^!]!^2k!^!_2p!_!`3]!`!a3e!c!}3x!}#O4j#P#Q4o#Q#R4t#R#S4|#S#T9X#T#o3x#o#p9q#p#q9v#q#r:W#r#s:]$g;'S3x;'S;=`4d<%lO3x~#nS$y~XY#iYZ#i]^#ipq#iU$PP%hQ!_!`$SS$XO!|S~$^W[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y<%lO$X~${O[~~%ORO;'S$X;'S;=`%X;=`O$X~%^X[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y;=`<%l$X<%lO$X~%|P;=`<%l$X~&UP%l~!_!`&X~&^O#U~~&cR%j~vw&l!_!`&X#Q#R&q~&qO%p~~&vP%o~!_!`&X~'OWd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k<%lO&y~'mOd~~'pRO;'S&y;'S;=`'y;=`O&y~(OXd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k;=`<%l&y<%lO&y~(nP;=`<%l&y~(vO^~~({O]~~)QP%Y~!_!`&X~)YQ%f~{|)`!_!`&X~)eO#R~~)jOn~~)oQ%g~}!O)`!_!`&X~)zRZS!O!P*T!Q![*`#R#S+w~*WP!O!P*Z~*`Ou~Q*eTaQ!Q![*`!g!h*t#R#S+w#X#Y*t#]#^+rQ*wS{|+T}!O+T!Q![+^#R#S+lQ+WQ!Q![+^#R#S+lQ+cRaQ!Q![+^#R#S+l#]#^+rQ+oP!Q![+^Q+wOaQQ+zP!Q![*`~,SR%k~z{,]!P!Q,b!_!`&X~,bO$z~~,gSP~OY,bZ;'S,b;'S;=`,s<%lO,b~,vP;=`<%l,bQ-O[aQ!O!P*`!Q![-t!d!e.c!g!h*t!q!r/Z!z!{/x#R#S.]#U#V.c#X#Y*t#]#^+r#c#d/Z#l#m/xQ-yUaQ!O!P*`!Q![-t!g!h*t#R#S.]#X#Y*t#]#^+rQ.`P!Q![-tQ.fR!Q!R.o!R!S.o#R#S/QQ.tSaQ!Q!R.o!R!S.o#R#S/Q#]#^+rQ/TQ!Q!R.o!R!S.oQ/^Q!Q!Y/d#R#S/rQ/iRaQ!Q!Y/d#R#S/r#]#^+rQ/uP!Q!Y/dQ/{T!O!P0[!Q![1c!c!i1c#R#S2Q#T#Z1cQ0_S!Q![0k!c!i0k#R#S1V#T#Z0kQ0pVaQ!Q![0k!c!i0k!r!s*t#R#S1V#T#Z0k#]#^+r#d#e*tQ1YR!Q![0k!c!i0k#T#Z0kQ1hWaQ!O!P0k!Q![1c!c!i1c!r!s*t#R#S2Q#T#Z1c#]#^+r#d#e*tQ2TR!Q![1c!c!i1c#T#Z1c~2cP!a~!_!`2f~2kO#W~~2pOV~~2uR!|S}!O3O!^!_3T!_!`$S~3TO!Q~~3YP%m~!_!`&X~3bP#T~!_!`$S~3jQ!|S!_!`$S!`!a3p~3uP%n~!_!`&X~3}V%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~4gP;=`<%l3x~4oO!W~~4tO!V~~4yP%i~!_!`&X~5RV%O~!Q![5h!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~5o^aQ%O~!O!P*`!Q![5h!c!g3x!g!h6k!h!}3x#R#S4|#T#X3x#X#Y6k#Y#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~6pX%O~{|+T}!O+T!Q![7]!c!}3x#R#S8P#T#o3x$g;'S3x;'S;=`4d<%lO3x~7dXaQ%O~!Q![7]!c!}3x#R#S8P#T#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~8UV%O~!Q![7]!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~8rVaQ%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~9[TO#S9X#S#T$v#T;'S9X;'S;=`9k<%lO9X~9nP;=`<%l9X~9vOj~~9{Q%`~!_!`&X#p#q:R~:WO%q~~:]Oi~~:bO{~\",\n tokenizers: [semicolon, 1, 2, new LocalTokenGroup(\"j~RQYZXz{^~^O$|~~aP!P!Qd~iO$}~~\", 25, 181)],\n topRules: {\"SourceFile\":[0,3]},\n dynamicPrecedences: {\"19\":1,\"51\":-1,\"55\":2,\"69\":-1,\"108\":-1},\n specialized: [{term: 184, get: (value) => spec_identifier[value] || -1}],\n tokenPrec: 5451\n});\n\nexport { parser };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["insertedSemi", "space$1", "identifier", "String", "closeParen$1", "Number", "Rune", "closeBrace$1", "closeBracket", "IncDecOp", "_return", "_break", "_continue", "fallthrough", "newline", "carriageReturn", "space", "tab", "slash", "closeParen", "closeBrace", "semicolon", "ExternalTokenizer", "input", "stack", "scan", "next", "trackedTokens", "trackTokens", "ContextTracker", "context", "term", "goHighlighting", "styleTags", "tags", "spec_identifier", "parser", "LRParser", "LocalTokenGroup", "value"]
|
|
7
|
+
}
|