@pyscript/core 0.3.7 → 0.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/codemirror-3hMOlj_s.js +2 -0
  2. package/dist/codemirror-3hMOlj_s.js.map +1 -0
  3. package/dist/codemirror_commands-Y4OsE8Y2.js +2 -0
  4. package/dist/codemirror_commands-Y4OsE8Y2.js.map +1 -0
  5. package/dist/codemirror_lang-python-p0uky9oC.js +2 -0
  6. package/dist/codemirror_lang-python-p0uky9oC.js.map +1 -0
  7. package/dist/codemirror_language-U9l5bLBC.js +2 -0
  8. package/dist/codemirror_language-U9l5bLBC.js.map +1 -0
  9. package/dist/codemirror_state-zH-H1oSI.js +2 -0
  10. package/dist/codemirror_state-zH-H1oSI.js.map +1 -0
  11. package/dist/codemirror_view-tmIj4olz.js +2 -0
  12. package/dist/codemirror_view-tmIj4olz.js.map +1 -0
  13. package/dist/core-ifSZyON7.js +5 -0
  14. package/dist/core-ifSZyON7.js.map +1 -0
  15. package/dist/core.css +1 -1
  16. package/dist/core.js +1 -4
  17. package/dist/core.js.map +1 -1
  18. package/dist/deprecations-manager-u20LUlLl.js +2 -0
  19. package/dist/{deprecations-manager-uwH5iaZ9.js.map → deprecations-manager-u20LUlLl.js.map} +1 -1
  20. package/dist/error-ZSXf8h5x.js +2 -0
  21. package/dist/{error-96hMSEw8.js.map → error-ZSXf8h5x.js.map} +1 -1
  22. package/dist/index-qM2iyXcZ.js +2 -0
  23. package/dist/index-qM2iyXcZ.js.map +1 -0
  24. package/dist/py-editor-HVgDslnW.js +2 -0
  25. package/dist/py-editor-HVgDslnW.js.map +1 -0
  26. package/dist/py-terminal-lYFDY-Tg.js +2 -0
  27. package/dist/{py-terminal-qRUZOJY9.js.map → py-terminal-lYFDY-Tg.js.map} +1 -1
  28. package/dist/xterm-f2QfYNGL.js.map +1 -1
  29. package/dist/xterm-readline-ONk85xtH.js.map +1 -1
  30. package/dist/xterm.css +0 -1
  31. package/dist/xterm_addon-fit-E4yMPZTX.js.map +1 -1
  32. package/package.json +12 -5
  33. package/src/3rd-party/xterm-readline.js +0 -1
  34. package/src/3rd-party/xterm.css +0 -1
  35. package/src/3rd-party/xterm.js +0 -1
  36. package/src/3rd-party/xterm_addon-fit.js +0 -1
  37. package/src/config.js +38 -12
  38. package/src/core.css +38 -0
  39. package/src/exceptions.js +1 -1
  40. package/src/hooks.js +1 -1
  41. package/src/plugins/py-editor.js +229 -0
  42. package/src/plugins.js +1 -0
  43. package/src/stdlib/pyscript/magic_js.py +2 -1
  44. package/src/stdlib/pyscript.js +2 -2
  45. package/src/stdlib/pyweb/pydom.py +100 -0
  46. package/src/stdlib.js +7 -3
  47. package/types/3rd-party/codemirror.d.ts +1 -0
  48. package/types/3rd-party/codemirror_commands.d.ts +1 -0
  49. package/types/3rd-party/codemirror_lang-python.d.ts +1 -0
  50. package/types/3rd-party/codemirror_language.d.ts +1 -0
  51. package/types/3rd-party/codemirror_state.d.ts +1 -0
  52. package/types/3rd-party/codemirror_view.d.ts +1 -0
  53. package/types/plugins/py-editor.d.ts +2 -0
  54. package/types/plugins.d.ts +1 -0
  55. package/dist/deprecations-manager-uwH5iaZ9.js +0 -2
  56. package/dist/error-96hMSEw8.js +0 -2
  57. package/dist/py-terminal-qRUZOJY9.js +0 -2
  58. package/types/toml.d.ts +0 -12
  59. package/types/utils.d.ts +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codemirror_lang-python-p0uky9oC.js","sources":["../node_modules/@lezer/lr/dist/index.js","../node_modules/@lezer/python/dist/index.js","../node_modules/@codemirror/lang-python/dist/index.js"],"sourcesContent":["import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/**\nA parse stack. These are used internally by the parser to track\nparsing progress. They also provide some properties and methods\nthat external code such as a tokenizer can use to get information\nabout the parse state.\n*/\nclass Stack {\n /**\n @internal\n */\n constructor(\n /**\n The parse that this stack is part of @internal\n */\n p, \n /**\n Holds state, input pos, buffer index triplets for all but the\n top state @internal\n */\n stack, \n /**\n The current parse state @internal\n */\n state, \n // The position at which the next reduce should take place. This\n // can be less than `this.pos` when skipped expressions have been\n // added to the stack (which should be moved outside of the next\n // reduction)\n /**\n @internal\n */\n reducePos, \n /**\n The input position up to which this stack has parsed.\n */\n pos, \n /**\n The dynamic score of the stack, including dynamic precedence\n and error-recovery penalties\n @internal\n */\n score, \n // The output buffer. Holds (type, start, end, size) quads\n // representing nodes created by the parser, where `size` is\n // amount of buffer array entries covered by this node.\n /**\n @internal\n */\n buffer, \n // The base offset of the buffer. When stacks are split, the split\n // instance shared the buffer history with its parent up to\n // `bufferBase`, which is the absolute offset (including the\n // offset of previous splits) into the buffer at which this stack\n // starts writing.\n /**\n @internal\n */\n bufferBase, \n /**\n @internal\n */\n curContext, \n /**\n @internal\n */\n lookAhead = 0, \n // A parent stack from which this was split off, if any. This is\n // set up so that it always points to a stack that has some\n // additional buffer content, never to a stack with an equal\n // `bufferBase`.\n /**\n @internal\n */\n parent) {\n this.p = p;\n this.stack = stack;\n this.state = state;\n this.reducePos = reducePos;\n this.pos = pos;\n this.score = score;\n this.buffer = buffer;\n this.bufferBase = bufferBase;\n this.curContext = curContext;\n this.lookAhead = lookAhead;\n this.parent = parent;\n }\n /**\n @internal\n */\n toString() {\n return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n }\n // Start an empty stack\n /**\n @internal\n */\n static start(p, state, pos = 0) {\n let cx = p.parser.context;\n return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n }\n /**\n The stack's current [context](#lr.ContextTracker) value, if\n any. Its type will depend on the context tracker's type\n parameter, or it will be `null` if there is no context\n tracker.\n */\n get context() { return this.curContext ? this.curContext.context : null; }\n // Push a state onto the stack, tracking its start position as well\n // as the buffer base at that point.\n /**\n @internal\n */\n pushState(state, start) {\n this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n this.state = state;\n }\n // Apply a reduce action\n /**\n @internal\n */\n reduce(action) {\n var _a;\n let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n let { parser } = this.p;\n let dPrec = parser.dynamicPrecedence(type);\n if (dPrec)\n this.score += dPrec;\n if (depth == 0) {\n this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n // Zero-depth reductions are a special case—they add stuff to\n // the stack without popping anything off.\n if (type < parser.minRepeatTerm)\n this.storeNode(type, this.reducePos, this.reducePos, 4, true);\n this.reduceContext(type, this.reducePos);\n return;\n }\n // Find the base index into `this.stack`, content after which will\n // be dropped. Note that with `StayFlag` reductions we need to\n // consume two extra frames (the dummy parent node for the skipped\n // expression and the state that we'll be staying in, which should\n // be moved to `this.state`).\n let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n let start = base ? this.stack[base - 2] : this.p.ranges[0].from, size = this.reducePos - start;\n // This is a kludge to try and detect overly deep left-associative\n // trees, which will not increase the parse stack depth and thus\n // won't be caught by the regular stack-depth limit check.\n if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n if (start == this.p.lastBigReductionStart) {\n this.p.bigReductionCount++;\n this.p.lastBigReductionSize = size;\n }\n else if (this.p.lastBigReductionSize < size) {\n this.p.bigReductionCount = 1;\n this.p.lastBigReductionStart = start;\n this.p.lastBigReductionSize = size;\n }\n }\n let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n // Store normal terms or `R -> R R` repeat reductions\n if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n this.storeNode(type, start, pos, count + 4, true);\n }\n if (action & 262144 /* Action.StayFlag */) {\n this.state = this.stack[base];\n }\n else {\n let baseStateID = this.stack[base - 3];\n this.state = parser.getGoto(baseStateID, type, true);\n }\n while (this.stack.length > base)\n this.stack.pop();\n this.reduceContext(type, start);\n }\n // Shift a value into the buffer\n /**\n @internal\n */\n storeNode(term, start, end, size = 4, isReduce = false) {\n if (term == 0 /* Term.Err */ &&\n (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n // Try to omit/merge adjacent error nodes\n let cur = this, top = this.buffer.length;\n if (top == 0 && cur.parent) {\n top = cur.bufferBase - cur.parent.bufferBase;\n cur = cur.parent;\n }\n if (top > 0 && cur.buffer[top - 4] == 0 /* Term.Err */ && cur.buffer[top - 1] > -1) {\n if (start == end)\n return;\n if (cur.buffer[top - 2] >= start) {\n cur.buffer[top - 2] = end;\n return;\n }\n }\n }\n if (!isReduce || this.pos == end) { // Simple case, just append\n this.buffer.push(term, start, end, size);\n }\n else { // There may be skipped nodes that have to be moved forward\n let index = this.buffer.length;\n if (index > 0 && this.buffer[index - 4] != 0 /* Term.Err */)\n while (index > 0 && this.buffer[index - 2] > end) {\n // Move this record forward\n this.buffer[index] = this.buffer[index - 4];\n this.buffer[index + 1] = this.buffer[index - 3];\n this.buffer[index + 2] = this.buffer[index - 2];\n this.buffer[index + 3] = this.buffer[index - 1];\n index -= 4;\n if (size > 4)\n size -= 4;\n }\n this.buffer[index] = term;\n this.buffer[index + 1] = start;\n this.buffer[index + 2] = end;\n this.buffer[index + 3] = size;\n }\n }\n // Apply a shift action\n /**\n @internal\n */\n shift(action, type, start, end) {\n if (action & 131072 /* Action.GotoFlag */) {\n this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n }\n else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n let nextState = action, { parser } = this.p;\n if (end > this.pos || type <= parser.maxNode) {\n this.pos = end;\n if (!parser.stateFlag(nextState, 1 /* StateFlag.Skipped */))\n this.reducePos = end;\n }\n this.pushState(nextState, start);\n this.shiftContext(type, start);\n if (type <= parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n else { // Shift-and-stay, which means this is a skipped token\n this.pos = end;\n this.shiftContext(type, start);\n if (type <= this.p.parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n }\n // Apply an action\n /**\n @internal\n */\n apply(action, next, nextStart, nextEnd) {\n if (action & 65536 /* Action.ReduceFlag */)\n this.reduce(action);\n else\n this.shift(action, next, nextStart, nextEnd);\n }\n // Add a prebuilt (reused) node into the buffer.\n /**\n @internal\n */\n useNode(value, next) {\n let index = this.p.reused.length - 1;\n if (index < 0 || this.p.reused[index] != value) {\n this.p.reused.push(value);\n index++;\n }\n let start = this.pos;\n this.reducePos = this.pos = start + value.length;\n this.pushState(next, start);\n this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n }\n // Split the stack. Due to the buffer sharing and the fact\n // that `this.stack` tends to stay quite shallow, this isn't very\n // expensive.\n /**\n @internal\n */\n split() {\n let parent = this;\n let off = parent.buffer.length;\n // Because the top of the buffer (after this.pos) may be mutated\n // to reorder reductions and skipped tokens, and shared buffers\n // should be immutable, this copies any outstanding skipped tokens\n // to the new buffer, and puts the base pointer before them.\n while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n off -= 4;\n let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n // Make sure parent points to an actual parent with content, if there is such a parent.\n while (parent && base == parent.bufferBase)\n parent = parent.parent;\n return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n }\n // Try to recover from an error by 'deleting' (ignoring) one token.\n /**\n @internal\n */\n recoverByDelete(next, nextEnd) {\n let isNode = next <= this.p.parser.maxNode;\n if (isNode)\n this.storeNode(next, this.pos, nextEnd, 4);\n this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n this.pos = this.reducePos = nextEnd;\n this.score -= 190 /* Recover.Delete */;\n }\n /**\n Check if the given term would be able to be shifted (optionally\n after some reductions) on this stack. This can be useful for\n external tokenizers that want to make sure they only provide a\n given token when it applies.\n */\n canShift(term) {\n for (let sim = new SimulatedStack(this);;) {\n let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n if (action == 0)\n return false;\n if ((action & 65536 /* Action.ReduceFlag */) == 0)\n return true;\n sim.reduce(action);\n }\n }\n // Apply up to Recover.MaxNext recovery actions that conceptually\n // inserts some missing token or rule.\n /**\n @internal\n */\n recoverByInsert(next) {\n if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n return [];\n let nextStates = this.p.parser.nextStates(this.state);\n if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n let best = [];\n for (let i = 0, s; i < nextStates.length; i += 2) {\n if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n best.push(nextStates[i], s);\n }\n if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n let s = nextStates[i + 1];\n if (!best.some((v, i) => (i & 1) && v == s))\n best.push(nextStates[i], s);\n }\n nextStates = best;\n }\n let result = [];\n for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n let s = nextStates[i + 1];\n if (s == this.state)\n continue;\n let stack = this.split();\n stack.pushState(s, this.pos);\n stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n stack.shiftContext(nextStates[i], this.pos);\n stack.reducePos = this.pos;\n stack.score -= 200 /* Recover.Insert */;\n result.push(stack);\n }\n return result;\n }\n // Force a reduce, if possible. Return false if that can't\n // be done.\n /**\n @internal\n */\n forceReduce() {\n let { parser } = this.p;\n let reduce = parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n return false;\n if (!parser.validAction(this.state, reduce)) {\n let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n let target = this.stack.length - depth * 3;\n if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {\n let backup = this.findForcedReduction();\n if (backup == null)\n return false;\n reduce = backup;\n }\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.score -= 100 /* Recover.Reduce */;\n }\n this.reducePos = this.pos;\n this.reduce(reduce);\n return true;\n }\n /**\n Try to scan through the automaton to find some kind of reduction\n that can be applied. Used when the regular ForcedReduce field\n isn't a valid action. @internal\n */\n findForcedReduction() {\n let { parser } = this.p, seen = [];\n let explore = (state, depth) => {\n if (seen.includes(state))\n return;\n seen.push(state);\n return parser.allActions(state, (action) => {\n if (action & (262144 /* Action.StayFlag */ | 131072 /* Action.GotoFlag */)) ;\n else if (action & 65536 /* Action.ReduceFlag */) {\n let rDepth = (action >> 19 /* Action.ReduceDepthShift */) - depth;\n if (rDepth > 1) {\n let term = action & 65535 /* Action.ValueMask */, target = this.stack.length - rDepth * 3;\n if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0)\n return (rDepth << 19 /* Action.ReduceDepthShift */) | 65536 /* Action.ReduceFlag */ | term;\n }\n }\n else {\n let found = explore(action, depth + 1);\n if (found != null)\n return found;\n }\n });\n };\n return explore(this.state, 0);\n }\n /**\n @internal\n */\n forceAll() {\n while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n if (!this.forceReduce()) {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n break;\n }\n }\n return this;\n }\n /**\n Check whether this state has no further actions (assumed to be a direct descendant of the\n top state, since any other states must be able to continue\n somehow). @internal\n */\n get deadEnd() {\n if (this.stack.length != 3)\n return false;\n let { parser } = this.p;\n return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n }\n /**\n Restart the stack (put it back in its start state). Only safe\n when this.stack.length == 3 (state is directly below the top\n state). @internal\n */\n restart() {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.state = this.stack[0];\n this.stack.length = 0;\n }\n /**\n @internal\n */\n sameState(other) {\n if (this.state != other.state || this.stack.length != other.stack.length)\n return false;\n for (let i = 0; i < this.stack.length; i += 3)\n if (this.stack[i] != other.stack[i])\n return false;\n return true;\n }\n /**\n Get the parser used by this stack.\n */\n get parser() { return this.p.parser; }\n /**\n Test whether a given dialect (by numeric ID, as exported from\n the terms file) is enabled.\n */\n dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n shiftContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n reduceContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n /**\n @internal\n */\n emitContext() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -3)\n this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n }\n /**\n @internal\n */\n emitLookAhead() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -4)\n this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n }\n updateContext(context) {\n if (context != this.curContext.context) {\n let newCx = new StackContext(this.curContext.tracker, context);\n if (newCx.hash != this.curContext.hash)\n this.emitContext();\n this.curContext = newCx;\n }\n }\n /**\n @internal\n */\n setLookAhead(lookAhead) {\n if (lookAhead > this.lookAhead) {\n this.emitLookAhead();\n this.lookAhead = lookAhead;\n }\n }\n /**\n @internal\n */\n close() {\n if (this.curContext && this.curContext.tracker.strict)\n this.emitContext();\n if (this.lookAhead > 0)\n this.emitLookAhead();\n }\n}\nclass StackContext {\n constructor(tracker, context) {\n this.tracker = tracker;\n this.context = context;\n this.hash = tracker.strict ? tracker.hash(context) : 0;\n }\n}\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n constructor(start) {\n this.start = start;\n this.state = start.state;\n this.stack = start.stack;\n this.base = this.stack.length;\n }\n reduce(action) {\n let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n if (depth == 0) {\n if (this.stack == this.start.stack)\n this.stack = this.stack.slice();\n this.stack.push(this.state, 0, 0);\n this.base += 3;\n }\n else {\n this.base -= (depth - 1) * 3;\n }\n let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n this.state = goto;\n }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n constructor(stack, pos, index) {\n this.stack = stack;\n this.pos = pos;\n this.index = index;\n this.buffer = stack.buffer;\n if (this.index == 0)\n this.maybeNext();\n }\n static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n }\n maybeNext() {\n let next = this.stack.parent;\n if (next != null) {\n this.index = this.stack.bufferBase - next.bufferBase;\n this.stack = next;\n this.buffer = next.buffer;\n }\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n next() {\n this.index -= 4;\n this.pos -= 4;\n if (this.index == 0)\n this.maybeNext();\n }\n fork() {\n return new StackBufferCursor(this.stack, this.pos, this.index);\n }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n if (typeof input != \"string\")\n return input;\n let array = null;\n for (let pos = 0, out = 0; pos < input.length;) {\n let value = 0;\n for (;;) {\n let next = input.charCodeAt(pos++), stop = false;\n if (next == 126 /* Encode.BigValCode */) {\n value = 65535 /* Encode.BigVal */;\n break;\n }\n if (next >= 92 /* Encode.Gap2 */)\n next--;\n if (next >= 34 /* Encode.Gap1 */)\n next--;\n let digit = next - 32 /* Encode.Start */;\n if (digit >= 46 /* Encode.Base */) {\n digit -= 46 /* Encode.Base */;\n stop = true;\n }\n value += digit;\n if (stop)\n break;\n value *= 46 /* Encode.Base */;\n }\n if (array)\n array[out++] = value;\n else\n array = new Type(value);\n }\n return array;\n}\n\nclass CachedToken {\n constructor() {\n this.start = -1;\n this.value = -1;\n this.end = -1;\n this.extended = -1;\n this.lookAhead = 0;\n this.mask = 0;\n this.context = 0;\n }\n}\nconst nullToken = new CachedToken;\n/**\n[Tokenizers](#lr.ExternalTokenizer) interact with the input\nthrough this interface. It presents the input as a stream of\ncharacters, tracking lookahead and hiding the complexity of\n[ranges](#common.Parser.parse^ranges) from tokenizer code.\n*/\nclass InputStream {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n input, \n /**\n @internal\n */\n ranges) {\n this.input = input;\n this.ranges = ranges;\n /**\n @internal\n */\n this.chunk = \"\";\n /**\n @internal\n */\n this.chunkOff = 0;\n /**\n Backup chunk\n */\n this.chunk2 = \"\";\n this.chunk2Pos = 0;\n /**\n The character code of the next code unit in the input, or -1\n when the stream is at the end of the input.\n */\n this.next = -1;\n /**\n @internal\n */\n this.token = nullToken;\n this.rangeIndex = 0;\n this.pos = this.chunkPos = ranges[0].from;\n this.range = ranges[0];\n this.end = ranges[ranges.length - 1].to;\n this.readNext();\n }\n /**\n @internal\n */\n resolveOffset(offset, assoc) {\n let range = this.range, index = this.rangeIndex;\n let pos = this.pos + offset;\n while (pos < range.from) {\n if (!index)\n return null;\n let next = this.ranges[--index];\n pos -= range.from - next.to;\n range = next;\n }\n while (assoc < 0 ? pos > range.to : pos >= range.to) {\n if (index == this.ranges.length - 1)\n return null;\n let next = this.ranges[++index];\n pos += next.from - range.to;\n range = next;\n }\n return pos;\n }\n /**\n @internal\n */\n clipPos(pos) {\n if (pos >= this.range.from && pos < this.range.to)\n return pos;\n for (let range of this.ranges)\n if (range.to > pos)\n return Math.max(pos, range.from);\n return this.end;\n }\n /**\n Look at a code unit near the stream position. `.peek(0)` equals\n `.next`, `.peek(-1)` gives you the previous character, and so\n on.\n \n Note that looking around during tokenizing creates dependencies\n on potentially far-away content, which may reduce the\n effectiveness incremental parsing—when looking forward—or even\n cause invalid reparses when looking backward more than 25 code\n units, since the library does not track lookbehind.\n */\n peek(offset) {\n let idx = this.chunkOff + offset, pos, result;\n if (idx >= 0 && idx < this.chunk.length) {\n pos = this.pos + offset;\n result = this.chunk.charCodeAt(idx);\n }\n else {\n let resolved = this.resolveOffset(offset, 1);\n if (resolved == null)\n return -1;\n pos = resolved;\n if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n }\n else {\n let i = this.rangeIndex, range = this.range;\n while (range.to <= pos)\n range = this.ranges[++i];\n this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n if (pos + this.chunk2.length > range.to)\n this.chunk2 = this.chunk2.slice(0, range.to - pos);\n result = this.chunk2.charCodeAt(0);\n }\n }\n if (pos >= this.token.lookAhead)\n this.token.lookAhead = pos + 1;\n return result;\n }\n /**\n Accept a token. By default, the end of the token is set to the\n current stream position, but you can pass an offset (relative to\n the stream position) to change that.\n */\n acceptToken(token, endOffset = 0) {\n let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n if (end == null || end < this.token.start)\n throw new RangeError(\"Token end out of bounds\");\n this.token.value = token;\n this.token.end = end;\n }\n getChunk() {\n if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n let { chunk, chunkPos } = this;\n this.chunk = this.chunk2;\n this.chunkPos = this.chunk2Pos;\n this.chunk2 = chunk;\n this.chunk2Pos = chunkPos;\n this.chunkOff = this.pos - this.chunkPos;\n }\n else {\n this.chunk2 = this.chunk;\n this.chunk2Pos = this.chunkPos;\n let nextChunk = this.input.chunk(this.pos);\n let end = this.pos + nextChunk.length;\n this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n this.chunkPos = this.pos;\n this.chunkOff = 0;\n }\n }\n readNext() {\n if (this.chunkOff >= this.chunk.length) {\n this.getChunk();\n if (this.chunkOff == this.chunk.length)\n return this.next = -1;\n }\n return this.next = this.chunk.charCodeAt(this.chunkOff);\n }\n /**\n Move the stream forward N (defaults to 1) code units. Returns\n the new value of [`next`](#lr.InputStream.next).\n */\n advance(n = 1) {\n this.chunkOff += n;\n while (this.pos + n >= this.range.to) {\n if (this.rangeIndex == this.ranges.length - 1)\n return this.setDone();\n n -= this.range.to - this.pos;\n this.range = this.ranges[++this.rangeIndex];\n this.pos = this.range.from;\n }\n this.pos += n;\n if (this.pos >= this.token.lookAhead)\n this.token.lookAhead = this.pos + 1;\n return this.readNext();\n }\n setDone() {\n this.pos = this.chunkPos = this.end;\n this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n this.chunk = \"\";\n return this.next = -1;\n }\n /**\n @internal\n */\n reset(pos, token) {\n if (token) {\n this.token = token;\n token.start = pos;\n token.lookAhead = pos + 1;\n token.value = token.extended = -1;\n }\n else {\n this.token = nullToken;\n }\n if (this.pos != pos) {\n this.pos = pos;\n if (pos == this.end) {\n this.setDone();\n return this;\n }\n while (pos < this.range.from)\n this.range = this.ranges[--this.rangeIndex];\n while (pos >= this.range.to)\n this.range = this.ranges[++this.rangeIndex];\n if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n this.chunkOff = pos - this.chunkPos;\n }\n else {\n this.chunk = \"\";\n this.chunkOff = 0;\n }\n this.readNext();\n }\n return this;\n }\n /**\n @internal\n */\n read(from, to) {\n if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n if (from >= this.range.from && to <= this.range.to)\n return this.input.read(from, to);\n let result = \"\";\n for (let r of this.ranges) {\n if (r.from >= to)\n break;\n if (r.to > from)\n result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n }\n return result;\n }\n}\n/**\n@internal\n*/\nclass TokenGroup {\n constructor(data, id) {\n this.data = data;\n this.id = id;\n }\n token(input, stack) {\n let { parser } = stack.p;\n readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n@hide\n*/\nclass LocalTokenGroup {\n constructor(data, precTable, elseToken) {\n this.precTable = precTable;\n this.elseToken = elseToken;\n this.data = typeof data == \"string\" ? decodeArray(data) : data;\n }\n token(input, stack) {\n let start = input.pos, skipped = 0;\n for (;;) {\n let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);\n readToken(this.data, input, stack, 0, this.data, this.precTable);\n if (input.token.value > -1)\n break;\n if (this.elseToken == null)\n return;\n if (!atEof)\n skipped++;\n if (nextPos == null)\n break;\n input.reset(nextPos, input.token);\n }\n if (skipped) {\n input.reset(start, input.token);\n input.acceptToken(this.elseToken, skipped);\n }\n }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n`@external tokens` declarations in the grammar should resolve to\nan instance of this class.\n*/\nclass ExternalTokenizer {\n /**\n Create a tokenizer. The first argument is the function that,\n given an input stream, scans for the types of tokens it\n recognizes at the stream's position, and calls\n [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n one.\n */\n constructor(\n /**\n @internal\n */\n token, options = {}) {\n this.token = token;\n this.contextual = !!options.contextual;\n this.fallback = !!options.fallback;\n this.extend = !!options.extend;\n }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n// - A group bitmask, indicating what token groups are reachable from\n// this state, so that paths that can only lead to tokens not in\n// any of the current groups can be cut off early.\n//\n// - The position of the end of the state's sequence of accepting\n// tokens\n//\n// - The number of outgoing edges for the state\n//\n// - The accepting tokens, as (token id, group mask) pairs\n//\n// - The outgoing edges, as (start character, end character, state\n// index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n scan: for (;;) {\n if ((groupMask & data[state]) == 0)\n break;\n let accEnd = data[state + 1];\n // Check whether this state can lead to a token in the current group\n // Accept tokens in this state, possibly overwriting\n // lower-precedence / shorter tokens\n for (let i = state + 3; i < accEnd; i += 2)\n if ((data[i + 1] & groupMask) > 0) {\n let term = data[i];\n if (dialect.allows(term) &&\n (input.token.value == -1 || input.token.value == term ||\n overrides(term, input.token.value, precTable, precOffset))) {\n input.acceptToken(term);\n break;\n }\n }\n let next = input.next, low = 0, high = data[state + 2];\n // Special case for EOF\n if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n state = data[accEnd + high * 3 - 1];\n continue scan;\n }\n // Do a binary search on the state's edges\n for (; low < high;) {\n let mid = (low + high) >> 1;\n let index = accEnd + mid + (mid << 1);\n let from = data[index], to = data[index + 1] || 0x10000;\n if (next < from)\n high = mid;\n else if (next >= to)\n low = mid + 1;\n else {\n state = data[index + 2];\n input.advance();\n continue scan;\n }\n }\n break;\n }\n}\nfunction findOffset(data, start, term) {\n for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n if (next == term)\n return i - start;\n return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n let iPrev = findOffset(tableData, tableOffset, prev);\n return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nfunction cutAt(tree, pos, side) {\n let cursor = tree.cursor(IterMode.IncludeAnonymous);\n cursor.moveTo(pos);\n for (;;) {\n if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n for (;;) {\n if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Safety.Margin */))\n : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Safety.Margin */));\n if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n break;\n if (!cursor.parent())\n return side < 0 ? 0 : tree.length;\n }\n }\n}\nclass FragmentCursor {\n constructor(fragments, nodeSet) {\n this.fragments = fragments;\n this.nodeSet = nodeSet;\n this.i = 0;\n this.fragment = null;\n this.safeFrom = -1;\n this.safeTo = -1;\n this.trees = [];\n this.start = [];\n this.index = [];\n this.nextFragment();\n }\n nextFragment() {\n let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n if (fr) {\n this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n while (this.trees.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n }\n this.trees.push(fr.tree);\n this.start.push(-fr.offset);\n this.index.push(0);\n this.nextStart = this.safeFrom;\n }\n else {\n this.nextStart = 1e9;\n }\n }\n // `pos` must be >= any previously given `pos` for this cursor\n nodeAt(pos) {\n if (pos < this.nextStart)\n return null;\n while (this.fragment && this.safeTo <= pos)\n this.nextFragment();\n if (!this.fragment)\n return null;\n for (;;) {\n let last = this.trees.length - 1;\n if (last < 0) { // End of tree\n this.nextFragment();\n return null;\n }\n let top = this.trees[last], index = this.index[last];\n if (index == top.children.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n continue;\n }\n let next = top.children[index];\n let start = this.start[last] + top.positions[index];\n if (start > pos) {\n this.nextStart = start;\n return null;\n }\n if (next instanceof Tree) {\n if (start == pos) {\n if (start < this.safeFrom)\n return null;\n let end = start + next.length;\n if (end <= this.safeTo) {\n let lookAhead = next.prop(NodeProp.lookAhead);\n if (!lookAhead || end + lookAhead < this.fragment.to)\n return next;\n }\n }\n this.index[last]++;\n if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n this.trees.push(next);\n this.start.push(start);\n this.index.push(0);\n }\n }\n else {\n this.index[last]++;\n this.nextStart = start + next.length;\n }\n }\n }\n}\nclass TokenCache {\n constructor(parser, stream) {\n this.stream = stream;\n this.tokens = [];\n this.mainToken = null;\n this.actions = [];\n this.tokens = parser.tokenizers.map(_ => new CachedToken);\n }\n getActions(stack) {\n let actionIndex = 0;\n let main = null;\n let { parser } = stack.p, { tokenizers } = parser;\n let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n let context = stack.curContext ? stack.curContext.hash : 0;\n let lookAhead = 0;\n for (let i = 0; i < tokenizers.length; i++) {\n if (((1 << i) & mask) == 0)\n continue;\n let tokenizer = tokenizers[i], token = this.tokens[i];\n if (main && !tokenizer.fallback)\n continue;\n if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n this.updateCachedToken(token, tokenizer, stack);\n token.mask = mask;\n token.context = context;\n }\n if (token.lookAhead > token.end + 25 /* Safety.Margin */)\n lookAhead = Math.max(token.lookAhead, lookAhead);\n if (token.value != 0 /* Term.Err */) {\n let startIndex = actionIndex;\n if (token.extended > -1)\n actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n if (!tokenizer.extend) {\n main = token;\n if (actionIndex > startIndex)\n break;\n }\n }\n }\n while (this.actions.length > actionIndex)\n this.actions.pop();\n if (lookAhead)\n stack.setLookAhead(lookAhead);\n if (!main && stack.pos == this.stream.end) {\n main = new CachedToken;\n main.value = stack.p.parser.eofTerm;\n main.start = main.end = stack.pos;\n actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n }\n this.mainToken = main;\n return this.actions;\n }\n getMainToken(stack) {\n if (this.mainToken)\n return this.mainToken;\n let main = new CachedToken, { pos, p } = stack;\n main.start = pos;\n main.end = Math.min(pos + 1, p.stream.end);\n main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n return main;\n }\n updateCachedToken(token, tokenizer, stack) {\n let start = this.stream.clipPos(stack.pos);\n tokenizer.token(this.stream.reset(start, token), stack);\n if (token.value > -1) {\n let { parser } = stack.p;\n for (let i = 0; i < parser.specialized.length; i++)\n if (parser.specialized[i] == token.value) {\n let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n if ((result & 1) == 0 /* Specialize.Specialize */)\n token.value = result >> 1;\n else\n token.extended = result >> 1;\n break;\n }\n }\n }\n else {\n token.value = 0 /* Term.Err */;\n token.end = this.stream.clipPos(start + 1);\n }\n }\n putAction(action, token, end, index) {\n // Don't add duplicate actions\n for (let i = 0; i < index; i += 3)\n if (this.actions[i] == action)\n return index;\n this.actions[index++] = action;\n this.actions[index++] = token;\n this.actions[index++] = end;\n return index;\n }\n addActions(stack, token, end, index) {\n let { state } = stack, { parser } = stack.p, { data } = parser;\n for (let set = 0; set < 2; set++) {\n for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n if (data[i] == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */) {\n i = pair(data, i + 2);\n }\n else {\n if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n index = this.putAction(pair(data, i + 2), token, end, index);\n break;\n }\n }\n if (data[i] == token)\n index = this.putAction(pair(data, i + 1), token, end, index);\n }\n }\n return index;\n }\n}\nclass Parse {\n constructor(parser, input, fragments, ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.recovering = 0;\n this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧\n this.minStackPos = 0;\n this.reused = [];\n this.stoppedAt = null;\n this.lastBigReductionStart = -1;\n this.lastBigReductionSize = 0;\n this.bigReductionCount = 0;\n this.stream = new InputStream(input, ranges);\n this.tokens = new TokenCache(parser, this.stream);\n this.topTerm = parser.top[1];\n let { from } = ranges[0];\n this.stacks = [Stack.start(this, parser.top[0], from)];\n this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n ? new FragmentCursor(fragments, parser.nodeSet) : null;\n }\n get parsedPos() {\n return this.minStackPos;\n }\n // Move the parser forward. This will process all parse stacks at\n // `this.pos` and try to advance them to a further position. If no\n // stack for such a position is found, it'll start error-recovery.\n //\n // When the parse is finished, this will return a syntax tree. When\n // not, it returns `null`.\n advance() {\n let stacks = this.stacks, pos = this.minStackPos;\n // This will hold stacks beyond `pos`.\n let newStacks = this.stacks = [];\n let stopped, stoppedTokens;\n // If a large amount of reductions happened with the same start\n // position, force the stack out of that production in order to\n // avoid creating a tree too deep to recurse through.\n // (This is an ugly kludge, because unfortunately there is no\n // straightforward, cheap way to check for this happening, due to\n // the history of reductions only being available in an\n // expensive-to-access format in the stack buffers.)\n if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n let [s] = stacks;\n while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n this.bigReductionCount = this.lastBigReductionSize = 0;\n }\n // Keep advancing any stacks at `pos` until they either move\n // forward or can't be advanced. Gather stacks that can't be\n // advanced further in `stopped`.\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i];\n for (;;) {\n this.tokens.mainToken = null;\n if (stack.pos > pos) {\n newStacks.push(stack);\n }\n else if (this.advanceStack(stack, newStacks, stacks)) {\n continue;\n }\n else {\n if (!stopped) {\n stopped = [];\n stoppedTokens = [];\n }\n stopped.push(stack);\n let tok = this.tokens.getMainToken(stack);\n stoppedTokens.push(tok.value, tok.end);\n }\n break;\n }\n }\n if (!newStacks.length) {\n let finished = stopped && findFinished(stopped);\n if (finished) {\n if (verbose)\n console.log(\"Finish with \" + this.stackID(finished));\n return this.stackToTree(finished);\n }\n if (this.parser.strict) {\n if (verbose && stopped)\n console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n throw new SyntaxError(\"No parse at \" + pos);\n }\n if (!this.recovering)\n this.recovering = 5 /* Rec.Distance */;\n }\n if (this.recovering && stopped) {\n let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n : this.runRecovery(stopped, stoppedTokens, newStacks);\n if (finished) {\n if (verbose)\n console.log(\"Force-finish \" + this.stackID(finished));\n return this.stackToTree(finished.forceAll());\n }\n }\n if (this.recovering) {\n let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n if (newStacks.length > maxRemaining) {\n newStacks.sort((a, b) => b.score - a.score);\n while (newStacks.length > maxRemaining)\n newStacks.pop();\n }\n if (newStacks.some(s => s.reducePos > pos))\n this.recovering--;\n }\n else if (newStacks.length > 1) {\n // Prune stacks that are in the same state, or that have been\n // running without splitting for a while, to avoid getting stuck\n // with multiple successful stacks running endlessly on.\n outer: for (let i = 0; i < newStacks.length - 1; i++) {\n let stack = newStacks[i];\n for (let j = i + 1; j < newStacks.length; j++) {\n let other = newStacks[j];\n if (stack.sameState(other) ||\n stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n newStacks.splice(j--, 1);\n }\n else {\n newStacks.splice(i--, 1);\n continue outer;\n }\n }\n }\n }\n if (newStacks.length > 12 /* Rec.MaxStackCount */)\n newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n }\n this.minStackPos = newStacks[0].pos;\n for (let i = 1; i < newStacks.length; i++)\n if (newStacks[i].pos < this.minStackPos)\n this.minStackPos = newStacks[i].pos;\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 // Returns an updated version of the given stack, or null if the\n // stack can't advance normally. When `split` and `stacks` are\n // given, stacks split off by ambiguous operations will be pushed to\n // `split`, or added to `stacks` if they move `pos` forward.\n advanceStack(stack, stacks, split) {\n let start = stack.pos, { parser } = this;\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (this.stoppedAt != null && start > this.stoppedAt)\n return stack.forceReduce() ? stack : null;\n if (this.fragments) {\n let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n for (let cached = this.fragments.nodeAt(start); cached;) {\n let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n stack.useNode(cached, match);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n return true;\n }\n if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n break;\n let inner = cached.children[0];\n if (inner instanceof Tree && cached.positions[0] == 0)\n cached = inner;\n else\n break;\n }\n }\n let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n if (defaultReduce > 0) {\n stack.reduce(defaultReduce);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n return true;\n }\n if (stack.stack.length >= 8400 /* Rec.CutDepth */) {\n while (stack.stack.length > 6000 /* Rec.CutTo */ && stack.forceReduce()) { }\n }\n let actions = this.tokens.getActions(stack);\n for (let i = 0; i < actions.length;) {\n let action = actions[i++], term = actions[i++], end = actions[i++];\n let last = i == actions.length || !split;\n let localStack = last ? stack : stack.split();\n let main = this.tokens.mainToken;\n localStack.apply(action, term, main ? main.start : localStack.pos, end);\n if (verbose)\n console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n if (last)\n return true;\n else if (localStack.pos > start)\n stacks.push(localStack);\n else\n split.push(localStack);\n }\n return false;\n }\n // Advance a given stack forward as far as it will go. Returns the\n // (possibly updated) stack if it got stuck, or null if it moved\n // forward and was given to `pushStackDedup`.\n advanceFully(stack, newStacks) {\n let pos = stack.pos;\n for (;;) {\n if (!this.advanceStack(stack, null, null))\n return false;\n if (stack.pos > pos) {\n pushStackDedup(stack, newStacks);\n return true;\n }\n }\n }\n runRecovery(stacks, tokens, newStacks) {\n let finished = null, restarted = false;\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (stack.deadEnd) {\n if (restarted)\n continue;\n restarted = true;\n stack.restart();\n if (verbose)\n console.log(base + this.stackID(stack) + \" (restarted)\");\n let done = this.advanceFully(stack, newStacks);\n if (done)\n continue;\n }\n let force = stack.split(), forceBase = base;\n for (let j = 0; force.forceReduce() && j < 10 /* Rec.ForceReduceLimit */; j++) {\n if (verbose)\n console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n let done = this.advanceFully(force, newStacks);\n if (done)\n break;\n if (verbose)\n forceBase = this.stackID(force) + \" -> \";\n }\n for (let insert of stack.recoverByInsert(token)) {\n if (verbose)\n console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n this.advanceFully(insert, newStacks);\n }\n if (this.stream.end > stack.pos) {\n if (tokenEnd == stack.pos) {\n tokenEnd++;\n token = 0 /* Term.Err */;\n }\n stack.recoverByDelete(token, tokenEnd);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n pushStackDedup(stack, newStacks);\n }\n else if (!finished || finished.score < stack.score) {\n finished = stack;\n }\n }\n return finished;\n }\n // Convert the stack's buffer to a syntax tree.\n stackToTree(stack) {\n stack.close();\n return Tree.build({ buffer: StackBufferCursor.create(stack),\n nodeSet: this.parser.nodeSet,\n topID: this.topTerm,\n maxBufferLength: this.parser.bufferLength,\n reused: this.reused,\n start: this.ranges[0].from,\n length: stack.pos - this.ranges[0].from,\n minRepeatType: this.parser.minRepeatTerm });\n }\n stackID(stack) {\n let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n if (!id)\n stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n return id + stack;\n }\n}\nfunction pushStackDedup(stack, newStacks) {\n for (let i = 0; i < newStacks.length; i++) {\n let other = newStacks[i];\n if (other.pos == stack.pos && other.sameState(stack)) {\n if (newStacks[i].score < stack.score)\n newStacks[i] = stack;\n return;\n }\n }\n newStacks.push(stack);\n}\nclass Dialect {\n constructor(source, flags, disabled) {\n this.source = source;\n this.flags = flags;\n this.disabled = disabled;\n }\n allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/**\nContext trackers are used to track stateful context (such as\nindentation in the Python grammar, or parent elements in the XML\ngrammar) needed by external tokenizers. You declare them in a\ngrammar file as `@context exportName from \"module\"`.\n\nContext values should be immutable, and can be updated (replaced)\non shift or reduce actions.\n\nThe export used in a `@context` declaration should be of this\ntype.\n*/\nclass ContextTracker {\n /**\n Define a context tracker.\n */\n constructor(spec) {\n this.start = spec.start;\n this.shift = spec.shift || id;\n this.reduce = spec.reduce || id;\n this.reuse = spec.reuse || id;\n this.hash = spec.hash || (() => 0);\n this.strict = spec.strict !== false;\n }\n}\n/**\nHolds the parse tables for a given grammar, as generated by\n`lezer-generator`, and provides [methods](#common.Parser) to parse\ncontent with.\n*/\nclass LRParser extends Parser {\n /**\n @internal\n */\n constructor(spec) {\n super();\n /**\n @internal\n */\n this.wrappers = [];\n if (spec.version != 14 /* File.Version */)\n throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n let nodeNames = spec.nodeNames.split(\" \");\n this.minRepeatTerm = nodeNames.length;\n for (let i = 0; i < spec.repeatNodeCount; i++)\n nodeNames.push(\"\");\n let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n let nodeProps = [];\n for (let i = 0; i < nodeNames.length; i++)\n nodeProps.push([]);\n function setProp(nodeID, prop, value) {\n nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n }\n if (spec.nodeProps)\n for (let propSpec of spec.nodeProps) {\n let prop = propSpec[0];\n if (typeof prop == \"string\")\n prop = NodeProp[prop];\n for (let i = 1; i < propSpec.length;) {\n let next = propSpec[i++];\n if (next >= 0) {\n setProp(next, prop, propSpec[i++]);\n }\n else {\n let value = propSpec[i + -next];\n for (let j = -next; j > 0; j--)\n setProp(propSpec[i++], prop, value);\n i++;\n }\n }\n }\n this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n name: i >= this.minRepeatTerm ? undefined : name,\n id: i,\n props: nodeProps[i],\n top: topTerms.indexOf(i) > -1,\n error: i == 0,\n skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n })));\n if (spec.propSources)\n this.nodeSet = this.nodeSet.extend(...spec.propSources);\n this.strict = false;\n this.bufferLength = DefaultBufferLength;\n let tokenArray = decodeArray(spec.tokenData);\n this.context = spec.context;\n this.specializerSpecs = spec.specialized || [];\n this.specialized = new Uint16Array(this.specializerSpecs.length);\n for (let i = 0; i < this.specializerSpecs.length; i++)\n this.specialized[i] = this.specializerSpecs[i].term;\n this.specializers = this.specializerSpecs.map(getSpecializer);\n this.states = decodeArray(spec.states, Uint32Array);\n this.data = decodeArray(spec.stateData);\n this.goto = decodeArray(spec.goto);\n this.maxTerm = spec.maxTerm;\n this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n this.topRules = spec.topRules;\n this.dialects = spec.dialects || {};\n this.dynamicPrecedences = spec.dynamicPrecedences || null;\n this.tokenPrecTable = spec.tokenPrec;\n this.termNames = spec.termNames || null;\n this.maxNode = this.nodeSet.types.length - 1;\n this.dialect = this.parseDialect();\n this.top = this.topRules[Object.keys(this.topRules)[0]];\n }\n createParse(input, fragments, ranges) {\n let parse = new Parse(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Get a goto table entry @internal\n */\n getGoto(state, term, loose = false) {\n let table = this.goto;\n if (term >= table[0])\n return -1;\n for (let pos = table[term + 1];;) {\n let groupTag = table[pos++], last = groupTag & 1;\n let target = table[pos++];\n if (last && loose)\n return target;\n for (let end = pos + (groupTag >> 1); pos < end; pos++)\n if (table[pos] == state)\n return target;\n if (last)\n return -1;\n }\n }\n /**\n Check if this state has an action for a given terminal @internal\n */\n hasAction(state, terminal) {\n let data = this.data;\n for (let set = 0; set < 2; set++) {\n for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n if ((next = data[i]) == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */)\n next = data[i = pair(data, i + 2)];\n else if (data[i + 1] == 2 /* Seq.Other */)\n return pair(data, i + 2);\n else\n break;\n }\n if (next == terminal || next == 0 /* Term.Err */)\n return pair(data, i + 1);\n }\n }\n return 0;\n }\n /**\n @internal\n */\n stateSlot(state, slot) {\n return this.states[(state * 6 /* ParseState.Size */) + slot];\n }\n /**\n @internal\n */\n stateFlag(state, flag) {\n return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n }\n /**\n @internal\n */\n validAction(state, action) {\n return !!this.allActions(state, a => a == action ? true : null);\n }\n /**\n @internal\n */\n allActions(state, action) {\n let deflt = this.stateSlot(state, 4 /* ParseState.DefaultReduce */);\n let result = deflt ? action(deflt) : undefined;\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */); result == null; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n result = action(pair(this.data, i + 1));\n }\n return result;\n }\n /**\n Get the states that can follow this one through shift actions or\n goto jumps. @internal\n */\n nextStates(state) {\n let result = [];\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n let value = this.data[i + 1];\n if (!result.some((v, i) => (i & 1) && v == value))\n result.push(this.data[i], value);\n }\n }\n return result;\n }\n /**\n Configure the parser. Returns a new parser instance that has the\n given settings modified. Settings not provided in `config` are\n kept from the original parser.\n */\n configure(config) {\n // Hideous reflection-based kludge to make it easy to create a\n // slightly modified copy of a parser.\n let copy = Object.assign(Object.create(LRParser.prototype), this);\n if (config.props)\n copy.nodeSet = this.nodeSet.extend(...config.props);\n if (config.top) {\n let info = this.topRules[config.top];\n if (!info)\n throw new RangeError(`Invalid top rule name ${config.top}`);\n copy.top = info;\n }\n if (config.tokenizers)\n copy.tokenizers = this.tokenizers.map(t => {\n let found = config.tokenizers.find(r => r.from == t);\n return found ? found.to : t;\n });\n if (config.specializers) {\n copy.specializers = this.specializers.slice();\n copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n let found = config.specializers.find(r => r.from == s.external);\n if (!found)\n return s;\n let spec = Object.assign(Object.assign({}, s), { external: found.to });\n copy.specializers[i] = getSpecializer(spec);\n return spec;\n });\n }\n if (config.contextTracker)\n copy.context = config.contextTracker;\n if (config.dialect)\n copy.dialect = this.parseDialect(config.dialect);\n if (config.strict != null)\n copy.strict = config.strict;\n if (config.wrap)\n copy.wrappers = copy.wrappers.concat(config.wrap);\n if (config.bufferLength != null)\n copy.bufferLength = config.bufferLength;\n return copy;\n }\n /**\n Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n are registered for this parser.\n */\n hasWrappers() {\n return this.wrappers.length > 0;\n }\n /**\n Returns the name associated with a given term. This will only\n work for all terms when the parser was generated with the\n `--names` option. By default, only the names of tagged terms are\n stored.\n */\n getName(term) {\n return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n }\n /**\n The eof term id is always allocated directly after the node\n types. @internal\n */\n get eofTerm() { return this.maxNode + 1; }\n /**\n The type of top node produced by the parser.\n */\n get topNode() { return this.nodeSet.types[this.top[1]]; }\n /**\n @internal\n */\n dynamicPrecedence(term) {\n let prec = this.dynamicPrecedences;\n return prec == null ? 0 : prec[term] || 0;\n }\n /**\n @internal\n */\n parseDialect(dialect) {\n let values = Object.keys(this.dialects), flags = values.map(() => false);\n if (dialect)\n for (let part of dialect.split(\" \")) {\n let id = values.indexOf(part);\n if (id >= 0)\n flags[id] = true;\n }\n let disabled = null;\n for (let i = 0; i < values.length; i++)\n if (!flags[i]) {\n for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n }\n return new Dialect(dialect, flags, disabled);\n }\n /**\n Used by the output of the parser generator. Not available to\n user code. @hide\n */\n static deserialize(spec) {\n return new LRParser(spec);\n }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n let best = null;\n for (let stack of stacks) {\n let stopped = stack.p.stoppedAt;\n if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n (!best || best.score < stack.score))\n best = stack;\n }\n return best;\n}\nfunction getSpecializer(spec) {\n if (spec.external) {\n let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n return (value, stack) => (spec.external(value, stack) << 1) | mask;\n }\n return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n","import { ExternalTokenizer, ContextTracker, LRParser } 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 printKeyword = 1,\n indent = 201,\n dedent = 202,\n newline$1 = 203,\n blankLineStart = 204,\n newlineBracketed = 205,\n eof = 206,\n formatString1Content = 207,\n formatString1Brace = 2,\n formatString1End = 208,\n formatString2Content = 209,\n formatString2Brace = 3,\n formatString2End = 210,\n formatString1lContent = 211,\n formatString1lBrace = 4,\n formatString1lEnd = 212,\n formatString2lContent = 213,\n formatString2lBrace = 5,\n formatString2lEnd = 214,\n ParenL = 26,\n ParenthesizedExpression = 27,\n TupleExpression = 51,\n ComprehensionExpression = 52,\n BracketL = 57,\n ArrayExpression = 58,\n ArrayComprehensionExpression = 59,\n BraceL = 61,\n DictionaryExpression = 62,\n DictionaryComprehensionExpression = 63,\n SetExpression = 64,\n SetComprehensionExpression = 65,\n ArgList = 67,\n subscript = 251,\n FormatString = 74,\n importList = 270,\n TypeParamList = 115,\n ParamList = 133,\n SequencePattern = 154,\n MappingPattern = 155,\n PatternArgList = 158;\n\nconst newline = 10, carriageReturn = 13, space = 32, tab = 9, hash = 35, parenOpen = 40, dot = 46,\n braceOpen = 123, singleQuote = 39, doubleQuote = 34, backslash = 92;\n\nconst bracketed = new Set([\n ParenthesizedExpression, TupleExpression, ComprehensionExpression, importList, ArgList, ParamList,\n ArrayExpression, ArrayComprehensionExpression, subscript,\n SetExpression, SetComprehensionExpression, FormatString,\n DictionaryExpression, DictionaryComprehensionExpression,\n SequencePattern, MappingPattern, PatternArgList, TypeParamList\n]);\n\nfunction isLineBreak(ch) {\n return ch == newline || ch == carriageReturn\n}\n\nconst newlines = new ExternalTokenizer((input, stack) => {\n let prev;\n if (input.next < 0) {\n input.acceptToken(eof);\n } else if (stack.context.depth < 0) {\n if (isLineBreak(input.next)) input.acceptToken(newlineBracketed, 1);\n } else if (((prev = input.peek(-1)) < 0 || isLineBreak(prev)) &&\n stack.canShift(blankLineStart)) {\n let spaces = 0;\n while (input.next == space || input.next == tab) { input.advance(); spaces++; }\n if (input.next == newline || input.next == carriageReturn || input.next == hash)\n input.acceptToken(blankLineStart, -spaces);\n } else if (isLineBreak(input.next)) {\n input.acceptToken(newline$1, 1);\n }\n}, {contextual: true});\n\nconst indentation = new ExternalTokenizer((input, stack) => {\n let cDepth = stack.context.depth;\n if (cDepth < 0) return\n let prev = input.peek(-1);\n if (prev == newline || prev == carriageReturn) {\n let depth = 0, chars = 0;\n for (;;) {\n if (input.next == space) depth++;\n else if (input.next == tab) depth += 8 - (depth % 8);\n else break\n input.advance();\n chars++;\n }\n if (depth != cDepth &&\n input.next != newline && input.next != carriageReturn && input.next != hash) {\n if (depth < cDepth) input.acceptToken(dedent, -chars);\n else input.acceptToken(indent);\n }\n }\n});\n\nfunction IndentLevel(parent, depth) {\n this.parent = parent;\n // -1 means this is not an actual indent level but a set of brackets\n this.depth = depth;\n this.hash = (parent ? parent.hash + parent.hash << 8 : 0) + depth + (depth << 4);\n}\n\nconst topIndent = new IndentLevel(null, 0);\n\nfunction countIndent(space) {\n let depth = 0;\n for (let i = 0; i < space.length; i++)\n depth += space.charCodeAt(i) == tab ? 8 - (depth % 8) : 1;\n return depth\n}\n\nconst trackIndent = new ContextTracker({\n start: topIndent,\n reduce(context, term) {\n return context.depth < 0 && bracketed.has(term) ? context.parent : context\n },\n shift(context, term, stack, input) {\n if (term == indent) return new IndentLevel(context, countIndent(input.read(input.pos, stack.pos)))\n if (term == dedent) return context.parent\n if (term == ParenL || term == BracketL || term == BraceL) return new IndentLevel(context, -1)\n return context\n },\n hash(context) { return context.hash }\n});\n\nconst legacyPrint = new ExternalTokenizer(input => {\n for (let i = 0; i < 5; i++) {\n if (input.next != \"print\".charCodeAt(i)) return\n input.advance();\n }\n if (/\\w/.test(String.fromCharCode(input.next))) return\n for (let off = 0;; off++) {\n let next = input.peek(off);\n if (next == space || next == tab) continue\n if (next != parenOpen && next != dot && next != newline && next != carriageReturn && next != hash)\n input.acceptToken(printKeyword);\n return\n }\n});\n\nfunction formatString(quote, len, content, brace, end) {\n return new ExternalTokenizer(input => {\n let start = input.pos;\n for (;;) {\n if (input.next < 0) {\n break\n } else if (input.next == braceOpen) {\n if (input.peek(1) == braceOpen) {\n input.advance(2);\n } else {\n if (input.pos == start) {\n input.acceptToken(brace, 1);\n return\n }\n break\n }\n } else if (input.next == backslash) {\n input.advance();\n if (input.next >= 0) input.advance();\n } else if (input.next == quote && (len == 1 || input.peek(1) == quote && input.peek(2) == quote)) {\n if (input.pos == start) {\n input.acceptToken(end, len);\n return\n }\n break\n } else {\n input.advance();\n }\n }\n if (input.pos > start) input.acceptToken(content);\n })\n}\n\nconst formatString1 = formatString(singleQuote, 1, formatString1Content, formatString1Brace, formatString1End);\nconst formatString2 = formatString(doubleQuote, 1, formatString2Content, formatString2Brace, formatString2End);\nconst formatString1l = formatString(singleQuote, 3, formatString1lContent, formatString1lBrace, formatString1lEnd);\nconst formatString2l = formatString(doubleQuote, 3, formatString2lContent, formatString2lBrace, formatString2lEnd);\n\nconst pythonHighlighting = styleTags({\n \"async \\\"*\\\" \\\"**\\\" FormatConversion FormatSpec\": tags.modifier,\n \"for while if elif else try except finally return raise break continue with pass assert await yield match case\": tags.controlKeyword,\n \"in not and or is del\": tags.operatorKeyword,\n \"from def class global nonlocal lambda\": tags.definitionKeyword,\n import: tags.moduleKeyword,\n \"with as print\": tags.keyword,\n Boolean: tags.bool,\n None: tags.null,\n VariableName: tags.variableName,\n \"CallExpression/VariableName\": tags.function(tags.variableName),\n \"FunctionDefinition/VariableName\": tags.function(tags.definition(tags.variableName)),\n \"ClassDefinition/VariableName\": tags.definition(tags.className),\n PropertyName: tags.propertyName,\n \"CallExpression/MemberExpression/PropertyName\": tags.function(tags.propertyName),\n Comment: tags.lineComment,\n Number: tags.number,\n String: tags.string,\n FormatString: tags.special(tags.string),\n UpdateOp: tags.updateOperator,\n \"ArithOp!\": tags.arithmeticOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n AssignOp: tags.definitionOperator,\n Ellipsis: tags.punctuation,\n At: tags.meta,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n \".\": tags.derefOperator,\n \", ;\": tags.separator\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,await:48, or:58, and:60, in:64, not:66, is:68, if:74, else:76, lambda:80, yield:98, from:100, async:106, for:108, None:168, True:170, False:170, del:184, pass:188, break:192, continue:196, return:200, raise:208, import:212, as:214, global:218, nonlocal:220, assert:224, type:229, elif:242, while:246, try:252, except:254, finally:256, with:260, def:264, class:274, match:285, case:291};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"#&jO`Q#yOOP$bOSOOO%kQ&nO'#HcOOQS'#Cq'#CqOOQS'#Cr'#CrO'ZQ#xO'#CpO(|Q&nO'#HbOOQS'#Hc'#HcOOQS'#DW'#DWOOQS'#Hb'#HbO)jQ#xO'#DaO)}Q#xO'#DhO*_Q#xO'#DlOOQS'#Dw'#DwO*rO,UO'#DwO*zO7[O'#DwO+SOWO'#DxO+_O`O'#DxO+jOpO'#DxO+uO!bO'#DxO-wQ&nO'#HSOOQS'#HS'#HSO'ZQ#xO'#HRO/ZQ&nO'#HROOQS'#Ee'#EeO/rQ#xO'#EfOOQS'#HQ'#HQO/|Q#xO'#HPOOQV'#HP'#HPO0XQ#xO'#F]OOQS'#Ge'#GeO0^Q#xO'#F[OOQV'#IY'#IYOOQV'#HO'#HOOOQV'#Ft'#FtQ`Q#yOOO'ZQ#xO'#CsO0lQ#xO'#DPO0sQ#xO'#DTO1RQ#xO'#HgO1cQ&nO'#EYO'ZQ#xO'#EZOOQS'#E]'#E]OOQS'#E_'#E_OOQS'#Ea'#EaO1wQ#xO'#EcO2_Q#xO'#EgO0XQ#xO'#EiO2rQ&nO'#EiO0XQ#xO'#ElO/rQ#xO'#EoO0XQ#xO'#EqO/rQ#xO'#EwO/rQ#xO'#EzO2}Q#xO'#E|O3UQ#xO'#FRO3aQ#xO'#E}O/rQ#xO'#FRO0XQ#xO'#FTO0XQ#xO'#FYO3fQ#xO'#F_P3mO#xO'#G}POOO)CBq)CBqOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Ck'#CkOOQS'#Cl'#ClOOQS'#Cn'#CnO'ZQ#xO,59QO'ZQ#xO,59QO'ZQ#xO,59QO'ZQ#xO,59QO'ZQ#xO,59QO'ZQ#xO,59QO3xQ#xO'#DqOOQS,5:[,5:[O4]Q#xO'#HqOOQS,5:_,5:_O4jQMlO,5:_O4oQ&nO,59[O0lQ#xO,59dO0lQ#xO,59dO0lQ#xO,59dO7_Q#xO,59dO7dQ#xO,59dO7kQ#xO,59lO7rQ#xO'#HbO8xQ#xO'#HaOOQS'#Ha'#HaOOQS'#D^'#D^O9aQ#xO,59cO'ZQ#xO,59cO9oQ#xO,59cOOQS,59{,59{O9tQ#xO,5:TO'ZQ#xO,5:TOOQS,5:S,5:SO:SQ#xO,5:SO:XQ#xO,5:ZO'ZQ#xO,5:ZO'ZQ#xO,5:XOOQS,5:W,5:WO:jQ#xO,5:WO:oQ#xO,5:YOOOO'#F|'#F|O:tO,UO,5:cOOQS,5:c,5:cOOOO'#F}'#F}O:|O7[O,5:cO;UQ#xO'#DyOOOW'#GO'#GOO;fOWO,5:dOOQS,5:d,5:dO;UQ#xO'#D}OOO`'#GR'#GRO;qO`O,5:dO;UQ#xO'#EOOOOp'#GS'#GSO;|OpO,5:dO;UQ#xO'#EPOOO!b'#GT'#GTO<XO!bO,5:dOOQS'#GU'#GUO<dQ&nO,5:lO?UQ&nO,5=mO?oQ!LUO,5=mO@`Q&nO,5=mOOQS,5;Q,5;QO@wQ#yO'#G_OBZQ#xO,5;aOOQV,5=k,5=kOBfQ&nO'#ITOB}Q#xO,5;wOOQS-E:c-E:cOOQV,5;v,5;vO3[Q#xO'#FTOOQV-E9r-E9rOCVQ&nO,59_OE^Q&nO,59kOEwQ#xO'#HdOFSQ#xO'#HdO0XQ#xO'#HdOF_Q#xO'#DVOFgQ#xO,59oOFlQ#xO'#HhO'ZQ#xO'#HhO/rQ#xO,5>ROOQS,5>R,5>RO/rQ#xO'#EUOOQS'#EV'#EVOGZQ#xO'#GWOGkQ#xO,59OOGkQ#xO,59OO)pQ#xO,5:rOGyQ&nO'#HjOOQS,5:u,5:uOOQS,5:},5:}OH^Q#xO,5;ROHoQ#xO,5;TOOQS'#GZ'#GZOH}Q&nO,5;TOI]Q#xO,5;TOIbQ#xO'#IWOOQS,5;W,5;WOIpQ#xO'#ISOOQS,5;Z,5;ZOJRQ#xO,5;]O3aQ#xO,5;cO3aQ#xO,5;fOJZQ&nO'#IZO'ZQ#xO'#IZOJeQ#xO,5;hO2}Q#xO,5;hO/rQ#xO,5;mO0XQ#xO,5;oOJjQ#yO'#ExOKvQ#{O,5;iO! [Q#xO'#I[O3aQ#xO,5;mO! gQ#xO,5;oO! oQ#xO,5;tO! zQ&nO,5;yO'ZQ#xO,5;yPOOO,5=i,5=iP!!ROSO,5=iP!!WO#xO,5=iO!${Q&nO1G.lO!%SQ&nO1G.lO!'sQ&nO1G.lO!'}Q&nO1G.lO!*hQ&nO1G.lO!*{Q&nO1G.lO!+`Q#xO'#HpO!+nQ&nO'#HSO/rQ#xO'#HpO!+xQ#xO'#HoOOQS,5:],5:]O!,QQ#xO,5:]O!,VQ#xO'#HrO!,bQ#xO'#HrO!,uQ#xO,5>]OOQS'#Du'#DuOOQS1G/y1G/yOOQS1G/O1G/OO!-uQ&nO1G/OO!-|Q&nO1G/OO0lQ#xO1G/OO!.iQ#xO1G/WOOQS'#D]'#D]O/rQ#xO,59vOOQS1G.}1G.}O!.pQ#xO1G/gO!/QQ#xO1G/gO!/YQ#xO1G/hO'ZQ#xO'#HiO!/_Q#xO'#HiO!/dQ&nO1G.}O!/tQ#xO,59kO!0zQ#xO,5>XO!1[Q#xO,5>XO!1dQ#xO1G/oO!1iQ&nO1G/oOOQS1G/n1G/nO!1yQ#xO,5>SO!2pQ#xO,5>SO/rQ#xO1G/sO!3_Q#xO1G/uO!3dQ&nO1G/uO!3tQ&nO1G/sOOQS1G/r1G/rOOQS1G/t1G/tOOOO-E9z-E9zOOQS1G/}1G/}OOOO-E9{-E9{O!4UQ#xO'#H|O/rQ#xO'#H|O!4dQ#xO,5:eOOOW-E9|-E9|OOQS1G0O1G0OO!4oQ#xO,5:iOOO`-E:P-E:PO!4zQ#xO,5:jOOOp-E:Q-E:QO!5VQ#xO,5:kOOO!b-E:R-E:ROOQS-E:S-E:SO!5bQ!LUO1G3XO!6RQ&nO1G3XO'ZQ#xO,5<qOOQS,5<q,5<qOOQS-E:T-E:TOOQS,5<y,5<yOOQS-E:]-E:]OOQV1G0{1G0{O0XQ#xO'#GYO!6jQ&nO,5>oOOQS1G1c1G1cO!7RQ#xO1G1cOOQS'#DX'#DXO/rQ#xO,5>OOOQS,5>O,5>OO!7WQ#xO'#FuO!7cQ#xO,59qO!7kQ#xO1G/ZO!7uQ&nO,5>SOOQS1G3m1G3mOOQS,5:p,5:pO!8fQ#xO'#HROOQS,5<r,5<rOOQS-E:U-E:UO!8wQ#xO1G.jOOQS1G0^1G0^O!9VQ#xO,5>UO!9gQ#xO,5>UO/rQ#xO1G0mO/rQ#xO1G0mO0XQ#xO1G0oOOQS-E:X-E:XO!9xQ#xO1G0oO!:TQ#xO1G0oO!:YQ#xO,5>rO!:hQ#xO,5>rO!:vQ#xO,5>nO!;^Q#xO,5>nO!;oQ#xO'#EsO/rQ#xO1G0wO!;zQ#xO1G0wO!<PQ#{O1G0}O!?bQ#{O1G1QO!BpQ#xO,5>uO!BzQ#xO,5>uO!CSQ&nO,5>uO/rQ#xO1G1SO!C^Q#xO1G1SO3aQ#xO1G1XO! gQ#xO1G1ZOOQV,5;d,5;dO!CcQ#zO,5;dO!ChQ#{O1G1TO!F|Q#xO'#GbO3aQ#xO1G1TO3aQ#xO1G1TO!G^Q#xO,5>vO!GkQ#xO,5>vO0XQ#xO,5>vOOQV1G1X1G1XO!GsQ#xO'#FVO!HUQMlO1G1ZO!H^Q#xO1G1ZOOQV1G1`1G1`O3aQ#xO1G1`O!HcQ#xO1G1`O!HkQ#xO'#FaOOQV1G1e1G1eO! zQ&nO1G1ePOOO1G3T1G3TP!HpOSO1G3TOOQS,5>[,5>[OOQS'#Dr'#DrO/rQ#xO,5>[O!HuQ#xO,5>ZO!IYQ#xO,5>ZOOQS1G/w1G/wO!IbQ#xO,5>^O!IrQ#xO,5>^O!IzQ#xO,5>^O!J_Q#xO,5>^O!JoQ#xO,5>^OOQS1G3w1G3wOOQS7+$j7+$jO!7kQ#xO7+$rO!LbQ#xO1G/OO!LiQ#xO1G/OOOQS1G/b1G/bOOQS,5<c,5<cO'ZQ#xO,5<cOOQS7+%R7+%RO!LpQ#xO7+%ROOQS-E9u-E9uOOQS7+%S7+%SO!MQQ#xO,5>TO'ZQ#xO,5>TOOQS7+$i7+$iO!MVQ#xO7+%RO!M_Q#xO7+%SO!MdQ#xO1G3sOOQS7+%Z7+%ZO!MtQ#xO1G3sO!M|Q#xO7+%ZOOQS,5<b,5<bO'ZQ#xO,5<bO!NRQ#xO1G3nOOQS-E9t-E9tO!NxQ#xO7+%_OOQS7+%a7+%aO# WQ#xO1G3nO# uQ#xO7+%aO# zQ#xO1G3tO#![Q#xO1G3tO#!dQ#xO7+%_O#!iQ#xO,5>hO##PQ#xO,5>hO##PQ#xO,5>hO##_O$ISO'#D{O##jO#tO'#H}OOOW1G0P1G0PO##oQ#xO1G0POOO`1G0T1G0TO##wQ#xO1G0TOOOp1G0U1G0UO#$PQ#xO1G0UOOO!b1G0V1G0VO#$XQ#xO1G0VO#$aQ!LUO7+(sO#%QQ&nO1G2]P#%kQ#xO'#GVOOQS,5<t,5<tOOQS-E:W-E:WOOQS7+&}7+&}OOQS1G3j1G3jOOQS,5<a,5<aOOQS-E9s-E9sOOQS7+$u7+$uO#%xQ#xO,5=mO#&cQ#xO,5=mO#&tQ&nO,5<dO#'XQ#xO1G3pOOQS-E9v-E9vOOQS7+&X7+&XO#'iQ#xO7+&XOOQS7+&Z7+&ZO#'wQ#xO'#IVO0XQ#xO'#IUO#(]Q#xO7+&ZOOQS,5<w,5<wO#(hQ#xO1G4^OOQS-E:Z-E:ZOOQS,5<s,5<sO#(vQ#xO1G4YOOQS-E:V-E:VO0XQ#xO'#EtO#)^Q#xO'#EtO#)iQ#xO'#IXO#)qQ#xO,5;_OOQS7+&c7+&cO/rQ#xO7+&cO#)vQ#{O7+&iO!GPQ#xO'#G`O3aQ#xO7+&iO3aQ#xO7+&lO#-XQ&nO,5<{O'ZQ#xO,5<{O#-cQ#xO1G4aOOQS-E:_-E:_O#-mQ#xO1G4aO3aQ#xO7+&nO/rQ#xO7+&nOOQV7+&s7+&sO!HUQMlO7+&uO!H^Q#xO7+&uO`Q#yO1G1OOOQV-E:`-E:`O3aQ#xO7+&oO3aQ#xO7+&oOOQV,5<|,5<|O#-uQ#xO,5<|O!GPQ#xO,5<|OOQV7+&o7+&oO#.QQ#{O7+&oO#1`Q#xO,5<}O#1kQ#xO1G4bOOQS-E:a-E:aO#1xQ#xO1G4bO#2QQ#xO'#I^O#2`Q#xO'#I^O0XQ#xO'#I^OOQS'#I^'#I^O#2kQ#xO'#I]OOQS,5;q,5;qO#2sQ#xO,5;qO/rQ#xO'#FXOOQV7+&u7+&uO3aQ#xO7+&uOOQV7+&z7+&zO3aQ#xO7+&zO#2xQ#zO,5;{OOQV7+'P7+'PPOOO7+(o7+(oO#2}Q#xO1G3vOOQS,5<f,5<fO#3]Q#xO1G3uOOQS-E9x-E9xO#3pQ#xO,5<gO#3{Q#xO,5<gO#4`Q#xO1G3xOOQS-E9y-E9yO#4pQ#xO1G3xO#4xQ#xO1G3xO#5YQ#xO1G3xO#4pQ#xO1G3xOOQS<<H^<<H^O#5eQ&nO1G1}OOQS<<Hm<<HmP#5rQ#xO'#FwO7kQ#xO1G3oO#6PQ#xO1G3oO#6UQ#xO<<HmOOQS<<Hn<<HnO#6fQ#xO7+)_OOQS<<Hu<<HuO#6vQ&nO1G1|P#7gQ#xO'#FvO#7tQ#xO7+)`O#8UQ#xO7+)`O#8^Q#xO<<HyO#8cQ#xO7+)YOOQS<<H{<<H{O#9YQ#xO,5<eO'ZQ#xO,5<eOOQS-E9w-E9wOOQS<<Hy<<HyOOQS,5<k,5<kO/rQ#xO,5<kO#9_Q#xO1G4SOOQS-E9}-E9}O#9uQ#xO1G4SO;UQ#xO'#D|OOOO'#GQ'#GQO#:TO$ISO,5:gOOO#l,5>i,5>iOOOW7+%k7+%kOOO`7+%o7+%oOOOp7+%p7+%pOOO!b7+%q7+%qO#:`Q#xO1G3XO#:yQ#xO1G3XP'ZQ#xO'#FxO/rQ#xO<<IsO#;[Q#xO,5>qO#;mQ#xO,5>qO0XQ#xO,5>qO#<OQ#xO,5>pOOQS<<Iu<<IuP0XQ#xO'#G]P/rQ#xO'#GXOOQS,5;`,5;`O#<TQ#xO,5>sO#<cQ#xO,5>sOOQS1G0y1G0yOOQS<<I}<<I}OOQV-E:^-E:^O3aQ#xO<<JTOOQV,5<z,5<zO3aQ#xO,5<zOOQV<<JT<<JTOOQV<<JW<<JWO#<kQ&nO1G2gP#<uQ#xO'#GaO#<|Q#xO7+){O#=WQ#{O<<JYO3aQ#xO<<JYOOQV<<Ja<<JaO3aQ#xO<<JaO!HUQMlO<<JaO#@fQ#{O7+&jOOQV<<JZ<<JZO#@pQ#{O<<JZOOQV1G2h1G2hO0XQ#xO1G2hO#DOQ#xO1G2hO3aQ#xO<<JZO0XQ#xO1G2iP/rQ#xO'#GcO#DZQ#xO7+)|O#DhQ#xO7+)|OOQS'#FW'#FWO/rQ#xO,5>xO#DpQ#xO,5>xOOQS,5>x,5>xO#D{Q#xO,5>wO#E^Q#xO,5>wOOQS1G1]1G1]OOQS,5;s,5;sOOQV<<Jf<<JfO#EfQ#xO1G1gOOQS7+)b7+)bP#EkQ#xO'#FzO#E{Q#xO1G2RO#F`Q#xO1G2RO#FpQ#xO1G2RP#F{Q#xO'#F{O#GYQ#xO7+)dO#GjQ#xO7+)dO#GjQ#xO7+)dO#GrQ#xO7+)dO#HSQ#xO7+)ZO7kQ#xO7+)ZOOQSAN>XAN>XO#HmQ#xO<<LzOOQSAN>eAN>eO/rQ#xO1G2PO#H}Q&nO1G2PP#IXQ#xO'#FyOOQS1G2V1G2VP#IfQ#xO'#GPO#IsQ#xO7+)nO#JZQ#xO,5:hOOOO-E:O-E:OO#JfQ#xO7+(sOOQSAN?_AN?_O#KPQ#xO,5<vO#KeQ#xO1G4]OOQS-E:Y-E:YO#KvQ#xO1G4]OOQS1G4[1G4[OOQS,5<x,5<xO#LXQ#xO1G4_OOQS-E:[-E:[OOQVAN?oAN?oOOQV1G2f1G2fO3aQ#xOAN?tO#LgQ#{OAN?tOOQVAN?{AN?{O3aQ#xOAN?{OOQV<<JU<<JUO3aQ#xOAN?uO3aQ#xO7+(SOOQV7+(S7+(SO0XQ#xO7+(SOOQVAN?uAN?uOOQS7+(T7+(TO$ uQ#xO<<MhOOQS1G4d1G4dO/rQ#xO1G4dOOQS,5=O,5=OO$!SQ#xO1G4cOOQS-E:b-E:bOOQU'#Gf'#GfO$!eQ#zO7+'RO$!pQ#xO'#FbO$#hQ#xO7+'mO$#xQ#xO7+'mOOQS7+'m7+'mO$$TQ#xO<<MOO$$eQ#xO<<MOO$$eQ#xO<<MOO$$mQ#xO'#HkOOQS<<Lu<<LuO$$wQ#xO<<LuOOQS7+'k7+'kOOOO1G0S1G0SO$%bQ#xO1G0SO0XQ#xO1G2bP0XQ#xO'#G[O$%jQ#xO7+)wO$%{Q#xO7+)wP!;oQ#xO'#G^OOQVG25`G25`O3aQ#xOG25`OOQVG25gG25gOOQVG25aG25aOOQV<<Kn<<KnO3aQ#xO<<KnOOQS7+*O7+*OP$&^Q#xO'#GdOOQU-E:d-E:dOOQV<<Jm<<JmO$'QQ&nO'#FdOOQS'#Ff'#FfO$'bQ#xO'#FeO$(SQ#xO'#FeOOQS'#Fe'#FeO$(XQ#xO'#I`O$!pQ#xO'#FlO$!pQ#xO'#FlO$(pQ#xO'#FmO$!pQ#xO'#FnO$(wQ#xO'#IaOOQS'#Ia'#IaO$)fQ#xO,5;|OOQS<<KX<<KXO$)nQ#xO<<KXO$*OQ#xOANBjO$*`Q#xOANBjO$*hQ#xO'#HlOOQS'#Hl'#HlO0sQ#xO'#DeO$+RQ#xO,5>VOOQSANBaANBaOOOO7+%n7+%nOOQS7+'|7+'|O$+jQ#xO<<McOOQVLD*zLD*zOOQVANAYANAYO4jQMlO'#GhO$+{Q&nO,5<VO$!pQ#xO'#FpOOQS,5<Z,5<ZOOQS'#Fg'#FgO$,mQ#xO,5<PO$,rQ#xO,5<POOQS'#Fj'#FjO$!pQ#xO'#GgO$-dQ#xO,5<TO$.OQ#xO,5>zO$.`Q#xO,5>zO0XQ#xO,5<SO$.qQ#xO,5<WO$.vQ#xO,5<WO$!pQ#xO'#IbO$.{Q#xO'#IbO$/QQ#xO,5<XOOQS,5<Y,5<YO'ZQ#xO'#FsOOQU1G1h1G1hO3aQ#xO1G1hOOQSAN@sAN@sO$/VQ#xOG28UO$/gQ#xO,5:POOQS1G3q1G3qOOQS,5=S,5=SOOQS-E:f-E:fO$/lQ&nO'#FdO$/sQ#xO'#IcO$0RQ#xO'#IcO$0ZQ#xO,5<[OOQS1G1k1G1kO$0`Q#xO1G1kO$0eQ#xO,5=ROOQS-E:e-E:eO$1PQ#xO,5=VO$1hQ#xO1G4fOOQS-E:i-E:iOOQS1G1n1G1nOOQS1G1r1G1rO$1xQ#xO,5>|O$!pQ#xO,5>|OOQS1G1s1G1sO$2WQ&nO,5<_OOQU7+'S7+'SO$$mQ#xO1G/kO$!pQ#xO,5<]O$2_Q#xO,5>}O$2fQ#xO,5>}OOQS1G1v1G1vOOQS7+'V7+'VP$!pQ#xO'#GkO$2nQ#xO1G4hO$2xQ#xO1G4hO$3QQ#xO1G4hOOQS7+%V7+%VO$3`Q#xO1G1wO$3nQ&nO'#FdO$3uQ#xO,5=UOOQS,5=U,5=UO$4TQ#xO1G4iOOQS-E:h-E:hO$!pQ#xO,5=TO$4[Q#xO,5=TO$4aQ#xO7+*SOOQS-E:g-E:gO$4kQ#xO7+*SO$!pQ#xO,5<^P$!pQ#xO'#GjO$4sQ#xO1G2oO$!pQ#xO1G2oP$5RQ#xO'#GiO$5YQ#xO<<MnO$5dQ#xO1G1xO$5rQ#xO7+(ZO7kQ#xO'#DPO7kQ#xO,59dO7kQ#xO,59dO7kQ#xO,59dO$6QQ&nO,5=mO7kQ#xO1G/OO/rQ#xO1G/ZO/rQ#xO7+$rP$6eQ#xO'#GVO'ZQ#xO'#HRO$6rQ#xO,59dO$6wQ#xO,59dO$7OQ#xO,59oO$7TQ#xO1G/WO0sQ#xO'#DTO7kQ#xO,59l\",\n stateData: \"$7f~O%pOS%eOSUOS%dPQ~OPiOXfOhtOjYOquOu!UOxvO!RwO!S!QO!V!XO!W!WO!ZZO!_[O!jeO!ueO!veO!weO#OyO#QzO#S{O#U|O#W}O#[!OO#^!PO#a!RO#b!RO#d!SO#f!TO#o!VO#r!YO#v!ZO#x![O#}!]O$QmO$S!^O%|RO%}RO&RSO&SWO&h]O&i^O&l_O&o`O&saO&tbO&ucO~O%d!_O~OX!fOa!fOc!gOj!nO!Z!pO!h!rO%w!aO%x!bO%y!cO%z!dO%{!dO%|!eO%}!eO&O!fO&P!fO&Q!fO~Om&VXn&VXo&VXp&VXq&VXr&VXu&VX|&VX}&VX!{&VX#j&VX%c&VX%f&VX&X&VXi&VX!V&VX!W&VX&Y&VX!Y&VX!^&VX!S&VX#_&VXv&VX!n&VX~P$gOhtOjYO!ZZO!_[O!jeO!ueO!veO!weO%|RO%}RO&RSO&SWO&h]O&i^O&l_O&o`O&saO&tbO&ucO~O|&UX}&UX#j&UX%c&UX%f&UX&X&UX~Om!uOn!vOo!tOp!tOq!wOr!xOu!yO!{&UX~P(hOX#POi#ROq0zOx1YO!RwO~P'ZOX#TOq0zOx1YO!Y#UO~P'ZOX#XOc#YOq0zOx1YO!^#ZO~P'ZO&j#^O&k#`O~O&m#aO&n#`O~OQ#cO%g#dO%h#fO~OR#gO%i#hO%j#fO~OS#jO%k#kO%l#fO~OT#mO%m#nO%n#fO~OX%vXa%vXc%vXj%vXm%vXn%vXo%vXp%vXq%vXr%vXu%vX|%vX!Z%vX!h%vX%w%vX%x%vX%y%vX%z%vX%{%vX%|%vX%}%vX&O%vX&P%vX&Q%vXi%vX!V%vX!W%vX~O&h]O&i^O&l_O&o`O&saO&tbO&ucO}%vX!{%vX#j%vX%c%vX%f%vX&X%vX&Y%vX!Y%vX!^%vX!S%vX#_%vXv%vX!n%vX~P,QO|#sO}%uX!{%uX#j%uX%c%uX%f%uX&X%uX~Oq0zOx1YO~P'ZO#j#vO%c#xO%f#xO~O&SWO~O!V#}O#x![O#}!]O$QmO~OquO~P'ZOX$SOc$TO&SWO}yP~OX$XOq0zOx1YO!S$YO~P'ZO}$[O!{$aO&X$]O#j!|X%c!|X%f!|X~OX$XOq0zOx1YO#j#VX%c#VX%f#VX~P'ZOq0zOx1YO#j#ZX%c#ZX%f#ZX~P'ZO!h$gO!u$gO&SWO~OX$rO~P'ZO!W$tO#v$uO#x$vO~O}$wO~OX%OO~P'ZOU%QO%c%PO%p%RO~OX%[Oc%[Oi%^Oq0zOx1YO~P'ZOq0zOx1YO}%aO~P'ZO&g%cO~Oc!gOj!nO!Z!pO!h!rOXdaadamdandaodapdaqdardauda|da}da!{da#jda%cda%fda%wda%xda%yda%zda%{da%|da%}da&Oda&Pda&Qda&Xdaida!Vda!Wda&Yda!Yda!^da!Sda#_davda!nda~Op%hO~Oq%hO~P'ZOq0zO~P'ZOm0|On0}Oo0{Op0{Oq1UOr1VOu1ZOi&UX!V&UX!W&UX&Y&UX!Y&UX!^&UX!S&UX#_&UX!n&UX~P(hO&Y%jOi&TX|&TX!V&TX!W&TX!Y&TX}&TX~Oi%lO|%mO!V%qO!W%pO~Oi%lO~O|%tO!V%qO!W%pO!Y&aX~O!Y%xO~O|%yO}%{O!V%qO!W%pO!^&[X~O!^&PO~O!^&QO~O&j#^O&k&SO~O&m#aO&n&SO~OX&VOq0zOx1YO!RwO~P'ZOQ#cO%g#dO%h&YO~OR#gO%i#hO%j&YO~OS#jO%k#kO%l&YO~OT#mO%m#nO%n&YO~OX!taa!tac!taj!tam!tan!tao!tap!taq!tar!tau!ta|!ta}!ta!Z!ta!h!ta!{!ta#j!ta%c!ta%f!ta%w!ta%x!ta%y!ta%z!ta%{!ta%|!ta%}!ta&O!ta&P!ta&Q!ta&X!tai!ta!V!ta!W!ta&Y!ta!Y!ta!^!ta!S!ta#_!tav!ta!n!ta~P#yO|&bO}%ua!{%ua#j%ua%c%ua%f%ua&X%ua~P$gOX&dOquOxvO}%ua!{%ua#j%ua%c%ua%f%ua&X%ua~P'ZO|&bO}%ua!{%ua#j%ua%c%ua%f%ua&X%ua~OPiOXfOquOxvO!RwO!S!QO#OyO#QzO#S{O#U|O#W}O#[!OO#^!PO#a!RO#b!RO#d!SO#f!TO#j%RX%c%RX%f%RX~P'ZO#j#vO%c&iO%f&iO~O!h&jOj&wX%c&wX#_&wX#j&wX%f&wX#^&wX~Oj!nO%c&lO~Omgangaogapgaqgargauga|ga}ga!{ga#jga%cga%fga&Xgaiga!Vga!Wga&Yga!Yga!^ga!Sga#_gavga!nga~P$gOusa|sa}sa#jsa%csa%fsa&Xsa~Om!uOn!vOo!tOp!tOq!wOr!xO!{sa~PDuO&X&nO|&WX}&WX~O&SWO|&WX}&WX~O|&qO}yX~O}&sO~O|%yO#j&[X%c&[X%f&[Xi&[X}&[X!^&[X!n&[X&X&[X~OX1TOq0zOx1YO!RwO~P'ZO&X$]O#jWa%cWa%fWa~O|&|O#j&^X%c&^X%f&^Xp&^X~P$gO|'PO!S'OO#j#Za%c#Za%f#Za~O#_'QO#j#]a%c#]a%f#]a~O!h$gO!u$gO#^'SO&SWO~O#^'SO~O|'UO#j&zX%c&zX%f&zX~O|'WO#j&vX%c&vX%f&vX}&vX~O!Z'YO&X'ZO~O|'_Op&}X~P$gOp'bO~OPiOXfOquOxvO!RwO!S!QO#OyO#QzO#S{O#U|O#W}O#[!OO#^!PO#a!RO#b!RO#d!SO#f!TO%c'gO~P'ZOv'kO#s'iO#t'jOP#qaX#qah#qaj#qaq#qau#qax#qa!R#qa!S#qa!V#qa!W#qa!Z#qa!_#qa!j#qa!u#qa!v#qa!w#qa#O#qa#Q#qa#S#qa#U#qa#W#qa#[#qa#^#qa#a#qa#b#qa#d#qa#f#qa#o#qa#r#qa#v#qa#x#qa#}#qa$Q#qa$S#qa%`#qa%|#qa%}#qa&R#qa&S#qa&h#qa&i#qa&l#qa&o#qa&s#qa&t#qa&u#qa%b#qa%f#qa~O|'lO#_'nO}'OX~Oj'pO!Z'YO~Oj!nO}$wO!Z'YO~O}'vO~P$gO%c'yO~OU'zO%c'yO~OX!fOa!fOc!gOj!nO!Z!pO!h!rO%y!cO%z!dO%{!dO%|!eO%}!eO&O!fO&P!fO&Q!fOmYinYioYipYiqYirYiuYi|Yi}Yi!{Yi#jYi%cYi%fYi%wYi&XYiiYi!VYi!WYi&YYi!YYi!^Yi!SYi#_YivYi!nYi~O%x!bO~P!!`O%xYi~P!!`OX!fOa!fOc!gOj!nO!Z!pO!h!rO%|!eO%}!eO&O!fO&P!fO&Q!fOmYinYioYipYiqYirYiuYi|Yi}Yi!{Yi#jYi%cYi%fYi%wYi%xYi%yYi&XYiiYi!VYi!WYi&YYi!YYi!^Yi!SYi#_YivYi!nYi~O%z!dO%{!dO~P!%ZO%zYi%{Yi~P!%ZOc!gOj!nO!Z!pO!h!rOmYinYioYipYiqYirYiuYi|Yi}Yi!{Yi#jYi%cYi%fYi%wYi%xYi%yYi%zYi%{Yi%|Yi%}Yi&XYiiYi!VYi!WYi&YYi!YYi!^Yi!SYi#_YivYi!nYi~OX!fOa!fO&O!fO&P!fO&Q!fO~P!(XOXYiaYi&OYi&PYi&QYi~P!(XO!V%qO!W%pOi&dX|&dX~O&X'|O&Y'|O~P,QO|(OOi&cX~Oi(QO~O|(RO}(TO!Y&fX~Oq0zOx1YO|(RO}(UO!Y&fX~P'ZO!Y(WO~Oo!tOp!tOq!wOr!xOmliuli|li}li!{li#jli%cli%fli&Xli~On!vO~P!,zOnli~P!,zOm0|On0}Oo0{Op0{Oq1UOr1VO~Ov(YO~P!.TOX(_Oi(`Oq0zOx1YO~P'ZOi(`O|(aO~Oi(cO~O!W(eO~Oi(fO|(aO!V%qO!W%pO~P$gOm0|On0}Oo0{Op0{Oq1UOr1VOisa!Vsa!Wsa&Ysa!Ysa!^sa!Ssa#_savsa!nsa~PDuOX(_Oq0zOx1YO!Y&aa~P'ZO|(iO!Y&aa~O!Y(jO~O|(iO!V%qO!W%pO!Y&aa~P$gOX(nOq0zOx1YO!^&[a#j&[a%c&[a%f&[ai&[a}&[a!n&[a&X&[a~P'ZO|(oO!^&[a#j&[a%c&[a%f&[ai&[a}&[a!n&[a&X&[a~O!^(rO~O|(oO!V%qO!W%pO!^&[a~P$gO|(uO!V%qO!W%pO!^&ba~P$gO|(xO}&pX!^&pX!n&pX~O}({O!^(}O!n)OO~O}({O!^)PO!n)QO~O}({O!^)RO!n)SO~O}({O!^)TO!n)UO~OX&dOquOxvO}%ui!{%ui#j%ui%c%ui%f%ui&X%ui~P'ZO|)VO}%ui!{%ui#j%ui%c%ui%f%ui&X%ui~O!h&jOj&wa%c&wa#_&wa#j&wa%f&wa#^&wa~O%c)[O~OX$SOc$TO&SWO~O|&qO}ya~OquOxvO~P'ZO|(oO#j&[a%c&[a%f&[ai&[a}&[a!^&[a!n&[a&X&[a~P$gO|)aO#j%uX%c%uX%f%uX&X%uX~O&X$]O#jWi%cWi%fWi~O#j&^a%c&^a%f&^ap&^a~P'ZO|)dO#j&^a%c&^a%f&^ap&^a~OX)hOj)jO&SWO~O#^)kO~O&SWO#j&za%c&za%f&za~O|)mO#j&za%c&za%f&za~Oq0zOx1YO#j&va%c&va%f&va}&va~P'ZO|)pO#j&va%c&va%f&va}&va~OX)rOc)rO&SWO~O&X)wO~Ov)zO#m)yOP#kiX#kih#kij#kiq#kiu#kix#ki!R#ki!S#ki!V#ki!W#ki!Z#ki!_#ki!j#ki!u#ki!v#ki!w#ki#O#ki#Q#ki#S#ki#U#ki#W#ki#[#ki#^#ki#a#ki#b#ki#d#ki#f#ki#o#ki#r#ki#v#ki#x#ki#}#ki$Q#ki$S#ki%`#ki%|#ki%}#ki&R#ki&S#ki&h#ki&i#ki&l#ki&o#ki&s#ki&t#ki&u#ki%b#ki%f#ki~Ov){OP#niX#nih#nij#niq#niu#nix#ni!R#ni!S#ni!V#ni!W#ni!Z#ni!_#ni!j#ni!u#ni!v#ni!w#ni#O#ni#Q#ni#S#ni#U#ni#W#ni#[#ni#^#ni#a#ni#b#ni#d#ni#f#ni#o#ni#r#ni#v#ni#x#ni#}#ni$Q#ni$S#ni%`#ni%|#ni%}#ni&R#ni&S#ni&h#ni&i#ni&l#ni&o#ni&s#ni&t#ni&u#ni%b#ni%f#ni~OX)}Op&}a~P'ZO|*OOp&}a~O|*OOp&}a~P$gOp*SO~O%a*WO~Ov*ZO#s'iO#t*YOP#qiX#qih#qij#qiq#qiu#qix#qi!R#qi!S#qi!V#qi!W#qi!Z#qi!_#qi!j#qi!u#qi!v#qi!w#qi#O#qi#Q#qi#S#qi#U#qi#W#qi#[#qi#^#qi#a#qi#b#qi#d#qi#f#qi#o#qi#r#qi#v#qi#x#qi#}#qi$Q#qi$S#qi%`#qi%|#qi%}#qi&R#qi&S#qi&h#qi&i#qi&l#qi&o#qi&s#qi&t#qi&u#qi%b#qi%f#qi~OX*^Oq0zOx1YO}$wO~P'ZOq0zOx1YO}'Oa~P'ZO|*bO}'Oa~OX*fOc*gOi*jO&O*hO&SWO~O}$wO'R*lO~Oj'pO~Oj!nO}$wO~O%c*qO~O%c*sO~OX%[Oc%[Oq0zOx1YOi&ca~P'ZO|*vOi&ca~Oq0zOx1YO}*yO!Y&fa~P'ZO|*zO!Y&fa~Oq0zOx1YO|*zO}*}O!Y&fa~P'ZOq0zOx1YO|*zO!Y&fa~P'ZO|*zO}*}O!Y&fa~Oo0{Op0{Oq1UOr1VOilimliuli|li!Vli!Wli&Yli!Yli}li!^li#jli%cli%fli!Sli#_livli!nli&Xli~On0}O~P!JzOnli~P!JzOX(_Oi+SOq0zOx1YO~P'ZOp+UO~Oi+SO|+WO~Oi+XO~OX(_Oq0zOx1YO!Y&ai~P'ZO|+YO!Y&ai~O!Y+ZO~OX(nOq0zOx1YO!^&[i#j&[i%c&[i%f&[ii&[i}&[i!n&[i&X&[i~P'ZO|+^O!V%qO!W%pO!^&bi~O|+aO!^&[i#j&[i%c&[i%f&[ii&[i}&[i!n&[i&X&[i~O!^+bO~Oc+dOq0zOx1YO!^&bi~P'ZO|+^O!^&bi~O!^+fO~OX+hOq0zOx1YO}&pa!^&pa!n&pa~P'ZO|+iO}&pa!^&pa!n&pa~O!_+lO&r+mO!^!oX~O!^+oO~O}({O!^+pO~O}({O!^+qO~O}({O!^+rO~O}({O!^+sO~OX&dOquOxvO}%uq!{%uq#j%uq%c%uq%f%uq&X%uq~P'ZO|$yi}$yi!{$yi#j$yi%c$yi%f$yi&X$yi~P$gOX&dOquOxvO~P'ZOX&dOq0zOx1YO#j%ua%c%ua%f%ua&X%ua~P'ZO|+tO#j%ua%c%ua%f%ua&X%ua~O|$la#j$la%c$la%f$lap$la~P$gO#j&^i%c&^i%f&^ip&^i~P'ZO|+wO#j#Zq%c#Zq%f#Zq~O|+xO#_+zO#j&yX%c&yX%f&yXi&yX~OX+|Oj)jO&SWO~O&SWO#j&zi%c&zi%f&zi~Oq0zOx1YO#j&vi%c&vi%f&vi}&vi~P'ZO}$[O|#hX!Y#hX~O|,QO!Y&{X~O!Y,SO~Ov,VO#m)yOP#kqX#kqh#kqj#kqq#kqu#kqx#kq!R#kq!S#kq!V#kq!W#kq!Z#kq!_#kq!j#kq!u#kq!v#kq!w#kq#O#kq#Q#kq#S#kq#U#kq#W#kq#[#kq#^#kq#a#kq#b#kq#d#kq#f#kq#o#kq#r#kq#v#kq#x#kq#}#kq$Q#kq$S#kq%`#kq%|#kq%}#kq&R#kq&S#kq&h#kq&i#kq&l#kq&o#kq&s#kq&t#kq&u#kq%b#kq%f#kq~Op%Ta|%Ta~P$gOX)}Op&}i~P'ZO|,^Op&}i~O|,hO}$wO#_,hO~O#t,jOP#qqX#qqh#qqj#qqq#qqu#qqx#qq!R#qq!S#qq!V#qq!W#qq!Z#qq!_#qq!j#qq!u#qq!v#qq!w#qq#O#qq#Q#qq#S#qq#U#qq#W#qq#[#qq#^#qq#a#qq#b#qq#d#qq#f#qq#o#qq#r#qq#v#qq#x#qq#}#qq$Q#qq$S#qq%`#qq%|#qq%}#qq&R#qq&S#qq&h#qq&i#qq&l#qq&o#qq&s#qq&t#qq&u#qq%b#qq%f#qq~O#_,kO|%Va}%Va~Oq0zOx1YO}'Oi~P'ZO|,mO}'Oi~O}$[O&X,oOi'QX|'QX~O&SWOi'QX|'QX~O|,sOi'PX~Oi,uO~O%a,xO~O!V%qO!W%pOi&di|&di~OX%[Oc%[Oq0zOx1YOi&ci~P'ZO},{O|$oa!Y$oa~Oq0zOx1YO},|O|$oa!Y$oa~P'ZOq0zOx1YO}*yO!Y&fi~P'ZO|-PO!Y&fi~Oq0zOx1YO|-PO!Y&fi~P'ZO|-PO}-SO!Y&fi~Oi$ki|$ki!Y$ki~P$gOX(_Oq0zOx1YO~P'ZOp-UO~OX(_Oi-VOq0zOx1YO~P'ZOX(_Oq0zOx1YO!Y&aq~P'ZO|$ji!^$ji#j$ji%c$ji%f$jii$ji}$ji!n$ji&X$ji~P$gOX(nOq0zOx1YO~P'ZOc+dOq0zOx1YO!^&bq~P'ZO|-WO!^&bq~O!^-XO~OX(nOq0zOx1YO!^&[q#j&[q%c&[q%f&[qi&[q}&[q!n&[q&X&[q~P'ZO}-YO~OX+hOq0zOx1YO}&pi!^&pi!n&pi~P'ZO|-_O}&pi!^&pi!n&pi~O!_+lO&r+mO!^!oa~OX&dOq0zOx1YO#j%ui%c%ui%f%ui&X%ui~P'ZO|-bO#j%ui%c%ui%f%ui&X%ui~O&SWO#j&ya%c&ya%f&yai&ya~O|-eO#j&ya%c&ya%f&yai&ya~Oi-hO~OX)rOc)rO&SWO!Y&{a~O|-jO!Y&{a~Op%Ti|%Ti~P$gOX)}O~P'ZOX)}Op&}q~P'ZOv-nOP#pyX#pyh#pyj#pyq#pyu#pyx#py!R#py!S#py!V#py!W#py!Z#py!_#py!j#py!u#py!v#py!w#py#O#py#Q#py#S#py#U#py#W#py#[#py#^#py#a#py#b#py#d#py#f#py#o#py#r#py#v#py#x#py#}#py$Q#py$S#py%`#py%|#py%}#py&R#py&S#py&h#py&i#py&l#py&o#py&s#py&t#py&u#py%b#py%f#py~O%b-rO%f-rO~P`O#t-sOP#qyX#qyh#qyj#qyq#qyu#qyx#qy!R#qy!S#qy!V#qy!W#qy!Z#qy!_#qy!j#qy!u#qy!v#qy!w#qy#O#qy#Q#qy#S#qy#U#qy#W#qy#[#qy#^#qy#a#qy#b#qy#d#qy#f#qy#o#qy#r#qy#v#qy#x#qy#}#qy$Q#qy$S#qy%`#qy%|#qy%}#qy&R#qy&S#qy&h#qy&i#qy&l#qy&o#qy&s#qy&t#qy&u#qy%b#qy%f#qy~O|-vO}$wO#_-vO~Oq0zOx1YO}'Oq~P'ZO|-yO}'Oq~O&X,oOi'Qa|'Qa~OX*fOc*gO&O*hO&SWOi'Pa~O|-}Oi'Pa~O$V.RO~OX%[Oc%[Oq0zOx1YO~P'ZOq0zOx1YO}.SO|$oi!Y$oi~P'ZOq0zOx1YO|$oi!Y$oi~P'ZO}.SO|$oi!Y$oi~Oq0zOx1YO}*yO~P'ZOq0zOx1YO}*yO!Y&fq~P'ZO|.VO!Y&fq~Oq0zOx1YO|.VO!Y&fq~P'ZOu.YO!V%qO!W%pOi&]q!Y&]q!^&]q|&]q~P!.TOc+dOq0zOx1YO!^&by~P'ZO|$mi!^$mi~P$gOc+dOq0zOx1YO~P'ZOX+hOq0zOx1YO~P'ZOX+hOq0zOx1YO}&pq!^&pq!n&pq~P'ZO}({O!^.^O!n._O~OX&dOq0zOx1YO#j%uq%c%uq%f%uq&X%uq~P'ZO#_.`O|%Oa#j%Oa%c%Oa%f%Oai%Oa~O&SWO#j&yi%c&yi%f&yii&yi~O|.bO#j&yi%c&yi%f&yii&yi~OX)rOc)rO&SWO!Y&{i~Ov.fOP#p!RX#p!Rh#p!Rj#p!Rq#p!Ru#p!Rx#p!R!R#p!R!S#p!R!V#p!R!W#p!R!Z#p!R!_#p!R!j#p!R!u#p!R!v#p!R!w#p!R#O#p!R#Q#p!R#S#p!R#U#p!R#W#p!R#[#p!R#^#p!R#a#p!R#b#p!R#d#p!R#f#p!R#o#p!R#r#p!R#v#p!R#x#p!R#}#p!R$Q#p!R$S#p!R%`#p!R%|#p!R%}#p!R&R#p!R&S#p!R&h#p!R&i#p!R&l#p!R&o#p!R&s#p!R&t#p!R&u#p!R%b#p!R%f#p!R~Oq0zOx1YO}'Oy~P'ZOX*fOc*gO&O*hO&SWOi'Pi~O$V.RO%b.nO%f.nO~OX.xOj.vO!Z.uO!_.wO!j.qO!v.sO!w.sO%}.pO&SWO&h]O&i^O&l_O~Oq0zOx1YO|$oq!Y$oq~P'ZO}.}O|$oq!Y$oq~Oq0zOx1YO}*yO!Y&fy~P'ZO|/OO!Y&fy~Oq0zOx/SO~P'ZOu.YO!V%qO!W%pOi&]y!Y&]y!^&]y|&]y~P!.TO}({O!^/VO~O&SWO#j&yq%c&yq%f&yqi&yq~O|/XO#j&yq%c&yq%f&yqi&yq~OX*fOc*gO&O*hO&SWO~Oj/^O!h/[O|$WX#_$WX%w$WXi$WX~Ou$WX}$WX!Y$WX!^$WX~P$&lO%|/`O%}/`Ou$XX|$XX}$XX#_$XX%w$XX!Y$XXi$XX!^$XX~O!j/bO~O|/fO#_/hO%w/cOu'SX}'SX!Y'SXi'SX~Oc/kO~P$!|Oj/^Ou'TX|'TX}'TX#_'TX%w'TX!Y'TXi'TX!^'TX~Ou/oO}$wO~Oq0zOx1YO|$oy!Y$oy~P'ZOq0zOx1YO}*yO!Y&f!R~P'ZO|/sO!Y&f!R~Oi&`Xu&`X!V&`X!W&`X!Y&`X!^&`X|&`X~P!.TOu.YO!V%qO!W%pOi&_a!Y&_a!^&_a|&_a~O&SWO#j&yy%c&yy%f&yyi&yy~O!h/[Oj$_au$_a|$_a}$_a#_$_a%w$_a!Y$_ai$_a!^$_a~O!j/|O~O%|/`O%}/`Ou$Xa|$Xa}$Xa#_$Xa%w$Xa!Y$Xai$Xa!^$Xa~O%w/cOu$]a|$]a}$]a#_$]a!Y$]ai$]a!^$]a~Ou'Sa}'Sa!Y'Sai'Sa~P$!pO|0ROu'Sa}'Sa!Y'Sai'Sa~O!Y0UO~Oi0UO~O}0WO~O!^0XO~Oq0zOx1YO}*yO!Y&f!Z~P'ZO}0[O~O&X0]O~P$&lO|0^O#_/hO%w/cOi'VX~O|0^Oi'VX~Oi0`O~O!j0aO~O#_/hOu%Za|%Za}%Za%w%Za!Y%Zai%Za!^%Za~O#_/hO%w/cOu%_a|%_a}%_a!Y%_ai%_a~Ou'Si}'Si!Y'Sii'Si~P$!pO|0cO#_/hO%w/cO!^'Ua~O}$ga~P$gOi'Va~P$!pO|0kOi'Va~Oc0mO!^'Ui~P$!|O|0oO!^'Ui~O|0oO#_/hO%w/cO!^'Ui~O#_/hO%w/cOi$ei|$ei~O&X0rO~P$&lO#_/hO%w/cOi%^a|%^a~Oi'Vi~P$!pO}0uO~Oc0mO!^'Uq~P$!|O|0wO!^'Uq~O#_/hO%w/cO|%]i!^%]i~Oc0mO~P$!|Oc0mO!^'Uy~P$!|O#_/hO%w/cOi$fi|$fi~O#_/hO%w/cO|%]q!^%]q~O|+tO#j%ua%c%ua%f%ua&X%ua~P$gOX&dOq0zOx1YO~P'ZOp1PO~Oq1PO~P'ZO}1QO~Ov1RO~P!.TO&i&l&t&u&h&o&s&S&h~\",\n goto: \"!?b'WPPPPPPPP'XP'a*|+f,P,k-W-tP.cP'a/S/S'aPPP'a2oPPPPPP2o5fPP5fP7y8S>fPP>i?Z?^PP'a'aPP?vPP'a'aPP'a'a'a'a'a?z@t'aP@wP@}EXHxPH|IYI^IbIf'aPPPIjIs'XP'X'XP'XP'XP'XP'XP'X'X'XP'XPP'XPP'XP'XPIyJVJ_PJfJlPJfPJfJfPPPJfPLzPMTM_MeLzPJfMnPJfPMuM{PNPNe! S! mNPNP! s!!QNPNPNPNP!!f!!l!!o!!t!!w!#R!#X!#e!#w!#}!$X!$_!${!%R!%X!%_!%i!%o!%u!%{!&R!&X!&k!&u!&{!'R!'X!'c!'i!'o!'u!'{!(V!(]!(g!(m!(v!(|!)]!)e!)o!)vPPPPPPPPPPPPPPPPP!)|!*P!*V!*`!*j!*uPPPPPPPPPPPP!/l!1Q!5T!8hPP!8p!9S!9]!:U!9{!:_!:e!:h!:k!:n!:v!;gPPPPPPPPP!;j!;yPPPP!<i!<u!=R!=X!=b!=e!=h!=n!=t!=z!=}P!>V!>`!?[!?_]jOs#v$w*W,d(TeOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!n!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(O(R(T(U(Y(_(a(e(i(n(o(u(x)V)X)a)d)p)w)y)}*O*S*W*^*b*l*v*y*z*}+T+U+W+Y+]+^+a+d+h+i+l+t+v+w,O,],^,d,l,m,p,z,{,|-O-P-S-U-W-Y-[-^-_-b-y-{.S.V.Y.}/O/o/s0[0z0{0|0}1P1Q1R1S1T1V1Z}!hQ#r$P$b$q$}%r%w%}&O&t'a'x)W)c)|+R+[,[-Z0Y1O!P!iQ#r$P$b$q$}%S%r%w%}&O&t'a'x)W)c)|+R+[,[-Z0Y1O!R!jQ#r$P$b$q$}%S%T%r%w%}&O&t'a'x)W)c)|+R+[,[-Z0Y1O!T!kQ#r$P$b$q$}%S%T%U%r%w%}&O&t'a'x)W)c)|+R+[,[-Z0Y1O!V!lQ#r$P$b$q$}%S%T%U%V%r%w%}&O&t'a'x)W)c)|+R+[,[-Z0Y1O!X!mQ#r$P$b$q$}%S%T%U%V%W%r%w%}&O&t'a'x)W)c)|+R+[,[-Z0Y1O!]!mQ!s#r$P$b$q$}%S%T%U%V%W%X%r%w%}&O&t'a'x)W)c)|+R+[,[-Z0Y1O(TTOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!n!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(O(R(T(U(Y(_(a(e(i(n(o(u(x)V)X)a)d)p)w)y)}*O*S*W*^*b*l*v*y*z*}+T+U+W+Y+]+^+a+d+h+i+l+t+v+w,O,],^,d,l,m,p,z,{,|-O-P-S-U-W-Y-[-^-_-b-y-{.S.V.Y.}/O/o/s0[0z0{0|0}1P1Q1R1S1T1V1Z&iVOYZ[isuw}!O!S!U!V!Z!n!p!t!u!v!x!y#c#g#j#m#s#v$Y$[$^$a$u$w%[%a%h%k%m%t%y%{&V&b&o&s'O'P'W'Z'b'i'l'}(O(R(T(U(Y(a(i(o(u(x)V)X)a)p)w)y*S*W*^*b*l*v*y*z*}+T+U+W+Y+]+^+a+h+i+l+t+w,O,d,l,m,p,z,{,|-O-P-S-U-W-Y-[-^-_-b-y-{.S.V.Y.}/O/s0[0z0{0|0}1P1Q1R1S1V1Z%sXOYZ[isw}!O!S!U!V!Z!n!p#c#g#j#m#s#v$Y$[$^$a$u$w%[%a%k%m%t%y%{&V&b&o&s'O'P'W'Z'b'i'l'}(O(R(T(U(Y(a(i(o(u(x)V)X)a)p)w)y*S*W*^*b*l*v*y*z*}+T+W+Y+]+^+a+h+i+l+t+w,O,d,l,m,p,z,{,|-O-P-S-W-Y-[-^-_-b-y-{.S.V.}/O/s1Q1R1SQ$VvQ/t/SR1W1Y'zeOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(R(T(U(Y(_(a(e(i(n(o(u(x)V)X)a)d)p)w)y)}*O*S*W*^*b*l*y*z*}+T+U+W+Y+]+^+a+d+h+i+l+t+v+w,O,],^,d,l,m,p,{,|-O-P-S-U-W-Y-[-^-_-b-y-{.S.V.Y.}/O/o/s0[0z0{0|0}1P1Q1R1S1T1V1ZW#ym!P!Q$hW$Rv&q/S1YQ$j!RQ$n!TQ${![Q$|!]W%Z!n(O*v,zS&p$S$TQ'e$vQ)Y&jQ)h'QU)i'S)j)kU)l'U)m+}W)s'Y,Q-j.dQ*d'nW*e'p,s-}.lQ,P)rS,r*f*gY-d+x-e.a.b/XQ-g+zQ-t,hQ-x,kQ.j-vl.o.R.u.v.x/d/f/k0R0W0]0b0m0r0uQ/W.`Q/l.wQ/x/^Q0T/hU0h0^0k0sX0n0c0o0v0wR&o$R!_!|YZ!U!V!p%a%m%t(R(T(U(a(i)y*y*z*}+T+W+Y,{,|-O-P-S.S.V.}/O/sR%k!{Q#QYQ&W#cQ&Z#gQ&]#jQ&_#mQ&x$^Q&{$aR-`+lT/R.Y0[![!oQ!s#r$P$b$q$}%S%T%U%V%W%X%r%w%}&O&t'a'x)W)c)|+R+[,[-Z0Y1OQ&m#zQ't$|R*p'uR'}%ZQ%d!rR/v/[(SdOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!n!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(O(R(T(U(Y(_(a(e(i(n(o(u(x)V)X)a)d)p)w)y)}*O*S*W*^*b*l*v*y*z*}+T+U+W+Y+]+^+a+d+h+i+l+t+v+w,O,],^,d,l,m,p,z,{,|-O-P-S-U-W-Y-[-^-_-b-y-{.S.V.Y.}/O/o/s0[0z0{0|0}1P1Q1R1S1T1V1ZS#pd#q!P.s.R.u.v.w.x/^/d/f/k0R0W0]0^0b0c0k0m0o0r0s0u0v0w(SdOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!n!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(O(R(T(U(Y(_(a(e(i(n(o(u(x)V)X)a)d)p)w)y)}*O*S*W*^*b*l*v*y*z*}+T+U+W+Y+]+^+a+d+h+i+l+t+v+w,O,],^,d,l,m,p,z,{,|-O-P-S-U-W-Y-[-^-_-b-y-{.S.V.Y.}/O/o/s0[0z0{0|0}1P1Q1R1S1T1V1ZT#pd#qT#d`#ee(|&W&Z&]&_)O)Q)S)U-`._T+m({+nT#ha#iT#kb#lT#nc#oQ$`xQ,P)sR,q*eX$^x$_$`&zQ'[$nQ'r${Q'u$|R*V'eQ)t'YV-i,Q-j.dZlOs$w*W,dXpOs*W,dQ$x!YQ']$oQ'^$pQ'o$zQ's$|Q*T'dQ*['iQ*_'jQ*`'kQ*m'qS*o't'uQ,W)yQ,Y)zQ,Z){Q,_*RS,a*U*nQ,e*YQ,f*ZS,g*]*^Q,w*pQ-l,VQ-m,XQ-o,`S-p,b,cQ-u,iQ-w,jQ.e-nQ.g-qQ.h-sQ.i-tQ/Y.fQ/Z.jQ/p.{R0Z/qWpOs*W,dR#|oQ'q${S*U'e'rR,c*VQ,p*eR-{,qQ*n'qQ,b*UR-q,cZnOos*W,dQ'w$}R*r'xT.P,x.Qu.z.R.u.v.x/^/d/f/k0R0W0]0^0b0k0m0r0s0ut.z.R.u.v.x/^/d/f/k0R0W0]0^0b0k0m0r0s0uQ/l.wX0n0c0o0v0w!P.r.R.u.v.w.x/^/d/f/k0R0W0]0^0b0c0k0m0o0r0s0u0v0wQ/a.qR/}/bg/d.t/e/y0Q0V0e0g0i0t0x0yu.y.R.u.v.x/^/d/f/k0R0W0]0^0b0k0m0r0s0uX/_.o.y/x0hR/z/^V0j0^0k0sR/q.{QsOS$Os,dR,d*WQ&r$UR)_&rS%z#W$WS(p%z(sT(s%}&tQ%n#OQ%u#SW(b%n%u(g(kQ(g%rR(k%wQ&}$bR)e&}Q(v&OQ+_(qT+e(v+_Q(P%]R*w(PS(S%`%aY*{(S*|-Q.W/PU*|(T(U(VU-Q*}+O+PS.W-R-SR/P.XQ#_^R&R#_Q#b_R&T#bQ#e`R&X#eQ(y&US+j(y+kR+k(zQ+n({R-a+nQ#iaR&[#iQ#lbR&^#lQ#ocR&`#oQ#qdR&a#qQ#tgQ&c#rW&f#t&c)b+uQ)b&wR+u1OQ$_xS&y$_&zR&z$`Q'X$lR)q'XQ&k#yR)Z&kQ$h!QR'R$hQ+y)iS-f+y.cR.c-gQ'V$jR)n'VQ,R)tR-k,RQ#wkR&h#wQ)x']R,U)xQ'`$qS*P'`*QR*Q'aQ'h$xR*X'hQ'm$yS*c'm,nR,n*dQ,t*iR.O,tWoOs*W,dR#{oQ.Q,xR.m.Qd/e.t/y0Q0V0e0g0i0t0x0yR0P/eU/].o/x0hR/w/]Q0d0VS0p0d0qR0q0eS0_/y/zR0l0_Q/g.tR0S/gR!`PXrOs*W,dWqOs*W,dR'f$wYkOs$w*W,dR&g#v[xOs#v$w*W,dR&x$^&hQOYZ[isuw}!O!S!U!V!Z!n!p!t!u!v!x!y#c#g#j#m#s#v$Y$[$^$a$u$w%[%a%h%k%m%t%y%{&V&b&o&s'O'P'W'Z'b'i'l'}(O(R(T(U(Y(a(i(o(u(x)V)X)a)p)w)y*S*W*^*b*l*v*y*z*}+T+U+W+Y+]+^+a+h+i+l+t+w,O,d,l,m,p,z,{,|-O-P-S-U-W-Y-[-^-_-b-y-{.S.V.Y.}/O/s0[0z0{0|0}1P1Q1R1S1V1ZQ!sTQ#rfQ$PtU$by%p(eS$q!W$tQ$}!^Q%S!hQ%T!iQ%U!jQ%V!kQ%W!lQ%X!mQ%r#PQ%w#TQ%}#XQ&O#YQ&t$XQ'a$rQ'x%OQ)W&dU)c&|)d+vW)|'_*O,],^Q+R(_Q+[(nQ,[)}Q-Z+dQ0Y/oR1O1TQ#OYQ#SZQ$o!UQ$p!VQ%`!pQ(V%a^(^%m%t(a(i+T+W+Y^*x(R*z-O-P.V/O/sQ+O(TQ+P(UQ,X)yQ,}*yQ-R*}Q.T,{Q.U,|Q.X-SQ.|.SR/r.}[gOs#v$w*W,d!^!{YZ!U!V!p%a%m%t(R(T(U(a(i)y*y*z*}+T+W+Y,{,|-O-P-S.S.V.}/O/sQ#W[Q#uiS$Ww}Q$e!OW$l!S$a'b*SS$y!Z$uW%Y!n(O*v,zY&U#c#g#j#m+l`&e#s&b)V)X)a+t-b1SQ&u$YQ&v$[Q&w$^Q'{%[Q(]%kW(m%y(o+]+aQ(q%{Q(z&VQ)]&oS)`&s1QQ)f'OQ)g'PU)o'W)p,OQ)v'ZQ*]'iY*a'l*b,l,m-yQ*t'}S+Q(Y1RW+c(u+^-W-[W+g(x+i-^-_Q,T)wQ,i*^Q,v*lQ-]+hQ-c+wQ-z,pQ.]-YR.k-{hUOs#s#v$w&b&s(Y)V)X*W,d%Y!zYZ[iw}!O!S!U!V!Z!n!p#c#g#j#m$Y$[$^$a$u%[%a%k%m%t%y%{&V&o'O'P'W'Z'b'i'l'}(O(R(T(U(a(i(o(u(x)a)p)w)y*S*^*b*l*v*y*z*}+T+W+Y+]+^+a+h+i+l+t+w,O,l,m,p,z,{,|-O-P-S-W-Y-[-^-_-b-y-{.S.V.}/O/s1Q1R1SQ$QuW%e!t!x0{1VQ%f!uQ%g!vQ%i!yQ%s0zS(X%h1PQ(Z0|Q([0}Q-T+UQ.[-US/Q.Y0[R1X1ZU$Uv/S1YR)^&q[hOs#v$w*W,da!}Y#c#g#j#m$^$a+lQ#][Q$ZwR$d}Q%o#OQ%v#SQ%|#WQ'{%YQ(h%rQ(l%wQ(t%}Q(w&OQ+`(qQ,y*tQ.Z-TQ/U.[R/u/TQ$cyQ(d%pR+V(eQ/T.YR0f0[R#VZR#[[R%_!nQ%]!nV*u(O*v,z!]!qQ!s#r$P$b$q$}%S%T%U%V%W%X%r%w%}&O&t'a'x)W)c)|+R+[,[-Z0Y1OR%b!pQ&W#cQ&Z#gQ&]#jQ&_#mR-`+lQ(}&WQ)P&ZQ)R&]Q)T&_Q+p)OQ+q)QQ+r)SQ+s)UQ.^-`R/V._Q$m!SQ&{$aQ*R'bR,`*SQ#zmQ$f!PQ$i!QR'T$hQ)h'SR+|)kQ)h'SQ+{)jR+|)kR$k!RR)u'YXqOs*W,dQ$s!WR'c$tQ$z!ZR'd$uR*k'pQ*i'pV-|,s-}.lQ.{.RQ/i.uR/j.vU.t.R.u.vQ/n.xQ/y/^Q0O/dU0Q/f0R0bQ0V/kQ0e0WQ0g0]U0i0^0k0sQ0t0mQ0x0rR0y0uR/m.wR/{/^\",\n nodeNames: \"⚠ print { { { { Comment Script AssignStatement * BinaryExpression BitOp BitOp BitOp BitOp ArithOp ArithOp @ ArithOp ** UnaryExpression ArithOp BitOp AwaitExpression await ) ( ParenthesizedExpression BinaryExpression or and CompareOp in not is UnaryExpression ConditionalExpression if else LambdaExpression lambda ParamList VariableName AssignOp , : NamedExpression AssignOp YieldExpression yield from TupleExpression ComprehensionExpression async for LambdaExpression ] [ ArrayExpression ArrayComprehensionExpression } { DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression CallExpression ArgList AssignOp MemberExpression . PropertyName Number String FormatString FormatReplacement FormatConversion FormatSpec FormatReplacement FormatReplacement FormatReplacement FormatReplacement ContinuedString Ellipsis None Boolean TypeDef AssignOp UpdateStatement UpdateOp ExpressionStatement DeleteStatement del PassStatement pass BreakStatement break ContinueStatement continue ReturnStatement return YieldStatement PrintStatement RaiseStatement raise ImportStatement import as ScopeStatement global nonlocal AssertStatement assert TypeDefinition type TypeParamList TypeParam StatementGroup ; IfStatement Body elif WhileStatement while ForStatement TryStatement try except finally WithStatement with FunctionDefinition def ParamList AssignOp TypeDef ClassDefinition class DecoratedStatement Decorator At MatchStatement match MatchBody MatchClause case CapturePattern LiteralPattern ArithOp ArithOp AsPattern OrPattern LogicOp AttributePattern SequencePattern MappingPattern StarPattern ClassPattern PatternArgList KeywordPattern KeywordPattern Guard\",\n maxTerm: 283,\n context: trackIndent,\n nodeProps: [\n [\"group\", -15,8,88,90,91,93,95,97,99,101,102,103,105,108,111,113,\"Statement Statement\",-22,10,20,23,27,42,51,52,58,59,62,63,64,65,66,69,72,73,74,82,83,84,85,\"Expression\",-10,117,119,122,124,125,129,131,136,138,141,\"Statement\",-9,146,147,150,151,153,154,155,156,157,\"Pattern\"],\n [\"openedBy\", 25,\"(\",56,\"[\",60,\"{\"],\n [\"closedBy\", 26,\")\",57,\"]\",61,\"}\"]\n ],\n propSources: [pythonHighlighting],\n skippedNodes: [0,6],\n repeatNodeCount: 38,\n tokenData: \"%-W#sR!`OX%TXY=|Y[%T[]=|]p%Tpq=|qr@_rsDOst!+|tu%Tuv!Nnvw#!|wx#$Wxy#:Uyz#;Yz{#<^{|#>x|}#@S}!O#AW!O!P#Ci!P!Q#N_!Q!R$!y!R![$&w![!]$1e!]!^$3s!^!_$4w!_!`$7c!`!a$8m!a!b%T!b!c$;U!c!d$<b!d!e$>W!e!h$<b!h!i$H[!i!t$<b!t!u%#r!u!w$<b!w!x$Fl!x!}$<b!}#O%%z#O#P?d#P#Q%'O#Q#R%(S#R#S$<b#S#T%T#T#U$<b#U#V$>W#V#Y$<b#Y#Z$H[#Z#f$<b#f#g%#r#g#i$<b#i#j$Fl#j#o$<b#o#p%)^#p#q%*S#q#r%+^#r#s%,S#s$g%T$g;'S$<b;'S;=`$>Q<%lO$<b!n%^]&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!n&^]&r!b&jSOr%Trs'Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!n'^]&r!b&jSOr%Trs(Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!f(^Z&r!b&jSOw(Vwx)Px#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V!f)UZ&r!bOw(Vwx)wx#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V!f)|Z&r!bOw(Vwx*ox#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V!b*tT&r!bO#o*o#p#q*o#r;'S*o;'S;=`+T<%lO*o!b+WP;=`<%l*o!f+`W&r!bO#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`.d;=`<%l+x<%lO(VS+}V&jSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^<%lO+xS,gVOw+xwx,|x#O+x#O#P-c#P;'S+x;'S;=`.^<%lO+xS-PUOw+xx#O+x#O#P-c#P;'S+x;'S;=`.^<%lO+xS-fRO;'S+x;'S;=`-o;=`O+xS-tW&jSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^;=`<%l+x<%lO+xS.aP;=`<%l+x!f.iW&jSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^;=`<%l(V<%lO+x!f/UP;=`<%l(V!n/`]&r!b&mWOr%Trs&Vsw%Twx0Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!n0`]&r!b&mWOr%Trs&Vsw%Twx1Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!j1`Z&r!b&mWOr1Xrs2Rs#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X!j2WZ&r!bOr1Xrs2ys#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X!j3OZ&r!bOr1Xrs*os#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X!j3vW&r!bO#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`6z;=`<%l4`<%lO1XW4eV&mWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t<%lO4`W4}VOr4`rs5ds#O4`#O#P5y#P;'S4`;'S;=`6t<%lO4`W5gUOr4`s#O4`#O#P5y#P;'S4`;'S;=`6t<%lO4`W5|RO;'S4`;'S;=`6V;=`O4`W6[W&mWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t;=`<%l4`<%lO4`W6wP;=`<%l4`!j7PW&mWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t;=`<%l1X<%lO4`!j7lP;=`<%l1X!n7tW&r!bO#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=P;=`<%l8^<%lO%T[8eX&jS&mWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^[9VX&jSOr8^rs9rsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^[9wX&jSOr8^rs+xsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^[:iX&mWOr8^rs9Qsw8^wx;Ux#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^[;ZX&mWOr8^rs9Qsw8^wx4`x#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^[;yRO;'S8^;'S;=`<S;=`O8^[<ZY&jS&mWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y;=`<%l8^<%lO8^[<|P;=`<%l8^!n=WY&jS&mWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y;=`<%l%T<%lO8^!n=yP;=`<%l%T#s>Xc&r!b&jS&mW%p!TOX%TXY=|Y[%T[]=|]p%Tpq=|qr%Trs&Vsw%Twx/Xx#O%T#O#P?d#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#s?i[&r!bOY%TYZ=|Z]%T]^=|^#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=P;=`<%l8^<%lO%T!q@hd&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`Av!`#O%T#O#P7o#P#T%T#T#UBz#U#f%T#f#gBz#g#hBz#h#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!qBR]oR&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!qCV]!nR&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#cDXa&r!b&jS&hsOYE^YZ%TZ]E^]^%T^rE^rs!)|swE^wxGpx#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v<%lOE^#cEia&r!b&jS&mW&hsOYE^YZ%TZ]E^]^%T^rE^rsFnswE^wxGpx#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v<%lOE^#cFw]&r!b&jS&hsOr%Trs'Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#cGya&r!b&mW&hsOYE^YZ%TZ]E^]^%T^rE^rsFnswE^wxIOx#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v<%lOE^#cIXa&r!b&mW&hsOYE^YZ%TZ]E^]^%T^rE^rsFnswE^wxJ^x#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v<%lOE^#_Jg_&r!b&mW&hsOYJ^YZ1XZ]J^]^1X^rJ^rsKfs#OJ^#O#PL`#P#oJ^#o#pL}#p#qJ^#q#rL}#r;'SJ^;'S;=`!!o<%lOJ^#_KmZ&r!b&hsOr1Xrs2ys#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X#_LeW&r!bO#oJ^#o#pL}#p#qJ^#q#rL}#r;'SJ^;'S;=`! r;=`<%lL}<%lOJ^{MUZ&mW&hsOYL}YZ4`Z]L}]^4`^rL}rsMws#OL}#O#PNc#P;'SL};'S;=`! l<%lOL}{M|V&hsOr4`rs5ds#O4`#O#P5y#P;'S4`;'S;=`6t<%lO4`{NfRO;'SL};'S;=`No;=`OL}{Nv[&mW&hsOYL}YZ4`Z]L}]^4`^rL}rsMws#OL}#O#PNc#P;'SL};'S;=`! l;=`<%lL}<%lOL}{! oP;=`<%lL}#_! y[&mW&hsOYL}YZ4`Z]L}]^4`^rL}rsMws#OL}#O#PNc#P;'SL};'S;=`! l;=`<%lJ^<%lOL}#_!!rP;=`<%lJ^#c!!zW&r!bO#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!(q;=`<%l!#d<%lOE^!P!#m]&jS&mW&hsOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwx!%Yx#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k<%lO!#d!P!$mX&jS&hsOr8^rs9rsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^!P!%a]&mW&hsOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwx!&Yx#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k<%lO!#d!P!&a]&mW&hsOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwxL}x#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k<%lO!#d!P!']RO;'S!#d;'S;=`!'f;=`O!#d!P!'o^&jS&mW&hsOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwx!%Yx#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k;=`<%l!#d<%lO!#d!P!(nP;=`<%l!#d#c!(z^&jS&mW&hsOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwx!%Yx#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k;=`<%lE^<%lO!#d#c!)yP;=`<%lE^#c!*V]&r!b&jS&hsOr%Trs!+Osw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c!+ZZ&nW&r!b&jS&lsOw(Vwx)Px#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V#s!,XaU!T&r!b&jS&mWOY!+|YZ%TZ]!+|]^%T^r!+|rs!-^sw!+|wx!:hx#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh<%lO!+|#s!-gaU!T&r!b&jSOY!+|YZ%TZ]!+|]^%T^r!+|rs!.lsw!+|wx!:hx#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh<%lO!+|#s!.uaU!T&r!b&jSOY!+|YZ%TZ]!+|]^%T^r!+|rs!/zsw!+|wx!:hx#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh<%lO!+|#k!0T_U!T&r!b&jSOY!/zYZ(VZ]!/z]^(V^w!/zwx!1Sx#O!/z#O#P!4z#P#o!/z#o#p!5w#p#q!/z#q#r!5w#r;'S!/z;'S;=`!:b<%lO!/z#k!1Z_U!T&r!bOY!/zYZ(VZ]!/z]^(V^w!/zwx!2Yx#O!/z#O#P!4z#P#o!/z#o#p!5w#p#q!/z#q#r!5w#r;'S!/z;'S;=`!:b<%lO!/z#k!2a_U!T&r!bOY!/zYZ(VZ]!/z]^(V^w!/zwx!3`x#O!/z#O#P!4z#P#o!/z#o#p!5w#p#q!/z#q#r!5w#r;'S!/z;'S;=`!:b<%lO!/z#g!3gZU!T&r!bOY!3`YZ*oZ]!3`]^*o^#o!3`#o#p!4Y#p#q!3`#q#r!4Y#r;'S!3`;'S;=`!4t<%lO!3`!T!4_TU!TOY!4YZ]!4Y^;'S!4Y;'S;=`!4n<%lO!4Y!T!4qP;=`<%l!4Y#g!4wP;=`<%l!3`#k!5R[U!T&r!bOY!/zYZ(VZ]!/z]^(V^#o!/z#o#p!5w#p#q!/z#q#r!5w#r;'S!/z;'S;=`!9s;=`<%l+x<%lO!/z!X!6OZU!T&jSOY!5wYZ+xZ]!5w]^+x^w!5wwx!6qx#O!5w#O#P!8a#P;'S!5w;'S;=`!9m<%lO!5w!X!6vZU!TOY!5wYZ+xZ]!5w]^+x^w!5wwx!7ix#O!5w#O#P!8a#P;'S!5w;'S;=`!9m<%lO!5w!X!7nZU!TOY!5wYZ+xZ]!5w]^+x^w!5wwx!4Yx#O!5w#O#P!8a#P;'S!5w;'S;=`!9m<%lO!5w!X!8fWU!TOY!5wYZ+xZ]!5w]^+x^;'S!5w;'S;=`!9O;=`<%l+x<%lO!5w!X!9TW&jSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^;=`<%l!5w<%lO+x!X!9pP;=`<%l!5w#k!9xW&jSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^;=`<%l!/z<%lO+x#k!:eP;=`<%l!/z#s!:qaU!T&r!b&mWOY!+|YZ%TZ]!+|]^%T^r!+|rs!-^sw!+|wx!;vx#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh<%lO!+|#s!<PaU!T&r!b&mWOY!+|YZ%TZ]!+|]^%T^r!+|rs!-^sw!+|wx!=Ux#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh<%lO!+|#o!=__U!T&r!b&mWOY!=UYZ1XZ]!=U]^1X^r!=Urs!>^s#O!=U#O#P!@j#P#o!=U#o#p!Ag#p#q!=U#q#r!Ag#r;'S!=U;'S;=`!FQ<%lO!=U#o!>e_U!T&r!bOY!=UYZ1XZ]!=U]^1X^r!=Urs!?ds#O!=U#O#P!@j#P#o!=U#o#p!Ag#p#q!=U#q#r!Ag#r;'S!=U;'S;=`!FQ<%lO!=U#o!?k_U!T&r!bOY!=UYZ1XZ]!=U]^1X^r!=Urs!3`s#O!=U#O#P!@j#P#o!=U#o#p!Ag#p#q!=U#q#r!Ag#r;'S!=U;'S;=`!FQ<%lO!=U#o!@q[U!T&r!bOY!=UYZ1XZ]!=U]^1X^#o!=U#o#p!Ag#p#q!=U#q#r!Ag#r;'S!=U;'S;=`!Ec;=`<%l4`<%lO!=U!]!AnZU!T&mWOY!AgYZ4`Z]!Ag]^4`^r!Agrs!Bas#O!Ag#O#P!DP#P;'S!Ag;'S;=`!E]<%lO!Ag!]!BfZU!TOY!AgYZ4`Z]!Ag]^4`^r!Agrs!CXs#O!Ag#O#P!DP#P;'S!Ag;'S;=`!E]<%lO!Ag!]!C^ZU!TOY!AgYZ4`Z]!Ag]^4`^r!Agrs!4Ys#O!Ag#O#P!DP#P;'S!Ag;'S;=`!E]<%lO!Ag!]!DUWU!TOY!AgYZ4`Z]!Ag]^4`^;'S!Ag;'S;=`!Dn;=`<%l4`<%lO!Ag!]!DsW&mWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t;=`<%l!Ag<%lO4`!]!E`P;=`<%l!Ag#o!EhW&mWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t;=`<%l!=U<%lO4`#o!FTP;=`<%l!=U#s!F_[U!T&r!bOY!+|YZ%TZ]!+|]^%T^#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Mq;=`<%l8^<%lO!+|!a!G^]U!T&jS&mWOY!GTYZ8^Z]!GT]^8^^r!GTrs!HVsw!GTwx!JVx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk<%lO!GT!a!H^]U!T&jSOY!GTYZ8^Z]!GT]^8^^r!GTrs!IVsw!GTwx!JVx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk<%lO!GT!a!I^]U!T&jSOY!GTYZ8^Z]!GT]^8^^r!GTrs!5wsw!GTwx!JVx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk<%lO!GT!a!J^]U!T&mWOY!GTYZ8^Z]!GT]^8^^r!GTrs!HVsw!GTwx!KVx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk<%lO!GT!a!K^]U!T&mWOY!GTYZ8^Z]!GT]^8^^r!GTrs!HVsw!GTwx!Agx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk<%lO!GT!a!L[WU!TOY!GTYZ8^Z]!GT]^8^^;'S!GT;'S;=`!Lt;=`<%l8^<%lO!GT!a!L{Y&jS&mWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y;=`<%l!GT<%lO8^!a!MnP;=`<%l!GT#s!MxY&jS&mWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y;=`<%l!+|<%lO8^#s!NkP;=`<%l!+|#b!Ny_&PQ&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#b#!T]!{r&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#b##X_%yQ&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#$aa&r!b&mW&hsOY#%fYZ%TZ]#%f]^%T^r#%frs#&vsw#%fwx#8Ux#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O<%lO#%f#c#%qa&r!b&jS&mW&hsOY#%fYZ%TZ]#%f]^%T^r#%frs#&vsw#%fwx#/{x#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O<%lO#%f#c#'Pa&r!b&jS&hsOY#%fYZ%TZ]#%f]^%T^r#%frs#(Usw#%fwx#/{x#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O<%lO#%f#c#(_a&r!b&jS&hsOY#%fYZ%TZ]#%f]^%T^r#%frs#)dsw#%fwx#/{x#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O<%lO#%f#Z#)m_&r!b&jS&hsOY#)dYZ(VZ]#)d]^(V^w#)dwx#*lx#O#)d#O#P#+f#P#o#)d#o#p#,T#p#q#)d#q#r#,T#r;'S#)d;'S;=`#/u<%lO#)d#Z#*sZ&r!b&hsOw(Vwx)wx#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V#Z#+kW&r!bO#o#)d#o#p#,T#p#q#)d#q#r#,T#r;'S#)d;'S;=`#.x;=`<%l#,T<%lO#)dw#,[Z&jS&hsOY#,TYZ+xZ]#,T]^+x^w#,Twx#,}x#O#,T#O#P#-i#P;'S#,T;'S;=`#.r<%lO#,Tw#-SV&hsOw+xwx,|x#O+x#O#P-c#P;'S+x;'S;=`.^<%lO+xw#-lRO;'S#,T;'S;=`#-u;=`O#,Tw#-|[&jS&hsOY#,TYZ+xZ]#,T]^+x^w#,Twx#,}x#O#,T#O#P#-i#P;'S#,T;'S;=`#.r;=`<%l#,T<%lO#,Tw#.uP;=`<%l#,T#Z#/P[&jS&hsOY#,TYZ+xZ]#,T]^+x^w#,Twx#,}x#O#,T#O#P#-i#P;'S#,T;'S;=`#.r;=`<%l#)d<%lO#,T#Z#/xP;=`<%l#)d#c#0U]&r!b&mW&hsOr%Trs&Vsw%Twx0Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#1SW&r!bO#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#6y;=`<%l#1l<%lO#%f!P#1u]&jS&mW&hsOY#1lYZ8^Z]#1l]^8^^r#1lrs#2nsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s<%lO#1l!P#2u]&jS&hsOY#1lYZ8^Z]#1l]^8^^r#1lrs#3nsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s<%lO#1l!P#3u]&jS&hsOY#1lYZ8^Z]#1l]^8^^r#1lrs#,Tsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s<%lO#1l!P#4uX&mW&hsOr8^rs9Qsw8^wx;Ux#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^!P#5eRO;'S#1l;'S;=`#5n;=`O#1l!P#5w^&jS&mW&hsOY#1lYZ8^Z]#1l]^8^^r#1lrs#2nsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s;=`<%l#1l<%lO#1l!P#6vP;=`<%l#1l#c#7S^&jS&mW&hsOY#1lYZ8^Z]#1l]^8^^r#1lrs#2nsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s;=`<%l#%f<%lO#1l#c#8RP;=`<%l#%f#c#8_]&r!b&mW&hsOr%Trs&Vsw%Twx#9Wx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#9cZ&kS&r!b&mW&isOr1Xrs2Rs#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X#c#:a]js&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!q#;e]iR&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#<iaXs&r!b&jS&mWOr%Trs&Vsw%Twx/Xxz%Tz{#=n{!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#=y_cR&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#?T_%|s&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!q#@_]|R&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#s#Ac`%}s&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`!a#Be!a#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#O#Bp]'R`&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#Cta!hQ&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!O%T!O!P#Dy!P!Q%T!Q![#GV![#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#ES_&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!O%T!O!P#FR!P#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#F^]!us&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a#Gbi!jq&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!Q%T!Q![#GV![!g%T!g!h#IP!h!l%T!l!m#MZ!m#O%T#O#P7o#P#R%T#R#S#GV#S#X%T#X#Y#IP#Y#^%T#^#_#MZ#_#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a#IYc&r!b&jS&mWOr%Trs&Vsw%Twx/Xx{%T{|#Je|}%T}!O#Je!O!Q%T!Q![#Km![#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a#Jn_&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!Q%T!Q![#Km![#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a#Kxe!jq&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!Q%T!Q![#Km![!l%T!l!m#MZ!m#O%T#O#P7o#P#R%T#R#S#Km#S#^%T#^#_#MZ#_#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a#Mf]!jq&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c#Nja&OR&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!P%T!P!Q$ o!Q!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#b$ z_&QQ&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$#Uw!jq&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!O%T!O!P$%o!P!Q%T!Q![$&w![!d%T!d!e$(w!e!g%T!g!h#IP!h!l%T!l!m#MZ!m!q%T!q!r$+m!r!z%T!z!{$.]!{#O%T#O#P7o#P#R%T#R#S$&w#S#U%T#U#V$(w#V#X%T#X#Y#IP#Y#^%T#^#_#MZ#_#c%T#c#d$+m#d#l%T#l#m$.]#m#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$%x_&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!Q%T!Q![#GV![#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$'Sk!jq&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!O%T!O!P$%o!P!Q%T!Q![$&w![!g%T!g!h#IP!h!l%T!l!m#MZ!m#O%T#O#P7o#P#R%T#R#S$&w#S#X%T#X#Y#IP#Y#^%T#^#_#MZ#_#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$)Qb&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!Q%T!Q!R$*Y!R!S$*Y!S#O%T#O#P7o#P#R%T#R#S$*Y#S#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$*eb!jq&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!Q%T!Q!R$*Y!R!S$*Y!S#O%T#O#P7o#P#R%T#R#S$*Y#S#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$+va&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!Q%T!Q!Y$,{!Y#O%T#O#P7o#P#R%T#R#S$,{#S#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$-Wa!jq&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!Q%T!Q!Y$,{!Y#O%T#O#P7o#P#R%T#R#S$,{#S#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$.fe&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!Q%T!Q![$/w![!c%T!c!i$/w!i#O%T#O#P7o#P#R%T#R#S$/w#S#T%T#T#Z$/w#Z#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a$0Se!jq&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!Q%T!Q![$/w![!c%T!c!i$/w!i#O%T#O#P7o#P#R%T#R#S$/w#S#T%T#T#Z$/w#Z#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#s$1p_}!T&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`$2o!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!q$2z]&YR&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$4O]#js&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$5SaoR&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!^%T!^!_$6X!_!`Av!`!aAv!a#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#b$6d_%zQ&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$7n_&Xs&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`Av!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$8x`oR&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`Av!`!a$9z!a#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#b$:V_%{Q&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$;c_aQ$QP&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#s$<oe&r!b&jS&mW&g`&SsOr%Trs&Vsw%Twx/Xx!Q%T!Q![$<b![!c%T!c!}$<b!}#O%T#O#P7o#P#R%T#R#S$<b#S#T%T#T#o$<b#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$<b;'S;=`$>Q<%lO$<b#s$>TP;=`<%l$<b#s$>ei&r!b&jS&mW&g`&SsOr%Trs$@Ssw%Twx$C`x!Q%T!Q![$<b![!c%T!c!t$<b!t!u$Fl!u!}$<b!}#O%T#O#P7o#P#R%T#R#S$<b#S#T%T#T#f$<b#f#g$Fl#g#o$<b#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$<b;'S;=`$>Q<%lO$<b#c$@]a&r!b&jS&hsOYE^YZ%TZ]E^]^%T^rE^rs$AbswE^wxGpx#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v<%lOE^#c$Ak]&r!b&jS&hsOr%Trs$Bdsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#Z$BmZ&r!b&jS&lsOw(Vwx)Px#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V#c$Cia&r!b&mW&hsOY#%fYZ%TZ]#%f]^%T^r#%frs#&vsw#%fwx$Dnx#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O<%lO#%f#c$Dw]&r!b&mW&hsOr%Trs&Vsw%Twx$Epx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#_$EyZ&r!b&mW&isOr1Xrs2Rs#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X#s$Fye&r!b&jS&mW&g`&SsOr%Trs$@Ssw%Twx$C`x!Q%T!Q![$<b![!c%T!c!}$<b!}#O%T#O#P7o#P#R%T#R#S$<b#S#T%T#T#o$<b#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$<b;'S;=`$>Q<%lO$<b#s$Hii&r!b&jS&mW&g`&SsOr%Trs$JWsw%Twx$MUx!Q%T!Q![$<b![!c%T!c!t$<b!t!u%!S!u!}$<b!}#O%T#O#P7o#P#R%T#R#S$<b#S#T%T#T#f$<b#f#g%!S#g#o$<b#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$<b;'S;=`$>Q<%lO$<b#c$Ja]&r!b&jS&ssOr%Trs$KYsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$Ka]&r!b&jSOr%Trs$LYsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#Z$LcZ&r!b&jS&usOw(Vwx)Px#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R<%lO(V#c$M_]&r!b&mW&osOr%Trs&Vsw%Twx$NWx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#c$N_]&r!b&mWOr%Trs&Vsw%Twx% Wx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#_% aZ&r!b&mW&tsOr1Xrs2Rs#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i<%lO1X#s%!ae&r!b&jS&mW&g`&SsOr%Trs$JWsw%Twx$MUx!Q%T!Q![$<b![!c%T!c!}$<b!}#O%T#O#P7o#P#R%T#R#S$<b#S#T%T#T#o$<b#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$<b;'S;=`$>Q<%lO$<b#s%$Pm&r!b&jS&mW&g`&SsOr%Trs$@Ssw%Twx$C`x!Q%T!Q![$<b![!c%T!c!h$<b!h!i%!S!i!t$<b!t!u$Fl!u!}$<b!}#O%T#O#P7o#P#R%T#R#S$<b#S#T%T#T#U$<b#U#V$Fl#V#Y$<b#Y#Z%!S#Z#o$<b#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$<b;'S;=`$>Q<%lO$<b#c%&V]!Zs&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!q%'Z]!YR&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#b%(__%xQ&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T#a%)gX!_#T&jS&mWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^#c%*__%wR&r!b&jS&mWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T!q%+gX!^!e&jS&mWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`<y<%lO8^#a%,_]&Rq&r!b&jS&mWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v<%lO%T\",\n tokenizers: [legacyPrint, indentation, newlines, formatString1, formatString2, formatString1l, formatString2l, 0, 1, 2, 3, 4, 5, 6],\n topRules: {\"Script\":[0,7]},\n specialized: [{term: 234, get: (value) => spec_identifier[value] || -1}],\n tokenPrec: 7372\n});\n\nexport { parser };\n","import { parser } from '@lezer/python';\nimport { syntaxTree, LRLanguage, indentNodeProp, delimitedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\nimport { NodeWeakMap, IterMode } from '@lezer/common';\nimport { snippetCompletion, ifNotIn, completeFromList } from '@codemirror/autocomplete';\n\nconst cache = /*@__PURE__*/new NodeWeakMap();\nconst ScopeNodes = /*@__PURE__*/new Set([\n \"Script\", \"Body\",\n \"FunctionDefinition\", \"ClassDefinition\", \"LambdaExpression\",\n \"ForStatement\", \"MatchClause\"\n]);\nfunction defID(type) {\n return (node, def, outer) => {\n if (outer)\n return false;\n let id = node.node.getChild(\"VariableName\");\n if (id)\n def(id, type);\n return true;\n };\n}\nconst gatherCompletions = {\n FunctionDefinition: /*@__PURE__*/defID(\"function\"),\n ClassDefinition: /*@__PURE__*/defID(\"class\"),\n ForStatement(node, def, outer) {\n if (outer)\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\")\n def(child, \"variable\");\n else if (child.name == \"in\")\n break;\n }\n },\n ImportStatement(_node, def) {\n var _a, _b;\n let { node } = _node;\n let isFrom = ((_a = node.firstChild) === null || _a === void 0 ? void 0 : _a.name) == \"from\";\n for (let ch = node.getChild(\"import\"); ch; ch = ch.nextSibling) {\n if (ch.name == \"VariableName\" && ((_b = ch.nextSibling) === null || _b === void 0 ? void 0 : _b.name) != \"as\")\n def(ch, isFrom ? \"variable\" : \"namespace\");\n }\n },\n AssignStatement(node, def) {\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\")\n def(child, \"variable\");\n else if (child.name == \":\" || child.name == \"AssignOp\")\n break;\n }\n },\n ParamList(node, def) {\n for (let prev = null, child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\" && (!prev || !/\\*|AssignOp/.test(prev.name)))\n def(child, \"variable\");\n prev = child;\n }\n },\n CapturePattern: /*@__PURE__*/defID(\"variable\"),\n AsPattern: /*@__PURE__*/defID(\"variable\"),\n __proto__: null\n};\nfunction getScope(doc, node) {\n let cached = cache.get(node);\n if (cached)\n return cached;\n let completions = [], top = true;\n function def(node, type) {\n let name = doc.sliceString(node.from, node.to);\n completions.push({ label: name, type });\n }\n node.cursor(IterMode.IncludeAnonymous).iterate(node => {\n if (node.name) {\n let gather = gatherCompletions[node.name];\n if (gather && gather(node, def, top) || !top && ScopeNodes.has(node.name))\n return false;\n top = false;\n }\n else if (node.to - node.from > 8192) {\n // Allow caching for bigger internal nodes\n for (let c of getScope(doc, node.node))\n completions.push(c);\n return false;\n }\n });\n cache.set(node, completions);\n return completions;\n}\nconst Identifier = /^[\\w\\xa1-\\uffff][\\w\\d\\xa1-\\uffff]*$/;\nconst dontComplete = [\"String\", \"FormatString\", \"Comment\", \"PropertyName\"];\n/**\nCompletion source that looks up locally defined names in\nPython code.\n*/\nfunction localCompletionSource(context) {\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (dontComplete.indexOf(inner.name) > -1)\n return null;\n let isWord = inner.name == \"VariableName\" ||\n inner.to - inner.from < 20 && Identifier.test(context.state.sliceDoc(inner.from, inner.to));\n if (!isWord && !context.explicit)\n return null;\n let options = [];\n for (let pos = inner; pos; pos = pos.parent) {\n if (ScopeNodes.has(pos.name))\n options = options.concat(getScope(context.state.doc, pos));\n }\n return {\n options,\n from: isWord ? inner.from : context.pos,\n validFor: Identifier\n };\n}\nconst globals = /*@__PURE__*/[\n \"__annotations__\", \"__builtins__\", \"__debug__\", \"__doc__\", \"__import__\", \"__name__\",\n \"__loader__\", \"__package__\", \"__spec__\",\n \"False\", \"None\", \"True\"\n].map(n => ({ label: n, type: \"constant\" })).concat(/*@__PURE__*/[\n \"ArithmeticError\", \"AssertionError\", \"AttributeError\", \"BaseException\", \"BlockingIOError\",\n \"BrokenPipeError\", \"BufferError\", \"BytesWarning\", \"ChildProcessError\", \"ConnectionAbortedError\",\n \"ConnectionError\", \"ConnectionRefusedError\", \"ConnectionResetError\", \"DeprecationWarning\",\n \"EOFError\", \"Ellipsis\", \"EncodingWarning\", \"EnvironmentError\", \"Exception\", \"FileExistsError\",\n \"FileNotFoundError\", \"FloatingPointError\", \"FutureWarning\", \"GeneratorExit\", \"IOError\",\n \"ImportError\", \"ImportWarning\", \"IndentationError\", \"IndexError\", \"InterruptedError\",\n \"IsADirectoryError\", \"KeyError\", \"KeyboardInterrupt\", \"LookupError\", \"MemoryError\",\n \"ModuleNotFoundError\", \"NameError\", \"NotADirectoryError\", \"NotImplemented\", \"NotImplementedError\",\n \"OSError\", \"OverflowError\", \"PendingDeprecationWarning\", \"PermissionError\", \"ProcessLookupError\",\n \"RecursionError\", \"ReferenceError\", \"ResourceWarning\", \"RuntimeError\", \"RuntimeWarning\",\n \"StopAsyncIteration\", \"StopIteration\", \"SyntaxError\", \"SyntaxWarning\", \"SystemError\",\n \"SystemExit\", \"TabError\", \"TimeoutError\", \"TypeError\", \"UnboundLocalError\", \"UnicodeDecodeError\",\n \"UnicodeEncodeError\", \"UnicodeError\", \"UnicodeTranslateError\", \"UnicodeWarning\", \"UserWarning\",\n \"ValueError\", \"Warning\", \"ZeroDivisionError\"\n].map(n => ({ label: n, type: \"type\" }))).concat(/*@__PURE__*/[\n \"bool\", \"bytearray\", \"bytes\", \"classmethod\", \"complex\", \"float\", \"frozenset\", \"int\", \"list\",\n \"map\", \"memoryview\", \"object\", \"range\", \"set\", \"staticmethod\", \"str\", \"super\", \"tuple\", \"type\"\n].map(n => ({ label: n, type: \"class\" }))).concat(/*@__PURE__*/[\n \"abs\", \"aiter\", \"all\", \"anext\", \"any\", \"ascii\", \"bin\", \"breakpoint\", \"callable\", \"chr\",\n \"compile\", \"delattr\", \"dict\", \"dir\", \"divmod\", \"enumerate\", \"eval\", \"exec\", \"exit\", \"filter\",\n \"format\", \"getattr\", \"globals\", \"hasattr\", \"hash\", \"help\", \"hex\", \"id\", \"input\", \"isinstance\",\n \"issubclass\", \"iter\", \"len\", \"license\", \"locals\", \"max\", \"min\", \"next\", \"oct\", \"open\",\n \"ord\", \"pow\", \"print\", \"property\", \"quit\", \"repr\", \"reversed\", \"round\", \"setattr\", \"slice\",\n \"sorted\", \"sum\", \"vars\", \"zip\"\n].map(n => ({ label: n, type: \"function\" })));\nconst snippets = [\n /*@__PURE__*/snippetCompletion(\"def ${name}(${params}):\\n\\t${}\", {\n label: \"def\",\n detail: \"function\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for ${name} in ${collection}:\\n\\t${}\", {\n label: \"for\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"while ${}:\\n\\t${}\", {\n label: \"while\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"try:\\n\\t${}\\nexcept ${error}:\\n\\t${}\", {\n label: \"try\",\n detail: \"/ except block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if ${}:\\n\\t\\n\", {\n label: \"if\",\n detail: \"block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if ${}:\\n\\t${}\\nelse:\\n\\t${}\", {\n label: \"if\",\n detail: \"/ else block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"class ${name}:\\n\\tdef __init__(self, ${params}):\\n\\t\\t\\t${}\", {\n label: \"class\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import ${module}\", {\n label: \"import\",\n detail: \"statement\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"from ${module} import ${names}\", {\n label: \"from\",\n detail: \"import\",\n type: \"keyword\"\n })\n];\n/**\nAutocompletion for built-in Python globals and keywords.\n*/\nconst globalCompletion = /*@__PURE__*/ifNotIn(dontComplete, /*@__PURE__*/completeFromList(/*@__PURE__*/globals.concat(snippets)));\n\nfunction indentBody(context, node) {\n let base = context.baseIndentFor(node);\n let line = context.lineAt(context.pos, -1), to = line.from + line.text.length;\n // Don't consider blank, deindented lines at the end of the\n // block part of the block\n if (/^\\s*($|#)/.test(line.text) &&\n context.node.to < to + 100 &&\n !/\\S/.test(context.state.sliceDoc(to, context.node.to)) &&\n context.lineIndent(context.pos, -1) <= base)\n return null;\n // A normally deindenting keyword that appears at a higher\n // indentation than the block should probably be handled by the next\n // level\n if (/^\\s*(else:|elif |except |finally:)/.test(context.textAfter) && context.lineIndent(context.pos, -1) > base)\n return null;\n return base + context.unit;\n}\n/**\nA language provider based on the [Lezer Python\nparser](https://github.com/lezer-parser/python), extended with\nhighlighting and indentation information.\n*/\nconst pythonLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"python\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Body: context => { var _a; return (_a = indentBody(context, context.node)) !== null && _a !== void 0 ? _a : context.continue(); },\n IfStatement: cx => /^\\s*(else:|elif )/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n TryStatement: cx => /^\\s*(except |finally:|else:)/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n \"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression\": /*@__PURE__*/delimitedIndent({ closing: \")\" }),\n \"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression\": /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n \"ArrayExpression ArrayComprehensionExpression\": /*@__PURE__*/delimitedIndent({ closing: \"]\" }),\n \"String FormatString\": () => null,\n Script: context => {\n if (context.pos + /\\s*/.exec(context.textAfter)[0].length >= context.node.to) {\n let endBody = null;\n for (let cur = context.node, to = cur.to;;) {\n cur = cur.lastChild;\n if (!cur || cur.to != to)\n break;\n if (cur.type.name == \"Body\")\n endBody = cur;\n }\n if (endBody) {\n let bodyIndent = indentBody(context, endBody);\n if (bodyIndent != null)\n return bodyIndent;\n }\n }\n return context.continue();\n }\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"ArrayExpression DictionaryExpression SetExpression TupleExpression\": foldInside,\n Body: (node, state) => ({ from: node.from + 1, to: node.to - (node.to == state.doc.length ? 0 : 1) })\n })\n ],\n }),\n languageData: {\n closeBrackets: {\n brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"'''\", '\"\"\"'],\n stringPrefixes: [\"f\", \"fr\", \"rf\", \"r\", \"u\", \"b\", \"br\", \"rb\",\n \"F\", \"FR\", \"RF\", \"R\", \"U\", \"B\", \"BR\", \"RB\"]\n },\n commentTokens: { line: \"#\" },\n indentOnInput: /^\\s*([\\}\\]\\)]|else:|elif |except |finally:)$/\n }\n});\n/**\nPython language support.\n*/\nfunction python() {\n return new LanguageSupport(pythonLanguage, [\n pythonLanguage.data.of({ autocomplete: localCompletionSource }),\n pythonLanguage.data.of({ autocomplete: globalCompletion }),\n ]);\n}\n\nexport { globalCompletion, localCompletionSource, python, pythonLanguage };\n"],"names":["Stack","constructor","p","stack","state","reducePos","pos","score","buffer","bufferBase","curContext","lookAhead","parent","this","toString","filter","_","i","concat","start","cx","parser","context","StackContext","pushState","push","length","reduce","action","_a","depth","type","dPrec","dynamicPrecedence","getGoto","minRepeatTerm","storeNode","reduceContext","base","ranges","from","size","nodeSet","types","isAnonymous","lastBigReductionStart","bigReductionCount","lastBigReductionSize","count","stateFlag","baseStateID","pop","term","end","isReduce","cur","top","index","shift","nextState","maxNode","shiftContext","apply","next","nextStart","nextEnd","useNode","value","reused","updateContext","tracker","reuse","stream","reset","split","off","slice","recoverByDelete","isNode","canShift","sim","SimulatedStack","stateSlot","hasAction","recoverByInsert","nextStates","best","s","some","v","result","forceReduce","validAction","target","backup","findForcedReduction","seen","explore","includes","allActions","rDepth","found","forceAll","deadEnd","data","restart","sameState","other","dialectEnabled","dialectID","dialect","flags","emitContext","last","hash","emitLookAhead","newCx","setLookAhead","close","strict","goto","StackBufferCursor","maybeNext","create","id","fork","decodeArray","input","Type","Uint16Array","array","out","charCodeAt","stop","digit","CachedToken","extended","mask","nullToken","InputStream","chunk","chunkOff","chunk2","chunk2Pos","token","rangeIndex","chunkPos","range","to","readNext","resolveOffset","offset","assoc","clipPos","Math","max","peek","idx","resolved","acceptToken","endOffset","RangeError","getChunk","nextChunk","advance","n","setDone","read","r","min","TokenGroup","group","precTable","precOffset","groupMask","scan","accEnd","allows","overrides","low","high","mid","readToken","tokenPrecTable","prototype","contextual","fallback","extend","ExternalTokenizer","options","findOffset","prev","tableData","tableOffset","iPrev","verbose","process","env","test","LOG","stackIDs","cutAt","tree","side","cursor","IterMode","IncludeAnonymous","moveTo","childBefore","childAfter","isError","prevSibling","nextSibling","FragmentCursor","fragments","fragment","safeFrom","safeTo","trees","nextFragment","fr","openStart","openEnd","nodeAt","children","positions","Tree","prop","NodeProp","TokenCache","tokens","mainToken","actions","tokenizers","map","getActions","actionIndex","main","tokenizer","updateCachedToken","startIndex","addActions","eofTerm","getMainToken","specialized","specializers","putAction","set","pair","Parse","recovering","nextStackID","minStackPos","stoppedAt","topTerm","stacks","bufferLength","parsedPos","stopped","stoppedTokens","newStacks","advanceStack","tok","finished","findFinished","console","log","stackID","stackToTree","getName","SyntaxError","runRecovery","maxRemaining","sort","a","b","outer","j","splice","stopAt","strictCx","cxHash","cached","match","contextHash","inner","defaultReduce","localStack","advanceFully","pushStackDedup","restarted","tokenEnd","force","forceBase","insert","build","topID","maxBufferLength","minRepeatType","WeakMap","get","String","fromCodePoint","Dialect","source","disabled","x","LRParser","Parser","spec","super","wrappers","version","nodeNames","repeatNodeCount","topTerms","Object","keys","topRules","nodeProps","setProp","nodeID","deserialize","propSpec","NodeSet","name","NodeType","define","undefined","props","indexOf","error","skipped","skippedNodes","propSources","DefaultBufferLength","tokenArray","tokenData","specializerSpecs","getSpecializer","states","Uint32Array","stateData","maxTerm","dialects","dynamicPrecedences","tokenPrec","termNames","parseDialect","createParse","parse","w","loose","table","groupTag","terminal","slot","flag","deflt","configure","config","copy","assign","info","t","find","external","contextTracker","wrap","hasWrappers","topNode","prec","values","part","Uint8Array","bracketed","Set","isLineBreak","ch","newlines","spaces","indentation","cDepth","chars","IndentLevel","topIndent","trackIndent","has","space","countIndent","legacyPrint","fromCharCode","formatString","quote","len","content","brace","formatString1","formatString2","formatString1l","formatString2l","pythonHighlighting","styleTags","tags","modifier","controlKeyword","operatorKeyword","definitionKeyword","import","moduleKeyword","keyword","Boolean","bool","None","null","VariableName","variableName","function","definition","className","PropertyName","propertyName","Comment","lineComment","Number","number","string","FormatString","special","UpdateOp","updateOperator","arithmeticOperator","BitOp","bitwiseOperator","CompareOp","compareOperator","AssignOp","definitionOperator","Ellipsis","punctuation","At","meta","paren","squareBracket","derefOperator","separator","spec_identifier","__proto__","await","or","and","in","not","is","if","else","lambda","yield","async","for","True","False","del","pass","break","continue","return","raise","as","global","nonlocal","assert","elif","while","try","except","finally","with","def","class","case","Script","cache","NodeWeakMap","ScopeNodes","defID","node","getChild","gatherCompletions","FunctionDefinition","ClassDefinition","ForStatement","child","firstChild","ImportStatement","_node","_b","isFrom","AssignStatement","ParamList","CapturePattern","AsPattern","getScope","doc","completions","sliceString","label","iterate","gather","c","Identifier","dontComplete","localCompletionSource","syntaxTree","resolveInner","isWord","sliceDoc","explicit","validFor","globals","snippets","snippetCompletion","detail","globalCompletion","ifNotIn","completeFromList","indentBody","baseIndentFor","line","lineAt","text","lineIndent","textAfter","unit","pythonLanguage","LRLanguage","indentNodeProp","add","Body","IfStatement","baseIndent","TryStatement","delimitedIndent","closing","exec","endBody","lastChild","bodyIndent","foldNodeProp","foldInside","languageData","closeBrackets","brackets","stringPrefixes","commentTokens","indentOnInput","python","LanguageSupport","of","autocomplete"],"mappings":"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","x_google_ignoreList":[0,1,2]}