@brainfish-ai/components 0.9.0 → 0.9.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ChatSearch.DCIOe8iM.js","sources":["../../../src/components/chat-search/Suggestions.tsx","../../../../../node_modules/ajv/dist/compile/codegen/code.js","../../../../../node_modules/ajv/dist/compile/codegen/scope.js","../../../../../node_modules/ajv/dist/compile/codegen/index.js","../../../../../node_modules/ajv/dist/compile/util.js","../../../../../node_modules/ajv/dist/compile/names.js","../../../../../node_modules/ajv/dist/compile/errors.js","../../../../../node_modules/ajv/dist/compile/validate/boolSchema.js","../../../../../node_modules/ajv/dist/compile/rules.js","../../../../../node_modules/ajv/dist/compile/validate/applicability.js","../../../../../node_modules/ajv/dist/compile/validate/dataType.js","../../../../../node_modules/ajv/dist/compile/validate/defaults.js","../../../../../node_modules/ajv/dist/vocabularies/code.js","../../../../../node_modules/ajv/dist/compile/validate/keyword.js","../../../../../node_modules/ajv/dist/compile/validate/subschema.js","../../../../../node_modules/fast-deep-equal/index.js","../../../../../node_modules/json-schema-traverse/index.js","../../../../../node_modules/ajv/dist/compile/resolve.js","../../../../../node_modules/ajv/dist/compile/validate/index.js","../../../../../node_modules/ajv-errors/dist/index.js","../../../../../node_modules/@hookform/resolvers/ajv/dist/ajv.mjs","../../../src/components/chat-search/blocks/ActionInputForm.tsx","../../../src/components/chat-search/blocks/ActionButtons.tsx","../../../src/components/chat-search/blocks/MarkdownText.tsx","../../../src/components/chat-search/AnswerBlock.tsx","../../../src/components/chat-search/blocks/utils.ts","../../../src/components/ui/icon.tsx","../../../src/components/chat-search/NextBestActions.tsx","../../../src/components/chat-search/types.ts","../../../src/components/chat-search/helpers/nextBestActions.ts","../../../src/components/chat-search/AnswerActions.tsx","../../../src/components/chat-search/hooks/useAnswerList.ts","../../../src/components/chat-search/hooks/useConversationId.ts","../../../src/components/chat-search/ChatSearchContext.tsx","../../../src/components/chat-search/hooks/useIsChatSearchDirty.ts","../../../src/components/chat-search/hooks/useScrollManager.ts","../../../src/lib/fetchClient.ts","../../../src/lib/api.ts","../../../src/components/chat-search/hooks/useConversationLoader.ts","../../../src/components/chat-search/hooks/useSubscriptionManager.ts","../../../src/components/chat-search/Answer.tsx","../../../src/components/chat-search/FollowUpQuestions.tsx","../../../src/components/chat-search/TimelineNavigation.tsx","../../../src/components/chat-search/ScrollToBottomArrow.tsx","../../../src/components/chat-search/PrimarySearch.tsx","../../../src/components/chat-search/FollowUpSearchBar.tsx","../../../src/components/chat-search/Header.tsx","../../../src/components/chat-search/text-config.ts","../../../src/components/chat-search/helpers/excuteClientAction.ts","../../../src/components/chat-search/LoadingConversation.tsx","../../../src/lib/feature-flags.tsx","../../../src/lib/hooks.ts","../../../src/components/chat-search/ChatSearch.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../ui/tooltip';\nimport { Button } from '../ui/button';\nimport { Suggestion } from './types';\n\ninterface SuggestionsProps {\n suggestions: Suggestion[];\n onQuestionClick: (suggestion: Suggestion) => void;\n title?: string;\n}\n\nexport function Suggestions({ suggestions, onQuestionClick, title = 'Suggested questions' }: SuggestionsProps) {\n if (!suggestions || suggestions.length === 0) return null;\n\n return (\n <div className=\"w-full p-3\" data-name=\"Suggestions\">\n <h3 className=\"text-base font-medium mb-4 text-foreground\">{title}</h3>\n <div className=\"flex flex-wrap gap-2\">\n {suggestions.map((suggestion) => (\n <Button\n key={suggestion.id}\n onClick={() => onQuestionClick(suggestion)}\n variant=\"outline\"\n className=\"border-border font-normal whitespace-normal h-auto text-left\"\n >\n {suggestion.messageCount !== undefined && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"bg-gray-100 text-gray-600 px-2 py-0.5 rounded-full text-xs min-w-[20px] border flex items-center justify-center border-border\">\n {suggestion.messageCount}\n </span>\n </TooltipTrigger>\n <TooltipContent>\n <p>{suggestion.messageCount} messages in this conversation</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n <span className=\"\">{suggestion.question}</span>\n </Button>\n ))}\n </div>\n </div>\n );\n}\n\nexport default Suggestions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nclass _CodeOrName {\n}\nexports._CodeOrName = _CodeOrName;\nexports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nclass Name extends _CodeOrName {\n constructor(s) {\n super();\n if (!exports.IDENTIFIER.test(s))\n throw new Error(\"CodeGen: name must be a valid identifier\");\n this.str = s;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n return false;\n }\n get names() {\n return { [this.str]: 1 };\n }\n}\nexports.Name = Name;\nclass _Code extends _CodeOrName {\n constructor(code) {\n super();\n this._items = typeof code === \"string\" ? [code] : code;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n if (this._items.length > 1)\n return false;\n const item = this._items[0];\n return item === \"\" || item === '\"\"';\n }\n get str() {\n var _a;\n return ((_a = this._str) !== null && _a !== void 0 ? _a : (this._str = this._items.reduce((s, c) => `${s}${c}`, \"\")));\n }\n get names() {\n var _a;\n return ((_a = this._names) !== null && _a !== void 0 ? _a : (this._names = this._items.reduce((names, c) => {\n if (c instanceof Name)\n names[c.str] = (names[c.str] || 0) + 1;\n return names;\n }, {})));\n }\n}\nexports._Code = _Code;\nexports.nil = new _Code(\"\");\nfunction _(strs, ...args) {\n const code = [strs[0]];\n let i = 0;\n while (i < args.length) {\n addCodeArg(code, args[i]);\n code.push(strs[++i]);\n }\n return new _Code(code);\n}\nexports._ = _;\nconst plus = new _Code(\"+\");\nfunction str(strs, ...args) {\n const expr = [safeStringify(strs[0])];\n let i = 0;\n while (i < args.length) {\n expr.push(plus);\n addCodeArg(expr, args[i]);\n expr.push(plus, safeStringify(strs[++i]));\n }\n optimize(expr);\n return new _Code(expr);\n}\nexports.str = str;\nfunction addCodeArg(code, arg) {\n if (arg instanceof _Code)\n code.push(...arg._items);\n else if (arg instanceof Name)\n code.push(arg);\n else\n code.push(interpolate(arg));\n}\nexports.addCodeArg = addCodeArg;\nfunction optimize(expr) {\n let i = 1;\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1]);\n if (res !== undefined) {\n expr.splice(i - 1, 3, res);\n continue;\n }\n expr[i++] = \"+\";\n }\n i++;\n }\n}\nfunction mergeExprItems(a, b) {\n if (b === '\"\"')\n return a;\n if (a === '\"\"')\n return b;\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"')\n return;\n if (typeof b != \"string\")\n return `${a.slice(0, -1)}${b}\"`;\n if (b[0] === '\"')\n return a.slice(0, -1) + b.slice(1);\n return;\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name))\n return `\"${a}${b.slice(1)}`;\n return;\n}\nfunction strConcat(c1, c2) {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str `${c1}${c2}`;\n}\nexports.strConcat = strConcat;\n// TODO do not allow arrays here\nfunction interpolate(x) {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x);\n}\nfunction stringify(x) {\n return new _Code(safeStringify(x));\n}\nexports.stringify = stringify;\nfunction safeStringify(x) {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\nexports.safeStringify = safeStringify;\nfunction getProperty(key) {\n return typeof key == \"string\" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _ `[${key}]`;\n}\nexports.getProperty = getProperty;\n//Does best effort to format the name properly\nfunction getEsmExportName(key) {\n if (typeof key == \"string\" && exports.IDENTIFIER.test(key)) {\n return new _Code(`${key}`);\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`);\n}\nexports.getEsmExportName = getEsmExportName;\nfunction regexpCode(rx) {\n return new _Code(rx.toString());\n}\nexports.regexpCode = regexpCode;\n//# sourceMappingURL=code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0;\nconst code_1 = require(\"./code\");\nclass ValueError extends Error {\n constructor(name) {\n super(`CodeGen: \"code\" for ${name} not defined`);\n this.value = name.value;\n }\n}\nvar UsedValueState;\n(function (UsedValueState) {\n UsedValueState[UsedValueState[\"Started\"] = 0] = \"Started\";\n UsedValueState[UsedValueState[\"Completed\"] = 1] = \"Completed\";\n})(UsedValueState || (exports.UsedValueState = UsedValueState = {}));\nexports.varKinds = {\n const: new code_1.Name(\"const\"),\n let: new code_1.Name(\"let\"),\n var: new code_1.Name(\"var\"),\n};\nclass Scope {\n constructor({ prefixes, parent } = {}) {\n this._names = {};\n this._prefixes = prefixes;\n this._parent = parent;\n }\n toName(nameOrPrefix) {\n return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix);\n }\n name(prefix) {\n return new code_1.Name(this._newName(prefix));\n }\n _newName(prefix) {\n const ng = this._names[prefix] || this._nameGroup(prefix);\n return `${prefix}${ng.index++}`;\n }\n _nameGroup(prefix) {\n var _a, _b;\n if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`);\n }\n return (this._names[prefix] = { prefix, index: 0 });\n }\n}\nexports.Scope = Scope;\nclass ValueScopeName extends code_1.Name {\n constructor(prefix, nameStr) {\n super(nameStr);\n this.prefix = prefix;\n }\n setValue(value, { property, itemIndex }) {\n this.value = value;\n this.scopePath = (0, code_1._) `.${new code_1.Name(property)}[${itemIndex}]`;\n }\n}\nexports.ValueScopeName = ValueScopeName;\nconst line = (0, code_1._) `\\n`;\nclass ValueScope extends Scope {\n constructor(opts) {\n super(opts);\n this._values = {};\n this._scope = opts.scope;\n this.opts = { ...opts, _n: opts.lines ? line : code_1.nil };\n }\n get() {\n return this._scope;\n }\n name(prefix) {\n return new ValueScopeName(prefix, this._newName(prefix));\n }\n value(nameOrPrefix, value) {\n var _a;\n if (value.ref === undefined)\n throw new Error(\"CodeGen: ref must be passed in value\");\n const name = this.toName(nameOrPrefix);\n const { prefix } = name;\n const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref;\n let vs = this._values[prefix];\n if (vs) {\n const _name = vs.get(valueKey);\n if (_name)\n return _name;\n }\n else {\n vs = this._values[prefix] = new Map();\n }\n vs.set(valueKey, name);\n const s = this._scope[prefix] || (this._scope[prefix] = []);\n const itemIndex = s.length;\n s[itemIndex] = value.ref;\n name.setValue(value, { property: prefix, itemIndex });\n return name;\n }\n getValue(prefix, keyOrRef) {\n const vs = this._values[prefix];\n if (!vs)\n return;\n return vs.get(keyOrRef);\n }\n scopeRefs(scopeName, values = this._values) {\n return this._reduceValues(values, (name) => {\n if (name.scopePath === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return (0, code_1._) `${scopeName}${name.scopePath}`;\n });\n }\n scopeCode(values = this._values, usedValues, getCode) {\n return this._reduceValues(values, (name) => {\n if (name.value === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return name.value.code;\n }, usedValues, getCode);\n }\n _reduceValues(values, valueCode, usedValues = {}, getCode) {\n let code = code_1.nil;\n for (const prefix in values) {\n const vs = values[prefix];\n if (!vs)\n continue;\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map());\n vs.forEach((name) => {\n if (nameSet.has(name))\n return;\n nameSet.set(name, UsedValueState.Started);\n let c = valueCode(name);\n if (c) {\n const def = this.opts.es5 ? exports.varKinds.var : exports.varKinds.const;\n code = (0, code_1._) `${code}${def} ${name} = ${c};${this.opts._n}`;\n }\n else if ((c = getCode === null || getCode === void 0 ? void 0 : getCode(name))) {\n code = (0, code_1._) `${code}${c}${this.opts._n}`;\n }\n else {\n throw new ValueError(name);\n }\n nameSet.set(name, UsedValueState.Completed);\n });\n }\n return code;\n }\n}\nexports.ValueScope = ValueScope;\n//# sourceMappingURL=scope.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0;\nconst code_1 = require(\"./code\");\nconst scope_1 = require(\"./scope\");\nvar code_2 = require(\"./code\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return code_2._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return code_2.str; } });\nObject.defineProperty(exports, \"strConcat\", { enumerable: true, get: function () { return code_2.strConcat; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return code_2.nil; } });\nObject.defineProperty(exports, \"getProperty\", { enumerable: true, get: function () { return code_2.getProperty; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return code_2.stringify; } });\nObject.defineProperty(exports, \"regexpCode\", { enumerable: true, get: function () { return code_2.regexpCode; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return code_2.Name; } });\nvar scope_2 = require(\"./scope\");\nObject.defineProperty(exports, \"Scope\", { enumerable: true, get: function () { return scope_2.Scope; } });\nObject.defineProperty(exports, \"ValueScope\", { enumerable: true, get: function () { return scope_2.ValueScope; } });\nObject.defineProperty(exports, \"ValueScopeName\", { enumerable: true, get: function () { return scope_2.ValueScopeName; } });\nObject.defineProperty(exports, \"varKinds\", { enumerable: true, get: function () { return scope_2.varKinds; } });\nexports.operators = {\n GT: new code_1._Code(\">\"),\n GTE: new code_1._Code(\">=\"),\n LT: new code_1._Code(\"<\"),\n LTE: new code_1._Code(\"<=\"),\n EQ: new code_1._Code(\"===\"),\n NEQ: new code_1._Code(\"!==\"),\n NOT: new code_1._Code(\"!\"),\n OR: new code_1._Code(\"||\"),\n AND: new code_1._Code(\"&&\"),\n ADD: new code_1._Code(\"+\"),\n};\nclass Node {\n optimizeNodes() {\n return this;\n }\n optimizeNames(_names, _constants) {\n return this;\n }\n}\nclass Def extends Node {\n constructor(varKind, name, rhs) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.rhs = rhs;\n }\n render({ es5, _n }) {\n const varKind = es5 ? scope_1.varKinds.var : this.varKind;\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`;\n return `${varKind} ${this.name}${rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (!names[this.name.str])\n return;\n if (this.rhs)\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {};\n }\n}\nclass Assign extends Node {\n constructor(lhs, rhs, sideEffects) {\n super();\n this.lhs = lhs;\n this.rhs = rhs;\n this.sideEffects = sideEffects;\n }\n render({ _n }) {\n return `${this.lhs} = ${this.rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)\n return;\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names };\n return addExprNames(names, this.rhs);\n }\n}\nclass AssignOp extends Assign {\n constructor(lhs, op, rhs, sideEffects) {\n super(lhs, rhs, sideEffects);\n this.op = op;\n }\n render({ _n }) {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n;\n }\n}\nclass Label extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n return `${this.label}:` + _n;\n }\n}\nclass Break extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n const label = this.label ? ` ${this.label}` : \"\";\n return `break${label};` + _n;\n }\n}\nclass Throw extends Node {\n constructor(error) {\n super();\n this.error = error;\n }\n render({ _n }) {\n return `throw ${this.error};` + _n;\n }\n get names() {\n return this.error.names;\n }\n}\nclass AnyCode extends Node {\n constructor(code) {\n super();\n this.code = code;\n }\n render({ _n }) {\n return `${this.code};` + _n;\n }\n optimizeNodes() {\n return `${this.code}` ? this : undefined;\n }\n optimizeNames(names, constants) {\n this.code = optimizeExpr(this.code, names, constants);\n return this;\n }\n get names() {\n return this.code instanceof code_1._CodeOrName ? this.code.names : {};\n }\n}\nclass ParentNode extends Node {\n constructor(nodes = []) {\n super();\n this.nodes = nodes;\n }\n render(opts) {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\");\n }\n optimizeNodes() {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n const n = nodes[i].optimizeNodes();\n if (Array.isArray(n))\n nodes.splice(i, 1, ...n);\n else if (n)\n nodes[i] = n;\n else\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n optimizeNames(names, constants) {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i];\n if (n.optimizeNames(names, constants))\n continue;\n subtractNames(names, n.names);\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n get names() {\n return this.nodes.reduce((names, n) => addNames(names, n.names), {});\n }\n}\nclass BlockNode extends ParentNode {\n render(opts) {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n;\n }\n}\nclass Root extends ParentNode {\n}\nclass Else extends BlockNode {\n}\nElse.kind = \"else\";\nclass If extends BlockNode {\n constructor(condition, nodes) {\n super(nodes);\n this.condition = condition;\n }\n render(opts) {\n let code = `if(${this.condition})` + super.render(opts);\n if (this.else)\n code += \"else \" + this.else.render(opts);\n return code;\n }\n optimizeNodes() {\n super.optimizeNodes();\n const cond = this.condition;\n if (cond === true)\n return this.nodes; // else is ignored here\n let e = this.else;\n if (e) {\n const ns = e.optimizeNodes();\n e = this.else = Array.isArray(ns) ? new Else(ns) : ns;\n }\n if (e) {\n if (cond === false)\n return e instanceof If ? e : e.nodes;\n if (this.nodes.length)\n return this;\n return new If(not(cond), e instanceof If ? [e] : e.nodes);\n }\n if (cond === false || !this.nodes.length)\n return undefined;\n return this;\n }\n optimizeNames(names, constants) {\n var _a;\n this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n if (!(super.optimizeNames(names, constants) || this.else))\n return;\n this.condition = optimizeExpr(this.condition, names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n addExprNames(names, this.condition);\n if (this.else)\n addNames(names, this.else.names);\n return names;\n }\n}\nIf.kind = \"if\";\nclass For extends BlockNode {\n}\nFor.kind = \"for\";\nclass ForLoop extends For {\n constructor(iteration) {\n super();\n this.iteration = iteration;\n }\n render(opts) {\n return `for(${this.iteration})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iteration = optimizeExpr(this.iteration, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iteration.names);\n }\n}\nclass ForRange extends For {\n constructor(varKind, name, from, to) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.from = from;\n this.to = to;\n }\n render(opts) {\n const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind;\n const { name, from, to } = this;\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts);\n }\n get names() {\n const names = addExprNames(super.names, this.from);\n return addExprNames(names, this.to);\n }\n}\nclass ForIter extends For {\n constructor(loop, varKind, name, iterable) {\n super();\n this.loop = loop;\n this.varKind = varKind;\n this.name = name;\n this.iterable = iterable;\n }\n render(opts) {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iterable = optimizeExpr(this.iterable, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iterable.names);\n }\n}\nclass Func extends BlockNode {\n constructor(name, args, async) {\n super();\n this.name = name;\n this.args = args;\n this.async = async;\n }\n render(opts) {\n const _async = this.async ? \"async \" : \"\";\n return `${_async}function ${this.name}(${this.args})` + super.render(opts);\n }\n}\nFunc.kind = \"func\";\nclass Return extends ParentNode {\n render(opts) {\n return \"return \" + super.render(opts);\n }\n}\nReturn.kind = \"return\";\nclass Try extends BlockNode {\n render(opts) {\n let code = \"try\" + super.render(opts);\n if (this.catch)\n code += this.catch.render(opts);\n if (this.finally)\n code += this.finally.render(opts);\n return code;\n }\n optimizeNodes() {\n var _a, _b;\n super.optimizeNodes();\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes();\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes();\n return this;\n }\n optimizeNames(names, constants) {\n var _a, _b;\n super.optimizeNames(names, constants);\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n if (this.catch)\n addNames(names, this.catch.names);\n if (this.finally)\n addNames(names, this.finally.names);\n return names;\n }\n}\nclass Catch extends BlockNode {\n constructor(error) {\n super();\n this.error = error;\n }\n render(opts) {\n return `catch(${this.error})` + super.render(opts);\n }\n}\nCatch.kind = \"catch\";\nclass Finally extends BlockNode {\n render(opts) {\n return \"finally\" + super.render(opts);\n }\n}\nFinally.kind = \"finally\";\nclass CodeGen {\n constructor(extScope, opts = {}) {\n this._values = {};\n this._blockStarts = [];\n this._constants = {};\n this.opts = { ...opts, _n: opts.lines ? \"\\n\" : \"\" };\n this._extScope = extScope;\n this._scope = new scope_1.Scope({ parent: extScope });\n this._nodes = [new Root()];\n }\n toString() {\n return this._root.render(this.opts);\n }\n // returns unique name in the internal scope\n name(prefix) {\n return this._scope.name(prefix);\n }\n // reserves unique name in the external scope\n scopeName(prefix) {\n return this._extScope.name(prefix);\n }\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName, value) {\n const name = this._extScope.value(prefixOrName, value);\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set());\n vs.add(name);\n return name;\n }\n getScopeValue(prefix, keyOrRef) {\n return this._extScope.getValue(prefix, keyOrRef);\n }\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName) {\n return this._extScope.scopeRefs(scopeName, this._values);\n }\n scopeCode() {\n return this._extScope.scopeCode(this._values);\n }\n _def(varKind, nameOrPrefix, rhs, constant) {\n const name = this._scope.toName(nameOrPrefix);\n if (rhs !== undefined && constant)\n this._constants[name.str] = rhs;\n this._leafNode(new Def(varKind, name, rhs));\n return name;\n }\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant);\n }\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant);\n }\n // `var` declaration with optional assignment\n var(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant);\n }\n // assignment code\n assign(lhs, rhs, sideEffects) {\n return this._leafNode(new Assign(lhs, rhs, sideEffects));\n }\n // `+=` code\n add(lhs, rhs) {\n return this._leafNode(new AssignOp(lhs, exports.operators.ADD, rhs));\n }\n // appends passed SafeExpr to code or executes Block\n code(c) {\n if (typeof c == \"function\")\n c();\n else if (c !== code_1.nil)\n this._leafNode(new AnyCode(c));\n return this;\n }\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues) {\n const code = [\"{\"];\n for (const [key, value] of keyValues) {\n if (code.length > 1)\n code.push(\",\");\n code.push(key);\n if (key !== value || this.opts.es5) {\n code.push(\":\");\n (0, code_1.addCodeArg)(code, value);\n }\n }\n code.push(\"}\");\n return new code_1._Code(code);\n }\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition, thenBody, elseBody) {\n this._blockNode(new If(condition));\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf();\n }\n else if (thenBody) {\n this.code(thenBody).endIf();\n }\n else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body');\n }\n return this;\n }\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition) {\n return this._elseNode(new If(condition));\n }\n // `else` clause - only valid after `if` or `else if` clauses\n else() {\n return this._elseNode(new Else());\n }\n // end `if` statement (needed if gen.if was used only with condition)\n endIf() {\n return this._endBlockNode(If, Else);\n }\n _for(node, forBody) {\n this._blockNode(node);\n if (forBody)\n this.code(forBody).endFor();\n return this;\n }\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration, forBody) {\n return this._for(new ForLoop(iteration), forBody);\n }\n // `for` statement for a range of values\n forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) {\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name));\n }\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) {\n const name = this._scope.toName(nameOrPrefix);\n if (this.opts.es5) {\n const arr = iterable instanceof code_1.Name ? iterable : this.var(\"_arr\", iterable);\n return this.forRange(\"_i\", 0, (0, code_1._) `${arr}.length`, (i) => {\n this.var(name, (0, code_1._) `${arr}[${i}]`);\n forBody(name);\n });\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name));\n }\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, (0, code_1._) `Object.keys(${obj})`, forBody);\n }\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name));\n }\n // end `for` loop\n endFor() {\n return this._endBlockNode(For);\n }\n // `label` statement\n label(label) {\n return this._leafNode(new Label(label));\n }\n // `break` statement\n break(label) {\n return this._leafNode(new Break(label));\n }\n // `return` statement\n return(value) {\n const node = new Return();\n this._blockNode(node);\n this.code(value);\n if (node.nodes.length !== 1)\n throw new Error('CodeGen: \"return\" should have one node');\n return this._endBlockNode(Return);\n }\n // `try` statement\n try(tryBody, catchCode, finallyCode) {\n if (!catchCode && !finallyCode)\n throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"');\n const node = new Try();\n this._blockNode(node);\n this.code(tryBody);\n if (catchCode) {\n const error = this.name(\"e\");\n this._currNode = node.catch = new Catch(error);\n catchCode(error);\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally();\n this.code(finallyCode);\n }\n return this._endBlockNode(Catch, Finally);\n }\n // `throw` statement\n throw(error) {\n return this._leafNode(new Throw(error));\n }\n // start self-balancing block\n block(body, nodeCount) {\n this._blockStarts.push(this._nodes.length);\n if (body)\n this.code(body).endBlock(nodeCount);\n return this;\n }\n // end the current self-balancing block\n endBlock(nodeCount) {\n const len = this._blockStarts.pop();\n if (len === undefined)\n throw new Error(\"CodeGen: not in self-balancing block\");\n const toClose = this._nodes.length - len;\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);\n }\n this._nodes.length = len;\n return this;\n }\n // `function` heading (or definition if funcBody is passed)\n func(name, args = code_1.nil, async, funcBody) {\n this._blockNode(new Func(name, args, async));\n if (funcBody)\n this.code(funcBody).endFunc();\n return this;\n }\n // end function definition\n endFunc() {\n return this._endBlockNode(Func);\n }\n optimize(n = 1) {\n while (n-- > 0) {\n this._root.optimizeNodes();\n this._root.optimizeNames(this._root.names, this._constants);\n }\n }\n _leafNode(node) {\n this._currNode.nodes.push(node);\n return this;\n }\n _blockNode(node) {\n this._currNode.nodes.push(node);\n this._nodes.push(node);\n }\n _endBlockNode(N1, N2) {\n const n = this._currNode;\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop();\n return this;\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`);\n }\n _elseNode(node) {\n const n = this._currNode;\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"');\n }\n this._currNode = n.else = node;\n return this;\n }\n get _root() {\n return this._nodes[0];\n }\n get _currNode() {\n const ns = this._nodes;\n return ns[ns.length - 1];\n }\n set _currNode(node) {\n const ns = this._nodes;\n ns[ns.length - 1] = node;\n }\n}\nexports.CodeGen = CodeGen;\nfunction addNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) + (from[n] || 0);\n return names;\n}\nfunction addExprNames(names, from) {\n return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;\n}\nfunction optimizeExpr(expr, names, constants) {\n if (expr instanceof code_1.Name)\n return replaceName(expr);\n if (!canOptimize(expr))\n return expr;\n return new code_1._Code(expr._items.reduce((items, c) => {\n if (c instanceof code_1.Name)\n c = replaceName(c);\n if (c instanceof code_1._Code)\n items.push(...c._items);\n else\n items.push(c);\n return items;\n }, []));\n function replaceName(n) {\n const c = constants[n.str];\n if (c === undefined || names[n.str] !== 1)\n return n;\n delete names[n.str];\n return c;\n }\n function canOptimize(e) {\n return (e instanceof code_1._Code &&\n e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants[c.str] !== undefined));\n }\n}\nfunction subtractNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) - (from[n] || 0);\n}\nfunction not(x) {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : (0, code_1._) `!${par(x)}`;\n}\nexports.not = not;\nconst andCode = mappend(exports.operators.AND);\n// boolean AND (&&) expression with the passed arguments\nfunction and(...args) {\n return args.reduce(andCode);\n}\nexports.and = and;\nconst orCode = mappend(exports.operators.OR);\n// boolean OR (||) expression with the passed arguments\nfunction or(...args) {\n return args.reduce(orCode);\n}\nexports.or = or;\nfunction mappend(op) {\n return (x, y) => (x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._) `${par(x)} ${op} ${par(y)}`);\n}\nfunction par(x) {\n return x instanceof code_1.Name ? x : (0, code_1._) `(${x})`;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst code_1 = require(\"./codegen/code\");\n// TODO refactor to use Set\nfunction toHash(arr) {\n const hash = {};\n for (const item of arr)\n hash[item] = true;\n return hash;\n}\nexports.toHash = toHash;\nfunction alwaysValidSchema(it, schema) {\n if (typeof schema == \"boolean\")\n return schema;\n if (Object.keys(schema).length === 0)\n return true;\n checkUnknownRules(it, schema);\n return !schemaHasRules(schema, it.self.RULES.all);\n}\nexports.alwaysValidSchema = alwaysValidSchema;\nfunction checkUnknownRules(it, schema = it.schema) {\n const { opts, self } = it;\n if (!opts.strictSchema)\n return;\n if (typeof schema === \"boolean\")\n return;\n const rules = self.RULES.keywords;\n for (const key in schema) {\n if (!rules[key])\n checkStrictMode(it, `unknown keyword: \"${key}\"`);\n }\n}\nexports.checkUnknownRules = checkUnknownRules;\nfunction schemaHasRules(schema, rules) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (rules[key])\n return true;\n return false;\n}\nexports.schemaHasRules = schemaHasRules;\nfunction schemaHasRulesButRef(schema, RULES) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (key !== \"$ref\" && RULES.all[key])\n return true;\n return false;\n}\nexports.schemaHasRulesButRef = schemaHasRulesButRef;\nfunction schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\")\n return schema;\n if (typeof schema == \"string\")\n return (0, codegen_1._) `${schema}`;\n }\n return (0, codegen_1._) `${topSchemaRef}${schemaPath}${(0, codegen_1.getProperty)(keyword)}`;\n}\nexports.schemaRefOrVal = schemaRefOrVal;\nfunction unescapeFragment(str) {\n return unescapeJsonPointer(decodeURIComponent(str));\n}\nexports.unescapeFragment = unescapeFragment;\nfunction escapeFragment(str) {\n return encodeURIComponent(escapeJsonPointer(str));\n}\nexports.escapeFragment = escapeFragment;\nfunction escapeJsonPointer(str) {\n if (typeof str == \"number\")\n return `${str}`;\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\nexports.escapeJsonPointer = escapeJsonPointer;\nfunction unescapeJsonPointer(str) {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n}\nexports.unescapeJsonPointer = unescapeJsonPointer;\nfunction eachItem(xs, f) {\n if (Array.isArray(xs)) {\n for (const x of xs)\n f(x);\n }\n else {\n f(xs);\n }\n}\nexports.eachItem = eachItem;\nfunction makeMergeEvaluated({ mergeNames, mergeToName, mergeValues, resultToName, }) {\n return (gen, from, to, toName) => {\n const res = to === undefined\n ? from\n : to instanceof codegen_1.Name\n ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof codegen_1.Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to);\n return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res;\n };\n}\nexports.mergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => {\n gen.if((0, codegen_1._) `${from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._) `${to} || {}`).code((0, codegen_1._) `Object.assign(${to}, ${from})`));\n }),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true);\n }\n else {\n gen.assign(to, (0, codegen_1._) `${to} || {}`);\n setEvaluated(gen, to, from);\n }\n }),\n mergeValues: (from, to) => (from === true ? true : { ...from, ...to }),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => gen.assign(to, (0, codegen_1._) `${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._) `${to} > ${from} ? ${to} : ${from}`)),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n};\nfunction evaluatedPropsToName(gen, ps) {\n if (ps === true)\n return gen.var(\"props\", true);\n const props = gen.var(\"props\", (0, codegen_1._) `{}`);\n if (ps !== undefined)\n setEvaluated(gen, props, ps);\n return props;\n}\nexports.evaluatedPropsToName = evaluatedPropsToName;\nfunction setEvaluated(gen, props, ps) {\n Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._) `${props}${(0, codegen_1.getProperty)(p)}`, true));\n}\nexports.setEvaluated = setEvaluated;\nconst snippets = {};\nfunction useFunc(gen, f) {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code)),\n });\n}\nexports.useFunc = useFunc;\nvar Type;\n(function (Type) {\n Type[Type[\"Num\"] = 0] = \"Num\";\n Type[Type[\"Str\"] = 1] = \"Str\";\n})(Type || (exports.Type = Type = {}));\nfunction getErrorPath(dataProp, dataPropType, jsPropertySyntax) {\n // let path\n if (dataProp instanceof codegen_1.Name) {\n const isNumber = dataPropType === Type.Num;\n return jsPropertySyntax\n ? isNumber\n ? (0, codegen_1._) `\"[\" + ${dataProp} + \"]\"`\n : (0, codegen_1._) `\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? (0, codegen_1._) `\"/\" + ${dataProp}`\n : (0, codegen_1._) `\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")`; // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp);\n}\nexports.getErrorPath = getErrorPath;\nfunction checkStrictMode(it, msg, mode = it.opts.strictSchema) {\n if (!mode)\n return;\n msg = `strict mode: ${msg}`;\n if (mode === true)\n throw new Error(msg);\n it.self.logger.warn(msg);\n}\nexports.checkStrictMode = checkStrictMode;\n//# sourceMappingURL=util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"./codegen\");\nconst names = {\n // validation function arguments\n data: new codegen_1.Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new codegen_1.Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new codegen_1.Name(\"instancePath\"),\n parentData: new codegen_1.Name(\"parentData\"),\n parentDataProperty: new codegen_1.Name(\"parentDataProperty\"),\n rootData: new codegen_1.Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new codegen_1.Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new codegen_1.Name(\"vErrors\"), // null or array of validation errors\n errors: new codegen_1.Name(\"errors\"), // counter of validation errors\n this: new codegen_1.Name(\"this\"),\n // \"globals\"\n self: new codegen_1.Name(\"self\"),\n scope: new codegen_1.Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new codegen_1.Name(\"json\"),\n jsonPos: new codegen_1.Name(\"jsonPos\"),\n jsonLen: new codegen_1.Name(\"jsonLen\"),\n jsonPart: new codegen_1.Name(\"jsonPart\"),\n};\nexports.default = names;\n//# sourceMappingURL=names.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst util_1 = require(\"./util\");\nconst names_1 = require(\"./names\");\nexports.keywordError = {\n message: ({ keyword }) => (0, codegen_1.str) `must pass \"${keyword}\" keyword validation`,\n};\nexports.keyword$DataError = {\n message: ({ keyword, schemaType }) => schemaType\n ? (0, codegen_1.str) `\"${keyword}\" keyword must be ${schemaType} ($data)`\n : (0, codegen_1.str) `\"${keyword}\" keyword is invalid ($data)`,\n};\nfunction reportError(cxt, error = exports.keywordError, errorPaths, overrideAllErrors) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : (compositeRule || allErrors)) {\n addError(gen, errObj);\n }\n else {\n returnErrors(it, (0, codegen_1._) `[${errObj}]`);\n }\n}\nexports.reportError = reportError;\nfunction reportExtraError(cxt, error = exports.keywordError, errorPaths) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n addError(gen, errObj);\n if (!(compositeRule || allErrors)) {\n returnErrors(it, names_1.default.vErrors);\n }\n}\nexports.reportExtraError = reportExtraError;\nfunction resetErrorsCount(gen, errsCount) {\n gen.assign(names_1.default.errors, errsCount);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._) `${names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null)));\n}\nexports.resetErrorsCount = resetErrorsCount;\nfunction extendErrors({ gen, keyword, schemaValue, data, errsCount, it, }) {\n /* istanbul ignore if */\n if (errsCount === undefined)\n throw new Error(\"ajv implementation error\");\n const err = gen.name(\"err\");\n gen.forRange(\"i\", errsCount, names_1.default.errors, (i) => {\n gen.const(err, (0, codegen_1._) `${names_1.default.vErrors}[${i}]`);\n gen.if((0, codegen_1._) `${err}.instancePath === undefined`, () => gen.assign((0, codegen_1._) `${err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath)));\n gen.assign((0, codegen_1._) `${err}.schemaPath`, (0, codegen_1.str) `${it.errSchemaPath}/${keyword}`);\n if (it.opts.verbose) {\n gen.assign((0, codegen_1._) `${err}.schema`, schemaValue);\n gen.assign((0, codegen_1._) `${err}.data`, data);\n }\n });\n}\nexports.extendErrors = extendErrors;\nfunction addError(gen, errObj) {\n const err = gen.const(\"err\", errObj);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._) `[${err}]`), (0, codegen_1._) `${names_1.default.vErrors}.push(${err})`);\n gen.code((0, codegen_1._) `${names_1.default.errors}++`);\n}\nfunction returnErrors(it, errs) {\n const { gen, validateName, schemaEnv } = it;\n if (schemaEnv.$async) {\n gen.throw((0, codegen_1._) `new ${it.ValidationError}(${errs})`);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, errs);\n gen.return(false);\n }\n}\nconst E = {\n keyword: new codegen_1.Name(\"keyword\"),\n schemaPath: new codegen_1.Name(\"schemaPath\"), // also used in JTD errors\n params: new codegen_1.Name(\"params\"),\n propertyName: new codegen_1.Name(\"propertyName\"),\n message: new codegen_1.Name(\"message\"),\n schema: new codegen_1.Name(\"schema\"),\n parentSchema: new codegen_1.Name(\"parentSchema\"),\n};\nfunction errorObjectCode(cxt, error, errorPaths) {\n const { createErrors } = cxt.it;\n if (createErrors === false)\n return (0, codegen_1._) `{}`;\n return errorObject(cxt, error, errorPaths);\n}\nfunction errorObject(cxt, error, errorPaths = {}) {\n const { gen, it } = cxt;\n const keyValues = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ];\n extraErrorProps(cxt, error, keyValues);\n return gen.object(...keyValues);\n}\nfunction errorInstancePath({ errorPath }, { instancePath }) {\n const instPath = instancePath\n ? (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}`\n : errorPath;\n return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)];\n}\nfunction errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) {\n let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str) `${errSchemaPath}/${keyword}`;\n if (schemaPath) {\n schPath = (0, codegen_1.str) `${schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`;\n }\n return [E.schemaPath, schPath];\n}\nfunction extraErrorProps(cxt, { params, message }, keyValues) {\n const { keyword, data, schemaValue, it } = cxt;\n const { opts, propertyName, topSchemaRef, schemaPath } = it;\n keyValues.push([E.keyword, keyword], [E.params, typeof params == \"function\" ? params(cxt) : params || (0, codegen_1._) `{}`]);\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message]);\n }\n if (opts.verbose) {\n keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._) `${topSchemaRef}${schemaPath}`], [names_1.default.data, data]);\n }\n if (propertyName)\n keyValues.push([E.propertyName, propertyName]);\n}\n//# sourceMappingURL=errors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0;\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst boolError = {\n message: \"boolean schema is false\",\n};\nfunction topBoolOrEmptySchema(it) {\n const { gen, schema, validateName } = it;\n if (schema === false) {\n falseSchemaError(it, false);\n }\n else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(names_1.default.data);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, null);\n gen.return(true);\n }\n}\nexports.topBoolOrEmptySchema = topBoolOrEmptySchema;\nfunction boolOrEmptySchema(it, valid) {\n const { gen, schema } = it;\n if (schema === false) {\n gen.var(valid, false); // TODO var\n falseSchemaError(it);\n }\n else {\n gen.var(valid, true); // TODO var\n }\n}\nexports.boolOrEmptySchema = boolOrEmptySchema;\nfunction falseSchemaError(it, overrideAllErrors) {\n const { gen, data } = it;\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n };\n (0, errors_1.reportError)(cxt, boolError, undefined, overrideAllErrors);\n}\n//# sourceMappingURL=boolSchema.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRules = exports.isJSONType = void 0;\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"];\nconst jsonTypes = new Set(_jsonTypes);\nfunction isJSONType(x) {\n return typeof x == \"string\" && jsonTypes.has(x);\n}\nexports.isJSONType = isJSONType;\nfunction getRules() {\n const groups = {\n number: { type: \"number\", rules: [] },\n string: { type: \"string\", rules: [] },\n array: { type: \"array\", rules: [] },\n object: { type: \"object\", rules: [] },\n };\n return {\n types: { ...groups, integer: true, boolean: true, null: true },\n rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object],\n post: { rules: [] },\n all: {},\n keywords: {},\n };\n}\nexports.getRules = getRules;\n//# sourceMappingURL=rules.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0;\nfunction schemaHasRulesForType({ schema, self }, type) {\n const group = self.RULES.types[type];\n return group && group !== true && shouldUseGroup(schema, group);\n}\nexports.schemaHasRulesForType = schemaHasRulesForType;\nfunction shouldUseGroup(schema, group) {\n return group.rules.some((rule) => shouldUseRule(schema, rule));\n}\nexports.shouldUseGroup = shouldUseGroup;\nfunction shouldUseRule(schema, rule) {\n var _a;\n return (schema[rule.keyword] !== undefined ||\n ((_a = rule.definition.implements) === null || _a === void 0 ? void 0 : _a.some((kwd) => schema[kwd] !== undefined)));\n}\nexports.shouldUseRule = shouldUseRule;\n//# sourceMappingURL=applicability.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0;\nconst rules_1 = require(\"../rules\");\nconst applicability_1 = require(\"./applicability\");\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nvar DataType;\n(function (DataType) {\n DataType[DataType[\"Correct\"] = 0] = \"Correct\";\n DataType[DataType[\"Wrong\"] = 1] = \"Wrong\";\n})(DataType || (exports.DataType = DataType = {}));\nfunction getSchemaTypes(schema) {\n const types = getJSONTypes(schema.type);\n const hasNull = types.includes(\"null\");\n if (hasNull) {\n if (schema.nullable === false)\n throw new Error(\"type: null contradicts nullable: false\");\n }\n else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"');\n }\n if (schema.nullable === true)\n types.push(\"null\");\n }\n return types;\n}\nexports.getSchemaTypes = getSchemaTypes;\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nfunction getJSONTypes(ts) {\n const types = Array.isArray(ts) ? ts : ts ? [ts] : [];\n if (types.every(rules_1.isJSONType))\n return types;\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"));\n}\nexports.getJSONTypes = getJSONTypes;\nfunction coerceAndCheckDataType(it, types) {\n const { gen, data, opts } = it;\n const coerceTo = coerceToTypes(types, opts.coerceTypes);\n const checkTypes = types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0]));\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong);\n gen.if(wrongType, () => {\n if (coerceTo.length)\n coerceData(it, types, coerceTo);\n else\n reportTypeError(it);\n });\n }\n return checkTypes;\n}\nexports.coerceAndCheckDataType = coerceAndCheckDataType;\nconst COERCIBLE = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"]);\nfunction coerceToTypes(types, coerceTypes) {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : [];\n}\nfunction coerceData(it, types, coerceTo) {\n const { gen, data, opts } = it;\n const dataType = gen.let(\"dataType\", (0, codegen_1._) `typeof ${data}`);\n const coerced = gen.let(\"coerced\", (0, codegen_1._) `undefined`);\n if (opts.coerceTypes === \"array\") {\n gen.if((0, codegen_1._) `${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen\n .assign(data, (0, codegen_1._) `${data}[0]`)\n .assign(dataType, (0, codegen_1._) `typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data)));\n }\n gen.if((0, codegen_1._) `${coerced} !== undefined`);\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t);\n }\n }\n gen.else();\n reportTypeError(it);\n gen.endIf();\n gen.if((0, codegen_1._) `${coerced} !== undefined`, () => {\n gen.assign(data, coerced);\n assignParentData(it, coerced);\n });\n function coerceSpecificType(t) {\n switch (t) {\n case \"string\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, (0, codegen_1._) `\"\" + ${data}`)\n .elseIf((0, codegen_1._) `${data} === null`)\n .assign(coerced, (0, codegen_1._) `\"\"`);\n return;\n case \"number\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"integer\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"boolean\":\n gen\n .elseIf((0, codegen_1._) `${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf((0, codegen_1._) `${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true);\n return;\n case \"null\":\n gen.elseIf((0, codegen_1._) `${data} === \"\" || ${data} === 0 || ${data} === false`);\n gen.assign(coerced, null);\n return;\n case \"array\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`)\n .assign(coerced, (0, codegen_1._) `[${data}]`);\n }\n }\n}\nfunction assignParentData({ gen, parentData, parentDataProperty }, expr) {\n // TODO use gen.property\n gen.if((0, codegen_1._) `${parentData} !== undefined`, () => gen.assign((0, codegen_1._) `${parentData}[${parentDataProperty}]`, expr));\n}\nfunction checkDataType(dataType, data, strictNums, correct = DataType.Correct) {\n const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ;\n let cond;\n switch (dataType) {\n case \"null\":\n return (0, codegen_1._) `${data} ${EQ} null`;\n case \"array\":\n cond = (0, codegen_1._) `Array.isArray(${data})`;\n break;\n case \"object\":\n cond = (0, codegen_1._) `${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`;\n break;\n case \"integer\":\n cond = numCond((0, codegen_1._) `!(${data} % 1) && !isNaN(${data})`);\n break;\n case \"number\":\n cond = numCond();\n break;\n default:\n return (0, codegen_1._) `typeof ${data} ${EQ} ${dataType}`;\n }\n return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond);\n function numCond(_cond = codegen_1.nil) {\n return (0, codegen_1.and)((0, codegen_1._) `typeof ${data} == \"number\"`, _cond, strictNums ? (0, codegen_1._) `isFinite(${data})` : codegen_1.nil);\n }\n}\nexports.checkDataType = checkDataType;\nfunction checkDataTypes(dataTypes, data, strictNums, correct) {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct);\n }\n let cond;\n const types = (0, util_1.toHash)(dataTypes);\n if (types.array && types.object) {\n const notObj = (0, codegen_1._) `typeof ${data} != \"object\"`;\n cond = types.null ? notObj : (0, codegen_1._) `!${data} || ${notObj}`;\n delete types.null;\n delete types.array;\n delete types.object;\n }\n else {\n cond = codegen_1.nil;\n }\n if (types.number)\n delete types.integer;\n for (const t in types)\n cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct));\n return cond;\n}\nexports.checkDataTypes = checkDataTypes;\nconst typeError = {\n message: ({ schema }) => `must be ${schema}`,\n params: ({ schema, schemaValue }) => typeof schema == \"string\" ? (0, codegen_1._) `{type: ${schema}}` : (0, codegen_1._) `{type: ${schemaValue}}`,\n};\nfunction reportTypeError(it) {\n const cxt = getTypeErrorContext(it);\n (0, errors_1.reportError)(cxt, typeError);\n}\nexports.reportTypeError = reportTypeError;\nfunction getTypeErrorContext(it) {\n const { gen, data, schema } = it;\n const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, \"type\");\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n };\n}\n//# sourceMappingURL=dataType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assignDefaults = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction assignDefaults(it, ty) {\n const { properties, items } = it.schema;\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default);\n }\n }\n else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i) => assignDefault(it, i, sch.default));\n }\n}\nexports.assignDefaults = assignDefaults;\nfunction assignDefault(it, prop, defaultValue) {\n const { gen, compositeRule, data, opts } = it;\n if (defaultValue === undefined)\n return;\n const childData = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(prop)}`;\n if (compositeRule) {\n (0, util_1.checkStrictMode)(it, `default is ignored for: ${childData}`);\n return;\n }\n let condition = (0, codegen_1._) `${childData} === undefined`;\n if (opts.useDefaults === \"empty\") {\n condition = (0, codegen_1._) `${condition} || ${childData} === null || ${childData} === \"\"`;\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, (0, codegen_1._) `${childData} = ${(0, codegen_1.stringify)(defaultValue)}`);\n}\n//# sourceMappingURL=defaults.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0;\nconst codegen_1 = require(\"../compile/codegen\");\nconst util_1 = require(\"../compile/util\");\nconst names_1 = require(\"../compile/names\");\nconst util_2 = require(\"../compile/util\");\nfunction checkReportMissingProp(cxt, prop) {\n const { gen, data, it } = cxt;\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({ missingProperty: (0, codegen_1._) `${prop}` }, true);\n cxt.error();\n });\n}\nexports.checkReportMissingProp = checkReportMissingProp;\nfunction checkMissingProp({ gen, data, it: { opts } }, properties, missing) {\n return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._) `${missing} = ${prop}`)));\n}\nexports.checkMissingProp = checkMissingProp;\nfunction reportMissingProp(cxt, missing) {\n cxt.setParams({ missingProperty: missing }, true);\n cxt.error();\n}\nexports.reportMissingProp = reportMissingProp;\nfunction hasPropFunc(gen) {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: (0, codegen_1._) `Object.prototype.hasOwnProperty`,\n });\n}\nexports.hasPropFunc = hasPropFunc;\nfunction isOwnProperty(gen, data, property) {\n return (0, codegen_1._) `${hasPropFunc(gen)}.call(${data}, ${property})`;\n}\nexports.isOwnProperty = isOwnProperty;\nfunction propertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} !== undefined`;\n return ownProperties ? (0, codegen_1._) `${cond} && ${isOwnProperty(gen, data, property)}` : cond;\n}\nexports.propertyInData = propertyInData;\nfunction noPropertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} === undefined`;\n return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond;\n}\nexports.noPropertyInData = noPropertyInData;\nfunction allSchemaProperties(schemaMap) {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : [];\n}\nexports.allSchemaProperties = allSchemaProperties;\nfunction schemaProperties(it, schemaMap) {\n return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p]));\n}\nexports.schemaProperties = schemaProperties;\nfunction callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) {\n const dataAndSchema = passSchema ? (0, codegen_1._) `${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data;\n const valCxt = [\n [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)],\n [names_1.default.parentData, it.parentData],\n [names_1.default.parentDataProperty, it.parentDataProperty],\n [names_1.default.rootData, names_1.default.rootData],\n ];\n if (it.opts.dynamicRef)\n valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]);\n const args = (0, codegen_1._) `${dataAndSchema}, ${gen.object(...valCxt)}`;\n return context !== codegen_1.nil ? (0, codegen_1._) `${func}.call(${context}, ${args})` : (0, codegen_1._) `${func}(${args})`;\n}\nexports.callValidateCode = callValidateCode;\nconst newRegExp = (0, codegen_1._) `new RegExp`;\nfunction usePattern({ gen, it: { opts } }, pattern) {\n const u = opts.unicodeRegExp ? \"u\" : \"\";\n const { regExp } = opts.code;\n const rx = regExp(pattern, u);\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: (0, codegen_1._) `${regExp.code === \"new RegExp\" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}(${pattern}, ${u})`,\n });\n}\nexports.usePattern = usePattern;\nfunction validateArray(cxt) {\n const { gen, data, keyword, it } = cxt;\n const valid = gen.name(\"valid\");\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true);\n validateItems(() => gen.assign(validArr, false));\n return validArr;\n }\n gen.var(valid, true);\n validateItems(() => gen.break());\n return valid;\n function validateItems(notValid) {\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema({\n keyword,\n dataProp: i,\n dataPropType: util_1.Type.Num,\n }, valid);\n gen.if((0, codegen_1.not)(valid), notValid);\n });\n }\n}\nexports.validateArray = validateArray;\nfunction validateUnion(cxt) {\n const { gen, schema, keyword, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch));\n if (alwaysValid && !it.opts.unevaluated)\n return;\n const valid = gen.let(\"valid\", false);\n const schValid = gen.name(\"_valid\");\n gen.block(() => schema.forEach((_sch, i) => {\n const schCxt = cxt.subschema({\n keyword,\n schemaProp: i,\n compositeRule: true,\n }, schValid);\n gen.assign(valid, (0, codegen_1._) `${valid} || ${schValid}`);\n const merged = cxt.mergeValidEvaluated(schCxt, schValid);\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged)\n gen.if((0, codegen_1.not)(valid));\n }));\n cxt.result(valid, () => cxt.reset(), () => cxt.error(true));\n}\nexports.validateUnion = validateUnion;\n//# sourceMappingURL=code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst code_1 = require(\"../../vocabularies/code\");\nconst errors_1 = require(\"../errors\");\nfunction macroKeywordCode(cxt, def) {\n const { gen, keyword, schema, parentSchema, it } = cxt;\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it);\n const schemaRef = useKeyword(gen, keyword, macroSchema);\n if (it.opts.validateSchema !== false)\n it.self.validateSchema(macroSchema, true);\n const valid = gen.name(\"valid\");\n cxt.subschema({\n schema: macroSchema,\n schemaPath: codegen_1.nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n }, valid);\n cxt.pass(valid, () => cxt.error(true));\n}\nexports.macroKeywordCode = macroKeywordCode;\nfunction funcKeywordCode(cxt, def) {\n var _a;\n const { gen, keyword, schema, parentSchema, $data, it } = cxt;\n checkAsyncKeyword(it, def);\n const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate;\n const validateRef = useKeyword(gen, keyword, validate);\n const valid = gen.let(\"valid\");\n cxt.block$data(valid, validateKeyword);\n cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid);\n function validateKeyword() {\n if (def.errors === false) {\n assignValid();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => cxt.error());\n }\n else {\n const ruleErrs = def.async ? validateAsync() : validateSync();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => addErrs(cxt, ruleErrs));\n }\n }\n function validateAsync() {\n const ruleErrs = gen.let(\"ruleErrs\", null);\n gen.try(() => assignValid((0, codegen_1._) `await `), (e) => gen.assign(valid, false).if((0, codegen_1._) `${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._) `${e}.errors`), () => gen.throw(e)));\n return ruleErrs;\n }\n function validateSync() {\n const validateErrs = (0, codegen_1._) `${validateRef}.errors`;\n gen.assign(validateErrs, null);\n assignValid(codegen_1.nil);\n return validateErrs;\n }\n function assignValid(_await = def.async ? (0, codegen_1._) `await ` : codegen_1.nil) {\n const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self;\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false);\n gen.assign(valid, (0, codegen_1._) `${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying);\n }\n function reportErrs(errors) {\n var _a;\n gen.if((0, codegen_1.not)((_a = def.valid) !== null && _a !== void 0 ? _a : valid), errors);\n }\n}\nexports.funcKeywordCode = funcKeywordCode;\nfunction modifyData(cxt) {\n const { gen, data, it } = cxt;\n gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._) `${it.parentData}[${it.parentDataProperty}]`));\n}\nfunction addErrs(cxt, errs) {\n const { gen } = cxt;\n gen.if((0, codegen_1._) `Array.isArray(${errs})`, () => {\n gen\n .assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`)\n .assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`);\n (0, errors_1.extendErrors)(cxt);\n }, () => cxt.error());\n}\nfunction checkAsyncKeyword({ schemaEnv }, def) {\n if (def.async && !schemaEnv.$async)\n throw new Error(\"async keyword in sync schema\");\n}\nfunction useKeyword(gen, keyword, result) {\n if (result === undefined)\n throw new Error(`keyword \"${keyword}\" failed to compile`);\n return gen.scopeValue(\"keyword\", typeof result == \"function\" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) });\n}\nfunction validSchemaType(schema, schemaType, allowUndefined = false) {\n // TODO add tests\n return (!schemaType.length ||\n schemaType.some((st) => st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")));\n}\nexports.validSchemaType = validSchemaType;\nfunction validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\");\n }\n const deps = def.dependencies;\n if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`);\n }\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword]);\n if (!valid) {\n const msg = `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors);\n if (opts.validateSchema === \"log\")\n self.logger.error(msg);\n else\n throw new Error(msg);\n }\n }\n}\nexports.validateKeywordUsage = validateKeywordUsage;\n//# sourceMappingURL=keyword.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed');\n }\n if (keyword !== undefined) {\n const sch = it.schema[keyword];\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}`,\n };\n }\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"');\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n };\n }\n throw new Error('either \"keyword\" or \"schema\" must be passed');\n}\nexports.getSubschema = getSubschema;\nfunction extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed');\n }\n const { gen } = it;\n if (dataProp !== undefined) {\n const { errorPath, dataPathArr, opts } = it;\n const nextData = gen.let(\"data\", (0, codegen_1._) `${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true);\n dataContextProps(nextData);\n subschema.errorPath = (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`;\n subschema.parentDataProperty = (0, codegen_1._) `${dataProp}`;\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty];\n }\n if (data !== undefined) {\n const nextData = data instanceof codegen_1.Name ? data : gen.let(\"data\", data, true); // replaceable if used once?\n dataContextProps(nextData);\n if (propertyName !== undefined)\n subschema.propertyName = propertyName;\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n if (dataTypes)\n subschema.dataTypes = dataTypes;\n function dataContextProps(_nextData) {\n subschema.data = _nextData;\n subschema.dataLevel = it.dataLevel + 1;\n subschema.dataTypes = [];\n it.definedProperties = new Set();\n subschema.parentData = it.data;\n subschema.dataNames = [...it.dataNames, _nextData];\n }\n}\nexports.extendSubschemaData = extendSubschemaData;\nfunction extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) {\n if (compositeRule !== undefined)\n subschema.compositeRule = compositeRule;\n if (createErrors !== undefined)\n subschema.createErrors = createErrors;\n if (allErrors !== undefined)\n subschema.allErrors = allErrors;\n subschema.jtdDiscriminator = jtdDiscriminator; // not inherited\n subschema.jtdMetadata = jtdMetadata; // not inherited\n}\nexports.extendSubschemaMode = extendSubschemaMode;\n//# sourceMappingURL=subschema.js.map","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getFullPath = exports.getFullPath = exports.inlineRef = void 0;\nconst util_1 = require(\"./util\");\nconst equal = require(\"fast-deep-equal\");\nconst traverse = require(\"json-schema-traverse\");\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n]);\nfunction inlineRef(schema, limit = true) {\n if (typeof schema == \"boolean\")\n return true;\n if (limit === true)\n return !hasRef(schema);\n if (!limit)\n return false;\n return countKeys(schema) <= limit;\n}\nexports.inlineRef = inlineRef;\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n]);\nfunction hasRef(schema) {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key))\n return true;\n const sch = schema[key];\n if (Array.isArray(sch) && sch.some(hasRef))\n return true;\n if (typeof sch == \"object\" && hasRef(sch))\n return true;\n }\n return false;\n}\nfunction countKeys(schema) {\n let count = 0;\n for (const key in schema) {\n if (key === \"$ref\")\n return Infinity;\n count++;\n if (SIMPLE_INLINED.has(key))\n continue;\n if (typeof schema[key] == \"object\") {\n (0, util_1.eachItem)(schema[key], (sch) => (count += countKeys(sch)));\n }\n if (count === Infinity)\n return Infinity;\n }\n return count;\n}\nfunction getFullPath(resolver, id = \"\", normalize) {\n if (normalize !== false)\n id = normalizeId(id);\n const p = resolver.parse(id);\n return _getFullPath(resolver, p);\n}\nexports.getFullPath = getFullPath;\nfunction _getFullPath(resolver, p) {\n const serialized = resolver.serialize(p);\n return serialized.split(\"#\")[0] + \"#\";\n}\nexports._getFullPath = _getFullPath;\nconst TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\";\n}\nexports.normalizeId = normalizeId;\nfunction resolveUrl(resolver, baseId, id) {\n id = normalizeId(id);\n return resolver.resolve(baseId, id);\n}\nexports.resolveUrl = resolveUrl;\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i;\nfunction getSchemaRefs(schema, baseId) {\n if (typeof schema == \"boolean\")\n return {};\n const { schemaId, uriResolver } = this.opts;\n const schId = normalizeId(schema[schemaId] || baseId);\n const baseIds = { \"\": schId };\n const pathPrefix = getFullPath(uriResolver, schId, false);\n const localRefs = {};\n const schemaRefs = new Set();\n traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined)\n return;\n const fullPath = pathPrefix + jsonPtr;\n let innerBaseId = baseIds[parentJsonPtr];\n if (typeof sch[schemaId] == \"string\")\n innerBaseId = addRef.call(this, sch[schemaId]);\n addAnchor.call(this, sch.$anchor);\n addAnchor.call(this, sch.$dynamicAnchor);\n baseIds[jsonPtr] = innerBaseId;\n function addRef(ref) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve;\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref);\n if (schemaRefs.has(ref))\n throw ambiguos(ref);\n schemaRefs.add(ref);\n let schOrRef = this.refs[ref];\n if (typeof schOrRef == \"string\")\n schOrRef = this.refs[schOrRef];\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref);\n }\n else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref);\n localRefs[ref] = sch;\n }\n else {\n this.refs[ref] = fullPath;\n }\n }\n return ref;\n }\n function addAnchor(anchor) {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor))\n throw new Error(`invalid anchor \"${anchor}\"`);\n addRef.call(this, `#${anchor}`);\n }\n }\n });\n return localRefs;\n function checkAmbiguosRef(sch1, sch2, ref) {\n if (sch2 !== undefined && !equal(sch1, sch2))\n throw ambiguos(ref);\n }\n function ambiguos(ref) {\n return new Error(`reference \"${ref}\" resolves to more than one schema`);\n }\n}\nexports.getSchemaRefs = getSchemaRefs;\n//# sourceMappingURL=resolve.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0;\nconst boolSchema_1 = require(\"./boolSchema\");\nconst dataType_1 = require(\"./dataType\");\nconst applicability_1 = require(\"./applicability\");\nconst dataType_2 = require(\"./dataType\");\nconst defaults_1 = require(\"./defaults\");\nconst keyword_1 = require(\"./keyword\");\nconst subschema_1 = require(\"./subschema\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst resolve_1 = require(\"../resolve\");\nconst util_1 = require(\"../util\");\nconst errors_1 = require(\"../errors\");\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nfunction validateFunctionCode(it) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it);\n return;\n }\n }\n validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it));\n}\nexports.validateFunctionCode = validateFunctionCode;\nfunction validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) {\n if (opts.code.es5) {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${names_1.default.valCxt}`, schemaEnv.$async, () => {\n gen.code((0, codegen_1._) `\"use strict\"; ${funcSourceUrl(schema, opts)}`);\n destructureValCxtES5(gen, opts);\n gen.code(body);\n });\n }\n else {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body));\n }\n}\nfunction destructureValCxt(opts) {\n return (0, codegen_1._) `{${names_1.default.instancePath}=\"\", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? (0, codegen_1._) `, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`;\n}\nfunction destructureValCxtES5(gen, opts) {\n gen.if(names_1.default.valCxt, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.instancePath}`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentData}`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentDataProperty}`);\n gen.var(names_1.default.rootData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.rootData}`);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`);\n }, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `\"\"`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.rootData, names_1.default.data);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `{}`);\n });\n}\nfunction topSchemaObjCode(it) {\n const { schema, opts, gen } = it;\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n checkNoDefault(it);\n gen.let(names_1.default.vErrors, null);\n gen.let(names_1.default.errors, 0);\n if (opts.unevaluated)\n resetEvaluated(it);\n typeAndKeywords(it);\n returnResults(it);\n });\n return;\n}\nfunction resetEvaluated(it) {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const { gen, validateName } = it;\n it.evaluated = gen.const(\"evaluated\", (0, codegen_1._) `${validateName}.evaluated`);\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._) `${it.evaluated}.props`, (0, codegen_1._) `undefined`));\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._) `${it.evaluated}.items`, (0, codegen_1._) `undefined`));\n}\nfunction funcSourceUrl(schema, opts) {\n const schId = typeof schema == \"object\" && schema[opts.schemaId];\n return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._) `/*# sourceURL=${schId} */` : codegen_1.nil;\n}\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it, valid) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid);\n return;\n }\n }\n (0, boolSchema_1.boolOrEmptySchema)(it, valid);\n}\nfunction schemaCxtHasRules({ schema, self }) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (self.RULES.all[key])\n return true;\n return false;\n}\nfunction isSchemaObj(it) {\n return typeof it.schema != \"boolean\";\n}\nfunction subSchemaObjCode(it, valid) {\n const { schema, gen, opts } = it;\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n updateContext(it);\n checkAsyncSchema(it);\n const errsCount = gen.const(\"_errs\", names_1.default.errors);\n typeAndKeywords(it, errsCount);\n // TODO var\n gen.var(valid, (0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n}\nfunction checkKeywords(it) {\n (0, util_1.checkUnknownRules)(it);\n checkRefsAndKeywords(it);\n}\nfunction typeAndKeywords(it, errsCount) {\n if (it.opts.jtd)\n return schemaKeywords(it, [], false, errsCount);\n const types = (0, dataType_1.getSchemaTypes)(it.schema);\n const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types);\n schemaKeywords(it, types, !checkedTypes, errsCount);\n}\nfunction checkRefsAndKeywords(it) {\n const { schema, errSchemaPath, opts, self } = it;\n if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`);\n }\n}\nfunction checkNoDefault(it) {\n const { schema, opts } = it;\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n (0, util_1.checkStrictMode)(it, \"default is ignored in the schema root\");\n }\n}\nfunction updateContext(it) {\n const schId = it.schema[it.opts.schemaId];\n if (schId)\n it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId);\n}\nfunction checkAsyncSchema(it) {\n if (it.schema.$async && !it.schemaEnv.$async)\n throw new Error(\"async schema in sync schema\");\n}\nfunction commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) {\n const msg = schema.$comment;\n if (opts.$comment === true) {\n gen.code((0, codegen_1._) `${names_1.default.self}.logger.log(${msg})`);\n }\n else if (typeof opts.$comment == \"function\") {\n const schemaPath = (0, codegen_1.str) `${errSchemaPath}/$comment`;\n const rootName = gen.scopeValue(\"root\", { ref: schemaEnv.root });\n gen.code((0, codegen_1._) `${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`);\n }\n}\nfunction returnResults(it) {\n const { gen, schemaEnv, validateName, ValidationError, opts } = it;\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if((0, codegen_1._) `${names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._) `new ${ValidationError}(${names_1.default.vErrors})`));\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, names_1.default.vErrors);\n if (opts.unevaluated)\n assignEvaluated(it);\n gen.return((0, codegen_1._) `${names_1.default.errors} === 0`);\n }\n}\nfunction assignEvaluated({ gen, evaluated, props, items }) {\n if (props instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.props`, props);\n if (items instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.items`, items);\n}\nfunction schemaKeywords(it, types, typeErrors, errsCount) {\n const { gen, schema, data, allErrors, opts, self } = it;\n const { RULES } = self;\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", RULES.all.$ref.definition)); // TODO typecast\n return;\n }\n if (!opts.jtd)\n checkStrictTypes(it, types);\n gen.block(() => {\n for (const group of RULES.rules)\n groupKeywords(group);\n groupKeywords(RULES.post);\n });\n function groupKeywords(group) {\n if (!(0, applicability_1.shouldUseGroup)(schema, group))\n return;\n if (group.type) {\n gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers));\n iterateKeywords(it, group);\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else();\n (0, dataType_2.reportTypeError)(it);\n }\n gen.endIf();\n }\n else {\n iterateKeywords(it, group);\n }\n // TODO make it \"ok\" call?\n if (!allErrors)\n gen.if((0, codegen_1._) `${names_1.default.errors} === ${errsCount || 0}`);\n }\n}\nfunction iterateKeywords(it, group) {\n const { gen, schema, opts: { useDefaults }, } = it;\n if (useDefaults)\n (0, defaults_1.assignDefaults)(it, group.type);\n gen.block(() => {\n for (const rule of group.rules) {\n if ((0, applicability_1.shouldUseRule)(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type);\n }\n }\n });\n}\nfunction checkStrictTypes(it, types) {\n if (it.schemaEnv.meta || !it.opts.strictTypes)\n return;\n checkContextTypes(it, types);\n if (!it.opts.allowUnionTypes)\n checkMultipleTypes(it, types);\n checkKeywordTypes(it, it.dataTypes);\n}\nfunction checkContextTypes(it, types) {\n if (!types.length)\n return;\n if (!it.dataTypes.length) {\n it.dataTypes = types;\n return;\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`);\n }\n });\n narrowSchemaTypes(it, types);\n}\nfunction checkMultipleTypes(it, ts) {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\");\n }\n}\nfunction checkKeywordTypes(it, ts) {\n const rules = it.self.RULES.all;\n for (const keyword in rules) {\n const rule = rules[keyword];\n if (typeof rule == \"object\" && (0, applicability_1.shouldUseRule)(it.schema, rule)) {\n const { type } = rule.definition;\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`);\n }\n }\n }\n}\nfunction hasApplicableType(schTs, kwdT) {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"));\n}\nfunction includesType(ts, t) {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"));\n}\nfunction narrowSchemaTypes(it, withTypes) {\n const ts = [];\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t))\n ts.push(t);\n else if (withTypes.includes(\"integer\") && t === \"number\")\n ts.push(\"integer\");\n }\n it.dataTypes = ts;\n}\nfunction strictTypesError(it, msg) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;\n msg += ` at \"${schemaPath}\" (strictTypes)`;\n (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes);\n}\nclass KeywordCxt {\n constructor(it, def, keyword) {\n (0, keyword_1.validateKeywordUsage)(it, def, keyword);\n this.gen = it.gen;\n this.allErrors = it.allErrors;\n this.keyword = keyword;\n this.data = it.data;\n this.schema = it.schema[keyword];\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data;\n this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data);\n this.schemaType = def.schemaType;\n this.parentSchema = it.schema;\n this.params = {};\n this.it = it;\n this.def = def;\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it));\n }\n else {\n this.schemaCode = this.schemaValue;\n if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);\n }\n }\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", names_1.default.errors);\n }\n }\n result(condition, successAction, failAction) {\n this.failResult((0, codegen_1.not)(condition), successAction, failAction);\n }\n failResult(condition, successAction, failAction) {\n this.gen.if(condition);\n if (failAction)\n failAction();\n else\n this.error();\n if (successAction) {\n this.gen.else();\n successAction();\n if (this.allErrors)\n this.gen.endIf();\n }\n else {\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n }\n pass(condition, failAction) {\n this.failResult((0, codegen_1.not)(condition), undefined, failAction);\n }\n fail(condition) {\n if (condition === undefined) {\n this.error();\n if (!this.allErrors)\n this.gen.if(false); // this branch will be removed by gen.optimize\n return;\n }\n this.gen.if(condition);\n this.error();\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n fail$data(condition) {\n if (!this.$data)\n return this.fail(condition);\n const { schemaCode } = this;\n this.fail((0, codegen_1._) `${schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`);\n }\n error(append, errorParams, errorPaths) {\n if (errorParams) {\n this.setParams(errorParams);\n this._error(append, errorPaths);\n this.setParams({});\n return;\n }\n this._error(append, errorPaths);\n }\n _error(append, errorPaths) {\n ;\n (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths);\n }\n $dataError() {\n (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError);\n }\n reset() {\n if (this.errsCount === undefined)\n throw new Error('add \"trackErrors\" to keyword definition');\n (0, errors_1.resetErrorsCount)(this.gen, this.errsCount);\n }\n ok(cond) {\n if (!this.allErrors)\n this.gen.if(cond);\n }\n setParams(obj, assign) {\n if (assign)\n Object.assign(this.params, obj);\n else\n this.params = obj;\n }\n block$data(valid, codeBlock, $dataValid = codegen_1.nil) {\n this.gen.block(() => {\n this.check$data(valid, $dataValid);\n codeBlock();\n });\n }\n check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) {\n if (!this.$data)\n return;\n const { gen, schemaCode, schemaType, def } = this;\n gen.if((0, codegen_1.or)((0, codegen_1._) `${schemaCode} === undefined`, $dataValid));\n if (valid !== codegen_1.nil)\n gen.assign(valid, true);\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data());\n this.$dataError();\n if (valid !== codegen_1.nil)\n gen.assign(valid, false);\n }\n gen.else();\n }\n invalid$data() {\n const { gen, schemaCode, schemaType, def, it } = this;\n return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema());\n function wrong$DataType() {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof codegen_1.Name))\n throw new Error(\"ajv implementation error\");\n const st = Array.isArray(schemaType) ? schemaType : [schemaType];\n return (0, codegen_1._) `${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`;\n }\n return codegen_1.nil;\n }\n function invalid$DataSchema() {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", { ref: def.validateSchema }); // TODO value.code for standalone\n return (0, codegen_1._) `!${validateSchemaRef}(${schemaCode})`;\n }\n return codegen_1.nil;\n }\n }\n subschema(appl, valid) {\n const subschema = (0, subschema_1.getSubschema)(this.it, appl);\n (0, subschema_1.extendSubschemaData)(subschema, this.it, appl);\n (0, subschema_1.extendSubschemaMode)(subschema, appl);\n const nextContext = { ...this.it, ...subschema, items: undefined, props: undefined };\n subschemaCode(nextContext, valid);\n return nextContext;\n }\n mergeEvaluated(schemaCxt, toName) {\n const { it, gen } = this;\n if (!it.opts.unevaluated)\n return;\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName);\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName);\n }\n }\n mergeValidEvaluated(schemaCxt, valid) {\n const { it, gen } = this;\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name));\n return true;\n }\n }\n}\nexports.KeywordCxt = KeywordCxt;\nfunction keywordCode(it, keyword, def, ruleType) {\n const cxt = new KeywordCxt(it, def, keyword);\n if (\"code\" in def) {\n def.code(cxt, ruleType);\n }\n else if (cxt.$data && def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n else if (\"macro\" in def) {\n (0, keyword_1.macroKeywordCode)(cxt, def);\n }\n else if (def.compile || def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n}\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, { dataLevel, dataNames, dataPathArr }) {\n let jsonPointer;\n let data;\n if ($data === \"\")\n return names_1.default.rootData;\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data))\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n jsonPointer = $data;\n data = names_1.default.rootData;\n }\n else {\n const matches = RELATIVE_JSON_POINTER.exec($data);\n if (!matches)\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n const up = +matches[1];\n jsonPointer = matches[2];\n if (jsonPointer === \"#\") {\n if (up >= dataLevel)\n throw new Error(errorMsg(\"property/index\", up));\n return dataPathArr[dataLevel - up];\n }\n if (up > dataLevel)\n throw new Error(errorMsg(\"data\", up));\n data = dataNames[dataLevel - up];\n if (!jsonPointer)\n return data;\n }\n let expr = data;\n const segments = jsonPointer.split(\"/\");\n for (const segment of segments) {\n if (segment) {\n data = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`;\n expr = (0, codegen_1._) `${expr} && ${data}`;\n }\n }\n return expr;\n function errorMsg(pointerType, up) {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`;\n }\n}\nexports.getData = getData;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ajv_1 = require(\"ajv\");\nconst codegen_1 = require(\"ajv/dist/compile/codegen\");\nconst code_1 = require(\"ajv/dist/compile/codegen/code\");\nconst validate_1 = require(\"ajv/dist/compile/validate\");\nconst errors_1 = require(\"ajv/dist/compile/errors\");\nconst names_1 = require(\"ajv/dist/compile/names\");\nconst keyword = \"errorMessage\";\nconst used = new ajv_1.Name(\"emUsed\");\nconst KEYWORD_PROPERTY_PARAMS = {\n required: \"missingProperty\",\n dependencies: \"property\",\n dependentRequired: \"property\",\n};\nconst INTERPOLATION = /\\$\\{[^}]+\\}/;\nconst INTERPOLATION_REPLACE = /\\$\\{([^}]+)\\}/g;\nconst EMPTY_STR = /^\"\"\\s*\\+\\s*|\\s*\\+\\s*\"\"$/g;\nfunction errorMessage(options) {\n return {\n keyword,\n schemaType: [\"string\", \"object\"],\n post: true,\n code(cxt) {\n const { gen, data, schema, schemaValue, it } = cxt;\n if (it.createErrors === false)\n return;\n const sch = schema;\n const instancePath = codegen_1.strConcat(names_1.default.instancePath, it.errorPath);\n gen.if(ajv_1._ `${names_1.default.errors} > 0`, () => {\n if (typeof sch == \"object\") {\n const [kwdPropErrors, kwdErrors] = keywordErrorsConfig(sch);\n if (kwdErrors)\n processKeywordErrors(kwdErrors);\n if (kwdPropErrors)\n processKeywordPropErrors(kwdPropErrors);\n processChildErrors(childErrorsConfig(sch));\n }\n const schMessage = typeof sch == \"string\" ? sch : sch._;\n if (schMessage)\n processAllErrors(schMessage);\n if (!options.keepErrors)\n removeUsedErrors();\n });\n function childErrorsConfig({ properties, items }) {\n const errors = {};\n if (properties) {\n errors.props = {};\n for (const p in properties)\n errors.props[p] = [];\n }\n if (items) {\n errors.items = {};\n for (let i = 0; i < items.length; i++)\n errors.items[i] = [];\n }\n return errors;\n }\n function keywordErrorsConfig(emSchema) {\n let propErrors;\n let errors;\n for (const k in emSchema) {\n if (k === \"properties\" || k === \"items\")\n continue;\n const kwdSch = emSchema[k];\n if (typeof kwdSch == \"object\") {\n propErrors || (propErrors = {});\n const errMap = (propErrors[k] = {});\n for (const p in kwdSch)\n errMap[p] = [];\n }\n else {\n errors || (errors = {});\n errors[k] = [];\n }\n }\n return [propErrors, errors];\n }\n function processKeywordErrors(kwdErrors) {\n const kwdErrs = gen.const(\"emErrors\", ajv_1.stringify(kwdErrors));\n const templates = gen.const(\"templates\", getTemplatesCode(kwdErrors, schema));\n gen.forOf(\"err\", names_1.default.vErrors, (err) => gen.if(matchKeywordError(err, kwdErrs), () => gen.code(ajv_1._ `${kwdErrs}[${err}.keyword].push(${err})`).assign(ajv_1._ `${err}.${used}`, true)));\n const { singleError } = options;\n if (singleError) {\n const message = gen.let(\"message\", ajv_1._ `\"\"`);\n const paramsErrors = gen.let(\"paramsErrors\", ajv_1._ `[]`);\n loopErrors((key) => {\n gen.if(message, () => gen.code(ajv_1._ `${message} += ${typeof singleError == \"string\" ? singleError : \";\"}`));\n gen.code(ajv_1._ `${message} += ${errMessage(key)}`);\n gen.assign(paramsErrors, ajv_1._ `${paramsErrors}.concat(${kwdErrs}[${key}])`);\n });\n errors_1.reportError(cxt, { message, params: ajv_1._ `{errors: ${paramsErrors}}` });\n }\n else {\n loopErrors((key) => errors_1.reportError(cxt, {\n message: errMessage(key),\n params: ajv_1._ `{errors: ${kwdErrs}[${key}]}`,\n }));\n }\n function loopErrors(body) {\n gen.forIn(\"key\", kwdErrs, (key) => gen.if(ajv_1._ `${kwdErrs}[${key}].length`, () => body(key)));\n }\n function errMessage(key) {\n return ajv_1._ `${key} in ${templates} ? ${templates}[${key}]() : ${schemaValue}[${key}]`;\n }\n }\n function processKeywordPropErrors(kwdPropErrors) {\n const kwdErrs = gen.const(\"emErrors\", ajv_1.stringify(kwdPropErrors));\n const templatesCode = [];\n for (const k in kwdPropErrors) {\n templatesCode.push([\n k,\n getTemplatesCode(kwdPropErrors[k], schema[k]),\n ]);\n }\n const templates = gen.const(\"templates\", gen.object(...templatesCode));\n const kwdPropParams = gen.scopeValue(\"obj\", {\n ref: KEYWORD_PROPERTY_PARAMS,\n code: ajv_1.stringify(KEYWORD_PROPERTY_PARAMS),\n });\n const propParam = gen.let(\"emPropParams\");\n const paramsErrors = gen.let(\"emParamsErrors\");\n gen.forOf(\"err\", names_1.default.vErrors, (err) => gen.if(matchKeywordError(err, kwdErrs), () => {\n gen.assign(propParam, ajv_1._ `${kwdPropParams}[${err}.keyword]`);\n gen.assign(paramsErrors, ajv_1._ `${kwdErrs}[${err}.keyword][${err}.params[${propParam}]]`);\n gen.if(paramsErrors, () => gen.code(ajv_1._ `${paramsErrors}.push(${err})`).assign(ajv_1._ `${err}.${used}`, true));\n }));\n gen.forIn(\"key\", kwdErrs, (key) => gen.forIn(\"keyProp\", ajv_1._ `${kwdErrs}[${key}]`, (keyProp) => {\n gen.assign(paramsErrors, ajv_1._ `${kwdErrs}[${key}][${keyProp}]`);\n gen.if(ajv_1._ `${paramsErrors}.length`, () => {\n const tmpl = gen.const(\"tmpl\", ajv_1._ `${templates}[${key}] && ${templates}[${key}][${keyProp}]`);\n errors_1.reportError(cxt, {\n message: ajv_1._ `${tmpl} ? ${tmpl}() : ${schemaValue}[${key}][${keyProp}]`,\n params: ajv_1._ `{errors: ${paramsErrors}}`,\n });\n });\n }));\n }\n function processChildErrors(childErrors) {\n const { props, items } = childErrors;\n if (!props && !items)\n return;\n const isObj = ajv_1._ `typeof ${data} == \"object\"`;\n const isArr = ajv_1._ `Array.isArray(${data})`;\n const childErrs = gen.let(\"emErrors\");\n let childKwd;\n let childProp;\n const templates = gen.let(\"templates\");\n if (props && items) {\n childKwd = gen.let(\"emChildKwd\");\n gen.if(isObj);\n gen.if(isArr, () => {\n init(items, schema.items);\n gen.assign(childKwd, ajv_1.str `items`);\n }, () => {\n init(props, schema.properties);\n gen.assign(childKwd, ajv_1.str `properties`);\n });\n childProp = ajv_1._ `[${childKwd}]`;\n }\n else if (items) {\n gen.if(isArr);\n init(items, schema.items);\n childProp = ajv_1._ `.items`;\n }\n else if (props) {\n gen.if(codegen_1.and(isObj, codegen_1.not(isArr)));\n init(props, schema.properties);\n childProp = ajv_1._ `.properties`;\n }\n gen.forOf(\"err\", names_1.default.vErrors, (err) => ifMatchesChildError(err, childErrs, (child) => gen.code(ajv_1._ `${childErrs}[${child}].push(${err})`).assign(ajv_1._ `${err}.${used}`, true)));\n gen.forIn(\"key\", childErrs, (key) => gen.if(ajv_1._ `${childErrs}[${key}].length`, () => {\n errors_1.reportError(cxt, {\n message: ajv_1._ `${key} in ${templates} ? ${templates}[${key}]() : ${schemaValue}${childProp}[${key}]`,\n params: ajv_1._ `{errors: ${childErrs}[${key}]}`,\n });\n gen.assign(ajv_1._ `${names_1.default.vErrors}[${names_1.default.errors}-1].instancePath`, ajv_1._ `${instancePath} + \"/\" + ${key}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")`);\n }));\n gen.endIf();\n function init(children, msgs) {\n gen.assign(childErrs, ajv_1.stringify(children));\n gen.assign(templates, getTemplatesCode(children, msgs));\n }\n }\n function processAllErrors(schMessage) {\n const errs = gen.const(\"emErrs\", ajv_1._ `[]`);\n gen.forOf(\"err\", names_1.default.vErrors, (err) => gen.if(matchAnyError(err), () => gen.code(ajv_1._ `${errs}.push(${err})`).assign(ajv_1._ `${err}.${used}`, true)));\n gen.if(ajv_1._ `${errs}.length`, () => errors_1.reportError(cxt, {\n message: templateExpr(schMessage),\n params: ajv_1._ `{errors: ${errs}}`,\n }));\n }\n function removeUsedErrors() {\n const errs = gen.const(\"emErrs\", ajv_1._ `[]`);\n gen.forOf(\"err\", names_1.default.vErrors, (err) => gen.if(ajv_1._ `!${err}.${used}`, () => gen.code(ajv_1._ `${errs}.push(${err})`)));\n gen.assign(names_1.default.vErrors, errs).assign(names_1.default.errors, ajv_1._ `${errs}.length`);\n }\n function matchKeywordError(err, kwdErrs) {\n return codegen_1.and(ajv_1._ `${err}.keyword !== ${keyword}`, ajv_1._ `!${err}.${used}`, ajv_1._ `${err}.instancePath === ${instancePath}`, ajv_1._ `${err}.keyword in ${kwdErrs}`, \n // TODO match the end of the string?\n ajv_1._ `${err}.schemaPath.indexOf(${it.errSchemaPath}) === 0`, ajv_1._ `/^\\\\/[^\\\\/]*$/.test(${err}.schemaPath.slice(${it.errSchemaPath.length}))`);\n }\n function ifMatchesChildError(err, childErrs, thenBody) {\n gen.if(codegen_1.and(ajv_1._ `${err}.keyword !== ${keyword}`, ajv_1._ `!${err}.${used}`, ajv_1._ `${err}.instancePath.indexOf(${instancePath}) === 0`), () => {\n const childRegex = gen.scopeValue(\"pattern\", {\n ref: /^\\/([^/]*)(?:\\/|$)/,\n code: ajv_1._ `new RegExp(\"^\\\\\\/([^/]*)(?:\\\\\\/|$)\")`,\n });\n const matches = gen.const(\"emMatches\", ajv_1._ `${childRegex}.exec(${err}.instancePath.slice(${instancePath}.length))`);\n const child = gen.const(\"emChild\", ajv_1._ `${matches} && ${matches}[1].replace(/~1/g, \"/\").replace(/~0/g, \"~\")`);\n gen.if(ajv_1._ `${child} !== undefined && ${child} in ${childErrs}`, () => thenBody(child));\n });\n }\n function matchAnyError(err) {\n return codegen_1.and(ajv_1._ `${err}.keyword !== ${keyword}`, ajv_1._ `!${err}.${used}`, codegen_1.or(ajv_1._ `${err}.instancePath === ${instancePath}`, codegen_1.and(ajv_1._ `${err}.instancePath.indexOf(${instancePath}) === 0`, ajv_1._ `${err}.instancePath[${instancePath}.length] === \"/\"`)), ajv_1._ `${err}.schemaPath.indexOf(${it.errSchemaPath}) === 0`, ajv_1._ `${err}.schemaPath[${it.errSchemaPath}.length] === \"/\"`);\n }\n function getTemplatesCode(keys, msgs) {\n const templatesCode = [];\n for (const k in keys) {\n const msg = msgs[k];\n if (INTERPOLATION.test(msg))\n templatesCode.push([k, templateFunc(msg)]);\n }\n return gen.object(...templatesCode);\n }\n function templateExpr(msg) {\n if (!INTERPOLATION.test(msg))\n return ajv_1.stringify(msg);\n return new code_1._Code(code_1.safeStringify(msg)\n .replace(INTERPOLATION_REPLACE, (_s, ptr) => `\" + JSON.stringify(${validate_1.getData(ptr, it)}) + \"`)\n .replace(EMPTY_STR, \"\"));\n }\n function templateFunc(msg) {\n return ajv_1._ `function(){return ${templateExpr(msg)}}`;\n }\n },\n metaSchema: {\n anyOf: [\n { type: \"string\" },\n {\n type: \"object\",\n properties: {\n properties: { $ref: \"#/$defs/stringMap\" },\n items: { $ref: \"#/$defs/stringList\" },\n required: { $ref: \"#/$defs/stringOrMap\" },\n dependencies: { $ref: \"#/$defs/stringOrMap\" },\n },\n additionalProperties: { type: \"string\" },\n },\n ],\n $defs: {\n stringMap: {\n type: \"object\",\n additionalProperties: { type: \"string\" },\n },\n stringOrMap: {\n anyOf: [{ type: \"string\" }, { $ref: \"#/$defs/stringMap\" }],\n },\n stringList: { type: \"array\", items: { type: \"string\" } },\n },\n },\n };\n}\nconst ajvErrors = (ajv, options = {}) => {\n if (!ajv.opts.allErrors)\n throw new Error(\"ajv-errors: Ajv option allErrors must be true\");\n if (ajv.opts.jsPropertySyntax) {\n throw new Error(\"ajv-errors: ajv option jsPropertySyntax is not supported\");\n }\n return ajv.addKeyword(errorMessage(options));\n};\nexports.default = ajvErrors;\nmodule.exports = ajvErrors;\nmodule.exports.default = ajvErrors;\n//# sourceMappingURL=index.js.map","import{validateFieldsNatively as r,toNestErrors as e}from\"@hookform/resolvers\";import o from\"ajv\";import a from\"ajv-errors\";import{appendErrors as s}from\"react-hook-form\";var t=function(r,e){for(var o={},a=function(r){\"required\"===r.keyword&&(r.instancePath+=\"/\"+r.params.missingProperty);var a=r.instancePath.substring(1).replace(/\\//g,\".\");if(o[a]||(o[a]={message:r.message,type:r.keyword}),e){var t=o[a].types,i=t&&t[r.keyword];o[a]=s(a,e,o,r.keyword,i?[].concat(i,r.message||\"\"):r.message)}},t=function(){var e=r[i];\"errorMessage\"===e.keyword?e.params.errors.forEach(function(r){r.message=e.message,a(r)}):a(e)},i=0;i<r.length;i+=1)t();return o},i=function(s,i,n){return void 0===n&&(n={}),function(m,c,v){try{var l=new o(Object.assign({},{allErrors:!0,validateSchema:!0},i));a(l);var u=l.compile(Object.assign({$async:n&&\"async\"===n.mode},s)),f=u(m);return v.shouldUseNativeValidation&&r({},v),Promise.resolve(f?{values:m,errors:{}}:{values:{},errors:e(t(u.errors,!v.shouldUseNativeValidation&&\"all\"===v.criteriaMode),v)})}catch(r){return Promise.reject(r)}}};export{i as ajvResolver};\n//# sourceMappingURL=ajv.module.js.map\n","import React from 'react';\nimport { useForm, Controller } from 'react-hook-form';\nimport { ajvResolver } from '@hookform/resolvers/ajv';\nimport { XCircle } from '@phosphor-icons/react';\n\nimport type { ActionInputFormBlock, ActionInputs, ActionInputsSchema } from '../types';\n\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Textarea } from '@/components/ui/textarea';\nimport { SimpleSelect } from '@/components/select';\nimport { cn } from '@/lib/utils';\nimport { DatePicker } from '@/components/date-picker';\n\nexport interface ActionInputFormBlockProps {\n block: ActionInputFormBlock;\n}\n\n/**\n * Patches the schema for AJV resolver to correctly validate required string fields.\n *\n * This function addresses a limitation in AJV validation:\n * By default, AJV only checks if a field exists but doesn't consider empty strings invalid.\n * For form validation, we need to ensure required string fields are non-empty.\n * This function adds `minLength: 1` to all required string fields that don't already\n * have a minLength constraint, ensuring empty strings fail validation.\n * see https://github.com/react-hook-form/resolvers/blob/master/README.md#ajv\n *\n * @param schema - The original JSON schema to enhance\n * @returns A new schema with minLength constraints added to required string fields\n */\nexport function patchSchemaForAjvResolver(schema: ActionInputsSchema): ActionInputsSchema {\n // Use structuredClone for proper deep copying of all data types\n const newSchema = structuredClone(schema);\n\n newSchema.errorMessage = 'This field is required';\n\n for (const [key, property] of Object.entries((newSchema.properties ?? {}) as Record<string, any>)) {\n if (newSchema.required?.includes(key) && property.type === 'string') {\n property.minLength = property.minLength || 1;\n property.errorMessage = property.errorMessage || {\n minLength: 'This field is required',\n };\n }\n if (property.type === 'number') {\n property.errorMessage = property.errorMessage || {\n type: 'Please enter a valid number',\n };\n }\n }\n\n return newSchema;\n}\n\nexport function ActionInputFormBlock({ block }: ActionInputFormBlockProps) {\n const formSchema = React.useMemo(() => {\n return patchSchemaForAjvResolver(block.schema);\n }, [block.schema]);\n\n const { inputs = [], initialValues, state } = block;\n\n const isReady = state === 'ready';\n const isProcessing = state === 'processing';\n const isCompleted = state === 'completed';\n\n const defaultValues = Object.entries(initialValues).reduce((acc, [key, value]) => {\n if (typeof value === 'string' && value.trim() === '') {\n return acc;\n }\n acc[key] = value;\n\n return acc;\n }, {} as ActionInputs);\n\n const {\n register,\n control,\n handleSubmit,\n formState: { errors },\n } = useForm<ActionInputs>({\n defaultValues,\n resolver: ajvResolver(formSchema, {\n removeAdditional: true,\n }),\n });\n\n const onSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (block.onSubmit) {\n void handleSubmit(block.onSubmit)(e);\n }\n\n return false;\n };\n\n const formInputs = inputs.map((input) => {\n const { name, required, schema: inputSchema, ui } = input;\n const labelText = `${inputSchema.title ?? name}${required ? '*' : ''}`;\n const description = inputSchema.description;\n const error = errors[name];\n\n const errorMessage = error?.message;\n\n let descriptionText: React.ReactNode = description ? String(description) : null;\n\n if (error) {\n // if there is a description, show it and the error message in italic\n descriptionText = description ? (\n <>\n {description} - <span className=\"italic\">{errorMessage}</span>\n </>\n ) : (\n // if there is no description, just show the error message\n errorMessage\n );\n }\n\n const inputType = ui?.type || 'text';\n const registerOptions = {\n valueAsNumber: inputType === 'number' ? true : undefined,\n };\n\n return (\n <div key={name} className=\"py-2 flex flex-col gap-2\">\n <Label htmlFor={name}>{labelText}</Label>\n {inputType === 'datepicker' ? (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <DatePicker\n date={field.value && typeof field.value === 'string' ? new Date(field.value) : undefined}\n setDate={(date) => {\n if (date) {\n field.onChange(date.toISOString());\n } else {\n field.onChange(undefined);\n }\n }}\n className={cn('!bg-transparent', { 'border-red-600': !!error })}\n />\n )}\n />\n ) : inputType === 'textarea' ? (\n <Textarea\n disabled={!isReady}\n rows={2}\n maxLength={10000}\n className={cn('!bg-transparent', { 'border-red-600': !!error })}\n {...register(name, registerOptions)}\n aria-invalid={!!error}\n aria-required={required}\n />\n ) : inputType === 'select' ? (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <SimpleSelect\n options={\n inputSchema.oneOf?.map((option) => ({\n label: option.title,\n value: option.const,\n })) ?? []\n }\n className={cn('!bg-transparent', { 'border-red-600': !!error })}\n value={field.value as string}\n onChange={(value) => field.onChange(value)}\n />\n )}\n />\n ) : (\n <Input\n type={inputType}\n disabled={!isReady}\n className={cn({ 'border-red-600': !!error })}\n {...register(name, registerOptions)}\n aria-invalid={!!error}\n aria-required={required}\n />\n )}\n {descriptionText && (\n <span\n className={cn('flex text-sm leading-6 font-medium gap-1.5 items-center', {\n 'text-red-600 dark:text-white': !!error,\n })}\n >\n {error && <XCircle weight=\"fill\" size={20} className=\"inline-block align-middle text-red-600\" />}\n <span>{descriptionText}</span>\n </span>\n )}\n </div>\n );\n });\n\n return (\n <div className=\"relative\">\n <form className=\"flex flex-col justify-stretch\" onSubmit={onSubmit}>\n {formInputs}\n <div className=\"mt-4\">\n <Button type=\"submit\" variant=\"dark\" disabled={!isReady} className=\"w-full rounded-s\">\n {isReady && 'Submit'}\n {isProcessing && 'Processing...'}\n {isCompleted && 'Completed'}\n </Button>\n </div>\n </form>\n </div>\n );\n}\n","import type { ActionButtonsBlock as ActionButtonsBlockType } from '../types';\n\n// eslint-disable-next-line no-unused-vars\nexport function ActionButtonsBlock({ block: _block }: { block: ActionButtonsBlockType }) {\n return null;\n}\n\nexport default ActionButtonsBlock;\n","import React from 'react';\n\nimport type { MarkdownTextBlock, RedirectRule, AnswerState } from '../types';\n\nimport { FormattedMessage } from '@/components/markdown/FormattedMessage';\n\nexport interface MarkdownTextBlockProps {\n block: MarkdownTextBlock;\n redirectRules?: RedirectRule[];\n state: AnswerState;\n}\n\nexport function MarkdownTextBlock({ block, redirectRules, state }: MarkdownTextBlockProps) {\n if (!block.text || block.text.trim() === '') {\n return (\n <div className=\"w-full py-4\">\n <div className=\"space-y-4\">\n <div className=\"space-y-3\">\n <div className=\"h-4 rounded w-3/4 shimmer\" />\n <div className=\"h-4 rounded w-full shimmer\" />\n <div className=\"h-4 rounded w-5/6 shimmer\" />\n </div>\n </div>\n </div>\n );\n }\n\n const { text } = block;\n\n return (\n <div className=\"w-full\">\n <div className=\"prose prose-sm max-w-none text-foreground\">\n <FormattedMessage\n message={{\n content: text,\n }}\n redirectRules={redirectRules}\n isStreaming={state === 'streaming'}\n />\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { ActionInputFormBlock } from './blocks/ActionInputForm';\nimport { ActionButtonsBlock } from './blocks/ActionButtons';\nimport { MarkdownTextBlock } from './blocks/MarkdownText';\nimport type { AnswerBlock, AnswerState, RedirectRule } from './types';\n\nexport interface AnswerBlockProps {\n block: AnswerBlock;\n redirectRules?: RedirectRule[];\n state: AnswerState;\n}\n\nexport function AnswerBlock({ block, redirectRules, state }: AnswerBlockProps) {\n switch (block.type) {\n case 'markdown-text':\n return <MarkdownTextBlock block={block} redirectRules={redirectRules} state={state} />;\n case 'action-buttons':\n return <ActionButtonsBlock block={block} />;\n case 'action-input-form':\n return <ActionInputFormBlock block={block} />;\n default:\n return null;\n }\n}\n","import { createId } from '@paralleldrive/cuid2';\n\nimport {\n ActionButtonsBlock,\n ActionInputFormBlock,\n ActionInputs,\n ActionInput,\n AnswerBlock,\n MarkdownTextBlock,\n ActionInputsSchema,\n} from '../types';\n\nexport const markdownTextBlock = ({ text = '' }: { text?: string } = {}): MarkdownTextBlock => ({\n id: createId(),\n type: 'markdown-text',\n text,\n});\n\nexport const actionInputFormBlock = ({\n actionId,\n initialValues,\n onSubmit,\n inputs,\n schema,\n}: {\n actionId: string;\n initialValues: ActionInputs;\n onSubmit: (inputs: ActionInputs) => void;\n inputs: ActionInput[];\n schema: ActionInputsSchema;\n}): ActionInputFormBlock => ({\n id: createId(),\n type: 'action-input-form',\n state: 'ready',\n actionId,\n initialValues,\n onSubmit,\n inputs,\n schema,\n});\n\nexport const actionButtonsBlock = (): ActionButtonsBlock => ({\n id: createId(),\n type: 'action-buttons',\n});\n\nexport const isMarkdownTextBlock = (block: AnswerBlock): block is MarkdownTextBlock => {\n return block.type === 'markdown-text';\n};\n\nexport const isActionInputFormBlock = (block: AnswerBlock): block is ActionInputFormBlock => {\n return block.type === 'action-input-form';\n};\n\nexport const isActionButtonsBlock = (block: AnswerBlock): block is ActionButtonsBlock => {\n return block.type === 'action-buttons';\n};\n","import React, { Suspense, lazy, memo, forwardRef } from 'react';\nimport { type Icon, type IconProps } from '@phosphor-icons/react';\n\ninterface PhosphorIconProps extends IconProps {\n iconName: string;\n}\n\n/**\n * A flexible icon component that supports both Phosphor icons and image-based icons.\n *\n * The component uses dynamic imports to lazy load Phosphor icons, reducing the initial\n * bundle size by only loading icons when they're needed.\n *\n * @component\n * @example\n * // Using a Phosphor icon\n * <Icon iconName=\"House\" size={24} />\n *\n * // Using an image icon\n * <Icon iconPath=\"/path/to/icon.svg\" />\n */\n\nconst PhosphorIcon = forwardRef<SVGSVGElement, PhosphorIconProps>(({ iconName, ...props }, ref) => {\n const IconComponent = lazy(() =>\n import('@phosphor-icons/react').then((module) => {\n const icons = module as unknown as Record<string, Icon>;\n\n return { default: icons[iconName] };\n }),\n );\n\n return (\n <Suspense fallback={<></>}>\n <IconComponent {...props} ref={ref} />\n </Suspense>\n );\n});\n\nPhosphorIcon.displayName = 'PhosphorIcon';\n\nconst Icon = ({ iconPath }: { iconPath: string }) => {\n return <img src={iconPath} alt=\"icon\" />;\n};\n\n// Export a memoized version of the PhosphorIcon component\nexport const MemoizedIcon = memo(PhosphorIcon);\nexport { PhosphorIcon as Icon };\n","import React, { Fragment } from 'react';\nimport { motion } from 'framer-motion';\n\nimport { NextBestAction } from './types';\nimport { MemoizedIcon } from '../ui/icon';\nimport { Button } from '../ui/button';\n\nconst MotionButton = motion(Button);\n\ninterface NextBestActionsProps {\n nextBestActions: NextBestAction[];\n onActionClick: (action: NextBestAction) => void;\n}\n\nconst NextBestActions: React.FC<NextBestActionsProps> = ({ nextBestActions, onActionClick }) => {\n if (!nextBestActions.length) return null;\n\n return (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -20 }}\n className=\"w-full\"\n >\n <div className=\"rounded-lg overflow-hidden bg-card border divide-y divide-dark-300\">\n {nextBestActions.map((action, index) => {\n const handleClick = () => {\n onActionClick(action);\n };\n\n const className =\n 'w-full h-12 py-2 px-4 inline-flex items-center justify-center gap-2 whitespace-nowrap text-base font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-6 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground';\n\n // create an key for each action based on label and index\n const key = `${action.label}-${index}`.replace(/\\s+/g, '-');\n\n switch (action.type) {\n case 'email':\n return (\n <motion.a\n key={key}\n initial={{ opacity: 0, x: -20 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: index * 0.1 }}\n href={`mailto:${action.value}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={className}\n onClick={() => handleClick()}\n >\n {action.icon && <MemoizedIcon iconName={action.icon} />}\n <span className=\"flex-grow\">{action.label}</span>\n <MemoizedIcon iconName=\"ArrowSquareOut\" />\n </motion.a>\n );\n case 'link':\n return (\n <motion.a\n key={key}\n initial={{ opacity: 0, x: -20 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: index * 0.1 }}\n href={action.value}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={className}\n onClick={() => handleClick()}\n >\n {action.icon && <MemoizedIcon iconName={action.icon} />}\n <span className=\"flex-grow\">{action.label}</span>\n <MemoizedIcon iconName=\"ArrowSquareOut\" />\n </motion.a>\n );\n case 'phone':\n return (\n <motion.a\n key={key}\n initial={{ opacity: 0, x: -20 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: index * 0.1 }}\n href={`tel:${action.value}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={className}\n onClick={() => handleClick()}\n >\n {action.icon && <MemoizedIcon iconName={action.icon} />}\n <span className=\"flex-grow\">{action.label}</span>\n <MemoizedIcon iconName=\"ArrowSquareOut\" />\n </motion.a>\n );\n default:\n return (\n <Fragment key={key}>\n <MotionButton\n initial={{ opacity: 0, x: -20 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: index * 0.1 }}\n className=\"w-full text-left h-12 rounded-none [&_svg]:pointer-events-none [&_svg]:size-6 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground text-base font-medium\"\n variant=\"ghost\"\n onClick={() => handleClick()}\n >\n <MemoizedIcon iconName=\"ArrowCircleRight\" />\n <span className=\"flex-grow\">{action.label}</span>\n <MemoizedIcon iconName=\"ArrowSquareOut\" />\n </MotionButton>\n </Fragment>\n );\n }\n })}\n </div>\n </motion.div>\n );\n};\n\nexport { NextBestActions };\n","/* eslint-disable no-unused-vars */\nimport type { JSONSchemaType } from 'ajv';\n\nimport type { FeatureFlags } from '@/lib/feature-flags';\n\nexport type JSONSchema<T> = JSONSchemaType<T>;\n\nexport interface TextConfig {\n headerText?: string;\n searchPlaceholder?: string;\n attachImageText?: string;\n allDocumentsText?: string;\n loadingSearchText?: string;\n loadingAnswerText?: string;\n errorText?: string;\n followUpPlaceholder?: string;\n positiveAnswerText?: string;\n negativeAnswerText?: string;\n suggestionsTitle?: string;\n uncertaintyFallbackText?: Record<string, string>;\n}\n\nexport enum ActionType {\n CallPhone = 'call_phone',\n OpenUrl = 'open_url',\n SendEmail = 'send_email',\n RunCallback = 'run_callback',\n}\n\n// UI feedback type\nexport type FeedbackResponse = 'accept' | 'reject';\n\n// API feedback type\nexport type APIFeedbackResponse = 'positive' | 'negative';\n\n/**\n * Defines a URL redirect rule with pattern matching\n * @example { source: '/knowledge/:id/:path', destination: '/knowledge/test/:path' }\n */\nexport type RedirectRule = {\n source: string; // Pattern with parameters like '/knowledge/:id/:path'\n destination: string; // Destination with parameter placeholders like '/knowledge/test/:path'\n};\n\nexport type MarkdownTextBlock = {\n id: string;\n type: 'markdown-text';\n text: string;\n};\n\nexport type ActionButtonsBlock = {\n id: string;\n type: 'action-buttons';\n};\n\nexport type ActionInputFormBlock = {\n id: string;\n type: 'action-input-form';\n state: 'ready' | 'processing' | 'completed';\n actionId: string;\n initialValues: ActionInputs;\n schema: ActionInputsSchema;\n onSubmit?: (inputs: ActionInputs) => void;\n inputs: ActionInput[];\n};\n\nexport type ActionInput = {\n name: string;\n required: boolean;\n schema: {\n type: string;\n title: string;\n description: string;\n oneOf?: {\n const: string;\n title: string;\n }[];\n };\n type: string;\n ui: {\n type: string;\n };\n};\nexport type AnswerBlock = MarkdownTextBlock | ActionButtonsBlock | ActionInputFormBlock;\n\nexport type CreateAnswerBlock = Omit<MarkdownTextBlock, 'id'> | Omit<ActionButtonsBlock, 'id'> | Omit<ActionInputFormBlock, 'id'>;\n\nexport type AnswerState = 'fetching-search-results' | 'fetching-stream' | 'streaming' | 'getting-action-inputs' | 'completed';\n\nexport type ActionClick = {\n action: NextBestAction;\n searchQueryId: string;\n query: string;\n answer: string;\n};\n\nexport type Action = {\n id: string;\n type: ActionType;\n action: {\n version: string;\n options: {\n title?: string;\n [key: string]: any;\n };\n };\n};\n\nexport interface Answer {\n id: string;\n state: AnswerState;\n question: string;\n blocks: AnswerBlock[];\n searchResults?: SearchResult[];\n followUpQuestions?: string[];\n searchQueryId?: string;\n feedback?: FeedbackResponse;\n isUncertain?: boolean;\n uncertaintyLanguage?: string | null;\n uncertaintyFallbackText?: string;\n searchIntentId?: string;\n actions?: Action[];\n}\n\nexport type ActionInputValue = string | number | boolean | null;\n\nexport type ActionInputs = Record<string, ActionInputValue>;\n\nexport type ActionInputsSchema = JSONSchemaType<ActionInputs>;\n\nexport type AnswerStreamRequest =\n | {\n type: 'generate-for-query';\n searchQueryId: string;\n conversationId?: string;\n }\n | {\n type: 'invoke-action';\n searchIntentId: string;\n actionId: string;\n parameters: ActionInputs;\n conversationId?: string;\n };\n\nexport type ClientExecutionResult = {\n success: boolean;\n data?: Record<string, any>;\n reason?: string;\n};\n\nexport interface SearchResult {\n id: string;\n title: string;\n url: string;\n}\n\nexport interface SearchResponse {\n results: SearchResult[];\n searchQueryId: string;\n}\n\nexport interface FollowUpQuestionsResponse {\n questions: string[];\n}\n\nexport interface Collection {\n id: string;\n name: string;\n}\n\nexport interface Suggestion {\n id: string;\n question: string;\n conversationId?: string;\n messageCount?: number;\n}\n\nexport interface ChatSearchProps {\n suggestions?: Suggestion[];\n collections?: Array<{ id: string; name: string }>;\n selectedCollectionId?: string;\n onCollectionChange?: (collectionId: string) => void;\n searchEndpoint: string;\n answerEndpoint: string;\n answerStreamEndpoint: string;\n feedbackEndpoint?: string;\n feedbackReasonEndpoint?: string;\n loadConversationEndpoint?: string;\n followUpQuestionsEndpoint?: string;\n autocompleteEndpoint?: string;\n disableFollowUpQuestions?: boolean;\n disableImageAttachment?: boolean;\n disableFeedback?: boolean;\n disclaimer?: string;\n offset?: number;\n headers?: Record<string, string>;\n textConfig?: TextConfig;\n searchPath?: string;\n className?: string;\n onToggleSizeButtonClick?: () => void;\n trackEvent?: (eventName: string, data?: Record<string, any>) => void;\n featureFlags?: FeatureFlags;\n onCloseWidget?: () => void;\n isWidgetMode?: boolean;\n nextBestActions?: NextBestAction[];\n bodyActionButtons?: NextBestAction[];\n onNextBestActionClick?: ({\n action,\n searchQueryId,\n query,\n answer,\n }: {\n action: NextBestAction;\n searchQueryId: string;\n query: string;\n answer: string;\n }) => void;\n userData?: Record<string, unknown> | null;\n redirectRules?: RedirectRule[];\n secretAttributes?: string;\n allowedRegions?: string[];\n}\n\nexport interface ChatSearchState {\n showResults: boolean;\n answers: Answer[];\n isLoading: boolean;\n error?: string;\n}\n\ntype TextChunk = {\n type: 'answer-text-chunk';\n content: string;\n};\n\ntype GetActionInputs = {\n type: 'get-action-inputs';\n schema: ActionInputsSchema;\n values: Record<string, string | number | boolean | null>;\n searchIntentId: string;\n actionId: string;\n inputs: ActionInput[];\n actionType: string;\n actionKey: string;\n};\n\nexport type ActionButtons = {\n type: 'action-buttons';\n actions: Array<{\n id: string;\n type: string;\n action: {\n version: string;\n options: {\n title?: string;\n phoneNumber?: string;\n to?: string;\n [key: string]: any;\n };\n };\n }>;\n searchIntentId: string;\n};\n\ntype Done = {\n type: 'done';\n};\n\nexport type AnswerStreamEvent = TextChunk | GetActionInputs | ActionButtons | Done;\n\ntype UrlString = string & { __url: never };\n\nconst isUrlString = (value: string): value is UrlString => {\n const urlRegExp = /^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/i;\n\n return urlRegExp.test(value);\n};\n\nexport const validateUrlString = (value: string): UrlString => {\n if (!isUrlString(value)) {\n throw new Error(`Invalid URL: ${value}`);\n }\n\n return value as UrlString;\n};\n\nexport enum NextBestActionType {\n Link = 'link',\n Email = 'email',\n Phone = 'phone',\n Callback = 'callback',\n Function = 'function',\n}\n\nexport type NextBestAction = {\n id?: string;\n label: string;\n type: NextBestActionType;\n icon?: string | UrlString;\n value: any;\n};\n\nexport type SearchQueryAttribute = string | number | boolean | null;\n\nexport type SearchQueryAttributes = Record<string, SearchQueryAttribute>;\n","import { ActionType, NextBestActionType, type Action } from '../types';\n\n// Action mapping function\nexport const getActionMapping = (action: Action) => {\n // Single mapping object for both type and icon\n const actionMapping: Record<\n string,\n {\n type: NextBestActionType;\n icon: string;\n getValue: (action: any) => string;\n getLabel: (action: any) => string;\n }\n > = {\n [ActionType.CallPhone]: {\n type: NextBestActionType.Phone,\n icon: 'Phone',\n getValue: (a) => a.action?.options?.phoneNumber || a.id,\n getLabel: (a) => a.action?.options?.title || a.type,\n },\n [ActionType.SendEmail]: {\n type: NextBestActionType.Email,\n icon: 'EnvelopeSimple',\n getValue: (a) => a.action?.options?.to || a.id,\n getLabel: (a) => a.action?.options?.title || a.type,\n },\n [ActionType.OpenUrl]: {\n type: NextBestActionType.Link,\n icon: 'Link',\n getValue: (a) => a.action?.options?.url || a.id,\n getLabel: (a) => a.action?.options?.title || a.type,\n },\n };\n\n // Use the mapping with a default fallback\n const mapping = actionMapping[action.type] || {\n type: NextBestActionType.Link,\n icon: 'Link',\n getValue: (a) => a.action?.options?.url || a.id,\n getLabel: (a) => a.action?.options?.title || a.type,\n };\n\n return mapping;\n};\n","import React, { useState } from 'react';\n\nimport { Action } from './types';\nimport { NextBestAction } from './types';\nimport { ActionClick } from './types';\nimport { NextBestActions } from './NextBestActions';\nimport { getActionMapping } from './helpers/nextBestActions';\n\n// AnswerActions component to handle different actions sources\ninterface AnswerActionsProps {\n actions?: Action[];\n nextBestActions?: NextBestAction[];\n isLastAnswer?: boolean;\n handleActionClick?: (action: ActionClick) => void;\n searchQueryId: string;\n question: string;\n answer: string;\n}\n\nconst AnswerActions: React.FC<AnswerActionsProps> = ({\n actions,\n nextBestActions,\n isLastAnswer,\n handleActionClick,\n searchQueryId,\n question,\n answer,\n}) => {\n const hasActions = actions && actions.length > 0;\n const hasNextBestActions = nextBestActions && isLastAnswer && nextBestActions.length > 0;\n\n const [showAnswerActions] = useState(hasActions || hasNextBestActions);\n\n if (!showAnswerActions) {\n return null;\n }\n\n // Actions from the actions prop coming from intent match\n let mappedActions: NextBestAction[] = [];\n\n if (hasActions) {\n mappedActions = actions.map((action) => {\n const mapping = getActionMapping(action);\n\n return {\n id: action.id,\n label: mapping.getLabel(action),\n type: mapping.type,\n icon: mapping.icon,\n value: mapping.getValue(action),\n };\n });\n }\n\n // Actions from the nextBestActions prop for default actions\n // only display actions if there are actions and it's the last answer\n if (hasNextBestActions) {\n // filter out nextBestActions that have the same type as the already mapped actions.\n // this is to avoid duplicate action types. eg. both the action and the next best action are \"open_url\"\n const filteredNextBestActions = nextBestActions.filter(\n (action) => !mappedActions.some((mappedAction) => mappedAction.type === action.type),\n );\n mappedActions = mappedActions.concat(filteredNextBestActions);\n }\n\n return (\n <div className=\"p-4\">\n <NextBestActions\n nextBestActions={mappedActions}\n onActionClick={(action: NextBestAction) => {\n if (action) {\n handleActionClick?.({\n action,\n searchQueryId: searchQueryId || '',\n query: question,\n answer,\n });\n }\n }}\n />\n </div>\n );\n};\n\nexport default AnswerActions;\n","import { createId } from '@paralleldrive/cuid2';\nimport { WritableDraft } from 'immer';\nimport { ImmerReducer, useImmerReducer } from 'use-immer';\n\nimport { actionButtonsBlock, actionInputFormBlock, isActionInputFormBlock, isMarkdownTextBlock, markdownTextBlock } from '../blocks/utils';\nimport { ActionInputs, ActionInput, ActionType, Answer, AnswerBlock, FeedbackResponse, JSONSchema, SearchResult } from '../types';\n\n// Action types\nexport const AnswersActions = {\n SET_ANSWERS: 'answers/set_answers',\n CLEAR_ALL: 'answers/clear_all',\n APPEND_NEW_ANSWER: 'answers/create_empty_answer',\n APPEND_BLOCK: 'answers/append_block',\n APPEND_ANSWER_CHUNK: 'answers/append_stream_chunk',\n SET_SEARCH_RESULTS: 'answers/update_search_results',\n SET_FOLLOW_UP_QUESTIONS: 'answers/set_follow_up_questions',\n COMPLETE_ANSWER: 'answers/finish_streaming',\n SET_ANSWER_ERROR: 'answers/set_error_state',\n SET_USER_FEEDBACK: 'answers/set_user_feedback',\n CLEAR_USER_FEEDBACK: 'answers/clear_user_feedback',\n MARK_AS_UNCERTAIN: 'answers/mark_as_uncertain',\n NO_ARTICLES_FOUND: 'answers/no_articles_found',\n // action flow\n GET_ACTION_INPUTS: 'answers/request_action_inputs',\n INVOKE_ACTION: 'answers/invoke_action',\n ADD_ACTION_BUTTONS: 'answers/add_action_buttons',\n} as const;\n\n// Action type definitions\ntype SetAnswers = {\n type: typeof AnswersActions.SET_ANSWERS;\n payload: {\n answers: Answer[];\n };\n};\n\ntype ClearAll = {\n type: typeof AnswersActions.CLEAR_ALL;\n};\n\ntype AppendNewAnswer = {\n type: typeof AnswersActions.APPEND_NEW_ANSWER;\n payload: {\n id?: string;\n query: string;\n };\n};\n\ntype SetSearchResults = {\n type: typeof AnswersActions.SET_SEARCH_RESULTS;\n payload: {\n searchQueryId: string;\n results: SearchResult[];\n index?: number;\n };\n};\n\ntype AppendAnswerChunk = {\n type: typeof AnswersActions.APPEND_ANSWER_CHUNK;\n payload: {\n text: string;\n index?: number;\n };\n};\n\ntype SetAnswerError = {\n type: typeof AnswersActions.SET_ANSWER_ERROR;\n payload: {\n error: string;\n index?: number;\n };\n};\n\ntype SetUserFeedback = {\n type: typeof AnswersActions.SET_USER_FEEDBACK;\n payload: {\n feedback: FeedbackResponse;\n index?: number;\n };\n};\n\ntype ClearUserFeedback = {\n type: typeof AnswersActions.CLEAR_USER_FEEDBACK;\n payload: {\n index?: number;\n };\n};\n\ntype SetFollowUpQuestions = {\n type: typeof AnswersActions.SET_FOLLOW_UP_QUESTIONS;\n payload: {\n questions: string[];\n index?: number;\n };\n};\n\ntype AppendBlock = {\n type: typeof AnswersActions.APPEND_BLOCK;\n payload: {\n block: AnswerBlock;\n index?: number;\n };\n};\n\ntype CompleteAnswer = {\n type: typeof AnswersActions.COMPLETE_ANSWER;\n payload: {\n index?: number;\n };\n};\n\ntype MarkAsUncertain = {\n type: typeof AnswersActions.MARK_AS_UNCERTAIN;\n payload: {\n uncertaintyText: string;\n index?: number;\n };\n};\n\ntype GetActionInputs = {\n type: typeof AnswersActions.GET_ACTION_INPUTS;\n payload: {\n searchIntentId: string;\n actionId: string;\n inputs: ActionInput[];\n schema: JSONSchema<ActionInputs>;\n initialValues: ActionInputs;\n onSubmit: (parameters: ActionInputs) => void;\n index?: number;\n };\n};\n\ntype AddActionButtons = {\n type: typeof AnswersActions.ADD_ACTION_BUTTONS;\n payload: {\n searchIntentId: string;\n actions: Array<{\n id: string;\n type: string;\n action: {\n version: string;\n options: {\n title?: string;\n [key: string]: any;\n };\n };\n }>;\n index?: number;\n };\n};\n\ntype InvokeAction = {\n type: typeof AnswersActions.INVOKE_ACTION;\n payload: {\n index?: number;\n };\n};\n\ntype NoArticlesFound = {\n type: typeof AnswersActions.NO_ARTICLES_FOUND;\n payload: {\n index?: number;\n };\n};\n\nexport type AnswerListAction =\n | SetAnswers\n | ClearAll\n | AppendNewAnswer\n | SetSearchResults\n | AppendAnswerChunk\n | SetAnswerError\n | SetUserFeedback\n | ClearUserFeedback\n | SetFollowUpQuestions\n | AppendBlock\n | CompleteAnswer\n | MarkAsUncertain\n | InvokeAction\n | GetActionInputs\n | AddActionButtons\n | NoArticlesFound;\n\n// Action creators\nexport const setAnswers = ({ answers }: { answers: Answer[] }): SetAnswers => ({\n type: AnswersActions.SET_ANSWERS,\n payload: { answers },\n});\n\nexport const clearAll = (): ClearAll => ({\n type: AnswersActions.CLEAR_ALL,\n});\n\nexport const appendNewAnswer = ({ id, query }: { id?: string; query: string }): AppendNewAnswer => ({\n type: AnswersActions.APPEND_NEW_ANSWER,\n payload: { id, query },\n});\n\nexport const setSearchResults = ({\n searchQueryId,\n results,\n index,\n}: {\n searchQueryId: string;\n results: SearchResult[];\n index?: number;\n}): SetSearchResults => ({\n type: AnswersActions.SET_SEARCH_RESULTS,\n payload: {\n searchQueryId,\n results,\n index,\n },\n});\n\nexport const appendAnswerChunk = ({ text, index }: { text: string; index?: number }): AppendAnswerChunk => ({\n type: AnswersActions.APPEND_ANSWER_CHUNK,\n payload: {\n text,\n index,\n },\n});\n\nexport const setAnswerError = ({ error, index }: { error: string; index?: number }): SetAnswerError => ({\n type: AnswersActions.SET_ANSWER_ERROR,\n payload: {\n error,\n index,\n },\n});\n\nexport const setUserFeedback = ({ feedback, index }: { feedback: FeedbackResponse; index?: number }): SetUserFeedback => ({\n type: AnswersActions.SET_USER_FEEDBACK,\n payload: {\n feedback,\n index,\n },\n});\n\nexport const clearUserFeedback = ({ index }: { index?: number } = {}): ClearUserFeedback => ({\n type: AnswersActions.CLEAR_USER_FEEDBACK,\n payload: {\n index,\n },\n});\n\nexport const setFollowUpQuestions = ({ questions, index }: { questions: string[]; index?: number }): SetFollowUpQuestions => ({\n type: AnswersActions.SET_FOLLOW_UP_QUESTIONS,\n payload: {\n questions,\n index,\n },\n});\n\nexport const appendBlock = ({ block, index }: { block: AnswerBlock; index?: number }): AppendBlock => ({\n type: AnswersActions.APPEND_BLOCK,\n payload: {\n block,\n index,\n },\n});\n\nexport const completeAnswer = ({ index }: { index?: number } = {}): CompleteAnswer => ({\n type: AnswersActions.COMPLETE_ANSWER,\n payload: {\n index,\n },\n});\n\nexport const markAsUncertain = ({ uncertaintyText, index }: { uncertaintyText: string; index?: number }): MarkAsUncertain => ({\n type: AnswersActions.MARK_AS_UNCERTAIN,\n payload: {\n uncertaintyText,\n index,\n },\n});\n\nexport const invokeAction = ({ index }: { index?: number } = {}): InvokeAction => ({\n type: AnswersActions.INVOKE_ACTION,\n payload: {\n index,\n },\n});\n\nexport const noArticlesFound = ({ index }: { index?: number } = {}): NoArticlesFound => ({\n type: AnswersActions.NO_ARTICLES_FOUND,\n payload: {\n index,\n },\n});\n\nexport const getActionInputs = ({\n searchIntentId,\n actionId,\n inputs,\n schema,\n initialValues,\n onSubmit,\n index,\n}: {\n searchIntentId: string;\n actionId: string;\n inputs: ActionInput[];\n schema: JSONSchema<ActionInputs>;\n initialValues: ActionInputs;\n onSubmit: (parameters: ActionInputs) => void;\n index?: number;\n}): GetActionInputs => ({\n type: AnswersActions.GET_ACTION_INPUTS,\n payload: {\n searchIntentId,\n actionId,\n inputs,\n schema,\n initialValues,\n onSubmit,\n index,\n },\n});\n\nexport const addActionButtons = ({\n searchIntentId,\n actions,\n index,\n}: {\n searchIntentId: string;\n actions: Array<{\n id: string;\n type: string;\n action: {\n version: string;\n options: {\n title?: string;\n [key: string]: any;\n };\n };\n }>;\n index?: number;\n}): AddActionButtons => ({\n type: AnswersActions.ADD_ACTION_BUTTONS,\n payload: {\n searchIntentId,\n actions,\n index,\n },\n});\n\nconst getTargetAnswer = (draft: WritableDraft<Answer>[], index?: number) => {\n return draft.at(index ?? -1);\n};\n\nconst getLastTextBlock = (answer: Answer) => {\n return answer.blocks.at(-1);\n};\n\nconst initialState: Answer[] = [];\n\nconst reducer: ImmerReducer<Answer[], AnswerListAction> = (draft, action) => {\n switch (action.type) {\n // Answer List Management\n case AnswersActions.SET_ANSWERS: {\n draft.length = 0;\n // @ts-expect-error\n draft.push(...action.payload.answers);\n\n return;\n }\n\n case AnswersActions.CLEAR_ALL: {\n draft.length = 0;\n\n return;\n }\n\n // Answer Generation Flow\n case AnswersActions.APPEND_NEW_ANSWER: {\n draft.push({\n id: 'pending-' + createId(),\n state: 'fetching-search-results',\n question: action.payload.query,\n blocks: [markdownTextBlock()],\n isUncertain: false,\n });\n\n return;\n }\n\n case AnswersActions.SET_SEARCH_RESULTS: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.searchQueryId = action.payload.searchQueryId;\n answer.searchResults = action.payload.results;\n answer.state = 'fetching-stream';\n }\n\n return;\n }\n\n case AnswersActions.APPEND_ANSWER_CHUNK: {\n const answer = getTargetAnswer(draft, action.payload.index);\n const block = answer && getLastTextBlock(answer);\n\n if (answer && !answer.isUncertain && block && isMarkdownTextBlock(block)) {\n answer.state = 'streaming';\n block.text += action.payload.text;\n }\n\n return;\n }\n\n case AnswersActions.SET_ANSWER_ERROR: {\n const answer = getTargetAnswer(draft, action.payload.index ?? -1);\n const block = answer && getLastTextBlock(answer);\n if (block && isMarkdownTextBlock(block)) {\n block.text += action.payload.error;\n }\n\n return;\n }\n\n case AnswersActions.APPEND_BLOCK: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n // @ts-expect-error\n answer.blocks.push(action.payload.block);\n }\n\n return;\n }\n\n case AnswersActions.COMPLETE_ANSWER: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n if (answer.state === 'streaming') {\n answer.state = 'completed';\n }\n }\n\n return;\n }\n\n case AnswersActions.MARK_AS_UNCERTAIN: {\n const answer = getTargetAnswer(draft, action.payload.index);\n const block = answer && getLastTextBlock(answer);\n if (answer && block && isMarkdownTextBlock(block)) {\n answer.isUncertain = true;\n block.text = action.payload.uncertaintyText;\n }\n\n return;\n }\n\n case AnswersActions.SET_USER_FEEDBACK: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.feedback = action.payload.feedback;\n }\n\n return;\n }\n\n case AnswersActions.CLEAR_USER_FEEDBACK: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n delete answer.feedback;\n }\n\n return;\n }\n\n case AnswersActions.GET_ACTION_INPUTS: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.state = 'getting-action-inputs';\n answer.searchIntentId = action.payload.searchIntentId;\n answer.blocks.push(\n // @ts-expect-error\n actionInputFormBlock({\n actionId: action.payload.actionId,\n schema: action.payload.schema,\n initialValues: action.payload.initialValues,\n onSubmit: action.payload.onSubmit,\n inputs: action.payload.inputs,\n }),\n );\n }\n\n return;\n }\n\n case AnswersActions.ADD_ACTION_BUTTONS: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.searchIntentId = action.payload.searchIntentId;\n // Cast the actions array to ActionType to match the expected type\n answer.actions = action.payload.actions.map((action) => ({\n ...action,\n type: action.type as ActionType,\n }));\n answer.blocks.push(actionButtonsBlock());\n }\n\n return;\n }\n\n case AnswersActions.INVOKE_ACTION: {\n const answer = getTargetAnswer(draft, action.payload.index);\n const blockIndex = answer?.blocks.findIndex(isActionInputFormBlock);\n\n if (answer && blockIndex) {\n // replace the action input form block with a markdown text block\n answer.state = 'fetching-stream';\n answer.blocks.splice(blockIndex, 1, markdownTextBlock());\n }\n\n return;\n }\n\n case AnswersActions.SET_FOLLOW_UP_QUESTIONS: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.followUpQuestions = action.payload.questions;\n }\n\n return;\n }\n\n case AnswersActions.NO_ARTICLES_FOUND: {\n const answer = getTargetAnswer(draft, action.payload.index);\n const block = answer && getLastTextBlock(answer);\n if (block && isMarkdownTextBlock(block)) {\n block.text += 'No articles found.';\n }\n // Mark the answer as completed when no articles are found\n if (answer) {\n answer.state = 'completed';\n }\n\n return;\n }\n\n default: {\n throw new Error(`Answer List Reducer: unknown action type '${(action as AnswerListAction).type}'`);\n }\n }\n};\n\nexport const useAnswerList = () => {\n return useImmerReducer(reducer, initialState);\n};\n","import { useCallback, useState } from 'react';\nimport { useSearchParam } from 'react-use';\n\nconst CONVERSATION_PARAM = 'conversation';\n\nexport const useConversationId = (searchPath?: string) => {\n const conversationId = useSearchParam(CONVERSATION_PARAM);\n\n // Unfortunately, the search param is not updated when the url is changed in Next.js\n // As a workaround, we use a local state to store the conversation id\n // and update the url when the local state changes\n // https://github.com/vercel/next.js/discussions/18072\n // https://github.com/vercel/next.js/discussions/70779\n const [_conversationId, _setConversationId] = useState(conversationId ?? undefined);\n\n const setConversationId = useCallback(\n (id: string) => {\n const url = new URL(window.location.href);\n if (searchPath) {\n url.pathname = searchPath;\n }\n if (id) {\n url.searchParams.set(CONVERSATION_PARAM, id);\n } else {\n url.searchParams.delete(CONVERSATION_PARAM);\n }\n const newUrl = url.toString();\n window.history.replaceState({ ...window.history.state, newUrl, url: newUrl }, '', newUrl);\n _setConversationId(id);\n },\n [searchPath],\n );\n\n const clearConversationId = useCallback(() => {\n const url = new URL(window.location.href);\n url.searchParams.delete(CONVERSATION_PARAM);\n const newUrl = url.toString();\n window.history.replaceState({ ...window.history.state, newUrl, url: newUrl }, '', newUrl);\n _setConversationId(undefined);\n }, []);\n\n return { conversationId: _conversationId, setConversationId, clearConversationId };\n};\n","import React, { createContext, useContext, useState, useMemo, type ReactNode } from 'react';\n\nimport type { Answer } from './types';\nimport { useAnswerList, AnswerListAction } from './hooks/useAnswerList';\nimport { useConversationId } from './hooks/useConversationId';\n\ninterface ChatSearchContextProps {\n query: string;\n setQuery: React.Dispatch<React.SetStateAction<string>>;\n queryId: string;\n setQueryId: React.Dispatch<React.SetStateAction<string>>;\n followUpQuery: string;\n setFollowUpQuery: React.Dispatch<React.SetStateAction<string>>;\n isSearching: boolean;\n setIsSearching: React.Dispatch<React.SetStateAction<boolean>>;\n showResults: boolean;\n setShowResults: React.Dispatch<React.SetStateAction<boolean>>;\n answers: Answer[];\n answerListDispatch: React.Dispatch<AnswerListAction>;\n activeAnswerIndex: number;\n setActiveAnswerIndex: React.Dispatch<React.SetStateAction<number>>;\n conversationId: string | undefined;\n setConversationId: (id: string) => void;\n clearConversationId: () => void;\n isLoadingConversation: boolean;\n setIsLoadingConversation: React.Dispatch<React.SetStateAction<boolean>>;\n loadError: string;\n setLoadError: React.Dispatch<React.SetStateAction<string>>;\n showMobileCloseWidgetButton: boolean;\n setShowMobileCloseWidgetButton: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst ChatSearchContext = createContext<ChatSearchContextProps | undefined>(undefined);\n\nexport const ChatSearchProvider: React.FC<{ children: ReactNode; searchPath?: string }> = ({\n children,\n searchPath,\n}) => {\n const [query, setQuery] = useState('');\n const [queryId, setQueryId] = useState('');\n const [followUpQuery, setFollowUpQuery] = useState('');\n const [isSearching, setIsSearching] = useState(false);\n const [showResults, setShowResults] = useState(false);\n const [answers, answerListDispatch] = useAnswerList();\n const [activeAnswerIndex, setActiveAnswerIndex] = useState(0);\n const [isLoadingConversation, setIsLoadingConversation] = useState(false);\n const [loadError, setLoadError] = useState<string>('');\n const [showMobileCloseWidgetButton, setShowMobileCloseWidgetButton] = useState(false);\n\n const { conversationId, setConversationId, clearConversationId } = useConversationId(searchPath);\n\n // Memoize the context value to prevent unnecessary re-renders of components that consume the context\n const contextValue = useMemo(\n () => ({\n query,\n setQuery,\n queryId,\n setQueryId,\n followUpQuery,\n setFollowUpQuery,\n isSearching,\n setIsSearching,\n showResults,\n setShowResults,\n answers,\n answerListDispatch,\n activeAnswerIndex,\n setActiveAnswerIndex,\n conversationId,\n setConversationId,\n clearConversationId,\n isLoadingConversation,\n setIsLoadingConversation,\n loadError,\n setLoadError,\n showMobileCloseWidgetButton,\n setShowMobileCloseWidgetButton,\n }),\n [\n query,\n queryId,\n followUpQuery,\n isSearching,\n showResults,\n answers,\n answerListDispatch,\n activeAnswerIndex,\n conversationId,\n setConversationId,\n clearConversationId,\n isLoadingConversation,\n loadError,\n showMobileCloseWidgetButton,\n ],\n );\n\n return <ChatSearchContext.Provider value={contextValue}>{children}</ChatSearchContext.Provider>;\n};\n\nexport const useChatSearch = () => {\n const context = useContext(ChatSearchContext);\n if (!context) {\n throw new Error('useChatSearch must be used within a ChatSearchProvider');\n }\n\n return context;\n};\n","import { useChatSearch } from '../ChatSearchContext';\n\nexport const useIsChatSearchDirty = () => {\n const { showResults, answers } = useChatSearch();\n\n const isDirty = Boolean(showResults || answers.length > 0);\n\n return isDirty;\n};\n","import { RefObject } from 'react';\n\nexport const useScrollManager = (answerRefs: RefObject<(HTMLDivElement | null)[]>, containerRef: RefObject<HTMLDivElement | null>) => {\n const scrollToLastAnswer = () => {\n requestAnimationFrame(() => {\n const lastAnswer = answerRefs.current?.[answerRefs.current.length - 1];\n const container = containerRef.current;\n if (lastAnswer && container) {\n const rect = lastAnswer.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const targetScroll = container.scrollTop + (rect.top - containerRect.top) - 80;\n container.scrollTo({ top: targetScroll, behavior: 'smooth' });\n }\n });\n };\n\n const scrollToAnswer = (index: number) => {\n requestAnimationFrame(() => {\n const answer = answerRefs.current?.[index];\n const container = containerRef.current;\n if (answer && container) {\n const rect = answer.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const targetScroll = container.scrollTop + (rect.top - containerRect.top) - 80;\n container.scrollTo({ top: targetScroll, behavior: 'smooth' });\n }\n });\n };\n\n return { scrollToLastAnswer, scrollToAnswer };\n};\n","interface RetryOptions {\n maxRetries?: number;\n baseDelay?: number;\n shouldRetry?: (error: Error, attempt: number) => boolean | Promise<boolean>;\n}\n\ninterface FallbackConfig {\n emptyResponse?: string;\n errorResponse?: string;\n}\n\ninterface RequestConfig<T> extends Omit<RequestInit, 'body'> {\n retry?: RetryOptions;\n body?: T;\n isStream?: boolean;\n fallback?: FallbackConfig;\n}\n\ninterface APIError extends Error {\n status?: number;\n data?: unknown;\n}\n\nconst defaultRetryOptions: Required<RetryOptions> = {\n maxRetries: 3,\n baseDelay: 1000,\n shouldRetry: (error: Error) => {\n // By default, retry on network errors and 5xx server errors\n if (error instanceof TypeError) {\n return true; // Network errors\n }\n\n const apiError = error as APIError;\n\n return apiError.status ? apiError.status >= 500 : false;\n },\n};\n\nconst defaultFallbackConfig: Required<FallbackConfig> = {\n emptyResponse: \"I apologize, but I couldn't generate an answer at this time. Please try again.\",\n errorResponse: 'I encountered an error while processing your request. Please try again.',\n};\n\nlet globalRetryOptions: Required<RetryOptions> = { ...defaultRetryOptions };\nlet globalFallbackConfig: Required<FallbackConfig> = { ...defaultFallbackConfig };\n\nexport function configureRetry(options: RetryOptions): void {\n globalRetryOptions = {\n ...defaultRetryOptions,\n ...options,\n };\n}\n\nexport function configureFallback(config: FallbackConfig): void {\n globalFallbackConfig = {\n ...defaultFallbackConfig,\n ...config,\n };\n}\n\nasync function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function makeRequest<TResponse, TBody = unknown>(url: string | URL, config: RequestConfig<TBody> = {}): Promise<TResponse> {\n const { retry = {}, headers = {}, body, isStream = false, fallback = {}, ...fetchConfig } = config;\n const retryOptions = {\n ...globalRetryOptions,\n ...retry,\n };\n const fallbackOptions = {\n ...globalFallbackConfig,\n ...fallback,\n };\n\n let attempt = 1;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n try {\n const response = await fetch(url, {\n ...fetchConfig,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (response.ok) {\n // For streaming responses, return the response object directly\n if (isStream) {\n if (!response.ok) {\n throw new Error('Failed to fetch answer');\n }\n\n return response as unknown as TResponse;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const data = await response.json();\n // Check for empty response in JSON\n if (!data || (typeof data === 'object' && Object.keys(data).length === 0)) {\n const emptyError = new Error(fallbackOptions.emptyResponse);\n emptyError.name = 'EmptyResponseError';\n throw emptyError;\n }\n\n return data as TResponse;\n }\n\n const error = new Error(fallbackOptions.errorResponse) as APIError;\n error.status = response.status;\n error.data = await response.json().catch(() => undefined);\n throw error;\n } catch (error) {\n const shouldAttemptRetry = await Promise.resolve(retryOptions.shouldRetry(error as Error, attempt));\n\n if (attempt >= retryOptions.maxRetries || !shouldAttemptRetry) {\n if (error instanceof Error && error.name === 'EmptyResponseError') {\n return { message: error.message } as TResponse;\n }\n throw error;\n }\n\n console.warn(`Request failed, attempt ${attempt} of ${retryOptions.maxRetries}. Retrying...`);\n\n // Exponential backoff with jitter to prevent thundering herd\n const jitter = Math.random() * 0.3 + 0.85; // Random between 0.85-1.15\n await delay(retryOptions.baseDelay * Math.pow(2, attempt - 1) * jitter);\n attempt++;\n }\n }\n}\n","import { createId } from '@paralleldrive/cuid2';\n\nimport { makeRequest } from './fetchClient';\n\nimport {\n SearchResponse,\n FeedbackResponse,\n APIFeedbackResponse,\n SearchResult,\n ActionInputs,\n ClientExecutionResult,\n SearchQueryAttributes,\n} from '@/components/chat-search/types';\n\n// Retry configurations for different endpoints\nconst searchRetryConfig = {\n maxRetries: 3,\n baseDelay: 300, // Start with 300ms delay\n shouldRetry: (error: Error) => {\n if (error instanceof TypeError) {\n return true; // Network errors\n }\n const apiError = error as { status?: number };\n // Retry on server errors (5xx) and rate limits (429)\n\n return apiError.status ? apiError.status >= 500 || apiError.status === 429 : false;\n },\n};\n\nconst answerRetryConfig = {\n maxRetries: 3,\n baseDelay: 500, // Start with 500ms delay for streaming responses\n shouldRetry: (error: Error) => {\n if (error instanceof TypeError) {\n return true; // Network errors\n }\n const apiError = error as { status?: number };\n // Only retry on server errors, not on client errors\n\n return apiError.status ? apiError.status >= 500 : false;\n },\n};\n\ninterface APISearchResponse {\n data: Array<{\n id: string;\n title: string;\n url: string;\n }>;\n searchQuery: {\n id: string;\n };\n}\n\nexport async function searchApi({\n endpoint,\n query,\n collectionId,\n headers,\n conversationId,\n attributes,\n secretAttributes,\n allowedRegions,\n}: {\n endpoint: string;\n query: string;\n collectionId?: string;\n headers?: Record<string, string>;\n conversationId?: string;\n attributes?: SearchQueryAttributes;\n secretAttributes?: string;\n allowedRegions?: string[];\n}): Promise<SearchResponse> {\n const payload = await makeRequest<\n APISearchResponse,\n {\n query: string;\n limit: number;\n collectionId?: string;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n retry: searchRetryConfig,\n body: {\n query,\n limit: 5,\n ...(collectionId && collectionId !== 'all' && { collectionId }),\n ...(conversationId && { conversationId }),\n ...(attributes && { attributes }),\n ...(secretAttributes && { secretAttributes }),\n ...(allowedRegions && { allowedRegions }),\n },\n });\n\n return {\n results: payload?.data,\n searchQueryId: payload?.searchQuery?.id,\n };\n}\n\nexport async function fetchAnswer({\n endpoint,\n searchQueryId,\n headers,\n conversationId,\n}: {\n endpoint: string;\n searchQueryId: string;\n headers?: Record<string, string>;\n conversationId?: string;\n}): Promise<Response> {\n return makeRequest<\n Response,\n {\n searchQueryId: string;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n retry: answerRetryConfig,\n isStream: true,\n fallback: {\n emptyResponse: \"I apologize, but I couldn't generate an answer for your query. Please try rephrasing your question.\",\n errorResponse: 'I encountered an issue while generating the answer. Please try again in a moment.',\n },\n body: {\n searchQueryId,\n ...(conversationId && { conversationId }),\n },\n });\n}\n\nexport async function fetchAnswerStream({\n endpoint,\n headers,\n body,\n}: {\n endpoint: string;\n headers?: Record<string, string>;\n body:\n | {\n type: 'generate-for-query';\n conversationId?: string;\n searchQueryId: string;\n }\n | {\n type: 'invoke-action';\n conversationId?: string;\n searchQueryId: string;\n searchIntentId: string;\n actionId: string;\n parameters: ActionInputs;\n }\n | {\n type: 'client-execution-result';\n conversationId?: string;\n searchQueryId: string;\n searchIntentId: string;\n actionId: string;\n results: ClientExecutionResult;\n };\n}): Promise<Response> {\n return makeRequest<Response, typeof body>(endpoint, {\n method: 'POST',\n headers,\n retry: answerRetryConfig,\n isStream: true,\n fallback: {\n emptyResponse: \"I apologize, but I couldn't generate an answer for your query. Please try rephrasing your question.\",\n errorResponse: 'I encountered an issue while generating the answer. Please try again in a moment.',\n },\n body,\n });\n}\n\n// Helper function to generate conversation ID\nexport function createConversationId(): string {\n return createId();\n}\n\nexport async function sendFeedback({\n endpoint,\n searchQueryId,\n response,\n headers,\n conversationId,\n}: {\n endpoint: string;\n searchQueryId: string;\n response: FeedbackResponse;\n headers?: Record<string, string>;\n conversationId?: string;\n}): Promise<void> {\n await makeRequest<\n void,\n {\n searchQueryId: string;\n response: FeedbackResponse;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n body: {\n searchQueryId,\n response,\n ...(conversationId && { conversationId }),\n },\n });\n}\n\nexport async function sendFeedbackReason({\n endpoint,\n searchQueryId,\n reason,\n headers,\n}: {\n endpoint: string;\n searchQueryId: string;\n reason: string;\n headers?: Record<string, string>;\n conversationId?: string;\n}): Promise<void> {\n await makeRequest<\n void,\n {\n searchQueryId: string;\n reason: string;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n body: {\n searchQueryId,\n reason,\n },\n });\n}\n\nexport interface ConversationResponse {\n data: Array<{\n question: string;\n answer: string;\n searchQueryId: string;\n searchResults?: SearchResult[];\n searchIntentId?: string;\n feedback?: APIFeedbackResponse;\n }>;\n}\n\nexport async function loadConversation({\n endpoint,\n conversationId,\n headers,\n signal,\n}: {\n endpoint: string;\n conversationId: string;\n headers?: Record<string, string>;\n signal?: AbortSignal;\n}): Promise<{ data: ConversationResponse['data'] }> {\n const payload = await makeRequest<\n ConversationResponse,\n {\n conversationId: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n body: { conversationId },\n signal,\n });\n\n return { data: payload.data };\n}\n\ninterface FollowUpQuestionsResponse {\n questions: string[];\n}\n\nexport async function fetchFollowUpQuestions({\n endpoint,\n searchQueryId,\n headers,\n conversationId,\n}: {\n endpoint: string;\n searchQueryId: string;\n headers?: Record<string, string>;\n conversationId?: string;\n}): Promise<string[]> {\n const data = await makeRequest<\n FollowUpQuestionsResponse,\n {\n searchQueryId: string;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n body: {\n searchQueryId,\n ...(conversationId && { conversationId }),\n },\n });\n\n return data.questions;\n}\n\ninterface AutocompleteResponse {\n response: {\n results: Array<{\n id: string;\n question: string;\n }>;\n };\n}\n\nexport async function fetchAutocomplete({\n endpoint,\n query,\n collectionId,\n headers,\n conversationId,\n allowedRegions,\n}: {\n endpoint: string;\n query: string;\n collectionId?: string;\n headers?: Record<string, string>;\n conversationId?: string;\n allowedRegions?: string[];\n}): Promise<AutocompleteResponse> {\n const data = await makeRequest<\n AutocompleteResponse,\n {\n query: string;\n collectionId?: string;\n conversationId?: string;\n allowedRegions?: string[];\n }\n >(endpoint, {\n method: 'POST',\n headers,\n retry: searchRetryConfig,\n body: {\n query,\n ...(collectionId && collectionId !== 'all' && { collectionId }),\n ...(conversationId && { conversationId }),\n ...(allowedRegions && { allowedRegions }),\n },\n });\n\n return data;\n}\n","import { useCallback } from 'react';\nimport { useEffectOnce } from 'react-use';\n\nimport { useChatSearch } from '../ChatSearchContext';\nimport type { TextConfig } from '../text-config';\nimport { clearAll, setAnswers } from './useAnswerList';\nimport { markdownTextBlock } from '../blocks/utils';\nimport { Answer } from '../types';\n\nimport { isAnswerUncertain } from '@/lib/utils';\nimport { loadConversation } from '@/lib/api';\n\ninterface UseLoadConversationProps {\n loadConversationEndpoint: string | undefined;\n headers?: Record<string, string>;\n mergedTextConfig: TextConfig;\n}\n\n/**\n * Hook to load a conversation by ID.\n * @param loadConversationEndpoint - The endpoint to use to load the conversation.\n * @param headers - The headers to use when loading the conversation.\n * @param mergedTextConfig - The text configuration to use.\n * @returns The function to load a conversation by ID.\n */\nexport const useConversationLoader = ({ loadConversationEndpoint, headers, mergedTextConfig }: UseLoadConversationProps) => {\n const {\n setIsLoadingConversation,\n setShowResults,\n answerListDispatch,\n conversationId,\n setConversationId,\n clearConversationId,\n setLoadError,\n } = useChatSearch();\n\n const loadConversationById = useCallback(\n (conversationId: string) => {\n if (!loadConversationEndpoint) {\n return;\n }\n\n setIsLoadingConversation(true);\n setIsLoadingConversation(true);\n setShowResults(true);\n\n const controller = new AbortController();\n\n loadConversation({\n endpoint: loadConversationEndpoint,\n conversationId,\n headers,\n signal: controller.signal,\n })\n .then(({ data }) => {\n const answers = data.map((query): Answer => {\n return {\n id: query.searchQueryId,\n state: 'completed',\n question: query.question,\n isUncertain: isAnswerUncertain(query.answer).uncertain,\n searchQueryId: query.searchQueryId,\n searchIntentId: query.searchIntentId,\n blocks: query.answer.split('---').map((text) =>\n markdownTextBlock({\n text: text.trim(),\n }),\n ),\n };\n });\n answerListDispatch(setAnswers({ answers }));\n setShowResults(true);\n })\n .catch((error) => {\n console.error('Error loading conversation:', error);\n answerListDispatch(clearAll());\n clearConversationId();\n setShowResults(false);\n setLoadError(mergedTextConfig.errorText || 'An error occurred');\n })\n .finally(() => {\n setIsLoadingConversation(false);\n });\n\n return () => controller.abort('Conversation loader aborted');\n },\n [\n loadConversationEndpoint,\n setIsLoadingConversation,\n setShowResults,\n headers,\n answerListDispatch,\n setConversationId,\n setLoadError,\n mergedTextConfig.errorText,\n ],\n );\n\n useEffectOnce(() => {\n let cancel: (() => void) | undefined;\n if (conversationId) {\n console.log('loading conversation', conversationId);\n cancel = loadConversationById(conversationId);\n }\n\n return () => cancel?.();\n });\n\n return { loadConversationById };\n};\n","import { useRef, useEffect } from 'react';\n\nimport { useChatSearch } from '../ChatSearchContext';\nimport type { ChatSearchState } from '../types';\n\nexport const useSubscriptionManager = () => {\n const stateSubscribersRef = useRef<((state: ChatSearchState) => void)[]>([]);\n const { showResults, answers, isLoadingConversation, loadError } = useChatSearch();\n\n // Notify subscribers whenever the state changes\n useEffect(() => {\n const state: ChatSearchState = {\n showResults,\n answers,\n isLoading: isLoadingConversation,\n error: loadError,\n };\n\n stateSubscribersRef.current.forEach((callback) => callback(state));\n }, [showResults, answers, isLoadingConversation, loadError]);\n\n // Function to add a new subscriber\n const subscribeToStateChanges = (callback: (state: ChatSearchState) => void) => {\n stateSubscribersRef.current.push(callback);\n // Notify the new subscriber with the initial state\n callback({\n showResults,\n answers,\n isLoading: isLoadingConversation,\n error: loadError,\n });\n\n // Return an unsubscribe function\n return () => {\n stateSubscribersRef.current = stateSubscribersRef.current.filter((cb) => cb !== callback);\n };\n };\n\n return { subscribeToStateChanges };\n};\n","import React, { useState } from 'react';\nimport { Copy, CaretDown, Check, ArrowSquareOut } from '@phosphor-icons/react';\n\nimport { Button } from '../ui/button';\nimport type {\n SearchResult,\n FeedbackResponse,\n AnswerBlock as AnswerBlockType,\n AnswerState,\n RedirectRule,\n Action,\n NextBestAction,\n ActionClick,\n} from './types';\nimport { AnswerBlock } from './AnswerBlock';\nimport { isMarkdownTextBlock } from './blocks/utils';\nimport AnswerActions from './AnswerActions';\n\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';\nimport { Feedback } from '@/components/feedback';\nimport GeneratingStar from '@/components/generating-star';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\ninterface AnswerProps {\n index: number;\n blocks?: AnswerBlockType[];\n state?: AnswerState;\n question: string;\n searchResults?: SearchResult[];\n searchQueryId?: string;\n feedback?: FeedbackResponse;\n onFeedback?: (response: FeedbackResponse) => void;\n disableFeedback?: boolean;\n textConfig?: {\n positiveAnswerText?: string;\n negativeAnswerText?: string;\n loadingSearchText?: string;\n loadingAnswerText?: string;\n uncertaintyFallbackText?: Record<string, string>;\n };\n searchIntentId?: string;\n redirectRules?: RedirectRule[];\n actions?: Action[];\n handleActionClick?: (action: ActionClick) => void;\n nextBestActions?: NextBestAction[];\n isLastAnswer?: boolean;\n onFeedbackReasonSubmit?: (reason: string) => void;\n}\n\nexport function Answer({\n index,\n blocks = [],\n question,\n searchResults,\n state = 'completed',\n searchQueryId,\n feedback,\n onFeedback,\n disableFeedback = false,\n textConfig = {},\n redirectRules,\n actions,\n handleActionClick,\n nextBestActions,\n isLastAnswer,\n onFeedbackReasonSubmit,\n}: AnswerProps) {\n const [isCopied, setIsCopied] = useState(false);\n const [isExpanded, setIsExpanded] = useState(false);\n\n const answer = blocks\n .filter(isMarkdownTextBlock)\n .map((block) => block.text)\n .join('\\n\\n---\\n\\n');\n\n const isFetching = state === 'fetching-search-results' || state === 'fetching-stream';\n const isFetchingInitialAnswer = isFetching && blocks.length === 1;\n const isFetchingSearchResults = state === 'fetching-search-results';\n const isIdle = state === 'getting-action-inputs' || state === 'completed';\n const isCompleted = state === 'completed';\n\n const handleCopy = async () => {\n try {\n // Attempt to use the Clipboard API\n await navigator.clipboard.writeText(answer);\n } catch (err) {\n console.warn('Clipboard API failed, using fallback:', err);\n\n // Fallback for environments where clipboard API is not available\n const textArea = document.createElement('textarea');\n textArea.value = answer;\n textArea.style.position = 'fixed'; // Avoid scrolling to bottom\n textArea.style.opacity = '0'; // Make it invisible\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n } catch (fallbackErr) {\n console.error('Fallback: Oops, unable to copy', fallbackErr);\n }\n\n document.body.removeChild(textArea);\n }\n\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n };\n\n const handleFeedback = (response: FeedbackResponse) => {\n if (onFeedback && searchQueryId) {\n onFeedback(response);\n }\n };\n\n return (\n <div\n className=\"rounded-lg relative mx-auto overflow-hidden bg-card border border-primary mb-4\"\n data-name=\"SearchResults\"\n data-index={index}\n >\n <div className=\"px-4 pt-4 pb-2\">\n <div className=\"flex items-start justify-between gap-2 min-h-9\">\n <div className=\"flex gap-1\">\n <GeneratingStar loading={!isIdle} />\n <h2 className=\"leading-normal font-semibold m-0 text-foreground self-center text-lg\">{question}</h2>\n </div>\n {isCompleted && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" onClick={() => void handleCopy()} className=\"-mt-1 flex-shrink-0\">\n {isCopied ? (\n <Check className=\"text-feedback-positive\" weight=\"bold\" />\n ) : (\n <Copy className=\"text-secondary-foreground\" weight=\"bold\" />\n )}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>{isCopied ? 'Copied!' : 'Copy'}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n </div>\n\n {isFetchingInitialAnswer && (\n <div className=\"space-y-4 mt-2 px-4\">\n <div className=\"flex items-center gap-2\">\n <div className=\"size-5 rounded-full bg-primary/30\" />\n <div className=\"flex items-center gap-2 text-sm text-foreground\">\n {isFetchingSearchResults ? textConfig.loadingSearchText : textConfig.loadingAnswerText}\n </div>\n </div>\n </div>\n )}\n\n <div className=\"flex flex-col\">\n {blocks?.map((block, i) => (\n <div key={i} className=\"px-4 border-b last:border-b-0 border-dashed\">\n <AnswerBlock block={block} redirectRules={redirectRules} state={state} />\n </div>\n ))}\n </div>\n\n {/* Next Best Actions */}\n {isCompleted && (\n <AnswerActions\n actions={actions}\n nextBestActions={nextBestActions}\n isLastAnswer={isLastAnswer}\n handleActionClick={handleActionClick}\n searchQueryId={searchQueryId || ''}\n question={question}\n answer={answer}\n />\n )}\n\n {isCompleted && !disableFeedback && (\n <div className=\"p-4 pt-0\">\n <Feedback\n feedback={feedback}\n onFeedback={handleFeedback}\n textConfig={textConfig}\n disabled={disableFeedback}\n feedbackReasonLength={500}\n feedbackReasonPlaceholder=\"What could we have done better? Your feedback is valuable to us...\"\n onFeedbackReasonSubmit={onFeedbackReasonSubmit}\n feedbackReasonThankYouText=\"Thank you for your feedback!\"\n />\n </div>\n )}\n\n {searchResults && searchResults.length > 0 && (\n <div className=\"overflow-hidden bg-card border-dashed border-0 border-t-2\">\n <Collapsible open={isExpanded} onOpenChange={setIsExpanded} className=\"w-full\">\n <div>\n <CollapsibleTrigger asChild>\n <Button variant=\"secondary\" className=\"w-full justify-between h-11\" data-name=\"RelatedSources\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium truncate text-base\">Sources</span>\n </div>\n <CaretDown\n className={`size-4 flex-shrink-0 transition-transform duration-200 text-secondary-foreground ${\n isExpanded ? 'rotate-180' : ''\n }`}\n weight=\"bold\"\n />\n <span className=\"sr-only\">Toggle</span>\n </Button>\n </CollapsibleTrigger>\n </div>\n <CollapsibleContent className=\"divide-y divide-gray-200 dark:divide-border overflow-hidden CollapsibleContent\">\n {searchResults.map((result) => (\n <a\n key={result.id}\n href={result.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 p-3 transition-colors duration-200 hover:bg-accent bg-card text-foreground\"\n >\n <span className=\"flex-grow truncate\">{result.title}</span>\n <ArrowSquareOut className=\"size-4 flex-shrink-0 text-secondary-foreground\" weight=\"bold\" />\n </a>\n ))}\n </CollapsibleContent>\n </Collapsible>\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { CaretRight } from '@phosphor-icons/react';\n\nimport { Button } from '../ui/button';\n\nconst MotionButton = motion(Button);\n\ninterface FollowUpQuestionsProps {\n questions: string[];\n onQuestionClick: (question: string) => void;\n}\n\nexport function FollowUpQuestions({ questions, onQuestionClick }: FollowUpQuestionsProps) {\n if (!questions.length) return null;\n\n return (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -20 }}\n className=\"w-full\"\n >\n <div className=\"rounded-lg overflow-hidden bg-card border\">\n <h3 className=\"px-4 py-3 border-b border-b-dark-300 font-bold\">Follow-up questions</h3>\n\n {questions.map((question, index) => {\n if (index < 3) {\n return (\n <MotionButton\n key={index}\n initial={{ opacity: 0, x: -20 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: index * 0.1 }}\n onClick={() => onQuestionClick(question)}\n variant=\"ghost\"\n className=\"w-full text-left\"\n >\n <span className=\"flex-grow\">{question}</span>\n <CaretRight className=\"\" weight=\"bold\" />\n </MotionButton>\n );\n }\n\n return null;\n })}\n </div>\n </motion.div>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { ArrowsVertical } from '@phosphor-icons/react';\nimport { motion, AnimatePresence } from 'framer-motion';\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { cn } from '@/lib/utils';\n\ninterface TimelineNavigationProps {\n questions: string[];\n activeIndex: number;\n onNavigate: (index: number) => void;\n offset: number;\n}\n\nexport function TimelineNavigation({ questions, activeIndex, onNavigate, offset }: TimelineNavigationProps) {\n const [prevActiveIndex, setPrevActiveIndex] = useState(activeIndex);\n\n useEffect(() => {\n setPrevActiveIndex(activeIndex);\n }, [activeIndex]);\n\n // Show 2 items before and after the active item\n const VISIBLE_ITEMS_EACH_SIDE = 2;\n const totalItems = questions.length;\n\n const getVisibleIndexes = () => {\n const indexes: (number | 'ellipsis')[] = [];\n let lastAddedIndex: number | null = null;\n\n const addIndex = (index: number) => {\n if (lastAddedIndex !== null && index - lastAddedIndex > 1) {\n indexes.push('ellipsis');\n }\n indexes.push(index);\n lastAddedIndex = index;\n };\n\n // Always show first item\n addIndex(0);\n\n // Show items around active index\n for (\n let i = Math.max(1, activeIndex - VISIBLE_ITEMS_EACH_SIDE);\n i <= Math.min(totalItems - 2, activeIndex + VISIBLE_ITEMS_EACH_SIDE);\n i++\n ) {\n addIndex(i);\n }\n\n // Always show last item if we have more than one item\n if (totalItems > 1) {\n addIndex(totalItems - 1);\n }\n\n return indexes;\n };\n\n const visibleIndexes = getVisibleIndexes();\n\n return (\n <nav\n aria-label=\"Question timeline navigation\"\n className=\"fixed left-4 top-1/2 -translate-y-1/2 z-40 flex flex-col gap-3\"\n style={{ ...(offset ? { left: `${offset}px` } : {}) } as React.CSSProperties}\n >\n <motion.div\n className=\"flex flex-col items-center space-y-3\"\n role=\"list\"\n initial={false}\n animate={{ y: 0 }}\n transition={{ type: 'spring', stiffness: 300, damping: 30 }}\n >\n <AnimatePresence>\n {visibleIndexes.map((indexOrEllipsis, arrayIndex) => {\n if (indexOrEllipsis === 'ellipsis') {\n return (\n <motion.div\n key={`ellipsis-${arrayIndex}`}\n className=\"h-8 flex items-center justify-center\"\n aria-hidden=\"true\"\n initial={{ opacity: 0, y: prevActiveIndex > activeIndex ? -20 : 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: prevActiveIndex > activeIndex ? 20 : -20 }}\n transition={{ duration: 0.2 }}\n >\n <ArrowsVertical className=\"size-4 text-foreground\" />\n </motion.div>\n );\n }\n\n const index = indexOrEllipsis;\n const question = questions[index];\n\n return (\n <motion.div\n key={index}\n className=\"relative group isolate\"\n role=\"listitem\"\n initial={{ opacity: 0, y: prevActiveIndex > activeIndex ? -20 : 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: prevActiveIndex > activeIndex ? 20 : -20 }}\n transition={{ duration: 0.2 }}\n layout\n >\n <TooltipProvider delayDuration={100}>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={() => onNavigate(index)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n onNavigate(index);\n }\n }}\n className={cn(\n 'flex items-center justify-center size-8 rounded-full transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 hover:opacity-90 cursor-pointer ring-primary ',\n index === activeIndex ? 'bg-primary text-primary-foreground' : 'bg-stone-300 text-zinc-800',\n )}\n aria-label={`Navigate to question ${index + 1}: ${question}`}\n aria-current={index === activeIndex ? 'step' : undefined}\n >\n {index + 1}\n </button>\n </TooltipTrigger>\n <TooltipContent\n side=\"right\"\n sideOffset={8}\n className=\"max-w-[300px] bg-card text-card-foreground border-foreground/35\"\n >\n <p className=\"break-words leading-relaxed\">{question}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </motion.div>\n );\n })}\n </AnimatePresence>\n </motion.div>\n </nav>\n );\n}\n","import { ArrowDown } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport { Button } from '@/components/ui/button';\n\ninterface ScrollToBottomArrowProps {\n onClick: () => void;\n}\n\nexport function ScrollToBottomArrow({ onClick }: ScrollToBottomArrowProps) {\n return (\n <Button\n size=\"icon\"\n variant=\"secondary\"\n className=\"fixed bottom-20 right-4 rounded-full transition-opacity duration-300 border-border shadow-md\"\n onClick={onClick}\n >\n <ArrowDown className=\"size-5\" />\n </Button>\n );\n}\n","import React, { useRef, useEffect, useState } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport {\n MagnifyingGlass,\n Image,\n X,\n ArrowRight,\n CaretRight,\n CaretDown,\n CheckCircle,\n Circle,\n} from '@phosphor-icons/react';\n\nimport { Button } from '../ui/button';\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '../ui/dropdown-menu';\nimport { Suggestion } from './types';\n\nimport { cn } from '@/lib/utils';\n\nexport const PrimarySearch = React.forwardRef<\n HTMLTextAreaElement,\n {\n query: string;\n onQueryChange: (query: string) => void;\n onSearch: () => void;\n textConfig: {\n searchPlaceholder?: string;\n attachImageText?: string;\n allDocumentsText?: string;\n };\n collections?: { id: string; name: string }[];\n currentCollectionId?: string;\n onCollectionChange?: (collectionId: string) => void;\n disableImageAttachment?: boolean;\n attachedImages?: { file: File; preview: string }[];\n onImageUpload?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onRemoveImage?: (index: number) => void;\n isSearching?: boolean;\n autocompleteSuggestions?: Suggestion[];\n onAutocompleteSuggestionSelect?: (suggestion: Suggestion) => void;\n }\n>(\n (\n {\n query,\n onQueryChange,\n onSearch,\n textConfig,\n collections = [],\n currentCollectionId,\n onCollectionChange,\n disableImageAttachment = false,\n attachedImages = [],\n onImageUpload,\n onRemoveImage,\n isSearching = false,\n autocompleteSuggestions = [],\n onAutocompleteSuggestionSelect,\n },\n ref,\n ) => {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [showSuggestions, setShowSuggestions] = useState(false);\n\n const adjustTextareaHeight = (textarea: HTMLTextAreaElement) => {\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n };\n\n const handleKeyPress = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n onSearch();\n }\n };\n\n // Close suggestions when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (!(event.target as Element).closest('.suggestions-dropdown')) {\n setShowSuggestions(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n // Show suggestions only when we have a query\n useEffect(() => {\n if (query.trim()) {\n setShowSuggestions(true);\n }\n }, [query]);\n\n const shouldShowSuggestions = showSuggestions && query.trim() && autocompleteSuggestions.length > 0;\n\n // Animation variants for consistent animations\n const dropdownVariants = {\n hidden: {\n opacity: 0,\n scale: 0.95,\n transformOrigin: 'top',\n },\n visible: {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n stiffness: 500,\n damping: 30,\n mass: 0.5,\n },\n },\n exit: {\n opacity: 0,\n scale: 0.95,\n transition: {\n duration: 0.15,\n ease: 'easeOut',\n },\n },\n };\n\n const itemVariants = {\n hidden: {\n opacity: 0,\n x: -4,\n },\n visible: {\n opacity: 1,\n x: 0,\n transition: {\n duration: 0.2,\n },\n },\n };\n\n const listVariants = {\n visible: {\n transition: {\n staggerChildren: 0.03,\n delayChildren: 0.05,\n },\n },\n };\n\n return (\n <div className=\"relative w-full\" data-name=\"PrimarySearch\">\n <div\n className={cn(\n 'w-full overflow-hidden bg-background border border-border transition-all',\n shouldShowSuggestions ? 'rounded-t-md' : 'rounded-md',\n )}\n >\n <div className=\"p-3 flex items-center bg-card\">\n <MagnifyingGlass className=\"h-5 w-5 mr-2 text-muted-foreground\" aria-hidden role=\"presentation\" />\n <textarea\n ref={ref}\n value={query}\n onChange={(e) => {\n onQueryChange(e.target.value);\n adjustTextareaHeight(e.target);\n }}\n onKeyDown={handleKeyPress}\n onFocus={() => setShowSuggestions(true)}\n placeholder={textConfig.searchPlaceholder}\n className=\"\n w-full\n resize-none\n !outline-none\n text-base\n py-1\n min-h-9\n overflow-hidden\n border-none\n bg-transparent\n shadow-none\n placeholder:text-gray-400\n text-dark-900\n dark:text-neutral-200\n !ring-0\n \"\n rows={1}\n />\n {isSearching && (\n <div className=\"flex items-center justify-center ml-2\">\n <div className=\"animate-spin rounded-full size-4 border-2 border-t-transparent border-primary\" />\n </div>\n )}\n </div>\n\n {!disableImageAttachment && attachedImages.length > 0 && (\n <div className=\"flex gap-2 mt-3 overflow-x-auto pb-1 px-3\">\n {attachedImages.map((image, index) => (\n <div key={index} className=\"relative group rounded-lg overflow-hidden flex-shrink-0 size-20\">\n <img src={image.preview} alt={`Attached ${index + 1}`} className=\"w-full h-full object-cover\" />\n <button\n onClick={() => onRemoveImage?.(index)}\n className=\"\n absolute\n top-1\n right-1\n rounded-full\n p-1\n opacity-0\n group-hover:opacity-100\n transition-opacity\n duration-200\n hover:bg-black/70\n bg-black/50\n \"\n >\n <X className=\"size-3 text-white\" aria-label=\"Remove image\" />\n </button>\n </div>\n ))}\n </div>\n )}\n\n {!shouldShowSuggestions && (\n <div className=\"flex items-center justify-between px-3 py-2 border-t border-border\">\n <div className=\"flex gap-1\">\n {collections.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"\n transition-all\n duration-200\n rounded-md\n h-8\n flex\n items-center\n gap-1\n hover:bg-opacity-80\n text-foreground\n \"\n >\n {collections.find((c) => c.id === currentCollectionId)?.name ||\n textConfig.allDocumentsText ||\n 'All documents'}\n <CaretDown className=\"size-4 text-secondary-foreground\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"max-w-48\">\n {collections.map((collection) => (\n <DropdownMenuItem key={collection.id} onClick={() => onCollectionChange?.(collection.id)}>\n {collection.id === currentCollectionId ? (\n <CheckCircle className=\"rounded-full text-primary-500 !size-5\" weight=\"fill\" />\n ) : (\n <Circle className=\"rounded-full !size-5 text-gray-300\" />\n )}\n <span className=\"text-sm truncate\">{collection.name}</span>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {!disableImageAttachment && (\n <>\n <input\n type=\"file\"\n ref={fileInputRef}\n accept=\"image/*\"\n multiple\n className=\"hidden\"\n onChange={onImageUpload}\n />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"rounded-md h-8 hover:bg-opacity-80 dark:text-neutral-200\"\n onClick={() => fileInputRef.current?.click()}\n aria-label={textConfig.attachImageText}\n >\n <Image className=\"size-4 text-secondary-foreground\" />\n <span className=\"hidden @sm:block\">{textConfig.attachImageText}</span>\n </Button>\n </>\n )}\n </div>\n\n <div className=\"flex items-center\">\n <Button\n size=\"sm\"\n disabled={!query || isSearching}\n aria-disabled={!query || isSearching}\n className=\"rounded-md size-8 disabled:opacity-50 bg-primary\"\n onClick={onSearch}\n >\n {isSearching ? (\n <div className=\"flex items-center\" role=\"status\" aria-live=\"polite\">\n <div\n className=\"animate-spin rounded-full size-4 border-2 border-t-transparent border-white\"\n aria-hidden=\"true\"\n />\n <span className=\"sr-only\">Loading</span>\n </div>\n ) : (\n <ArrowRight\n className=\"text-primary-foreground\"\n size={16}\n weight=\"bold\"\n aria-label=\"Submit question\"\n />\n )}\n </Button>\n </div>\n </div>\n )}\n </div>\n\n <AnimatePresence mode=\"wait\">\n {shouldShowSuggestions && (\n <motion.div\n variants={dropdownVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n className=\"\n suggestions-dropdown\n absolute\n left-0\n right-0\n z-50\n overflow-hidden\n bg-card\n border-border\n border-b border-l border-r border-solid rounded-b-md shadow-md -mt-px\n \"\n >\n {/* Current query suggestion - only on mobile */}\n <motion.div className=\"md:hidden\" variants={itemVariants}>\n {query.trim() && (\n <div\n role=\"option\"\n aria-selected={false}\n tabIndex={0}\n className=\"\n px-4 py-3\n cursor-pointer\n flex\n items-center\n gap-3\n transition-colors\n duration-200\n hover:bg-gray-50/50\n text-foreground\n bg-gray-100\n border-b border border-border\n dark:bg-slate-500\n dark:border-dark-800/20\n \"\n onClick={() => {\n onSearch();\n setShowSuggestions(false);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSearch();\n setShowSuggestions(false);\n }\n }}\n >\n <MagnifyingGlass className=\"size-4 flex-shrink-0 text-secondary-foreground\" />\n <span className=\"text-[15px]\">{query}</span>\n <div className=\"ml-auto flex items-center\">\n <CaretRight className=\"size-4 text-secondary-foreground\" />\n </div>\n </div>\n )}\n </motion.div>\n\n <motion.div variants={listVariants} initial=\"hidden\" animate=\"visible\">\n {autocompleteSuggestions.map((suggestion) => (\n <motion.div\n key={suggestion.id}\n variants={itemVariants}\n role=\"option\"\n aria-selected={false}\n tabIndex={0}\n className=\"px-4 py-3 cursor-pointer flex items-center gap-3 transition-colors duration-200 hover:bg-gray-200/50 text-foreground\"\n onClick={() => {\n onAutocompleteSuggestionSelect?.(suggestion);\n setShowSuggestions(false);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onAutocompleteSuggestionSelect?.(suggestion);\n setShowSuggestions(false);\n }\n }}\n >\n <MagnifyingGlass className=\"size-4 flex-shrink-0 text-secondary-foreground\" />\n <span className=\"text-[15px]\">{suggestion.question}</span>\n <div className=\"ml-auto flex items-center\">\n <CaretRight className=\"size-4 text-secondary-foreground\" />\n </div>\n </motion.div>\n ))}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n },\n);\n\nPrimarySearch.displayName = 'PrimarySearch';\n\nexport default PrimarySearch;\n","import React, { useRef, useState, useEffect } from 'react';\nimport { MagnifyingGlass, ArrowRight } from '@phosphor-icons/react';\nimport { motion } from 'framer-motion';\n\nimport styles from './FollowUpSearchBar.module.css';\nimport { Button } from '../ui/button';\nimport { Textarea } from '../ui/textarea';\nimport type { TextConfig } from './types';\n\nimport { cn } from '@/lib/utils';\n\ninterface FollowUpSearchBarProps {\n initialQuery?: string; // Initial query value (optional)\n onQueryChange: (query: string) => void; // Called on blur or enter key\n isSearching: boolean;\n handleFollowUpSearch: (query: string) => void;\n textConfig: TextConfig;\n}\n\nexport const FollowUpSearchBar = React.forwardRef<HTMLTextAreaElement, FollowUpSearchBarProps>(\n ({ initialQuery = '', onQueryChange, isSearching, handleFollowUpSearch, textConfig }, ref) => {\n // Use internal state instead of prop\n const [localQuery, setLocalQuery] = useState(initialQuery);\n\n const followUpInputRef = useRef<HTMLTextAreaElement | null>(null);\n const setCombinedRef = (instance: HTMLTextAreaElement | null) => {\n followUpInputRef.current = instance;\n if (typeof ref === 'function') {\n ref(instance);\n } else if (ref && 'current' in ref) {\n (ref as React.MutableRefObject<HTMLTextAreaElement | null>).current = instance;\n }\n };\n\n // Automatically adjust height based on content\n useEffect(() => {\n if (followUpInputRef.current) {\n followUpInputRef.current.style.height = 'inherit';\n followUpInputRef.current.style.height = `${followUpInputRef.current.scrollHeight}px`;\n }\n }, [localQuery]);\n\n // Reset local state when initialQuery changes (e.g., after search is performed)\n useEffect(() => {\n setLocalQuery(initialQuery);\n }, [initialQuery]);\n\n const handleKeyPress = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey && !isSearching) {\n e.preventDefault();\n const currentQuery = localQuery;\n onQueryChange(currentQuery); // Emit the query change to parent\n handleFollowUpSearch(currentQuery);\n // Clear the local state immediately\n setLocalQuery('');\n }\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setLocalQuery(e.target.value);\n };\n\n const handleBlur = () => {\n if (localQuery !== initialQuery) {\n onQueryChange(localQuery); // Emit the query change to parent on blur\n }\n };\n\n const handleSearchClick = () => {\n const currentQuery = localQuery;\n onQueryChange(currentQuery); // Emit the query change to parent\n handleFollowUpSearch(currentQuery);\n // Clear the local state immediately\n setLocalQuery('');\n };\n\n return (\n <motion.footer\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5 }}\n className={styles.followUpSearchBar}\n >\n <div className=\"container flex items-center justify-center p-3\">\n <div className=\"relative flex w-full items-center gap-2 rounded bg-card px-2 border border-dark-400\">\n <div className=\"size-6 flex flex-shrink-0 justify-center items-center\">\n <MagnifyingGlass className=\"size-5 text-secondary-foreground\" />\n </div>\n <Textarea\n ref={setCombinedRef}\n value={localQuery}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyPress}\n placeholder={textConfig.followUpPlaceholder}\n className=\"min-h-[44px] w-full resize-none border-0 shadow-none bg-transparent px-0 py-2.5 focus:outline-none focus:ring-0 focus-visible:ring-0\"\n rows={1}\n />\n <Button\n type=\"button\"\n size=\"icon\"\n disabled={isSearching || !localQuery.trim()}\n onClick={handleSearchClick}\n className={cn(\n 'size-8 shrink-0 rounded',\n localQuery ? 'bg-primary text-primary-foreground' : 'bg-dark-400 dark:bg-muted text-white',\n )}\n >\n {isSearching ? (\n <div className=\"animate-spin rounded-full size-4 sm:size-5 border-2 border-dark/40 !border-t-foreground dark:border-dark-500 \" />\n ) : (\n <ArrowRight className=\"size-6\" />\n )}\n </Button>\n </div>\n </div>\n </motion.footer>\n );\n },\n);\n\nFollowUpSearchBar.displayName = 'FollowUpSearchBar';\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { ArrowsOutSimple, ArrowsInSimple, ArrowLeft, X } from '@phosphor-icons/react';\n\nimport { Button } from '../ui/button';\nimport { useIsChatSearchDirty } from './hooks/useIsChatSearchDirty';\nimport { useChatSearch } from './ChatSearchContext';\n\nimport { cn } from '@/lib/utils';\n\ntype HeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n headerText: string;\n onToggleSizeButtonClick: () => void;\n onBackButtonClick: () => void;\n onCloseWidgetClick: () => void;\n};\n\nexport function Header({\n headerText,\n onToggleSizeButtonClick,\n onBackButtonClick,\n onCloseWidgetClick,\n className,\n ...props\n}: HeaderProps) {\n const isDirty = useIsChatSearchDirty();\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n const { isSearching, showMobileCloseWidgetButton: hideExpandButton } = useChatSearch();\n\n const handleToggleSizeButtonClick = () => {\n setIsExpanded((prev) => !prev);\n onToggleSizeButtonClick();\n };\n\n return (\n <div\n className={cn(\n 'w-full px-3 py-4 flex items-center justify-between',\n 'bg-primary h-14 leading-6',\n '@3xl:bg-transparent @3xl:h-auto @3xl:leading-normal',\n '@3xl:justify-center @3xl:space-y-4 @3xl:p-0',\n className,\n )}\n {...props}\n >\n <motion.h1\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, delay: 0.3 }}\n className=\"@3xl:text-5xl m-0 text-primary-foreground @3xl:text-foreground flex gap-1 items-center font-bold text-base\"\n >\n {isDirty && (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n onClick={onBackButtonClick}\n aria-label=\"Go back\"\n className=\"@3xl:hidden shrink-0\"\n disabled={isSearching}\n >\n <ArrowLeft />\n </Button>\n )}\n\n <span>{headerText}</span>\n </motion.h1>\n <div className=\"@3xl:hidden shrink-0\">\n {/* todo: conversation history button */}\n\n {!hideExpandButton && (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n onClick={handleToggleSizeButtonClick}\n aria-label={isExpanded ? 'Collapse widget' : 'Expand widget'}\n className=\"text-primary-foreground\"\n >\n {isExpanded ? <ArrowsInSimple /> : <ArrowsOutSimple />}\n </Button>\n )}\n <Button\n size=\"icon\"\n variant=\"ghost\"\n onClick={onCloseWidgetClick}\n aria-label=\"Close widget\"\n className=\"text-primary-foreground\"\n >\n <X />\n </Button>\n </div>\n </div>\n );\n}\n","import type { TextConfig as TextConfigType } from './types';\n\nexport type TextConfig = TextConfigType;\n\nexport const defaultTextConfig: TextConfig = {\n headerText: 'How can we help you today?',\n searchPlaceholder: 'Ask a question or type a search term here ...',\n attachImageText: 'Attach image',\n allDocumentsText: 'All documents',\n loadingSearchText: 'Searching for relevant content...',\n loadingAnswerText: 'Crafting a response...',\n errorText: 'Sorry, there was an error generating the answer.',\n followUpPlaceholder: 'Ask follow-up',\n positiveAnswerText: 'Helpful',\n negativeAnswerText: 'Not helpful',\n uncertaintyFallbackText: {\n 'en': \"Sorry, I can't find a clear answer to your question. Please try rephrasing or check the related sources below.\",\n 'es': 'Lo siento, no puedo encontrar una respuesta clara. Intente reformular la pregunta o consulte las fuentes relacionadas.',\n 'fr': 'Désolé, je ne trouve pas de réponse claire. Essayez de reformuler ou consultez les sources connexes.',\n 'de': 'Entschuldigung, ich finde keine klare Antwort. Versuchen Sie es anders zu formulieren oder sehen Sie sich die verwandten Quellen an.',\n 'it': 'Mi dispiace, non trovo una risposta chiara. Prova a riformulare o consulta le fonti correlate.',\n 'pt': 'Desculpe, não encontro uma resposta clara. Tente reformular ou consulte as fontes relacionadas.',\n 'nl': 'Sorry, ik kan geen duidelijk antwoord vinden. Probeer het anders te formuleren of bekijk de gerelateerde bronnen.',\n 'pl': 'Przepraszam, nie znajduję jasnej odpowiedzi. Spróbuj przeformułować pytanie lub sprawdź powiązane źródła.',\n 'ru': 'Извините, я не могу найти четкого ответа. Попробуйте переформулировать или ознакомьтесь со связанными источниками.',\n 'ja': '申し訳ありませんが、明確な回答が見つかりません。質問の言い換えや、関連ソースをご確認ください。',\n 'ko': '죄송합니다. 명확한 답변을 찾을 수 없습니다. 질문을 다시 작성하거나 관련 소스를 확인해 주세요.',\n 'zh': '抱歉,找不到明确的答案。请尝试重新表述或查看相关来源。',\n 'zh-TW': '抱歉,找不到明確的答案。請嘗試重新表述或查看相關來源。',\n },\n};\n","const clientExecutionEventType = 'CLIENT_EXECUTION';\nconst clientExecutionResultEventType = 'CLIENT_EXECUTION_RESULT';\n\ntype ClientActionExecutionResult =\n | {\n success: true;\n data: Record<string, any>;\n }\n | {\n reason: string;\n success: false;\n };\n\nexport const executeClientAction = (key: string, inputs: Record<string, any>) => {\n return new Promise<ClientActionExecutionResult>((resolve) => {\n // When the iFrame sends multiple messages to the parent window,\n // we use this to track which response belongs to which request.\n const messageId = crypto.randomUUID();\n\n const handleResponse = (\n event: MessageEvent<{\n type: string;\n messageId: string;\n result: ClientActionExecutionResult;\n }>,\n ) => {\n if (event.data.messageId === messageId && event.data.type === clientExecutionResultEventType) {\n window.removeEventListener('message', handleResponse);\n resolve(event.data.result);\n }\n };\n\n // Current window of execution\n window.addEventListener('message', handleResponse);\n\n // Send message to parent window\n window.parent.postMessage(\n {\n type: clientExecutionEventType,\n messageId,\n actionKey: key,\n inputs,\n },\n '*',\n );\n\n // Timeout after 5 seconds\n setTimeout(() => {\n window.removeEventListener('message', handleResponse);\n\n resolve({\n success: false,\n reason: `Client Action handler with key ${key} timed out`,\n });\n }, 5000);\n });\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const LoadingConversation = () => {\n return (\n <motion.div\n key=\"loading\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n className=\"w-full flex items-center justify-center py-20\"\n data-name=\"loading\"\n >\n <div className=\"flex flex-col items-center gap-4\">\n <div className=\"animate-spin rounded-full size-8 border-2 border-t-transparent border-primary\" />\n <p className=\"text-sm text-secondary-foreground\">Loading conversation...</p>\n </div>\n </motion.div>\n );\n};\n","import React, { createContext, useContext, ReactNode } from 'react';\n\nexport type FeatureFlags = { [key: string]: boolean | string | number };\n\nconst FeatureFlagContext = createContext<FeatureFlags | undefined>(undefined);\n\nexport function FeatureFlagProvider({ children, flags }: { children: ReactNode; flags: FeatureFlags | undefined }) {\n return <FeatureFlagContext.Provider value={flags ?? {}}>{children}</FeatureFlagContext.Provider>;\n}\n\nexport function useBooleanFlagValue(flagKey: string, defaultValue: boolean): boolean {\n const flags = useContext(FeatureFlagContext);\n\n if (!flags) {\n // eslint-disable-next-line no-console\n console.warn(`useBooleanFlagValue(\"${flagKey}\") used outside of FeatureFlagProvider. Returning default value.`);\n\n return defaultValue;\n }\n\n const value = flags[flagKey];\n\n if (value === undefined) {\n return defaultValue;\n }\n\n return Boolean(value);\n}\n","import { useState, useEffect, useCallback } from 'react';\n\nimport { fetchAutocomplete } from './api';\n\nimport type { Suggestion } from '@/components/chat-search/types';\n\nexport function useDebounce<T>(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n\nexport function useAutocomplete({\n query,\n endpoint,\n allowedRegions,\n collectionId,\n headers,\n conversationId,\n delay = 300,\n}: {\n query: string;\n endpoint: string;\n allowedRegions?: string[];\n collectionId?: string;\n headers?: Record<string, string>;\n conversationId?: string;\n delay?: number;\n}) {\n const [suggestions, setSuggestions] = useState<Suggestion[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string>();\n\n const debouncedQuery = useDebounce(query, delay);\n\n const fetchSuggestions = useCallback(async () => {\n if (!debouncedQuery.trim()) {\n setSuggestions([]);\n\n return;\n }\n\n setIsLoading(true);\n setError(undefined);\n\n try {\n const payload = await fetchAutocomplete({\n endpoint,\n query: debouncedQuery,\n collectionId,\n headers,\n conversationId,\n allowedRegions,\n });\n setSuggestions(payload?.response?.results);\n } catch (err) {\n console.error('Error fetching autocomplete suggestions:', err);\n setError(err instanceof Error ? err.message : 'Failed to fetch suggestions');\n setSuggestions([]);\n } finally {\n setIsLoading(false);\n }\n }, [debouncedQuery, endpoint, collectionId, headers, conversationId, allowedRegions]);\n\n useEffect(() => {\n void fetchSuggestions();\n }, [fetchSuggestions]);\n\n return { suggestions, isLoading, error };\n}\n","import React, { useState, useRef, useEffect, useImperativeHandle, forwardRef } from 'react';\nimport { AnimatePresence, motion } from 'framer-motion';\n\nimport { Suggestions } from './Suggestions';\nimport { Answer } from './Answer';\nimport { FollowUpQuestions } from './FollowUpQuestions';\nimport { NextBestActions } from './NextBestActions';\nimport { TimelineNavigation } from './TimelineNavigation';\nimport { ScrollToBottomArrow } from './ScrollToBottomArrow';\nimport { PrimarySearch } from './PrimarySearch';\nimport { FollowUpSearchBar } from './FollowUpSearchBar';\nimport { Header } from './Header';\nimport { defaultTextConfig } from './text-config';\nimport type {\n FeedbackResponse,\n ChatSearchState,\n Suggestion,\n ChatSearchProps,\n AnswerStreamEvent,\n ActionInputs,\n ActionClick,\n SearchQueryAttributes,\n ClientExecutionResult,\n} from './types';\nimport { useChatSearch, ChatSearchProvider } from './ChatSearchContext';\nimport { useConversationLoader, useScrollManager, useSubscriptionManager } from './hooks';\nimport { executeClientAction } from './helpers/excuteClientAction';\nimport {\n appendNewAnswer,\n setAnswerError,\n setUserFeedback,\n setFollowUpQuestions,\n appendAnswerChunk,\n clearAll,\n clearUserFeedback,\n completeAnswer,\n invokeAction,\n setSearchResults,\n markAsUncertain,\n getActionInputs,\n addActionButtons,\n noArticlesFound,\n} from './hooks/useAnswerList';\nimport { LoadingConversation } from './LoadingConversation';\n\nimport { FeatureFlagProvider } from '@/lib/feature-flags';\nimport { cn, isAnswerUncertain } from '@/lib/utils';\nimport { useAutocomplete } from '@/lib/hooks';\nimport {\n searchApi,\n sendFeedback,\n createConversationId,\n fetchFollowUpQuestions,\n fetchAnswerStream,\n sendFeedbackReason,\n} from '@/lib/api';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { MemoizedIcon } from '@/components/ui/icon';\n\nexport interface ChatSearchHandle {\n createNewThread: (firstQuery?: string) => void;\n showFollowUpThread: (show: boolean) => void;\n subscribeToStateChanges: (callback: (state: ChatSearchState) => void) => () => void;\n focusSearchField: () => void;\n showCloseButton: (showButton: boolean) => void;\n}\n\nconst ChatSearchComponent = forwardRef<ChatSearchHandle, ChatSearchProps>(\n (\n {\n suggestions: initialSuggestions = [],\n collections = [],\n selectedCollectionId,\n onCollectionChange,\n searchEndpoint,\n answerStreamEndpoint,\n feedbackEndpoint,\n feedbackReasonEndpoint,\n loadConversationEndpoint,\n autocompleteEndpoint,\n disableFollowUpQuestions = false,\n disableImageAttachment = false,\n disableFeedback = false,\n disclaimer,\n offset = 0,\n headers,\n textConfig = {},\n followUpQuestionsEndpoint,\n className,\n onToggleSizeButtonClick,\n trackEvent,\n onCloseWidget,\n isWidgetMode = true,\n nextBestActions,\n bodyActionButtons,\n onNextBestActionClick,\n userData,\n redirectRules,\n secretAttributes,\n allowedRegions,\n },\n ref,\n ) => {\n const {\n answers,\n answerListDispatch,\n query,\n setQuery,\n followUpQuery,\n setFollowUpQuery,\n isSearching,\n setIsSearching,\n showResults,\n setShowResults,\n activeAnswerIndex,\n setActiveAnswerIndex,\n conversationId: currentConversationId,\n setConversationId: setCurrentConversationId,\n clearConversationId: clearCurrentConversationId,\n isLoadingConversation,\n setShowMobileCloseWidgetButton,\n } = useChatSearch(); // Use the context\n\n const mergedTextConfig = { ...defaultTextConfig, ...textConfig };\n\n const [showScrollArrow, setShowScrollArrow] = useState(false);\n const [attachedImages, setAttachedImages] = useState<{ file: File; preview: string }[]>([]);\n const [currentCollectionId, setCurrentCollectionId] = useState<string | undefined>(selectedCollectionId);\n const [showFollowUp, setShowFollowUp] = useState(true);\n\n const primaryTextareaRef = useRef<HTMLTextAreaElement>(null);\n const answerRefs = useRef<(HTMLDivElement | null)[]>([]);\n const containerRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const primarySearchRef = useRef<HTMLTextAreaElement>(null);\n const followUpSearchRef = useRef<HTMLTextAreaElement>(null);\n\n // Use autocomplete hook if endpoint is provided\n const { suggestions: autocompleteSuggestions } = useAutocomplete({\n query,\n endpoint: autocompleteEndpoint || '',\n allowedRegions,\n collectionId: currentCollectionId,\n headers,\n conversationId: currentConversationId,\n delay: 300,\n });\n\n const { loadConversationById } = useConversationLoader({\n loadConversationEndpoint,\n headers,\n mergedTextConfig,\n });\n const { scrollToLastAnswer, scrollToAnswer } = useScrollManager(answerRefs, containerRef);\n const { subscribeToStateChanges } = useSubscriptionManager();\n\n const loadFollowUpQuestions = async (\n searchQueryId: string,\n conversationId?: string,\n ): Promise<string[] | undefined> => {\n // Fetch follow-up questions if needed\n if (!followUpQuestionsEndpoint || disableFollowUpQuestions) {\n return;\n }\n\n try {\n const questions = await fetchFollowUpQuestions({\n endpoint: followUpQuestionsEndpoint,\n searchQueryId,\n headers,\n conversationId,\n });\n\n return questions;\n } catch (error) {\n console.error('Error fetching follow-up questions:', error);\n\n return undefined;\n }\n };\n\n const processAnswerStream = async ({\n reader,\n searchQueryId,\n conversationId,\n onFirstEvent,\n }: {\n reader: ReadableStreamDefaultReader<Uint8Array>;\n searchQueryId: string;\n conversationId?: string;\n onFirstEvent?: () => void;\n }) => {\n let accumulatedAnswer = '';\n try {\n let done = false,\n isFirstEvent = true,\n searchIntentId: string | undefined,\n isUncertain = false,\n value;\n\n while ((({ done, value } = await reader.read()), !done)) {\n if (isFirstEvent) {\n isFirstEvent = false;\n onFirstEvent?.();\n }\n\n const lines = new TextDecoder()\n .decode(value)\n .split(/\\n\\n/)\n .filter((line) => line.startsWith('data: '))\n .map((line) => line.replace(/^data: /, '').trim());\n\n for (const line of lines) {\n try {\n const event = JSON.parse(line) as AnswerStreamEvent;\n\n if (event.type === 'answer-text-chunk') {\n accumulatedAnswer += event.content;\n\n answerListDispatch(\n appendAnswerChunk({\n text: event.content,\n }),\n );\n\n const uncertaintyCheck = isAnswerUncertain(accumulatedAnswer);\n isUncertain = uncertaintyCheck.uncertain;\n\n if (isUncertain) {\n const uncertaintyText =\n mergedTextConfig.uncertaintyFallbackText?.[uncertaintyCheck.language ?? 'en'] ??\n accumulatedAnswer ??\n \"I don't know.\";\n\n answerListDispatch(markAsUncertain({ uncertaintyText }));\n }\n }\n\n if (event.type === 'action-buttons') {\n searchIntentId = event.searchIntentId;\n answerListDispatch(\n addActionButtons({\n searchIntentId,\n actions: event.actions,\n }),\n );\n }\n\n if (event.type === 'get-action-inputs') {\n searchIntentId = event.searchIntentId;\n\n answerListDispatch(\n getActionInputs({\n searchIntentId: event.searchIntentId,\n inputs: event.inputs,\n actionId: event.actionId,\n schema: event.schema,\n initialValues: event.values,\n onSubmit: async (parameters) => {\n if (event.actionType === 'client_execution') {\n const results = await executeClientAction(event.actionKey, parameters);\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return generateAnswerForClientAction({\n searchQueryId,\n conversationId,\n searchIntentId: event.searchIntentId,\n actionId: event.actionId,\n results,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return generateAnswerForAction({\n searchQueryId,\n conversationId,\n searchIntentId: event.searchIntentId,\n actionId: event.actionId,\n parameters,\n });\n },\n }),\n );\n }\n } catch {\n console.warn('Failed to parse answer stream block');\n }\n }\n }\n\n return { answer: accumulatedAnswer, searchIntentId, isUncertain };\n } finally {\n reader.releaseLock();\n }\n };\n\n const generateAnswerForQuery = async ({\n searchQueryId,\n conversationId,\n }: {\n searchQueryId: string;\n conversationId?: string;\n }) => {\n try {\n const followUpQuestions = loadFollowUpQuestions(searchQueryId);\n\n const response = await fetchAnswerStream({\n endpoint: answerStreamEndpoint,\n headers,\n body: {\n type: 'generate-for-query',\n conversationId,\n searchQueryId,\n },\n });\n\n const reader = response.body?.getReader();\n if (!reader) return;\n\n const { answer, searchIntentId, isUncertain } = await processAnswerStream({\n reader,\n searchQueryId,\n conversationId,\n onFirstEvent: () => {\n trackEvent?.('First Streamed Answer Chunk Received', { conversationId, searchQueryId });\n },\n });\n\n if (!answer) return;\n\n // load follow-up questions if no search intent id is returned - i.e. no search intent was matched\n void followUpQuestions.then((questions) => {\n if (questions && questions.length > 0 && !searchIntentId) {\n answerListDispatch(setFollowUpQuestions({ questions }));\n }\n });\n\n if (isUncertain) {\n trackEvent?.('Answer Not Found', { conversationId, searchQueryId });\n } else {\n trackEvent?.('Answer Found', { conversationId, searchQueryId });\n }\n } catch (e) {\n console.error('Error generating answer for query:', e);\n answerListDispatch(setAnswerError({ error: mergedTextConfig.errorText || 'An error occurred.' }));\n } finally {\n answerListDispatch(completeAnswer());\n }\n };\n\n const generateAnswerForAction = async ({\n searchQueryId,\n searchIntentId,\n conversationId,\n actionId,\n parameters,\n }: {\n searchQueryId: string;\n conversationId?: string;\n searchIntentId: string;\n actionId: string;\n parameters: ActionInputs;\n }) => {\n answerListDispatch(invokeAction());\n\n try {\n const response = await fetchAnswerStream({\n endpoint: answerStreamEndpoint,\n headers,\n body: {\n type: 'invoke-action',\n conversationId,\n searchQueryId,\n searchIntentId,\n actionId,\n parameters,\n },\n });\n\n const reader = response.body?.getReader();\n if (!reader) return;\n\n await processAnswerStream({\n reader,\n searchQueryId,\n });\n } catch (e) {\n console.error('Error generating answer for action:', e);\n answerListDispatch(setAnswerError({ error: mergedTextConfig.errorText || 'An error occurred.' }));\n } finally {\n answerListDispatch(completeAnswer());\n setIsSearching(false);\n }\n };\n\n const generateAnswerForClientAction = async ({\n searchQueryId,\n searchIntentId,\n conversationId,\n actionId,\n results,\n }: {\n searchQueryId: string;\n conversationId?: string;\n searchIntentId: string;\n actionId: string;\n results: ClientExecutionResult;\n }) => {\n answerListDispatch(invokeAction());\n\n try {\n const response = await fetchAnswerStream({\n endpoint: answerStreamEndpoint,\n headers,\n body: {\n type: 'client-execution-result',\n conversationId,\n searchQueryId,\n searchIntentId,\n actionId,\n results,\n },\n });\n\n const reader = response.body?.getReader();\n if (!reader) return;\n\n await processAnswerStream({\n reader,\n searchQueryId,\n });\n } catch (e) {\n console.error('Error generating answer for action:', e);\n answerListDispatch(setAnswerError({ error: mergedTextConfig.errorText || 'An error occurred.' }));\n } finally {\n answerListDispatch(completeAnswer());\n setIsSearching(false);\n }\n };\n\n // Function to handle search API call\n const handleSearchApiCall = async ({\n searchQuery,\n conversationId,\n attributes,\n secretAttributes,\n allowedRegions,\n }: {\n searchQuery: string;\n conversationId?: string;\n attributes?: SearchQueryAttributes;\n secretAttributes?: string;\n allowedRegions?: string[];\n }) => {\n const searchResponse = await searchApi({\n endpoint: searchEndpoint,\n query: searchQuery,\n collectionId: currentCollectionId,\n headers,\n conversationId,\n attributes,\n secretAttributes,\n allowedRegions,\n });\n\n if (searchResponse.results.length === 0) {\n trackEvent?.('No Articles Found', { conversationId, searchQuery });\n\n return;\n }\n\n answerListDispatch(\n setSearchResults({\n searchQueryId: searchResponse.searchQueryId,\n results: searchResponse.results,\n }),\n );\n\n return searchResponse.searchQueryId;\n };\n\n interface PerformSearchProps {\n searchQuery: string;\n event?: { name: string; metaData?: Record<string, any> };\n }\n // Main function to perform the search\n const performSearch = async ({ searchQuery = query.trim(), event }: PerformSearchProps) => {\n if (!searchQuery) return;\n\n const conversationId = currentConversationId || createConversationId();\n setCurrentConversationId(conversationId);\n\n setIsSearching(true);\n setShowResults(true);\n setActiveAnswerIndex(answers.length);\n scrollToLastAnswer();\n\n answerListDispatch(\n appendNewAnswer({\n query: searchQuery,\n }),\n );\n\n // ensure the UI updates before the search API call\n await Promise.resolve();\n\n // focus on follow-up search field if it's visible\n followUpSearchRef.current?.focus();\n\n try {\n const attributes = { ...userData } as SearchQueryAttributes;\n const searchQueryId = await handleSearchApiCall({\n searchQuery,\n conversationId,\n attributes,\n secretAttributes,\n allowedRegions,\n });\n\n if (searchQueryId) {\n event &&\n trackEvent?.(event.name, {\n conversationId,\n searchQuery,\n searchQueryId,\n ...event.metaData,\n });\n\n await generateAnswerForQuery({\n searchQueryId,\n conversationId,\n });\n } else {\n answerListDispatch(noArticlesFound());\n }\n } catch (error) {\n console.error('Error generating answer:', error);\n\n // track the error event\n event &&\n trackEvent?.(`${event.name} - Search Error`, {\n conversationId,\n searchQuery,\n ...event.metaData,\n });\n\n answerListDispatch(setAnswerError({ error: mergedTextConfig.errorText || 'An error occurred.' }));\n } finally {\n setIsSearching(false);\n }\n };\n\n const createNewThread = (firstQuery?: string) => {\n // If firstQuery is provided, set it and trigger search\n if (firstQuery) {\n setQuery(firstQuery);\n void performSearch({ searchQuery: firstQuery, event: { name: 'New Thread Created with Query' } });\n\n return;\n }\n\n setQuery('');\n setFollowUpQuery('');\n setShowResults(false);\n answerListDispatch(clearAll());\n setActiveAnswerIndex(0);\n setAttachedImages([]);\n clearCurrentConversationId();\n\n trackEvent?.('New Thread Created', { oldConversationId: currentConversationId });\n\n if (primaryTextareaRef.current) {\n primaryTextareaRef.current.style.height = 'auto';\n }\n };\n\n // Expose the methods via ref\n useImperativeHandle(ref, () => ({\n createNewThread,\n showFollowUpThread: (show: boolean) => {\n setShowFollowUp(show);\n },\n subscribeToStateChanges,\n focusSearchField: () => primarySearchRef.current?.focus() || followUpSearchRef.current?.focus(),\n showCloseButton: (showButton: boolean = true) => {\n setShowMobileCloseWidgetButton(showButton);\n },\n }));\n\n // Update currentCollectionId when selectedCollectionId prop changes\n useEffect(() => {\n setCurrentCollectionId(selectedCollectionId);\n }, [selectedCollectionId]);\n\n const adjustTextareaHeight = (textarea: HTMLTextAreaElement) => {\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n };\n\n // Function to initiate a primary search\n const handlePrimarySearch = async (searchQuery: string = query.trim()) => {\n await performSearch({ searchQuery, event: { name: 'Primary Field Search Submitted' } });\n };\n\n const handleFeedback = async (response: FeedbackResponse, searchQueryId: string, answerIndex: number) => {\n if (!feedbackEndpoint) return;\n\n // Update UI state immediately\n answerListDispatch(\n setUserFeedback({\n feedback: response,\n index: answerIndex,\n }),\n );\n\n try {\n await sendFeedback({\n endpoint: feedbackEndpoint,\n searchQueryId,\n response,\n headers,\n conversationId: currentConversationId,\n });\n\n trackEvent?.(response === 'accept' ? 'Answer Accepted' : 'Answer Rejected', {\n conversationId: currentConversationId,\n searchQueryId,\n });\n } catch (error) {\n console.error('Error sending feedback:', error);\n // Revert UI state on error\n answerListDispatch(\n clearUserFeedback({\n index: answerIndex,\n }),\n );\n }\n };\n\n const handleFeedbackReasonSubmit = async (reason: string, searchQueryId: string) => {\n if (!feedbackReasonEndpoint) return;\n\n try {\n await sendFeedbackReason({\n endpoint: feedbackReasonEndpoint,\n searchQueryId,\n reason,\n headers,\n });\n } catch (error) {\n console.error('Error sending feedback reason:', error);\n }\n };\n\n const handleFollowUpSearch = async (customQuery?: string) => {\n // Use customQuery if provided, otherwise use the state value\n const queryToUse = customQuery !== undefined ? customQuery : followUpQuery;\n\n if (queryToUse.trim()) {\n setQuery(queryToUse);\n setFollowUpQuery('');\n await performSearch({ searchQuery: queryToUse, event: { name: 'Follow-up Search Field Submitted' } });\n }\n };\n\n const handleSuggestedQuestionClick = (suggestion: Suggestion) => {\n if (suggestion.conversationId) {\n trackEvent?.('Recent Conversation Clicked', {\n conversationId: currentConversationId,\n question: suggestion.question,\n });\n loadConversationById(suggestion.conversationId);\n\n return;\n }\n\n void performSearch({ searchQuery: suggestion.question, event: { name: 'Suggested Question Clicked' } });\n };\n\n const handleAutocompleteSuggestionClick = (suggestion: Suggestion) => {\n // autocomplete suggestions don't have conversation ids\n void performSearch({ searchQuery: suggestion.question, event: { name: 'Autocomplete Suggestion Clicked' } });\n };\n\n useEffect(() => {\n const handleScroll = () => {\n const isNearBottom = window.innerHeight + window.pageYOffset >= document.documentElement.scrollHeight - 100;\n setShowScrollArrow(!isNearBottom);\n };\n\n window.addEventListener('scroll', handleScroll);\n\n return () => window.removeEventListener('scroll', handleScroll);\n }, []);\n\n useEffect(() => {\n return () => {\n attachedImages.forEach((image) => URL.revokeObjectURL(image.preview));\n };\n }, [attachedImages]);\n\n const handleImageUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\n const files = event.target.files;\n if (files) {\n const newImages = Array.from(files).map((file) => ({\n file,\n preview: URL.createObjectURL(file),\n }));\n setAttachedImages((prev) => [...prev, ...newImages]);\n }\n if (fileInputRef.current) {\n fileInputRef.current.value = '';\n }\n };\n\n const removeImage = (index: number) => {\n setAttachedImages((prev) => {\n URL.revokeObjectURL(prev[index].preview);\n\n return prev.filter((_, i) => i !== index);\n });\n };\n\n const handleCollectionChange = (collectionId: string) => {\n setCurrentCollectionId(collectionId);\n onCollectionChange?.(collectionId);\n };\n\n // Listen for URL changes and reset state when conversation param is removed\n useEffect(() => {\n const handleUrlChange = () => {\n const urlParams = new URLSearchParams(window.location.search);\n const urlConversationId = urlParams.get('conversation');\n\n if (!urlConversationId) {\n setQuery('');\n setFollowUpQuery('');\n setShowResults(false);\n answerListDispatch(clearAll());\n setActiveAnswerIndex(0);\n setAttachedImages([]);\n if (primaryTextareaRef.current) {\n primaryTextareaRef.current.style.height = 'auto';\n }\n }\n };\n\n window.addEventListener('popstate', handleUrlChange);\n\n return () => window.removeEventListener('popstate', handleUrlChange);\n }, []);\n\n // Update the follow-up question click handler to use performSearch\n const handleFollowUpQuestionClick = (question: string) => {\n trackEvent?.('Follow-up Question Clicked', { conversationId: currentConversationId, question });\n void performSearch({ searchQuery: question, event: { name: 'Follow-up Question Clicked' } });\n };\n\n // handle the next best action click\n const handleNextBestActionClick = ({ action, searchQueryId, query, answer }: ActionClick) => {\n trackEvent?.('Next Best Action Clicked', {\n conversationId: currentConversationId,\n searchQueryId,\n action: action.label,\n });\n onNextBestActionClick?.({ action, searchQueryId, query, answer });\n };\n\n return (\n <div\n className={cn('w-full relative h-dvh flex flex-col justify-between @container', className)}\n data-name=\"ChatSearch\"\n >\n {/* Always show the header when in widget mode, or when there are no results */}\n {(isWidgetMode || !showResults) && (\n <Header\n data-name=\"Header\"\n headerText={mergedTextConfig.headerText!}\n onToggleSizeButtonClick={() => {\n onToggleSizeButtonClick?.();\n }}\n onBackButtonClick={() => void createNewThread()}\n onCloseWidgetClick={() => onCloseWidget?.()}\n className=\"@3xl:mb-4\"\n />\n )}\n <ScrollArea className=\"w-full relative h-auto flex-grow\" ref={containerRef}>\n <AnimatePresence>\n {isLoadingConversation ? (\n <LoadingConversation />\n ) : !showResults ? (\n <>\n {/* Finished loading conversation, no results yet, show search experience */}\n <motion.div\n key=\"search\"\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5 }}\n className=\"w-full\"\n >\n {/* Primary Search */}\n <div className=\"pb-4 px-3 bg-primary @3xl:px-0 @3xl:bg-transparent\">\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, delay: 0.4 }}\n >\n <PrimarySearch\n ref={primarySearchRef}\n query={query}\n onQueryChange={(value) => {\n setQuery(value);\n if (primaryTextareaRef.current) {\n adjustTextareaHeight(primaryTextareaRef.current);\n }\n }}\n onSearch={() => void handlePrimarySearch()}\n textConfig={mergedTextConfig}\n collections={collections}\n currentCollectionId={currentCollectionId}\n onCollectionChange={handleCollectionChange}\n disableImageAttachment={disableImageAttachment}\n attachedImages={attachedImages}\n onImageUpload={handleImageUpload}\n onRemoveImage={removeImage}\n isSearching={isSearching}\n autocompleteSuggestions={autocompleteSuggestions}\n onAutocompleteSuggestionSelect={handleAutocompleteSuggestionClick}\n />\n </motion.div>\n </div>\n\n {/* Suggestions */}\n <Suggestions\n suggestions={initialSuggestions}\n onQuestionClick={handleSuggestedQuestionClick}\n title={mergedTextConfig.suggestionsTitle}\n />\n\n {/* Body Action Buttons */}\n {bodyActionButtons && bodyActionButtons.length > 0 && (\n <div className=\"mt-4 mb-4 px-3 @3xl:px-0\">\n <div className=\"space-y-3\">\n <NextBestActions\n nextBestActions={bodyActionButtons || []}\n onActionClick={(action) =>\n handleNextBestActionClick({\n action,\n searchQueryId: '',\n query: '',\n answer: '',\n })\n }\n />\n </div>\n </div>\n )}\n </motion.div>\n </>\n ) : (\n <>\n {/* We now have answers, so we can show the results */}\n <motion.div\n key=\"results\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.5 }}\n className=\"w-full max-w-[100vw] space-y-4 p-3 md:p-4\"\n >\n {/* Answers */}\n {answers.map((answer, i) => (\n <motion.div\n key={i}\n ref={(el) => (answerRefs.current[i] = el)}\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, delay: i * 0.1 }}\n >\n <Answer\n index={i}\n blocks={answer.blocks}\n question={answer.question}\n state={answer.state}\n searchResults={answer.searchResults}\n searchQueryId={answer.searchQueryId}\n feedback={answer.feedback}\n onFeedback={(response) => void handleFeedback(response, answer.searchQueryId!, i)}\n disableFeedback={disableFeedback}\n textConfig={mergedTextConfig}\n redirectRules={redirectRules}\n nextBestActions={nextBestActions}\n actions={answer.actions}\n handleActionClick={handleNextBestActionClick}\n isLastAnswer={i === answers.length - 1}\n onFeedbackReasonSubmit={(reason) =>\n void handleFeedbackReasonSubmit(reason, answer.searchQueryId!)\n }\n />\n {i === answers.length - 1 &&\n !disableFollowUpQuestions &&\n answer.followUpQuestions &&\n answer.state === 'completed' && (\n <div className=\"mt-4\">\n <FollowUpQuestions\n questions={answer.followUpQuestions}\n onQuestionClick={handleFollowUpQuestionClick}\n />\n </div>\n )}\n </motion.div>\n ))}\n </motion.div>\n </>\n )}\n </AnimatePresence>\n {showResults && answers.length > 1 && (\n <div className=\"hidden lg:block\">\n <TimelineNavigation\n questions={answers.map((a) => a.question)}\n activeIndex={activeAnswerIndex}\n onNavigate={(index) => {\n setActiveAnswerIndex(index);\n scrollToAnswer(index);\n }}\n offset={offset}\n />\n </div>\n )}\n\n {disclaimer && !(showResults && showFollowUp) && (\n <div className=\"mt-2 px-3 @3xl:px-0 text-xs text-dark-500 flex items-center gap-1 absolute bottom-12 justify-center text-center w-full\">\n <MemoizedIcon iconName=\"Info\" className=\"size-4\" />\n {disclaimer}\n </div>\n )}\n </ScrollArea>\n\n {showResults && showFollowUp && (\n <FollowUpSearchBar\n ref={followUpSearchRef}\n initialQuery={followUpQuery}\n onQueryChange={setFollowUpQuery}\n isSearching={isSearching}\n handleFollowUpSearch={handleFollowUpSearch}\n textConfig={mergedTextConfig}\n />\n )}\n\n {showScrollArrow && showResults && <ScrollToBottomArrow onClick={scrollToLastAnswer} />}\n </div>\n );\n },\n);\n\nChatSearchComponent.displayName = 'ChatSearch';\n\nconst ChatSearch = forwardRef<ChatSearchHandle, ChatSearchProps>(({ featureFlags, ...props }, ref) => (\n <FeatureFlagProvider flags={featureFlags}>\n <ChatSearchProvider searchPath={props.searchPath}>\n <ChatSearchComponent {...props} ref={ref} />\n </ChatSearchProvider>\n </FeatureFlagProvider>\n));\n\nChatSearch.displayName = 'ChatSearch';\n\nexport default ChatSearch;\n"],"names":["React","require$$0","require$$1","names_1","names","require$$2","require$$3","require$$4","jsonSchemaTraverseModule","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","s","o","r","e","ajvResolver","MotionButton","ActionType","NextBestActionType","action","conversationId","secretAttributes","allowedRegions","query"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]}
1
+ {"version":3,"file":"ChatSearch.C05QyX0s.js","sources":["../../../src/components/chat-search/Suggestions.tsx","../../../../../node_modules/ajv/dist/compile/codegen/code.js","../../../../../node_modules/ajv/dist/compile/codegen/scope.js","../../../../../node_modules/ajv/dist/compile/codegen/index.js","../../../../../node_modules/ajv/dist/compile/util.js","../../../../../node_modules/ajv/dist/compile/names.js","../../../../../node_modules/ajv/dist/compile/errors.js","../../../../../node_modules/ajv/dist/compile/validate/boolSchema.js","../../../../../node_modules/ajv/dist/compile/rules.js","../../../../../node_modules/ajv/dist/compile/validate/applicability.js","../../../../../node_modules/ajv/dist/compile/validate/dataType.js","../../../../../node_modules/ajv/dist/compile/validate/defaults.js","../../../../../node_modules/ajv/dist/vocabularies/code.js","../../../../../node_modules/ajv/dist/compile/validate/keyword.js","../../../../../node_modules/ajv/dist/compile/validate/subschema.js","../../../../../node_modules/fast-deep-equal/index.js","../../../../../node_modules/json-schema-traverse/index.js","../../../../../node_modules/ajv/dist/compile/resolve.js","../../../../../node_modules/ajv/dist/compile/validate/index.js","../../../../../node_modules/ajv-errors/dist/index.js","../../../../../node_modules/@hookform/resolvers/ajv/dist/ajv.mjs","../../../src/components/chat-search/blocks/ActionInputForm.tsx","../../../src/components/chat-search/blocks/ActionButtons.tsx","../../../src/components/chat-search/blocks/MarkdownText.tsx","../../../src/components/chat-search/AnswerBlock.tsx","../../../src/components/chat-search/blocks/utils.ts","../../../src/components/ui/icon.tsx","../../../src/components/chat-search/NextBestActions.tsx","../../../src/components/chat-search/types.ts","../../../src/components/chat-search/helpers/nextBestActions.ts","../../../src/components/chat-search/AnswerActions.tsx","../../../src/components/chat-search/hooks/useAnswerList.ts","../../../src/components/chat-search/hooks/useConversationId.ts","../../../src/components/chat-search/ChatSearchContext.tsx","../../../src/components/chat-search/hooks/useIsChatSearchDirty.ts","../../../src/components/chat-search/hooks/useScrollManager.ts","../../../src/lib/fetchClient.ts","../../../src/lib/api.ts","../../../src/components/chat-search/hooks/useConversationLoader.ts","../../../src/components/chat-search/hooks/useSubscriptionManager.ts","../../../src/components/chat-search/Answer.tsx","../../../src/components/chat-search/FollowUpQuestions.tsx","../../../src/components/chat-search/TimelineNavigation.tsx","../../../src/components/chat-search/ScrollToBottomArrow.tsx","../../../src/components/chat-search/PrimarySearch.tsx","../../../src/components/chat-search/FollowUpSearchBar.tsx","../../../src/components/chat-search/Header.tsx","../../../src/components/chat-search/text-config.ts","../../../src/components/chat-search/helpers/excuteClientAction.ts","../../../src/components/chat-search/LoadingConversation.tsx","../../../src/lib/feature-flags.tsx","../../../src/lib/hooks.ts","../../../src/components/chat-search/ChatSearch.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../ui/tooltip';\nimport { Button } from '../ui/button';\nimport { Suggestion } from './types';\n\ninterface SuggestionsProps {\n suggestions: Suggestion[];\n onQuestionClick: (suggestion: Suggestion) => void;\n title?: string;\n}\n\nexport function Suggestions({ suggestions, onQuestionClick, title = 'Suggested questions' }: SuggestionsProps) {\n if (!suggestions || suggestions.length === 0) return null;\n\n return (\n <div className=\"w-full p-3\" data-name=\"Suggestions\">\n <h3 className=\"text-base font-medium mb-4 text-foreground\">{title}</h3>\n <div className=\"flex flex-wrap gap-2\">\n {suggestions.map((suggestion) => (\n <Button\n key={suggestion.id}\n onClick={() => onQuestionClick(suggestion)}\n variant=\"outline\"\n className=\"border-border font-normal whitespace-normal h-auto text-left\"\n >\n {suggestion.messageCount !== undefined && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"bg-gray-100 text-gray-600 px-2 py-0.5 rounded-full text-xs min-w-[20px] border flex items-center justify-center border-border\">\n {suggestion.messageCount}\n </span>\n </TooltipTrigger>\n <TooltipContent>\n <p>{suggestion.messageCount} messages in this conversation</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n <span className=\"\">{suggestion.question}</span>\n </Button>\n ))}\n </div>\n </div>\n );\n}\n\nexport default Suggestions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nclass _CodeOrName {\n}\nexports._CodeOrName = _CodeOrName;\nexports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nclass Name extends _CodeOrName {\n constructor(s) {\n super();\n if (!exports.IDENTIFIER.test(s))\n throw new Error(\"CodeGen: name must be a valid identifier\");\n this.str = s;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n return false;\n }\n get names() {\n return { [this.str]: 1 };\n }\n}\nexports.Name = Name;\nclass _Code extends _CodeOrName {\n constructor(code) {\n super();\n this._items = typeof code === \"string\" ? [code] : code;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n if (this._items.length > 1)\n return false;\n const item = this._items[0];\n return item === \"\" || item === '\"\"';\n }\n get str() {\n var _a;\n return ((_a = this._str) !== null && _a !== void 0 ? _a : (this._str = this._items.reduce((s, c) => `${s}${c}`, \"\")));\n }\n get names() {\n var _a;\n return ((_a = this._names) !== null && _a !== void 0 ? _a : (this._names = this._items.reduce((names, c) => {\n if (c instanceof Name)\n names[c.str] = (names[c.str] || 0) + 1;\n return names;\n }, {})));\n }\n}\nexports._Code = _Code;\nexports.nil = new _Code(\"\");\nfunction _(strs, ...args) {\n const code = [strs[0]];\n let i = 0;\n while (i < args.length) {\n addCodeArg(code, args[i]);\n code.push(strs[++i]);\n }\n return new _Code(code);\n}\nexports._ = _;\nconst plus = new _Code(\"+\");\nfunction str(strs, ...args) {\n const expr = [safeStringify(strs[0])];\n let i = 0;\n while (i < args.length) {\n expr.push(plus);\n addCodeArg(expr, args[i]);\n expr.push(plus, safeStringify(strs[++i]));\n }\n optimize(expr);\n return new _Code(expr);\n}\nexports.str = str;\nfunction addCodeArg(code, arg) {\n if (arg instanceof _Code)\n code.push(...arg._items);\n else if (arg instanceof Name)\n code.push(arg);\n else\n code.push(interpolate(arg));\n}\nexports.addCodeArg = addCodeArg;\nfunction optimize(expr) {\n let i = 1;\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1]);\n if (res !== undefined) {\n expr.splice(i - 1, 3, res);\n continue;\n }\n expr[i++] = \"+\";\n }\n i++;\n }\n}\nfunction mergeExprItems(a, b) {\n if (b === '\"\"')\n return a;\n if (a === '\"\"')\n return b;\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"')\n return;\n if (typeof b != \"string\")\n return `${a.slice(0, -1)}${b}\"`;\n if (b[0] === '\"')\n return a.slice(0, -1) + b.slice(1);\n return;\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name))\n return `\"${a}${b.slice(1)}`;\n return;\n}\nfunction strConcat(c1, c2) {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str `${c1}${c2}`;\n}\nexports.strConcat = strConcat;\n// TODO do not allow arrays here\nfunction interpolate(x) {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x);\n}\nfunction stringify(x) {\n return new _Code(safeStringify(x));\n}\nexports.stringify = stringify;\nfunction safeStringify(x) {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\nexports.safeStringify = safeStringify;\nfunction getProperty(key) {\n return typeof key == \"string\" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _ `[${key}]`;\n}\nexports.getProperty = getProperty;\n//Does best effort to format the name properly\nfunction getEsmExportName(key) {\n if (typeof key == \"string\" && exports.IDENTIFIER.test(key)) {\n return new _Code(`${key}`);\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`);\n}\nexports.getEsmExportName = getEsmExportName;\nfunction regexpCode(rx) {\n return new _Code(rx.toString());\n}\nexports.regexpCode = regexpCode;\n//# sourceMappingURL=code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0;\nconst code_1 = require(\"./code\");\nclass ValueError extends Error {\n constructor(name) {\n super(`CodeGen: \"code\" for ${name} not defined`);\n this.value = name.value;\n }\n}\nvar UsedValueState;\n(function (UsedValueState) {\n UsedValueState[UsedValueState[\"Started\"] = 0] = \"Started\";\n UsedValueState[UsedValueState[\"Completed\"] = 1] = \"Completed\";\n})(UsedValueState || (exports.UsedValueState = UsedValueState = {}));\nexports.varKinds = {\n const: new code_1.Name(\"const\"),\n let: new code_1.Name(\"let\"),\n var: new code_1.Name(\"var\"),\n};\nclass Scope {\n constructor({ prefixes, parent } = {}) {\n this._names = {};\n this._prefixes = prefixes;\n this._parent = parent;\n }\n toName(nameOrPrefix) {\n return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix);\n }\n name(prefix) {\n return new code_1.Name(this._newName(prefix));\n }\n _newName(prefix) {\n const ng = this._names[prefix] || this._nameGroup(prefix);\n return `${prefix}${ng.index++}`;\n }\n _nameGroup(prefix) {\n var _a, _b;\n if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`);\n }\n return (this._names[prefix] = { prefix, index: 0 });\n }\n}\nexports.Scope = Scope;\nclass ValueScopeName extends code_1.Name {\n constructor(prefix, nameStr) {\n super(nameStr);\n this.prefix = prefix;\n }\n setValue(value, { property, itemIndex }) {\n this.value = value;\n this.scopePath = (0, code_1._) `.${new code_1.Name(property)}[${itemIndex}]`;\n }\n}\nexports.ValueScopeName = ValueScopeName;\nconst line = (0, code_1._) `\\n`;\nclass ValueScope extends Scope {\n constructor(opts) {\n super(opts);\n this._values = {};\n this._scope = opts.scope;\n this.opts = { ...opts, _n: opts.lines ? line : code_1.nil };\n }\n get() {\n return this._scope;\n }\n name(prefix) {\n return new ValueScopeName(prefix, this._newName(prefix));\n }\n value(nameOrPrefix, value) {\n var _a;\n if (value.ref === undefined)\n throw new Error(\"CodeGen: ref must be passed in value\");\n const name = this.toName(nameOrPrefix);\n const { prefix } = name;\n const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref;\n let vs = this._values[prefix];\n if (vs) {\n const _name = vs.get(valueKey);\n if (_name)\n return _name;\n }\n else {\n vs = this._values[prefix] = new Map();\n }\n vs.set(valueKey, name);\n const s = this._scope[prefix] || (this._scope[prefix] = []);\n const itemIndex = s.length;\n s[itemIndex] = value.ref;\n name.setValue(value, { property: prefix, itemIndex });\n return name;\n }\n getValue(prefix, keyOrRef) {\n const vs = this._values[prefix];\n if (!vs)\n return;\n return vs.get(keyOrRef);\n }\n scopeRefs(scopeName, values = this._values) {\n return this._reduceValues(values, (name) => {\n if (name.scopePath === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return (0, code_1._) `${scopeName}${name.scopePath}`;\n });\n }\n scopeCode(values = this._values, usedValues, getCode) {\n return this._reduceValues(values, (name) => {\n if (name.value === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return name.value.code;\n }, usedValues, getCode);\n }\n _reduceValues(values, valueCode, usedValues = {}, getCode) {\n let code = code_1.nil;\n for (const prefix in values) {\n const vs = values[prefix];\n if (!vs)\n continue;\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map());\n vs.forEach((name) => {\n if (nameSet.has(name))\n return;\n nameSet.set(name, UsedValueState.Started);\n let c = valueCode(name);\n if (c) {\n const def = this.opts.es5 ? exports.varKinds.var : exports.varKinds.const;\n code = (0, code_1._) `${code}${def} ${name} = ${c};${this.opts._n}`;\n }\n else if ((c = getCode === null || getCode === void 0 ? void 0 : getCode(name))) {\n code = (0, code_1._) `${code}${c}${this.opts._n}`;\n }\n else {\n throw new ValueError(name);\n }\n nameSet.set(name, UsedValueState.Completed);\n });\n }\n return code;\n }\n}\nexports.ValueScope = ValueScope;\n//# sourceMappingURL=scope.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0;\nconst code_1 = require(\"./code\");\nconst scope_1 = require(\"./scope\");\nvar code_2 = require(\"./code\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return code_2._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return code_2.str; } });\nObject.defineProperty(exports, \"strConcat\", { enumerable: true, get: function () { return code_2.strConcat; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return code_2.nil; } });\nObject.defineProperty(exports, \"getProperty\", { enumerable: true, get: function () { return code_2.getProperty; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return code_2.stringify; } });\nObject.defineProperty(exports, \"regexpCode\", { enumerable: true, get: function () { return code_2.regexpCode; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return code_2.Name; } });\nvar scope_2 = require(\"./scope\");\nObject.defineProperty(exports, \"Scope\", { enumerable: true, get: function () { return scope_2.Scope; } });\nObject.defineProperty(exports, \"ValueScope\", { enumerable: true, get: function () { return scope_2.ValueScope; } });\nObject.defineProperty(exports, \"ValueScopeName\", { enumerable: true, get: function () { return scope_2.ValueScopeName; } });\nObject.defineProperty(exports, \"varKinds\", { enumerable: true, get: function () { return scope_2.varKinds; } });\nexports.operators = {\n GT: new code_1._Code(\">\"),\n GTE: new code_1._Code(\">=\"),\n LT: new code_1._Code(\"<\"),\n LTE: new code_1._Code(\"<=\"),\n EQ: new code_1._Code(\"===\"),\n NEQ: new code_1._Code(\"!==\"),\n NOT: new code_1._Code(\"!\"),\n OR: new code_1._Code(\"||\"),\n AND: new code_1._Code(\"&&\"),\n ADD: new code_1._Code(\"+\"),\n};\nclass Node {\n optimizeNodes() {\n return this;\n }\n optimizeNames(_names, _constants) {\n return this;\n }\n}\nclass Def extends Node {\n constructor(varKind, name, rhs) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.rhs = rhs;\n }\n render({ es5, _n }) {\n const varKind = es5 ? scope_1.varKinds.var : this.varKind;\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`;\n return `${varKind} ${this.name}${rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (!names[this.name.str])\n return;\n if (this.rhs)\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {};\n }\n}\nclass Assign extends Node {\n constructor(lhs, rhs, sideEffects) {\n super();\n this.lhs = lhs;\n this.rhs = rhs;\n this.sideEffects = sideEffects;\n }\n render({ _n }) {\n return `${this.lhs} = ${this.rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)\n return;\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names };\n return addExprNames(names, this.rhs);\n }\n}\nclass AssignOp extends Assign {\n constructor(lhs, op, rhs, sideEffects) {\n super(lhs, rhs, sideEffects);\n this.op = op;\n }\n render({ _n }) {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n;\n }\n}\nclass Label extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n return `${this.label}:` + _n;\n }\n}\nclass Break extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n const label = this.label ? ` ${this.label}` : \"\";\n return `break${label};` + _n;\n }\n}\nclass Throw extends Node {\n constructor(error) {\n super();\n this.error = error;\n }\n render({ _n }) {\n return `throw ${this.error};` + _n;\n }\n get names() {\n return this.error.names;\n }\n}\nclass AnyCode extends Node {\n constructor(code) {\n super();\n this.code = code;\n }\n render({ _n }) {\n return `${this.code};` + _n;\n }\n optimizeNodes() {\n return `${this.code}` ? this : undefined;\n }\n optimizeNames(names, constants) {\n this.code = optimizeExpr(this.code, names, constants);\n return this;\n }\n get names() {\n return this.code instanceof code_1._CodeOrName ? this.code.names : {};\n }\n}\nclass ParentNode extends Node {\n constructor(nodes = []) {\n super();\n this.nodes = nodes;\n }\n render(opts) {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\");\n }\n optimizeNodes() {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n const n = nodes[i].optimizeNodes();\n if (Array.isArray(n))\n nodes.splice(i, 1, ...n);\n else if (n)\n nodes[i] = n;\n else\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n optimizeNames(names, constants) {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i];\n if (n.optimizeNames(names, constants))\n continue;\n subtractNames(names, n.names);\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n get names() {\n return this.nodes.reduce((names, n) => addNames(names, n.names), {});\n }\n}\nclass BlockNode extends ParentNode {\n render(opts) {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n;\n }\n}\nclass Root extends ParentNode {\n}\nclass Else extends BlockNode {\n}\nElse.kind = \"else\";\nclass If extends BlockNode {\n constructor(condition, nodes) {\n super(nodes);\n this.condition = condition;\n }\n render(opts) {\n let code = `if(${this.condition})` + super.render(opts);\n if (this.else)\n code += \"else \" + this.else.render(opts);\n return code;\n }\n optimizeNodes() {\n super.optimizeNodes();\n const cond = this.condition;\n if (cond === true)\n return this.nodes; // else is ignored here\n let e = this.else;\n if (e) {\n const ns = e.optimizeNodes();\n e = this.else = Array.isArray(ns) ? new Else(ns) : ns;\n }\n if (e) {\n if (cond === false)\n return e instanceof If ? e : e.nodes;\n if (this.nodes.length)\n return this;\n return new If(not(cond), e instanceof If ? [e] : e.nodes);\n }\n if (cond === false || !this.nodes.length)\n return undefined;\n return this;\n }\n optimizeNames(names, constants) {\n var _a;\n this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n if (!(super.optimizeNames(names, constants) || this.else))\n return;\n this.condition = optimizeExpr(this.condition, names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n addExprNames(names, this.condition);\n if (this.else)\n addNames(names, this.else.names);\n return names;\n }\n}\nIf.kind = \"if\";\nclass For extends BlockNode {\n}\nFor.kind = \"for\";\nclass ForLoop extends For {\n constructor(iteration) {\n super();\n this.iteration = iteration;\n }\n render(opts) {\n return `for(${this.iteration})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iteration = optimizeExpr(this.iteration, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iteration.names);\n }\n}\nclass ForRange extends For {\n constructor(varKind, name, from, to) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.from = from;\n this.to = to;\n }\n render(opts) {\n const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind;\n const { name, from, to } = this;\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts);\n }\n get names() {\n const names = addExprNames(super.names, this.from);\n return addExprNames(names, this.to);\n }\n}\nclass ForIter extends For {\n constructor(loop, varKind, name, iterable) {\n super();\n this.loop = loop;\n this.varKind = varKind;\n this.name = name;\n this.iterable = iterable;\n }\n render(opts) {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iterable = optimizeExpr(this.iterable, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iterable.names);\n }\n}\nclass Func extends BlockNode {\n constructor(name, args, async) {\n super();\n this.name = name;\n this.args = args;\n this.async = async;\n }\n render(opts) {\n const _async = this.async ? \"async \" : \"\";\n return `${_async}function ${this.name}(${this.args})` + super.render(opts);\n }\n}\nFunc.kind = \"func\";\nclass Return extends ParentNode {\n render(opts) {\n return \"return \" + super.render(opts);\n }\n}\nReturn.kind = \"return\";\nclass Try extends BlockNode {\n render(opts) {\n let code = \"try\" + super.render(opts);\n if (this.catch)\n code += this.catch.render(opts);\n if (this.finally)\n code += this.finally.render(opts);\n return code;\n }\n optimizeNodes() {\n var _a, _b;\n super.optimizeNodes();\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes();\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes();\n return this;\n }\n optimizeNames(names, constants) {\n var _a, _b;\n super.optimizeNames(names, constants);\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n if (this.catch)\n addNames(names, this.catch.names);\n if (this.finally)\n addNames(names, this.finally.names);\n return names;\n }\n}\nclass Catch extends BlockNode {\n constructor(error) {\n super();\n this.error = error;\n }\n render(opts) {\n return `catch(${this.error})` + super.render(opts);\n }\n}\nCatch.kind = \"catch\";\nclass Finally extends BlockNode {\n render(opts) {\n return \"finally\" + super.render(opts);\n }\n}\nFinally.kind = \"finally\";\nclass CodeGen {\n constructor(extScope, opts = {}) {\n this._values = {};\n this._blockStarts = [];\n this._constants = {};\n this.opts = { ...opts, _n: opts.lines ? \"\\n\" : \"\" };\n this._extScope = extScope;\n this._scope = new scope_1.Scope({ parent: extScope });\n this._nodes = [new Root()];\n }\n toString() {\n return this._root.render(this.opts);\n }\n // returns unique name in the internal scope\n name(prefix) {\n return this._scope.name(prefix);\n }\n // reserves unique name in the external scope\n scopeName(prefix) {\n return this._extScope.name(prefix);\n }\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName, value) {\n const name = this._extScope.value(prefixOrName, value);\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set());\n vs.add(name);\n return name;\n }\n getScopeValue(prefix, keyOrRef) {\n return this._extScope.getValue(prefix, keyOrRef);\n }\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName) {\n return this._extScope.scopeRefs(scopeName, this._values);\n }\n scopeCode() {\n return this._extScope.scopeCode(this._values);\n }\n _def(varKind, nameOrPrefix, rhs, constant) {\n const name = this._scope.toName(nameOrPrefix);\n if (rhs !== undefined && constant)\n this._constants[name.str] = rhs;\n this._leafNode(new Def(varKind, name, rhs));\n return name;\n }\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant);\n }\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant);\n }\n // `var` declaration with optional assignment\n var(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant);\n }\n // assignment code\n assign(lhs, rhs, sideEffects) {\n return this._leafNode(new Assign(lhs, rhs, sideEffects));\n }\n // `+=` code\n add(lhs, rhs) {\n return this._leafNode(new AssignOp(lhs, exports.operators.ADD, rhs));\n }\n // appends passed SafeExpr to code or executes Block\n code(c) {\n if (typeof c == \"function\")\n c();\n else if (c !== code_1.nil)\n this._leafNode(new AnyCode(c));\n return this;\n }\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues) {\n const code = [\"{\"];\n for (const [key, value] of keyValues) {\n if (code.length > 1)\n code.push(\",\");\n code.push(key);\n if (key !== value || this.opts.es5) {\n code.push(\":\");\n (0, code_1.addCodeArg)(code, value);\n }\n }\n code.push(\"}\");\n return new code_1._Code(code);\n }\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition, thenBody, elseBody) {\n this._blockNode(new If(condition));\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf();\n }\n else if (thenBody) {\n this.code(thenBody).endIf();\n }\n else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body');\n }\n return this;\n }\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition) {\n return this._elseNode(new If(condition));\n }\n // `else` clause - only valid after `if` or `else if` clauses\n else() {\n return this._elseNode(new Else());\n }\n // end `if` statement (needed if gen.if was used only with condition)\n endIf() {\n return this._endBlockNode(If, Else);\n }\n _for(node, forBody) {\n this._blockNode(node);\n if (forBody)\n this.code(forBody).endFor();\n return this;\n }\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration, forBody) {\n return this._for(new ForLoop(iteration), forBody);\n }\n // `for` statement for a range of values\n forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) {\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name));\n }\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) {\n const name = this._scope.toName(nameOrPrefix);\n if (this.opts.es5) {\n const arr = iterable instanceof code_1.Name ? iterable : this.var(\"_arr\", iterable);\n return this.forRange(\"_i\", 0, (0, code_1._) `${arr}.length`, (i) => {\n this.var(name, (0, code_1._) `${arr}[${i}]`);\n forBody(name);\n });\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name));\n }\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, (0, code_1._) `Object.keys(${obj})`, forBody);\n }\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name));\n }\n // end `for` loop\n endFor() {\n return this._endBlockNode(For);\n }\n // `label` statement\n label(label) {\n return this._leafNode(new Label(label));\n }\n // `break` statement\n break(label) {\n return this._leafNode(new Break(label));\n }\n // `return` statement\n return(value) {\n const node = new Return();\n this._blockNode(node);\n this.code(value);\n if (node.nodes.length !== 1)\n throw new Error('CodeGen: \"return\" should have one node');\n return this._endBlockNode(Return);\n }\n // `try` statement\n try(tryBody, catchCode, finallyCode) {\n if (!catchCode && !finallyCode)\n throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"');\n const node = new Try();\n this._blockNode(node);\n this.code(tryBody);\n if (catchCode) {\n const error = this.name(\"e\");\n this._currNode = node.catch = new Catch(error);\n catchCode(error);\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally();\n this.code(finallyCode);\n }\n return this._endBlockNode(Catch, Finally);\n }\n // `throw` statement\n throw(error) {\n return this._leafNode(new Throw(error));\n }\n // start self-balancing block\n block(body, nodeCount) {\n this._blockStarts.push(this._nodes.length);\n if (body)\n this.code(body).endBlock(nodeCount);\n return this;\n }\n // end the current self-balancing block\n endBlock(nodeCount) {\n const len = this._blockStarts.pop();\n if (len === undefined)\n throw new Error(\"CodeGen: not in self-balancing block\");\n const toClose = this._nodes.length - len;\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);\n }\n this._nodes.length = len;\n return this;\n }\n // `function` heading (or definition if funcBody is passed)\n func(name, args = code_1.nil, async, funcBody) {\n this._blockNode(new Func(name, args, async));\n if (funcBody)\n this.code(funcBody).endFunc();\n return this;\n }\n // end function definition\n endFunc() {\n return this._endBlockNode(Func);\n }\n optimize(n = 1) {\n while (n-- > 0) {\n this._root.optimizeNodes();\n this._root.optimizeNames(this._root.names, this._constants);\n }\n }\n _leafNode(node) {\n this._currNode.nodes.push(node);\n return this;\n }\n _blockNode(node) {\n this._currNode.nodes.push(node);\n this._nodes.push(node);\n }\n _endBlockNode(N1, N2) {\n const n = this._currNode;\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop();\n return this;\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`);\n }\n _elseNode(node) {\n const n = this._currNode;\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"');\n }\n this._currNode = n.else = node;\n return this;\n }\n get _root() {\n return this._nodes[0];\n }\n get _currNode() {\n const ns = this._nodes;\n return ns[ns.length - 1];\n }\n set _currNode(node) {\n const ns = this._nodes;\n ns[ns.length - 1] = node;\n }\n}\nexports.CodeGen = CodeGen;\nfunction addNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) + (from[n] || 0);\n return names;\n}\nfunction addExprNames(names, from) {\n return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;\n}\nfunction optimizeExpr(expr, names, constants) {\n if (expr instanceof code_1.Name)\n return replaceName(expr);\n if (!canOptimize(expr))\n return expr;\n return new code_1._Code(expr._items.reduce((items, c) => {\n if (c instanceof code_1.Name)\n c = replaceName(c);\n if (c instanceof code_1._Code)\n items.push(...c._items);\n else\n items.push(c);\n return items;\n }, []));\n function replaceName(n) {\n const c = constants[n.str];\n if (c === undefined || names[n.str] !== 1)\n return n;\n delete names[n.str];\n return c;\n }\n function canOptimize(e) {\n return (e instanceof code_1._Code &&\n e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants[c.str] !== undefined));\n }\n}\nfunction subtractNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) - (from[n] || 0);\n}\nfunction not(x) {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : (0, code_1._) `!${par(x)}`;\n}\nexports.not = not;\nconst andCode = mappend(exports.operators.AND);\n// boolean AND (&&) expression with the passed arguments\nfunction and(...args) {\n return args.reduce(andCode);\n}\nexports.and = and;\nconst orCode = mappend(exports.operators.OR);\n// boolean OR (||) expression with the passed arguments\nfunction or(...args) {\n return args.reduce(orCode);\n}\nexports.or = or;\nfunction mappend(op) {\n return (x, y) => (x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._) `${par(x)} ${op} ${par(y)}`);\n}\nfunction par(x) {\n return x instanceof code_1.Name ? x : (0, code_1._) `(${x})`;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst code_1 = require(\"./codegen/code\");\n// TODO refactor to use Set\nfunction toHash(arr) {\n const hash = {};\n for (const item of arr)\n hash[item] = true;\n return hash;\n}\nexports.toHash = toHash;\nfunction alwaysValidSchema(it, schema) {\n if (typeof schema == \"boolean\")\n return schema;\n if (Object.keys(schema).length === 0)\n return true;\n checkUnknownRules(it, schema);\n return !schemaHasRules(schema, it.self.RULES.all);\n}\nexports.alwaysValidSchema = alwaysValidSchema;\nfunction checkUnknownRules(it, schema = it.schema) {\n const { opts, self } = it;\n if (!opts.strictSchema)\n return;\n if (typeof schema === \"boolean\")\n return;\n const rules = self.RULES.keywords;\n for (const key in schema) {\n if (!rules[key])\n checkStrictMode(it, `unknown keyword: \"${key}\"`);\n }\n}\nexports.checkUnknownRules = checkUnknownRules;\nfunction schemaHasRules(schema, rules) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (rules[key])\n return true;\n return false;\n}\nexports.schemaHasRules = schemaHasRules;\nfunction schemaHasRulesButRef(schema, RULES) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (key !== \"$ref\" && RULES.all[key])\n return true;\n return false;\n}\nexports.schemaHasRulesButRef = schemaHasRulesButRef;\nfunction schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\")\n return schema;\n if (typeof schema == \"string\")\n return (0, codegen_1._) `${schema}`;\n }\n return (0, codegen_1._) `${topSchemaRef}${schemaPath}${(0, codegen_1.getProperty)(keyword)}`;\n}\nexports.schemaRefOrVal = schemaRefOrVal;\nfunction unescapeFragment(str) {\n return unescapeJsonPointer(decodeURIComponent(str));\n}\nexports.unescapeFragment = unescapeFragment;\nfunction escapeFragment(str) {\n return encodeURIComponent(escapeJsonPointer(str));\n}\nexports.escapeFragment = escapeFragment;\nfunction escapeJsonPointer(str) {\n if (typeof str == \"number\")\n return `${str}`;\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\nexports.escapeJsonPointer = escapeJsonPointer;\nfunction unescapeJsonPointer(str) {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n}\nexports.unescapeJsonPointer = unescapeJsonPointer;\nfunction eachItem(xs, f) {\n if (Array.isArray(xs)) {\n for (const x of xs)\n f(x);\n }\n else {\n f(xs);\n }\n}\nexports.eachItem = eachItem;\nfunction makeMergeEvaluated({ mergeNames, mergeToName, mergeValues, resultToName, }) {\n return (gen, from, to, toName) => {\n const res = to === undefined\n ? from\n : to instanceof codegen_1.Name\n ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof codegen_1.Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to);\n return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res;\n };\n}\nexports.mergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => {\n gen.if((0, codegen_1._) `${from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._) `${to} || {}`).code((0, codegen_1._) `Object.assign(${to}, ${from})`));\n }),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true);\n }\n else {\n gen.assign(to, (0, codegen_1._) `${to} || {}`);\n setEvaluated(gen, to, from);\n }\n }),\n mergeValues: (from, to) => (from === true ? true : { ...from, ...to }),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => gen.assign(to, (0, codegen_1._) `${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._) `${to} > ${from} ? ${to} : ${from}`)),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n};\nfunction evaluatedPropsToName(gen, ps) {\n if (ps === true)\n return gen.var(\"props\", true);\n const props = gen.var(\"props\", (0, codegen_1._) `{}`);\n if (ps !== undefined)\n setEvaluated(gen, props, ps);\n return props;\n}\nexports.evaluatedPropsToName = evaluatedPropsToName;\nfunction setEvaluated(gen, props, ps) {\n Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._) `${props}${(0, codegen_1.getProperty)(p)}`, true));\n}\nexports.setEvaluated = setEvaluated;\nconst snippets = {};\nfunction useFunc(gen, f) {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code)),\n });\n}\nexports.useFunc = useFunc;\nvar Type;\n(function (Type) {\n Type[Type[\"Num\"] = 0] = \"Num\";\n Type[Type[\"Str\"] = 1] = \"Str\";\n})(Type || (exports.Type = Type = {}));\nfunction getErrorPath(dataProp, dataPropType, jsPropertySyntax) {\n // let path\n if (dataProp instanceof codegen_1.Name) {\n const isNumber = dataPropType === Type.Num;\n return jsPropertySyntax\n ? isNumber\n ? (0, codegen_1._) `\"[\" + ${dataProp} + \"]\"`\n : (0, codegen_1._) `\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? (0, codegen_1._) `\"/\" + ${dataProp}`\n : (0, codegen_1._) `\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")`; // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp);\n}\nexports.getErrorPath = getErrorPath;\nfunction checkStrictMode(it, msg, mode = it.opts.strictSchema) {\n if (!mode)\n return;\n msg = `strict mode: ${msg}`;\n if (mode === true)\n throw new Error(msg);\n it.self.logger.warn(msg);\n}\nexports.checkStrictMode = checkStrictMode;\n//# sourceMappingURL=util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"./codegen\");\nconst names = {\n // validation function arguments\n data: new codegen_1.Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new codegen_1.Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new codegen_1.Name(\"instancePath\"),\n parentData: new codegen_1.Name(\"parentData\"),\n parentDataProperty: new codegen_1.Name(\"parentDataProperty\"),\n rootData: new codegen_1.Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new codegen_1.Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new codegen_1.Name(\"vErrors\"), // null or array of validation errors\n errors: new codegen_1.Name(\"errors\"), // counter of validation errors\n this: new codegen_1.Name(\"this\"),\n // \"globals\"\n self: new codegen_1.Name(\"self\"),\n scope: new codegen_1.Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new codegen_1.Name(\"json\"),\n jsonPos: new codegen_1.Name(\"jsonPos\"),\n jsonLen: new codegen_1.Name(\"jsonLen\"),\n jsonPart: new codegen_1.Name(\"jsonPart\"),\n};\nexports.default = names;\n//# sourceMappingURL=names.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst util_1 = require(\"./util\");\nconst names_1 = require(\"./names\");\nexports.keywordError = {\n message: ({ keyword }) => (0, codegen_1.str) `must pass \"${keyword}\" keyword validation`,\n};\nexports.keyword$DataError = {\n message: ({ keyword, schemaType }) => schemaType\n ? (0, codegen_1.str) `\"${keyword}\" keyword must be ${schemaType} ($data)`\n : (0, codegen_1.str) `\"${keyword}\" keyword is invalid ($data)`,\n};\nfunction reportError(cxt, error = exports.keywordError, errorPaths, overrideAllErrors) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : (compositeRule || allErrors)) {\n addError(gen, errObj);\n }\n else {\n returnErrors(it, (0, codegen_1._) `[${errObj}]`);\n }\n}\nexports.reportError = reportError;\nfunction reportExtraError(cxt, error = exports.keywordError, errorPaths) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n addError(gen, errObj);\n if (!(compositeRule || allErrors)) {\n returnErrors(it, names_1.default.vErrors);\n }\n}\nexports.reportExtraError = reportExtraError;\nfunction resetErrorsCount(gen, errsCount) {\n gen.assign(names_1.default.errors, errsCount);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._) `${names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null)));\n}\nexports.resetErrorsCount = resetErrorsCount;\nfunction extendErrors({ gen, keyword, schemaValue, data, errsCount, it, }) {\n /* istanbul ignore if */\n if (errsCount === undefined)\n throw new Error(\"ajv implementation error\");\n const err = gen.name(\"err\");\n gen.forRange(\"i\", errsCount, names_1.default.errors, (i) => {\n gen.const(err, (0, codegen_1._) `${names_1.default.vErrors}[${i}]`);\n gen.if((0, codegen_1._) `${err}.instancePath === undefined`, () => gen.assign((0, codegen_1._) `${err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath)));\n gen.assign((0, codegen_1._) `${err}.schemaPath`, (0, codegen_1.str) `${it.errSchemaPath}/${keyword}`);\n if (it.opts.verbose) {\n gen.assign((0, codegen_1._) `${err}.schema`, schemaValue);\n gen.assign((0, codegen_1._) `${err}.data`, data);\n }\n });\n}\nexports.extendErrors = extendErrors;\nfunction addError(gen, errObj) {\n const err = gen.const(\"err\", errObj);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._) `[${err}]`), (0, codegen_1._) `${names_1.default.vErrors}.push(${err})`);\n gen.code((0, codegen_1._) `${names_1.default.errors}++`);\n}\nfunction returnErrors(it, errs) {\n const { gen, validateName, schemaEnv } = it;\n if (schemaEnv.$async) {\n gen.throw((0, codegen_1._) `new ${it.ValidationError}(${errs})`);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, errs);\n gen.return(false);\n }\n}\nconst E = {\n keyword: new codegen_1.Name(\"keyword\"),\n schemaPath: new codegen_1.Name(\"schemaPath\"), // also used in JTD errors\n params: new codegen_1.Name(\"params\"),\n propertyName: new codegen_1.Name(\"propertyName\"),\n message: new codegen_1.Name(\"message\"),\n schema: new codegen_1.Name(\"schema\"),\n parentSchema: new codegen_1.Name(\"parentSchema\"),\n};\nfunction errorObjectCode(cxt, error, errorPaths) {\n const { createErrors } = cxt.it;\n if (createErrors === false)\n return (0, codegen_1._) `{}`;\n return errorObject(cxt, error, errorPaths);\n}\nfunction errorObject(cxt, error, errorPaths = {}) {\n const { gen, it } = cxt;\n const keyValues = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ];\n extraErrorProps(cxt, error, keyValues);\n return gen.object(...keyValues);\n}\nfunction errorInstancePath({ errorPath }, { instancePath }) {\n const instPath = instancePath\n ? (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}`\n : errorPath;\n return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)];\n}\nfunction errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) {\n let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str) `${errSchemaPath}/${keyword}`;\n if (schemaPath) {\n schPath = (0, codegen_1.str) `${schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`;\n }\n return [E.schemaPath, schPath];\n}\nfunction extraErrorProps(cxt, { params, message }, keyValues) {\n const { keyword, data, schemaValue, it } = cxt;\n const { opts, propertyName, topSchemaRef, schemaPath } = it;\n keyValues.push([E.keyword, keyword], [E.params, typeof params == \"function\" ? params(cxt) : params || (0, codegen_1._) `{}`]);\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message]);\n }\n if (opts.verbose) {\n keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._) `${topSchemaRef}${schemaPath}`], [names_1.default.data, data]);\n }\n if (propertyName)\n keyValues.push([E.propertyName, propertyName]);\n}\n//# sourceMappingURL=errors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0;\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst boolError = {\n message: \"boolean schema is false\",\n};\nfunction topBoolOrEmptySchema(it) {\n const { gen, schema, validateName } = it;\n if (schema === false) {\n falseSchemaError(it, false);\n }\n else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(names_1.default.data);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, null);\n gen.return(true);\n }\n}\nexports.topBoolOrEmptySchema = topBoolOrEmptySchema;\nfunction boolOrEmptySchema(it, valid) {\n const { gen, schema } = it;\n if (schema === false) {\n gen.var(valid, false); // TODO var\n falseSchemaError(it);\n }\n else {\n gen.var(valid, true); // TODO var\n }\n}\nexports.boolOrEmptySchema = boolOrEmptySchema;\nfunction falseSchemaError(it, overrideAllErrors) {\n const { gen, data } = it;\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n };\n (0, errors_1.reportError)(cxt, boolError, undefined, overrideAllErrors);\n}\n//# sourceMappingURL=boolSchema.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRules = exports.isJSONType = void 0;\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"];\nconst jsonTypes = new Set(_jsonTypes);\nfunction isJSONType(x) {\n return typeof x == \"string\" && jsonTypes.has(x);\n}\nexports.isJSONType = isJSONType;\nfunction getRules() {\n const groups = {\n number: { type: \"number\", rules: [] },\n string: { type: \"string\", rules: [] },\n array: { type: \"array\", rules: [] },\n object: { type: \"object\", rules: [] },\n };\n return {\n types: { ...groups, integer: true, boolean: true, null: true },\n rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object],\n post: { rules: [] },\n all: {},\n keywords: {},\n };\n}\nexports.getRules = getRules;\n//# sourceMappingURL=rules.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0;\nfunction schemaHasRulesForType({ schema, self }, type) {\n const group = self.RULES.types[type];\n return group && group !== true && shouldUseGroup(schema, group);\n}\nexports.schemaHasRulesForType = schemaHasRulesForType;\nfunction shouldUseGroup(schema, group) {\n return group.rules.some((rule) => shouldUseRule(schema, rule));\n}\nexports.shouldUseGroup = shouldUseGroup;\nfunction shouldUseRule(schema, rule) {\n var _a;\n return (schema[rule.keyword] !== undefined ||\n ((_a = rule.definition.implements) === null || _a === void 0 ? void 0 : _a.some((kwd) => schema[kwd] !== undefined)));\n}\nexports.shouldUseRule = shouldUseRule;\n//# sourceMappingURL=applicability.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0;\nconst rules_1 = require(\"../rules\");\nconst applicability_1 = require(\"./applicability\");\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nvar DataType;\n(function (DataType) {\n DataType[DataType[\"Correct\"] = 0] = \"Correct\";\n DataType[DataType[\"Wrong\"] = 1] = \"Wrong\";\n})(DataType || (exports.DataType = DataType = {}));\nfunction getSchemaTypes(schema) {\n const types = getJSONTypes(schema.type);\n const hasNull = types.includes(\"null\");\n if (hasNull) {\n if (schema.nullable === false)\n throw new Error(\"type: null contradicts nullable: false\");\n }\n else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"');\n }\n if (schema.nullable === true)\n types.push(\"null\");\n }\n return types;\n}\nexports.getSchemaTypes = getSchemaTypes;\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nfunction getJSONTypes(ts) {\n const types = Array.isArray(ts) ? ts : ts ? [ts] : [];\n if (types.every(rules_1.isJSONType))\n return types;\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"));\n}\nexports.getJSONTypes = getJSONTypes;\nfunction coerceAndCheckDataType(it, types) {\n const { gen, data, opts } = it;\n const coerceTo = coerceToTypes(types, opts.coerceTypes);\n const checkTypes = types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0]));\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong);\n gen.if(wrongType, () => {\n if (coerceTo.length)\n coerceData(it, types, coerceTo);\n else\n reportTypeError(it);\n });\n }\n return checkTypes;\n}\nexports.coerceAndCheckDataType = coerceAndCheckDataType;\nconst COERCIBLE = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"]);\nfunction coerceToTypes(types, coerceTypes) {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : [];\n}\nfunction coerceData(it, types, coerceTo) {\n const { gen, data, opts } = it;\n const dataType = gen.let(\"dataType\", (0, codegen_1._) `typeof ${data}`);\n const coerced = gen.let(\"coerced\", (0, codegen_1._) `undefined`);\n if (opts.coerceTypes === \"array\") {\n gen.if((0, codegen_1._) `${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen\n .assign(data, (0, codegen_1._) `${data}[0]`)\n .assign(dataType, (0, codegen_1._) `typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data)));\n }\n gen.if((0, codegen_1._) `${coerced} !== undefined`);\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t);\n }\n }\n gen.else();\n reportTypeError(it);\n gen.endIf();\n gen.if((0, codegen_1._) `${coerced} !== undefined`, () => {\n gen.assign(data, coerced);\n assignParentData(it, coerced);\n });\n function coerceSpecificType(t) {\n switch (t) {\n case \"string\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, (0, codegen_1._) `\"\" + ${data}`)\n .elseIf((0, codegen_1._) `${data} === null`)\n .assign(coerced, (0, codegen_1._) `\"\"`);\n return;\n case \"number\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"integer\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"boolean\":\n gen\n .elseIf((0, codegen_1._) `${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf((0, codegen_1._) `${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true);\n return;\n case \"null\":\n gen.elseIf((0, codegen_1._) `${data} === \"\" || ${data} === 0 || ${data} === false`);\n gen.assign(coerced, null);\n return;\n case \"array\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`)\n .assign(coerced, (0, codegen_1._) `[${data}]`);\n }\n }\n}\nfunction assignParentData({ gen, parentData, parentDataProperty }, expr) {\n // TODO use gen.property\n gen.if((0, codegen_1._) `${parentData} !== undefined`, () => gen.assign((0, codegen_1._) `${parentData}[${parentDataProperty}]`, expr));\n}\nfunction checkDataType(dataType, data, strictNums, correct = DataType.Correct) {\n const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ;\n let cond;\n switch (dataType) {\n case \"null\":\n return (0, codegen_1._) `${data} ${EQ} null`;\n case \"array\":\n cond = (0, codegen_1._) `Array.isArray(${data})`;\n break;\n case \"object\":\n cond = (0, codegen_1._) `${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`;\n break;\n case \"integer\":\n cond = numCond((0, codegen_1._) `!(${data} % 1) && !isNaN(${data})`);\n break;\n case \"number\":\n cond = numCond();\n break;\n default:\n return (0, codegen_1._) `typeof ${data} ${EQ} ${dataType}`;\n }\n return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond);\n function numCond(_cond = codegen_1.nil) {\n return (0, codegen_1.and)((0, codegen_1._) `typeof ${data} == \"number\"`, _cond, strictNums ? (0, codegen_1._) `isFinite(${data})` : codegen_1.nil);\n }\n}\nexports.checkDataType = checkDataType;\nfunction checkDataTypes(dataTypes, data, strictNums, correct) {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct);\n }\n let cond;\n const types = (0, util_1.toHash)(dataTypes);\n if (types.array && types.object) {\n const notObj = (0, codegen_1._) `typeof ${data} != \"object\"`;\n cond = types.null ? notObj : (0, codegen_1._) `!${data} || ${notObj}`;\n delete types.null;\n delete types.array;\n delete types.object;\n }\n else {\n cond = codegen_1.nil;\n }\n if (types.number)\n delete types.integer;\n for (const t in types)\n cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct));\n return cond;\n}\nexports.checkDataTypes = checkDataTypes;\nconst typeError = {\n message: ({ schema }) => `must be ${schema}`,\n params: ({ schema, schemaValue }) => typeof schema == \"string\" ? (0, codegen_1._) `{type: ${schema}}` : (0, codegen_1._) `{type: ${schemaValue}}`,\n};\nfunction reportTypeError(it) {\n const cxt = getTypeErrorContext(it);\n (0, errors_1.reportError)(cxt, typeError);\n}\nexports.reportTypeError = reportTypeError;\nfunction getTypeErrorContext(it) {\n const { gen, data, schema } = it;\n const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, \"type\");\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n };\n}\n//# sourceMappingURL=dataType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assignDefaults = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction assignDefaults(it, ty) {\n const { properties, items } = it.schema;\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default);\n }\n }\n else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i) => assignDefault(it, i, sch.default));\n }\n}\nexports.assignDefaults = assignDefaults;\nfunction assignDefault(it, prop, defaultValue) {\n const { gen, compositeRule, data, opts } = it;\n if (defaultValue === undefined)\n return;\n const childData = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(prop)}`;\n if (compositeRule) {\n (0, util_1.checkStrictMode)(it, `default is ignored for: ${childData}`);\n return;\n }\n let condition = (0, codegen_1._) `${childData} === undefined`;\n if (opts.useDefaults === \"empty\") {\n condition = (0, codegen_1._) `${condition} || ${childData} === null || ${childData} === \"\"`;\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, (0, codegen_1._) `${childData} = ${(0, codegen_1.stringify)(defaultValue)}`);\n}\n//# sourceMappingURL=defaults.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0;\nconst codegen_1 = require(\"../compile/codegen\");\nconst util_1 = require(\"../compile/util\");\nconst names_1 = require(\"../compile/names\");\nconst util_2 = require(\"../compile/util\");\nfunction checkReportMissingProp(cxt, prop) {\n const { gen, data, it } = cxt;\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({ missingProperty: (0, codegen_1._) `${prop}` }, true);\n cxt.error();\n });\n}\nexports.checkReportMissingProp = checkReportMissingProp;\nfunction checkMissingProp({ gen, data, it: { opts } }, properties, missing) {\n return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._) `${missing} = ${prop}`)));\n}\nexports.checkMissingProp = checkMissingProp;\nfunction reportMissingProp(cxt, missing) {\n cxt.setParams({ missingProperty: missing }, true);\n cxt.error();\n}\nexports.reportMissingProp = reportMissingProp;\nfunction hasPropFunc(gen) {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: (0, codegen_1._) `Object.prototype.hasOwnProperty`,\n });\n}\nexports.hasPropFunc = hasPropFunc;\nfunction isOwnProperty(gen, data, property) {\n return (0, codegen_1._) `${hasPropFunc(gen)}.call(${data}, ${property})`;\n}\nexports.isOwnProperty = isOwnProperty;\nfunction propertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} !== undefined`;\n return ownProperties ? (0, codegen_1._) `${cond} && ${isOwnProperty(gen, data, property)}` : cond;\n}\nexports.propertyInData = propertyInData;\nfunction noPropertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} === undefined`;\n return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond;\n}\nexports.noPropertyInData = noPropertyInData;\nfunction allSchemaProperties(schemaMap) {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : [];\n}\nexports.allSchemaProperties = allSchemaProperties;\nfunction schemaProperties(it, schemaMap) {\n return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p]));\n}\nexports.schemaProperties = schemaProperties;\nfunction callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) {\n const dataAndSchema = passSchema ? (0, codegen_1._) `${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data;\n const valCxt = [\n [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)],\n [names_1.default.parentData, it.parentData],\n [names_1.default.parentDataProperty, it.parentDataProperty],\n [names_1.default.rootData, names_1.default.rootData],\n ];\n if (it.opts.dynamicRef)\n valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]);\n const args = (0, codegen_1._) `${dataAndSchema}, ${gen.object(...valCxt)}`;\n return context !== codegen_1.nil ? (0, codegen_1._) `${func}.call(${context}, ${args})` : (0, codegen_1._) `${func}(${args})`;\n}\nexports.callValidateCode = callValidateCode;\nconst newRegExp = (0, codegen_1._) `new RegExp`;\nfunction usePattern({ gen, it: { opts } }, pattern) {\n const u = opts.unicodeRegExp ? \"u\" : \"\";\n const { regExp } = opts.code;\n const rx = regExp(pattern, u);\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: (0, codegen_1._) `${regExp.code === \"new RegExp\" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}(${pattern}, ${u})`,\n });\n}\nexports.usePattern = usePattern;\nfunction validateArray(cxt) {\n const { gen, data, keyword, it } = cxt;\n const valid = gen.name(\"valid\");\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true);\n validateItems(() => gen.assign(validArr, false));\n return validArr;\n }\n gen.var(valid, true);\n validateItems(() => gen.break());\n return valid;\n function validateItems(notValid) {\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema({\n keyword,\n dataProp: i,\n dataPropType: util_1.Type.Num,\n }, valid);\n gen.if((0, codegen_1.not)(valid), notValid);\n });\n }\n}\nexports.validateArray = validateArray;\nfunction validateUnion(cxt) {\n const { gen, schema, keyword, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch));\n if (alwaysValid && !it.opts.unevaluated)\n return;\n const valid = gen.let(\"valid\", false);\n const schValid = gen.name(\"_valid\");\n gen.block(() => schema.forEach((_sch, i) => {\n const schCxt = cxt.subschema({\n keyword,\n schemaProp: i,\n compositeRule: true,\n }, schValid);\n gen.assign(valid, (0, codegen_1._) `${valid} || ${schValid}`);\n const merged = cxt.mergeValidEvaluated(schCxt, schValid);\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged)\n gen.if((0, codegen_1.not)(valid));\n }));\n cxt.result(valid, () => cxt.reset(), () => cxt.error(true));\n}\nexports.validateUnion = validateUnion;\n//# sourceMappingURL=code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst code_1 = require(\"../../vocabularies/code\");\nconst errors_1 = require(\"../errors\");\nfunction macroKeywordCode(cxt, def) {\n const { gen, keyword, schema, parentSchema, it } = cxt;\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it);\n const schemaRef = useKeyword(gen, keyword, macroSchema);\n if (it.opts.validateSchema !== false)\n it.self.validateSchema(macroSchema, true);\n const valid = gen.name(\"valid\");\n cxt.subschema({\n schema: macroSchema,\n schemaPath: codegen_1.nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n }, valid);\n cxt.pass(valid, () => cxt.error(true));\n}\nexports.macroKeywordCode = macroKeywordCode;\nfunction funcKeywordCode(cxt, def) {\n var _a;\n const { gen, keyword, schema, parentSchema, $data, it } = cxt;\n checkAsyncKeyword(it, def);\n const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate;\n const validateRef = useKeyword(gen, keyword, validate);\n const valid = gen.let(\"valid\");\n cxt.block$data(valid, validateKeyword);\n cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid);\n function validateKeyword() {\n if (def.errors === false) {\n assignValid();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => cxt.error());\n }\n else {\n const ruleErrs = def.async ? validateAsync() : validateSync();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => addErrs(cxt, ruleErrs));\n }\n }\n function validateAsync() {\n const ruleErrs = gen.let(\"ruleErrs\", null);\n gen.try(() => assignValid((0, codegen_1._) `await `), (e) => gen.assign(valid, false).if((0, codegen_1._) `${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._) `${e}.errors`), () => gen.throw(e)));\n return ruleErrs;\n }\n function validateSync() {\n const validateErrs = (0, codegen_1._) `${validateRef}.errors`;\n gen.assign(validateErrs, null);\n assignValid(codegen_1.nil);\n return validateErrs;\n }\n function assignValid(_await = def.async ? (0, codegen_1._) `await ` : codegen_1.nil) {\n const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self;\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false);\n gen.assign(valid, (0, codegen_1._) `${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying);\n }\n function reportErrs(errors) {\n var _a;\n gen.if((0, codegen_1.not)((_a = def.valid) !== null && _a !== void 0 ? _a : valid), errors);\n }\n}\nexports.funcKeywordCode = funcKeywordCode;\nfunction modifyData(cxt) {\n const { gen, data, it } = cxt;\n gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._) `${it.parentData}[${it.parentDataProperty}]`));\n}\nfunction addErrs(cxt, errs) {\n const { gen } = cxt;\n gen.if((0, codegen_1._) `Array.isArray(${errs})`, () => {\n gen\n .assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`)\n .assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`);\n (0, errors_1.extendErrors)(cxt);\n }, () => cxt.error());\n}\nfunction checkAsyncKeyword({ schemaEnv }, def) {\n if (def.async && !schemaEnv.$async)\n throw new Error(\"async keyword in sync schema\");\n}\nfunction useKeyword(gen, keyword, result) {\n if (result === undefined)\n throw new Error(`keyword \"${keyword}\" failed to compile`);\n return gen.scopeValue(\"keyword\", typeof result == \"function\" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) });\n}\nfunction validSchemaType(schema, schemaType, allowUndefined = false) {\n // TODO add tests\n return (!schemaType.length ||\n schemaType.some((st) => st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")));\n}\nexports.validSchemaType = validSchemaType;\nfunction validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\");\n }\n const deps = def.dependencies;\n if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`);\n }\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword]);\n if (!valid) {\n const msg = `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors);\n if (opts.validateSchema === \"log\")\n self.logger.error(msg);\n else\n throw new Error(msg);\n }\n }\n}\nexports.validateKeywordUsage = validateKeywordUsage;\n//# sourceMappingURL=keyword.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed');\n }\n if (keyword !== undefined) {\n const sch = it.schema[keyword];\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}`,\n };\n }\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"');\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n };\n }\n throw new Error('either \"keyword\" or \"schema\" must be passed');\n}\nexports.getSubschema = getSubschema;\nfunction extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed');\n }\n const { gen } = it;\n if (dataProp !== undefined) {\n const { errorPath, dataPathArr, opts } = it;\n const nextData = gen.let(\"data\", (0, codegen_1._) `${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true);\n dataContextProps(nextData);\n subschema.errorPath = (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`;\n subschema.parentDataProperty = (0, codegen_1._) `${dataProp}`;\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty];\n }\n if (data !== undefined) {\n const nextData = data instanceof codegen_1.Name ? data : gen.let(\"data\", data, true); // replaceable if used once?\n dataContextProps(nextData);\n if (propertyName !== undefined)\n subschema.propertyName = propertyName;\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n if (dataTypes)\n subschema.dataTypes = dataTypes;\n function dataContextProps(_nextData) {\n subschema.data = _nextData;\n subschema.dataLevel = it.dataLevel + 1;\n subschema.dataTypes = [];\n it.definedProperties = new Set();\n subschema.parentData = it.data;\n subschema.dataNames = [...it.dataNames, _nextData];\n }\n}\nexports.extendSubschemaData = extendSubschemaData;\nfunction extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) {\n if (compositeRule !== undefined)\n subschema.compositeRule = compositeRule;\n if (createErrors !== undefined)\n subschema.createErrors = createErrors;\n if (allErrors !== undefined)\n subschema.allErrors = allErrors;\n subschema.jtdDiscriminator = jtdDiscriminator; // not inherited\n subschema.jtdMetadata = jtdMetadata; // not inherited\n}\nexports.extendSubschemaMode = extendSubschemaMode;\n//# sourceMappingURL=subschema.js.map","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getFullPath = exports.getFullPath = exports.inlineRef = void 0;\nconst util_1 = require(\"./util\");\nconst equal = require(\"fast-deep-equal\");\nconst traverse = require(\"json-schema-traverse\");\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n]);\nfunction inlineRef(schema, limit = true) {\n if (typeof schema == \"boolean\")\n return true;\n if (limit === true)\n return !hasRef(schema);\n if (!limit)\n return false;\n return countKeys(schema) <= limit;\n}\nexports.inlineRef = inlineRef;\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n]);\nfunction hasRef(schema) {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key))\n return true;\n const sch = schema[key];\n if (Array.isArray(sch) && sch.some(hasRef))\n return true;\n if (typeof sch == \"object\" && hasRef(sch))\n return true;\n }\n return false;\n}\nfunction countKeys(schema) {\n let count = 0;\n for (const key in schema) {\n if (key === \"$ref\")\n return Infinity;\n count++;\n if (SIMPLE_INLINED.has(key))\n continue;\n if (typeof schema[key] == \"object\") {\n (0, util_1.eachItem)(schema[key], (sch) => (count += countKeys(sch)));\n }\n if (count === Infinity)\n return Infinity;\n }\n return count;\n}\nfunction getFullPath(resolver, id = \"\", normalize) {\n if (normalize !== false)\n id = normalizeId(id);\n const p = resolver.parse(id);\n return _getFullPath(resolver, p);\n}\nexports.getFullPath = getFullPath;\nfunction _getFullPath(resolver, p) {\n const serialized = resolver.serialize(p);\n return serialized.split(\"#\")[0] + \"#\";\n}\nexports._getFullPath = _getFullPath;\nconst TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\";\n}\nexports.normalizeId = normalizeId;\nfunction resolveUrl(resolver, baseId, id) {\n id = normalizeId(id);\n return resolver.resolve(baseId, id);\n}\nexports.resolveUrl = resolveUrl;\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i;\nfunction getSchemaRefs(schema, baseId) {\n if (typeof schema == \"boolean\")\n return {};\n const { schemaId, uriResolver } = this.opts;\n const schId = normalizeId(schema[schemaId] || baseId);\n const baseIds = { \"\": schId };\n const pathPrefix = getFullPath(uriResolver, schId, false);\n const localRefs = {};\n const schemaRefs = new Set();\n traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined)\n return;\n const fullPath = pathPrefix + jsonPtr;\n let innerBaseId = baseIds[parentJsonPtr];\n if (typeof sch[schemaId] == \"string\")\n innerBaseId = addRef.call(this, sch[schemaId]);\n addAnchor.call(this, sch.$anchor);\n addAnchor.call(this, sch.$dynamicAnchor);\n baseIds[jsonPtr] = innerBaseId;\n function addRef(ref) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve;\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref);\n if (schemaRefs.has(ref))\n throw ambiguos(ref);\n schemaRefs.add(ref);\n let schOrRef = this.refs[ref];\n if (typeof schOrRef == \"string\")\n schOrRef = this.refs[schOrRef];\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref);\n }\n else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref);\n localRefs[ref] = sch;\n }\n else {\n this.refs[ref] = fullPath;\n }\n }\n return ref;\n }\n function addAnchor(anchor) {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor))\n throw new Error(`invalid anchor \"${anchor}\"`);\n addRef.call(this, `#${anchor}`);\n }\n }\n });\n return localRefs;\n function checkAmbiguosRef(sch1, sch2, ref) {\n if (sch2 !== undefined && !equal(sch1, sch2))\n throw ambiguos(ref);\n }\n function ambiguos(ref) {\n return new Error(`reference \"${ref}\" resolves to more than one schema`);\n }\n}\nexports.getSchemaRefs = getSchemaRefs;\n//# sourceMappingURL=resolve.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0;\nconst boolSchema_1 = require(\"./boolSchema\");\nconst dataType_1 = require(\"./dataType\");\nconst applicability_1 = require(\"./applicability\");\nconst dataType_2 = require(\"./dataType\");\nconst defaults_1 = require(\"./defaults\");\nconst keyword_1 = require(\"./keyword\");\nconst subschema_1 = require(\"./subschema\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst resolve_1 = require(\"../resolve\");\nconst util_1 = require(\"../util\");\nconst errors_1 = require(\"../errors\");\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nfunction validateFunctionCode(it) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it);\n return;\n }\n }\n validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it));\n}\nexports.validateFunctionCode = validateFunctionCode;\nfunction validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) {\n if (opts.code.es5) {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${names_1.default.valCxt}`, schemaEnv.$async, () => {\n gen.code((0, codegen_1._) `\"use strict\"; ${funcSourceUrl(schema, opts)}`);\n destructureValCxtES5(gen, opts);\n gen.code(body);\n });\n }\n else {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body));\n }\n}\nfunction destructureValCxt(opts) {\n return (0, codegen_1._) `{${names_1.default.instancePath}=\"\", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? (0, codegen_1._) `, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`;\n}\nfunction destructureValCxtES5(gen, opts) {\n gen.if(names_1.default.valCxt, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.instancePath}`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentData}`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentDataProperty}`);\n gen.var(names_1.default.rootData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.rootData}`);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`);\n }, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `\"\"`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.rootData, names_1.default.data);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `{}`);\n });\n}\nfunction topSchemaObjCode(it) {\n const { schema, opts, gen } = it;\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n checkNoDefault(it);\n gen.let(names_1.default.vErrors, null);\n gen.let(names_1.default.errors, 0);\n if (opts.unevaluated)\n resetEvaluated(it);\n typeAndKeywords(it);\n returnResults(it);\n });\n return;\n}\nfunction resetEvaluated(it) {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const { gen, validateName } = it;\n it.evaluated = gen.const(\"evaluated\", (0, codegen_1._) `${validateName}.evaluated`);\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._) `${it.evaluated}.props`, (0, codegen_1._) `undefined`));\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._) `${it.evaluated}.items`, (0, codegen_1._) `undefined`));\n}\nfunction funcSourceUrl(schema, opts) {\n const schId = typeof schema == \"object\" && schema[opts.schemaId];\n return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._) `/*# sourceURL=${schId} */` : codegen_1.nil;\n}\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it, valid) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid);\n return;\n }\n }\n (0, boolSchema_1.boolOrEmptySchema)(it, valid);\n}\nfunction schemaCxtHasRules({ schema, self }) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (self.RULES.all[key])\n return true;\n return false;\n}\nfunction isSchemaObj(it) {\n return typeof it.schema != \"boolean\";\n}\nfunction subSchemaObjCode(it, valid) {\n const { schema, gen, opts } = it;\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n updateContext(it);\n checkAsyncSchema(it);\n const errsCount = gen.const(\"_errs\", names_1.default.errors);\n typeAndKeywords(it, errsCount);\n // TODO var\n gen.var(valid, (0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n}\nfunction checkKeywords(it) {\n (0, util_1.checkUnknownRules)(it);\n checkRefsAndKeywords(it);\n}\nfunction typeAndKeywords(it, errsCount) {\n if (it.opts.jtd)\n return schemaKeywords(it, [], false, errsCount);\n const types = (0, dataType_1.getSchemaTypes)(it.schema);\n const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types);\n schemaKeywords(it, types, !checkedTypes, errsCount);\n}\nfunction checkRefsAndKeywords(it) {\n const { schema, errSchemaPath, opts, self } = it;\n if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`);\n }\n}\nfunction checkNoDefault(it) {\n const { schema, opts } = it;\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n (0, util_1.checkStrictMode)(it, \"default is ignored in the schema root\");\n }\n}\nfunction updateContext(it) {\n const schId = it.schema[it.opts.schemaId];\n if (schId)\n it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId);\n}\nfunction checkAsyncSchema(it) {\n if (it.schema.$async && !it.schemaEnv.$async)\n throw new Error(\"async schema in sync schema\");\n}\nfunction commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) {\n const msg = schema.$comment;\n if (opts.$comment === true) {\n gen.code((0, codegen_1._) `${names_1.default.self}.logger.log(${msg})`);\n }\n else if (typeof opts.$comment == \"function\") {\n const schemaPath = (0, codegen_1.str) `${errSchemaPath}/$comment`;\n const rootName = gen.scopeValue(\"root\", { ref: schemaEnv.root });\n gen.code((0, codegen_1._) `${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`);\n }\n}\nfunction returnResults(it) {\n const { gen, schemaEnv, validateName, ValidationError, opts } = it;\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if((0, codegen_1._) `${names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._) `new ${ValidationError}(${names_1.default.vErrors})`));\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, names_1.default.vErrors);\n if (opts.unevaluated)\n assignEvaluated(it);\n gen.return((0, codegen_1._) `${names_1.default.errors} === 0`);\n }\n}\nfunction assignEvaluated({ gen, evaluated, props, items }) {\n if (props instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.props`, props);\n if (items instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.items`, items);\n}\nfunction schemaKeywords(it, types, typeErrors, errsCount) {\n const { gen, schema, data, allErrors, opts, self } = it;\n const { RULES } = self;\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", RULES.all.$ref.definition)); // TODO typecast\n return;\n }\n if (!opts.jtd)\n checkStrictTypes(it, types);\n gen.block(() => {\n for (const group of RULES.rules)\n groupKeywords(group);\n groupKeywords(RULES.post);\n });\n function groupKeywords(group) {\n if (!(0, applicability_1.shouldUseGroup)(schema, group))\n return;\n if (group.type) {\n gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers));\n iterateKeywords(it, group);\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else();\n (0, dataType_2.reportTypeError)(it);\n }\n gen.endIf();\n }\n else {\n iterateKeywords(it, group);\n }\n // TODO make it \"ok\" call?\n if (!allErrors)\n gen.if((0, codegen_1._) `${names_1.default.errors} === ${errsCount || 0}`);\n }\n}\nfunction iterateKeywords(it, group) {\n const { gen, schema, opts: { useDefaults }, } = it;\n if (useDefaults)\n (0, defaults_1.assignDefaults)(it, group.type);\n gen.block(() => {\n for (const rule of group.rules) {\n if ((0, applicability_1.shouldUseRule)(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type);\n }\n }\n });\n}\nfunction checkStrictTypes(it, types) {\n if (it.schemaEnv.meta || !it.opts.strictTypes)\n return;\n checkContextTypes(it, types);\n if (!it.opts.allowUnionTypes)\n checkMultipleTypes(it, types);\n checkKeywordTypes(it, it.dataTypes);\n}\nfunction checkContextTypes(it, types) {\n if (!types.length)\n return;\n if (!it.dataTypes.length) {\n it.dataTypes = types;\n return;\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`);\n }\n });\n narrowSchemaTypes(it, types);\n}\nfunction checkMultipleTypes(it, ts) {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\");\n }\n}\nfunction checkKeywordTypes(it, ts) {\n const rules = it.self.RULES.all;\n for (const keyword in rules) {\n const rule = rules[keyword];\n if (typeof rule == \"object\" && (0, applicability_1.shouldUseRule)(it.schema, rule)) {\n const { type } = rule.definition;\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`);\n }\n }\n }\n}\nfunction hasApplicableType(schTs, kwdT) {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"));\n}\nfunction includesType(ts, t) {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"));\n}\nfunction narrowSchemaTypes(it, withTypes) {\n const ts = [];\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t))\n ts.push(t);\n else if (withTypes.includes(\"integer\") && t === \"number\")\n ts.push(\"integer\");\n }\n it.dataTypes = ts;\n}\nfunction strictTypesError(it, msg) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;\n msg += ` at \"${schemaPath}\" (strictTypes)`;\n (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes);\n}\nclass KeywordCxt {\n constructor(it, def, keyword) {\n (0, keyword_1.validateKeywordUsage)(it, def, keyword);\n this.gen = it.gen;\n this.allErrors = it.allErrors;\n this.keyword = keyword;\n this.data = it.data;\n this.schema = it.schema[keyword];\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data;\n this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data);\n this.schemaType = def.schemaType;\n this.parentSchema = it.schema;\n this.params = {};\n this.it = it;\n this.def = def;\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it));\n }\n else {\n this.schemaCode = this.schemaValue;\n if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);\n }\n }\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", names_1.default.errors);\n }\n }\n result(condition, successAction, failAction) {\n this.failResult((0, codegen_1.not)(condition), successAction, failAction);\n }\n failResult(condition, successAction, failAction) {\n this.gen.if(condition);\n if (failAction)\n failAction();\n else\n this.error();\n if (successAction) {\n this.gen.else();\n successAction();\n if (this.allErrors)\n this.gen.endIf();\n }\n else {\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n }\n pass(condition, failAction) {\n this.failResult((0, codegen_1.not)(condition), undefined, failAction);\n }\n fail(condition) {\n if (condition === undefined) {\n this.error();\n if (!this.allErrors)\n this.gen.if(false); // this branch will be removed by gen.optimize\n return;\n }\n this.gen.if(condition);\n this.error();\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n fail$data(condition) {\n if (!this.$data)\n return this.fail(condition);\n const { schemaCode } = this;\n this.fail((0, codegen_1._) `${schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`);\n }\n error(append, errorParams, errorPaths) {\n if (errorParams) {\n this.setParams(errorParams);\n this._error(append, errorPaths);\n this.setParams({});\n return;\n }\n this._error(append, errorPaths);\n }\n _error(append, errorPaths) {\n ;\n (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths);\n }\n $dataError() {\n (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError);\n }\n reset() {\n if (this.errsCount === undefined)\n throw new Error('add \"trackErrors\" to keyword definition');\n (0, errors_1.resetErrorsCount)(this.gen, this.errsCount);\n }\n ok(cond) {\n if (!this.allErrors)\n this.gen.if(cond);\n }\n setParams(obj, assign) {\n if (assign)\n Object.assign(this.params, obj);\n else\n this.params = obj;\n }\n block$data(valid, codeBlock, $dataValid = codegen_1.nil) {\n this.gen.block(() => {\n this.check$data(valid, $dataValid);\n codeBlock();\n });\n }\n check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) {\n if (!this.$data)\n return;\n const { gen, schemaCode, schemaType, def } = this;\n gen.if((0, codegen_1.or)((0, codegen_1._) `${schemaCode} === undefined`, $dataValid));\n if (valid !== codegen_1.nil)\n gen.assign(valid, true);\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data());\n this.$dataError();\n if (valid !== codegen_1.nil)\n gen.assign(valid, false);\n }\n gen.else();\n }\n invalid$data() {\n const { gen, schemaCode, schemaType, def, it } = this;\n return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema());\n function wrong$DataType() {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof codegen_1.Name))\n throw new Error(\"ajv implementation error\");\n const st = Array.isArray(schemaType) ? schemaType : [schemaType];\n return (0, codegen_1._) `${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`;\n }\n return codegen_1.nil;\n }\n function invalid$DataSchema() {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", { ref: def.validateSchema }); // TODO value.code for standalone\n return (0, codegen_1._) `!${validateSchemaRef}(${schemaCode})`;\n }\n return codegen_1.nil;\n }\n }\n subschema(appl, valid) {\n const subschema = (0, subschema_1.getSubschema)(this.it, appl);\n (0, subschema_1.extendSubschemaData)(subschema, this.it, appl);\n (0, subschema_1.extendSubschemaMode)(subschema, appl);\n const nextContext = { ...this.it, ...subschema, items: undefined, props: undefined };\n subschemaCode(nextContext, valid);\n return nextContext;\n }\n mergeEvaluated(schemaCxt, toName) {\n const { it, gen } = this;\n if (!it.opts.unevaluated)\n return;\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName);\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName);\n }\n }\n mergeValidEvaluated(schemaCxt, valid) {\n const { it, gen } = this;\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name));\n return true;\n }\n }\n}\nexports.KeywordCxt = KeywordCxt;\nfunction keywordCode(it, keyword, def, ruleType) {\n const cxt = new KeywordCxt(it, def, keyword);\n if (\"code\" in def) {\n def.code(cxt, ruleType);\n }\n else if (cxt.$data && def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n else if (\"macro\" in def) {\n (0, keyword_1.macroKeywordCode)(cxt, def);\n }\n else if (def.compile || def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n}\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, { dataLevel, dataNames, dataPathArr }) {\n let jsonPointer;\n let data;\n if ($data === \"\")\n return names_1.default.rootData;\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data))\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n jsonPointer = $data;\n data = names_1.default.rootData;\n }\n else {\n const matches = RELATIVE_JSON_POINTER.exec($data);\n if (!matches)\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n const up = +matches[1];\n jsonPointer = matches[2];\n if (jsonPointer === \"#\") {\n if (up >= dataLevel)\n throw new Error(errorMsg(\"property/index\", up));\n return dataPathArr[dataLevel - up];\n }\n if (up > dataLevel)\n throw new Error(errorMsg(\"data\", up));\n data = dataNames[dataLevel - up];\n if (!jsonPointer)\n return data;\n }\n let expr = data;\n const segments = jsonPointer.split(\"/\");\n for (const segment of segments) {\n if (segment) {\n data = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`;\n expr = (0, codegen_1._) `${expr} && ${data}`;\n }\n }\n return expr;\n function errorMsg(pointerType, up) {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`;\n }\n}\nexports.getData = getData;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ajv_1 = require(\"ajv\");\nconst codegen_1 = require(\"ajv/dist/compile/codegen\");\nconst code_1 = require(\"ajv/dist/compile/codegen/code\");\nconst validate_1 = require(\"ajv/dist/compile/validate\");\nconst errors_1 = require(\"ajv/dist/compile/errors\");\nconst names_1 = require(\"ajv/dist/compile/names\");\nconst keyword = \"errorMessage\";\nconst used = new ajv_1.Name(\"emUsed\");\nconst KEYWORD_PROPERTY_PARAMS = {\n required: \"missingProperty\",\n dependencies: \"property\",\n dependentRequired: \"property\",\n};\nconst INTERPOLATION = /\\$\\{[^}]+\\}/;\nconst INTERPOLATION_REPLACE = /\\$\\{([^}]+)\\}/g;\nconst EMPTY_STR = /^\"\"\\s*\\+\\s*|\\s*\\+\\s*\"\"$/g;\nfunction errorMessage(options) {\n return {\n keyword,\n schemaType: [\"string\", \"object\"],\n post: true,\n code(cxt) {\n const { gen, data, schema, schemaValue, it } = cxt;\n if (it.createErrors === false)\n return;\n const sch = schema;\n const instancePath = codegen_1.strConcat(names_1.default.instancePath, it.errorPath);\n gen.if(ajv_1._ `${names_1.default.errors} > 0`, () => {\n if (typeof sch == \"object\") {\n const [kwdPropErrors, kwdErrors] = keywordErrorsConfig(sch);\n if (kwdErrors)\n processKeywordErrors(kwdErrors);\n if (kwdPropErrors)\n processKeywordPropErrors(kwdPropErrors);\n processChildErrors(childErrorsConfig(sch));\n }\n const schMessage = typeof sch == \"string\" ? sch : sch._;\n if (schMessage)\n processAllErrors(schMessage);\n if (!options.keepErrors)\n removeUsedErrors();\n });\n function childErrorsConfig({ properties, items }) {\n const errors = {};\n if (properties) {\n errors.props = {};\n for (const p in properties)\n errors.props[p] = [];\n }\n if (items) {\n errors.items = {};\n for (let i = 0; i < items.length; i++)\n errors.items[i] = [];\n }\n return errors;\n }\n function keywordErrorsConfig(emSchema) {\n let propErrors;\n let errors;\n for (const k in emSchema) {\n if (k === \"properties\" || k === \"items\")\n continue;\n const kwdSch = emSchema[k];\n if (typeof kwdSch == \"object\") {\n propErrors || (propErrors = {});\n const errMap = (propErrors[k] = {});\n for (const p in kwdSch)\n errMap[p] = [];\n }\n else {\n errors || (errors = {});\n errors[k] = [];\n }\n }\n return [propErrors, errors];\n }\n function processKeywordErrors(kwdErrors) {\n const kwdErrs = gen.const(\"emErrors\", ajv_1.stringify(kwdErrors));\n const templates = gen.const(\"templates\", getTemplatesCode(kwdErrors, schema));\n gen.forOf(\"err\", names_1.default.vErrors, (err) => gen.if(matchKeywordError(err, kwdErrs), () => gen.code(ajv_1._ `${kwdErrs}[${err}.keyword].push(${err})`).assign(ajv_1._ `${err}.${used}`, true)));\n const { singleError } = options;\n if (singleError) {\n const message = gen.let(\"message\", ajv_1._ `\"\"`);\n const paramsErrors = gen.let(\"paramsErrors\", ajv_1._ `[]`);\n loopErrors((key) => {\n gen.if(message, () => gen.code(ajv_1._ `${message} += ${typeof singleError == \"string\" ? singleError : \";\"}`));\n gen.code(ajv_1._ `${message} += ${errMessage(key)}`);\n gen.assign(paramsErrors, ajv_1._ `${paramsErrors}.concat(${kwdErrs}[${key}])`);\n });\n errors_1.reportError(cxt, { message, params: ajv_1._ `{errors: ${paramsErrors}}` });\n }\n else {\n loopErrors((key) => errors_1.reportError(cxt, {\n message: errMessage(key),\n params: ajv_1._ `{errors: ${kwdErrs}[${key}]}`,\n }));\n }\n function loopErrors(body) {\n gen.forIn(\"key\", kwdErrs, (key) => gen.if(ajv_1._ `${kwdErrs}[${key}].length`, () => body(key)));\n }\n function errMessage(key) {\n return ajv_1._ `${key} in ${templates} ? ${templates}[${key}]() : ${schemaValue}[${key}]`;\n }\n }\n function processKeywordPropErrors(kwdPropErrors) {\n const kwdErrs = gen.const(\"emErrors\", ajv_1.stringify(kwdPropErrors));\n const templatesCode = [];\n for (const k in kwdPropErrors) {\n templatesCode.push([\n k,\n getTemplatesCode(kwdPropErrors[k], schema[k]),\n ]);\n }\n const templates = gen.const(\"templates\", gen.object(...templatesCode));\n const kwdPropParams = gen.scopeValue(\"obj\", {\n ref: KEYWORD_PROPERTY_PARAMS,\n code: ajv_1.stringify(KEYWORD_PROPERTY_PARAMS),\n });\n const propParam = gen.let(\"emPropParams\");\n const paramsErrors = gen.let(\"emParamsErrors\");\n gen.forOf(\"err\", names_1.default.vErrors, (err) => gen.if(matchKeywordError(err, kwdErrs), () => {\n gen.assign(propParam, ajv_1._ `${kwdPropParams}[${err}.keyword]`);\n gen.assign(paramsErrors, ajv_1._ `${kwdErrs}[${err}.keyword][${err}.params[${propParam}]]`);\n gen.if(paramsErrors, () => gen.code(ajv_1._ `${paramsErrors}.push(${err})`).assign(ajv_1._ `${err}.${used}`, true));\n }));\n gen.forIn(\"key\", kwdErrs, (key) => gen.forIn(\"keyProp\", ajv_1._ `${kwdErrs}[${key}]`, (keyProp) => {\n gen.assign(paramsErrors, ajv_1._ `${kwdErrs}[${key}][${keyProp}]`);\n gen.if(ajv_1._ `${paramsErrors}.length`, () => {\n const tmpl = gen.const(\"tmpl\", ajv_1._ `${templates}[${key}] && ${templates}[${key}][${keyProp}]`);\n errors_1.reportError(cxt, {\n message: ajv_1._ `${tmpl} ? ${tmpl}() : ${schemaValue}[${key}][${keyProp}]`,\n params: ajv_1._ `{errors: ${paramsErrors}}`,\n });\n });\n }));\n }\n function processChildErrors(childErrors) {\n const { props, items } = childErrors;\n if (!props && !items)\n return;\n const isObj = ajv_1._ `typeof ${data} == \"object\"`;\n const isArr = ajv_1._ `Array.isArray(${data})`;\n const childErrs = gen.let(\"emErrors\");\n let childKwd;\n let childProp;\n const templates = gen.let(\"templates\");\n if (props && items) {\n childKwd = gen.let(\"emChildKwd\");\n gen.if(isObj);\n gen.if(isArr, () => {\n init(items, schema.items);\n gen.assign(childKwd, ajv_1.str `items`);\n }, () => {\n init(props, schema.properties);\n gen.assign(childKwd, ajv_1.str `properties`);\n });\n childProp = ajv_1._ `[${childKwd}]`;\n }\n else if (items) {\n gen.if(isArr);\n init(items, schema.items);\n childProp = ajv_1._ `.items`;\n }\n else if (props) {\n gen.if(codegen_1.and(isObj, codegen_1.not(isArr)));\n init(props, schema.properties);\n childProp = ajv_1._ `.properties`;\n }\n gen.forOf(\"err\", names_1.default.vErrors, (err) => ifMatchesChildError(err, childErrs, (child) => gen.code(ajv_1._ `${childErrs}[${child}].push(${err})`).assign(ajv_1._ `${err}.${used}`, true)));\n gen.forIn(\"key\", childErrs, (key) => gen.if(ajv_1._ `${childErrs}[${key}].length`, () => {\n errors_1.reportError(cxt, {\n message: ajv_1._ `${key} in ${templates} ? ${templates}[${key}]() : ${schemaValue}${childProp}[${key}]`,\n params: ajv_1._ `{errors: ${childErrs}[${key}]}`,\n });\n gen.assign(ajv_1._ `${names_1.default.vErrors}[${names_1.default.errors}-1].instancePath`, ajv_1._ `${instancePath} + \"/\" + ${key}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")`);\n }));\n gen.endIf();\n function init(children, msgs) {\n gen.assign(childErrs, ajv_1.stringify(children));\n gen.assign(templates, getTemplatesCode(children, msgs));\n }\n }\n function processAllErrors(schMessage) {\n const errs = gen.const(\"emErrs\", ajv_1._ `[]`);\n gen.forOf(\"err\", names_1.default.vErrors, (err) => gen.if(matchAnyError(err), () => gen.code(ajv_1._ `${errs}.push(${err})`).assign(ajv_1._ `${err}.${used}`, true)));\n gen.if(ajv_1._ `${errs}.length`, () => errors_1.reportError(cxt, {\n message: templateExpr(schMessage),\n params: ajv_1._ `{errors: ${errs}}`,\n }));\n }\n function removeUsedErrors() {\n const errs = gen.const(\"emErrs\", ajv_1._ `[]`);\n gen.forOf(\"err\", names_1.default.vErrors, (err) => gen.if(ajv_1._ `!${err}.${used}`, () => gen.code(ajv_1._ `${errs}.push(${err})`)));\n gen.assign(names_1.default.vErrors, errs).assign(names_1.default.errors, ajv_1._ `${errs}.length`);\n }\n function matchKeywordError(err, kwdErrs) {\n return codegen_1.and(ajv_1._ `${err}.keyword !== ${keyword}`, ajv_1._ `!${err}.${used}`, ajv_1._ `${err}.instancePath === ${instancePath}`, ajv_1._ `${err}.keyword in ${kwdErrs}`, \n // TODO match the end of the string?\n ajv_1._ `${err}.schemaPath.indexOf(${it.errSchemaPath}) === 0`, ajv_1._ `/^\\\\/[^\\\\/]*$/.test(${err}.schemaPath.slice(${it.errSchemaPath.length}))`);\n }\n function ifMatchesChildError(err, childErrs, thenBody) {\n gen.if(codegen_1.and(ajv_1._ `${err}.keyword !== ${keyword}`, ajv_1._ `!${err}.${used}`, ajv_1._ `${err}.instancePath.indexOf(${instancePath}) === 0`), () => {\n const childRegex = gen.scopeValue(\"pattern\", {\n ref: /^\\/([^/]*)(?:\\/|$)/,\n code: ajv_1._ `new RegExp(\"^\\\\\\/([^/]*)(?:\\\\\\/|$)\")`,\n });\n const matches = gen.const(\"emMatches\", ajv_1._ `${childRegex}.exec(${err}.instancePath.slice(${instancePath}.length))`);\n const child = gen.const(\"emChild\", ajv_1._ `${matches} && ${matches}[1].replace(/~1/g, \"/\").replace(/~0/g, \"~\")`);\n gen.if(ajv_1._ `${child} !== undefined && ${child} in ${childErrs}`, () => thenBody(child));\n });\n }\n function matchAnyError(err) {\n return codegen_1.and(ajv_1._ `${err}.keyword !== ${keyword}`, ajv_1._ `!${err}.${used}`, codegen_1.or(ajv_1._ `${err}.instancePath === ${instancePath}`, codegen_1.and(ajv_1._ `${err}.instancePath.indexOf(${instancePath}) === 0`, ajv_1._ `${err}.instancePath[${instancePath}.length] === \"/\"`)), ajv_1._ `${err}.schemaPath.indexOf(${it.errSchemaPath}) === 0`, ajv_1._ `${err}.schemaPath[${it.errSchemaPath}.length] === \"/\"`);\n }\n function getTemplatesCode(keys, msgs) {\n const templatesCode = [];\n for (const k in keys) {\n const msg = msgs[k];\n if (INTERPOLATION.test(msg))\n templatesCode.push([k, templateFunc(msg)]);\n }\n return gen.object(...templatesCode);\n }\n function templateExpr(msg) {\n if (!INTERPOLATION.test(msg))\n return ajv_1.stringify(msg);\n return new code_1._Code(code_1.safeStringify(msg)\n .replace(INTERPOLATION_REPLACE, (_s, ptr) => `\" + JSON.stringify(${validate_1.getData(ptr, it)}) + \"`)\n .replace(EMPTY_STR, \"\"));\n }\n function templateFunc(msg) {\n return ajv_1._ `function(){return ${templateExpr(msg)}}`;\n }\n },\n metaSchema: {\n anyOf: [\n { type: \"string\" },\n {\n type: \"object\",\n properties: {\n properties: { $ref: \"#/$defs/stringMap\" },\n items: { $ref: \"#/$defs/stringList\" },\n required: { $ref: \"#/$defs/stringOrMap\" },\n dependencies: { $ref: \"#/$defs/stringOrMap\" },\n },\n additionalProperties: { type: \"string\" },\n },\n ],\n $defs: {\n stringMap: {\n type: \"object\",\n additionalProperties: { type: \"string\" },\n },\n stringOrMap: {\n anyOf: [{ type: \"string\" }, { $ref: \"#/$defs/stringMap\" }],\n },\n stringList: { type: \"array\", items: { type: \"string\" } },\n },\n },\n };\n}\nconst ajvErrors = (ajv, options = {}) => {\n if (!ajv.opts.allErrors)\n throw new Error(\"ajv-errors: Ajv option allErrors must be true\");\n if (ajv.opts.jsPropertySyntax) {\n throw new Error(\"ajv-errors: ajv option jsPropertySyntax is not supported\");\n }\n return ajv.addKeyword(errorMessage(options));\n};\nexports.default = ajvErrors;\nmodule.exports = ajvErrors;\nmodule.exports.default = ajvErrors;\n//# sourceMappingURL=index.js.map","import{validateFieldsNatively as r,toNestErrors as e}from\"@hookform/resolvers\";import o from\"ajv\";import a from\"ajv-errors\";import{appendErrors as s}from\"react-hook-form\";var t=function(r,e){for(var o={},a=function(r){\"required\"===r.keyword&&(r.instancePath+=\"/\"+r.params.missingProperty);var a=r.instancePath.substring(1).replace(/\\//g,\".\");if(o[a]||(o[a]={message:r.message,type:r.keyword}),e){var t=o[a].types,i=t&&t[r.keyword];o[a]=s(a,e,o,r.keyword,i?[].concat(i,r.message||\"\"):r.message)}},t=function(){var e=r[i];\"errorMessage\"===e.keyword?e.params.errors.forEach(function(r){r.message=e.message,a(r)}):a(e)},i=0;i<r.length;i+=1)t();return o},i=function(s,i,n){return void 0===n&&(n={}),function(m,c,v){try{var l=new o(Object.assign({},{allErrors:!0,validateSchema:!0},i));a(l);var u=l.compile(Object.assign({$async:n&&\"async\"===n.mode},s)),f=u(m);return v.shouldUseNativeValidation&&r({},v),Promise.resolve(f?{values:m,errors:{}}:{values:{},errors:e(t(u.errors,!v.shouldUseNativeValidation&&\"all\"===v.criteriaMode),v)})}catch(r){return Promise.reject(r)}}};export{i as ajvResolver};\n//# sourceMappingURL=ajv.module.js.map\n","import React from 'react';\nimport { useForm, Controller } from 'react-hook-form';\nimport { ajvResolver } from '@hookform/resolvers/ajv';\nimport { XCircle } from '@phosphor-icons/react';\n\nimport type { ActionInputFormBlock, ActionInputs, ActionInputsSchema } from '../types';\n\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Textarea } from '@/components/ui/textarea';\nimport { SimpleSelect } from '@/components/select';\nimport { cn } from '@/lib/utils';\nimport { DatePicker } from '@/components/date-picker';\n\nexport interface ActionInputFormBlockProps {\n block: ActionInputFormBlock;\n}\n\n/**\n * Patches the schema for AJV resolver to correctly validate required string fields.\n *\n * This function addresses a limitation in AJV validation:\n * By default, AJV only checks if a field exists but doesn't consider empty strings invalid.\n * For form validation, we need to ensure required string fields are non-empty.\n * This function adds `minLength: 1` to all required string fields that don't already\n * have a minLength constraint, ensuring empty strings fail validation.\n * see https://github.com/react-hook-form/resolvers/blob/master/README.md#ajv\n *\n * @param schema - The original JSON schema to enhance\n * @returns A new schema with minLength constraints added to required string fields\n */\nexport function patchSchemaForAjvResolver(schema: ActionInputsSchema): ActionInputsSchema {\n // Use structuredClone for proper deep copying of all data types\n const newSchema = structuredClone(schema);\n\n newSchema.errorMessage = 'This field is required';\n\n for (const [key, property] of Object.entries((newSchema.properties ?? {}) as Record<string, any>)) {\n if (newSchema.required?.includes(key) && property.type === 'string') {\n property.minLength = property.minLength || 1;\n property.errorMessage = property.errorMessage || {\n minLength: 'This field is required',\n };\n }\n if (property.type === 'number') {\n property.errorMessage = property.errorMessage || {\n type: 'Please enter a valid number',\n };\n }\n }\n\n return newSchema;\n}\n\nexport function ActionInputFormBlock({ block }: ActionInputFormBlockProps) {\n const formSchema = React.useMemo(() => {\n return patchSchemaForAjvResolver(block.schema);\n }, [block.schema]);\n\n const { inputs = [], initialValues, state } = block;\n\n const isReady = state === 'ready';\n const isProcessing = state === 'processing';\n const isCompleted = state === 'completed';\n\n const defaultValues = Object.entries(initialValues).reduce((acc, [key, value]) => {\n if (typeof value === 'string' && value.trim() === '') {\n return acc;\n }\n acc[key] = value;\n\n return acc;\n }, {} as ActionInputs);\n\n const {\n register,\n control,\n handleSubmit,\n formState: { errors },\n } = useForm<ActionInputs>({\n defaultValues,\n resolver: ajvResolver(formSchema, {\n removeAdditional: true,\n }),\n });\n\n const onSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (block.onSubmit) {\n void handleSubmit(block.onSubmit)(e);\n }\n\n return false;\n };\n\n const formInputs = inputs.map((input) => {\n const { name, required, schema: inputSchema, ui } = input;\n const labelText = `${inputSchema.title ?? name}${required ? '*' : ''}`;\n const description = inputSchema.description;\n const error = errors[name];\n\n const errorMessage = error?.message;\n\n let descriptionText: React.ReactNode = description ? String(description) : null;\n\n if (error) {\n // if there is a description, show it and the error message in italic\n descriptionText = description ? (\n <>\n {description} - <span className=\"italic\">{errorMessage}</span>\n </>\n ) : (\n // if there is no description, just show the error message\n errorMessage\n );\n }\n\n const inputType = ui?.type || 'text';\n const registerOptions = {\n valueAsNumber: inputType === 'number' ? true : undefined,\n };\n\n return (\n <div key={name} className=\"py-2 flex flex-col gap-2\">\n <Label htmlFor={name}>{labelText}</Label>\n {inputType === 'datepicker' ? (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <DatePicker\n date={field.value && typeof field.value === 'string' ? new Date(field.value) : undefined}\n setDate={(date) => {\n if (date) {\n field.onChange(date.toISOString());\n } else {\n field.onChange(undefined);\n }\n }}\n className={cn('!bg-transparent', { 'border-red-600': !!error })}\n />\n )}\n />\n ) : inputType === 'textarea' ? (\n <Textarea\n disabled={!isReady}\n rows={2}\n maxLength={10000}\n className={cn('!bg-transparent', { 'border-red-600': !!error })}\n {...register(name, registerOptions)}\n aria-invalid={!!error}\n aria-required={required}\n />\n ) : inputType === 'select' ? (\n <Controller\n control={control}\n name={name}\n render={({ field }) => (\n <SimpleSelect\n options={\n inputSchema.oneOf?.map((option) => ({\n label: option.title,\n value: option.const,\n })) ?? []\n }\n className={cn('!bg-transparent', { 'border-red-600': !!error })}\n value={field.value as string}\n onChange={(value) => field.onChange(value)}\n />\n )}\n />\n ) : (\n <Input\n type={inputType}\n disabled={!isReady}\n className={cn({ 'border-red-600': !!error })}\n {...register(name, registerOptions)}\n aria-invalid={!!error}\n aria-required={required}\n />\n )}\n {descriptionText && (\n <span\n className={cn('flex text-sm leading-6 font-medium gap-1.5 items-center', {\n 'text-red-600 dark:text-white': !!error,\n })}\n >\n {error && <XCircle weight=\"fill\" size={20} className=\"inline-block align-middle text-red-600\" />}\n <span>{descriptionText}</span>\n </span>\n )}\n </div>\n );\n });\n\n return (\n <div className=\"relative\">\n <form className=\"flex flex-col justify-stretch\" onSubmit={onSubmit}>\n {formInputs}\n <div className=\"mt-4\">\n <Button type=\"submit\" variant=\"dark\" disabled={!isReady} className=\"w-full rounded-s\">\n {isReady && 'Submit'}\n {isProcessing && 'Processing...'}\n {isCompleted && 'Completed'}\n </Button>\n </div>\n </form>\n </div>\n );\n}\n","import type { ActionButtonsBlock as ActionButtonsBlockType } from '../types';\n\n// eslint-disable-next-line no-unused-vars\nexport function ActionButtonsBlock({ block: _block }: { block: ActionButtonsBlockType }) {\n return null;\n}\n\nexport default ActionButtonsBlock;\n","import React from 'react';\n\nimport type { MarkdownTextBlock, RedirectRule, AnswerState } from '../types';\n\nimport { FormattedMessage } from '@/components/markdown/FormattedMessage';\n\nexport interface MarkdownTextBlockProps {\n block: MarkdownTextBlock;\n redirectRules?: RedirectRule[];\n state: AnswerState;\n}\n\nexport function MarkdownTextBlock({ block, redirectRules, state }: MarkdownTextBlockProps) {\n if (!block.text || block.text.trim() === '') {\n return (\n <div className=\"w-full py-4\">\n <div className=\"space-y-4\">\n <div className=\"space-y-3\">\n <div className=\"h-4 rounded w-3/4 shimmer\" />\n <div className=\"h-4 rounded w-full shimmer\" />\n <div className=\"h-4 rounded w-5/6 shimmer\" />\n </div>\n </div>\n </div>\n );\n }\n\n const { text } = block;\n\n return (\n <div className=\"w-full\">\n <div className=\"prose prose-sm max-w-none text-foreground\">\n <FormattedMessage\n message={{\n content: text,\n }}\n redirectRules={redirectRules}\n isStreaming={state === 'streaming'}\n />\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { ActionInputFormBlock } from './blocks/ActionInputForm';\nimport { ActionButtonsBlock } from './blocks/ActionButtons';\nimport { MarkdownTextBlock } from './blocks/MarkdownText';\nimport type { AnswerBlock, AnswerState, RedirectRule } from './types';\n\nexport interface AnswerBlockProps {\n block: AnswerBlock;\n redirectRules?: RedirectRule[];\n state: AnswerState;\n}\n\nexport function AnswerBlock({ block, redirectRules, state }: AnswerBlockProps) {\n switch (block.type) {\n case 'markdown-text':\n return <MarkdownTextBlock block={block} redirectRules={redirectRules} state={state} />;\n case 'action-buttons':\n return <ActionButtonsBlock block={block} />;\n case 'action-input-form':\n return <ActionInputFormBlock block={block} />;\n default:\n return null;\n }\n}\n","import { createId } from '@paralleldrive/cuid2';\n\nimport {\n ActionButtonsBlock,\n ActionInputFormBlock,\n ActionInputs,\n ActionInput,\n AnswerBlock,\n MarkdownTextBlock,\n ActionInputsSchema,\n} from '../types';\n\nexport const markdownTextBlock = ({ text = '' }: { text?: string } = {}): MarkdownTextBlock => ({\n id: createId(),\n type: 'markdown-text',\n text,\n});\n\nexport const actionInputFormBlock = ({\n actionId,\n initialValues,\n onSubmit,\n inputs,\n schema,\n}: {\n actionId: string;\n initialValues: ActionInputs;\n onSubmit: (inputs: ActionInputs) => void;\n inputs: ActionInput[];\n schema: ActionInputsSchema;\n}): ActionInputFormBlock => ({\n id: createId(),\n type: 'action-input-form',\n state: 'ready',\n actionId,\n initialValues,\n onSubmit,\n inputs,\n schema,\n});\n\nexport const actionButtonsBlock = (): ActionButtonsBlock => ({\n id: createId(),\n type: 'action-buttons',\n});\n\nexport const isMarkdownTextBlock = (block: AnswerBlock): block is MarkdownTextBlock => {\n return block.type === 'markdown-text';\n};\n\nexport const isActionInputFormBlock = (block: AnswerBlock): block is ActionInputFormBlock => {\n return block.type === 'action-input-form';\n};\n\nexport const isActionButtonsBlock = (block: AnswerBlock): block is ActionButtonsBlock => {\n return block.type === 'action-buttons';\n};\n","import React, { Suspense, lazy, memo, forwardRef } from 'react';\nimport { type Icon, type IconProps } from '@phosphor-icons/react';\n\ninterface PhosphorIconProps extends IconProps {\n iconName: string;\n}\n\n/**\n * A flexible icon component that supports both Phosphor icons and image-based icons.\n *\n * The component uses dynamic imports to lazy load Phosphor icons, reducing the initial\n * bundle size by only loading icons when they're needed.\n *\n * @component\n * @example\n * // Using a Phosphor icon\n * <Icon iconName=\"House\" size={24} />\n *\n * // Using an image icon\n * <Icon iconPath=\"/path/to/icon.svg\" />\n */\n\nconst PhosphorIcon = forwardRef<SVGSVGElement, PhosphorIconProps>(({ iconName, ...props }, ref) => {\n const IconComponent = lazy(() =>\n import('@phosphor-icons/react').then((module) => {\n const icons = module as unknown as Record<string, Icon>;\n\n return { default: icons[iconName] };\n }),\n );\n\n return (\n <Suspense fallback={<></>}>\n <IconComponent {...props} ref={ref} />\n </Suspense>\n );\n});\n\nPhosphorIcon.displayName = 'PhosphorIcon';\n\nconst Icon = ({ iconPath }: { iconPath: string }) => {\n return <img src={iconPath} alt=\"icon\" />;\n};\n\n// Export a memoized version of the PhosphorIcon component\nexport const MemoizedIcon = memo(PhosphorIcon);\nexport { PhosphorIcon as Icon };\n","import React, { Fragment } from 'react';\nimport { motion } from 'framer-motion';\n\nimport { NextBestAction } from './types';\nimport { MemoizedIcon } from '../ui/icon';\nimport { Button } from '../ui/button';\n\nconst MotionButton = motion(Button);\n\ninterface NextBestActionsProps {\n nextBestActions: NextBestAction[];\n onActionClick: (action: NextBestAction) => void;\n}\n\nconst NextBestActions: React.FC<NextBestActionsProps> = ({ nextBestActions, onActionClick }) => {\n if (!nextBestActions.length) return null;\n\n return (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -20 }}\n className=\"w-full\"\n >\n <div className=\"rounded-lg overflow-hidden bg-card border divide-y divide-dark-300\">\n {nextBestActions.map((action, index) => {\n const handleClick = () => {\n onActionClick(action);\n };\n\n const className =\n 'w-full h-12 py-2 px-4 inline-flex items-center justify-center gap-2 whitespace-nowrap text-base font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-6 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground';\n\n // create an key for each action based on label and index\n const key = `${action.label}-${index}`.replace(/\\s+/g, '-');\n\n switch (action.type) {\n case 'email':\n return (\n <motion.a\n key={key}\n initial={{ opacity: 0, x: -20 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: index * 0.1 }}\n href={`mailto:${action.value}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={className}\n onClick={() => handleClick()}\n >\n {action.icon && <MemoizedIcon iconName={action.icon} />}\n <span className=\"flex-grow\">{action.label}</span>\n <MemoizedIcon iconName=\"ArrowSquareOut\" />\n </motion.a>\n );\n case 'link':\n return (\n <motion.a\n key={key}\n initial={{ opacity: 0, x: -20 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: index * 0.1 }}\n href={action.value}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={className}\n onClick={() => handleClick()}\n >\n {action.icon && <MemoizedIcon iconName={action.icon} />}\n <span className=\"flex-grow\">{action.label}</span>\n <MemoizedIcon iconName=\"ArrowSquareOut\" />\n </motion.a>\n );\n case 'phone':\n return (\n <motion.a\n key={key}\n initial={{ opacity: 0, x: -20 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: index * 0.1 }}\n href={`tel:${action.value}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={className}\n onClick={() => handleClick()}\n >\n {action.icon && <MemoizedIcon iconName={action.icon} />}\n <span className=\"flex-grow\">{action.label}</span>\n <MemoizedIcon iconName=\"ArrowSquareOut\" />\n </motion.a>\n );\n default:\n return (\n <Fragment key={key}>\n <MotionButton\n initial={{ opacity: 0, x: -20 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: index * 0.1 }}\n className=\"w-full text-left h-12 rounded-none [&_svg]:pointer-events-none [&_svg]:size-6 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground text-base font-medium\"\n variant=\"ghost\"\n onClick={() => handleClick()}\n >\n <MemoizedIcon iconName=\"ArrowCircleRight\" />\n <span className=\"flex-grow\">{action.label}</span>\n <MemoizedIcon iconName=\"ArrowSquareOut\" />\n </MotionButton>\n </Fragment>\n );\n }\n })}\n </div>\n </motion.div>\n );\n};\n\nexport { NextBestActions };\n","/* eslint-disable no-unused-vars */\nimport type { JSONSchemaType } from 'ajv';\n\nimport type { FeatureFlags } from '@/lib/feature-flags';\n\nexport type JSONSchema<T> = JSONSchemaType<T>;\n\nexport interface TextConfig {\n headerText?: string;\n searchPlaceholder?: string;\n attachImageText?: string;\n allDocumentsText?: string;\n loadingSearchText?: string;\n loadingAnswerText?: string;\n errorText?: string;\n followUpPlaceholder?: string;\n positiveAnswerText?: string;\n negativeAnswerText?: string;\n suggestionsTitle?: string;\n uncertaintyFallbackText?: Record<string, string>;\n}\n\nexport enum ActionType {\n CallPhone = 'call_phone',\n OpenUrl = 'open_url',\n SendEmail = 'send_email',\n RunCallback = 'run_callback',\n}\n\n// UI feedback type\nexport type FeedbackResponse = 'accept' | 'reject';\n\n// API feedback type\nexport type APIFeedbackResponse = 'positive' | 'negative';\n\n/**\n * Defines a URL redirect rule with pattern matching\n * @example { source: '/knowledge/:id/:path', destination: '/knowledge/test/:path' }\n */\nexport type RedirectRule = {\n source: string; // Pattern with parameters like '/knowledge/:id/:path'\n destination: string; // Destination with parameter placeholders like '/knowledge/test/:path'\n};\n\nexport type MarkdownTextBlock = {\n id: string;\n type: 'markdown-text';\n text: string;\n};\n\nexport type ActionButtonsBlock = {\n id: string;\n type: 'action-buttons';\n};\n\nexport type ActionInputFormBlock = {\n id: string;\n type: 'action-input-form';\n state: 'ready' | 'processing' | 'completed';\n actionId: string;\n initialValues: ActionInputs;\n schema: ActionInputsSchema;\n onSubmit?: (inputs: ActionInputs) => void;\n inputs: ActionInput[];\n};\n\nexport type ActionInput = {\n name: string;\n required: boolean;\n schema: {\n type: string;\n title: string;\n description: string;\n oneOf?: {\n const: string;\n title: string;\n }[];\n };\n type: string;\n ui: {\n type: string;\n };\n};\nexport type AnswerBlock = MarkdownTextBlock | ActionButtonsBlock | ActionInputFormBlock;\n\nexport type CreateAnswerBlock = Omit<MarkdownTextBlock, 'id'> | Omit<ActionButtonsBlock, 'id'> | Omit<ActionInputFormBlock, 'id'>;\n\nexport type AnswerState = 'fetching-search-results' | 'fetching-stream' | 'streaming' | 'getting-action-inputs' | 'completed';\n\nexport type ActionClick = {\n action: NextBestAction;\n searchQueryId: string;\n query: string;\n answer: string;\n};\n\nexport type Action = {\n id: string;\n type: ActionType;\n action: {\n version: string;\n options: {\n title?: string;\n [key: string]: any;\n };\n };\n};\n\nexport interface Answer {\n id: string;\n state: AnswerState;\n question: string;\n blocks: AnswerBlock[];\n searchResults?: SearchResult[];\n followUpQuestions?: string[];\n searchQueryId?: string;\n feedback?: FeedbackResponse;\n isUncertain?: boolean;\n uncertaintyLanguage?: string | null;\n uncertaintyFallbackText?: string;\n searchIntentId?: string;\n actions?: Action[];\n}\n\nexport type ActionInputValue = string | number | boolean | null;\n\nexport type ActionInputs = Record<string, ActionInputValue>;\n\nexport type ActionInputsSchema = JSONSchemaType<ActionInputs>;\n\nexport type AnswerStreamRequest =\n | {\n type: 'generate-for-query';\n searchQueryId: string;\n conversationId?: string;\n }\n | {\n type: 'invoke-action';\n searchIntentId: string;\n actionId: string;\n parameters: ActionInputs;\n conversationId?: string;\n };\n\nexport type ClientExecutionResult = {\n success: boolean;\n data?: Record<string, any>;\n reason?: string;\n};\n\nexport interface SearchResult {\n id: string;\n title: string;\n url: string;\n}\n\nexport interface SearchResponse {\n results: SearchResult[];\n searchQueryId: string;\n}\n\nexport interface FollowUpQuestionsResponse {\n questions: string[];\n}\n\nexport interface Collection {\n id: string;\n name: string;\n}\n\nexport interface Suggestion {\n id: string;\n question: string;\n conversationId?: string;\n messageCount?: number;\n}\n\nexport interface ChatSearchProps {\n suggestions?: Suggestion[];\n collections?: Array<{ id: string; name: string }>;\n selectedCollectionId?: string;\n onCollectionChange?: (collectionId: string) => void;\n searchEndpoint: string;\n answerEndpoint: string;\n answerStreamEndpoint: string;\n feedbackEndpoint?: string;\n feedbackReasonEndpoint?: string;\n loadConversationEndpoint?: string;\n followUpQuestionsEndpoint?: string;\n autocompleteEndpoint?: string;\n disableFollowUpQuestions?: boolean;\n disableImageAttachment?: boolean;\n disableFeedback?: boolean;\n disclaimer?: string;\n offset?: number;\n headers?: Record<string, string>;\n textConfig?: TextConfig;\n searchPath?: string;\n className?: string;\n onToggleSizeButtonClick?: () => void;\n trackEvent?: (eventName: string, data?: Record<string, any>) => void;\n featureFlags?: FeatureFlags;\n onCloseWidget?: () => void;\n isWidgetMode?: boolean;\n nextBestActions?: NextBestAction[];\n bodyActionButtons?: NextBestAction[];\n onNextBestActionClick?: ({\n action,\n searchQueryId,\n query,\n answer,\n }: {\n action: NextBestAction;\n searchQueryId: string;\n query: string;\n answer: string;\n }) => void;\n userData?: Record<string, unknown> | null;\n redirectRules?: RedirectRule[];\n secretAttributes?: string;\n allowedRegions?: string[];\n}\n\nexport interface ChatSearchState {\n showResults: boolean;\n answers: Answer[];\n isLoading: boolean;\n error?: string;\n}\n\ntype TextChunk = {\n type: 'answer-text-chunk';\n content: string;\n};\n\ntype GetActionInputs = {\n type: 'get-action-inputs';\n schema: ActionInputsSchema;\n values: Record<string, string | number | boolean | null>;\n searchIntentId: string;\n actionId: string;\n inputs: ActionInput[];\n actionType: string;\n actionKey: string;\n};\n\nexport type ActionButtons = {\n type: 'action-buttons';\n actions: Array<{\n id: string;\n type: string;\n action: {\n version: string;\n options: {\n title?: string;\n phoneNumber?: string;\n to?: string;\n [key: string]: any;\n };\n };\n }>;\n searchIntentId: string;\n};\n\ntype Done = {\n type: 'done';\n};\n\nexport type AnswerStreamEvent = TextChunk | GetActionInputs | ActionButtons | Done;\n\ntype UrlString = string & { __url: never };\n\nconst isUrlString = (value: string): value is UrlString => {\n const urlRegExp = /^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/i;\n\n return urlRegExp.test(value);\n};\n\nexport const validateUrlString = (value: string): UrlString => {\n if (!isUrlString(value)) {\n throw new Error(`Invalid URL: ${value}`);\n }\n\n return value as UrlString;\n};\n\nexport enum NextBestActionType {\n Link = 'link',\n Email = 'email',\n Phone = 'phone',\n Callback = 'callback',\n Function = 'function',\n}\n\nexport type NextBestAction = {\n id?: string;\n label: string;\n type: NextBestActionType;\n icon?: string | UrlString;\n value: any;\n};\n\nexport type SearchQueryAttribute = string | number | boolean | null;\n\nexport type SearchQueryAttributes = Record<string, SearchQueryAttribute>;\n","import { ActionType, NextBestActionType, type Action } from '../types';\n\n// Action mapping function\nexport const getActionMapping = (action: Action) => {\n // Single mapping object for both type and icon\n const actionMapping: Record<\n string,\n {\n type: NextBestActionType;\n icon: string;\n getValue: (action: any) => string;\n getLabel: (action: any) => string;\n }\n > = {\n [ActionType.CallPhone]: {\n type: NextBestActionType.Phone,\n icon: 'Phone',\n getValue: (a) => a.action?.options?.phoneNumber || a.id,\n getLabel: (a) => a.action?.options?.title || a.type,\n },\n [ActionType.SendEmail]: {\n type: NextBestActionType.Email,\n icon: 'EnvelopeSimple',\n getValue: (a) => a.action?.options?.to || a.id,\n getLabel: (a) => a.action?.options?.title || a.type,\n },\n [ActionType.OpenUrl]: {\n type: NextBestActionType.Link,\n icon: 'Link',\n getValue: (a) => a.action?.options?.url || a.id,\n getLabel: (a) => a.action?.options?.title || a.type,\n },\n };\n\n // Use the mapping with a default fallback\n const mapping = actionMapping[action.type] || {\n type: NextBestActionType.Link,\n icon: 'Link',\n getValue: (a) => a.action?.options?.url || a.id,\n getLabel: (a) => a.action?.options?.title || a.type,\n };\n\n return mapping;\n};\n","import React, { useState } from 'react';\n\nimport { Action } from './types';\nimport { NextBestAction } from './types';\nimport { ActionClick } from './types';\nimport { NextBestActions } from './NextBestActions';\nimport { getActionMapping } from './helpers/nextBestActions';\n\n// AnswerActions component to handle different actions sources\ninterface AnswerActionsProps {\n actions?: Action[];\n nextBestActions?: NextBestAction[];\n isLastAnswer?: boolean;\n handleActionClick?: (action: ActionClick) => void;\n searchQueryId: string;\n question: string;\n answer: string;\n}\n\nconst AnswerActions: React.FC<AnswerActionsProps> = ({\n actions,\n nextBestActions,\n isLastAnswer,\n handleActionClick,\n searchQueryId,\n question,\n answer,\n}) => {\n const hasActions = actions && actions.length > 0;\n const hasNextBestActions = nextBestActions && isLastAnswer && nextBestActions.length > 0;\n\n const [showAnswerActions] = useState(hasActions || hasNextBestActions);\n\n if (!showAnswerActions) {\n return null;\n }\n\n // Actions from the actions prop coming from intent match\n let mappedActions: NextBestAction[] = [];\n\n if (hasActions) {\n mappedActions = actions.map((action) => {\n const mapping = getActionMapping(action);\n\n return {\n id: action.id,\n label: mapping.getLabel(action),\n type: mapping.type,\n icon: mapping.icon,\n value: mapping.getValue(action),\n };\n });\n }\n\n // Actions from the nextBestActions prop for default actions\n // only display actions if there are actions and it's the last answer\n if (hasNextBestActions) {\n // filter out nextBestActions that have the same type as the already mapped actions.\n // this is to avoid duplicate action types. eg. both the action and the next best action are \"open_url\"\n const filteredNextBestActions = nextBestActions.filter(\n (action) => !mappedActions.some((mappedAction) => mappedAction.type === action.type),\n );\n mappedActions = mappedActions.concat(filteredNextBestActions);\n }\n\n return (\n <div className=\"p-4\">\n <NextBestActions\n nextBestActions={mappedActions}\n onActionClick={(action: NextBestAction) => {\n if (action) {\n handleActionClick?.({\n action,\n searchQueryId: searchQueryId || '',\n query: question,\n answer,\n });\n }\n }}\n />\n </div>\n );\n};\n\nexport default AnswerActions;\n","import { createId } from '@paralleldrive/cuid2';\nimport { WritableDraft } from 'immer';\nimport { ImmerReducer, useImmerReducer } from 'use-immer';\n\nimport { actionButtonsBlock, actionInputFormBlock, isActionInputFormBlock, isMarkdownTextBlock, markdownTextBlock } from '../blocks/utils';\nimport { ActionInputs, ActionInput, ActionType, Answer, AnswerBlock, FeedbackResponse, JSONSchema, SearchResult } from '../types';\n\n// Action types\nexport const AnswersActions = {\n SET_ANSWERS: 'answers/set_answers',\n CLEAR_ALL: 'answers/clear_all',\n APPEND_NEW_ANSWER: 'answers/create_empty_answer',\n APPEND_BLOCK: 'answers/append_block',\n APPEND_ANSWER_CHUNK: 'answers/append_stream_chunk',\n SET_SEARCH_RESULTS: 'answers/update_search_results',\n SET_FOLLOW_UP_QUESTIONS: 'answers/set_follow_up_questions',\n COMPLETE_ANSWER: 'answers/finish_streaming',\n SET_ANSWER_ERROR: 'answers/set_error_state',\n SET_USER_FEEDBACK: 'answers/set_user_feedback',\n CLEAR_USER_FEEDBACK: 'answers/clear_user_feedback',\n MARK_AS_UNCERTAIN: 'answers/mark_as_uncertain',\n NO_ARTICLES_FOUND: 'answers/no_articles_found',\n // action flow\n GET_ACTION_INPUTS: 'answers/request_action_inputs',\n INVOKE_ACTION: 'answers/invoke_action',\n ADD_ACTION_BUTTONS: 'answers/add_action_buttons',\n} as const;\n\n// Action type definitions\ntype SetAnswers = {\n type: typeof AnswersActions.SET_ANSWERS;\n payload: {\n answers: Answer[];\n };\n};\n\ntype ClearAll = {\n type: typeof AnswersActions.CLEAR_ALL;\n};\n\ntype AppendNewAnswer = {\n type: typeof AnswersActions.APPEND_NEW_ANSWER;\n payload: {\n id?: string;\n query: string;\n };\n};\n\ntype SetSearchResults = {\n type: typeof AnswersActions.SET_SEARCH_RESULTS;\n payload: {\n searchQueryId: string;\n results: SearchResult[];\n index?: number;\n };\n};\n\ntype AppendAnswerChunk = {\n type: typeof AnswersActions.APPEND_ANSWER_CHUNK;\n payload: {\n text: string;\n index?: number;\n };\n};\n\ntype SetAnswerError = {\n type: typeof AnswersActions.SET_ANSWER_ERROR;\n payload: {\n error: string;\n index?: number;\n };\n};\n\ntype SetUserFeedback = {\n type: typeof AnswersActions.SET_USER_FEEDBACK;\n payload: {\n feedback: FeedbackResponse;\n index?: number;\n };\n};\n\ntype ClearUserFeedback = {\n type: typeof AnswersActions.CLEAR_USER_FEEDBACK;\n payload: {\n index?: number;\n };\n};\n\ntype SetFollowUpQuestions = {\n type: typeof AnswersActions.SET_FOLLOW_UP_QUESTIONS;\n payload: {\n questions: string[];\n index?: number;\n };\n};\n\ntype AppendBlock = {\n type: typeof AnswersActions.APPEND_BLOCK;\n payload: {\n block: AnswerBlock;\n index?: number;\n };\n};\n\ntype CompleteAnswer = {\n type: typeof AnswersActions.COMPLETE_ANSWER;\n payload: {\n index?: number;\n };\n};\n\ntype MarkAsUncertain = {\n type: typeof AnswersActions.MARK_AS_UNCERTAIN;\n payload: {\n uncertaintyText: string;\n index?: number;\n };\n};\n\ntype GetActionInputs = {\n type: typeof AnswersActions.GET_ACTION_INPUTS;\n payload: {\n searchIntentId: string;\n actionId: string;\n inputs: ActionInput[];\n schema: JSONSchema<ActionInputs>;\n initialValues: ActionInputs;\n onSubmit: (parameters: ActionInputs) => void;\n index?: number;\n };\n};\n\ntype AddActionButtons = {\n type: typeof AnswersActions.ADD_ACTION_BUTTONS;\n payload: {\n searchIntentId: string;\n actions: Array<{\n id: string;\n type: string;\n action: {\n version: string;\n options: {\n title?: string;\n [key: string]: any;\n };\n };\n }>;\n index?: number;\n };\n};\n\ntype InvokeAction = {\n type: typeof AnswersActions.INVOKE_ACTION;\n payload: {\n index?: number;\n };\n};\n\ntype NoArticlesFound = {\n type: typeof AnswersActions.NO_ARTICLES_FOUND;\n payload: {\n index?: number;\n };\n};\n\nexport type AnswerListAction =\n | SetAnswers\n | ClearAll\n | AppendNewAnswer\n | SetSearchResults\n | AppendAnswerChunk\n | SetAnswerError\n | SetUserFeedback\n | ClearUserFeedback\n | SetFollowUpQuestions\n | AppendBlock\n | CompleteAnswer\n | MarkAsUncertain\n | InvokeAction\n | GetActionInputs\n | AddActionButtons\n | NoArticlesFound;\n\n// Action creators\nexport const setAnswers = ({ answers }: { answers: Answer[] }): SetAnswers => ({\n type: AnswersActions.SET_ANSWERS,\n payload: { answers },\n});\n\nexport const clearAll = (): ClearAll => ({\n type: AnswersActions.CLEAR_ALL,\n});\n\nexport const appendNewAnswer = ({ id, query }: { id?: string; query: string }): AppendNewAnswer => ({\n type: AnswersActions.APPEND_NEW_ANSWER,\n payload: { id, query },\n});\n\nexport const setSearchResults = ({\n searchQueryId,\n results,\n index,\n}: {\n searchQueryId: string;\n results: SearchResult[];\n index?: number;\n}): SetSearchResults => ({\n type: AnswersActions.SET_SEARCH_RESULTS,\n payload: {\n searchQueryId,\n results,\n index,\n },\n});\n\nexport const appendAnswerChunk = ({ text, index }: { text: string; index?: number }): AppendAnswerChunk => ({\n type: AnswersActions.APPEND_ANSWER_CHUNK,\n payload: {\n text,\n index,\n },\n});\n\nexport const setAnswerError = ({ error, index }: { error: string; index?: number }): SetAnswerError => ({\n type: AnswersActions.SET_ANSWER_ERROR,\n payload: {\n error,\n index,\n },\n});\n\nexport const setUserFeedback = ({ feedback, index }: { feedback: FeedbackResponse; index?: number }): SetUserFeedback => ({\n type: AnswersActions.SET_USER_FEEDBACK,\n payload: {\n feedback,\n index,\n },\n});\n\nexport const clearUserFeedback = ({ index }: { index?: number } = {}): ClearUserFeedback => ({\n type: AnswersActions.CLEAR_USER_FEEDBACK,\n payload: {\n index,\n },\n});\n\nexport const setFollowUpQuestions = ({ questions, index }: { questions: string[]; index?: number }): SetFollowUpQuestions => ({\n type: AnswersActions.SET_FOLLOW_UP_QUESTIONS,\n payload: {\n questions,\n index,\n },\n});\n\nexport const appendBlock = ({ block, index }: { block: AnswerBlock; index?: number }): AppendBlock => ({\n type: AnswersActions.APPEND_BLOCK,\n payload: {\n block,\n index,\n },\n});\n\nexport const completeAnswer = ({ index }: { index?: number } = {}): CompleteAnswer => ({\n type: AnswersActions.COMPLETE_ANSWER,\n payload: {\n index,\n },\n});\n\nexport const markAsUncertain = ({ uncertaintyText, index }: { uncertaintyText: string; index?: number }): MarkAsUncertain => ({\n type: AnswersActions.MARK_AS_UNCERTAIN,\n payload: {\n uncertaintyText,\n index,\n },\n});\n\nexport const invokeAction = ({ index }: { index?: number } = {}): InvokeAction => ({\n type: AnswersActions.INVOKE_ACTION,\n payload: {\n index,\n },\n});\n\nexport const noArticlesFound = ({ index }: { index?: number } = {}): NoArticlesFound => ({\n type: AnswersActions.NO_ARTICLES_FOUND,\n payload: {\n index,\n },\n});\n\nexport const getActionInputs = ({\n searchIntentId,\n actionId,\n inputs,\n schema,\n initialValues,\n onSubmit,\n index,\n}: {\n searchIntentId: string;\n actionId: string;\n inputs: ActionInput[];\n schema: JSONSchema<ActionInputs>;\n initialValues: ActionInputs;\n onSubmit: (parameters: ActionInputs) => void;\n index?: number;\n}): GetActionInputs => ({\n type: AnswersActions.GET_ACTION_INPUTS,\n payload: {\n searchIntentId,\n actionId,\n inputs,\n schema,\n initialValues,\n onSubmit,\n index,\n },\n});\n\nexport const addActionButtons = ({\n searchIntentId,\n actions,\n index,\n}: {\n searchIntentId: string;\n actions: Array<{\n id: string;\n type: string;\n action: {\n version: string;\n options: {\n title?: string;\n [key: string]: any;\n };\n };\n }>;\n index?: number;\n}): AddActionButtons => ({\n type: AnswersActions.ADD_ACTION_BUTTONS,\n payload: {\n searchIntentId,\n actions,\n index,\n },\n});\n\nconst getTargetAnswer = (draft: WritableDraft<Answer>[], index?: number) => {\n return draft.at(index ?? -1);\n};\n\nconst getLastTextBlock = (answer: Answer) => {\n return answer.blocks.at(-1);\n};\n\nconst initialState: Answer[] = [];\n\nconst reducer: ImmerReducer<Answer[], AnswerListAction> = (draft, action) => {\n switch (action.type) {\n // Answer List Management\n case AnswersActions.SET_ANSWERS: {\n draft.length = 0;\n // @ts-expect-error\n draft.push(...action.payload.answers);\n\n return;\n }\n\n case AnswersActions.CLEAR_ALL: {\n draft.length = 0;\n\n return;\n }\n\n // Answer Generation Flow\n case AnswersActions.APPEND_NEW_ANSWER: {\n draft.push({\n id: 'pending-' + createId(),\n state: 'fetching-search-results',\n question: action.payload.query,\n blocks: [markdownTextBlock()],\n isUncertain: false,\n });\n\n return;\n }\n\n case AnswersActions.SET_SEARCH_RESULTS: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.searchQueryId = action.payload.searchQueryId;\n answer.searchResults = action.payload.results;\n answer.state = 'fetching-stream';\n }\n\n return;\n }\n\n case AnswersActions.APPEND_ANSWER_CHUNK: {\n const answer = getTargetAnswer(draft, action.payload.index);\n const block = answer && getLastTextBlock(answer);\n\n if (answer && !answer.isUncertain && block && isMarkdownTextBlock(block)) {\n answer.state = 'streaming';\n block.text += action.payload.text;\n }\n\n return;\n }\n\n case AnswersActions.SET_ANSWER_ERROR: {\n const answer = getTargetAnswer(draft, action.payload.index ?? -1);\n const block = answer && getLastTextBlock(answer);\n if (block && isMarkdownTextBlock(block)) {\n block.text += action.payload.error;\n }\n\n return;\n }\n\n case AnswersActions.APPEND_BLOCK: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n // @ts-expect-error\n answer.blocks.push(action.payload.block);\n }\n\n return;\n }\n\n case AnswersActions.COMPLETE_ANSWER: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n if (answer.state === 'streaming') {\n answer.state = 'completed';\n }\n }\n\n return;\n }\n\n case AnswersActions.MARK_AS_UNCERTAIN: {\n const answer = getTargetAnswer(draft, action.payload.index);\n const block = answer && getLastTextBlock(answer);\n if (answer && block && isMarkdownTextBlock(block)) {\n answer.isUncertain = true;\n block.text = action.payload.uncertaintyText;\n }\n\n return;\n }\n\n case AnswersActions.SET_USER_FEEDBACK: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.feedback = action.payload.feedback;\n }\n\n return;\n }\n\n case AnswersActions.CLEAR_USER_FEEDBACK: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n delete answer.feedback;\n }\n\n return;\n }\n\n case AnswersActions.GET_ACTION_INPUTS: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.state = 'getting-action-inputs';\n answer.searchIntentId = action.payload.searchIntentId;\n answer.blocks.push(\n // @ts-expect-error\n actionInputFormBlock({\n actionId: action.payload.actionId,\n schema: action.payload.schema,\n initialValues: action.payload.initialValues,\n onSubmit: action.payload.onSubmit,\n inputs: action.payload.inputs,\n }),\n );\n }\n\n return;\n }\n\n case AnswersActions.ADD_ACTION_BUTTONS: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.searchIntentId = action.payload.searchIntentId;\n // Cast the actions array to ActionType to match the expected type\n answer.actions = action.payload.actions.map((action) => ({\n ...action,\n type: action.type as ActionType,\n }));\n answer.blocks.push(actionButtonsBlock());\n }\n\n return;\n }\n\n case AnswersActions.INVOKE_ACTION: {\n const answer = getTargetAnswer(draft, action.payload.index);\n const blockIndex = answer?.blocks.findIndex(isActionInputFormBlock);\n\n if (answer && blockIndex) {\n // replace the action input form block with a markdown text block\n answer.state = 'fetching-stream';\n answer.blocks.splice(blockIndex, 1, markdownTextBlock());\n }\n\n return;\n }\n\n case AnswersActions.SET_FOLLOW_UP_QUESTIONS: {\n const answer = getTargetAnswer(draft, action.payload.index);\n if (answer) {\n answer.followUpQuestions = action.payload.questions;\n }\n\n return;\n }\n\n case AnswersActions.NO_ARTICLES_FOUND: {\n const answer = getTargetAnswer(draft, action.payload.index);\n const block = answer && getLastTextBlock(answer);\n if (block && isMarkdownTextBlock(block)) {\n block.text += 'No articles found.';\n }\n // Mark the answer as completed when no articles are found\n if (answer) {\n answer.state = 'completed';\n }\n\n return;\n }\n\n default: {\n throw new Error(`Answer List Reducer: unknown action type '${(action as AnswerListAction).type}'`);\n }\n }\n};\n\nexport const useAnswerList = () => {\n return useImmerReducer(reducer, initialState);\n};\n","import { useCallback, useState } from 'react';\nimport { useSearchParam } from 'react-use';\n\nconst CONVERSATION_PARAM = 'conversation';\n\nexport const useConversationId = (searchPath?: string) => {\n const conversationId = useSearchParam(CONVERSATION_PARAM);\n\n // Unfortunately, the search param is not updated when the url is changed in Next.js\n // As a workaround, we use a local state to store the conversation id\n // and update the url when the local state changes\n // https://github.com/vercel/next.js/discussions/18072\n // https://github.com/vercel/next.js/discussions/70779\n const [_conversationId, _setConversationId] = useState(conversationId ?? undefined);\n\n const setConversationId = useCallback(\n (id: string) => {\n const url = new URL(window.location.href);\n if (searchPath) {\n url.pathname = searchPath;\n }\n if (id) {\n url.searchParams.set(CONVERSATION_PARAM, id);\n } else {\n url.searchParams.delete(CONVERSATION_PARAM);\n }\n const newUrl = url.toString();\n window.history.replaceState({ ...window.history.state, newUrl, url: newUrl }, '', newUrl);\n _setConversationId(id);\n },\n [searchPath],\n );\n\n const clearConversationId = useCallback(() => {\n const url = new URL(window.location.href);\n url.searchParams.delete(CONVERSATION_PARAM);\n const newUrl = url.toString();\n window.history.replaceState({ ...window.history.state, newUrl, url: newUrl }, '', newUrl);\n _setConversationId(undefined);\n }, []);\n\n return { conversationId: _conversationId, setConversationId, clearConversationId };\n};\n","import React, { createContext, useContext, useState, useMemo, type ReactNode } from 'react';\n\nimport type { Answer } from './types';\nimport { useAnswerList, AnswerListAction } from './hooks/useAnswerList';\nimport { useConversationId } from './hooks/useConversationId';\n\ninterface ChatSearchContextProps {\n query: string;\n setQuery: React.Dispatch<React.SetStateAction<string>>;\n queryId: string;\n setQueryId: React.Dispatch<React.SetStateAction<string>>;\n followUpQuery: string;\n setFollowUpQuery: React.Dispatch<React.SetStateAction<string>>;\n isSearching: boolean;\n setIsSearching: React.Dispatch<React.SetStateAction<boolean>>;\n showResults: boolean;\n setShowResults: React.Dispatch<React.SetStateAction<boolean>>;\n answers: Answer[];\n answerListDispatch: React.Dispatch<AnswerListAction>;\n activeAnswerIndex: number;\n setActiveAnswerIndex: React.Dispatch<React.SetStateAction<number>>;\n conversationId: string | undefined;\n setConversationId: (id: string) => void;\n clearConversationId: () => void;\n isLoadingConversation: boolean;\n setIsLoadingConversation: React.Dispatch<React.SetStateAction<boolean>>;\n loadError: string;\n setLoadError: React.Dispatch<React.SetStateAction<string>>;\n showMobileCloseWidgetButton: boolean;\n setShowMobileCloseWidgetButton: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst ChatSearchContext = createContext<ChatSearchContextProps | undefined>(undefined);\n\nexport const ChatSearchProvider: React.FC<{ children: ReactNode; searchPath?: string }> = ({\n children,\n searchPath,\n}) => {\n const [query, setQuery] = useState('');\n const [queryId, setQueryId] = useState('');\n const [followUpQuery, setFollowUpQuery] = useState('');\n const [isSearching, setIsSearching] = useState(false);\n const [showResults, setShowResults] = useState(false);\n const [answers, answerListDispatch] = useAnswerList();\n const [activeAnswerIndex, setActiveAnswerIndex] = useState(0);\n const [isLoadingConversation, setIsLoadingConversation] = useState(false);\n const [loadError, setLoadError] = useState<string>('');\n const [showMobileCloseWidgetButton, setShowMobileCloseWidgetButton] = useState(false);\n\n const { conversationId, setConversationId, clearConversationId } = useConversationId(searchPath);\n\n // Memoize the context value to prevent unnecessary re-renders of components that consume the context\n const contextValue = useMemo(\n () => ({\n query,\n setQuery,\n queryId,\n setQueryId,\n followUpQuery,\n setFollowUpQuery,\n isSearching,\n setIsSearching,\n showResults,\n setShowResults,\n answers,\n answerListDispatch,\n activeAnswerIndex,\n setActiveAnswerIndex,\n conversationId,\n setConversationId,\n clearConversationId,\n isLoadingConversation,\n setIsLoadingConversation,\n loadError,\n setLoadError,\n showMobileCloseWidgetButton,\n setShowMobileCloseWidgetButton,\n }),\n [\n query,\n queryId,\n followUpQuery,\n isSearching,\n showResults,\n answers,\n answerListDispatch,\n activeAnswerIndex,\n conversationId,\n setConversationId,\n clearConversationId,\n isLoadingConversation,\n loadError,\n showMobileCloseWidgetButton,\n ],\n );\n\n return <ChatSearchContext.Provider value={contextValue}>{children}</ChatSearchContext.Provider>;\n};\n\nexport const useChatSearch = () => {\n const context = useContext(ChatSearchContext);\n if (!context) {\n throw new Error('useChatSearch must be used within a ChatSearchProvider');\n }\n\n return context;\n};\n","import { useChatSearch } from '../ChatSearchContext';\n\nexport const useIsChatSearchDirty = () => {\n const { showResults, answers } = useChatSearch();\n\n const isDirty = Boolean(showResults || answers.length > 0);\n\n return isDirty;\n};\n","import { RefObject } from 'react';\n\nexport const useScrollManager = (answerRefs: RefObject<(HTMLDivElement | null)[]>, containerRef: RefObject<HTMLDivElement | null>) => {\n const scrollToLastAnswer = () => {\n requestAnimationFrame(() => {\n const lastAnswer = answerRefs.current?.[answerRefs.current.length - 1];\n const container = containerRef.current;\n if (lastAnswer && container) {\n const rect = lastAnswer.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const targetScroll = container.scrollTop + (rect.top - containerRect.top) - 80;\n container.scrollTo({ top: targetScroll, behavior: 'smooth' });\n }\n });\n };\n\n const scrollToAnswer = (index: number) => {\n requestAnimationFrame(() => {\n const answer = answerRefs.current?.[index];\n const container = containerRef.current;\n if (answer && container) {\n const rect = answer.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const targetScroll = container.scrollTop + (rect.top - containerRect.top) - 80;\n container.scrollTo({ top: targetScroll, behavior: 'smooth' });\n }\n });\n };\n\n return { scrollToLastAnswer, scrollToAnswer };\n};\n","interface RetryOptions {\n maxRetries?: number;\n baseDelay?: number;\n shouldRetry?: (error: Error, attempt: number) => boolean | Promise<boolean>;\n}\n\ninterface FallbackConfig {\n emptyResponse?: string;\n errorResponse?: string;\n}\n\ninterface RequestConfig<T> extends Omit<RequestInit, 'body'> {\n retry?: RetryOptions;\n body?: T;\n isStream?: boolean;\n fallback?: FallbackConfig;\n}\n\ninterface APIError extends Error {\n status?: number;\n data?: unknown;\n}\n\nconst defaultRetryOptions: Required<RetryOptions> = {\n maxRetries: 3,\n baseDelay: 1000,\n shouldRetry: (error: Error) => {\n // By default, retry on network errors and 5xx server errors\n if (error instanceof TypeError) {\n return true; // Network errors\n }\n\n const apiError = error as APIError;\n\n return apiError.status ? apiError.status >= 500 : false;\n },\n};\n\nconst defaultFallbackConfig: Required<FallbackConfig> = {\n emptyResponse: \"I apologize, but I couldn't generate an answer at this time. Please try again.\",\n errorResponse: 'I encountered an error while processing your request. Please try again.',\n};\n\nlet globalRetryOptions: Required<RetryOptions> = { ...defaultRetryOptions };\nlet globalFallbackConfig: Required<FallbackConfig> = { ...defaultFallbackConfig };\n\nexport function configureRetry(options: RetryOptions): void {\n globalRetryOptions = {\n ...defaultRetryOptions,\n ...options,\n };\n}\n\nexport function configureFallback(config: FallbackConfig): void {\n globalFallbackConfig = {\n ...defaultFallbackConfig,\n ...config,\n };\n}\n\nasync function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function makeRequest<TResponse, TBody = unknown>(url: string | URL, config: RequestConfig<TBody> = {}): Promise<TResponse> {\n const { retry = {}, headers = {}, body, isStream = false, fallback = {}, ...fetchConfig } = config;\n const retryOptions = {\n ...globalRetryOptions,\n ...retry,\n };\n const fallbackOptions = {\n ...globalFallbackConfig,\n ...fallback,\n };\n\n let attempt = 1;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n try {\n const response = await fetch(url, {\n ...fetchConfig,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (response.ok) {\n // For streaming responses, return the response object directly\n if (isStream) {\n if (!response.ok) {\n throw new Error('Failed to fetch answer');\n }\n\n return response as unknown as TResponse;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const data = await response.json();\n // Check for empty response in JSON\n if (!data || (typeof data === 'object' && Object.keys(data).length === 0)) {\n const emptyError = new Error(fallbackOptions.emptyResponse);\n emptyError.name = 'EmptyResponseError';\n throw emptyError;\n }\n\n return data as TResponse;\n }\n\n const error = new Error(fallbackOptions.errorResponse) as APIError;\n error.status = response.status;\n error.data = await response.json().catch(() => undefined);\n throw error;\n } catch (error) {\n const shouldAttemptRetry = await Promise.resolve(retryOptions.shouldRetry(error as Error, attempt));\n\n if (attempt >= retryOptions.maxRetries || !shouldAttemptRetry) {\n if (error instanceof Error && error.name === 'EmptyResponseError') {\n return { message: error.message } as TResponse;\n }\n throw error;\n }\n\n console.warn(`Request failed, attempt ${attempt} of ${retryOptions.maxRetries}. Retrying...`);\n\n // Exponential backoff with jitter to prevent thundering herd\n const jitter = Math.random() * 0.3 + 0.85; // Random between 0.85-1.15\n await delay(retryOptions.baseDelay * Math.pow(2, attempt - 1) * jitter);\n attempt++;\n }\n }\n}\n","import { createId } from '@paralleldrive/cuid2';\n\nimport { makeRequest } from './fetchClient';\n\nimport {\n SearchResponse,\n FeedbackResponse,\n APIFeedbackResponse,\n SearchResult,\n ActionInputs,\n ClientExecutionResult,\n SearchQueryAttributes,\n} from '@/components/chat-search/types';\n\n// Retry configurations for different endpoints\nconst searchRetryConfig = {\n maxRetries: 3,\n baseDelay: 300, // Start with 300ms delay\n shouldRetry: (error: Error) => {\n if (error instanceof TypeError) {\n return true; // Network errors\n }\n const apiError = error as { status?: number };\n // Retry on server errors (5xx) and rate limits (429)\n\n return apiError.status ? apiError.status >= 500 || apiError.status === 429 : false;\n },\n};\n\nconst answerRetryConfig = {\n maxRetries: 3,\n baseDelay: 500, // Start with 500ms delay for streaming responses\n shouldRetry: (error: Error) => {\n if (error instanceof TypeError) {\n return true; // Network errors\n }\n const apiError = error as { status?: number };\n // Only retry on server errors, not on client errors\n\n return apiError.status ? apiError.status >= 500 : false;\n },\n};\n\ninterface APISearchResponse {\n data: Array<{\n id: string;\n title: string;\n url: string;\n }>;\n searchQuery: {\n id: string;\n };\n}\n\nexport async function searchApi({\n endpoint,\n query,\n collectionId,\n headers,\n conversationId,\n attributes,\n secretAttributes,\n allowedRegions,\n}: {\n endpoint: string;\n query: string;\n collectionId?: string;\n headers?: Record<string, string>;\n conversationId?: string;\n attributes?: SearchQueryAttributes;\n secretAttributes?: string;\n allowedRegions?: string[];\n}): Promise<SearchResponse> {\n const payload = await makeRequest<\n APISearchResponse,\n {\n query: string;\n limit: number;\n collectionId?: string;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n retry: searchRetryConfig,\n body: {\n query,\n limit: 5,\n ...(collectionId && collectionId !== 'all' && { collectionId }),\n ...(conversationId && { conversationId }),\n ...(attributes && { attributes }),\n ...(secretAttributes && { secretAttributes }),\n ...(allowedRegions && { allowedRegions }),\n },\n });\n\n return {\n results: payload?.data,\n searchQueryId: payload?.searchQuery?.id,\n };\n}\n\nexport async function fetchAnswer({\n endpoint,\n searchQueryId,\n headers,\n conversationId,\n}: {\n endpoint: string;\n searchQueryId: string;\n headers?: Record<string, string>;\n conversationId?: string;\n}): Promise<Response> {\n return makeRequest<\n Response,\n {\n searchQueryId: string;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n retry: answerRetryConfig,\n isStream: true,\n fallback: {\n emptyResponse: \"I apologize, but I couldn't generate an answer for your query. Please try rephrasing your question.\",\n errorResponse: 'I encountered an issue while generating the answer. Please try again in a moment.',\n },\n body: {\n searchQueryId,\n ...(conversationId && { conversationId }),\n },\n });\n}\n\nexport async function fetchAnswerStream({\n endpoint,\n headers,\n body,\n}: {\n endpoint: string;\n headers?: Record<string, string>;\n body:\n | {\n type: 'generate-for-query';\n conversationId?: string;\n searchQueryId: string;\n }\n | {\n type: 'invoke-action';\n conversationId?: string;\n searchQueryId: string;\n searchIntentId: string;\n actionId: string;\n parameters: ActionInputs;\n }\n | {\n type: 'client-execution-result';\n conversationId?: string;\n searchQueryId: string;\n searchIntentId: string;\n actionId: string;\n results: ClientExecutionResult;\n };\n}): Promise<Response> {\n return makeRequest<Response, typeof body>(endpoint, {\n method: 'POST',\n headers,\n retry: answerRetryConfig,\n isStream: true,\n fallback: {\n emptyResponse: \"I apologize, but I couldn't generate an answer for your query. Please try rephrasing your question.\",\n errorResponse: 'I encountered an issue while generating the answer. Please try again in a moment.',\n },\n body,\n });\n}\n\n// Helper function to generate conversation ID\nexport function createConversationId(): string {\n return createId();\n}\n\nexport async function sendFeedback({\n endpoint,\n searchQueryId,\n response,\n headers,\n conversationId,\n}: {\n endpoint: string;\n searchQueryId: string;\n response: FeedbackResponse;\n headers?: Record<string, string>;\n conversationId?: string;\n}): Promise<void> {\n await makeRequest<\n void,\n {\n searchQueryId: string;\n response: FeedbackResponse;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n body: {\n searchQueryId,\n response,\n ...(conversationId && { conversationId }),\n },\n });\n}\n\nexport async function sendFeedbackReason({\n endpoint,\n searchQueryId,\n reason,\n headers,\n}: {\n endpoint: string;\n searchQueryId: string;\n reason: string;\n headers?: Record<string, string>;\n conversationId?: string;\n}): Promise<void> {\n await makeRequest<\n void,\n {\n searchQueryId: string;\n reason: string;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n body: {\n searchQueryId,\n reason,\n },\n });\n}\n\nexport interface ConversationResponse {\n data: Array<{\n question: string;\n answer: string;\n searchQueryId: string;\n searchResults?: SearchResult[];\n searchIntentId?: string;\n feedback?: APIFeedbackResponse;\n }>;\n}\n\nexport async function loadConversation({\n endpoint,\n conversationId,\n headers,\n signal,\n}: {\n endpoint: string;\n conversationId: string;\n headers?: Record<string, string>;\n signal?: AbortSignal;\n}): Promise<{ data: ConversationResponse['data'] }> {\n const payload = await makeRequest<\n ConversationResponse,\n {\n conversationId: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n body: { conversationId },\n signal,\n });\n\n return { data: payload.data };\n}\n\ninterface FollowUpQuestionsResponse {\n questions: string[];\n}\n\nexport async function fetchFollowUpQuestions({\n endpoint,\n searchQueryId,\n headers,\n conversationId,\n}: {\n endpoint: string;\n searchQueryId: string;\n headers?: Record<string, string>;\n conversationId?: string;\n}): Promise<string[]> {\n const data = await makeRequest<\n FollowUpQuestionsResponse,\n {\n searchQueryId: string;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n body: {\n searchQueryId,\n ...(conversationId && { conversationId }),\n },\n });\n\n return data.questions;\n}\n\ninterface AutocompleteResponse {\n response: {\n results: Array<{\n id: string;\n question: string;\n }>;\n };\n}\n\nexport async function fetchAutocomplete({\n endpoint,\n query,\n collectionId,\n headers,\n conversationId,\n allowedRegions,\n}: {\n endpoint: string;\n query: string;\n collectionId?: string;\n headers?: Record<string, string>;\n conversationId?: string;\n allowedRegions?: string[];\n}): Promise<AutocompleteResponse> {\n const data = await makeRequest<\n AutocompleteResponse,\n {\n query: string;\n collectionId?: string;\n conversationId?: string;\n allowedRegions?: string[];\n }\n >(endpoint, {\n method: 'POST',\n headers,\n retry: searchRetryConfig,\n body: {\n query,\n ...(collectionId && collectionId !== 'all' && { collectionId }),\n ...(conversationId && { conversationId }),\n ...(allowedRegions && { allowedRegions }),\n },\n });\n\n return data;\n}\n","import { useCallback } from 'react';\nimport { useEffectOnce } from 'react-use';\n\nimport { useChatSearch } from '../ChatSearchContext';\nimport type { TextConfig } from '../text-config';\nimport { clearAll, setAnswers } from './useAnswerList';\nimport { markdownTextBlock } from '../blocks/utils';\nimport { Answer } from '../types';\n\nimport { isAnswerUncertain } from '@/lib/utils';\nimport { loadConversation } from '@/lib/api';\n\ninterface UseLoadConversationProps {\n loadConversationEndpoint: string | undefined;\n headers?: Record<string, string>;\n mergedTextConfig: TextConfig;\n}\n\n/**\n * Hook to load a conversation by ID.\n * @param loadConversationEndpoint - The endpoint to use to load the conversation.\n * @param headers - The headers to use when loading the conversation.\n * @param mergedTextConfig - The text configuration to use.\n * @returns The function to load a conversation by ID.\n */\nexport const useConversationLoader = ({ loadConversationEndpoint, headers, mergedTextConfig }: UseLoadConversationProps) => {\n const {\n setIsLoadingConversation,\n setShowResults,\n answerListDispatch,\n conversationId,\n setConversationId,\n clearConversationId,\n setLoadError,\n } = useChatSearch();\n\n const loadConversationById = useCallback(\n (conversationId: string) => {\n if (!loadConversationEndpoint) {\n return;\n }\n\n setIsLoadingConversation(true);\n setIsLoadingConversation(true);\n setShowResults(true);\n\n const controller = new AbortController();\n\n loadConversation({\n endpoint: loadConversationEndpoint,\n conversationId,\n headers,\n signal: controller.signal,\n })\n .then(({ data }) => {\n const answers = data.map((query): Answer => {\n return {\n id: query.searchQueryId,\n state: 'completed',\n question: query.question,\n isUncertain: isAnswerUncertain(query.answer).uncertain,\n searchQueryId: query.searchQueryId,\n searchIntentId: query.searchIntentId,\n blocks: query.answer.split('---').map((text) =>\n markdownTextBlock({\n text: text.trim(),\n }),\n ),\n };\n });\n answerListDispatch(setAnswers({ answers }));\n setShowResults(true);\n })\n .catch((error) => {\n console.error('Error loading conversation:', error);\n answerListDispatch(clearAll());\n clearConversationId();\n setShowResults(false);\n setLoadError(mergedTextConfig.errorText || 'An error occurred');\n })\n .finally(() => {\n setIsLoadingConversation(false);\n });\n\n return () => controller.abort('Conversation loader aborted');\n },\n [\n loadConversationEndpoint,\n setIsLoadingConversation,\n setShowResults,\n headers,\n answerListDispatch,\n setConversationId,\n setLoadError,\n mergedTextConfig.errorText,\n ],\n );\n\n useEffectOnce(() => {\n let cancel: (() => void) | undefined;\n if (conversationId) {\n console.log('loading conversation', conversationId);\n cancel = loadConversationById(conversationId);\n }\n\n return () => cancel?.();\n });\n\n return { loadConversationById };\n};\n","import { useRef, useEffect } from 'react';\n\nimport { useChatSearch } from '../ChatSearchContext';\nimport type { ChatSearchState } from '../types';\n\nexport const useSubscriptionManager = () => {\n const stateSubscribersRef = useRef<((state: ChatSearchState) => void)[]>([]);\n const { showResults, answers, isLoadingConversation, loadError } = useChatSearch();\n\n // Notify subscribers whenever the state changes\n useEffect(() => {\n const state: ChatSearchState = {\n showResults,\n answers,\n isLoading: isLoadingConversation,\n error: loadError,\n };\n\n stateSubscribersRef.current.forEach((callback) => callback(state));\n }, [showResults, answers, isLoadingConversation, loadError]);\n\n // Function to add a new subscriber\n const subscribeToStateChanges = (callback: (state: ChatSearchState) => void) => {\n stateSubscribersRef.current.push(callback);\n // Notify the new subscriber with the initial state\n callback({\n showResults,\n answers,\n isLoading: isLoadingConversation,\n error: loadError,\n });\n\n // Return an unsubscribe function\n return () => {\n stateSubscribersRef.current = stateSubscribersRef.current.filter((cb) => cb !== callback);\n };\n };\n\n return { subscribeToStateChanges };\n};\n","import React, { useState } from 'react';\nimport { Copy, CaretDown, Check, ArrowSquareOut } from '@phosphor-icons/react';\n\nimport { Button } from '../ui/button';\nimport type {\n SearchResult,\n FeedbackResponse,\n AnswerBlock as AnswerBlockType,\n AnswerState,\n RedirectRule,\n Action,\n NextBestAction,\n ActionClick,\n} from './types';\nimport { AnswerBlock } from './AnswerBlock';\nimport { isMarkdownTextBlock } from './blocks/utils';\nimport AnswerActions from './AnswerActions';\n\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';\nimport { Feedback } from '@/components/feedback';\nimport GeneratingStar from '@/components/generating-star';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\ninterface AnswerProps {\n index: number;\n blocks?: AnswerBlockType[];\n state?: AnswerState;\n question: string;\n searchResults?: SearchResult[];\n searchQueryId?: string;\n feedback?: FeedbackResponse;\n onFeedback?: (response: FeedbackResponse) => void;\n disableFeedback?: boolean;\n textConfig?: {\n positiveAnswerText?: string;\n negativeAnswerText?: string;\n loadingSearchText?: string;\n loadingAnswerText?: string;\n uncertaintyFallbackText?: Record<string, string>;\n };\n searchIntentId?: string;\n redirectRules?: RedirectRule[];\n actions?: Action[];\n handleActionClick?: (action: ActionClick) => void;\n nextBestActions?: NextBestAction[];\n isLastAnswer?: boolean;\n onFeedbackReasonSubmit?: (reason: string) => void;\n}\n\nexport function Answer({\n index,\n blocks = [],\n question,\n searchResults,\n state = 'completed',\n searchQueryId,\n feedback,\n onFeedback,\n disableFeedback = false,\n textConfig = {},\n redirectRules,\n actions,\n handleActionClick,\n nextBestActions,\n isLastAnswer,\n onFeedbackReasonSubmit,\n}: AnswerProps) {\n const [isCopied, setIsCopied] = useState(false);\n const [isExpanded, setIsExpanded] = useState(false);\n\n const answer = blocks\n .filter(isMarkdownTextBlock)\n .map((block) => block.text)\n .join('\\n\\n---\\n\\n');\n\n const isFetching = state === 'fetching-search-results' || state === 'fetching-stream';\n const isFetchingInitialAnswer = isFetching && blocks.length === 1;\n const isFetchingSearchResults = state === 'fetching-search-results';\n const isIdle = state === 'getting-action-inputs' || state === 'completed';\n const isCompleted = state === 'completed';\n\n const handleCopy = async () => {\n try {\n // Attempt to use the Clipboard API\n await navigator.clipboard.writeText(answer);\n } catch (err) {\n console.warn('Clipboard API failed, using fallback:', err);\n\n // Fallback for environments where clipboard API is not available\n const textArea = document.createElement('textarea');\n textArea.value = answer;\n textArea.style.position = 'fixed'; // Avoid scrolling to bottom\n textArea.style.opacity = '0'; // Make it invisible\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n } catch (fallbackErr) {\n console.error('Fallback: Oops, unable to copy', fallbackErr);\n }\n\n document.body.removeChild(textArea);\n }\n\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n };\n\n const handleFeedback = (response: FeedbackResponse) => {\n if (onFeedback && searchQueryId) {\n onFeedback(response);\n }\n };\n\n return (\n <div\n className=\"rounded-lg relative mx-auto overflow-hidden bg-card border border-primary mb-4\"\n data-name=\"SearchResults\"\n data-index={index}\n >\n <div className=\"px-4 pt-4 pb-2\">\n <div className=\"flex items-start justify-between gap-2 min-h-9\">\n <div className=\"flex gap-1\">\n <GeneratingStar loading={!isIdle} />\n <h2 className=\"leading-normal font-semibold m-0 text-foreground self-center text-lg\">{question}</h2>\n </div>\n {isCompleted && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" onClick={() => void handleCopy()} className=\"-mt-1 flex-shrink-0\">\n {isCopied ? (\n <Check className=\"text-feedback-positive\" weight=\"bold\" />\n ) : (\n <Copy className=\"text-secondary-foreground\" weight=\"bold\" />\n )}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>{isCopied ? 'Copied!' : 'Copy'}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n </div>\n\n {isFetchingInitialAnswer && (\n <div className=\"space-y-4 mt-2 px-4\">\n <div className=\"flex items-center gap-2\">\n <div className=\"size-5 rounded-full bg-primary/30\" />\n <div className=\"flex items-center gap-2 text-sm text-foreground\">\n {isFetchingSearchResults ? textConfig.loadingSearchText : textConfig.loadingAnswerText}\n </div>\n </div>\n </div>\n )}\n\n <div className=\"flex flex-col\">\n {blocks?.map((block, i) => (\n <div key={i} className=\"px-4 border-b last:border-b-0 border-dashed\">\n <AnswerBlock block={block} redirectRules={redirectRules} state={state} />\n </div>\n ))}\n </div>\n\n {/* Next Best Actions */}\n {isCompleted && (\n <AnswerActions\n actions={actions}\n nextBestActions={nextBestActions}\n isLastAnswer={isLastAnswer}\n handleActionClick={handleActionClick}\n searchQueryId={searchQueryId || ''}\n question={question}\n answer={answer}\n />\n )}\n\n {isCompleted && !disableFeedback && (\n <div className=\"p-4 pt-0\">\n <Feedback\n feedback={feedback}\n onFeedback={handleFeedback}\n textConfig={textConfig}\n disabled={disableFeedback}\n feedbackReasonLength={500}\n feedbackReasonPlaceholder=\"What could we have done better? Your feedback is valuable to us...\"\n onFeedbackReasonSubmit={onFeedbackReasonSubmit}\n feedbackReasonThankYouText=\"Thank you for your feedback!\"\n />\n </div>\n )}\n\n {searchResults && searchResults.length > 0 && (\n <div className=\"overflow-hidden bg-card border-dashed border-0 border-t-2\">\n <Collapsible open={isExpanded} onOpenChange={setIsExpanded} className=\"w-full\">\n <div>\n <CollapsibleTrigger asChild>\n <Button variant=\"secondary\" className=\"w-full justify-between h-11\" data-name=\"RelatedSources\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium truncate text-base\">Sources</span>\n </div>\n <CaretDown\n className={`size-4 flex-shrink-0 transition-transform duration-200 text-secondary-foreground ${\n isExpanded ? 'rotate-180' : ''\n }`}\n weight=\"bold\"\n />\n <span className=\"sr-only\">Toggle</span>\n </Button>\n </CollapsibleTrigger>\n </div>\n <CollapsibleContent className=\"divide-y divide-gray-200 dark:divide-border overflow-hidden CollapsibleContent\">\n {searchResults.map((result) => (\n <a\n key={result.id}\n href={result.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 p-3 transition-colors duration-200 hover:bg-accent bg-card text-foreground\"\n >\n <span className=\"flex-grow truncate\">{result.title}</span>\n <ArrowSquareOut className=\"size-4 flex-shrink-0 text-secondary-foreground\" weight=\"bold\" />\n </a>\n ))}\n </CollapsibleContent>\n </Collapsible>\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { CaretRight } from '@phosphor-icons/react';\n\nimport { Button } from '../ui/button';\n\nconst MotionButton = motion(Button);\n\ninterface FollowUpQuestionsProps {\n questions: string[];\n onQuestionClick: (question: string) => void;\n}\n\nexport function FollowUpQuestions({ questions, onQuestionClick }: FollowUpQuestionsProps) {\n if (!questions.length) return null;\n\n return (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -20 }}\n className=\"w-full\"\n >\n <div className=\"rounded-lg overflow-hidden bg-card border\">\n <h3 className=\"px-4 py-3 border-b border-b-dark-300 font-bold\">Follow-up questions</h3>\n\n {questions.map((question, index) => {\n if (index < 3) {\n return (\n <MotionButton\n key={index}\n initial={{ opacity: 0, x: -20 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ delay: index * 0.1 }}\n onClick={() => onQuestionClick(question)}\n variant=\"ghost\"\n className=\"w-full text-left\"\n >\n <span className=\"flex-grow\">{question}</span>\n <CaretRight className=\"\" weight=\"bold\" />\n </MotionButton>\n );\n }\n\n return null;\n })}\n </div>\n </motion.div>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { ArrowsVertical } from '@phosphor-icons/react';\nimport { motion, AnimatePresence } from 'framer-motion';\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { cn } from '@/lib/utils';\n\ninterface TimelineNavigationProps {\n questions: string[];\n activeIndex: number;\n onNavigate: (index: number) => void;\n offset: number;\n}\n\nexport function TimelineNavigation({ questions, activeIndex, onNavigate, offset }: TimelineNavigationProps) {\n const [prevActiveIndex, setPrevActiveIndex] = useState(activeIndex);\n\n useEffect(() => {\n setPrevActiveIndex(activeIndex);\n }, [activeIndex]);\n\n // Show 2 items before and after the active item\n const VISIBLE_ITEMS_EACH_SIDE = 2;\n const totalItems = questions.length;\n\n const getVisibleIndexes = () => {\n const indexes: (number | 'ellipsis')[] = [];\n let lastAddedIndex: number | null = null;\n\n const addIndex = (index: number) => {\n if (lastAddedIndex !== null && index - lastAddedIndex > 1) {\n indexes.push('ellipsis');\n }\n indexes.push(index);\n lastAddedIndex = index;\n };\n\n // Always show first item\n addIndex(0);\n\n // Show items around active index\n for (\n let i = Math.max(1, activeIndex - VISIBLE_ITEMS_EACH_SIDE);\n i <= Math.min(totalItems - 2, activeIndex + VISIBLE_ITEMS_EACH_SIDE);\n i++\n ) {\n addIndex(i);\n }\n\n // Always show last item if we have more than one item\n if (totalItems > 1) {\n addIndex(totalItems - 1);\n }\n\n return indexes;\n };\n\n const visibleIndexes = getVisibleIndexes();\n\n return (\n <nav\n aria-label=\"Question timeline navigation\"\n className=\"fixed left-4 top-1/2 -translate-y-1/2 z-40 flex flex-col gap-3\"\n style={{ ...(offset ? { left: `${offset}px` } : {}) } as React.CSSProperties}\n >\n <motion.div\n className=\"flex flex-col items-center space-y-3\"\n role=\"list\"\n initial={false}\n animate={{ y: 0 }}\n transition={{ type: 'spring', stiffness: 300, damping: 30 }}\n >\n <AnimatePresence>\n {visibleIndexes.map((indexOrEllipsis, arrayIndex) => {\n if (indexOrEllipsis === 'ellipsis') {\n return (\n <motion.div\n key={`ellipsis-${arrayIndex}`}\n className=\"h-8 flex items-center justify-center\"\n aria-hidden=\"true\"\n initial={{ opacity: 0, y: prevActiveIndex > activeIndex ? -20 : 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: prevActiveIndex > activeIndex ? 20 : -20 }}\n transition={{ duration: 0.2 }}\n >\n <ArrowsVertical className=\"size-4 text-foreground\" />\n </motion.div>\n );\n }\n\n const index = indexOrEllipsis;\n const question = questions[index];\n\n return (\n <motion.div\n key={index}\n className=\"relative group isolate\"\n role=\"listitem\"\n initial={{ opacity: 0, y: prevActiveIndex > activeIndex ? -20 : 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: prevActiveIndex > activeIndex ? 20 : -20 }}\n transition={{ duration: 0.2 }}\n layout\n >\n <TooltipProvider delayDuration={100}>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={() => onNavigate(index)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n onNavigate(index);\n }\n }}\n className={cn(\n 'flex items-center justify-center size-8 rounded-full transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 hover:opacity-90 cursor-pointer ring-primary ',\n index === activeIndex ? 'bg-primary text-primary-foreground' : 'bg-stone-300 text-zinc-800',\n )}\n aria-label={`Navigate to question ${index + 1}: ${question}`}\n aria-current={index === activeIndex ? 'step' : undefined}\n >\n {index + 1}\n </button>\n </TooltipTrigger>\n <TooltipContent\n side=\"right\"\n sideOffset={8}\n className=\"max-w-[300px] bg-card text-card-foreground border-foreground/35\"\n >\n <p className=\"break-words leading-relaxed\">{question}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </motion.div>\n );\n })}\n </AnimatePresence>\n </motion.div>\n </nav>\n );\n}\n","import { ArrowDown } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport { Button } from '@/components/ui/button';\n\ninterface ScrollToBottomArrowProps {\n onClick: () => void;\n}\n\nexport function ScrollToBottomArrow({ onClick }: ScrollToBottomArrowProps) {\n return (\n <Button\n size=\"icon\"\n variant=\"secondary\"\n className=\"fixed bottom-20 right-4 rounded-full transition-opacity duration-300 border-border shadow-md\"\n onClick={onClick}\n >\n <ArrowDown className=\"size-5\" />\n </Button>\n );\n}\n","import React, { useRef, useEffect, useState } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport {\n MagnifyingGlass,\n Image,\n X,\n ArrowRight,\n CaretRight,\n CaretDown,\n CheckCircle,\n Circle,\n} from '@phosphor-icons/react';\n\nimport { Button } from '../ui/button';\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '../ui/dropdown-menu';\nimport { Suggestion } from './types';\n\nimport { cn } from '@/lib/utils';\n\nexport const PrimarySearch = React.forwardRef<\n HTMLTextAreaElement,\n {\n query: string;\n onQueryChange: (query: string) => void;\n onSearch: () => void;\n textConfig: {\n searchPlaceholder?: string;\n attachImageText?: string;\n allDocumentsText?: string;\n };\n collections?: { id: string; name: string }[];\n currentCollectionId?: string;\n onCollectionChange?: (collectionId: string) => void;\n disableImageAttachment?: boolean;\n attachedImages?: { file: File; preview: string }[];\n onImageUpload?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onRemoveImage?: (index: number) => void;\n isSearching?: boolean;\n autocompleteSuggestions?: Suggestion[];\n onAutocompleteSuggestionSelect?: (suggestion: Suggestion) => void;\n }\n>(\n (\n {\n query,\n onQueryChange,\n onSearch,\n textConfig,\n collections = [],\n currentCollectionId,\n onCollectionChange,\n disableImageAttachment = false,\n attachedImages = [],\n onImageUpload,\n onRemoveImage,\n isSearching = false,\n autocompleteSuggestions = [],\n onAutocompleteSuggestionSelect,\n },\n ref,\n ) => {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [showSuggestions, setShowSuggestions] = useState(false);\n\n const adjustTextareaHeight = (textarea: HTMLTextAreaElement) => {\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n };\n\n const handleKeyPress = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n onSearch();\n }\n };\n\n // Close suggestions when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (!(event.target as Element).closest('.suggestions-dropdown')) {\n setShowSuggestions(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n // Show suggestions only when we have a query\n useEffect(() => {\n if (query.trim()) {\n setShowSuggestions(true);\n }\n }, [query]);\n\n const shouldShowSuggestions = showSuggestions && query.trim() && autocompleteSuggestions.length > 0;\n\n // Animation variants for consistent animations\n const dropdownVariants = {\n hidden: {\n opacity: 0,\n scale: 0.95,\n transformOrigin: 'top',\n },\n visible: {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n stiffness: 500,\n damping: 30,\n mass: 0.5,\n },\n },\n exit: {\n opacity: 0,\n scale: 0.95,\n transition: {\n duration: 0.15,\n ease: 'easeOut',\n },\n },\n };\n\n const itemVariants = {\n hidden: {\n opacity: 0,\n x: -4,\n },\n visible: {\n opacity: 1,\n x: 0,\n transition: {\n duration: 0.2,\n },\n },\n };\n\n const listVariants = {\n visible: {\n transition: {\n staggerChildren: 0.03,\n delayChildren: 0.05,\n },\n },\n };\n\n return (\n <div className=\"relative w-full\" data-name=\"PrimarySearch\">\n <div\n className={cn(\n 'w-full overflow-hidden bg-background border border-border transition-all',\n shouldShowSuggestions ? 'rounded-t-md' : 'rounded-md',\n )}\n >\n <div className=\"p-3 flex items-center bg-card\">\n <MagnifyingGlass className=\"h-5 w-5 mr-2 text-muted-foreground\" aria-hidden role=\"presentation\" />\n <textarea\n ref={ref}\n value={query}\n onChange={(e) => {\n onQueryChange(e.target.value);\n adjustTextareaHeight(e.target);\n }}\n onKeyDown={handleKeyPress}\n onFocus={() => setShowSuggestions(true)}\n placeholder={textConfig.searchPlaceholder}\n className=\"\n w-full\n resize-none\n !outline-none\n text-base\n py-1\n min-h-9\n overflow-hidden\n border-none\n bg-transparent\n shadow-none\n placeholder:text-gray-400\n text-dark-900\n dark:text-neutral-200\n !ring-0\n \"\n rows={1}\n />\n {isSearching && (\n <div className=\"flex items-center justify-center ml-2\">\n <div className=\"animate-spin rounded-full size-4 border-2 border-t-transparent border-primary\" />\n </div>\n )}\n </div>\n\n {!disableImageAttachment && attachedImages.length > 0 && (\n <div className=\"flex gap-2 mt-3 overflow-x-auto pb-1 px-3\">\n {attachedImages.map((image, index) => (\n <div key={index} className=\"relative group rounded-lg overflow-hidden flex-shrink-0 size-20\">\n <img src={image.preview} alt={`Attached ${index + 1}`} className=\"w-full h-full object-cover\" />\n <button\n onClick={() => onRemoveImage?.(index)}\n className=\"\n absolute\n top-1\n right-1\n rounded-full\n p-1\n opacity-0\n group-hover:opacity-100\n transition-opacity\n duration-200\n hover:bg-black/70\n bg-black/50\n \"\n >\n <X className=\"size-3 text-white\" aria-label=\"Remove image\" />\n </button>\n </div>\n ))}\n </div>\n )}\n\n {!shouldShowSuggestions && (\n <div className=\"flex items-center justify-between px-3 py-2 border-t border-border\">\n <div className=\"flex gap-1\">\n {collections.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"\n transition-all\n duration-200\n rounded-md\n h-8\n flex\n items-center\n gap-1\n hover:bg-opacity-80\n text-foreground\n \"\n >\n {collections.find((c) => c.id === currentCollectionId)?.name ||\n textConfig.allDocumentsText ||\n 'All documents'}\n <CaretDown className=\"size-4 text-secondary-foreground\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"max-w-48\">\n {collections.map((collection) => (\n <DropdownMenuItem key={collection.id} onClick={() => onCollectionChange?.(collection.id)}>\n {collection.id === currentCollectionId ? (\n <CheckCircle className=\"rounded-full text-primary-500 !size-5\" weight=\"fill\" />\n ) : (\n <Circle className=\"rounded-full !size-5 text-gray-300\" />\n )}\n <span className=\"text-sm truncate\">{collection.name}</span>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {!disableImageAttachment && (\n <>\n <input\n type=\"file\"\n ref={fileInputRef}\n accept=\"image/*\"\n multiple\n className=\"hidden\"\n onChange={onImageUpload}\n />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"rounded-md h-8 hover:bg-opacity-80 dark:text-neutral-200\"\n onClick={() => fileInputRef.current?.click()}\n aria-label={textConfig.attachImageText}\n >\n <Image className=\"size-4 text-secondary-foreground\" />\n <span className=\"hidden @sm:block\">{textConfig.attachImageText}</span>\n </Button>\n </>\n )}\n </div>\n\n <div className=\"flex items-center\">\n <Button\n size=\"sm\"\n disabled={!query || isSearching}\n aria-disabled={!query || isSearching}\n className=\"rounded-md size-8 disabled:opacity-50 bg-primary\"\n onClick={onSearch}\n >\n {isSearching ? (\n <div className=\"flex items-center\" role=\"status\" aria-live=\"polite\">\n <div\n className=\"animate-spin rounded-full size-4 border-2 border-t-transparent border-white\"\n aria-hidden=\"true\"\n />\n <span className=\"sr-only\">Loading</span>\n </div>\n ) : (\n <ArrowRight\n className=\"text-primary-foreground\"\n size={16}\n weight=\"bold\"\n aria-label=\"Submit question\"\n />\n )}\n </Button>\n </div>\n </div>\n )}\n </div>\n\n <AnimatePresence mode=\"wait\">\n {shouldShowSuggestions && (\n <motion.div\n variants={dropdownVariants}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n className=\"\n suggestions-dropdown\n absolute\n left-0\n right-0\n z-50\n overflow-hidden\n bg-card\n border-border\n border-b border-l border-r border-solid rounded-b-md shadow-md -mt-px\n \"\n >\n {/* Current query suggestion - only on mobile */}\n <motion.div className=\"md:hidden\" variants={itemVariants}>\n {query.trim() && (\n <div\n role=\"option\"\n aria-selected={false}\n tabIndex={0}\n className=\"\n px-4 py-3\n cursor-pointer\n flex\n items-center\n gap-3\n transition-colors\n duration-200\n hover:bg-gray-50/50\n text-foreground\n bg-gray-100\n border-b border border-border\n dark:bg-slate-500\n dark:border-dark-800/20\n \"\n onClick={() => {\n onSearch();\n setShowSuggestions(false);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSearch();\n setShowSuggestions(false);\n }\n }}\n >\n <MagnifyingGlass className=\"size-4 flex-shrink-0 text-secondary-foreground\" />\n <span className=\"text-[15px]\">{query}</span>\n <div className=\"ml-auto flex items-center\">\n <CaretRight className=\"size-4 text-secondary-foreground\" />\n </div>\n </div>\n )}\n </motion.div>\n\n <motion.div variants={listVariants} initial=\"hidden\" animate=\"visible\">\n {autocompleteSuggestions.map((suggestion) => (\n <motion.div\n key={suggestion.id}\n variants={itemVariants}\n role=\"option\"\n aria-selected={false}\n tabIndex={0}\n className=\"px-4 py-3 cursor-pointer flex items-center gap-3 transition-colors duration-200 hover:bg-gray-200/50 text-foreground\"\n onClick={() => {\n onAutocompleteSuggestionSelect?.(suggestion);\n setShowSuggestions(false);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onAutocompleteSuggestionSelect?.(suggestion);\n setShowSuggestions(false);\n }\n }}\n >\n <MagnifyingGlass className=\"size-4 flex-shrink-0 text-secondary-foreground\" />\n <span className=\"text-[15px]\">{suggestion.question}</span>\n <div className=\"ml-auto flex items-center\">\n <CaretRight className=\"size-4 text-secondary-foreground\" />\n </div>\n </motion.div>\n ))}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n },\n);\n\nPrimarySearch.displayName = 'PrimarySearch';\n\nexport default PrimarySearch;\n","import React, { useRef, useState, useEffect } from 'react';\nimport { MagnifyingGlass, ArrowRight } from '@phosphor-icons/react';\nimport { motion } from 'framer-motion';\n\nimport styles from './FollowUpSearchBar.module.css';\nimport { Button } from '../ui/button';\nimport { Textarea } from '../ui/textarea';\nimport type { TextConfig } from './types';\n\nimport { cn } from '@/lib/utils';\n\ninterface FollowUpSearchBarProps {\n initialQuery?: string; // Initial query value (optional)\n onQueryChange: (query: string) => void; // Called on blur or enter key\n isSearching: boolean;\n handleFollowUpSearch: (query: string) => void;\n textConfig: TextConfig;\n}\n\nexport const FollowUpSearchBar = React.forwardRef<HTMLTextAreaElement, FollowUpSearchBarProps>(\n ({ initialQuery = '', onQueryChange, isSearching, handleFollowUpSearch, textConfig }, ref) => {\n // Use internal state instead of prop\n const [localQuery, setLocalQuery] = useState(initialQuery);\n\n const followUpInputRef = useRef<HTMLTextAreaElement | null>(null);\n const setCombinedRef = (instance: HTMLTextAreaElement | null) => {\n followUpInputRef.current = instance;\n if (typeof ref === 'function') {\n ref(instance);\n } else if (ref && 'current' in ref) {\n (ref as React.MutableRefObject<HTMLTextAreaElement | null>).current = instance;\n }\n };\n\n // Automatically adjust height based on content\n useEffect(() => {\n if (followUpInputRef.current) {\n followUpInputRef.current.style.height = 'inherit';\n followUpInputRef.current.style.height = `${followUpInputRef.current.scrollHeight}px`;\n }\n }, [localQuery]);\n\n // Reset local state when initialQuery changes (e.g., after search is performed)\n useEffect(() => {\n setLocalQuery(initialQuery);\n }, [initialQuery]);\n\n const handleKeyPress = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey && !isSearching) {\n e.preventDefault();\n const currentQuery = localQuery;\n onQueryChange(currentQuery); // Emit the query change to parent\n handleFollowUpSearch(currentQuery);\n // Clear the local state immediately\n setLocalQuery('');\n }\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setLocalQuery(e.target.value);\n };\n\n const handleBlur = () => {\n if (localQuery !== initialQuery) {\n onQueryChange(localQuery); // Emit the query change to parent on blur\n }\n };\n\n const handleSearchClick = () => {\n const currentQuery = localQuery;\n onQueryChange(currentQuery); // Emit the query change to parent\n handleFollowUpSearch(currentQuery);\n // Clear the local state immediately\n setLocalQuery('');\n };\n\n return (\n <motion.footer\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5 }}\n className={styles.followUpSearchBar}\n >\n <div className=\"container flex items-center justify-center p-3\">\n <div className=\"relative flex w-full items-center gap-2 rounded bg-card px-2 border border-dark-400\">\n <div className=\"size-6 flex flex-shrink-0 justify-center items-center\">\n <MagnifyingGlass className=\"size-5 text-secondary-foreground\" />\n </div>\n <Textarea\n ref={setCombinedRef}\n value={localQuery}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyPress}\n placeholder={textConfig.followUpPlaceholder}\n className=\"min-h-[44px] w-full resize-none border-0 shadow-none bg-transparent px-0 py-2.5 focus:outline-none focus:ring-0 focus-visible:ring-0\"\n rows={1}\n />\n <Button\n type=\"button\"\n size=\"icon\"\n disabled={isSearching || !localQuery.trim()}\n onClick={handleSearchClick}\n className={cn(\n 'size-8 shrink-0 rounded',\n localQuery ? 'bg-primary text-primary-foreground' : 'bg-dark-400 dark:bg-muted text-white',\n )}\n >\n {isSearching ? (\n <div className=\"animate-spin rounded-full size-4 sm:size-5 border-2 border-dark/40 !border-t-foreground dark:border-dark-500 \" />\n ) : (\n <ArrowRight className=\"size-6\" />\n )}\n </Button>\n </div>\n </div>\n </motion.footer>\n );\n },\n);\n\nFollowUpSearchBar.displayName = 'FollowUpSearchBar';\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { ArrowsOutSimple, ArrowsInSimple, ArrowLeft, X } from '@phosphor-icons/react';\n\nimport { Button } from '../ui/button';\nimport { useIsChatSearchDirty } from './hooks/useIsChatSearchDirty';\nimport { useChatSearch } from './ChatSearchContext';\n\nimport { cn } from '@/lib/utils';\n\ntype HeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n headerText: string;\n onToggleSizeButtonClick: () => void;\n onBackButtonClick: () => void;\n onCloseWidgetClick: () => void;\n};\n\nexport function Header({\n headerText,\n onToggleSizeButtonClick,\n onBackButtonClick,\n onCloseWidgetClick,\n className,\n ...props\n}: HeaderProps) {\n const isDirty = useIsChatSearchDirty();\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n const { isSearching, showMobileCloseWidgetButton: hideExpandButton } = useChatSearch();\n\n const handleToggleSizeButtonClick = () => {\n setIsExpanded((prev) => !prev);\n onToggleSizeButtonClick();\n };\n\n return (\n <div\n className={cn(\n 'w-full px-3 py-4 flex items-center justify-between',\n 'bg-primary h-14 leading-6',\n '@3xl:bg-transparent @3xl:h-auto @3xl:leading-normal',\n '@3xl:justify-center @3xl:space-y-4 @3xl:p-0',\n className,\n )}\n {...props}\n >\n <motion.h1\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, delay: 0.3 }}\n className=\"@3xl:text-5xl m-0 text-primary-foreground @3xl:text-foreground flex gap-1 items-center font-bold text-base\"\n >\n {isDirty && (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n onClick={onBackButtonClick}\n aria-label=\"Go back\"\n className=\"@3xl:hidden shrink-0\"\n disabled={isSearching}\n >\n <ArrowLeft />\n </Button>\n )}\n\n <span>{headerText}</span>\n </motion.h1>\n <div className=\"@3xl:hidden shrink-0\">\n {/* todo: conversation history button */}\n\n {!hideExpandButton && (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n onClick={handleToggleSizeButtonClick}\n aria-label={isExpanded ? 'Collapse widget' : 'Expand widget'}\n className=\"text-primary-foreground\"\n >\n {isExpanded ? <ArrowsInSimple /> : <ArrowsOutSimple />}\n </Button>\n )}\n <Button\n size=\"icon\"\n variant=\"ghost\"\n onClick={onCloseWidgetClick}\n aria-label=\"Close widget\"\n className=\"text-primary-foreground\"\n >\n <X />\n </Button>\n </div>\n </div>\n );\n}\n","import type { TextConfig as TextConfigType } from './types';\n\nexport type TextConfig = TextConfigType;\n\nexport const defaultTextConfig: TextConfig = {\n headerText: 'How can we help you today?',\n searchPlaceholder: 'Ask a question or type a search term here ...',\n attachImageText: 'Attach image',\n allDocumentsText: 'All documents',\n loadingSearchText: 'Searching for relevant content...',\n loadingAnswerText: 'Crafting a response...',\n errorText: 'Sorry, there was an error generating the answer.',\n followUpPlaceholder: 'Ask follow-up',\n positiveAnswerText: 'Helpful',\n negativeAnswerText: 'Not helpful',\n uncertaintyFallbackText: {\n 'en': \"Sorry, I can't find a clear answer to your question. Please try rephrasing or check the related sources below.\",\n 'es': 'Lo siento, no puedo encontrar una respuesta clara. Intente reformular la pregunta o consulte las fuentes relacionadas.',\n 'fr': 'Désolé, je ne trouve pas de réponse claire. Essayez de reformuler ou consultez les sources connexes.',\n 'de': 'Entschuldigung, ich finde keine klare Antwort. Versuchen Sie es anders zu formulieren oder sehen Sie sich die verwandten Quellen an.',\n 'it': 'Mi dispiace, non trovo una risposta chiara. Prova a riformulare o consulta le fonti correlate.',\n 'pt': 'Desculpe, não encontro uma resposta clara. Tente reformular ou consulte as fontes relacionadas.',\n 'nl': 'Sorry, ik kan geen duidelijk antwoord vinden. Probeer het anders te formuleren of bekijk de gerelateerde bronnen.',\n 'pl': 'Przepraszam, nie znajduję jasnej odpowiedzi. Spróbuj przeformułować pytanie lub sprawdź powiązane źródła.',\n 'ru': 'Извините, я не могу найти четкого ответа. Попробуйте переформулировать или ознакомьтесь со связанными источниками.',\n 'ja': '申し訳ありませんが、明確な回答が見つかりません。質問の言い換えや、関連ソースをご確認ください。',\n 'ko': '죄송합니다. 명확한 답변을 찾을 수 없습니다. 질문을 다시 작성하거나 관련 소스를 확인해 주세요.',\n 'zh': '抱歉,找不到明确的答案。请尝试重新表述或查看相关来源。',\n 'zh-TW': '抱歉,找不到明確的答案。請嘗試重新表述或查看相關來源。',\n },\n};\n","const clientExecutionEventType = 'CLIENT_EXECUTION';\nconst clientExecutionResultEventType = 'CLIENT_EXECUTION_RESULT';\n\ntype ClientActionExecutionResult =\n | {\n success: true;\n data: Record<string, any>;\n }\n | {\n reason: string;\n success: false;\n };\n\nexport const executeClientAction = (key: string, inputs: Record<string, any>) => {\n return new Promise<ClientActionExecutionResult>((resolve) => {\n // When the iFrame sends multiple messages to the parent window,\n // we use this to track which response belongs to which request.\n const messageId = crypto.randomUUID();\n\n const handleResponse = (\n event: MessageEvent<{\n type: string;\n messageId: string;\n result: ClientActionExecutionResult;\n }>,\n ) => {\n if (event.data.messageId === messageId && event.data.type === clientExecutionResultEventType) {\n window.removeEventListener('message', handleResponse);\n resolve(event.data.result);\n }\n };\n\n // Current window of execution\n window.addEventListener('message', handleResponse);\n\n // Send message to parent window\n window.parent.postMessage(\n {\n type: clientExecutionEventType,\n messageId,\n actionKey: key,\n inputs,\n },\n '*',\n );\n\n // Timeout after 5 seconds\n setTimeout(() => {\n window.removeEventListener('message', handleResponse);\n\n resolve({\n success: false,\n reason: `Client Action handler with key ${key} timed out`,\n });\n }, 5000);\n });\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\n\nexport const LoadingConversation = () => {\n return (\n <motion.div\n key=\"loading\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n className=\"w-full flex items-center justify-center py-20\"\n data-name=\"loading\"\n >\n <div className=\"flex flex-col items-center gap-4\">\n <div className=\"animate-spin rounded-full size-8 border-2 border-t-transparent border-primary\" />\n <p className=\"text-sm text-secondary-foreground\">Loading conversation...</p>\n </div>\n </motion.div>\n );\n};\n","import React, { createContext, useContext, ReactNode } from 'react';\n\nexport type FeatureFlags = { [key: string]: boolean | string | number };\n\nconst FeatureFlagContext = createContext<FeatureFlags | undefined>(undefined);\n\nexport function FeatureFlagProvider({ children, flags }: { children: ReactNode; flags: FeatureFlags | undefined }) {\n return <FeatureFlagContext.Provider value={flags ?? {}}>{children}</FeatureFlagContext.Provider>;\n}\n\nexport function useBooleanFlagValue(flagKey: string, defaultValue: boolean): boolean {\n const flags = useContext(FeatureFlagContext);\n\n if (!flags) {\n // eslint-disable-next-line no-console\n console.warn(`useBooleanFlagValue(\"${flagKey}\") used outside of FeatureFlagProvider. Returning default value.`);\n\n return defaultValue;\n }\n\n const value = flags[flagKey];\n\n if (value === undefined) {\n return defaultValue;\n }\n\n return Boolean(value);\n}\n","import { useState, useEffect, useCallback } from 'react';\n\nimport { fetchAutocomplete } from './api';\n\nimport type { Suggestion } from '@/components/chat-search/types';\n\nexport function useDebounce<T>(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n\nexport function useAutocomplete({\n query,\n endpoint,\n allowedRegions,\n collectionId,\n headers,\n conversationId,\n delay = 300,\n}: {\n query: string;\n endpoint: string;\n allowedRegions?: string[];\n collectionId?: string;\n headers?: Record<string, string>;\n conversationId?: string;\n delay?: number;\n}) {\n const [suggestions, setSuggestions] = useState<Suggestion[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string>();\n\n const debouncedQuery = useDebounce(query, delay);\n\n const fetchSuggestions = useCallback(async () => {\n if (!debouncedQuery.trim()) {\n setSuggestions([]);\n\n return;\n }\n\n setIsLoading(true);\n setError(undefined);\n\n try {\n const payload = await fetchAutocomplete({\n endpoint,\n query: debouncedQuery,\n collectionId,\n headers,\n conversationId,\n allowedRegions,\n });\n setSuggestions(payload?.response?.results);\n } catch (err) {\n console.error('Error fetching autocomplete suggestions:', err);\n setError(err instanceof Error ? err.message : 'Failed to fetch suggestions');\n setSuggestions([]);\n } finally {\n setIsLoading(false);\n }\n }, [debouncedQuery, endpoint, collectionId, headers, conversationId, allowedRegions]);\n\n useEffect(() => {\n void fetchSuggestions();\n }, [fetchSuggestions]);\n\n return { suggestions, isLoading, error };\n}\n","import React, { useState, useRef, useEffect, useImperativeHandle, forwardRef } from 'react';\nimport { AnimatePresence, motion } from 'framer-motion';\n\nimport { Suggestions } from './Suggestions';\nimport { Answer } from './Answer';\nimport { FollowUpQuestions } from './FollowUpQuestions';\nimport { NextBestActions } from './NextBestActions';\nimport { TimelineNavigation } from './TimelineNavigation';\nimport { ScrollToBottomArrow } from './ScrollToBottomArrow';\nimport { PrimarySearch } from './PrimarySearch';\nimport { FollowUpSearchBar } from './FollowUpSearchBar';\nimport { Header } from './Header';\nimport { defaultTextConfig } from './text-config';\nimport type {\n FeedbackResponse,\n ChatSearchState,\n Suggestion,\n ChatSearchProps,\n AnswerStreamEvent,\n ActionInputs,\n ActionClick,\n SearchQueryAttributes,\n ClientExecutionResult,\n} from './types';\nimport { useChatSearch, ChatSearchProvider } from './ChatSearchContext';\nimport { useConversationLoader, useScrollManager, useSubscriptionManager } from './hooks';\nimport { executeClientAction } from './helpers/excuteClientAction';\nimport {\n appendNewAnswer,\n setAnswerError,\n setUserFeedback,\n setFollowUpQuestions,\n appendAnswerChunk,\n clearAll,\n clearUserFeedback,\n completeAnswer,\n invokeAction,\n setSearchResults,\n markAsUncertain,\n getActionInputs,\n addActionButtons,\n noArticlesFound,\n} from './hooks/useAnswerList';\nimport { LoadingConversation } from './LoadingConversation';\n\nimport { FeatureFlagProvider } from '@/lib/feature-flags';\nimport { cn, isAnswerUncertain } from '@/lib/utils';\nimport { useAutocomplete } from '@/lib/hooks';\nimport {\n searchApi,\n sendFeedback,\n createConversationId,\n fetchFollowUpQuestions,\n fetchAnswerStream,\n sendFeedbackReason,\n} from '@/lib/api';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { MemoizedIcon } from '@/components/ui/icon';\n\nexport interface ChatSearchHandle {\n createNewThread: (firstQuery?: string) => void;\n showFollowUpThread: (show: boolean) => void;\n subscribeToStateChanges: (callback: (state: ChatSearchState) => void) => () => void;\n focusSearchField: () => void;\n showCloseButton: (showButton: boolean) => void;\n}\n\nconst ChatSearchComponent = forwardRef<ChatSearchHandle, ChatSearchProps>(\n (\n {\n suggestions: initialSuggestions = [],\n collections = [],\n selectedCollectionId,\n onCollectionChange,\n searchEndpoint,\n answerStreamEndpoint,\n feedbackEndpoint,\n feedbackReasonEndpoint,\n loadConversationEndpoint,\n autocompleteEndpoint,\n disableFollowUpQuestions = false,\n disableImageAttachment = false,\n disableFeedback = false,\n disclaimer,\n offset = 0,\n headers,\n textConfig = {},\n followUpQuestionsEndpoint,\n className,\n onToggleSizeButtonClick,\n trackEvent,\n onCloseWidget,\n isWidgetMode = true,\n nextBestActions,\n bodyActionButtons,\n onNextBestActionClick,\n userData,\n redirectRules,\n secretAttributes,\n allowedRegions,\n },\n ref,\n ) => {\n const {\n answers,\n answerListDispatch,\n query,\n setQuery,\n followUpQuery,\n setFollowUpQuery,\n isSearching,\n setIsSearching,\n showResults,\n setShowResults,\n activeAnswerIndex,\n setActiveAnswerIndex,\n conversationId: currentConversationId,\n setConversationId: setCurrentConversationId,\n clearConversationId: clearCurrentConversationId,\n isLoadingConversation,\n setShowMobileCloseWidgetButton,\n } = useChatSearch(); // Use the context\n\n const mergedTextConfig = { ...defaultTextConfig, ...textConfig };\n\n const [showScrollArrow, setShowScrollArrow] = useState(false);\n const [attachedImages, setAttachedImages] = useState<{ file: File; preview: string }[]>([]);\n const [currentCollectionId, setCurrentCollectionId] = useState<string | undefined>(selectedCollectionId);\n const [showFollowUp, setShowFollowUp] = useState(true);\n\n const primaryTextareaRef = useRef<HTMLTextAreaElement>(null);\n const answerRefs = useRef<(HTMLDivElement | null)[]>([]);\n const containerRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const primarySearchRef = useRef<HTMLTextAreaElement>(null);\n const followUpSearchRef = useRef<HTMLTextAreaElement>(null);\n\n // Use autocomplete hook if endpoint is provided\n const { suggestions: autocompleteSuggestions } = useAutocomplete({\n query,\n endpoint: autocompleteEndpoint || '',\n allowedRegions,\n collectionId: currentCollectionId,\n headers,\n conversationId: currentConversationId,\n delay: 300,\n });\n\n const { loadConversationById } = useConversationLoader({\n loadConversationEndpoint,\n headers,\n mergedTextConfig,\n });\n const { scrollToLastAnswer, scrollToAnswer } = useScrollManager(answerRefs, containerRef);\n const { subscribeToStateChanges } = useSubscriptionManager();\n\n const loadFollowUpQuestions = async (\n searchQueryId: string,\n conversationId?: string,\n ): Promise<string[] | undefined> => {\n // Fetch follow-up questions if needed\n if (!followUpQuestionsEndpoint || disableFollowUpQuestions) {\n return;\n }\n\n try {\n const questions = await fetchFollowUpQuestions({\n endpoint: followUpQuestionsEndpoint,\n searchQueryId,\n headers,\n conversationId,\n });\n\n return questions;\n } catch (error) {\n console.error('Error fetching follow-up questions:', error);\n\n return undefined;\n }\n };\n\n const processAnswerStream = async ({\n reader,\n searchQueryId,\n conversationId,\n onFirstEvent,\n }: {\n reader: ReadableStreamDefaultReader<Uint8Array>;\n searchQueryId: string;\n conversationId?: string;\n onFirstEvent?: () => void;\n }) => {\n let accumulatedAnswer = '';\n try {\n let done = false,\n isFirstEvent = true,\n searchIntentId: string | undefined,\n isUncertain = false,\n value;\n\n while ((({ done, value } = await reader.read()), !done)) {\n if (isFirstEvent) {\n isFirstEvent = false;\n onFirstEvent?.();\n }\n\n const lines = new TextDecoder()\n .decode(value)\n .split(/\\n\\n/)\n .filter((line) => line.startsWith('data: '))\n .map((line) => line.replace(/^data: /, '').trim());\n\n for (const line of lines) {\n try {\n const event = JSON.parse(line) as AnswerStreamEvent;\n\n if (event.type === 'answer-text-chunk') {\n accumulatedAnswer += event.content;\n\n answerListDispatch(\n appendAnswerChunk({\n text: event.content,\n }),\n );\n\n const uncertaintyCheck = isAnswerUncertain(accumulatedAnswer);\n isUncertain = uncertaintyCheck.uncertain;\n\n if (isUncertain) {\n const uncertaintyText =\n mergedTextConfig.uncertaintyFallbackText?.[uncertaintyCheck.language ?? 'en'] ??\n accumulatedAnswer ??\n \"I don't know.\";\n\n answerListDispatch(markAsUncertain({ uncertaintyText }));\n }\n }\n\n if (event.type === 'action-buttons') {\n searchIntentId = event.searchIntentId;\n answerListDispatch(\n addActionButtons({\n searchIntentId,\n actions: event.actions,\n }),\n );\n }\n\n if (event.type === 'get-action-inputs') {\n searchIntentId = event.searchIntentId;\n\n answerListDispatch(\n getActionInputs({\n searchIntentId: event.searchIntentId,\n inputs: event.inputs,\n actionId: event.actionId,\n schema: event.schema,\n initialValues: event.values,\n onSubmit: async (parameters) => {\n if (event.actionType === 'client_execution') {\n const results = await executeClientAction(event.actionKey, parameters);\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return generateAnswerForClientAction({\n searchQueryId,\n conversationId,\n searchIntentId: event.searchIntentId,\n actionId: event.actionId,\n results,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return generateAnswerForAction({\n searchQueryId,\n conversationId,\n searchIntentId: event.searchIntentId,\n actionId: event.actionId,\n parameters,\n });\n },\n }),\n );\n }\n } catch {\n console.warn('Failed to parse answer stream block');\n }\n }\n }\n\n return { answer: accumulatedAnswer, searchIntentId, isUncertain };\n } finally {\n reader.releaseLock();\n }\n };\n\n const generateAnswerForQuery = async ({\n searchQueryId,\n conversationId,\n }: {\n searchQueryId: string;\n conversationId?: string;\n }) => {\n try {\n const followUpQuestions = loadFollowUpQuestions(searchQueryId);\n\n const response = await fetchAnswerStream({\n endpoint: answerStreamEndpoint,\n headers,\n body: {\n type: 'generate-for-query',\n conversationId,\n searchQueryId,\n },\n });\n\n const reader = response.body?.getReader();\n if (!reader) return;\n\n const { answer, searchIntentId, isUncertain } = await processAnswerStream({\n reader,\n searchQueryId,\n conversationId,\n onFirstEvent: () => {\n trackEvent?.('First Streamed Answer Chunk Received', { conversationId, searchQueryId });\n },\n });\n\n if (!answer) return;\n\n // load follow-up questions if no search intent id is returned - i.e. no search intent was matched\n void followUpQuestions.then((questions) => {\n if (questions && questions.length > 0 && !searchIntentId) {\n answerListDispatch(setFollowUpQuestions({ questions }));\n }\n });\n\n if (isUncertain) {\n trackEvent?.('Answer Not Found', { conversationId, searchQueryId });\n } else {\n trackEvent?.('Answer Found', { conversationId, searchQueryId });\n }\n } catch (e) {\n console.error('Error generating answer for query:', e);\n answerListDispatch(setAnswerError({ error: mergedTextConfig.errorText || 'An error occurred.' }));\n } finally {\n answerListDispatch(completeAnswer());\n }\n };\n\n const generateAnswerForAction = async ({\n searchQueryId,\n searchIntentId,\n conversationId,\n actionId,\n parameters,\n }: {\n searchQueryId: string;\n conversationId?: string;\n searchIntentId: string;\n actionId: string;\n parameters: ActionInputs;\n }) => {\n answerListDispatch(invokeAction());\n\n try {\n const response = await fetchAnswerStream({\n endpoint: answerStreamEndpoint,\n headers,\n body: {\n type: 'invoke-action',\n conversationId,\n searchQueryId,\n searchIntentId,\n actionId,\n parameters,\n },\n });\n\n const reader = response.body?.getReader();\n if (!reader) return;\n\n await processAnswerStream({\n reader,\n searchQueryId,\n });\n } catch (e) {\n console.error('Error generating answer for action:', e);\n answerListDispatch(setAnswerError({ error: mergedTextConfig.errorText || 'An error occurred.' }));\n } finally {\n answerListDispatch(completeAnswer());\n setIsSearching(false);\n }\n };\n\n const generateAnswerForClientAction = async ({\n searchQueryId,\n searchIntentId,\n conversationId,\n actionId,\n results,\n }: {\n searchQueryId: string;\n conversationId?: string;\n searchIntentId: string;\n actionId: string;\n results: ClientExecutionResult;\n }) => {\n answerListDispatch(invokeAction());\n\n try {\n const response = await fetchAnswerStream({\n endpoint: answerStreamEndpoint,\n headers,\n body: {\n type: 'client-execution-result',\n conversationId,\n searchQueryId,\n searchIntentId,\n actionId,\n results,\n },\n });\n\n const reader = response.body?.getReader();\n if (!reader) return;\n\n await processAnswerStream({\n reader,\n searchQueryId,\n });\n } catch (e) {\n console.error('Error generating answer for action:', e);\n answerListDispatch(setAnswerError({ error: mergedTextConfig.errorText || 'An error occurred.' }));\n } finally {\n answerListDispatch(completeAnswer());\n setIsSearching(false);\n }\n };\n\n // Function to handle search API call\n const handleSearchApiCall = async ({\n searchQuery,\n conversationId,\n attributes,\n secretAttributes,\n allowedRegions,\n }: {\n searchQuery: string;\n conversationId?: string;\n attributes?: SearchQueryAttributes;\n secretAttributes?: string;\n allowedRegions?: string[];\n }) => {\n const searchResponse = await searchApi({\n endpoint: searchEndpoint,\n query: searchQuery,\n collectionId: currentCollectionId,\n headers,\n conversationId,\n attributes,\n secretAttributes,\n allowedRegions,\n });\n\n if (searchResponse.results.length === 0) {\n trackEvent?.('No Articles Found', { conversationId, searchQuery });\n\n return;\n }\n\n answerListDispatch(\n setSearchResults({\n searchQueryId: searchResponse.searchQueryId,\n results: searchResponse.results,\n }),\n );\n\n return searchResponse.searchQueryId;\n };\n\n interface PerformSearchProps {\n searchQuery: string;\n event?: { name: string; metaData?: Record<string, any> };\n }\n // Main function to perform the search\n const performSearch = async ({ searchQuery = query.trim(), event }: PerformSearchProps) => {\n if (!searchQuery) return;\n\n const conversationId = currentConversationId || createConversationId();\n setCurrentConversationId(conversationId);\n\n setIsSearching(true);\n setShowResults(true);\n setActiveAnswerIndex(answers.length);\n scrollToLastAnswer();\n\n answerListDispatch(\n appendNewAnswer({\n query: searchQuery,\n }),\n );\n\n // ensure the UI updates before the search API call\n await Promise.resolve();\n\n // focus on follow-up search field if it's visible\n followUpSearchRef.current?.focus();\n\n try {\n const attributes = { ...userData } as SearchQueryAttributes;\n const searchQueryId = await handleSearchApiCall({\n searchQuery,\n conversationId,\n attributes,\n secretAttributes,\n allowedRegions,\n });\n\n if (searchQueryId) {\n event &&\n trackEvent?.(event.name, {\n conversationId,\n searchQuery,\n searchQueryId,\n ...event.metaData,\n });\n\n await generateAnswerForQuery({\n searchQueryId,\n conversationId,\n });\n } else {\n answerListDispatch(noArticlesFound());\n }\n } catch (error) {\n console.error('Error generating answer:', error);\n\n // track the error event\n event &&\n trackEvent?.(`${event.name} - Search Error`, {\n conversationId,\n searchQuery,\n ...event.metaData,\n });\n\n answerListDispatch(setAnswerError({ error: mergedTextConfig.errorText || 'An error occurred.' }));\n } finally {\n setIsSearching(false);\n }\n };\n\n const createNewThread = (firstQuery?: string) => {\n // If firstQuery is provided, set it and trigger search\n if (firstQuery) {\n setQuery(firstQuery);\n void performSearch({ searchQuery: firstQuery, event: { name: 'New Thread Created with Query' } });\n\n return;\n }\n\n setQuery('');\n setFollowUpQuery('');\n setShowResults(false);\n answerListDispatch(clearAll());\n setActiveAnswerIndex(0);\n setAttachedImages([]);\n clearCurrentConversationId();\n\n trackEvent?.('New Thread Created', { oldConversationId: currentConversationId });\n\n if (primaryTextareaRef.current) {\n primaryTextareaRef.current.style.height = 'auto';\n }\n };\n\n // Expose the methods via ref\n useImperativeHandle(ref, () => ({\n createNewThread,\n showFollowUpThread: (show: boolean) => {\n setShowFollowUp(show);\n },\n subscribeToStateChanges,\n focusSearchField: () => primarySearchRef.current?.focus() || followUpSearchRef.current?.focus(),\n showCloseButton: (showButton: boolean = true) => {\n setShowMobileCloseWidgetButton(showButton);\n },\n }));\n\n // Update currentCollectionId when selectedCollectionId prop changes\n useEffect(() => {\n setCurrentCollectionId(selectedCollectionId);\n }, [selectedCollectionId]);\n\n const adjustTextareaHeight = (textarea: HTMLTextAreaElement) => {\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n };\n\n // Function to initiate a primary search\n const handlePrimarySearch = async (searchQuery: string = query.trim()) => {\n await performSearch({ searchQuery, event: { name: 'Primary Field Search Submitted' } });\n };\n\n const handleFeedback = async (response: FeedbackResponse, searchQueryId: string, answerIndex: number) => {\n if (!feedbackEndpoint) return;\n\n // Update UI state immediately\n answerListDispatch(\n setUserFeedback({\n feedback: response,\n index: answerIndex,\n }),\n );\n\n try {\n await sendFeedback({\n endpoint: feedbackEndpoint,\n searchQueryId,\n response,\n headers,\n conversationId: currentConversationId,\n });\n\n trackEvent?.(response === 'accept' ? 'Answer Accepted' : 'Answer Rejected', {\n conversationId: currentConversationId,\n searchQueryId,\n });\n } catch (error) {\n console.error('Error sending feedback:', error);\n // Revert UI state on error\n answerListDispatch(\n clearUserFeedback({\n index: answerIndex,\n }),\n );\n }\n };\n\n const handleFeedbackReasonSubmit = async (reason: string, searchQueryId: string) => {\n if (!feedbackReasonEndpoint) return;\n\n try {\n await sendFeedbackReason({\n endpoint: feedbackReasonEndpoint,\n searchQueryId,\n reason,\n headers,\n });\n } catch (error) {\n console.error('Error sending feedback reason:', error);\n }\n };\n\n const handleFollowUpSearch = async (customQuery?: string) => {\n // Use customQuery if provided, otherwise use the state value\n const queryToUse = customQuery !== undefined ? customQuery : followUpQuery;\n\n if (queryToUse.trim()) {\n setQuery(queryToUse);\n setFollowUpQuery('');\n await performSearch({ searchQuery: queryToUse, event: { name: 'Follow-up Search Field Submitted' } });\n }\n };\n\n const handleSuggestedQuestionClick = (suggestion: Suggestion) => {\n if (suggestion.conversationId) {\n trackEvent?.('Recent Conversation Clicked', {\n conversationId: currentConversationId,\n question: suggestion.question,\n });\n loadConversationById(suggestion.conversationId);\n\n return;\n }\n\n void performSearch({ searchQuery: suggestion.question, event: { name: 'Suggested Question Clicked' } });\n };\n\n const handleAutocompleteSuggestionClick = (suggestion: Suggestion) => {\n // autocomplete suggestions don't have conversation ids\n void performSearch({ searchQuery: suggestion.question, event: { name: 'Autocomplete Suggestion Clicked' } });\n };\n\n useEffect(() => {\n const handleScroll = () => {\n const isNearBottom = window.innerHeight + window.pageYOffset >= document.documentElement.scrollHeight - 100;\n setShowScrollArrow(!isNearBottom);\n };\n\n window.addEventListener('scroll', handleScroll);\n\n return () => window.removeEventListener('scroll', handleScroll);\n }, []);\n\n useEffect(() => {\n return () => {\n attachedImages.forEach((image) => URL.revokeObjectURL(image.preview));\n };\n }, [attachedImages]);\n\n const handleImageUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\n const files = event.target.files;\n if (files) {\n const newImages = Array.from(files).map((file) => ({\n file,\n preview: URL.createObjectURL(file),\n }));\n setAttachedImages((prev) => [...prev, ...newImages]);\n }\n if (fileInputRef.current) {\n fileInputRef.current.value = '';\n }\n };\n\n const removeImage = (index: number) => {\n setAttachedImages((prev) => {\n URL.revokeObjectURL(prev[index].preview);\n\n return prev.filter((_, i) => i !== index);\n });\n };\n\n const handleCollectionChange = (collectionId: string) => {\n setCurrentCollectionId(collectionId);\n onCollectionChange?.(collectionId);\n };\n\n // Listen for URL changes and reset state when conversation param is removed\n useEffect(() => {\n const handleUrlChange = () => {\n const urlParams = new URLSearchParams(window.location.search);\n const urlConversationId = urlParams.get('conversation');\n\n if (!urlConversationId) {\n setQuery('');\n setFollowUpQuery('');\n setShowResults(false);\n answerListDispatch(clearAll());\n setActiveAnswerIndex(0);\n setAttachedImages([]);\n if (primaryTextareaRef.current) {\n primaryTextareaRef.current.style.height = 'auto';\n }\n }\n };\n\n window.addEventListener('popstate', handleUrlChange);\n\n return () => window.removeEventListener('popstate', handleUrlChange);\n }, []);\n\n // Update the follow-up question click handler to use performSearch\n const handleFollowUpQuestionClick = (question: string) => {\n trackEvent?.('Follow-up Question Clicked', { conversationId: currentConversationId, question });\n void performSearch({ searchQuery: question, event: { name: 'Follow-up Question Clicked' } });\n };\n\n // handle the next best action click\n const handleNextBestActionClick = ({ action, searchQueryId, query, answer }: ActionClick) => {\n trackEvent?.('Next Best Action Clicked', {\n conversationId: currentConversationId,\n searchQueryId,\n action: action.label,\n });\n onNextBestActionClick?.({ action, searchQueryId, query, answer });\n };\n\n return (\n <div\n className={cn('w-full relative h-dvh flex flex-col justify-between @container', className)}\n data-name=\"ChatSearch\"\n >\n {/* Always show the header when in widget mode, or when there are no results */}\n {(isWidgetMode || !showResults) && (\n <Header\n data-name=\"Header\"\n headerText={mergedTextConfig.headerText!}\n onToggleSizeButtonClick={() => {\n onToggleSizeButtonClick?.();\n }}\n onBackButtonClick={() => void createNewThread()}\n onCloseWidgetClick={() => onCloseWidget?.()}\n className=\"@3xl:mb-4\"\n />\n )}\n <ScrollArea className=\"w-full relative h-auto flex-grow\" ref={containerRef}>\n <AnimatePresence>\n {isLoadingConversation ? (\n <LoadingConversation />\n ) : !showResults ? (\n <>\n {/* Finished loading conversation, no results yet, show search experience */}\n <motion.div\n key=\"search\"\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5 }}\n className=\"w-full\"\n >\n {/* Primary Search */}\n <div className=\"pb-4 px-3 bg-primary @3xl:px-0 @3xl:bg-transparent\">\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, delay: 0.4 }}\n >\n <PrimarySearch\n ref={primarySearchRef}\n query={query}\n onQueryChange={(value) => {\n setQuery(value);\n if (primaryTextareaRef.current) {\n adjustTextareaHeight(primaryTextareaRef.current);\n }\n }}\n onSearch={() => void handlePrimarySearch()}\n textConfig={mergedTextConfig}\n collections={collections}\n currentCollectionId={currentCollectionId}\n onCollectionChange={handleCollectionChange}\n disableImageAttachment={disableImageAttachment}\n attachedImages={attachedImages}\n onImageUpload={handleImageUpload}\n onRemoveImage={removeImage}\n isSearching={isSearching}\n autocompleteSuggestions={autocompleteSuggestions}\n onAutocompleteSuggestionSelect={handleAutocompleteSuggestionClick}\n />\n </motion.div>\n </div>\n\n {/* Suggestions */}\n <Suggestions\n suggestions={initialSuggestions}\n onQuestionClick={handleSuggestedQuestionClick}\n title={mergedTextConfig.suggestionsTitle}\n />\n\n {/* Body Action Buttons */}\n {bodyActionButtons && bodyActionButtons.length > 0 && (\n <div className=\"mt-4 mb-4 px-3 @3xl:px-0\">\n <div className=\"space-y-3\">\n <NextBestActions\n nextBestActions={bodyActionButtons || []}\n onActionClick={(action) =>\n handleNextBestActionClick({\n action,\n searchQueryId: '',\n query: '',\n answer: '',\n })\n }\n />\n </div>\n </div>\n )}\n </motion.div>\n </>\n ) : (\n <>\n {/* We now have answers, so we can show the results */}\n <motion.div\n key=\"results\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.5 }}\n className=\"w-full max-w-[100vw] space-y-4 p-3 md:p-4\"\n >\n {/* Answers */}\n {answers.map((answer, i) => (\n <motion.div\n key={i}\n ref={(el) => (answerRefs.current[i] = el)}\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, delay: i * 0.1 }}\n >\n <Answer\n index={i}\n blocks={answer.blocks}\n question={answer.question}\n state={answer.state}\n searchResults={answer.searchResults}\n searchQueryId={answer.searchQueryId}\n feedback={answer.feedback}\n onFeedback={(response) => void handleFeedback(response, answer.searchQueryId!, i)}\n disableFeedback={disableFeedback}\n textConfig={mergedTextConfig}\n redirectRules={redirectRules}\n nextBestActions={nextBestActions}\n actions={answer.actions}\n handleActionClick={handleNextBestActionClick}\n isLastAnswer={i === answers.length - 1}\n onFeedbackReasonSubmit={(reason) =>\n void handleFeedbackReasonSubmit(reason, answer.searchQueryId!)\n }\n />\n {i === answers.length - 1 &&\n !disableFollowUpQuestions &&\n answer.followUpQuestions &&\n answer.state === 'completed' && (\n <div className=\"mt-4\">\n <FollowUpQuestions\n questions={answer.followUpQuestions}\n onQuestionClick={handleFollowUpQuestionClick}\n />\n </div>\n )}\n </motion.div>\n ))}\n </motion.div>\n </>\n )}\n </AnimatePresence>\n {showResults && answers.length > 1 && (\n <div className=\"hidden lg:block\">\n <TimelineNavigation\n questions={answers.map((a) => a.question)}\n activeIndex={activeAnswerIndex}\n onNavigate={(index) => {\n setActiveAnswerIndex(index);\n scrollToAnswer(index);\n }}\n offset={offset}\n />\n </div>\n )}\n\n {disclaimer && !(showResults && showFollowUp) && (\n <div className=\"mt-2 px-3 @3xl:px-0 text-xs text-dark-500 flex items-center gap-1 absolute bottom-12 justify-center text-center w-full\">\n <MemoizedIcon iconName=\"Info\" className=\"size-4\" />\n {disclaimer}\n </div>\n )}\n </ScrollArea>\n\n {showResults && showFollowUp && (\n <FollowUpSearchBar\n ref={followUpSearchRef}\n initialQuery={followUpQuery}\n onQueryChange={setFollowUpQuery}\n isSearching={isSearching}\n handleFollowUpSearch={handleFollowUpSearch}\n textConfig={mergedTextConfig}\n />\n )}\n\n {showScrollArrow && showResults && <ScrollToBottomArrow onClick={scrollToLastAnswer} />}\n </div>\n );\n },\n);\n\nChatSearchComponent.displayName = 'ChatSearch';\n\nconst ChatSearch = forwardRef<ChatSearchHandle, ChatSearchProps>(({ featureFlags, ...props }, ref) => (\n <FeatureFlagProvider flags={featureFlags}>\n <ChatSearchProvider searchPath={props.searchPath}>\n <ChatSearchComponent {...props} ref={ref} />\n </ChatSearchProvider>\n </FeatureFlagProvider>\n));\n\nChatSearch.displayName = 'ChatSearch';\n\nexport default ChatSearch;\n"],"names":["React","require$$0","require$$1","names_1","names","require$$2","require$$3","require$$4","jsonSchemaTraverseModule","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","s","o","r","e","ajvResolver","MotionButton","ActionType","NextBestActionType","action","conversationId","secretAttributes","allowedRegions","query"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAYO,SAAS,YAAY,EAAE,WAAA,EAAa,eAAiB,EAAA,KAAA,GAAQ,uBAA2C,EAAA;AAC7G,EAAA,IAAI,CAAC,WAAA,IAAe,WAAY,CAAA,MAAA,KAAW,GAAU,OAAA,IAAA;AAErD,EAAA,oDACG,KAAI,EAAA,EAAA,SAAA,EAAU,cAAa,WAAU,EAAA,aAAA,EAAA,+CACnC,IAAG,EAAA,EAAA,SAAA,EAAU,gDAA8C,KAAM,CAAA,+CACjE,KAAI,EAAA,EAAA,SAAA,EAAU,0BACZ,WAAY,CAAA,GAAA,CAAI,CAAC,UAChB,qBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAK,UAAW,CAAA,EAAA;AAAA,MAChB,OAAA,EAAS,MAAM,eAAA,CAAgB,UAAU,CAAA;AAAA,MACzC,OAAQ,EAAA,SAAA;AAAA,MACR,SAAU,EAAA;AAAA,KAAA;AAAA,IAET,UAAW,CAAA,YAAA,KAAiB,MAC3B,oBAAAA,cAAA,CAAA,aAAA,CAAC,eACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,OACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,cAAe,EAAA,EAAA,OAAA,EAAO,IACrB,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAU,+HACb,EAAA,EAAA,UAAA,CAAW,YACd,CACF,CACA,kBAAAA,cAAA,CAAA,aAAA,CAAC,cACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,GAAG,EAAA,IAAA,EAAA,UAAA,CAAW,YAAa,EAAA,gCAA8B,CAC5D,CACF,CACF,CAAA;AAAA,oBAEDA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,EAAA,EAAA,EAAI,WAAW,QAAS;AAAA,GAE3C,CACH,CACF,CAAA;AAEJ;;;;;;;;;;;;;;EC7CA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,EAAA,OAAA,CAAA,UAAA,GAAqB,OAA2B,CAAA,gBAAA,GAAA,OAAA,CAAA,WAAA,GAAsB,OAAwB,CAAA,aAAA,GAAA,OAAA,CAAA,SAAA,GAAoB,oBAAoB,OAAqB,CAAA,UAAA,GAAA,OAAA,CAAA,GAAA,GAAc,OAAY,CAAA,CAAA,GAAA,OAAA,CAAA,GAAA,GAAc,OAAgB,CAAA,KAAA,GAAA,OAAA,CAAA,IAAA,GAAe,OAAqB,CAAA,UAAA,GAAA,OAAA,CAAA,WAAA,GAAsB,MAAM;AACnR;AACA,EAAA,MAAM,WAAW,CAAC;AAClB;AACA,EAAA,OAAA,CAAA,WAAA,GAAsB,WAAW;AACjC,EAAA,OAAA,CAAA,UAAA,GAAqB,uBAAuB;EAC5C,MAAM,IAAI,SAAS,WAAW,CAAC;MAC3B,WAAW,CAAC,CAAC,EAAE;AACnB,UAAQ,KAAK,EAAE;UACP,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,cAAY,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;AACvE,UAAQ,IAAI,CAAC,GAAG,GAAG,CAAC;AACpB;AACA,MAAI,QAAQ,GAAG;UACP,OAAO,IAAI,CAAC,GAAG;AACvB;AACA,MAAI,QAAQ,GAAG;AACf,UAAQ,OAAO,KAAK;AACpB;MACI,IAAI,KAAK,GAAG;UACR,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;AAChC;AACA;AACA,EAAA,OAAA,CAAA,IAAA,GAAe,IAAI;EACnB,MAAM,KAAK,SAAS,WAAW,CAAC;MAC5B,WAAW,CAAC,IAAI,EAAE;AACtB,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI;AAC9D;AACA,MAAI,QAAQ,GAAG;UACP,OAAO,IAAI,CAAC,GAAG;AACvB;AACA,MAAI,QAAQ,GAAG;AACf,UAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AAClC,cAAY,OAAO,KAAK;UAChB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,UAAQ,OAAO,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,IAAI;AAC3C;MACI,IAAI,GAAG,GAAG;AACd,UAAQ,IAAI,EAAE;AACd,UAAQ,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5H;MACI,IAAI,KAAK,GAAG;AAChB,UAAQ,IAAI,EAAE;AACd,UAAQ,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK;cACxG,IAAI,CAAC,YAAY,IAAI;AACjC,kBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACtD,cAAY,OAAO,KAAK;WACf,EAAE,EAAE,CAAC,CAAC;AACf;AACA;AACA,EAAA,OAAA,CAAA,KAAA,GAAgB,KAAK;AACrB,EAAA,OAAA,CAAA,GAAA,GAAc,IAAI,KAAK,CAAC,EAAE,CAAC;AAC3B,EAAA,SAAS,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;MACtB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB,IAAI,CAAC,GAAG,CAAC;AACb,MAAI,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;UACpB,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;UACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B;AACA,MAAI,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA,EAAA,OAAA,CAAA,CAAA,GAAY,CAAC;AACb,EAAA,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;AAC3B,EAAA,SAAS,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;MACxB,MAAM,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;MACrC,IAAI,CAAC,GAAG,CAAC;AACb,MAAI,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,UAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;UACf,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,UAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD;MACI,QAAQ,CAAC,IAAI,CAAC;AAClB,MAAI,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA,EAAA,OAAA,CAAA,GAAA,GAAc,GAAG;AACjB,EAAA,SAAS,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;MAC3B,IAAI,GAAG,YAAY,KAAK;UACpB,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;WACvB,IAAI,GAAG,YAAY,IAAI;AAChC,UAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACtB;UACQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACnC;AACA,EAAA,OAAA,CAAA,UAAA,GAAqB,UAAU;EAC/B,SAAS,QAAQ,CAAC,IAAI,EAAE;MACpB,IAAI,CAAC,GAAG,CAAC;MACT,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,UAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC9B,cAAY,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,cAAY,IAAI,GAAG,KAAK,SAAS,EAAE;kBACnB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;kBAC1B;AAChB;AACA,cAAY,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;AAC3B;AACA,UAAQ,CAAC,EAAE;AACX;AACA;AACA,EAAA,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;MAC1B,IAAI,CAAC,KAAK,IAAI;AAClB,UAAQ,OAAO,CAAC;MACZ,IAAI,CAAC,KAAK,IAAI;AAClB,UAAQ,OAAO,CAAC;AAChB,MAAI,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;AAC9B,UAAQ,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;cAC5C;AACZ,UAAQ,IAAI,OAAO,CAAC,IAAI,QAAQ;AAChC,cAAY,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3C,UAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;AACxB,cAAY,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;UACtC;AACR;AACA,MAAI,IAAI,OAAO,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC;AACpE,UAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MAC/B;AACJ;AACA,EAAA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;MACvB,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE;AACA,EAAA,OAAA,CAAA,SAAA,GAAoB,SAAS;AAC7B;EACA,SAAS,WAAW,CAAC,CAAC,EAAE;AACxB,MAAI,OAAO,OAAO,CAAC,IAAI,QAAQ,IAAI,OAAO,CAAC,IAAI,SAAS,IAAI,CAAC,KAAK;YACxD;AACV,YAAU,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3D;EACA,SAAS,SAAS,CAAC,CAAC,EAAE;MAClB,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACtC;AACA,EAAA,OAAA,CAAA,SAAA,GAAoB,SAAS;EAC7B,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,MAAI,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3B,WAAS,OAAO,CAAC,SAAS,EAAE,SAAS;AACrC,WAAS,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;AACtC;AACA,EAAA,OAAA,CAAA,aAAA,GAAwB,aAAa;EACrC,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,MAAI,OAAO,OAAO,GAAG,IAAI,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACvG;AACA,EAAA,OAAA,CAAA,WAAA,GAAsB,WAAW;AACjC;EACA,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/B,MAAI,IAAI,OAAO,GAAG,IAAI,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;UACxD,OAAO,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAClC;MACI,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC1F;AACA,EAAA,OAAA,CAAA,gBAAA,GAA2B,gBAAgB;EAC3C,SAAS,UAAU,CAAC,EAAE,EAAE;MACpB,OAAO,IAAI,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;AACnC;AACA,EAAA,OAAA,CAAA,UAAA,GAAqB,UAAU;AAC/B;;;;;;;;;;;;;EC1JA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,EAAA,OAAA,CAAA,UAAA,GAAqB,OAAyB,CAAA,cAAA,GAAA,OAAA,CAAA,KAAA,GAAgB,OAAmB,CAAA,QAAA,GAAA,OAAA,CAAA,cAAA,GAAyB,MAAM;EAChH,MAAM,MAAM,GAAGC,aAAiB,EAAA;EAChC,MAAM,UAAU,SAAS,KAAK,CAAC;MAC3B,WAAW,CAAC,IAAI,EAAE;UACd,KAAK,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACxD,UAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAC/B;AACA;AACA,EAAA,IAAI,cAAc;EAClB,CAAC,UAAU,cAAc,EAAE;MACvB,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;MACzD,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW;GAChE,EAAE,cAAc,KAAK,OAAA,CAAA,cAAA,GAAyB,cAAc,GAAG,EAAE,CAAC,CAAC;EACpE,OAAmB,CAAA,QAAA,GAAA;MACf,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;MAC/B,GAAG,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;MAC3B,GAAG,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;GAC9B;AACD,EAAA,MAAM,KAAK,CAAC;MACR,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;AAC3C,UAAQ,IAAI,CAAC,MAAM,GAAG,EAAE;AACxB,UAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ;AACjC,UAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B;MACI,MAAM,CAAC,YAAY,EAAE;AACzB,UAAQ,OAAO,YAAY,YAAY,MAAM,CAAC,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AAC3F;MACI,IAAI,CAAC,MAAM,EAAE;AACjB,UAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrD;MACI,QAAQ,CAAC,MAAM,EAAE;AACrB,UAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;UACzD,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AACvC;MACI,UAAU,CAAC,MAAM,EAAE;UACf,IAAI,EAAE,EAAE,EAAE;UACV,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE;cACvL,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,MAAM,CAAC,8BAA8B,CAAC,CAAC;AACvF;AACA,UAAQ,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;AAC1D;AACA;AACA,EAAA,OAAA,CAAA,KAAA,GAAgB,KAAK;AACrB,EAAA,MAAM,cAAc,SAAS,MAAM,CAAC,IAAI,CAAC;AACzC,MAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE;UACzB,KAAK,CAAC,OAAO,CAAC;AACtB,UAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B;MACI,QAAQ,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;AAC7C,UAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;UAClB,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AACpF;AACA;AACA,EAAA,OAAA,CAAA,cAAA,GAAyB,cAAc;EACvC,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;EAC/B,MAAM,UAAU,SAAS,KAAK,CAAC;MAC3B,WAAW,CAAC,IAAI,EAAE;UACd,KAAK,CAAC,IAAI,CAAC;AACnB,UAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;AACzB,UAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK;AAChC,UAAQ,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE;AACnE;AACA,MAAI,GAAG,GAAG;UACF,OAAO,IAAI,CAAC,MAAM;AAC1B;MACI,IAAI,CAAC,MAAM,EAAE;AACjB,UAAQ,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChE;AACA,MAAI,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE;AAC/B,UAAQ,IAAI,EAAE;AACd,UAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;AACnC,cAAY,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;UAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC9C,UAAQ,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;UACvB,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG;UAC5E,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;UAC7B,IAAI,EAAE,EAAE;cACJ,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1C,cAAY,IAAI,KAAK;AACrB,kBAAgB,OAAO,KAAK;AAC5B;eACa;cACD,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE;AACjD;AACA,UAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC9B,UAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACnE,UAAQ,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM;AAClC,UAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG;AAChC,UAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC7D,UAAQ,OAAO,IAAI;AACnB;AACA,MAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE;UACvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;UAC/B,IAAI,CAAC,EAAE;cACH;AACZ,UAAQ,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/B;MACI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE;UACxC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACpD,cAAY,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;kBAC5B,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACvE,cAAY,OAAO,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAChE,WAAS,CAAC;AACV;MACI,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE;UAClD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACpD,cAAY,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;kBACxB,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACvE,cAAY,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI;AAClC,WAAS,EAAE,UAAU,EAAE,OAAO,CAAC;AAC/B;MACI,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,EAAE;AAC/D,UAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG;AAC7B,UAAQ,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE;AACrC,cAAY,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;cACzB,IAAI,CAAC,EAAE;kBACH;AAChB,cAAY,MAAM,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;AAClF,cAAY,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACjC,kBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;sBACjB;kBACJ,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC;AACzD,kBAAgB,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC;kBACvB,IAAI,CAAC,EAAE;AACvB,sBAAoB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK;AAC7F,sBAAoB,IAAI,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvF;AACA,uBAAqB,KAAK,CAAC,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG;sBAC5E,IAAI,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrE;uBACqB;AACrB,sBAAoB,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC;AAC9C;kBACgB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC;AAC3D,eAAa,CAAC;AACd;AACA,UAAQ,OAAO,IAAI;AACnB;AACA;AACA,EAAA,OAAA,CAAA,UAAA,GAAqB,UAAU;AAC/B;;;;;;;;;;;EC7IA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,EAAA,OAAA,CAAA,EAAA,GAAa,cAAc,OAAc,CAAA,GAAA,GAAA,OAAA,CAAA,OAAA,GAAkB,OAAoB,CAAA,SAAA,GAAA,OAAA,CAAA,QAAA,GAAmB,yBAAyB,OAAqB,CAAA,UAAA,GAAA,OAAA,CAAA,KAAA,GAAgB,OAAe,CAAA,IAAA,GAAA,OAAA,CAAA,UAAA,GAAqB,oBAAoB,OAAsB,CAAA,WAAA,GAAA,OAAA,CAAA,GAAA,GAAc,oBAAoB,OAAc,CAAA,GAAA,GAAA,OAAA,CAAA,CAAA,GAAY,MAAM;EAChT,MAAM,MAAM,GAAGA,aAAiB,EAAA;EAChC,MAAM,OAAO,GAAGC,YAAkB,EAAA;EAClC,IAAI,MAAM,GAAGD,aAAiB,EAAA;EAC9B,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EAChG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;EACpG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;EAChH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;EACpG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;EACpH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;EAChH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;EAClH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;EACtG,IAAI,OAAO,GAAGC,YAAkB,EAAA;EAChC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;EACzG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;EACnH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;EAC3H,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;EAC/G,OAAoB,CAAA,SAAA,GAAA;MAChB,EAAE,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;MACzB,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;MAC3B,EAAE,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;MACzB,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;MAC3B,EAAE,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;MAC3B,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;MAC5B,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;MAC1B,EAAE,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;MAC1B,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;MAC3B,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;GAC7B;AACD,EAAA,MAAM,IAAI,CAAC;AACX,MAAI,aAAa,GAAG;AACpB,UAAQ,OAAO,IAAI;AACnB;AACA,MAAI,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE;AACtC,UAAQ,OAAO,IAAI;AACnB;AACA;EACA,MAAM,GAAG,SAAS,IAAI,CAAC;AACvB,MAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE;AACpC,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,UAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,UAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB;AACA,MAAI,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;AACxB,UAAQ,MAAM,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO;AACjE,UAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAClE,UAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;AACpD;AACA,MAAI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;UAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;cACrB;UACJ,IAAI,IAAI,CAAC,GAAG;AACpB,cAAY,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC;AAC/D,UAAQ,OAAO,IAAI;AACnB;MACI,IAAI,KAAK,GAAG;AAChB,UAAQ,OAAO,IAAI,CAAC,GAAG,YAAY,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;AAC3E;AACA;EACA,MAAM,MAAM,SAAS,IAAI,CAAC;AAC1B,MAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE;AACvC,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB,UAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB,UAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC;AACA,MAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;AACnB,UAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;AAChD;AACA,MAAI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;UAC5B,IAAI,IAAI,CAAC,GAAG,YAAY,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;cAC5E;AACZ,UAAQ,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC;AAC3D,UAAQ,OAAO,IAAI;AACnB;MACI,IAAI,KAAK,GAAG;UACR,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,YAAY,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;UAC1E,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;AAC5C;AACA;EACA,MAAM,QAAQ,SAAS,MAAM,CAAC;MAC1B,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;AAC3C,UAAQ,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC;AACpC,UAAQ,IAAI,CAAC,EAAE,GAAG,EAAE;AACpB;AACA,MAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;UACX,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;AAC1D;AACA;EACA,MAAM,KAAK,SAAS,IAAI,CAAC;MACrB,WAAW,CAAC,KAAK,EAAE;AACvB,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,UAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;AACvB;AACA,MAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;UACX,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;AACpC;AACA;EACA,MAAM,KAAK,SAAS,IAAI,CAAC;MACrB,WAAW,CAAC,KAAK,EAAE;AACvB,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,UAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;AACvB;AACA,MAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;AACnB,UAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;UAChD,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;AACpC;AACA;EACA,MAAM,KAAK,SAAS,IAAI,CAAC;MACrB,WAAW,CAAC,KAAK,EAAE;AACvB,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B;AACA,MAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;UACX,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;AAC1C;MACI,IAAI,KAAK,GAAG;AAChB,UAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;AAC/B;AACA;EACA,MAAM,OAAO,SAAS,IAAI,CAAC;MACvB,WAAW,CAAC,IAAI,EAAE;AACtB,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB;AACA,MAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;UACX,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;AACnC;AACA,MAAI,aAAa,GAAG;UACZ,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS;AAChD;AACA,MAAI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;AACpC,UAAQ,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC;AAC7D,UAAQ,OAAO,IAAI;AACnB;MACI,IAAI,KAAK,GAAG;AAChB,UAAQ,OAAO,IAAI,CAAC,IAAI,YAAY,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE;AAC7E;AACA;EACA,MAAM,UAAU,SAAS,IAAI,CAAC;AAC9B,MAAI,WAAW,CAAC,KAAK,GAAG,EAAE,EAAE;AAC5B,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B;MACI,MAAM,CAAC,IAAI,EAAE;UACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACxE;AACA,MAAI,aAAa,GAAG;AACpB,UAAQ,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;AAC9B,UAAQ,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM;UACpB,OAAO,CAAC,EAAE,EAAE;cACR,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE;AAC9C,cAAY,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;kBAChB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACxC,mBAAiB,IAAI,CAAC;AACtB,kBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5B;AACA,kBAAgB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC;UACQ,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS;AAClD;AACA,MAAI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;AACpC,UAAQ,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;AAC9B,UAAQ,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM;UACpB,OAAO,CAAC,EAAE,EAAE;AACpB;AACA,cAAY,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;cAClB,IAAI,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;kBACjC;AAChB,cAAY,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;AACzC,cAAY,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B;UACQ,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS;AAClD;MACI,IAAI,KAAK,GAAG;UACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAC5E;AACA;EACA,MAAM,SAAS,SAAS,UAAU,CAAC;MAC/B,MAAM,CAAC,IAAI,EAAE;AACjB,UAAQ,OAAO,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE;AACjE;AACA;EACA,MAAM,IAAI,SAAS,UAAU,CAAC;AAC9B;EACA,MAAM,IAAI,SAAS,SAAS,CAAC;AAC7B;EACA,IAAI,CAAC,IAAI,GAAG,MAAM;EAClB,MAAM,EAAE,SAAS,SAAS,CAAC;AAC3B,MAAI,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE;UAC1B,KAAK,CAAC,KAAK,CAAC;AACpB,UAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC;MACI,MAAM,CAAC,IAAI,EAAE;AACjB,UAAQ,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;UACvD,IAAI,IAAI,CAAC,IAAI;cACT,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACpD,UAAQ,OAAO,IAAI;AACnB;AACA,MAAI,aAAa,GAAG;UACZ,KAAK,CAAC,aAAa,EAAE;AAC7B,UAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS;UAC3B,IAAI,IAAI,KAAK,IAAI;AACzB,cAAY,OAAO,IAAI,CAAC,KAAK,CAAC;AAC9B,UAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;UACjB,IAAI,CAAC,EAAE;AACf,cAAY,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,EAAE;AACxC,cAAY,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;AACjE;UACQ,IAAI,CAAC,EAAE;cACH,IAAI,IAAI,KAAK,KAAK;kBACd,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK;AACpD,cAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;AACjC,kBAAgB,OAAO,IAAI;cACf,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACrE;UACQ,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;AAChD,cAAY,OAAO,SAAS;AAC5B,UAAQ,OAAO,IAAI;AACnB;AACA,MAAI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;AACpC,UAAQ,IAAI,EAAE;AACd,UAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;AAC5G,UAAQ,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;cACrD;AACZ,UAAQ,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;AACvE,UAAQ,OAAO,IAAI;AACnB;MACI,IAAI,KAAK,GAAG;AAChB,UAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;AACjC,UAAQ,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;UACnC,IAAI,IAAI,CAAC,IAAI;cACT,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,UAAQ,OAAO,KAAK;AACpB;AACA;EACA,EAAE,CAAC,IAAI,GAAG,IAAI;EACd,MAAM,GAAG,SAAS,SAAS,CAAC;AAC5B;EACA,GAAG,CAAC,IAAI,GAAG,KAAK;EAChB,MAAM,OAAO,SAAS,GAAG,CAAC;MACtB,WAAW,CAAC,SAAS,EAAE;AAC3B,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC;MACI,MAAM,CAAC,IAAI,EAAE;AACjB,UAAQ,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5D;AACA,MAAI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;UAC5B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;cACtC;AACZ,UAAQ,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;AACvE,UAAQ,OAAO,IAAI;AACnB;MACI,IAAI,KAAK,GAAG;AAChB,UAAQ,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1D;AACA;EACA,MAAM,QAAQ,SAAS,GAAG,CAAC;MACvB,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;AACzC,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,UAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,UAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,UAAQ,IAAI,CAAC,EAAE,GAAG,EAAE;AACpB;MACI,MAAM,CAAC,IAAI,EAAE;AACjB,UAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO;UAC9D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI;AACvC,UAAQ,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC/F;MACI,IAAI,KAAK,GAAG;AAChB,UAAQ,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;UAClD,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;AAC3C;AACA;EACA,MAAM,OAAO,SAAS,GAAG,CAAC;MACtB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC/C,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,UAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,UAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,UAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC;MACI,MAAM,CAAC,IAAI,EAAE;AACjB,UAAQ,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACrG;AACA,MAAI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;UAC5B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;cACtC;AACZ,UAAQ,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;AACrE,UAAQ,OAAO,IAAI;AACnB;MACI,IAAI,KAAK,GAAG;AAChB,UAAQ,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzD;AACA;EACA,MAAM,IAAI,SAAS,SAAS,CAAC;AAC7B,MAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;AACnC,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,UAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,UAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B;MACI,MAAM,CAAC,IAAI,EAAE;UACT,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,EAAE;UACzC,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAClF;AACA;EACA,IAAI,CAAC,IAAI,GAAG,MAAM;EAClB,MAAM,MAAM,SAAS,UAAU,CAAC;MAC5B,MAAM,CAAC,IAAI,EAAE;UACT,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7C;AACA;EACA,MAAM,CAAC,IAAI,GAAG,QAAQ;EACtB,MAAM,GAAG,SAAS,SAAS,CAAC;MACxB,MAAM,CAAC,IAAI,EAAE;UACT,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;UACrC,IAAI,IAAI,CAAC,KAAK;cACV,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;UACnC,IAAI,IAAI,CAAC,OAAO;cACZ,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7C,UAAQ,OAAO,IAAI;AACnB;AACA,MAAI,aAAa,GAAG;UACZ,IAAI,EAAE,EAAE,EAAE;UACV,KAAK,CAAC,aAAa,EAAE;UACrB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,EAAE;UACzE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,EAAE;AACnF,UAAQ,OAAO,IAAI;AACnB;AACA,MAAI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;UAC5B,IAAI,EAAE,EAAE,EAAE;AAClB,UAAQ,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;UACrC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;UACzF,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;AACnG,UAAQ,OAAO,IAAI;AACnB;MACI,IAAI,KAAK,GAAG;AAChB,UAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;UACzB,IAAI,IAAI,CAAC,KAAK;cACV,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;UACrC,IAAI,IAAI,CAAC,OAAO;cACZ,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/C,UAAQ,OAAO,KAAK;AACpB;AACA;EACA,MAAM,KAAK,SAAS,SAAS,CAAC;MAC1B,WAAW,CAAC,KAAK,EAAE;AACvB,UAAQ,KAAK,EAAE;AACf,UAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B;MACI,MAAM,CAAC,IAAI,EAAE;AACjB,UAAQ,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1D;AACA;EACA,KAAK,CAAC,IAAI,GAAG,OAAO;EACpB,MAAM,OAAO,SAAS,SAAS,CAAC;MAC5B,MAAM,CAAC,IAAI,EAAE;UACT,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7C;AACA;EACA,OAAO,CAAC,IAAI,GAAG,SAAS;AACxB,EAAA,MAAM,OAAO,CAAC;AACd,MAAI,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE;AACrC,UAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;AACzB,UAAQ,IAAI,CAAC,YAAY,GAAG,EAAE;AAC9B,UAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;AAC5B,UAAQ,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,EAAE;AAC3D,UAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ;AACjC,UAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;UACrD,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AAClC;AACA,MAAI,QAAQ,GAAG;UACP,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3C;AACA;MACI,IAAI,CAAC,MAAM,EAAE;UACT,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACvC;AACA;MACI,SAAS,CAAC,MAAM,EAAE;UACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1C;AACA;AACA,MAAI,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE;AACpC,UAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC;UACtD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;AACvF,UAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,UAAQ,OAAO,IAAI;AACnB;AACA,MAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE;UAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;AACxD;AACA;AACA;MACI,SAAS,CAAC,SAAS,EAAE;AACzB,UAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;AAChE;AACA,MAAI,SAAS,GAAG;UACR,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD;MACI,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE;UACvC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;AACrD,UAAQ,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ;cAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;AAC3C,UAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACnD,UAAQ,OAAO,IAAI;AACnB;AACA;AACA,MAAI,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE;AACxC,UAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,CAAC;AAC9E;AACA;AACA,MAAI,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE;AACtC,UAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,CAAC;AAC5E;AACA;AACA,MAAI,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE;AACtC,UAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,CAAC;AAC5E;AACA;AACA,MAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE;AAClC,UAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;AAChE;AACA;AACA,MAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;AAClB,UAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5E;AACA;MACI,IAAI,CAAC,CAAC,EAAE;AACZ,UAAQ,IAAI,OAAO,CAAC,IAAI,UAAU;AAClC,cAAY,CAAC,EAAE;AACf,eAAa,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG;cACrB,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1C,UAAQ,OAAO,IAAI;AACnB;AACA;AACA,MAAI,MAAM,CAAC,GAAG,SAAS,EAAE;AACzB,UAAQ,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC;UAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE;AAC9C,cAAY,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/B,kBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9B,cAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;cACd,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAChD,kBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;kBACd,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC;AACnD;AACA;AACA,UAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACtB,UAAQ,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACrC;AACA;AACA,MAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;UAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;AAC1C,UAAQ,IAAI,QAAQ,IAAI,QAAQ,EAAE;AAClC,cAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;AAC7D;eACa,IAAI,QAAQ,EAAE;cACf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;AACvC;eACa,IAAI,QAAQ,EAAE;AAC3B,cAAY,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;AACvE;AACA,UAAQ,OAAO,IAAI;AACnB;AACA;MACI,MAAM,CAAC,SAAS,EAAE;UACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;AAChD;AACA;AACA,MAAI,IAAI,GAAG;UACH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;AACzC;AACA;AACA,MAAI,KAAK,GAAG;UACJ,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC;AAC3C;AACA,MAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AACxB,UAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7B,UAAQ,IAAI,OAAO;cACP,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;AACvC,UAAQ,OAAO,IAAI;AACnB;AACA;AACA,MAAI,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE;AAC5B,UAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;AACzD;AACA;AACA,MAAI,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;UAC7G,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;UAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AACpF;AACA;AACA,MAAI,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;UACrE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;AACrD,UAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAC3B,cAAY,MAAM,GAAG,GAAG,QAAQ,YAAY,MAAM,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;cACnF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK;kBAChE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;kBAC5C,OAAO,CAAC,IAAI,CAAC;AAC7B,eAAa,CAAC;AACd;UACQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AACzF;AACA;AACA;MACI,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC/G,UAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;cACzB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AACzF;UACQ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;UAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AACpF;AACA;AACA,MAAI,MAAM,GAAG;AACb,UAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AACtC;AACA;MACI,KAAK,CAAC,KAAK,EAAE;UACT,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA;MACI,KAAK,CAAC,KAAK,EAAE;UACT,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA;MACI,MAAM,CAAC,KAAK,EAAE;AAClB,UAAQ,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE;AACjC,UAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7B,UAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,UAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;AACnC,cAAY,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AACrE,UAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACzC;AACA;AACA,MAAI,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE;AACzC,UAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW;AACtC,cAAY,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;AAC3E,UAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE;AAC9B,UAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7B,UAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;UAClB,IAAI,SAAS,EAAE;cACX,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,cAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;cAC9C,SAAS,CAAC,KAAK,CAAC;AAC5B;UACQ,IAAI,WAAW,EAAE;cACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE;AACzD,cAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC;UACQ,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;AACjD;AACA;MACI,KAAK,CAAC,KAAK,EAAE;UACT,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA;AACA,MAAI,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE;UACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAClD,UAAQ,IAAI,IAAI;cACJ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC/C,UAAQ,OAAO,IAAI;AACnB;AACA;MACI,QAAQ,CAAC,SAAS,EAAE;UAChB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;UACnC,IAAI,GAAG,KAAK,SAAS;AAC7B,cAAY,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;UAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;AAChD,UAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,CAAC,EAAE;AAC/E,cAAY,MAAM,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AAClG;AACA,UAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;AAChC,UAAQ,OAAO,IAAI;AACnB;AACA;AACA,MAAI,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE;AACnD,UAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACpD,UAAQ,IAAI,QAAQ;cACR,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;AACzC,UAAQ,OAAO,IAAI;AACnB;AACA;AACA,MAAI,OAAO,GAAG;AACd,UAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACvC;AACA,MAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE;AACpB,UAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACxB,cAAY,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AACtC,cAAY,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AACvE;AACA;MACI,SAAS,CAAC,IAAI,EAAE;UACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,UAAQ,OAAO,IAAI;AACnB;MACI,UAAU,CAAC,IAAI,EAAE;UACb,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,UAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B;AACA,MAAI,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE;AAC1B,UAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS;UACxB,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;AACxD,cAAY,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAC7B,cAAY,OAAO,IAAI;AACvB;AACA,UAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5F;MACI,SAAS,CAAC,IAAI,EAAE;AACpB,UAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS;AAChC,UAAQ,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE;AAChC,cAAY,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AAC3D;UACQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI;AACtC,UAAQ,OAAO,IAAI;AACnB;MACI,IAAI,KAAK,GAAG;AAChB,UAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7B;MACI,IAAI,SAAS,GAAG;AACpB,UAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM;UACtB,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC;AACA,MAAI,IAAI,SAAS,CAAC,IAAI,EAAE;AACxB,UAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM;UACtB,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;AAChC;AACA;AACA,EAAA,OAAA,CAAA,OAAA,GAAkB,OAAO;AACzB,EAAA,SAAS,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE;AAC/B,MAAI,KAAK,MAAM,CAAC,IAAI,IAAI;AACxB,UAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACnD,MAAI,OAAO,KAAK;AAChB;AACA,EAAA,SAAS,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;AACnC,MAAI,OAAO,IAAI,YAAY,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK;AACnF;AACA,EAAA,SAAS,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;AAC9C,MAAI,IAAI,IAAI,YAAY,MAAM,CAAC,IAAI;AACnC,UAAQ,OAAO,WAAW,CAAC,IAAI,CAAC;AAChC,MAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC1B,UAAQ,OAAO,IAAI;AACnB,MAAI,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK;AAC7D,UAAQ,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI;AACpC,cAAY,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AAC9B,UAAQ,IAAI,CAAC,YAAY,MAAM,CAAC,KAAK;cACzB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACnC;AACA,cAAY,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,UAAQ,OAAO,KAAK;OACf,EAAE,EAAE,CAAC,CAAC;AACX,MAAI,SAAS,WAAW,CAAC,CAAC,EAAE;UACpB,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,UAAQ,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACjD,cAAY,OAAO,CAAC;AACpB,UAAQ,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3B,UAAQ,OAAO,CAAC;AAChB;AACA,MAAI,SAAS,WAAW,CAAC,CAAC,EAAE;AAC5B,UAAQ,QAAQ,CAAC,YAAY,MAAM,CAAC,KAAK;AACzC,cAAY,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;AAClH;AACA;AACA,EAAA,SAAS,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE;AACpC,MAAI,KAAK,MAAM,CAAC,IAAI,IAAI;AACxB,UAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACnD;EACA,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB,MAAI,OAAO,OAAO,CAAC,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG;AACA,EAAA,OAAA,CAAA,GAAA,GAAc,GAAG;EACjB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;AAC9C;AACA,EAAA,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE;AACtB,MAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/B;AACA,EAAA,OAAA,CAAA,GAAA,GAAc,GAAG;EACjB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;AAC5C;AACA,EAAA,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE;AACrB,MAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9B;AACA,EAAA,OAAA,CAAA,EAAA,GAAa,EAAE;EACf,SAAS,OAAO,CAAC,EAAE,EAAE;MACjB,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9G;EACA,SAAS,GAAG,CAAC,CAAC,EAAE;MACZ,OAAO,CAAC,YAAY,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE;AACA;;;;;;;;;;;;;;;;;;ACvrBA,CAAA,MAAM,CAAC,cAAc,CAAC,IAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAA,IAAA,CAAA,eAAuB,GAAG,IAAoB,CAAA,YAAA,GAAG,IAAY,CAAA,IAAA,GAAG,YAAe,GAAG,IAAA,CAAA,YAAoB,GAAG,IAAA,CAAA,oBAA4B,GAAG,IAAsB,CAAA,cAAA,GAAG,IAAgB,CAAA,QAAA,GAAG,wBAA2B,GAAG,IAAA,CAAA,iBAAyB,GAAG,IAAA,CAAA,cAAsB,GAAG,IAAwB,CAAA,gBAAA,GAAG,IAAsB,CAAA,cAAA,GAAG,yBAA4B,GAAG,IAAA,CAAA,cAAsB,GAAG,IAAA,CAAA,iBAAyB,GAAG,IAAyB,CAAA,iBAAA,GAAG,IAAc,CAAA,MAAA,GAAG,MAAM;CAClc,MAAM,SAAS,GAAGD,cAAoB,EAAA;CACtC,MAAM,MAAM,GAAGC,aAAyB,EAAA;AACxC;CACA,SAAS,MAAM,CAAC,GAAG,EAAE;KACjB,MAAM,IAAI,GAAG,EAAE;AACnB,KAAI,KAAK,MAAM,IAAI,IAAI,GAAG;AAC1B,SAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AACzB,KAAI,OAAO,IAAI;AACf;AACA,CAAA,IAAA,CAAA,MAAc,GAAG,MAAM;AACvB,CAAA,SAAS,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE;AACvC,KAAI,IAAI,OAAO,MAAM,IAAI,SAAS;AAClC,SAAQ,OAAO,MAAM;KACjB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;AACxC,SAAQ,OAAO,IAAI;AACnB,KAAI,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC;AACjC,KAAI,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACrD;AACA,CAAA,IAAA,CAAA,iBAAyB,GAAG,iBAAiB;CAC7C,SAAS,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE;AACnD,KAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;AAC7B,KAAI,IAAI,CAAC,IAAI,CAAC,YAAY;SAClB;AACR,KAAI,IAAI,OAAO,MAAM,KAAK,SAAS;SAC3B;AACR,KAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;AACrC,KAAI,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AAC9B,SAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACX,eAAe,CAAC,EAAE,EAAE,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5D;AACA;AACA,CAAA,IAAA,CAAA,iBAAyB,GAAG,iBAAiB;AAC7C,CAAA,SAAS,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE;AACvC,KAAI,IAAI,OAAO,MAAM,IAAI,SAAS;SAC1B,OAAO,CAAC,MAAM;AACtB,KAAI,KAAK,MAAM,GAAG,IAAI,MAAM;AAC5B,SAAQ,IAAI,KAAK,CAAC,GAAG,CAAC;AACtB,aAAY,OAAO,IAAI;AACvB,KAAI,OAAO,KAAK;AAChB;AACA,CAAA,IAAA,CAAA,cAAsB,GAAG,cAAc;AACvC,CAAA,SAAS,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE;AAC7C,KAAI,IAAI,OAAO,MAAM,IAAI,SAAS;SAC1B,OAAO,CAAC,MAAM;AACtB,KAAI,KAAK,MAAM,GAAG,IAAI,MAAM;SACpB,IAAI,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5C,aAAY,OAAO,IAAI;AACvB,KAAI,OAAO,KAAK;AAChB;AACA,CAAA,IAAA,CAAA,oBAA4B,GAAG,oBAAoB;AACnD,CAAA,SAAS,cAAc,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;KAC1E,IAAI,CAAC,KAAK,EAAE;SACR,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,OAAO,MAAM,IAAI,SAAS;AACnE,aAAY,OAAO,MAAM;AACzB,SAAQ,IAAI,OAAO,MAAM,IAAI,QAAQ;AACrC,aAAY,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC/C;KACI,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAChG;AACA,CAAA,IAAA,CAAA,cAAsB,GAAG,cAAc;CACvC,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/B,KAAI,OAAO,mBAAmB,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AACvD;AACA,CAAA,IAAA,CAAA,gBAAwB,GAAG,gBAAgB;CAC3C,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,KAAI,OAAO,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACrD;AACA,CAAA,IAAA,CAAA,cAAsB,GAAG,cAAc;CACvC,SAAS,iBAAiB,CAAC,GAAG,EAAE;AAChC,KAAI,IAAI,OAAO,GAAG,IAAI,QAAQ;AAC9B,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;AACvB,KAAI,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;AACvD;AACA,CAAA,IAAA,CAAA,iBAAyB,GAAG,iBAAiB;CAC7C,SAAS,mBAAmB,CAAC,GAAG,EAAE;AAClC,KAAI,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACtD;AACA,CAAA,IAAA,CAAA,mBAA2B,GAAG,mBAAmB;AACjD,CAAA,SAAS,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE;AACzB,KAAI,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAC3B,SAAQ,KAAK,MAAM,CAAC,IAAI,EAAE;aACd,CAAC,CAAC,CAAC,CAAC;AAChB;UACS;SACD,CAAC,CAAC,EAAE,CAAC;AACb;AACA;AACA,CAAA,IAAA,CAAA,QAAgB,GAAG,QAAQ;CAC3B,SAAS,kBAAkB,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,GAAG,EAAE;KACjF,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK;AACtC,SAAQ,MAAM,GAAG,GAAG,EAAE,KAAK;eACb;eACA,EAAE,YAAY,SAAS,CAAC;oBACnB,IAAI,YAAY,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;mBAC5F,IAAI,YAAY,SAAS,CAAC;wBACrB,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI;AACvD,uBAAsB,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;SACnC,OAAO,MAAM,KAAK,SAAS,CAAC,IAAI,IAAI,EAAE,GAAG,YAAY,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG;MACtG;AACL;AACA,CAAA,IAAA,CAAA,cAAsB,GAAG;KACrB,KAAK,EAAE,kBAAkB,CAAC;AAC9B,SAAQ,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM;AAChH,aAAY,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChM,UAAS,CAAC;SACF,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM;AACxF,aAAY,IAAI,IAAI,KAAK,IAAI,EAAE;AAC/B,iBAAgB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;AACpC;kBACiB;AACjB,iBAAgB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AAC9D,iBAAgB,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC;AAC3C;AACA,UAAS,CAAC;SACF,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;SACtE,YAAY,EAAE,oBAAoB;AAC1C,MAAK,CAAC;KACF,KAAK,EAAE,kBAAkB,CAAC;AAC9B,SAAQ,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/M,SAAQ,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;SAC5K,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC9E,SAAQ,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;AAC7D,MAAK,CAAC;EACL;AACD,CAAA,SAAS,oBAAoB,CAAC,GAAG,EAAE,EAAE,EAAE;KACnC,IAAI,EAAE,KAAK,IAAI;SACX,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;AACrC,KAAI,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACrD,IAAI,EAAE,KAAK,SAAS;AACxB,SAAQ,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;AACpC,KAAI,OAAO,KAAK;AAChB;AACA,CAAA,IAAA,CAAA,oBAA4B,GAAG,oBAAoB;AACnD,CAAA,SAAS,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;AACtC,KAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACjH;AACA,CAAA,IAAA,CAAA,YAAoB,GAAG,YAAY;CACnC,MAAM,QAAQ,GAAG,EAAE;AACnB,CAAA,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE;AACzB,KAAI,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE;SAC1B,GAAG,EAAE,CAAC;SACN,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/E,MAAK,CAAC;AACN;AACA,CAAA,IAAA,CAAA,OAAe,GAAG,OAAO;AACzB,CAAA,IAAI,IAAI;CACR,CAAC,UAAU,IAAI,EAAE;KACb,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;KAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;EAChC,EAAE,IAAI,KAAK,IAAA,CAAA,IAAY,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;AACtC,CAAA,SAAS,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE;AAChE;AACA,KAAI,IAAI,QAAQ,YAAY,SAAS,CAAC,IAAI,EAAE;AAC5C,SAAQ,MAAM,QAAQ,GAAG,YAAY,KAAK,IAAI,CAAC,GAAG;AAClD,SAAQ,OAAO;eACD;AACd,mBAAkB,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AAC3D,mBAAkB,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO;eAC/C;mBACI,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;AACrD,mBAAkB,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,0CAA0C,CAAC,CAAC;AACjG;KACI,OAAO,gBAAgB,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC;AACjH;AACA,CAAA,IAAA,CAAA,YAAoB,GAAG,YAAY;AACnC,CAAA,SAAS,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE;KAC3D,IAAI,CAAC,IAAI;SACL;AACR,KAAI,GAAG,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;KAC3B,IAAI,IAAI,KAAK,IAAI;AACrB,SAAQ,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC;KACxB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B;AACA,CAAA,IAAA,CAAA,eAAuB,GAAG,eAAe;AACzC;;;;;;;;;;;AChLA,CAAA,MAAM,CAAC,cAAc,CAACC,KAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;CAC7D,MAAM,SAAS,GAAGF,cAAoB,EAAA;AACtC,CAAA,MAAMG,OAAK,GAAG;AACd;KACI,IAAI,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AACpC;KACI,MAAM,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;KACpC,YAAY,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;KAChD,UAAU,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;KAC5C,kBAAkB,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC;KAC5D,QAAQ,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;KACxC,cAAc,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACxD;KACI,OAAO,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;KACtC,MAAM,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;KACpC,IAAI,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AACpC;KACI,IAAI,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;KAChC,KAAK,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC;KACI,IAAI,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;KAChC,OAAO,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;KACtC,OAAO,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;KACtC,QAAQ,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;EAC3C;AACD,CAAAD,KAAA,CAAA,OAAe,GAAGC,OAAK;AACvB;;;;;;;;;;EC1BA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,EAAA,OAAA,CAAA,YAAA,GAAuB,2BAA2B,OAA2B,CAAA,gBAAA,GAAA,OAAA,CAAA,WAAA,GAAsB,OAA4B,CAAA,iBAAA,GAAA,OAAA,CAAA,YAAA,GAAuB,MAAM;EAC5J,MAAM,SAAS,GAAGH,cAAoB,EAAA;EACtC,MAAM,MAAM,GAAGC,WAAiB,EAAA;EAChC,MAAM,OAAO,GAAGG,YAAkB,EAAA;EAClC,OAAuB,CAAA,YAAA,GAAA;MACnB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,oBAAoB,CAAC;GAC3F;EACD,OAA4B,CAAA,iBAAA,GAAA;MACxB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK;AAC1C,YAAU,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,kBAAkB,EAAE,UAAU,CAAC,QAAQ;AAChF,YAAU,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,4BAA4B,CAAC;GACrE;AACD,EAAA,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE;AACvF,MAAI,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG;MAClB,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE;MAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC;AAC1D,MAAI,IAAI,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,IAAI,aAAa,IAAI,SAAS,CAAC,EAAE;AACvH,UAAQ,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;AAC7B;WACS;AACT,UAAQ,YAAY,CAAC,EAAE,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACxD;AACA;AACA,EAAA,OAAA,CAAA,WAAA,GAAsB,WAAW;EACjC,SAAS,gBAAgB,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,UAAU,EAAE;AACzE,MAAI,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG;MAClB,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE;MAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC;AAC1D,MAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;AACzB,MAAI,IAAI,EAAE,aAAa,IAAI,SAAS,CAAC,EAAE;UAC/B,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AACjD;AACA;AACA,EAAA,OAAA,CAAA,gBAAA,GAA2B,gBAAgB;AAC3C,EAAA,SAAS,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE;MACtC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;AACjD,MAAI,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/N;AACA,EAAA,OAAA,CAAA,gBAAA,GAA2B,gBAAgB;AAC3C,EAAA,SAAS,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;AAC3E;MACI,IAAI,SAAS,KAAK,SAAS;AAC/B,UAAQ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;MAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,MAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK;UACxD,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;UACnE,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,2BAA2B,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACpM,UAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7G,UAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7B,cAAY,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;AACrE,cAAY,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;AAC5D;AACA,OAAK,CAAC;AACN;AACA,EAAA,OAAA,CAAA,YAAA,GAAuB,YAAY;AACnC,EAAA,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE;MAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;AACxC,MAAI,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;MAClM,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5D;AACA,EAAA,SAAS,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE;MAC5B,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE;AAC/C,MAAI,IAAI,SAAS,CAAC,MAAM,EAAE;UAClB,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACxE;WACS;AACT,UAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;AACnE,UAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACzB;AACA;AACA,EAAA,MAAM,CAAC,GAAG;MACN,OAAO,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;MACtC,UAAU,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;MAC5C,MAAM,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;MACpC,YAAY,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;MAChD,OAAO,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;MACtC,MAAM,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;MACpC,YAAY,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;GACnD;AACD,EAAA,SAAS,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE;AACjD,MAAI,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,EAAE;MAC/B,IAAI,YAAY,KAAK,KAAK;UACtB,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;MAChC,OAAO,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC;AAC9C;EACA,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,EAAE,EAAE;AAClD,MAAI,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG;MACvB,MAAM,SAAS,GAAG;AACtB,UAAQ,iBAAiB,CAAC,EAAE,EAAE,UAAU,CAAC;AACzC,UAAQ,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC;OACnC;AACL,MAAI,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC;AAC1C,MAAI,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AACnC;EACA,SAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE;MACxD,MAAM,QAAQ,GAAG;YACX,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpG,YAAU,SAAS;MACf,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC3G;AACA,EAAA,SAAS,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;MACvF,IAAI,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;MAC7F,IAAI,UAAU,EAAE;AACpB,UAAQ,OAAO,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACzG;AACA,MAAI,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC;AAClC;EACA,SAAS,eAAe,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE;MAC1D,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,GAAG;MAC9C,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE;AAC/D,MAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,MAAM,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjI,MAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;UACf,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,OAAO,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAC1F;AACA,MAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,UAAQ,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChJ;AACA,MAAI,IAAI,YAAY;UACZ,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AACtD;AACA;;;;;;;;;;ACzHA,CAAA,MAAM,CAAC,cAAc,CAAC,UAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAA,UAAA,CAAA,iBAAyB,GAAG,UAAA,CAAA,oBAA4B,GAAG,MAAM;CACjE,MAAM,QAAQ,GAAGJ,aAAoB,EAAA;CACrC,MAAM,SAAS,GAAGC,cAAqB,EAAA;CACvC,MAAM,OAAO,GAAGG,YAAmB,EAAA;AACnC,CAAA,MAAM,SAAS,GAAG;KACd,OAAO,EAAE,yBAAyB;EACrC;CACD,SAAS,oBAAoB,CAAC,EAAE,EAAE;KAC9B,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,MAAM,KAAK,KAAK,EAAE;AAC1B,SAAQ,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC;AACnC;UACS,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE;SAC1D,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AACxC;UACS;AACT,SAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;AACnE,SAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AACxB;AACA;AACA,CAAA,UAAA,CAAA,oBAA4B,GAAG,oBAAoB;AACnD,CAAA,SAAS,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE;AACtC,KAAI,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;AAC9B,KAAI,IAAI,MAAM,KAAK,KAAK,EAAE;SAClB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACtB,gBAAgB,CAAC,EAAE,CAAC;AAC5B;UACS;SACD,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7B;AACA;AACA,CAAA,UAAA,CAAA,iBAAyB,GAAG,iBAAiB;AAC7C,CAAA,SAAS,gBAAgB,CAAC,EAAE,EAAE,iBAAiB,EAAE;AACjD,KAAI,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;AAC5B;KACI,MAAM,GAAG,GAAG;AAChB,SAAQ,GAAG;SACH,OAAO,EAAE,cAAc;AAC/B,SAAQ,IAAI;SACJ,MAAM,EAAE,KAAK;SACb,UAAU,EAAE,KAAK;SACjB,WAAW,EAAE,KAAK;SAClB,MAAM,EAAE,EAAE;AAClB,SAAQ,EAAE;MACL;AACL,KAAI,IAAI,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAC;AAC3E;AACA;;;;;;;;;;;;;AChDA,CAAA,MAAM,CAAC,cAAc,CAAC,KAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAA,KAAA,CAAA,QAAgB,GAAG,KAAA,CAAA,UAAkB,GAAG,MAAM;AAC9C,CAAA,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;AACxF,CAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC;CACrC,SAAS,UAAU,CAAC,CAAC,EAAE;KACnB,OAAO,OAAO,CAAC,IAAI,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD;AACA,CAAA,KAAA,CAAA,UAAkB,GAAG,UAAU;AAC/B,CAAA,SAAS,QAAQ,GAAG;KAChB,MAAM,MAAM,GAAG;SACX,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;SACrC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;SACrC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;SACnC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;MACxC;AACL,KAAI,OAAO;AACX,SAAQ,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;SAC9D,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AACzF,SAAQ,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;SACnB,GAAG,EAAE,EAAE;SACP,QAAQ,EAAE,EAAE;MACf;AACL;AACA,CAAA,KAAA,CAAA,QAAgB,GAAG,QAAQ;AAC3B;;;;;;;;;;;ACxBA,CAAA,MAAM,CAAC,cAAc,CAAC,aAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAA,aAAA,CAAA,aAAqB,GAAG,aAAsB,CAAA,cAAA,GAAG,aAA6B,CAAA,qBAAA,GAAG,MAAM;CACvF,SAAS,qBAAqB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;KACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AACxC,KAAI,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;AACnE;AACA,CAAA,aAAA,CAAA,qBAA6B,GAAG,qBAAqB;AACrD,CAAA,SAAS,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE;AACvC,KAAI,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAClE;AACA,CAAA,aAAA,CAAA,cAAsB,GAAG,cAAc;AACvC,CAAA,SAAS,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE;AACrC,KAAI,IAAI,EAAE;KACN,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS;AAC9C,UAAS,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;AAC5H;AACA,CAAA,aAAA,CAAA,aAAqB,GAAG,aAAa;AACrC;;;;;;;;;ACjBA,CAAA,MAAM,CAAC,cAAc,CAAC,QAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAA,QAAA,CAAA,eAAuB,GAAG,QAAA,CAAA,cAAsB,GAAG,QAAA,CAAA,aAAqB,GAAG,QAA8B,CAAA,sBAAA,GAAG,QAAoB,CAAA,YAAA,GAAG,QAAsB,CAAA,cAAA,GAAG,QAAgB,CAAA,QAAA,GAAG,MAAM;CACrL,MAAM,OAAO,GAAGJ,YAAmB,EAAA;CACnC,MAAM,eAAe,GAAGC,oBAA0B,EAAA;CAClD,MAAM,QAAQ,GAAGG,aAAoB,EAAA;CACrC,MAAM,SAAS,GAAGC,cAAqB,EAAA;CACvC,MAAM,MAAM,GAAGC,WAAkB,EAAA;AACjC,CAAA,IAAI,QAAQ;CACZ,CAAC,UAAU,QAAQ,EAAE;KACjB,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;KAC7C,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;EAC5C,EAAE,QAAQ,KAAK,QAAA,CAAA,QAAgB,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC;CAClD,SAAS,cAAc,CAAC,MAAM,EAAE;KAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;KACvC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;KACtC,IAAI,OAAO,EAAE;AACjB,SAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK;AACrC,aAAY,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AACrE;UACS;SACD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;AAC5D,aAAY,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;AACvE;AACA,SAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;AACpC,aAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B;AACA,KAAI,OAAO,KAAK;AAChB;AACA,CAAA,QAAA,CAAA,cAAsB,GAAG,cAAc;AACvC;CACA,SAAS,YAAY,CAAC,EAAE,EAAE;AAC1B,KAAI,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE;KACrD,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACvC,SAAQ,OAAO,KAAK;AACpB,KAAI,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9E;AACA,CAAA,QAAA,CAAA,YAAoB,GAAG,YAAY;AACnC,CAAA,SAAS,sBAAsB,CAAC,EAAE,EAAE,KAAK,EAAE;KACvC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;KAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;AAC3D,KAAI,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;SAC/B,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,eAAe,CAAC,qBAAqB,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9G,IAAI,UAAU,EAAE;AACpB,SAAQ,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC;AACzF,SAAQ,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM;aACpB,IAAI,QAAQ,CAAC,MAAM;AAC/B,iBAAgB,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC/C;iBACgB,eAAe,CAAC,EAAE,CAAC;AACnC,UAAS,CAAC;AACV;AACA,KAAI,OAAO,UAAU;AACrB;AACA,CAAA,QAAA,CAAA,sBAA8B,GAAG,sBAAsB;AACvD,CAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAA,SAAS,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE;AAC3C,KAAI,OAAO;WACD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,KAAK,OAAO,IAAI,CAAC,KAAK,OAAO,CAAC;AAC5F,WAAU,EAAE;AACZ;AACA,CAAA,SAAS,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;KACrC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;KAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3E,KAAI,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AACpE,KAAI,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE;SAC9B,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,8BAA8B,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM;AAClH,cAAa,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;AACvD,cAAa,MAAM,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;cAClD,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAClG;AACA,KAAI,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;AACvD,KAAI,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;AAC9B,SAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC,EAAE;aACrE,kBAAkB,CAAC,CAAC,CAAC;AACjC;AACA;KACI,GAAG,CAAC,IAAI,EAAE;KACV,eAAe,CAAC,EAAE,CAAC;KACnB,GAAG,CAAC,KAAK,EAAE;AACf,KAAI,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM;AAC9D,SAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;AACjC,SAAQ,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC;AACrC,MAAK,CAAC;AACN,KAAI,SAAS,kBAAkB,CAAC,CAAC,EAAE;AACnC,SAAQ,QAAQ,CAAC;AACjB,aAAY,KAAK,QAAQ;iBACT;AAChB,sBAAqB,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,aAAa,CAAC;AAClG,sBAAqB,MAAM,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpE,sBAAqB,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;AAC/D,sBAAqB,MAAM,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC3C;AAChB,aAAY,KAAK,QAAQ;iBACT;AAChB,sBAAqB,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC;AACjF,kBAAkB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7E,sBAAqB,MAAM,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;iBACjD;AAChB,aAAY,KAAK,SAAS;iBACV;AAChB,sBAAqB,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC;AAClF,kBAAkB,EAAE,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;AAChG,sBAAqB,MAAM,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;iBACjD;AAChB,aAAY,KAAK,SAAS;iBACV;sBACK,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;AACvG,sBAAqB,MAAM,CAAC,OAAO,EAAE,KAAK;AAC1C,sBAAqB,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC;AAClF,sBAAqB,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;iBAC1B;AAChB,aAAY,KAAK,MAAM;iBACP,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACnG,iBAAgB,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;iBACzB;AAChB,aAAY,KAAK,OAAO;iBACR;AAChB,sBAAqB,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC;AACrF,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC;AAC/D,sBAAqB,MAAM,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAClE;AACA;AACA;CACA,SAAS,gBAAgB,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE;AACzE;AACA,KAAI,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3I;AACA,CAAA,SAAS,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE;AAC/E,KAAI,MAAM,EAAE,GAAG,OAAO,KAAK,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG;AAC9F,KAAI,IAAI,IAAI;AACZ,KAAI,QAAQ,QAAQ;AACpB,SAAQ,KAAK,MAAM;AACnB,aAAY,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;AACxD,SAAQ,KAAK,OAAO;AACpB,aAAY,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;aAChD;AACZ,SAAQ,KAAK,QAAQ;aACT,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC,CAAC;aAC1F;AACZ,SAAQ,KAAK,SAAS;aACV,IAAI,GAAG,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;aACpE;AACZ,SAAQ,KAAK,QAAQ;aACT,IAAI,GAAG,OAAO,EAAE;aAChB;SACJ;aACI,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtE;AACA,KAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC;KACrE,SAAS,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE;SACpC,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;AAC1J;AACA;AACA,CAAA,QAAA,CAAA,aAAqB,GAAG,aAAa;CACrC,SAAS,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE;AAC9D,KAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,SAAQ,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC;AACrE;AACA,KAAI,IAAI,IAAI;KACR,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;KAC3C,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AACrC,SAAQ,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;SAC5D,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACrE,OAAO,KAAK,CAAC,IAAI;SACjB,OAAO,KAAK,CAAC,KAAK;SAClB,OAAO,KAAK,CAAC,MAAM;AAC3B;UACS;AACT,SAAQ,IAAI,GAAG,SAAS,CAAC,GAAG;AAC5B;KACI,IAAI,KAAK,CAAC,MAAM;SACZ,OAAO,KAAK,CAAC,OAAO;AAC5B,KAAI,KAAK,MAAM,CAAC,IAAI,KAAK;SACjB,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACpF,KAAI,OAAO,IAAI;AACf;AACA,CAAA,QAAA,CAAA,cAAsB,GAAG,cAAc;AACvC,CAAA,MAAM,SAAS,GAAG;AAClB,KAAI,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,KAAI,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,OAAO,MAAM,IAAI,QAAQ,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;EACpJ;CACD,SAAS,eAAe,CAAC,EAAE,EAAE;AAC7B,KAAI,MAAM,GAAG,GAAG,mBAAmB,CAAC,EAAE,CAAC;KACnC,IAAI,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,SAAS,CAAC;AAC7C;AACA,CAAA,QAAA,CAAA,eAAuB,GAAG,eAAe;CACzC,SAAS,mBAAmB,CAAC,EAAE,EAAE;KAC7B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;AACpC,KAAI,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC;AACrE,KAAI,OAAO;AACX,SAAQ,GAAG;SACH,OAAO,EAAE,MAAM;AACvB,SAAQ,IAAI;AACZ,SAAQ,MAAM,EAAE,MAAM,CAAC,IAAI;AAC3B,SAAQ,UAAU;SACV,WAAW,EAAE,UAAU;SACvB,YAAY,EAAE,MAAM;SACpB,MAAM,EAAE,EAAE;AAClB,SAAQ,EAAE;MACL;AACL;AACA;;;;;;;;;;;ACzMA,CAAA,MAAM,CAAC,cAAc,CAAC,QAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAsB,QAAA,CAAA,cAAA,GAAG,MAAM;CAC/B,MAAM,SAAS,GAAGN,cAAqB,EAAA;CACvC,MAAM,MAAM,GAAGC,WAAkB,EAAA;AACjC,CAAA,SAAS,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE;KAC5B,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM;AAC3C,KAAI,IAAI,EAAE,KAAK,QAAQ,IAAI,UAAU,EAAE;AACvC,SAAQ,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AACtC,aAAY,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAC3D;AACA;UACS,IAAI,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrD,SAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AACpE;AACA;AACA,CAAA,QAAA,CAAA,cAAsB,GAAG,cAAc;AACvC,CAAA,SAAS,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;KAC3C,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;KAC7C,IAAI,YAAY,KAAK,SAAS;SAC1B;KACJ,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;KAC/E,IAAI,aAAa,EAAE;AACvB,SAAQ,IAAI,MAAM,CAAC,eAAe,EAAE,EAAE,EAAE,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC,CAAC;SACvE;AACR;AACA,KAAI,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC;AACjE,KAAI,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE;SAC9B,SAAS,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC;AACnG;AACA;AACA;AACA,KAAI,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AAClG;AACA;;;;;;;;;;;;;ACjCA,CAAA,MAAM,CAAC,cAAc,CAAC,IAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAqB,IAAA,CAAA,aAAA,GAAG,IAAqB,CAAA,aAAA,GAAG,IAAkB,CAAA,UAAA,GAAG,IAAwB,CAAA,gBAAA,GAAG,IAAwB,CAAA,gBAAA,GAAG,IAA2B,CAAA,mBAAA,GAAG,IAAwB,CAAA,gBAAA,GAAG,mBAAsB,GAAG,IAAA,CAAA,aAAqB,GAAG,IAAA,CAAA,WAAmB,GAAG,IAAA,CAAA,iBAAyB,GAAG,IAAA,CAAA,gBAAwB,GAAG,IAAA,CAAA,sBAA8B,GAAG,MAAM;CACzV,MAAM,SAAS,GAAGD,cAA6B,EAAA;CAC/C,MAAM,MAAM,GAAGC,WAA0B,EAAA;CACzC,MAAM,OAAO,GAAGG,YAA2B,EAAA;CAC3C,MAAM,MAAM,GAAGH,WAA0B,EAAA;AACzC,CAAA,SAAS,sBAAsB,CAAC,GAAG,EAAE,IAAI,EAAE;KACvC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,GAAG;AACjC,KAAI,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM;SACnE,GAAG,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC;SACpE,GAAG,CAAC,KAAK,EAAE;AACnB,MAAK,CAAC;AACN;AACA,CAAA,IAAA,CAAA,sBAA8B,GAAG,sBAAsB;AACvD,CAAA,SAAS,gBAAgB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;KACxE,OAAO,IAAI,SAAS,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,SAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7K;AACA,CAAA,IAAA,CAAA,gBAAwB,GAAG,gBAAgB;AAC3C,CAAA,SAAS,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE;KACrC,GAAG,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC;KACjD,GAAG,CAAC,KAAK,EAAE;AACf;AACA,CAAA,IAAA,CAAA,iBAAyB,GAAG,iBAAiB;CAC7C,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,KAAI,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE;AAClC;AACA,SAAQ,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc;SACpC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,+BAA+B,CAAC;AAChE,MAAK,CAAC;AACN;AACA,CAAA,IAAA,CAAA,WAAmB,GAAG,WAAW;AACjC,CAAA,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;KACxC,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5E;AACA,CAAA,IAAA,CAAA,aAAqB,GAAG,aAAa;CACrC,SAAS,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE;KACxD,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,cAAc,CAAC;KAC5F,OAAO,aAAa,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;AACrG;AACA,CAAA,IAAA,CAAA,cAAsB,GAAG,cAAc;CACvC,SAAS,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE;KAC1D,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,cAAc,CAAC;AAChG,KAAI,OAAO,aAAa,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;AACjH;AACA,CAAA,IAAA,CAAA,gBAAwB,GAAG,gBAAgB;CAC3C,SAAS,mBAAmB,CAAC,SAAS,EAAE;KACpC,OAAO,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,GAAG,EAAE;AACnF;AACA,CAAA,IAAA,CAAA,mBAA2B,GAAG,mBAAmB;AACjD,CAAA,SAAS,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE;KACrC,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACzG;AACA,CAAA,IAAA,CAAA,gBAAwB,GAAG,gBAAgB;CAC3C,SAAS,gBAAgB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;AACjI,KAAI,MAAM,aAAa,GAAG,UAAU,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,IAAI;KACjH,MAAM,MAAM,GAAG;SACX,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;SACjG,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;SAC3C,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,CAAC;AACnE,SAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;MACvD;AACL,KAAI,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU;AAC1B,SAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;KACjF,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;KAC1E,OAAO,OAAO,KAAK,SAAS,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACjI;AACA,CAAA,IAAA,CAAA,gBAAwB,GAAG,gBAAgB;CAC3C,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC;AAC/C,CAAA,SAAS,UAAU,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE;KAChD,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,EAAE;AAC3C,KAAI,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI;KAC5B,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACjC,KAAI,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE;AACrC,SAAQ,GAAG,EAAE,EAAE,CAAC,QAAQ,EAAE;SAClB,GAAG,EAAE,EAAE;AACf,SAAQ,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,KAAK,YAAY,GAAG,SAAS,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACjI,MAAK,CAAC;AACN;AACA,CAAA,IAAA,CAAA,UAAkB,GAAG,UAAU;CAC/B,SAAS,aAAa,CAAC,GAAG,EAAE;KACxB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,GAAG;KACtC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACnC,KAAI,IAAI,EAAE,CAAC,SAAS,EAAE;SACd,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;SACvC,aAAa,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACxD,SAAQ,OAAO,QAAQ;AACvB;AACA,KAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;AACxB,KAAI,aAAa,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;AACpC,KAAI,OAAO,KAAK;AAChB,KAAI,SAAS,aAAa,CAAC,QAAQ,EAAE;SAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACvE,SAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK;aAC7B,GAAG,CAAC,SAAS,CAAC;AAC1B,iBAAgB,OAAO;iBACP,QAAQ,EAAE,CAAC;AAC3B,iBAAgB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;cAChC,EAAE,KAAK,CAAC;AACrB,aAAY,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC;AACvD,UAAS,CAAC;AACV;AACA;AACA,CAAA,IAAA,CAAA,aAAqB,GAAG,aAAa;CACrC,SAAS,aAAa,CAAC,GAAG,EAAE;KACxB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,GAAG;AAC5C;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9B,SAAQ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;KAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,iBAAiB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;KAChF,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW;SACnC;KACJ,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;KACrC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvC,KAAI,GAAG,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AAChD,SAAQ,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;AACrC,aAAY,OAAO;aACP,UAAU,EAAE,CAAC;aACb,aAAa,EAAE,IAAI;UACtB,EAAE,QAAQ,CAAC;SACZ,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;SAC7D,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC;AAChE;AACA;SACQ,IAAI,CAAC,MAAM;AACnB,aAAY,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7C,MAAK,CAAC,CAAC;AACP,KAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/D;AACA,CAAA,IAAA,CAAA,aAAqB,GAAG,aAAa;AACrC;;;;;;;;;ACjIA,CAAA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,CAA4B,OAAA,CAAA,oBAAA,GAAG,uBAAuB,GAAG,OAAA,CAAA,eAAuB,GAAG,OAAwB,CAAA,gBAAA,GAAG,MAAM;CACpH,MAAM,SAAS,GAAGD,cAAqB,EAAA;CACvC,MAAM,OAAO,GAAGC,YAAmB,EAAA;CACnC,MAAM,MAAM,GAAGG,WAAkC,EAAA;CACjD,MAAM,QAAQ,GAAGC,aAAoB,EAAA;AACrC,CAAA,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;AACpC,KAAI,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,GAAG;AAC1D,KAAI,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;KACrE,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC;AAC3D,KAAI,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,KAAK,KAAK;SAChC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC;KAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;KAC/B,GAAG,CAAC,SAAS,CAAC;SACV,MAAM,EAAE,WAAW;AAC3B,SAAQ,UAAU,EAAE,SAAS,CAAC,GAAG;AACjC,SAAQ,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;SAC/C,YAAY,EAAE,SAAS;SACvB,aAAa,EAAE,IAAI;MACtB,EAAE,KAAK,CAAC;AACb,KAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,CAAA,OAAA,CAAA,gBAAwB,GAAG,gBAAgB;AAC3C,CAAA,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE;AACnC,KAAI,IAAI,EAAE;AACV,KAAI,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,GAAG;AACjE,KAAI,iBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC;AAC9B,KAAI,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ;KAC3G,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC;KACtD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AAClC,KAAI,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC;KACtC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;KAC/D,SAAS,eAAe,GAAG;AAC/B,SAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE;AAClC,aAAY,WAAW,EAAE;aACb,IAAI,GAAG,CAAC,SAAS;iBACb,UAAU,CAAC,GAAG,CAAC;AAC/B,aAAY,UAAU,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;AACzC;cACa;aACD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,GAAG,aAAa,EAAE,GAAG,YAAY,EAAE;aAC7D,IAAI,GAAG,CAAC,SAAS;iBACb,UAAU,CAAC,GAAG,CAAC;aACnB,UAAU,CAAC,MAAM,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACpD;AACA;KACI,SAAS,aAAa,GAAG;SACrB,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;AAClD,SAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,WAAW,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3O,SAAQ,OAAO,QAAQ;AACvB;KACI,SAAS,YAAY,GAAG;AAC5B,SAAQ,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC;AACrE,SAAQ,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC;AACtC,SAAQ,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC;AAClC,SAAQ,OAAO,YAAY;AAC3B;KACI,SAAS,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE;AACzF,SAAQ,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI;AACzF,SAAQ,MAAM,UAAU,GAAG,EAAE,CAAC,SAAS,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC;AAClF,SAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,gBAAgB,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC;AAC5I;AACA,KAAI,SAAS,UAAU,CAAC,MAAM,EAAE;AAChC,SAAQ,IAAI,EAAE;AACd,SAAQ,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,MAAM,CAAC;AACnG;AACA;AACA,CAAA,OAAA,CAAA,eAAuB,GAAG,eAAe;CACzC,SAAS,UAAU,CAAC,GAAG,EAAE;KACrB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,GAAG;AACjC,KAAI,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAChH;AACA,CAAA,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;AAC5B,KAAI,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG;AACvB,KAAI,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM;SACpD;AACR,cAAa,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;cAC7I,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACzF,IAAI,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC;AACvC,MAAK,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;AACzB;AACA,CAAA,SAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;KAC3C,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM;AACtC,SAAQ,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AACvD;AACA,CAAA,SAAS,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;KACtC,IAAI,MAAM,KAAK,SAAS;SACpB,MAAM,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACjE,KAAI,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,MAAM,IAAI,UAAU,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;AAC7I;CACA,SAAS,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,GAAG,KAAK,EAAE;AACrE;AACA,KAAI,QAAQ,CAAC,UAAU,CAAC,MAAM;SACtB,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK;AACvC,eAAc,KAAK,CAAC,OAAO,CAAC,MAAM;AAClC,eAAc,EAAE,KAAK;AACrB,mBAAkB,MAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;AAC9E,mBAAkB,OAAO,MAAM,IAAI,EAAE,KAAK,cAAc,IAAI,OAAO,MAAM,IAAI,WAAW,CAAC,CAAC;AAC1F;AACA,CAAA,OAAA,CAAA,eAAuB,GAAG,eAAe;AACzC,CAAA,SAAS,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;AACnF;KACI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE;AAC/F,SAAQ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;AACnD;AACA,KAAI,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY;AACjC,KAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE;AAC5H,SAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,wCAAwC,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChG;AACA,KAAI,IAAI,GAAG,CAAC,cAAc,EAAE;SACpB,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACjD,IAAI,CAAC,KAAK,EAAE;AACpB,aAAY,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,4BAA4B,EAAE,aAAa,CAAC,GAAG,CAAC;iBAC5E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC;AAC1D,aAAY,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK;AAC7C,iBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AACtC;AACA,iBAAgB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC;AACpC;AACA;AACA;AACA,CAAA,OAAA,CAAA,oBAA4B,GAAG,oBAAoB;AACnD;;;;;;;;;;;AC1HA,CAAA,MAAM,CAAC,cAAc,CAAC,SAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAA,SAAA,CAAA,mBAA2B,GAAG,SAA2B,CAAA,mBAAA,GAAG,SAAoB,CAAA,YAAA,GAAG,MAAM;CACzF,MAAM,SAAS,GAAGL,cAAqB,EAAA;CACvC,MAAM,MAAM,GAAGC,WAAkB,EAAA;AACjC,CAAA,SAAS,YAAY,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE;KAChG,IAAI,OAAO,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;AACvD,SAAQ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;AAC/E;AACA,KAAI,IAAI,OAAO,KAAK,SAAS,EAAE;SACvB,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;SAC9B,OAAO,UAAU,KAAK;eAChB;iBACE,MAAM,EAAE,GAAG;iBACX,UAAU,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AACrG,iBAAgB,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/D;eACc;AACd,iBAAgB,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC;AACvC,iBAAgB,UAAU,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;iBAC9H,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;cAC5F;AACb;AACA,KAAI,IAAI,MAAM,KAAK,SAAS,EAAE;AAC9B,SAAQ,IAAI,UAAU,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;AACnG,aAAY,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC;AAC1G;AACA,SAAQ,OAAO;AACf,aAAY,MAAM;AAClB,aAAY,UAAU;AACtB,aAAY,YAAY;AACxB,aAAY,aAAa;UAChB;AACT;AACA,KAAI,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;AAClE;AACA,CAAA,SAAA,CAAA,YAAoB,GAAG,YAAY;AACnC,CAAA,SAAS,mBAAmB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;KAC3G,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE;AACtD,SAAQ,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AAC9E;AACA,KAAI,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AACtB,KAAI,IAAI,QAAQ,KAAK,SAAS,EAAE;SACxB,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE;AACnD,SAAQ,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;SAC5G,gBAAgB,CAAC,QAAQ,CAAC;AAClC,SAAQ,SAAS,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACnI,SAAQ,SAAS,CAAC,kBAAkB,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;SAC7D,SAAS,CAAC,WAAW,GAAG,CAAC,GAAG,WAAW,EAAE,SAAS,CAAC,kBAAkB,CAAC;AAC9E;AACA,KAAI,IAAI,IAAI,KAAK,SAAS,EAAE;SACpB,MAAM,QAAQ,GAAG,IAAI,YAAY,SAAS,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SACrF,gBAAgB,CAAC,QAAQ,CAAC;SAC1B,IAAI,YAAY,KAAK,SAAS;AACtC,aAAY,SAAS,CAAC,YAAY,GAAG,YAAY;AACjD;AACA;AACA,KAAI,IAAI,SAAS;AACjB,SAAQ,SAAS,CAAC,SAAS,GAAG,SAAS;AACvC,KAAI,SAAS,gBAAgB,CAAC,SAAS,EAAE;AACzC,SAAQ,SAAS,CAAC,IAAI,GAAG,SAAS;SAC1B,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,CAAC;AAC9C,SAAQ,SAAS,CAAC,SAAS,GAAG,EAAE;AAChC,SAAQ,EAAE,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE;AACxC,SAAQ,SAAS,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI;SAC9B,SAAS,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;AAC1D;AACA;AACA,CAAA,SAAA,CAAA,mBAA2B,GAAG,mBAAmB;AACjD,CAAA,SAAS,mBAAmB,CAAC,SAAS,EAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE;KAC/G,IAAI,aAAa,KAAK,SAAS;AACnC,SAAQ,SAAS,CAAC,aAAa,GAAG,aAAa;KAC3C,IAAI,YAAY,KAAK,SAAS;AAClC,SAAQ,SAAS,CAAC,YAAY,GAAG,YAAY;KACzC,IAAI,SAAS,KAAK,SAAS;AAC/B,SAAQ,SAAS,CAAC,SAAS,GAAG,SAAS;AACvC,KAAI,SAAS,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AAClD,KAAI,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;AACxC;AACA,CAAA,SAAA,CAAA,mBAA2B,GAAG,mBAAmB;AACjD;;;;;;;;;;;;;AC9EA;;;;AAIA,CAAA,aAAc,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;AACtC,GAAE,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI;;AAE1B,GAAE,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,QAAQ,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;KAC1D,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,EAAE,OAAO,KAAK;;AAErD,KAAI,IAAI,MAAM,EAAE,CAAC,EAAE,IAAI;AACvB,KAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC1B,OAAM,MAAM,GAAG,CAAC,CAAC,MAAM;OACjB,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK;OACpC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC;AAChC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;AAC5C,OAAM,OAAO,IAAI;AACjB;;;;KAII,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;KACjF,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE;KAC9E,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE;;AAEtF,KAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,KAAI,MAAM,GAAG,IAAI,CAAC,MAAM;AACxB,KAAI,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK;;KAElD,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC;AAC9B,OAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;;KAErE,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG;AACjC,OAAM,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEvB,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK;AAC9C;;AAEA,KAAI,OAAO,IAAI;AACf;;AAEA;AACA,GAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;EACtB;;;;;;;;;;;;CC3CD,IAAI,QAAQ,GAAGM,kBAAA,CAAA,OAAc,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;AAC5D;AACA,GAAE,IAAI,OAAO,IAAI,IAAI,UAAU,EAAE;KAC7B,EAAE,GAAG,IAAI;KACT,IAAI,GAAG,EAAE;AACb;;AAEA,GAAE,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE;AACpB,GAAE,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,UAAU,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,WAAW,EAAE;GAClE,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,WAAW,EAAE;;AAErC,GAAE,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC;EAC/C;;;CAGD,QAAQ,CAAC,QAAQ,GAAG;GAClB,eAAe,EAAE,IAAI;GACrB,KAAK,EAAE,IAAI;GACX,QAAQ,EAAE,IAAI;GACd,oBAAoB,EAAE,IAAI;GAC1B,aAAa,EAAE,IAAI;GACnB,GAAG,EAAE,IAAI;GACT,EAAE,EAAE,IAAI;GACR,IAAI,EAAE,IAAI;AACZ,GAAE,IAAI,EAAE;EACP;;CAED,QAAQ,CAAC,aAAa,GAAG;GACvB,KAAK,EAAE,IAAI;GACX,KAAK,EAAE,IAAI;GACX,KAAK,EAAE,IAAI;AACb,GAAE,KAAK,EAAE;EACR;;CAED,QAAQ,CAAC,aAAa,GAAG;GACvB,KAAK,EAAE,IAAI;GACX,WAAW,EAAE,IAAI;GACjB,UAAU,EAAE,IAAI;GAChB,iBAAiB,EAAE,IAAI;AACzB,GAAE,YAAY,EAAE;EACf;;CAED,QAAQ,CAAC,YAAY,GAAG;GACtB,OAAO,EAAE,IAAI;GACb,IAAI,EAAE,IAAI;GACV,KAAK,EAAE,IAAI;GACX,QAAQ,EAAE,IAAI;GACd,OAAO,EAAE,IAAI;GACb,OAAO,EAAE,IAAI;GACb,gBAAgB,EAAE,IAAI;GACtB,gBAAgB,EAAE,IAAI;GACtB,UAAU,EAAE,IAAI;GAChB,SAAS,EAAE,IAAI;GACf,SAAS,EAAE,IAAI;GACf,OAAO,EAAE,IAAI;GACb,MAAM,EAAE,IAAI;GACZ,QAAQ,EAAE,IAAI;GACd,QAAQ,EAAE,IAAI;GACd,WAAW,EAAE,IAAI;GACjB,aAAa,EAAE,IAAI;AACrB,GAAE,aAAa,EAAE;EAChB;;;CAGD,SAAS,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE;AACvH,GAAE,IAAI,MAAM,IAAI,OAAO,MAAM,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACrE,KAAI,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC;AAC1F,KAAI,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;AAC5B,OAAM,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAC3B,OAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC9B,SAAQ,IAAI,GAAG,IAAI,QAAQ,CAAC,aAAa,EAAE;AAC3C,WAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AACzC,aAAY,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;AAClH;AACA,QAAO,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,aAAa,EAAE;AAChD,SAAQ,IAAI,GAAG,IAAI,OAAO,GAAG,IAAI,QAAQ,EAAE;AAC3C,WAAU,KAAK,IAAI,IAAI,IAAI,GAAG;AAC9B,aAAY,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;AAC1I;QACO,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,IAAI,EAAE,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE;SACxF,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC;AAC9F;AACA;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC;AAC3F;AACA;;;CAGA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,GAAE,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;AACrD;;;;;;;;;AC3FA,CAAA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAA,OAAA,CAAA,aAAqB,GAAG,OAAA,CAAA,UAAkB,GAAG,OAAA,CAAA,WAAmB,GAAG,OAAA,CAAA,YAAoB,GAAG,OAAA,CAAA,WAAmB,GAAG,OAAA,CAAA,SAAiB,GAAG,MAAM;CAC1I,MAAM,MAAM,GAAGP,WAAiB,EAAA;CAChC,MAAM,KAAK,GAAGC,oBAA0B,EAAA;CACxC,MAAM,QAAQ,GAAGG,yBAA+B,EAAA;AAChD;AACA,CAAA,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;AAC/B,KAAI,MAAM;AACV,KAAI,QAAQ;AACZ,KAAI,SAAS;AACb,KAAI,WAAW;AACf,KAAI,WAAW;AACf,KAAI,eAAe;AACnB,KAAI,eAAe;AACnB,KAAI,UAAU;AACd,KAAI,UAAU;AACd,KAAI,SAAS;AACb,KAAI,SAAS;AACb,KAAI,aAAa;AACjB,KAAI,YAAY;AAChB,KAAI,UAAU;AACd,KAAI,MAAM;AACV,KAAI,OAAO;AACX,EAAC,CAAC;AACF,CAAA,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE;AACzC,KAAI,IAAI,OAAO,MAAM,IAAI,SAAS;AAClC,SAAQ,OAAO,IAAI;KACf,IAAI,KAAK,KAAK,IAAI;AACtB,SAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;KAC1B,IAAI,CAAC,KAAK;AACd,SAAQ,OAAO,KAAK;AACpB,KAAI,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK;AACrC;AACA,CAAA,OAAA,CAAA,SAAiB,GAAG,SAAS;AAC7B,CAAA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;AAC7B,KAAI,MAAM;AACV,KAAI,eAAe;AACnB,KAAI,kBAAkB;AACtB,KAAI,aAAa;AACjB,KAAI,gBAAgB;AACpB,EAAC,CAAC;CACF,SAAS,MAAM,CAAC,MAAM,EAAE;AACxB,KAAI,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AAC9B,SAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;AACjC,aAAY,OAAO,IAAI;AACvB,SAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAC/B,SAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAClD,aAAY,OAAO,IAAI;SACf,IAAI,OAAO,GAAG,IAAI,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC;AACjD,aAAY,OAAO,IAAI;AACvB;AACA,KAAI,OAAO,KAAK;AAChB;CACA,SAAS,SAAS,CAAC,MAAM,EAAE;KACvB,IAAI,KAAK,GAAG,CAAC;AACjB,KAAI,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;SACtB,IAAI,GAAG,KAAK,MAAM;AAC1B,aAAY,OAAO,QAAQ;AAC3B,SAAQ,KAAK,EAAE;AACf,SAAQ,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;aACvB;SACJ,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE;aAChC,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,KAAK,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACjF;SACQ,IAAI,KAAK,KAAK,QAAQ;AAC9B,aAAY,OAAO,QAAQ;AAC3B;AACA,KAAI,OAAO,KAAK;AAChB;CACA,SAAS,WAAW,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE;KAC/C,IAAI,SAAS,KAAK,KAAK;AAC3B,SAAQ,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;KACxB,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AAChC,KAAI,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC;AACA,CAAA,OAAA,CAAA,WAAmB,GAAG,WAAW;AACjC,CAAA,SAAS,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE;KAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;KACxC,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;AACzC;AACA,CAAA,OAAA,CAAA,YAAoB,GAAG,YAAY;CACnC,MAAM,mBAAmB,GAAG,OAAO;CACnC,SAAS,WAAW,CAAC,EAAE,EAAE;AACzB,KAAI,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,GAAG,EAAE;AACxD;AACA,CAAA,OAAA,CAAA,WAAmB,GAAG,WAAW;AACjC,CAAA,SAAS,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;AAC1C,KAAI,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;KACpB,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACvC;AACA,CAAA,OAAA,CAAA,UAAkB,GAAG,UAAU;CAC/B,MAAM,MAAM,GAAG,uBAAuB;AACtC,CAAA,SAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE;AACvC,KAAI,IAAI,OAAO,MAAM,IAAI,SAAS;AAClC,SAAQ,OAAO,EAAE;KACb,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI;KAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;AACzD,KAAI,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE;KAC7B,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC;KACzD,MAAM,SAAS,GAAG,EAAE;AACxB,KAAI,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE;AAChC,KAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,KAAK;SACpE,IAAI,aAAa,KAAK,SAAS;aAC3B;AACZ,SAAQ,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO;AAC7C,SAAQ,IAAI,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;AAChD,SAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ;AAC5C,aAAY,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;SAClD,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC;SACjC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC;AAChD,SAAQ,OAAO,CAAC,OAAO,CAAC,GAAG,WAAW;AACtC,SAAQ,SAAS,MAAM,CAAC,GAAG,EAAE;AAC7B;aACY,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO;AAC1D,aAAY,GAAG,GAAG,WAAW,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AAC7E,aAAY,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;AACnC,iBAAgB,MAAM,QAAQ,CAAC,GAAG,CAAC;AACnC,aAAY,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;aACnB,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACzC,aAAY,IAAI,OAAO,QAAQ,IAAI,QAAQ;AAC3C,iBAAgB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9C,aAAY,IAAI,OAAO,QAAQ,IAAI,QAAQ,EAAE;iBAC7B,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;AAC3D;AACA,kBAAiB,IAAI,GAAG,KAAK,WAAW,CAAC,QAAQ,CAAC,EAAE;AACpD,iBAAgB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;qBAChB,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;AAC9D,qBAAoB,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG;AACxC;sBACqB;AACrB,qBAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ;AAC7C;AACA;AACA,aAAY,OAAO,GAAG;AACtB;AACA,SAAQ,SAAS,SAAS,CAAC,MAAM,EAAE;AACnC,aAAY,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE;AAC3C,iBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;qBACpB,MAAM,IAAI,KAAK,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACjE,iBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C;AACA;AACA,MAAK,CAAC;AACN,KAAI,OAAO,SAAS;KAChB,SAAS,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;SACvC,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AACpD,aAAY,MAAM,QAAQ,CAAC,GAAG,CAAC;AAC/B;AACA,KAAI,SAAS,QAAQ,CAAC,GAAG,EAAE;SACnB,OAAO,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAC/E;AACA;AACA,CAAA,OAAA,CAAA,aAAqB,GAAG,aAAa;AACrC;;;;;;;;;ACzJA,CAAA,MAAM,CAAC,cAAc,CAAC,QAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAA,QAAA,CAAA,OAAe,GAAG,QAAkB,CAAA,UAAA,GAAG,QAA4B,CAAA,oBAAA,GAAG,MAAM;CAC5E,MAAM,YAAY,GAAGJ,iBAAuB,EAAA;CAC5C,MAAM,UAAU,GAAGC,eAAqB,EAAA;CACxC,MAAM,eAAe,GAAGG,oBAA0B,EAAA;CAClD,MAAM,UAAU,GAAGH,eAAqB,EAAA;CACxC,MAAM,UAAU,GAAGI,eAAqB,EAAA;CACxC,MAAM,SAAS,GAAGC,cAAoB,EAAA;CACtC,MAAM,WAAW,GAAGE,gBAAsB,EAAA;CAC1C,MAAM,SAAS,GAAGC,cAAqB,EAAA;CACvC,MAAM,OAAO,GAAGC,YAAmB,EAAA;CACnC,MAAM,SAAS,GAAGC,cAAqB,EAAA;CACvC,MAAM,MAAM,GAAGC,WAAkB,EAAA;CACjC,MAAM,QAAQ,GAAGC,aAAoB,EAAA;AACrC;CACA,SAAS,oBAAoB,CAAC,EAAE,EAAE;AAClC,KAAI,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE;SACjB,aAAa,CAAC,EAAE,CAAC;AACzB,SAAQ,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;aACvB,gBAAgB,CAAC,EAAE,CAAC;aACpB;AACZ;AACA;AACA,KAAI,gBAAgB,CAAC,EAAE,EAAE,MAAM,IAAI,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AAC1E;AACA,CAAA,QAAA,CAAA,oBAA4B,GAAG,oBAAoB;AACnD,CAAA,SAAS,gBAAgB,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;AAChF,KAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACvB,SAAQ,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM;aAClH,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrF,aAAY,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC;AAC3C,aAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,UAAS,CAAC;AACV;UACS;SACD,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChL;AACA;CACA,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACjC,KAAI,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9R;AACA,CAAA,SAAS,oBAAoB,CAAC,GAAG,EAAE,IAAI,EAAE;KACrC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;AACzC,SAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3H,SAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACvH,SAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACvI,SAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC3G,IAAI,IAAI,CAAC,UAAU;AAC3B,aAAY,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AACnI,MAAK,EAAE,MAAM;SACL,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAC5D,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;SACjE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AACjF,SAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;SACvD,IAAI,IAAI,CAAC,UAAU;aACf,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1E,MAAK,CAAC;AACN;CACA,SAAS,gBAAgB,CAAC,EAAE,EAAE;KAC1B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AACpC,KAAI,gBAAgB,CAAC,EAAE,EAAE,MAAM;AAC/B,SAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ;aAChC,cAAc,CAAC,EAAE,CAAC;SACtB,cAAc,CAAC,EAAE,CAAC;SAClB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;SACtC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;SAClC,IAAI,IAAI,CAAC,WAAW;aAChB,cAAc,CAAC,EAAE,CAAC;SACtB,eAAe,CAAC,EAAE,CAAC;SACnB,aAAa,CAAC,EAAE,CAAC;AACzB,MAAK,CAAC;KACF;AACJ;CACA,SAAS,cAAc,CAAC,EAAE,EAAE;AAC5B;AACA,KAAI,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;KAChC,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;KACnF,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;KACjJ,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACrJ;AACA,CAAA,SAAS,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE;AACrC,KAAI,MAAM,KAAK,GAAG,OAAO,MAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpE,KAAI,OAAO,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG;AAC1H;AACA;AACA,CAAA,SAAS,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE;AAClC,KAAI,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE;SACjB,aAAa,CAAC,EAAE,CAAC;AACzB,SAAQ,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;AACnC,aAAY,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC;aAC3B;AACZ;AACA;KACI,IAAI,YAAY,CAAC,iBAAiB,EAAE,EAAE,EAAE,KAAK,CAAC;AAClD;AACA,CAAA,SAAS,iBAAiB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;AAC7C,KAAI,IAAI,OAAO,MAAM,IAAI,SAAS;SAC1B,OAAO,CAAC,MAAM;AACtB,KAAI,KAAK,MAAM,GAAG,IAAI,MAAM;SACpB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/B,aAAY,OAAO,IAAI;AACvB,KAAI,OAAO,KAAK;AAChB;CACA,SAAS,WAAW,CAAC,EAAE,EAAE;AACzB,KAAI,OAAO,OAAO,EAAE,CAAC,MAAM,IAAI,SAAS;AACxC;AACA,CAAA,SAAS,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE;KACjC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;AACpC,KAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ;SAChC,cAAc,CAAC,EAAE,CAAC;KACtB,aAAa,CAAC,EAAE,CAAC;KACjB,gBAAgB,CAAC,EAAE,CAAC;AACxB,KAAI,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AAChE,KAAI,eAAe,CAAC,EAAE,EAAE,SAAS,CAAC;AAClC;KACI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACjF;CACA,SAAS,aAAa,CAAC,EAAE,EAAE;KACvB,IAAI,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC;KACjC,oBAAoB,CAAC,EAAE,CAAC;AAC5B;AACA,CAAA,SAAS,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE;AACxC,KAAI,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG;SACX,OAAO,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC;AACvD,KAAI,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,MAAM,CAAC;AAC3D,KAAI,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,sBAAsB,EAAE,EAAE,EAAE,KAAK,CAAC;KACtE,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;AACvD;CACA,SAAS,oBAAoB,CAAC,EAAE,EAAE;KAC9B,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;KAChD,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,MAAM,CAAC,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3G,SAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,0CAA0C,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AACvF;AACA;CACA,SAAS,cAAc,CAAC,EAAE,EAAE;AAC5B,KAAI,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE;AAC/B,KAAI,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE;SACvE,IAAI,MAAM,CAAC,eAAe,EAAE,EAAE,EAAE,uCAAuC,CAAC;AAChF;AACA;CACA,SAAS,aAAa,CAAC,EAAE,EAAE;AAC3B,KAAI,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7C,KAAI,IAAI,KAAK;SACL,EAAE,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;AACpF;CACA,SAAS,gBAAgB,CAAC,EAAE,EAAE;AAC9B,KAAI,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM;AAChD,SAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD;AACA,CAAA,SAAS,cAAc,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE;AACzE,KAAI,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ;AAC/B,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;SACxB,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/E;AACA,UAAS,IAAI,OAAO,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE;AACjD,SAAQ,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC;AACzE,SAAQ,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;AACxE,SAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrH;AACA;CACA,SAAS,aAAa,CAAC,EAAE,EAAE;AAC3B,KAAI,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,EAAE;AACtE,KAAI,IAAI,SAAS,CAAC,MAAM,EAAE;AAC1B;AACA,SAAQ,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClM;UACS;SACD,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;SAC9E,IAAI,IAAI,CAAC,WAAW;aAChB,eAAe,CAAC,EAAE,CAAC;SACvB,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtE;AACA;CACA,SAAS,eAAe,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;AAC3D,KAAI,IAAI,KAAK,YAAY,SAAS,CAAC,IAAI;AACvC,SAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;AAChE,KAAI,IAAI,KAAK,YAAY,SAAS,CAAC,IAAI;AACvC,SAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;AAChE;CACA,SAAS,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE;AAC1D,KAAI,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;AAC3D,KAAI,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;KACtB,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,MAAM,CAAC,oBAAoB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;SACjG,GAAG,CAAC,KAAK,CAAC,MAAM,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;SACpE;AACR;AACA,KAAI,IAAI,CAAC,IAAI,CAAC,GAAG;AACjB,SAAQ,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC;AACnC,KAAI,GAAG,CAAC,KAAK,CAAC,MAAM;AACpB,SAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK;aAC3B,aAAa,CAAC,KAAK,CAAC;AAChC,SAAQ,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;AACjC,MAAK,CAAC;AACN,KAAI,SAAS,aAAa,CAAC,KAAK,EAAE;AAClC,SAAQ,IAAI,CAAC,IAAI,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC;aACnD;AACZ,SAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;aACZ,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACvF,aAAY,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC;AACtC,aAAY,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE;iBAC7D,GAAG,CAAC,IAAI,EAAE;iBACV,IAAI,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;AACnD;aACY,GAAG,CAAC,KAAK,EAAE;AACvB;cACa;AACb,aAAY,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC;AACtC;AACA;SACQ,IAAI,CAAC,SAAS;aACV,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC;AACtF;AACA;AACA,CAAA,SAAS,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE;AACpC,KAAI,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,GAAG,EAAE;AACtD,KAAI,IAAI,WAAW;AACnB,SAAQ,IAAI,UAAU,CAAC,cAAc,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC;AACtD,KAAI,GAAG,CAAC,KAAK,CAAC,MAAM;AACpB,SAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,aAAY,IAAI,IAAI,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;AAClE,iBAAgB,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC;AAC1E;AACA;AACA,MAAK,CAAC;AACN;AACA,CAAA,SAAS,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE;AACrC,KAAI,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW;SACzC;AACR,KAAI,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC;AAChC,KAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe;AAChC,SAAQ,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC;AACrC,KAAI,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC;AACvC;AACA,CAAA,SAAS,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE;AACtC,KAAI,IAAI,CAAC,KAAK,CAAC,MAAM;SACb;AACR,KAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE;AAC9B,SAAQ,EAAE,CAAC,SAAS,GAAG,KAAK;SACpB;AACR;AACA,KAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;SACjB,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE;aAChC,gBAAgB,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,0BAA0B,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClG;AACA,MAAK,CAAC;AACN,KAAI,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC;AAChC;AACA,CAAA,SAAS,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE;KAChC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;AACpE,SAAQ,gBAAgB,CAAC,EAAE,EAAE,iDAAiD,CAAC;AAC/E;AACA;AACA,CAAA,SAAS,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE;KAC/B,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;AACnC,KAAI,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE;AACjC,SAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;AACnC,SAAQ,IAAI,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC5F,aAAY,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU;aAChC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;iBAC5D,gBAAgB,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACjG;AACA;AACA;AACA;AACA,CAAA,SAAS,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE;AACxC,KAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACnF;AACA,CAAA,SAAS,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE;AAC7B,KAAI,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACvE;AACA,CAAA,SAAS,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE;KACtC,MAAM,EAAE,GAAG,EAAE;AACjB,KAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE;AAClC,SAAQ,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC;AACtC,aAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;cACT,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ;AAChE,aAAY,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B;AACA,KAAI,EAAE,CAAC,SAAS,GAAG,EAAE;AACrB;AACA,CAAA,SAAS,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE;KAC/B,MAAM,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,aAAa;KACzD,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC;AAC9C,KAAI,IAAI,MAAM,CAAC,eAAe,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;AAC7D;AACA,CAAA,MAAM,UAAU,CAAC;AACjB,KAAI,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;AAClC,SAAQ,IAAI,SAAS,CAAC,oBAAoB,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC;AAC7D,SAAQ,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;AACzB,SAAQ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS;AACrC,SAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,SAAQ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI;SACnB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;SAChC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK;SAC3E,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;AAC3F,SAAQ,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;AACxC,SAAQ,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,MAAM;AACrC,SAAQ,IAAI,CAAC,MAAM,GAAG,EAAE;AACxB,SAAQ,IAAI,CAAC,EAAE,GAAG,EAAE;AACpB,SAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB,SAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;aACZ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC9E;cACa;AACb,aAAY,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW;aAClC,IAAI,CAAC,IAAI,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE;iBAClF,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7F;AACA;AACA,SAAQ,IAAI,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE;AACpE,aAAY,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1E;AACA;AACA,KAAI,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE;AACjD,SAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC;AACjF;AACA,KAAI,UAAU,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE;AACrD,SAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;AAC9B,SAAQ,IAAI,UAAU;AACtB,aAAY,UAAU,EAAE;AACxB;aACY,IAAI,CAAC,KAAK,EAAE;SAChB,IAAI,aAAa,EAAE;AAC3B,aAAY,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AAC3B,aAAY,aAAa,EAAE;aACf,IAAI,IAAI,CAAC,SAAS;AAC9B,iBAAgB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAChC;cACa;aACD,IAAI,IAAI,CAAC,SAAS;AAC9B,iBAAgB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAChC;AACA,iBAAgB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AAC/B;AACA;AACA,KAAI,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;AAChC,SAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC;AAC7E;KACI,IAAI,CAAC,SAAS,EAAE;AACpB,SAAQ,IAAI,SAAS,KAAK,SAAS,EAAE;aACzB,IAAI,CAAC,KAAK,EAAE;AACxB,aAAY,IAAI,CAAC,IAAI,CAAC,SAAS;iBACf,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;aACvB;AACZ;AACA,SAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;SACtB,IAAI,CAAC,KAAK,EAAE;SACZ,IAAI,IAAI,CAAC,SAAS;AAC1B,aAAY,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAC5B;AACA,aAAY,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AAC3B;KACI,SAAS,CAAC,SAAS,EAAE;AACzB,SAAQ,IAAI,CAAC,IAAI,CAAC,KAAK;AACvB,aAAY,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACvC,SAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI;AACnC,SAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,mBAAmB,EAAE,IAAI,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3H;AACA,KAAI,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE;SACnC,IAAI,WAAW,EAAE;AACzB,aAAY,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AACvC,aAAY,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;AAC3C,aAAY,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;aAClB;AACZ;AACA,SAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;AACvC;AACA,KAAI,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE;SAEvB,CAAC,MAAM,GAAG,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC;AACrG;AACA,KAAI,UAAU,GAAG;AACjB,SAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,QAAQ,CAAC,iBAAiB,CAAC;AAC1F;AACA,KAAI,KAAK,GAAG;AACZ,SAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;AACxC,aAAY,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;AACtE,SAAQ,IAAI,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;AAChE;KACI,EAAE,CAAC,IAAI,EAAE;AACb,SAAQ,IAAI,CAAC,IAAI,CAAC,SAAS;AAC3B,aAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;AAC7B;AACA,KAAI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE;AAC3B,SAAQ,IAAI,MAAM;aACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;AAC3C;AACA,aAAY,IAAI,CAAC,MAAM,GAAG,GAAG;AAC7B;KACI,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE;AAC7D,SAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;AAC7B,aAAY,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC;AAC9C,aAAY,SAAS,EAAE;AACvB,UAAS,CAAC;AACV;AACA,KAAI,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE;AAClE,SAAQ,IAAI,CAAC,IAAI,CAAC,KAAK;aACX;SACJ,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI;SACjD,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;AAC7F,SAAQ,IAAI,KAAK,KAAK,SAAS,CAAC,GAAG;AACnC,aAAY,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;SAC3B,IAAI,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE;aACzC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;aAC/B,IAAI,CAAC,UAAU,EAAE;AAC7B,aAAY,IAAI,KAAK,KAAK,SAAS,CAAC,GAAG;AACvC,iBAAgB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;AACxC;SACQ,GAAG,CAAC,IAAI,EAAE;AAClB;AACA,KAAI,YAAY,GAAG;AACnB,SAAQ,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI;AAC7D,SAAQ,OAAO,IAAI,SAAS,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,kBAAkB,EAAE,CAAC;SAChE,SAAS,cAAc,GAAG;AAClC,aAAY,IAAI,UAAU,CAAC,MAAM,EAAE;AACnC;AACA,iBAAgB,IAAI,EAAE,UAAU,YAAY,SAAS,CAAC,IAAI,CAAC;AAC3D,qBAAoB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;AAC/D,iBAAgB,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC;AAChF,iBAAgB,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,UAAU,CAAC,cAAc,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7I;aACY,OAAO,SAAS,CAAC,GAAG;AAChC;SACQ,SAAS,kBAAkB,GAAG;AACtC,aAAY,IAAI,GAAG,CAAC,cAAc,EAAE;AACpC,iBAAgB,MAAM,iBAAiB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;AACvG,iBAAgB,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9E;aACY,OAAO,SAAS,CAAC,GAAG;AAChC;AACA;AACA,KAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3B,SAAQ,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AACtE,SAAQ,IAAI,WAAW,CAAC,mBAAmB,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;SAC9D,IAAI,WAAW,CAAC,mBAAmB,EAAE,SAAS,EAAE,IAAI,CAAC;AAC7D,SAAQ,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;AAC5F,SAAQ,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC;AACzC,SAAQ,OAAO,WAAW;AAC1B;AACA,KAAI,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE;AACtC,SAAQ,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;AAChC,SAAQ,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW;aACpB;AACZ,SAAQ,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE;aACpD,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1F;AACA,SAAQ,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE;aACpD,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1F;AACA;AACA,KAAI,mBAAmB,CAAC,SAAS,EAAE,KAAK,EAAE;AAC1C,SAAQ,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;AAChC,SAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE;AAC7E,aAAY,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/E,aAAY,OAAO,IAAI;AACvB;AACA;AACA;AACA,CAAA,QAAA,CAAA,UAAkB,GAAG,UAAU;CAC/B,SAAS,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;KAC7C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC;AAChD,KAAI,IAAI,MAAM,IAAI,GAAG,EAAE;AACvB,SAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC/B;UACS,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE;SAChC,IAAI,SAAS,CAAC,eAAe,EAAE,GAAG,EAAE,GAAG,CAAC;AAChD;AACA,UAAS,IAAI,OAAO,IAAI,GAAG,EAAE;SACrB,IAAI,SAAS,CAAC,gBAAgB,EAAE,GAAG,EAAE,GAAG,CAAC;AACjD;UACS,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE;SAClC,IAAI,SAAS,CAAC,eAAe,EAAE,GAAG,EAAE,GAAG,CAAC;AAChD;AACA;CACA,MAAM,YAAY,GAAG,qBAAqB;CAC1C,MAAM,qBAAqB,GAAG,kCAAkC;CAChE,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;AAC/D,KAAI,IAAI,WAAW;AACnB,KAAI,IAAI,IAAI;KACR,IAAI,KAAK,KAAK,EAAE;AACpB,SAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ;AACvC,KAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC1B,SAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;aACzB,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC;SACrD,WAAW,GAAG,KAAK;AAC3B,SAAQ,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ;AACvC;UACS;SACD,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;SACjD,IAAI,CAAC,OAAO;aACR,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7D,SAAQ,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,SAAQ,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;AAChC,SAAQ,IAAI,WAAW,KAAK,GAAG,EAAE;aACrB,IAAI,EAAE,IAAI,SAAS;iBACf,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AAC/D,aAAY,OAAO,WAAW,CAAC,SAAS,GAAG,EAAE,CAAC;AAC9C;SACQ,IAAI,EAAE,GAAG,SAAS;aACd,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjD,SAAQ,IAAI,GAAG,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;SAChC,IAAI,CAAC,WAAW;AACxB,aAAY,OAAO,IAAI;AACvB;KACI,IAAI,IAAI,GAAG,IAAI;KACf,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AAC3C,KAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;SAC5B,IAAI,OAAO,EAAE;AACrB,aAAY,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACpH,aAAY,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxD;AACA;AACA,KAAI,OAAO,IAAI;AACf,KAAI,SAAS,QAAQ,CAAC,WAAW,EAAE,EAAE,EAAE;AACvC,SAAQ,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,CAAC;AAC5F;AACA;AACA,CAAA,QAAA,CAAA,OAAe,GAAG,OAAO;AACzB;;;;;;;;;;ECtgBA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;EAC7D,MAAM,KAAK,GAAG,UAAc;EAC5B,MAAM,SAAS,GAAGZ,cAAmC,EAAA;EACrD,MAAM,MAAM,GAAGG,aAAwC,EAAA;EACvD,MAAM,UAAU,GAAGC,eAAoC,EAAA;EACvD,MAAM,QAAQ,GAAGC,aAAkC,EAAA;EACnD,MAAM,OAAO,GAAGE,YAAiC,EAAA;EACjD,MAAM,OAAO,GAAG,cAAc;EAC9B,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrC,EAAA,MAAM,uBAAuB,GAAG;MAC5B,QAAQ,EAAE,iBAAiB;MAC3B,YAAY,EAAE,UAAU;MACxB,iBAAiB,EAAE,UAAU;GAChC;EACD,MAAM,aAAa,GAAG,aAAa;EACnC,MAAM,qBAAqB,GAAG,gBAAgB;EAC9C,MAAM,SAAS,GAAG,0BAA0B;EAC5C,SAAS,YAAY,CAAC,OAAO,EAAE;AAC/B,MAAI,OAAO;AACX,UAAQ,OAAO;AACf,UAAQ,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;UAChC,IAAI,EAAE,IAAI;UACV,IAAI,CAAC,GAAG,EAAE;AAClB,cAAY,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,GAAG;AAC9D,cAAY,IAAI,EAAE,CAAC,YAAY,KAAK,KAAK;kBACzB;cACJ,MAAM,GAAG,GAAG,MAAM;AAC9B,cAAY,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,SAAS,CAAC;AAChG,cAAY,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM;AAClE,kBAAgB,IAAI,OAAO,GAAG,IAAI,QAAQ,EAAE;sBACxB,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC;AAC/E,sBAAoB,IAAI,SAAS;0BACT,oBAAoB,CAAC,SAAS,CAAC;AACvD,sBAAoB,IAAI,aAAa;0BACb,wBAAwB,CAAC,aAAa,CAAC;AAC/D,sBAAoB,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC9D;AACA,kBAAgB,MAAM,UAAU,GAAG,OAAO,GAAG,IAAI,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACvE,kBAAgB,IAAI,UAAU;sBACV,gBAAgB,CAAC,UAAU,CAAC;AAChD,kBAAgB,IAAI,CAAC,OAAO,CAAC,UAAU;AACvC,sBAAoB,gBAAgB,EAAE;AACtC,eAAa,CAAC;cACF,SAAS,iBAAiB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;kBAC9C,MAAM,MAAM,GAAG,EAAE;kBACjB,IAAI,UAAU,EAAE;AAChC,sBAAoB,MAAM,CAAC,KAAK,GAAG,EAAE;AACrC,sBAAoB,KAAK,MAAM,CAAC,IAAI,UAAU;AAC9C,0BAAwB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;AAC5C;kBACgB,IAAI,KAAK,EAAE;AAC3B,sBAAoB,MAAM,CAAC,KAAK,GAAG,EAAE;AACrC,sBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;AACzD,0BAAwB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;AAC5C;AACA,kBAAgB,OAAO,MAAM;AAC7B;AACA,cAAY,SAAS,mBAAmB,CAAC,QAAQ,EAAE;AACnD,kBAAgB,IAAI,UAAU;AAC9B,kBAAgB,IAAI,MAAM;AAC1B,kBAAgB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;AAC1C,sBAAoB,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,OAAO;0BACnC;AACxB,sBAAoB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC9C,sBAAoB,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE;AACnD,0BAAwB,UAAU,KAAK,UAAU,GAAG,EAAE,CAAC;0BAC/B,MAAM,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC3D,0BAAwB,KAAK,MAAM,CAAC,IAAI,MAAM;AAC9C,8BAA4B,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE;AAC1C;2BACyB;AACzB,0BAAwB,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC;AAC/C,0BAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE;AACtC;AACA;AACA,kBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;AAC3C;AACA,cAAY,SAAS,oBAAoB,CAAC,SAAS,EAAE;AACrD,kBAAgB,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACjF,kBAAgB,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC7F,kBAAgB,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACrN,kBAAgB,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO;kBAC/B,IAAI,WAAW,EAAE;AACjC,sBAAoB,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpE,sBAAoB,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9E,sBAAoB,UAAU,CAAC,CAAC,GAAG,KAAK;AACxC,0BAAwB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,WAAW,IAAI,QAAQ,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;0BAC9G,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;0BACpD,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACtG,uBAAqB,CAAC;sBACF,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;AACvG;uBACqB;sBACD,UAAU,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;AAClE,0BAAwB,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC;AAChD,0BAAwB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACtE,uBAAqB,CAAC,CAAC;AACvB;AACA,kBAAgB,SAAS,UAAU,CAAC,IAAI,EAAE;AAC1C,sBAAoB,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpH;AACA,kBAAgB,SAAS,UAAU,CAAC,GAAG,EAAE;AACzC,sBAAoB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7G;AACA;AACA,cAAY,SAAS,wBAAwB,CAAC,aAAa,EAAE;AAC7D,kBAAgB,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;kBACrE,MAAM,aAAa,GAAG,EAAE;AACxC,kBAAgB,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE;sBAC3B,aAAa,CAAC,IAAI,CAAC;AACvC,0BAAwB,CAAC;0BACD,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACrE,uBAAqB,CAAC;AACtB;AACA,kBAAgB,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC;kBACtE,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE;sBACxC,GAAG,EAAE,uBAAuB;AAChD,sBAAoB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,uBAAuB,CAAC;AAClE,mBAAiB,CAAC;kBACF,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;kBACzC,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC;kBAC9C,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM;sBAC7F,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;AACrF,sBAAoB,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;sBAC3F,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACvI,mBAAiB,CAAC,CAAC;AACnB,kBAAgB,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,KAAK;sBAC/F,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACtF,sBAAoB,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM;AACnE,0BAAwB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1H,0BAAwB,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;8BACtB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACvG,8BAA4B,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AACvE,2BAAyB,CAAC;AAC1B,uBAAqB,CAAC;AACtB,mBAAiB,CAAC,CAAC;AACnB;AACA,cAAY,SAAS,kBAAkB,CAAC,WAAW,EAAE;AACrD,kBAAgB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,WAAW;AACpD,kBAAgB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;sBAChB;AACpB,kBAAgB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;AAClE,kBAAgB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;kBAC9C,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;AACrD,kBAAgB,IAAI,QAAQ;AAC5B,kBAAgB,IAAI,SAAS;kBACb,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;AACtD,kBAAgB,IAAI,KAAK,IAAI,KAAK,EAAE;AACpC,sBAAoB,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;AACpD,sBAAoB,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;AACjC,sBAAoB,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AACxC,0BAAwB,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACjD,0BAAwB,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/D,uBAAqB,EAAE,MAAM;AAC7B,0BAAwB,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;AACtD,0BAAwB,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;AACpE,uBAAqB,CAAC;AACtB,sBAAoB,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvD;uBACqB,IAAI,KAAK,EAAE;AAChC,sBAAoB,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;AACjC,sBAAoB,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;sBACzB,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAChD;uBACqB,IAAI,KAAK,EAAE;AAChC,sBAAoB,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,sBAAoB,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;sBAC9B,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACrD;AACA,kBAAgB,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAClN,kBAAgB,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM;AACzG,sBAAoB,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;AAC9C,0BAAwB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/H,0BAAwB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACxE,uBAAqB,CAAC;AACtB,sBAAoB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,0CAA0C,CAAC,CAAC;AAClM,mBAAiB,CAAC,CAAC;kBACH,GAAG,CAAC,KAAK,EAAE;AAC3B,kBAAgB,SAAS,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;AAC9C,sBAAoB,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACpE,sBAAoB,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3E;AACA;AACA,cAAY,SAAS,gBAAgB,CAAC,UAAU,EAAE;AAClD,kBAAgB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9D,kBAAgB,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;kBACrK,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;AACjF,sBAAoB,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC;AACrD,sBAAoB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AACvD,mBAAiB,CAAC,CAAC;AACnB;cACY,SAAS,gBAAgB,GAAG;AACxC,kBAAgB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;kBAC9C,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrJ,kBAAgB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAClH;AACA,cAAY,SAAS,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE;AACrD,kBAAgB,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAClM;AACA,kBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACnK;cACY,SAAS,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE;kBACnD,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,sBAAsB,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM;sBAC1J,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE;0BACzC,GAAG,EAAE,oBAAoB;0BACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC;AAC5E,uBAAqB,CAAC;sBACF,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,oBAAoB,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;sBACvH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,2CAA2C,CAAC,CAAC;sBACjH,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/G,mBAAiB,CAAC;AAClB;AACA,cAAY,SAAS,aAAa,CAAC,GAAG,EAAE;kBACxB,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,sBAAsB,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AACtb;AACA,cAAY,SAAS,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE;kBAClC,MAAM,aAAa,GAAG,EAAE;AACxC,kBAAgB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;AACtC,sBAAoB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACvC,sBAAoB,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/C,0BAAwB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE;AACA,kBAAgB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;AACnD;AACA,cAAY,SAAS,YAAY,CAAC,GAAG,EAAE;AACvC,kBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5C,sBAAoB,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;kBAC/B,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG;uBAC3C,OAAO,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,mBAAmB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;AACzH,uBAAqB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC5C;AACA,cAAY,SAAS,YAAY,CAAC,GAAG,EAAE;AACvC,kBAAgB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE;WACS;AACT,UAAQ,UAAU,EAAE;AACpB,cAAY,KAAK,EAAE;AACnB,kBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;kBAClB;sBACI,IAAI,EAAE,QAAQ;AAClC,sBAAoB,UAAU,EAAE;AAChC,0BAAwB,UAAU,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE;AACjE,0BAAwB,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE;AAC7D,0BAAwB,QAAQ,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE;AACjE,0BAAwB,YAAY,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE;uBAChD;AACrB,sBAAoB,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;mBAC3C;eACJ;AACb,cAAY,KAAK,EAAE;AACnB,kBAAgB,SAAS,EAAE;sBACP,IAAI,EAAE,QAAQ;AAClC,sBAAoB,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;mBAC3C;AACjB,kBAAgB,WAAW,EAAE;AAC7B,sBAAoB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;mBAC7D;AACjB,kBAAgB,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;eAC3D;WACJ;OACJ;AACL;EACA,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,EAAE,KAAK;AACzC,MAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS;AAC3B,UAAQ,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;AACxE,MAAI,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACnC,UAAQ,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC;AACnF;MACI,OAAO,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;GAC/C;AACD,EAAA,OAAA,CAAA,OAAA,GAAkB,SAAS;AAC3B,EAAA,MAAA,CAAA,OAAA,GAAiB,SAAS;AAC1B,EAAA,MAAA,CAAA,OAAA,CAAA,OAAA,GAAyB,SAAS;AAClC;;;;;;;;AClR2K,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACM,YAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAIC,UAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,yBAAyB,EAAEC,sBAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAACC,YAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,yBAAyB,EAAE,KAAK,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;ACgCjiC,SAAS,0BAA0B,MAAgD,EAAA;AAExF,EAAM,MAAA,SAAA,GAAY,gBAAgB,MAAM,CAAA;AAExC,EAAA,SAAA,CAAU,YAAe,GAAA,wBAAA;AAEzB,EAAW,KAAA,MAAA,CAAC,GAAK,EAAA,QAAQ,CAAK,IAAA,MAAA,CAAO,QAAS,SAAU,CAAA,UAAA,IAAc,EAA0B,CAAG,EAAA;AACjG,IAAA,IAAI,UAAU,QAAU,EAAA,QAAA,CAAS,GAAG,CAAK,IAAA,QAAA,CAAS,SAAS,QAAU,EAAA;AACnE,MAAS,QAAA,CAAA,SAAA,GAAY,SAAS,SAAa,IAAA,CAAA;AAC3C,MAAS,QAAA,CAAA,YAAA,GAAe,SAAS,YAAgB,IAAA;AAAA,QAC/C,SAAW,EAAA;AAAA,OACb;AAAA;AAEF,IAAI,IAAA,QAAA,CAAS,SAAS,QAAU,EAAA;AAC9B,MAAS,QAAA,CAAA,YAAA,GAAe,SAAS,YAAgB,IAAA;AAAA,QAC/C,IAAM,EAAA;AAAA,OACR;AAAA;AACF;AAGF,EAAO,OAAA,SAAA;AACT;AAEgB,SAAA,oBAAA,CAAqB,EAAE,KAAA,EAAoC,EAAA;AACzE,EAAM,MAAA,UAAA,GAAalB,cAAM,CAAA,OAAA,CAAQ,MAAM;AACrC,IAAO,OAAA,yBAAA,CAA0B,MAAM,MAAM,CAAA;AAAA,GAC5C,EAAA,CAAC,KAAM,CAAA,MAAM,CAAC,CAAA;AAEjB,EAAA,MAAM,EAAE,MAAS,GAAA,EAAI,EAAA,aAAA,EAAe,OAAU,GAAA,KAAA;AAE9C,EAAA,MAAM,UAAU,KAAU,KAAA,OAAA;AAC1B,EAAA,MAAM,eAAe,KAAU,KAAA,YAAA;AAC/B,EAAA,MAAM,cAAc,KAAU,KAAA,WAAA;AAE9B,EAAM,MAAA,aAAA,GAAgB,MAAO,CAAA,OAAA,CAAQ,aAAa,CAAA,CAAE,MAAO,CAAA,CAAC,GAAK,EAAA,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AAChF,IAAA,IAAI,OAAO,KAAU,KAAA,QAAA,IAAY,KAAM,CAAA,IAAA,OAAW,EAAI,EAAA;AACpD,MAAO,OAAA,GAAA;AAAA;AAET,IAAA,GAAA,CAAI,GAAG,CAAI,GAAA,KAAA;AAEX,IAAO,OAAA,GAAA;AAAA,GACT,EAAG,EAAkB,CAAA;AAErB,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA,EAAW,EAAE,MAAO;AAAA,MAClB,OAAsB,CAAA;AAAA,IACxB,aAAA;AAAA,IACA,QAAA,EAAUmB,EAAY,UAAY,EAAA;AAAA,MAChC,gBAAkB,EAAA;AAAA,KACnB;AAAA,GACF,CAAA;AAED,EAAM,MAAA,QAAA,GAAW,CAAC,CAAwC,KAAA;AACxD,IAAA,CAAA,CAAE,cAAe,EAAA;AACjB,IAAA,IAAI,MAAM,QAAU,EAAA;AAClB,MAAA,KAAK,YAAa,CAAA,KAAA,CAAM,QAAQ,CAAA,CAAE,CAAC,CAAA;AAAA;AAGrC,IAAO,OAAA,KAAA;AAAA,GACT;AAEA,EAAA,MAAM,UAAa,GAAA,MAAA,CAAO,GAAI,CAAA,CAAC,KAAU,KAAA;AACvC,IAAA,MAAM,EAAE,IAAM,EAAA,QAAA,EAAU,MAAQ,EAAA,WAAA,EAAa,IAAO,GAAA,KAAA;AACpD,IAAM,MAAA,SAAA,GAAY,GAAG,WAAY,CAAA,KAAA,IAAS,IAAI,CAAG,EAAA,QAAA,GAAW,MAAM,EAAE,CAAA,CAAA;AACpE,IAAA,MAAM,cAAc,WAAY,CAAA,WAAA;AAChC,IAAM,MAAA,KAAA,GAAQ,OAAO,IAAI,CAAA;AAEzB,IAAA,MAAM,eAAe,KAAO,EAAA,OAAA;AAE5B,IAAA,IAAI,eAAmC,GAAA,WAAA,GAAc,MAAO,CAAA,WAAW,CAAI,GAAA,IAAA;AAE3E,IAAA,IAAI,KAAO,EAAA;AAET,MAAkB,eAAA,GAAA,WAAA,+EAEb,WAAY,EAAA,KAAA,+CAAI,MAAK,EAAA,EAAA,SAAA,EAAU,QAAU,EAAA,EAAA,YAAa,CACzD,CAAA;AAAA;AAAA,QAGA;AAAA,OAAA;AAAA;AAIJ,IAAM,MAAA,SAAA,GAAY,IAAI,IAAQ,IAAA,MAAA;AAC9B,IAAA,MAAM,eAAkB,GAAA;AAAA,MACtB,aAAA,EAAe,SAAc,KAAA,QAAA,GAAW,IAAO,GAAA;AAAA,KACjD;AAEA,IAAA,uBACGnB,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,GAAK,EAAA,IAAA,EAAM,SAAU,EAAA,0BAAA,EAAA,kBACvBA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAM,OAAS,EAAA,IAAA,EAAA,EAAO,SAAU,CAAA,EAChC,cAAc,YACb,mBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,IAAA;AAAA,QACA,MAAQ,EAAA,CAAC,EAAE,KAAA,EACT,qBAAAA,cAAA,CAAA,aAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM,KAAM,CAAA,KAAA,IAAS,OAAO,KAAA,CAAM,KAAU,KAAA,QAAA,GAAW,IAAI,IAAA,CAAK,KAAM,CAAA,KAAK,CAAI,GAAA,MAAA;AAAA,YAC/E,OAAA,EAAS,CAAC,IAAS,KAAA;AACjB,cAAA,IAAI,IAAM,EAAA;AACR,gBAAM,KAAA,CAAA,QAAA,CAAS,IAAK,CAAA,WAAA,EAAa,CAAA;AAAA,eAC5B,MAAA;AACL,gBAAA,KAAA,CAAM,SAAS,MAAS,CAAA;AAAA;AAC1B,aACF;AAAA,YACA,SAAA,EAAW,GAAG,iBAAmB,EAAA,EAAE,kBAAkB,CAAC,CAAC,OAAO;AAAA;AAAA;AAChE;AAAA,KAEJ,GACE,cAAc,UAChB,mBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,UAAU,CAAC,OAAA;AAAA,QACX,IAAM,EAAA,CAAA;AAAA,QACN,SAAW,EAAA,GAAA;AAAA,QACX,SAAA,EAAW,GAAG,iBAAmB,EAAA,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAA;AAAA,QAC7D,GAAG,QAAS,CAAA,IAAA,EAAM,eAAe,CAAA;AAAA,QAClC,cAAA,EAAc,CAAC,CAAC,KAAA;AAAA,QAChB,eAAe,EAAA;AAAA;AAAA,KACjB,GACE,cAAc,QAChB,mBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,IAAA;AAAA,QACA,MAAQ,EAAA,CAAC,EAAE,KAAA,EACT,qBAAAA,cAAA,CAAA,aAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,OACE,EAAA,WAAA,CAAY,KAAO,EAAA,GAAA,CAAI,CAAC,MAAY,MAAA;AAAA,cAClC,OAAO,MAAO,CAAA,KAAA;AAAA,cACd,OAAO,MAAO,CAAA;AAAA,aAChB,CAAE,KAAK,EAAC;AAAA,YAEV,SAAA,EAAW,GAAG,iBAAmB,EAAA,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAA;AAAA,YAC9D,OAAO,KAAM,CAAA,KAAA;AAAA,YACb,QAAU,EAAA,CAAC,KAAU,KAAA,KAAA,CAAM,SAAS,KAAK;AAAA;AAAA;AAC3C;AAAA,KAIJ,mBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAM,EAAA,SAAA;AAAA,QACN,UAAU,CAAC,OAAA;AAAA,QACX,WAAW,EAAG,CAAA,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAA;AAAA,QAC1C,GAAG,QAAS,CAAA,IAAA,EAAM,eAAe,CAAA;AAAA,QAClC,cAAA,EAAc,CAAC,CAAC,KAAA;AAAA,QAChB,eAAe,EAAA;AAAA;AAAA,OAGlB,eACC,oBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,yDAA2D,EAAA;AAAA,UACvE,8BAAA,EAAgC,CAAC,CAAC;AAAA,SACnC;AAAA,OAAA;AAAA,MAEA,KAAA,iDAAU,OAAQ,EAAA,EAAA,MAAA,EAAO,QAAO,IAAM,EAAA,EAAA,EAAI,WAAU,wCAAyC,EAAA,CAAA;AAAA,sBAC9FA,cAAA,CAAA,aAAA,CAAC,cAAM,eAAgB;AAAA,KAG7B,CAAA;AAAA,GAEH,CAAA;AAED,EAAA,uBACGA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,UAAA,EAAA,+CACZ,MAAK,EAAA,EAAA,SAAA,EAAU,+BAAgC,EAAA,QAAA,EAAA,EAC7C,UACD,kBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,0BACZA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,IAAK,EAAA,QAAA,EAAS,OAAQ,EAAA,MAAA,EAAO,QAAU,EAAA,CAAC,SAAS,SAAU,EAAA,kBAAA,EAAA,EAChE,OAAW,IAAA,QAAA,EACX,gBAAgB,eAChB,EAAA,WAAA,IAAe,WAClB,CACF,CACF,CACF,CAAA;AAEJ;;AC/MO,SAAS,kBAAmB,CAAA,EAAE,KAAO,EAAA,MAAA,EAA6C,EAAA;AACvF,EAAO,OAAA,IAAA;AACT;;ACOO,SAAS,iBAAkB,CAAA,EAAE,KAAO,EAAA,aAAA,EAAe,OAAiC,EAAA;AACzF,EAAA,IAAI,CAAC,KAAM,CAAA,IAAA,IAAQ,MAAM,IAAK,CAAA,IAAA,OAAW,EAAI,EAAA;AAC3C,IAAA,uBACGA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,aAAA,EAAA,kBACZA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,WAAA,EAAA,kBACZA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,WAAA,EAAA,kBACZA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,2BAAA,EAA4B,CAC3C,kBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,4BAA6B,EAAA,CAAA,kBAC3CA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,2BAAA,EAA4B,CAC7C,CACF,CACF,CAAA;AAAA;AAIJ,EAAM,MAAA,EAAE,MAAS,GAAA,KAAA;AAEjB,EAAA,oDACG,KAAI,EAAA,EAAA,SAAA,EAAU,4BACZA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,WAAU,2CACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA;AAAA,QACP,OAAS,EAAA;AAAA,OACX;AAAA,MACA,aAAA;AAAA,MACA,aAAa,KAAU,KAAA;AAAA;AAAA,GAE3B,CACF,CAAA;AAEJ;;AC7BO,SAAS,WAAY,CAAA,EAAE,KAAO,EAAA,aAAA,EAAe,OAA2B,EAAA;AAC7E,EAAA,QAAQ,MAAM,IAAM;AAAA,IAClB,KAAK,eAAA;AACH,MAAA,uBAAQA,cAAA,CAAA,aAAA,CAAA,iBAAA,EAAA,EAAkB,KAAc,EAAA,aAAA,EAA8B,KAAc,EAAA,CAAA;AAAA,IACtF,KAAK,gBAAA;AACH,MAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,sBAAmB,KAAc,EAAA,CAAA;AAAA,IAC3C,KAAK,mBAAA;AACH,MAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,wBAAqB,KAAc,EAAA,CAAA;AAAA,IAC7C;AACE,MAAO,OAAA,IAAA;AAAA;AAEb;;ACZO,MAAM,oBAAoB,CAAC,EAAE,OAAO,EAAG,EAAA,GAAuB,EAA2B,MAAA;AAAA,EAC9F,IAAI,QAAS,EAAA;AAAA,EACb,IAAM,EAAA,eAAA;AAAA,EACN;AACF,CAAA,CAAA;AAEO,MAAM,uBAAuB,CAAC;AAAA,EACnC,QAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAM6B,MAAA;AAAA,EAC3B,IAAI,QAAS,EAAA;AAAA,EACb,IAAM,EAAA,mBAAA;AAAA,EACN,KAAO,EAAA,OAAA;AAAA,EACP,QAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,CAAA;AAEO,MAAM,qBAAqB,OAA2B;AAAA,EAC3D,IAAI,QAAS,EAAA;AAAA,EACb,IAAM,EAAA;AACR,CAAA,CAAA;AAEa,MAAA,mBAAA,GAAsB,CAAC,KAAmD,KAAA;AACrF,EAAA,OAAO,MAAM,IAAS,KAAA,eAAA;AACxB,CAAA;AAEa,MAAA,sBAAA,GAAyB,CAAC,KAAsD,KAAA;AAC3F,EAAA,OAAO,MAAM,IAAS,KAAA,mBAAA;AACxB,CAAA;;AC9BA,MAAM,YAAA,GAAe,WAA6C,CAAC,EAAE,UAAU,GAAG,KAAA,IAAS,GAAQ,KAAA;AACjG,EAAA,MAAM,aAAgB,GAAA,IAAA;AAAA,IAAK,MACzB,OAAO,uBAAuB,CAAE,CAAA,IAAA,CAAK,CAAC,MAAW,KAAA;AAC/C,MAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,MAAA,OAAO,EAAE,OAAA,EAAS,KAAM,CAAA,QAAQ,CAAE,EAAA;AAAA,KACnC;AAAA,GACH;AAEA,EACE,uBAAAA,cAAA,CAAA,aAAA,CAAC,QAAS,EAAA,EAAA,QAAA,kBAAYA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,CAAA,EAAA,+CACnB,aAAe,EAAA,EAAA,GAAG,KAAO,EAAA,GAAA,EAAU,CACtC,CAAA;AAEJ,CAAC,CAAA;AAED,YAAA,CAAa,WAAc,GAAA,cAAA;AAOd,MAAA,YAAA,GAAe,KAAK,YAAY,CAAA;;ACtC7C,MAAMoB,cAAA,GAAe,OAAO,MAAM,CAAA;AAOlC,MAAM,eAAkD,GAAA,CAAC,EAAE,eAAA,EAAiB,eAAoB,KAAA;AAC9F,EAAI,IAAA,CAAC,eAAgB,CAAA,MAAA,EAAe,OAAA,IAAA;AAEpC,EACE,uBAAApB,cAAA,CAAA,aAAA;AAAA,IAAC,MAAO,CAAA,GAAA;AAAA,IAAP;AAAA,MACC,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,EAAG,EAAA;AAAA,MAC7B,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,MAC5B,IAAM,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,GAAI,EAAA;AAAA,MAC3B,SAAU,EAAA;AAAA,KAAA;AAAA,oBAEVA,cAAA,CAAA,aAAA,CAAC,SAAI,SAAU,EAAA,qEAAA,EAAA,EACZ,gBAAgB,GAAI,CAAA,CAAC,QAAQ,KAAU,KAAA;AACtC,MAAA,MAAM,cAAc,MAAM;AACxB,QAAA,aAAA,CAAc,MAAM,CAAA;AAAA,OACtB;AAEA,MAAA,MAAM,SACJ,GAAA,iWAAA;AAGF,MAAM,MAAA,GAAA,GAAM,GAAG,MAAO,CAAA,KAAK,IAAI,KAAK,CAAA,CAAA,CAAG,OAAQ,CAAA,MAAA,EAAQ,GAAG,CAAA;AAE1D,MAAA,QAAQ,OAAO,IAAM;AAAA,QACnB,KAAK,OAAA;AACH,UACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,YAAC,MAAO,CAAA,CAAA;AAAA,YAAP;AAAA,cACC,GAAA;AAAA,cACA,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,GAAI,EAAA;AAAA,cAC9B,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,cAC5B,UAAY,EAAA,EAAE,KAAO,EAAA,KAAA,GAAQ,GAAI,EAAA;AAAA,cACjC,IAAA,EAAM,CAAU,OAAA,EAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,cAC5B,MAAO,EAAA,QAAA;AAAA,cACP,GAAI,EAAA,qBAAA;AAAA,cACJ,SAAA;AAAA,cACA,OAAA,EAAS,MAAM,WAAY;AAAA,aAAA;AAAA,YAE1B,OAAO,IAAQ,oBAAAA,cAAA,CAAA,aAAA,CAAC,YAAa,EAAA,EAAA,QAAA,EAAU,OAAO,IAAM,EAAA,CAAA;AAAA,4BACpDA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,WAAA,EAAA,EAAa,OAAO,KAAM,CAAA;AAAA,4BAC1CA,cAAA,CAAA,aAAA,CAAC,YAAa,EAAA,EAAA,QAAA,EAAS,gBAAiB,EAAA;AAAA,WAC1C;AAAA,QAEJ,KAAK,MAAA;AACH,UACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,YAAC,MAAO,CAAA,CAAA;AAAA,YAAP;AAAA,cACC,GAAA;AAAA,cACA,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,GAAI,EAAA;AAAA,cAC9B,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,cAC5B,UAAY,EAAA,EAAE,KAAO,EAAA,KAAA,GAAQ,GAAI,EAAA;AAAA,cACjC,MAAM,MAAO,CAAA,KAAA;AAAA,cACb,MAAO,EAAA,QAAA;AAAA,cACP,GAAI,EAAA,qBAAA;AAAA,cACJ,SAAA;AAAA,cACA,OAAA,EAAS,MAAM,WAAY;AAAA,aAAA;AAAA,YAE1B,OAAO,IAAQ,oBAAAA,cAAA,CAAA,aAAA,CAAC,YAAa,EAAA,EAAA,QAAA,EAAU,OAAO,IAAM,EAAA,CAAA;AAAA,4BACpDA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,WAAA,EAAA,EAAa,OAAO,KAAM,CAAA;AAAA,4BAC1CA,cAAA,CAAA,aAAA,CAAC,YAAa,EAAA,EAAA,QAAA,EAAS,gBAAiB,EAAA;AAAA,WAC1C;AAAA,QAEJ,KAAK,OAAA;AACH,UACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,YAAC,MAAO,CAAA,CAAA;AAAA,YAAP;AAAA,cACC,GAAA;AAAA,cACA,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,GAAI,EAAA;AAAA,cAC9B,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,cAC5B,UAAY,EAAA,EAAE,KAAO,EAAA,KAAA,GAAQ,GAAI,EAAA;AAAA,cACjC,IAAA,EAAM,CAAO,IAAA,EAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,cACzB,MAAO,EAAA,QAAA;AAAA,cACP,GAAI,EAAA,qBAAA;AAAA,cACJ,SAAA;AAAA,cACA,OAAA,EAAS,MAAM,WAAY;AAAA,aAAA;AAAA,YAE1B,OAAO,IAAQ,oBAAAA,cAAA,CAAA,aAAA,CAAC,YAAa,EAAA,EAAA,QAAA,EAAU,OAAO,IAAM,EAAA,CAAA;AAAA,4BACpDA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,WAAA,EAAA,EAAa,OAAO,KAAM,CAAA;AAAA,4BAC1CA,cAAA,CAAA,aAAA,CAAC,YAAa,EAAA,EAAA,QAAA,EAAS,gBAAiB,EAAA;AAAA,WAC1C;AAAA,QAEJ;AACE,UACE,uBAAAA,cAAA,CAAA,aAAA,CAAC,YAAS,GACR,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,YAACoB,cAAA;AAAA,YAAA;AAAA,cACC,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,GAAI,EAAA;AAAA,cAC9B,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,cAC5B,UAAY,EAAA,EAAE,KAAO,EAAA,KAAA,GAAQ,GAAI,EAAA;AAAA,cACjC,SAAU,EAAA,mKAAA;AAAA,cACV,OAAQ,EAAA,OAAA;AAAA,cACR,OAAA,EAAS,MAAM,WAAY;AAAA,aAAA;AAAA,4BAE3BpB,cAAA,CAAA,aAAA,CAAC,YAAa,EAAA,EAAA,QAAA,EAAS,kBAAmB,EAAA,CAAA;AAAA,4BACzCA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,WAAA,EAAA,EAAa,OAAO,KAAM,CAAA;AAAA,4BAC1CA,cAAA,CAAA,aAAA,CAAC,YAAa,EAAA,EAAA,QAAA,EAAS,gBAAiB,EAAA;AAAA,WAE5C,CAAA;AAAA;AAEN,KACD,CACH;AAAA,GACF;AAEJ,CAAA;;AC3FY,IAAA,UAAA,qBAAAqB,WAAL,KAAA;AACL,EAAAA,YAAA,WAAY,CAAA,GAAA,YAAA;AACZ,EAAAA,YAAA,SAAU,CAAA,GAAA,UAAA;AACV,EAAAA,YAAA,WAAY,CAAA,GAAA,YAAA;AACZ,EAAAA,YAAA,aAAc,CAAA,GAAA,cAAA;AAJJ,EAAAA,OAAAA,WAAAA;AAAA,CAAA,EAAA,UAAA,IAAA,EAAA,CAAA;AAwQA,IAAA,kBAAA,qBAAAC,mBAAL,KAAA;AACL,EAAAA,oBAAA,MAAO,CAAA,GAAA,MAAA;AACP,EAAAA,oBAAA,OAAQ,CAAA,GAAA,OAAA;AACR,EAAAA,oBAAA,OAAQ,CAAA,GAAA,OAAA;AACR,EAAAA,oBAAA,UAAW,CAAA,GAAA,UAAA;AACX,EAAAA,oBAAA,UAAW,CAAA,GAAA,UAAA;AALD,EAAAA,OAAAA,mBAAAA;AAAA,CAAA,EAAA,kBAAA,IAAA,EAAA,CAAA;;AC3RC,MAAA,gBAAA,GAAmB,CAAC,MAAmB,KAAA;AAElD,EAAA,MAAM,aAQF,GAAA;AAAA,IACF,CAAC,UAAW,CAAA,SAAS,GAAG;AAAA,MACtB,MAAM,kBAAmB,CAAA,KAAA;AAAA,MACzB,IAAM,EAAA,OAAA;AAAA,MACN,UAAU,CAAC,CAAA,KAAM,EAAE,MAAQ,EAAA,OAAA,EAAS,eAAe,CAAE,CAAA,EAAA;AAAA,MACrD,UAAU,CAAC,CAAA,KAAM,EAAE,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAE,CAAA;AAAA,KACjD;AAAA,IACA,CAAC,UAAW,CAAA,SAAS,GAAG;AAAA,MACtB,MAAM,kBAAmB,CAAA,KAAA;AAAA,MACzB,IAAM,EAAA,gBAAA;AAAA,MACN,UAAU,CAAC,CAAA,KAAM,EAAE,MAAQ,EAAA,OAAA,EAAS,MAAM,CAAE,CAAA,EAAA;AAAA,MAC5C,UAAU,CAAC,CAAA,KAAM,EAAE,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAE,CAAA;AAAA,KACjD;AAAA,IACA,CAAC,UAAW,CAAA,OAAO,GAAG;AAAA,MACpB,MAAM,kBAAmB,CAAA,IAAA;AAAA,MACzB,IAAM,EAAA,MAAA;AAAA,MACN,UAAU,CAAC,CAAA,KAAM,EAAE,MAAQ,EAAA,OAAA,EAAS,OAAO,CAAE,CAAA,EAAA;AAAA,MAC7C,UAAU,CAAC,CAAA,KAAM,EAAE,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAE,CAAA;AAAA;AACjD,GACF;AAGA,EAAA,MAAM,OAAU,GAAA,aAAA,CAAc,MAAO,CAAA,IAAI,CAAK,IAAA;AAAA,IAC5C,MAAM,kBAAmB,CAAA,IAAA;AAAA,IACzB,IAAM,EAAA,MAAA;AAAA,IACN,UAAU,CAAC,CAAA,KAAM,EAAE,MAAQ,EAAA,OAAA,EAAS,OAAO,CAAE,CAAA,EAAA;AAAA,IAC7C,UAAU,CAAC,CAAA,KAAM,EAAE,MAAQ,EAAA,OAAA,EAAS,SAAS,CAAE,CAAA;AAAA,GACjD;AAEA,EAAO,OAAA,OAAA;AACT,CAAA;;ACxBA,MAAM,gBAA8C,CAAC;AAAA,EACnD,OAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAM,KAAA;AACJ,EAAM,MAAA,UAAA,GAAa,OAAW,IAAA,OAAA,CAAQ,MAAS,GAAA,CAAA;AAC/C,EAAA,MAAM,kBAAqB,GAAA,eAAA,IAAmB,YAAgB,IAAA,eAAA,CAAgB,MAAS,GAAA,CAAA;AAEvF,EAAA,MAAM,CAAC,iBAAiB,CAAI,GAAA,QAAA,CAAS,cAAc,kBAAkB,CAAA;AAErE,EAAA,IAAI,CAAC,iBAAmB,EAAA;AACtB,IAAO,OAAA,IAAA;AAAA;AAIT,EAAA,IAAI,gBAAkC,EAAC;AAEvC,EAAA,IAAI,UAAY,EAAA;AACd,IAAgB,aAAA,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,MAAW,KAAA;AACtC,MAAM,MAAA,OAAA,GAAU,iBAAiB,MAAM,CAAA;AAEvC,MAAO,OAAA;AAAA,QACL,IAAI,MAAO,CAAA,EAAA;AAAA,QACX,KAAA,EAAO,OAAQ,CAAA,QAAA,CAAS,MAAM,CAAA;AAAA,QAC9B,MAAM,OAAQ,CAAA,IAAA;AAAA,QACd,MAAM,OAAQ,CAAA,IAAA;AAAA,QACd,KAAA,EAAO,OAAQ,CAAA,QAAA,CAAS,MAAM;AAAA,OAChC;AAAA,KACD,CAAA;AAAA;AAKH,EAAA,IAAI,kBAAoB,EAAA;AAGtB,IAAA,MAAM,0BAA0B,eAAgB,CAAA,MAAA;AAAA,MAC9C,CAAC,MAAW,KAAA,CAAC,aAAc,CAAA,IAAA,CAAK,CAAC,YAAiB,KAAA,YAAA,CAAa,IAAS,KAAA,MAAA,CAAO,IAAI;AAAA,KACrF;AACA,IAAgB,aAAA,GAAA,aAAA,CAAc,OAAO,uBAAuB,CAAA;AAAA;AAG9D,EACE,uBAAAtB,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,KACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,eAAiB,EAAA,aAAA;AAAA,MACjB,aAAA,EAAe,CAAC,MAA2B,KAAA;AACzC,QAAA,IAAI,MAAQ,EAAA;AACV,UAAoB,iBAAA,GAAA;AAAA,YAClB,MAAA;AAAA,YACA,eAAe,aAAiB,IAAA,EAAA;AAAA,YAChC,KAAO,EAAA,QAAA;AAAA,YACP;AAAA,WACD,CAAA;AAAA;AACH;AACF;AAAA,GAEJ,CAAA;AAEJ,CAAA;;AC1EO,MAAM,cAAiB,GAAA;AAAA,EAC5B,WAAa,EAAA,qBAAA;AAAA,EACb,SAAW,EAAA,mBAAA;AAAA,EACX,iBAAmB,EAAA,6BAAA;AAAA,EACnB,YAAc,EAAA,sBAAA;AAAA,EACd,mBAAqB,EAAA,6BAAA;AAAA,EACrB,kBAAoB,EAAA,+BAAA;AAAA,EACpB,uBAAyB,EAAA,iCAAA;AAAA,EACzB,eAAiB,EAAA,0BAAA;AAAA,EACjB,gBAAkB,EAAA,yBAAA;AAAA,EAClB,iBAAmB,EAAA,2BAAA;AAAA,EACnB,mBAAqB,EAAA,6BAAA;AAAA,EACrB,iBAAmB,EAAA,2BAAA;AAAA,EACnB,iBAAmB,EAAA,2BAAA;AAAA;AAAA,EAEnB,iBAAmB,EAAA,+BAAA;AAAA,EACnB,aAAe,EAAA,uBAAA;AAAA,EACf,kBAAoB,EAAA;AACtB,CAAA;AA8JO,MAAM,UAAa,GAAA,CAAC,EAAE,OAAA,EAAkD,MAAA;AAAA,EAC7E,MAAM,cAAe,CAAA,WAAA;AAAA,EACrB,OAAA,EAAS,EAAE,OAAQ;AACrB,CAAA,CAAA;AAEO,MAAM,WAAW,OAAiB;AAAA,EACvC,MAAM,cAAe,CAAA;AACvB,CAAA,CAAA;AAEO,MAAM,eAAkB,GAAA,CAAC,EAAE,EAAA,EAAI,OAA8D,MAAA;AAAA,EAClG,MAAM,cAAe,CAAA,iBAAA;AAAA,EACrB,OAAA,EAAS,EAAE,EAAA,EAAI,KAAM;AACvB,CAAA,CAAA;AAEO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,aAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAIyB,MAAA;AAAA,EACvB,MAAM,cAAe,CAAA,kBAAA;AAAA,EACrB,OAAS,EAAA;AAAA,IACP,aAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,iBAAoB,GAAA,CAAC,EAAE,IAAA,EAAM,OAAkE,MAAA;AAAA,EAC1G,MAAM,cAAe,CAAA,mBAAA;AAAA,EACrB,OAAS,EAAA;AAAA,IACP,IAAA;AAAA,IACA;AAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,cAAiB,GAAA,CAAC,EAAE,KAAA,EAAO,OAAgE,MAAA;AAAA,EACtG,MAAM,cAAe,CAAA,gBAAA;AAAA,EACrB,OAAS,EAAA;AAAA,IACP,KAAA;AAAA,IACA;AAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,eAAkB,GAAA,CAAC,EAAE,QAAA,EAAU,OAA8E,MAAA;AAAA,EACxH,MAAM,cAAe,CAAA,iBAAA;AAAA,EACrB,OAAS,EAAA;AAAA,IACP,QAAA;AAAA,IACA;AAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,oBAAoB,CAAC,EAAE,KAAM,EAAA,GAAwB,EAA2B,MAAA;AAAA,EAC3F,MAAM,cAAe,CAAA,mBAAA;AAAA,EACrB,OAAS,EAAA;AAAA,IACP;AAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,oBAAuB,GAAA,CAAC,EAAE,SAAA,EAAW,OAA4E,MAAA;AAAA,EAC5H,MAAM,cAAe,CAAA,uBAAA;AAAA,EACrB,OAAS,EAAA;AAAA,IACP,SAAA;AAAA,IACA;AAAA;AAEJ,CAAA,CAAA;AAUO,MAAM,iBAAiB,CAAC,EAAE,KAAM,EAAA,GAAwB,EAAwB,MAAA;AAAA,EACrF,MAAM,cAAe,CAAA,eAAA;AAAA,EACrB,OAAS,EAAA;AAAA,IACP;AAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,eAAkB,GAAA,CAAC,EAAE,eAAA,EAAiB,OAA2E,MAAA;AAAA,EAC5H,MAAM,cAAe,CAAA,iBAAA;AAAA,EACrB,OAAS,EAAA;AAAA,IACP,eAAA;AAAA,IACA;AAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,eAAe,CAAC,EAAE,KAAM,EAAA,GAAwB,EAAsB,MAAA;AAAA,EACjF,MAAM,cAAe,CAAA,aAAA;AAAA,EACrB,OAAS,EAAA;AAAA,IACP;AAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,kBAAkB,CAAC,EAAE,KAAM,EAAA,GAAwB,EAAyB,MAAA;AAAA,EACvF,MAAM,cAAe,CAAA,iBAAA;AAAA,EACrB,OAAS,EAAA;AAAA,IACP;AAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,cAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAQwB,MAAA;AAAA,EACtB,MAAM,cAAe,CAAA,iBAAA;AAAA,EACrB,OAAS,EAAA;AAAA,IACP,cAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,cAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAcyB,MAAA;AAAA,EACvB,MAAM,cAAe,CAAA,kBAAA;AAAA,EACrB,OAAS,EAAA;AAAA,IACP,cAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA;AAEJ,CAAA,CAAA;AAEA,MAAM,eAAA,GAAkB,CAAC,KAAA,EAAgC,KAAmB,KAAA;AAC1E,EAAO,OAAA,KAAA,CAAM,EAAG,CAAA,KAAA,IAAS,EAAE,CAAA;AAC7B,CAAA;AAEA,MAAM,gBAAA,GAAmB,CAAC,MAAmB,KAAA;AAC3C,EAAO,OAAA,MAAA,CAAO,MAAO,CAAA,EAAA,CAAG,EAAE,CAAA;AAC5B,CAAA;AAEA,MAAM,eAAyB,EAAC;AAEhC,MAAM,OAAA,GAAoD,CAAC,KAAA,EAAO,MAAW,KAAA;AAC3E,EAAA,QAAQ,OAAO,IAAM;AAAA;AAAA,IAEnB,KAAK,eAAe,WAAa,EAAA;AAC/B,MAAA,KAAA,CAAM,MAAS,GAAA,CAAA;AAEf,MAAA,KAAA,CAAM,IAAK,CAAA,GAAG,MAAO,CAAA,OAAA,CAAQ,OAAO,CAAA;AAEpC,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,SAAW,EAAA;AAC7B,MAAA,KAAA,CAAM,MAAS,GAAA,CAAA;AAEf,MAAA;AAAA;AACF;AAAA,IAGA,KAAK,eAAe,iBAAmB,EAAA;AACrC,MAAA,KAAA,CAAM,IAAK,CAAA;AAAA,QACT,EAAA,EAAI,aAAa,QAAS,EAAA;AAAA,QAC1B,KAAO,EAAA,yBAAA;AAAA,QACP,QAAA,EAAU,OAAO,OAAQ,CAAA,KAAA;AAAA,QACzB,MAAA,EAAQ,CAAC,iBAAA,EAAmB,CAAA;AAAA,QAC5B,WAAa,EAAA;AAAA,OACd,CAAA;AAED,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,kBAAoB,EAAA;AACtC,MAAA,MAAM,MAAS,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC1D,MAAA,IAAI,MAAQ,EAAA;AACV,QAAO,MAAA,CAAA,aAAA,GAAgB,OAAO,OAAQ,CAAA,aAAA;AACtC,QAAO,MAAA,CAAA,aAAA,GAAgB,OAAO,OAAQ,CAAA,OAAA;AACtC,QAAA,MAAA,CAAO,KAAQ,GAAA,iBAAA;AAAA;AAGjB,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,mBAAqB,EAAA;AACvC,MAAA,MAAM,MAAS,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC1D,MAAM,MAAA,KAAA,GAAQ,MAAU,IAAA,gBAAA,CAAiB,MAAM,CAAA;AAE/C,MAAA,IAAI,UAAU,CAAC,MAAA,CAAO,eAAe,KAAS,IAAA,mBAAA,CAAoB,KAAK,CAAG,EAAA;AACxE,QAAA,MAAA,CAAO,KAAQ,GAAA,WAAA;AACf,QAAM,KAAA,CAAA,IAAA,IAAQ,OAAO,OAAQ,CAAA,IAAA;AAAA;AAG/B,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,gBAAkB,EAAA;AACpC,MAAA,MAAM,SAAS,eAAgB,CAAA,KAAA,EAAO,MAAO,CAAA,OAAA,CAAQ,SAAS,EAAE,CAAA;AAChE,MAAM,MAAA,KAAA,GAAQ,MAAU,IAAA,gBAAA,CAAiB,MAAM,CAAA;AAC/C,MAAI,IAAA,KAAA,IAAS,mBAAoB,CAAA,KAAK,CAAG,EAAA;AACvC,QAAM,KAAA,CAAA,IAAA,IAAQ,OAAO,OAAQ,CAAA,KAAA;AAAA;AAG/B,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,YAAc,EAAA;AAChC,MAAA,MAAM,MAAS,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC1D,MAAA,IAAI,MAAQ,EAAA;AAEV,QAAA,MAAA,CAAO,MAAO,CAAA,IAAA,CAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAA;AAAA;AAGzC,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,eAAiB,EAAA;AACnC,MAAA,MAAM,MAAS,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC1D,MAAA,IAAI,MAAQ,EAAA;AACV,QAAI,IAAA,MAAA,CAAO,UAAU,WAAa,EAAA;AAChC,UAAA,MAAA,CAAO,KAAQ,GAAA,WAAA;AAAA;AACjB;AAGF,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,iBAAmB,EAAA;AACrC,MAAA,MAAM,MAAS,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC1D,MAAM,MAAA,KAAA,GAAQ,MAAU,IAAA,gBAAA,CAAiB,MAAM,CAAA;AAC/C,MAAA,IAAI,MAAU,IAAA,KAAA,IAAS,mBAAoB,CAAA,KAAK,CAAG,EAAA;AACjD,QAAA,MAAA,CAAO,WAAc,GAAA,IAAA;AACrB,QAAM,KAAA,CAAA,IAAA,GAAO,OAAO,OAAQ,CAAA,eAAA;AAAA;AAG9B,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,iBAAmB,EAAA;AACrC,MAAA,MAAM,MAAS,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC1D,MAAA,IAAI,MAAQ,EAAA;AACV,QAAO,MAAA,CAAA,QAAA,GAAW,OAAO,OAAQ,CAAA,QAAA;AAAA;AAGnC,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,mBAAqB,EAAA;AACvC,MAAA,MAAM,MAAS,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC1D,MAAA,IAAI,MAAQ,EAAA;AACV,QAAA,OAAO,MAAO,CAAA,QAAA;AAAA;AAGhB,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,iBAAmB,EAAA;AACrC,MAAA,MAAM,MAAS,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC1D,MAAA,IAAI,MAAQ,EAAA;AACV,QAAA,MAAA,CAAO,KAAQ,GAAA,uBAAA;AACf,QAAO,MAAA,CAAA,cAAA,GAAiB,OAAO,OAAQ,CAAA,cAAA;AACvC,QAAA,MAAA,CAAO,MAAO,CAAA,IAAA;AAAA;AAAA,UAEZ,oBAAqB,CAAA;AAAA,YACnB,QAAA,EAAU,OAAO,OAAQ,CAAA,QAAA;AAAA,YACzB,MAAA,EAAQ,OAAO,OAAQ,CAAA,MAAA;AAAA,YACvB,aAAA,EAAe,OAAO,OAAQ,CAAA,aAAA;AAAA,YAC9B,QAAA,EAAU,OAAO,OAAQ,CAAA,QAAA;AAAA,YACzB,MAAA,EAAQ,OAAO,OAAQ,CAAA;AAAA,WACxB;AAAA,SACH;AAAA;AAGF,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,kBAAoB,EAAA;AACtC,MAAA,MAAM,MAAS,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC1D,MAAA,IAAI,MAAQ,EAAA;AACV,QAAO,MAAA,CAAA,cAAA,GAAiB,OAAO,OAAQ,CAAA,cAAA;AAEvC,QAAA,MAAA,CAAO,UAAU,MAAO,CAAA,OAAA,CAAQ,OAAQ,CAAA,GAAA,CAAI,CAACuB,OAAY,MAAA;AAAA,UACvD,GAAGA,OAAAA;AAAA,UACH,MAAMA,OAAO,CAAA;AAAA,SACb,CAAA,CAAA;AACF,QAAO,MAAA,CAAA,MAAA,CAAO,IAAK,CAAA,kBAAA,EAAoB,CAAA;AAAA;AAGzC,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,aAAe,EAAA;AACjC,MAAA,MAAM,MAAS,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC1D,MAAA,MAAM,UAAa,GAAA,MAAA,EAAQ,MAAO,CAAA,SAAA,CAAU,sBAAsB,CAAA;AAElE,MAAA,IAAI,UAAU,UAAY,EAAA;AAExB,QAAA,MAAA,CAAO,KAAQ,GAAA,iBAAA;AACf,QAAA,MAAA,CAAO,MAAO,CAAA,MAAA,CAAO,UAAY,EAAA,CAAA,EAAG,mBAAmB,CAAA;AAAA;AAGzD,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,uBAAyB,EAAA;AAC3C,MAAA,MAAM,MAAS,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC1D,MAAA,IAAI,MAAQ,EAAA;AACV,QAAO,MAAA,CAAA,iBAAA,GAAoB,OAAO,OAAQ,CAAA,SAAA;AAAA;AAG5C,MAAA;AAAA;AACF,IAEA,KAAK,eAAe,iBAAmB,EAAA;AACrC,MAAA,MAAM,MAAS,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AAC1D,MAAM,MAAA,KAAA,GAAQ,MAAU,IAAA,gBAAA,CAAiB,MAAM,CAAA;AAC/C,MAAI,IAAA,KAAA,IAAS,mBAAoB,CAAA,KAAK,CAAG,EAAA;AACvC,QAAA,KAAA,CAAM,IAAQ,IAAA,oBAAA;AAAA;AAGhB,MAAA,IAAI,MAAQ,EAAA;AACV,QAAA,MAAA,CAAO,KAAQ,GAAA,WAAA;AAAA;AAGjB,MAAA;AAAA;AACF,IAEA,SAAS;AACP,MAAA,MAAM,IAAI,KAAA,CAAM,CAA8C,0CAAA,EAAA,MAAA,CAA4B,IAAI,CAAG,CAAA,CAAA,CAAA;AAAA;AACnG;AAEJ,CAAA;AAEO,MAAM,gBAAgB,MAAM;AACjC,EAAO,OAAA,eAAA,CAAgB,SAAS,YAAY,CAAA;AAC9C,CAAA;;ACliBA,MAAM,kBAAqB,GAAA,cAAA;AAEd,MAAA,iBAAA,GAAoB,CAAC,UAAwB,KAAA;AACxD,EAAM,MAAA,cAAA,GAAiB,eAAe,kBAAkB,CAAA;AAOxD,EAAA,MAAM,CAAC,eAAiB,EAAA,kBAAkB,CAAI,GAAA,QAAA,CAAS,kBAAkB,MAAS,CAAA;AAElF,EAAA,MAAM,iBAAoB,GAAA,WAAA;AAAA,IACxB,CAAC,EAAe,KAAA;AACd,MAAA,MAAM,GAAM,GAAA,IAAI,GAAI,CAAA,MAAA,CAAO,SAAS,IAAI,CAAA;AACxC,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,GAAA,CAAI,QAAW,GAAA,UAAA;AAAA;AAEjB,MAAA,IAAI,EAAI,EAAA;AACN,QAAI,GAAA,CAAA,YAAA,CAAa,GAAI,CAAA,kBAAA,EAAoB,EAAE,CAAA;AAAA,OACtC,MAAA;AACL,QAAI,GAAA,CAAA,YAAA,CAAa,OAAO,kBAAkB,CAAA;AAAA;AAE5C,MAAM,MAAA,MAAA,GAAS,IAAI,QAAS,EAAA;AAC5B,MAAA,MAAA,CAAO,OAAQ,CAAA,YAAA,CAAa,EAAE,GAAG,MAAO,CAAA,OAAA,CAAQ,KAAO,EAAA,MAAA,EAAQ,GAAK,EAAA,MAAA,EAAU,EAAA,EAAA,EAAI,MAAM,CAAA;AACxF,MAAA,kBAAA,CAAmB,EAAE,CAAA;AAAA,KACvB;AAAA,IACA,CAAC,UAAU;AAAA,GACb;AAEA,EAAM,MAAA,mBAAA,GAAsB,YAAY,MAAM;AAC5C,IAAA,MAAM,GAAM,GAAA,IAAI,GAAI,CAAA,MAAA,CAAO,SAAS,IAAI,CAAA;AACxC,IAAI,GAAA,CAAA,YAAA,CAAa,OAAO,kBAAkB,CAAA;AAC1C,IAAM,MAAA,MAAA,GAAS,IAAI,QAAS,EAAA;AAC5B,IAAA,MAAA,CAAO,OAAQ,CAAA,YAAA,CAAa,EAAE,GAAG,MAAO,CAAA,OAAA,CAAQ,KAAO,EAAA,MAAA,EAAQ,GAAK,EAAA,MAAA,EAAU,EAAA,EAAA,EAAI,MAAM,CAAA;AACxF,IAAA,kBAAA,CAAmB,MAAS,CAAA;AAAA,GAC9B,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,cAAA,EAAgB,eAAiB,EAAA,iBAAA,EAAmB,mBAAoB,EAAA;AACnF,CAAA;;ACVA,MAAM,iBAAA,GAAoB,cAAkD,MAAS,CAAA;AAE9E,MAAM,qBAA6E,CAAC;AAAA,EACzF,QAAA;AAAA,EACA;AACF,CAAM,KAAA;AACJ,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,EAAE,CAAA;AACzC,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,EAAE,CAAA;AACrD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,OAAA,EAAS,kBAAkB,CAAA,GAAI,aAAc,EAAA;AACpD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAS,CAAC,CAAA;AAC5D,EAAA,MAAM,CAAC,qBAAA,EAAuB,wBAAwB,CAAA,GAAI,SAAS,KAAK,CAAA;AACxE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAiB,EAAE,CAAA;AACrD,EAAA,MAAM,CAAC,2BAAA,EAA6B,8BAA8B,CAAA,GAAI,SAAS,KAAK,CAAA;AAEpF,EAAA,MAAM,EAAE,cAAgB,EAAA,iBAAA,EAAmB,mBAAoB,EAAA,GAAI,kBAAkB,UAAU,CAAA;AAG/F,EAAA,MAAM,YAAe,GAAA,OAAA;AAAA,IACnB,OAAO;AAAA,MACL,KAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,kBAAA;AAAA,MACA,iBAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,iBAAA;AAAA,MACA,mBAAA;AAAA,MACA,qBAAA;AAAA,MACA,wBAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,2BAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,KAAA;AAAA,MACA,OAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,OAAA;AAAA,MACA,kBAAA;AAAA,MACA,iBAAA;AAAA,MACA,cAAA;AAAA,MACA,iBAAA;AAAA,MACA,mBAAA;AAAA,MACA,qBAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,oDAAQ,iBAAkB,CAAA,QAAA,EAAlB,EAA2B,KAAA,EAAO,gBAAe,QAAS,CAAA;AACpE;AAEO,MAAM,gBAAgB,MAAM;AACjC,EAAM,MAAA,OAAA,GAAU,WAAW,iBAAiB,CAAA;AAC5C,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAM,MAAA,IAAI,MAAM,wDAAwD,CAAA;AAAA;AAG1E,EAAO,OAAA,OAAA;AACT;;ACxGO,MAAM,uBAAuB,MAAM;AACxC,EAAA,MAAM,EAAE,WAAA,EAAa,OAAQ,EAAA,GAAI,aAAc,EAAA;AAE/C,EAAA,MAAM,OAAU,GAAA,OAAA,CAAQ,WAAe,IAAA,OAAA,CAAQ,SAAS,CAAC,CAAA;AAEzD,EAAO,OAAA,OAAA;AACT;;ACNa,MAAA,gBAAA,GAAmB,CAAC,UAAA,EAAkD,YAAmD,KAAA;AACpI,EAAA,MAAM,qBAAqB,MAAM;AAC/B,IAAA,qBAAA,CAAsB,MAAM;AAC1B,MAAA,MAAM,aAAa,UAAW,CAAA,OAAA,GAAU,UAAW,CAAA,OAAA,CAAQ,SAAS,CAAC,CAAA;AACrE,MAAA,MAAM,YAAY,YAAa,CAAA,OAAA;AAC/B,MAAA,IAAI,cAAc,SAAW,EAAA;AAC3B,QAAM,MAAA,IAAA,GAAO,WAAW,qBAAsB,EAAA;AAC9C,QAAM,MAAA,aAAA,GAAgB,UAAU,qBAAsB,EAAA;AACtD,QAAA,MAAM,eAAe,SAAU,CAAA,SAAA,IAAa,IAAK,CAAA,GAAA,GAAM,cAAc,GAAO,CAAA,GAAA,EAAA;AAC5E,QAAA,SAAA,CAAU,SAAS,EAAE,GAAA,EAAK,YAAc,EAAA,QAAA,EAAU,UAAU,CAAA;AAAA;AAC9D,KACD,CAAA;AAAA,GACH;AAEA,EAAM,MAAA,cAAA,GAAiB,CAAC,KAAkB,KAAA;AACxC,IAAA,qBAAA,CAAsB,MAAM;AAC1B,MAAM,MAAA,MAAA,GAAS,UAAW,CAAA,OAAA,GAAU,KAAK,CAAA;AACzC,MAAA,MAAM,YAAY,YAAa,CAAA,OAAA;AAC/B,MAAA,IAAI,UAAU,SAAW,EAAA;AACvB,QAAM,MAAA,IAAA,GAAO,OAAO,qBAAsB,EAAA;AAC1C,QAAM,MAAA,aAAA,GAAgB,UAAU,qBAAsB,EAAA;AACtD,QAAA,MAAM,eAAe,SAAU,CAAA,SAAA,IAAa,IAAK,CAAA,GAAA,GAAM,cAAc,GAAO,CAAA,GAAA,EAAA;AAC5E,QAAA,SAAA,CAAU,SAAS,EAAE,GAAA,EAAK,YAAc,EAAA,QAAA,EAAU,UAAU,CAAA;AAAA;AAC9D,KACD,CAAA;AAAA,GACH;AAEA,EAAO,OAAA,EAAE,oBAAoB,cAAe,EAAA;AAC9C,CAAA;;ACPA,MAAM,mBAA8C,GAAA;AAAA,EAClD,UAAY,EAAA,CAAA;AAAA,EACZ,SAAW,EAAA,GAAA;AAAA,EACX,WAAA,EAAa,CAAC,KAAiB,KAAA;AAE7B,IAAA,IAAI,iBAAiB,SAAW,EAAA;AAC9B,MAAO,OAAA,IAAA;AAAA;AAGT,IAAA,MAAM,QAAW,GAAA,KAAA;AAEjB,IAAA,OAAO,QAAS,CAAA,MAAA,GAAS,QAAS,CAAA,MAAA,IAAU,GAAM,GAAA,KAAA;AAAA;AAEtD,CAAA;AAEA,MAAM,qBAAkD,GAAA;AAAA,EACtD,aAAe,EAAA,gFAAA;AAAA,EACf,aAAe,EAAA;AACjB,CAAA;AAEA,IAAI,kBAAA,GAA6C,EAAE,GAAG,mBAAoB,EAAA;AAC1E,IAAI,oBAAA,GAAiD,EAAE,GAAG,qBAAsB,EAAA;AAgBhF,eAAe,MAAM,EAA2B,EAAA;AAC9C,EAAA,OAAO,IAAI,OAAQ,CAAA,CAAC,YAAY,UAAW,CAAA,OAAA,EAAS,EAAE,CAAC,CAAA;AACzD;AAEA,eAAsB,WAAwC,CAAA,GAAA,EAAmB,MAA+B,GAAA,EAAwB,EAAA;AACtI,EAAA,MAAM,EAAE,KAAA,GAAQ,EAAC,EAAG,UAAU,EAAC,EAAG,IAAM,EAAA,QAAA,GAAW,OAAO,QAAW,GAAA,EAAI,EAAA,GAAG,aAAgB,GAAA,MAAA;AAC5F,EAAA,MAAM,YAAe,GAAA;AAAA,IACnB,GAAG,kBAAA;AAAA,IACH,GAAG;AAAA,GACL;AACA,EAAA,MAAM,eAAkB,GAAA;AAAA,IACtB,GAAG,oBAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,IAAI,OAAU,GAAA,CAAA;AAEd,EAAA,OAAO,IAAM,EAAA;AACX,IAAI,IAAA;AACF,MAAM,MAAA,QAAA,GAAW,MAAM,KAAA,CAAM,GAAK,EAAA;AAAA,QAChC,GAAG,WAAA;AAAA,QACH,OAAS,EAAA;AAAA,UACP,cAAgB,EAAA,kBAAA;AAAA,UAChB,GAAG;AAAA,SACL;AAAA,QACA,IAAM,EAAA,IAAA,GAAO,IAAK,CAAA,SAAA,CAAU,IAAI,CAAI,GAAA,KAAA;AAAA,OACrC,CAAA;AAED,MAAA,IAAI,SAAS,EAAI,EAAA;AAEf,QAAA,IAAI,QAAU,EAAA;AACZ,UAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,YAAM,MAAA,IAAI,MAAM,wBAAwB,CAAA;AAAA;AAG1C,UAAO,OAAA,QAAA;AAAA;AAIT,QAAM,MAAA,IAAA,GAAO,MAAM,QAAA,CAAS,IAAK,EAAA;AAEjC,QAAI,IAAA,CAAC,IAAS,IAAA,OAAO,IAAS,KAAA,QAAA,IAAY,OAAO,IAAK,CAAA,IAAI,CAAE,CAAA,MAAA,KAAW,CAAI,EAAA;AACzE,UAAA,MAAM,UAAa,GAAA,IAAI,KAAM,CAAA,eAAA,CAAgB,aAAa,CAAA;AAC1D,UAAA,UAAA,CAAW,IAAO,GAAA,oBAAA;AAClB,UAAM,MAAA,UAAA;AAAA;AAGR,QAAO,OAAA,IAAA;AAAA;AAGT,MAAA,MAAM,KAAQ,GAAA,IAAI,KAAM,CAAA,eAAA,CAAgB,aAAa,CAAA;AACrD,MAAA,KAAA,CAAM,SAAS,QAAS,CAAA,MAAA;AACxB,MAAA,KAAA,CAAM,OAAO,MAAM,QAAA,CAAS,MAAO,CAAA,KAAA,CAAM,MAAM,KAAS,CAAA,CAAA;AACxD,MAAM,MAAA,KAAA;AAAA,aACC,KAAO,EAAA;AACd,MAAM,MAAA,kBAAA,GAAqB,MAAM,OAAQ,CAAA,OAAA,CAAQ,aAAa,WAAY,CAAA,KAAA,EAAgB,OAAO,CAAC,CAAA;AAElG,MAAA,IAAI,OAAW,IAAA,YAAA,CAAa,UAAc,IAAA,CAAC,kBAAoB,EAAA;AAC7D,QAAA,IAAI,KAAiB,YAAA,KAAA,IAAS,KAAM,CAAA,IAAA,KAAS,oBAAsB,EAAA;AACjE,UAAO,OAAA,EAAE,OAAS,EAAA,KAAA,CAAM,OAAQ,EAAA;AAAA;AAElC,QAAM,MAAA,KAAA;AAAA;AAGR,MAAA,OAAA,CAAQ,KAAK,CAA2B,wBAAA,EAAA,OAAO,CAAO,IAAA,EAAA,YAAA,CAAa,UAAU,CAAe,aAAA,CAAA,CAAA;AAG5F,MAAA,MAAM,MAAS,GAAA,IAAA,CAAK,MAAO,EAAA,GAAI,GAAM,GAAA,IAAA;AACrC,MAAM,MAAA,KAAA,CAAM,aAAa,SAAY,GAAA,IAAA,CAAK,IAAI,CAAG,EAAA,OAAA,GAAU,CAAC,CAAA,GAAI,MAAM,CAAA;AACtE,MAAA,OAAA,EAAA;AAAA;AACF;AAEJ;;ACrHA,MAAM,iBAAoB,GAAA;AAAA,EACxB,UAAY,EAAA,CAAA;AAAA,EACZ,SAAW,EAAA,GAAA;AAAA;AAAA,EACX,WAAA,EAAa,CAAC,KAAiB,KAAA;AAC7B,IAAA,IAAI,iBAAiB,SAAW,EAAA;AAC9B,MAAO,OAAA,IAAA;AAAA;AAET,IAAA,MAAM,QAAW,GAAA,KAAA;AAGjB,IAAA,OAAO,SAAS,MAAS,GAAA,QAAA,CAAS,UAAU,GAAO,IAAA,QAAA,CAAS,WAAW,GAAM,GAAA,KAAA;AAAA;AAEjF,CAAA;AAEA,MAAM,iBAAoB,GAAA;AAAA,EACxB,UAAY,EAAA,CAAA;AAAA,EACZ,SAAW,EAAA,GAAA;AAAA;AAAA,EACX,WAAA,EAAa,CAAC,KAAiB,KAAA;AAC7B,IAAA,IAAI,iBAAiB,SAAW,EAAA;AAC9B,MAAO,OAAA,IAAA;AAAA;AAET,IAAA,MAAM,QAAW,GAAA,KAAA;AAGjB,IAAA,OAAO,QAAS,CAAA,MAAA,GAAS,QAAS,CAAA,MAAA,IAAU,GAAM,GAAA,KAAA;AAAA;AAEtD,CAAA;AAaA,eAAsB,SAAU,CAAA;AAAA,EAC9B,QAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAS4B,EAAA;AAC1B,EAAM,MAAA,OAAA,GAAU,MAAM,WAAA,CAQpB,QAAU,EAAA;AAAA,IACV,MAAQ,EAAA,MAAA;AAAA,IACR,OAAA;AAAA,IACA,KAAO,EAAA,iBAAA;AAAA,IACP,IAAM,EAAA;AAAA,MACJ,KAAA;AAAA,MACA,KAAO,EAAA,CAAA;AAAA,MACP,GAAI,YAAA,IAAgB,YAAiB,KAAA,KAAA,IAAS,EAAE,YAAa,EAAA;AAAA,MAC7D,GAAI,cAAkB,IAAA,EAAE,cAAe,EAAA;AAAA,MACvC,GAAI,UAAc,IAAA,EAAE,UAAW,EAAA;AAAA,MAC/B,GAAI,gBAAoB,IAAA,EAAE,gBAAiB,EAAA;AAAA,MAC3C,GAAI,cAAkB,IAAA,EAAE,cAAe;AAAA;AACzC,GACD,CAAA;AAED,EAAO,OAAA;AAAA,IACL,SAAS,OAAS,EAAA,IAAA;AAAA,IAClB,aAAA,EAAe,SAAS,WAAa,EAAA;AAAA,GACvC;AACF;AAmCA,eAAsB,iBAAkB,CAAA;AAAA,EACtC,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAyBsB,EAAA;AACpB,EAAA,OAAO,YAAmC,QAAU,EAAA;AAAA,IAClD,MAAQ,EAAA,MAAA;AAAA,IACR,OAAA;AAAA,IACA,KAAO,EAAA,iBAAA;AAAA,IACP,QAAU,EAAA,IAAA;AAAA,IACV,QAAU,EAAA;AAAA,MACR,aAAe,EAAA,qGAAA;AAAA,MACf,aAAe,EAAA;AAAA,KACjB;AAAA,IACA;AAAA,GACD,CAAA;AACH;AAGO,SAAS,oBAA+B,GAAA;AAC7C,EAAA,OAAO,QAAS,EAAA;AAClB;AAEA,eAAsB,YAAa,CAAA;AAAA,EACjC,QAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAMkB,EAAA;AAChB,EAAA,MAAM,YAOJ,QAAU,EAAA;AAAA,IACV,MAAQ,EAAA,MAAA;AAAA,IACR,OAAA;AAAA,IACA,IAAM,EAAA;AAAA,MACJ,aAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAI,cAAkB,IAAA,EAAE,cAAe;AAAA;AACzC,GACD,CAAA;AACH;AAEA,eAAsB,kBAAmB,CAAA;AAAA,EACvC,QAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAMkB,EAAA;AAChB,EAAA,MAAM,YAOJ,QAAU,EAAA;AAAA,IACV,MAAQ,EAAA,MAAA;AAAA,IACR,OAAA;AAAA,IACA,IAAM,EAAA;AAAA,MACJ,aAAA;AAAA,MACA;AAAA;AACF,GACD,CAAA;AACH;AAaA,eAAsB,gBAAiB,CAAA;AAAA,EACrC,QAAA;AAAA,EACA,cAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAKoD,EAAA;AAClD,EAAM,MAAA,OAAA,GAAU,MAAM,WAAA,CAKpB,QAAU,EAAA;AAAA,IACV,MAAQ,EAAA,MAAA;AAAA,IACR,OAAA;AAAA,IACA,IAAA,EAAM,EAAE,cAAe,EAAA;AAAA,IACvB;AAAA,GACD,CAAA;AAED,EAAO,OAAA,EAAE,IAAM,EAAA,OAAA,CAAQ,IAAK,EAAA;AAC9B;AAMA,eAAsB,sBAAuB,CAAA;AAAA,EAC3C,QAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAKsB,EAAA;AACpB,EAAM,MAAA,IAAA,GAAO,MAAM,WAAA,CAMjB,QAAU,EAAA;AAAA,IACV,MAAQ,EAAA,MAAA;AAAA,IACR,OAAA;AAAA,IACA,IAAM,EAAA;AAAA,MACJ,aAAA;AAAA,MACA,GAAI;AAAmC;AACzC,GACD,CAAA;AAED,EAAA,OAAO,IAAK,CAAA,SAAA;AACd;AAWA,eAAsB,iBAAkB,CAAA;AAAA,EACtC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAOkC,EAAA;AAChC,EAAM,MAAA,IAAA,GAAO,MAAM,WAAA,CAQjB,QAAU,EAAA;AAAA,IACV,MAAQ,EAAA,MAAA;AAAA,IACR,OAAA;AAAA,IACA,KAAO,EAAA,iBAAA;AAAA,IACP,IAAM,EAAA;AAAA,MACJ,KAAA;AAAA,MACA,GAAI,YAAA,IAAgB,YAAiB,KAAA,KAAA,IAAS,EAAE,YAAa,EAAA;AAAA,MAC7D,GAAI,cAAkB,IAAA,EAAE,cAAe,EAAA;AAAA,MACvC,GAAI,cAAkB,IAAA,EAAE,cAAe;AAAA;AACzC,GACD,CAAA;AAED,EAAO,OAAA,IAAA;AACT;;AC7UO,MAAM,wBAAwB,CAAC,EAAE,wBAA0B,EAAA,OAAA,EAAS,kBAAiD,KAAA;AAC1H,EAAM,MAAA;AAAA,IACJ,wBAAA;AAAA,IACA,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,MACE,aAAc,EAAA;AAElB,EAAA,MAAM,oBAAuB,GAAA,WAAA;AAAA,IAC3B,CAACC,eAA2B,KAAA;AAC1B,MAAA,IAAI,CAAC,wBAA0B,EAAA;AAC7B,QAAA;AAAA;AAGF,MAAA,wBAAA,CAAyB,IAAI,CAAA;AAC7B,MAAA,wBAAA,CAAyB,IAAI,CAAA;AAC7B,MAAA,cAAA,CAAe,IAAI,CAAA;AAEnB,MAAM,MAAA,UAAA,GAAa,IAAI,eAAgB,EAAA;AAEvC,MAAiB,gBAAA,CAAA;AAAA,QACf,QAAU,EAAA,wBAAA;AAAA,QACV,cAAAA,EAAAA,eAAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAQ,UAAW,CAAA;AAAA,OACpB,CACE,CAAA,IAAA,CAAK,CAAC,EAAE,MAAW,KAAA;AAClB,QAAA,MAAM,OAAU,GAAA,IAAA,CAAK,GAAI,CAAA,CAAC,KAAkB,KAAA;AAC1C,UAAO,OAAA;AAAA,YACL,IAAI,KAAM,CAAA,aAAA;AAAA,YACV,KAAO,EAAA,WAAA;AAAA,YACP,UAAU,KAAM,CAAA,QAAA;AAAA,YAChB,WAAa,EAAA,iBAAA,CAAkB,KAAM,CAAA,MAAM,CAAE,CAAA,SAAA;AAAA,YAC7C,eAAe,KAAM,CAAA,aAAA;AAAA,YACrB,gBAAgB,KAAM,CAAA,cAAA;AAAA,YACtB,MAAQ,EAAA,KAAA,CAAM,MAAO,CAAA,KAAA,CAAM,KAAK,CAAE,CAAA,GAAA;AAAA,cAAI,CAAC,SACrC,iBAAkB,CAAA;AAAA,gBAChB,IAAA,EAAM,KAAK,IAAK;AAAA,eACjB;AAAA;AACH,WACF;AAAA,SACD,CAAA;AACD,QAAA,kBAAA,CAAmB,UAAW,CAAA,EAAE,OAAQ,EAAC,CAAC,CAAA;AAC1C,QAAA,cAAA,CAAe,IAAI,CAAA;AAAA,OACpB,CAAA,CACA,KAAM,CAAA,CAAC,KAAU,KAAA;AAChB,QAAQ,OAAA,CAAA,KAAA,CAAM,+BAA+B,KAAK,CAAA;AAClD,QAAA,kBAAA,CAAmB,UAAU,CAAA;AAC7B,QAAoB,mBAAA,EAAA;AACpB,QAAA,cAAA,CAAe,KAAK,CAAA;AACpB,QAAa,YAAA,CAAA,gBAAA,CAAiB,aAAa,mBAAmB,CAAA;AAAA,OAC/D,CACA,CAAA,OAAA,CAAQ,MAAM;AACb,QAAA,wBAAA,CAAyB,KAAK,CAAA;AAAA,OAC/B,CAAA;AAEH,MAAO,OAAA,MAAM,UAAW,CAAA,KAAA,CAAM,6BAA6B,CAAA;AAAA,KAC7D;AAAA,IACA;AAAA,MACE,wBAAA;AAAA,MACA,wBAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,kBAAA;AAAA,MACA,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAiB,CAAA;AAAA;AACnB,GACF;AAEA,EAAA,aAAA,CAAc,MAAM;AAClB,IAAI,IAAA,MAAA;AACJ,IAAA,IAAI,cAAgB,EAAA;AAClB,MAAQ,OAAA,CAAA,GAAA,CAAI,wBAAwB,cAAc,CAAA;AAClD,MAAA,MAAA,GAAS,qBAAqB,cAAc,CAAA;AAAA;AAG9C,IAAA,OAAO,MAAM,MAAS,IAAA;AAAA,GACvB,CAAA;AAED,EAAA,OAAO,EAAE,oBAAqB,EAAA;AAChC,CAAA;;ACxGO,MAAM,yBAAyB,MAAM;AAC1C,EAAM,MAAA,mBAAA,GAAsB,MAA6C,CAAA,EAAE,CAAA;AAC3E,EAAA,MAAM,EAAE,WAAa,EAAA,OAAA,EAAS,qBAAuB,EAAA,SAAA,KAAc,aAAc,EAAA;AAGjF,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAyB,GAAA;AAAA,MAC7B,WAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAW,EAAA,qBAAA;AAAA,MACX,KAAO,EAAA;AAAA,KACT;AAEA,IAAA,mBAAA,CAAoB,QAAQ,OAAQ,CAAA,CAAC,QAAa,KAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA,KAChE,CAAC,WAAA,EAAa,OAAS,EAAA,qBAAA,EAAuB,SAAS,CAAC,CAAA;AAG3D,EAAM,MAAA,uBAAA,GAA0B,CAAC,QAA+C,KAAA;AAC9E,IAAoB,mBAAA,CAAA,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAEzC,IAAS,QAAA,CAAA;AAAA,MACP,WAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAW,EAAA,qBAAA;AAAA,MACX,KAAO,EAAA;AAAA,KACR,CAAA;AAGD,IAAA,OAAO,MAAM;AACX,MAAA,mBAAA,CAAoB,UAAU,mBAAoB,CAAA,OAAA,CAAQ,OAAO,CAAC,EAAA,KAAO,OAAO,QAAQ,CAAA;AAAA,KAC1F;AAAA,GACF;AAEA,EAAA,OAAO,EAAE,uBAAwB,EAAA;AACnC,CAAA;;ACUO,SAAS,MAAO,CAAA;AAAA,EACrB,KAAA;AAAA,EACA,SAAS,EAAC;AAAA,EACV,QAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAQ,GAAA,WAAA;AAAA,EACR,aAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAkB,GAAA,KAAA;AAAA,EAClB,aAAa,EAAC;AAAA,EACd,aAAA;AAAA,EACA,OAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAgB,EAAA;AACd,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAElD,EAAA,MAAM,MAAS,GAAA,MAAA,CACZ,MAAO,CAAA,mBAAmB,CAC1B,CAAA,GAAA,CAAI,CAAC,KAAA,KAAU,KAAM,CAAA,IAAI,CACzB,CAAA,IAAA,CAAK,aAAa,CAAA;AAErB,EAAM,MAAA,UAAA,GAAa,KAAU,KAAA,yBAAA,IAA6B,KAAU,KAAA,iBAAA;AACpE,EAAM,MAAA,uBAAA,GAA0B,UAAc,IAAA,MAAA,CAAO,MAAW,KAAA,CAAA;AAChE,EAAA,MAAM,0BAA0B,KAAU,KAAA,yBAAA;AAC1C,EAAM,MAAA,MAAA,GAAS,KAAU,KAAA,uBAAA,IAA2B,KAAU,KAAA,WAAA;AAC9D,EAAA,MAAM,cAAc,KAAU,KAAA,WAAA;AAE9B,EAAA,MAAM,aAAa,YAAY;AAC7B,IAAI,IAAA;AAEF,MAAM,MAAA,SAAA,CAAU,SAAU,CAAA,SAAA,CAAU,MAAM,CAAA;AAAA,aACnC,GAAK,EAAA;AACZ,MAAQ,OAAA,CAAA,IAAA,CAAK,yCAAyC,GAAG,CAAA;AAGzD,MAAM,MAAA,QAAA,GAAW,QAAS,CAAA,aAAA,CAAc,UAAU,CAAA;AAClD,MAAA,QAAA,CAAS,KAAQ,GAAA,MAAA;AACjB,MAAA,QAAA,CAAS,MAAM,QAAW,GAAA,OAAA;AAC1B,MAAA,QAAA,CAAS,MAAM,OAAU,GAAA,GAAA;AACzB,MAAS,QAAA,CAAA,IAAA,CAAK,YAAY,QAAQ,CAAA;AAClC,MAAA,QAAA,CAAS,KAAM,EAAA;AACf,MAAA,QAAA,CAAS,MAAO,EAAA;AAEhB,MAAI,IAAA;AACF,QAAA,QAAA,CAAS,YAAY,MAAM,CAAA;AAAA,eACpB,WAAa,EAAA;AACpB,QAAQ,OAAA,CAAA,KAAA,CAAM,kCAAkC,WAAW,CAAA;AAAA;AAG7D,MAAS,QAAA,CAAA,IAAA,CAAK,YAAY,QAAQ,CAAA;AAAA;AAGpC,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,UAAA,CAAW,MAAM,WAAA,CAAY,KAAK,CAAA,EAAG,GAAI,CAAA;AAAA,GAC3C;AAEA,EAAM,MAAA,cAAA,GAAiB,CAAC,QAA+B,KAAA;AACrD,IAAA,IAAI,cAAc,aAAe,EAAA;AAC/B,MAAA,UAAA,CAAW,QAAQ,CAAA;AAAA;AACrB,GACF;AAEA,EACE,uBAAAxB,cAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,gFAAA;AAAA,MACV,WAAU,EAAA,eAAA;AAAA,MACV,YAAY,EAAA;AAAA,KAAA;AAAA,oBAEXA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,gBAAA,EAAA,+CACZ,KAAI,EAAA,EAAA,SAAA,EAAU,gDACb,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,SAAI,SAAU,EAAA,YAAA,EAAA,kBACZA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,SAAS,CAAC,MAAA,EAAQ,CAClC,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAG,SAAU,EAAA,sEAAA,EAAA,EAAwE,QAAS,CACjG,GACC,WACC,oBAAAA,cAAA,CAAA,aAAA,CAAC,eACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,+BACEA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,OAAO,EAAA,IAAA,EAAA,+CACpB,MAAO,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,IAAA,EAAK,QAAO,OAAS,EAAA,MAAM,KAAK,UAAA,IAAc,SAAU,EAAA,qBAAA,EAAA,EAC7E,QACC,mBAAAA,cAAA,CAAA,aAAA,CAAC,SAAM,SAAU,EAAA,wBAAA,EAAyB,MAAO,EAAA,MAAA,EAAO,oBAEvDA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,SAAU,EAAA,2BAAA,EAA4B,QAAO,MAAO,EAAA,CAE9D,CACF,CAAA,+CACC,cACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,GAAG,EAAA,IAAA,EAAA,QAAA,GAAW,YAAY,MAAO,CACpC,CACF,CACF,CAEJ,CACF,CAAA;AAAA,IAEC,uBAAA,oBACEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,qBAAA,EAAA,+CACZ,KAAI,EAAA,EAAA,SAAA,EAAU,yBACb,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,qCAAoC,CACnD,kBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,iDACZ,EAAA,EAAA,uBAAA,GAA0B,WAAW,iBAAoB,GAAA,UAAA,CAAW,iBACvE,CACF,CACF,CAAA;AAAA,oBAGFA,cAAA,CAAA,aAAA,CAAC,SAAI,SAAU,EAAA,eAAA,EAAA,EACZ,QAAQ,GAAI,CAAA,CAAC,KAAO,EAAA,CAAA,qBAClBA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,KAAK,CAAG,EAAA,SAAA,EAAU,iEACpBA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,OAAc,aAA8B,EAAA,KAAA,EAAc,CACzE,CACD,CACH,CAAA;AAAA,IAGC,WACC,oBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,eAAA;AAAA,QACA,YAAA;AAAA,QACA,iBAAA;AAAA,QACA,eAAe,aAAiB,IAAA,EAAA;AAAA,QAChC,QAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,IAGD,eAAe,CAAC,eAAA,oBACdA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,WAAU,UACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,QAAA;AAAA,QACA,UAAY,EAAA,cAAA;AAAA,QACZ,UAAA;AAAA,QACA,QAAU,EAAA,eAAA;AAAA,QACV,oBAAsB,EAAA,GAAA;AAAA,QACtB,yBAA0B,EAAA,oEAAA;AAAA,QAC1B,sBAAA;AAAA,QACA,0BAA2B,EAAA;AAAA;AAAA,KAE/B,CAAA;AAAA,IAGD,iBAAiB,aAAc,CAAA,MAAA,GAAS,qBACtCA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,WAAU,2DACb,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,IAAA,EAAM,YAAY,YAAc,EAAA,aAAA,EAAe,WAAU,QACpE,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,6BACEA,cAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,EAAmB,OAAO,EAAA,IAAA,EAAA,+CACxB,MAAO,EAAA,EAAA,OAAA,EAAQ,aAAY,SAAU,EAAA,6BAAA,EAA8B,aAAU,gBAC5E,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,6CACZA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,WAAU,gCAAiC,EAAA,EAAA,SAAO,CAC1D,CACA,kBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAA,CAAA,iFAAA,EACT,UAAa,GAAA,YAAA,GAAe,EAC9B,CAAA,CAAA;AAAA,QACA,MAAO,EAAA;AAAA;AAAA,uBAERA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,SAAA,EAAA,EAAU,QAAM,CAClC,CACF,CACF,CAAA,+CACC,kBAAmB,EAAA,EAAA,SAAA,EAAU,oFAC3B,aAAc,CAAA,GAAA,CAAI,CAAC,MAClB,qBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,KAAK,MAAO,CAAA,EAAA;AAAA,QACZ,MAAM,MAAO,CAAA,GAAA;AAAA,QACb,MAAO,EAAA,QAAA;AAAA,QACP,GAAI,EAAA,qBAAA;AAAA,QACJ,SAAU,EAAA;AAAA,OAAA;AAAA,sBAETA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,oBAAA,EAAA,EAAsB,OAAO,KAAM,CAAA;AAAA,sBAClDA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,SAAU,EAAA,gDAAA,EAAiD,QAAO,MAAO,EAAA;AAAA,KAE5F,CACH,CACF,CACF;AAAA,GAEJ;AAEJ;;ACpOA,MAAM,YAAA,GAAe,OAAO,MAAM,CAAA;AAO3B,SAAS,iBAAkB,CAAA,EAAE,SAAW,EAAA,eAAA,EAA2C,EAAA;AACxF,EAAI,IAAA,CAAC,SAAU,CAAA,MAAA,EAAe,OAAA,IAAA;AAE9B,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,MAAO,CAAA,GAAA;AAAA,IAAP;AAAA,MACC,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,EAAG,EAAA;AAAA,MAC7B,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,MAC5B,IAAM,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,GAAI,EAAA;AAAA,MAC3B,SAAU,EAAA;AAAA,KAAA;AAAA,oBAETA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,2CAAA,EAAA,+CACZ,IAAG,EAAA,EAAA,SAAA,EAAU,gDAAiD,EAAA,EAAA,qBAAmB,CAEjF,EAAA,SAAA,CAAU,GAAI,CAAA,CAAC,UAAU,KAAU,KAAA;AAClC,MAAA,IAAI,QAAQ,CAAG,EAAA;AACb,QACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,GAAK,EAAA,KAAA;AAAA,YACL,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,GAAI,EAAA;AAAA,YAC9B,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,YAC5B,UAAY,EAAA,EAAE,KAAO,EAAA,KAAA,GAAQ,GAAI,EAAA;AAAA,YACjC,OAAA,EAAS,MAAM,eAAA,CAAgB,QAAQ,CAAA;AAAA,YACvC,OAAQ,EAAA,OAAA;AAAA,YACR,SAAU,EAAA;AAAA,WAAA;AAAA,0BAETA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,WAAA,EAAA,EAAa,QAAS,CAAA;AAAA,0BACrCA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,SAAU,EAAA,EAAA,EAAG,QAAO,MAAO,EAAA;AAAA,SACzC;AAAA;AAIJ,MAAO,OAAA,IAAA;AAAA,KACR,CACH;AAAA,GACF;AAEJ;;ACnCO,SAAS,mBAAmB,EAAE,SAAA,EAAW,WAAa,EAAA,UAAA,EAAY,QAAmC,EAAA;AAC1G,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAS,WAAW,CAAA;AAElE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,kBAAA,CAAmB,WAAW,CAAA;AAAA,GAChC,EAAG,CAAC,WAAW,CAAC,CAAA;AAGhB,EAAA,MAAM,uBAA0B,GAAA,CAAA;AAChC,EAAA,MAAM,aAAa,SAAU,CAAA,MAAA;AAE7B,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,MAAM,UAAmC,EAAC;AAC1C,IAAA,IAAI,cAAgC,GAAA,IAAA;AAEpC,IAAM,MAAA,QAAA,GAAW,CAAC,KAAkB,KAAA;AAClC,MAAA,IAAI,cAAmB,KAAA,IAAA,IAAQ,KAAQ,GAAA,cAAA,GAAiB,CAAG,EAAA;AACzD,QAAA,OAAA,CAAQ,KAAK,UAAU,CAAA;AAAA;AAEzB,MAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AAClB,MAAiB,cAAA,GAAA,KAAA;AAAA,KACnB;AAGA,IAAA,QAAA,CAAS,CAAC,CAAA;AAGV,IAAA,KAAA,IACM,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,CAAA,EAAG,cAAc,uBAAuB,CAAA,EACzD,CAAK,IAAA,IAAA,CAAK,IAAI,UAAa,GAAA,CAAA,EAAG,WAAc,GAAA,uBAAuB,GACnE,CACA,EAAA,EAAA;AACA,MAAA,QAAA,CAAS,CAAC,CAAA;AAAA;AAIZ,IAAA,IAAI,aAAa,CAAG,EAAA;AAClB,MAAA,QAAA,CAAS,aAAa,CAAC,CAAA;AAAA;AAGzB,IAAO,OAAA,OAAA;AAAA,GACT;AAEA,EAAA,MAAM,iBAAiB,iBAAkB,EAAA;AAEzC,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAW,EAAA,8BAAA;AAAA,MACX,SAAU,EAAA,gEAAA;AAAA,MACV,KAAA,EAAO,EAAE,GAAI,MAAS,GAAA,EAAE,IAAM,EAAA,CAAA,EAAG,MAAM,CAAA,EAAA,CAAA,EAAS,GAAA,EAAI;AAAA,KAAA;AAAA,oBAEpDA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAO,CAAA,GAAA;AAAA,MAAP;AAAA,QACC,SAAU,EAAA,sCAAA;AAAA,QACV,IAAK,EAAA,MAAA;AAAA,QACL,OAAS,EAAA,KAAA;AAAA,QACT,OAAA,EAAS,EAAE,CAAA,EAAG,CAAE,EAAA;AAAA,QAChB,YAAY,EAAE,IAAA,EAAM,UAAU,SAAW,EAAA,GAAA,EAAK,SAAS,EAAG;AAAA,OAAA;AAAA,mDAEzD,eACE,EAAA,IAAA,EAAA,cAAA,CAAe,GAAI,CAAA,CAAC,iBAAiB,UAAe,KAAA;AACnD,QAAA,IAAI,oBAAoB,UAAY,EAAA;AAClC,UACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,YAAC,MAAO,CAAA,GAAA;AAAA,YAAP;AAAA,cACC,GAAA,EAAK,YAAY,UAAU,CAAA,CAAA;AAAA,cAC3B,SAAU,EAAA,sCAAA;AAAA,cACV,aAAY,EAAA,MAAA;AAAA,cACZ,OAAA,EAAS,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,eAAkB,GAAA,WAAA,GAAc,MAAM,EAAG,EAAA;AAAA,cACnE,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,cAC5B,IAAA,EAAM,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,eAAkB,GAAA,WAAA,GAAc,KAAK,GAAI,EAAA;AAAA,cAChE,UAAA,EAAY,EAAE,QAAA,EAAU,GAAI;AAAA,aAAA;AAAA,4BAE5BA,cAAA,CAAA,aAAA,CAAC,cAAe,EAAA,EAAA,SAAA,EAAU,wBAAyB,EAAA;AAAA,WACrD;AAAA;AAIJ,QAAA,MAAM,KAAQ,GAAA,eAAA;AACd,QAAM,MAAA,QAAA,GAAW,UAAU,KAAK,CAAA;AAEhC,QACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,UAAC,MAAO,CAAA,GAAA;AAAA,UAAP;AAAA,YACC,GAAK,EAAA,KAAA;AAAA,YACL,SAAU,EAAA,wBAAA;AAAA,YACV,IAAK,EAAA,UAAA;AAAA,YACL,OAAA,EAAS,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,eAAkB,GAAA,WAAA,GAAc,MAAM,EAAG,EAAA;AAAA,YACnE,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,YAC5B,IAAA,EAAM,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,eAAkB,GAAA,WAAA,GAAc,KAAK,GAAI,EAAA;AAAA,YAChE,UAAA,EAAY,EAAE,QAAA,EAAU,GAAI,EAAA;AAAA,YAC5B,MAAM,EAAA;AAAA,WAAA;AAAA,0BAENA,cAAA,CAAA,aAAA,CAAC,mBAAgB,aAAe,EAAA,GAAA,EAAA,+CAC7B,OACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,cAAe,EAAA,EAAA,OAAA,EAAO,IACrB,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,cAC/B,SAAA,EAAW,CAAC,CAAM,KAAA;AAChB,gBAAA,IAAI,CAAE,CAAA,GAAA,KAAQ,OAAW,IAAA,CAAA,CAAE,QAAQ,GAAK,EAAA;AACtC,kBAAA,UAAA,CAAW,KAAK,CAAA;AAAA;AAClB,eACF;AAAA,cACA,SAAW,EAAA,EAAA;AAAA,gBACT,oLAAA;AAAA,gBACA,KAAA,KAAU,cAAc,oCAAuC,GAAA;AAAA,eACjE;AAAA,cACA,YAAY,EAAA,CAAA,qBAAA,EAAwB,KAAQ,GAAA,CAAC,KAAK,QAAQ,CAAA,CAAA;AAAA,cAC1D,cAAA,EAAc,KAAU,KAAA,WAAA,GAAc,MAAS,GAAA;AAAA,aAAA;AAAA,YAE9C,KAAQ,GAAA;AAAA,WAEb,CACA,kBAAAA,cAAA,CAAA,aAAA;AAAA,YAAC,cAAA;AAAA,YAAA;AAAA,cACC,IAAK,EAAA,OAAA;AAAA,cACL,UAAY,EAAA,CAAA;AAAA,cACZ,SAAU,EAAA;AAAA,aAAA;AAAA,4BAETA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAE,SAAU,EAAA,6BAAA,EAAA,EAA+B,QAAS;AAAA,WAEzD,CACF;AAAA,SACF;AAAA,OAEH,CACH;AAAA;AACF,GACF;AAEJ;;ACnIgB,SAAA,mBAAA,CAAoB,EAAE,OAAA,EAAqC,EAAA;AACzE,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAK,EAAA,MAAA;AAAA,MACL,OAAQ,EAAA,WAAA;AAAA,MACR,SAAU,EAAA,8FAAA;AAAA,MACV;AAAA,KAAA;AAAA,oBAEAA,cAAA,CAAA,aAAA,CAAC,SAAU,EAAA,EAAA,SAAA,EAAU,QAAS,EAAA;AAAA,GAChC;AAEJ;;ACDO,MAAM,gBAAgBA,cAAM,CAAA,UAAA;AAAA,EAuBjC,CACE;AAAA,IACE,KAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAc,EAAC;AAAA,IACf,mBAAA;AAAA,IACA,kBAAA;AAAA,IACA,sBAAyB,GAAA,KAAA;AAAA,IACzB,iBAAiB,EAAC;AAAA,IAClB,aAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAc,GAAA,KAAA;AAAA,IACd,0BAA0B,EAAC;AAAA,IAC3B;AAAA,KAEF,GACG,KAAA;AACH,IAAM,MAAA,YAAA,GAAe,OAAyB,IAAI,CAAA;AAClD,IAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5D,IAAM,MAAA,oBAAA,GAAuB,CAAC,QAAkC,KAAA;AAC9D,MAAA,QAAA,CAAS,MAAM,MAAS,GAAA,MAAA;AACxB,MAAA,QAAA,CAAS,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA,QAAA,CAAS,YAAY,CAAA,EAAA,CAAA;AAAA,KAClD;AAEA,IAAM,MAAA,cAAA,GAAiB,CAAC,CAA2B,KAAA;AACjD,MAAA,IAAI,CAAE,CAAA,GAAA,KAAQ,OAAW,IAAA,CAAC,EAAE,QAAU,EAAA;AACpC,QAAA,CAAA,CAAE,cAAe,EAAA;AACjB,QAAS,QAAA,EAAA;AAAA;AACX,KACF;AAGA,IAAA,SAAA,CAAU,MAAM;AACd,MAAM,MAAA,kBAAA,GAAqB,CAAC,KAAsB,KAAA;AAChD,QAAA,IAAI,CAAE,KAAA,CAAM,MAAmB,CAAA,OAAA,CAAQ,uBAAuB,CAAG,EAAA;AAC/D,UAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA;AAC1B,OACF;AAEA,MAAS,QAAA,CAAA,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AAEzD,MAAA,OAAO,MAAM,QAAA,CAAS,mBAAoB,CAAA,WAAA,EAAa,kBAAkB,CAAA;AAAA,KAC3E,EAAG,EAAE,CAAA;AAGL,IAAA,SAAA,CAAU,MAAM;AACd,MAAI,IAAA,KAAA,CAAM,MAAQ,EAAA;AAChB,QAAA,kBAAA,CAAmB,IAAI,CAAA;AAAA;AACzB,KACF,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,IAAA,MAAM,wBAAwB,eAAmB,IAAA,KAAA,CAAM,IAAK,EAAA,IAAK,wBAAwB,MAAS,GAAA,CAAA;AAGlG,IAAA,MAAM,gBAAmB,GAAA;AAAA,MACvB,MAAQ,EAAA;AAAA,QACN,OAAS,EAAA,CAAA;AAAA,QACT,KAAO,EAAA,IAAA;AAAA,QACP,eAAiB,EAAA;AAAA,OACnB;AAAA,MACA,OAAS,EAAA;AAAA,QACP,OAAS,EAAA,CAAA;AAAA,QACT,KAAO,EAAA,CAAA;AAAA,QACP,UAAY,EAAA;AAAA,UACV,IAAM,EAAA,QAAA;AAAA,UACN,SAAW,EAAA,GAAA;AAAA,UACX,OAAS,EAAA,EAAA;AAAA,UACT,IAAM,EAAA;AAAA;AACR,OACF;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,OAAS,EAAA,CAAA;AAAA,QACT,KAAO,EAAA,IAAA;AAAA,QACP,UAAY,EAAA;AAAA,UACV,QAAU,EAAA,IAAA;AAAA,UACV,IAAM,EAAA;AAAA;AACR;AACF,KACF;AAEA,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,MAAQ,EAAA;AAAA,QACN,OAAS,EAAA,CAAA;AAAA,QACT,CAAG,EAAA;AAAA,OACL;AAAA,MACA,OAAS,EAAA;AAAA,QACP,OAAS,EAAA,CAAA;AAAA,QACT,CAAG,EAAA,CAAA;AAAA,QACH,UAAY,EAAA;AAAA,UACV,QAAU,EAAA;AAAA;AACZ;AACF,KACF;AAEA,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,OAAS,EAAA;AAAA,QACP,UAAY,EAAA;AAAA,UACV,eAAiB,EAAA,IAAA;AAAA,UACjB,aAAe,EAAA;AAAA;AACjB;AACF,KACF;AAEA,IAAA,uBACGA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,iBAAA,EAAkB,aAAU,eACzC,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAA,EAAA;AAAA,UACT,0EAAA;AAAA,UACA,wBAAwB,cAAiB,GAAA;AAAA;AAC3C,OAAA;AAAA,sBAECA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,+BAAA,EAAA,kBACZA,cAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EAAgB,SAAU,EAAA,oCAAA,EAAqC,aAAW,EAAA,IAAA,EAAC,IAAK,EAAA,cAAA,EAAe,CAChG,kBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,KAAO,EAAA,KAAA;AAAA,UACP,QAAA,EAAU,CAAC,CAAM,KAAA;AACf,YAAc,aAAA,CAAA,CAAA,CAAE,OAAO,KAAK,CAAA;AAC5B,YAAA,oBAAA,CAAqB,EAAE,MAAM,CAAA;AAAA,WAC/B;AAAA,UACA,SAAW,EAAA,cAAA;AAAA,UACX,OAAA,EAAS,MAAM,kBAAA,CAAmB,IAAI,CAAA;AAAA,UACtC,aAAa,UAAW,CAAA,iBAAA;AAAA,UACxB,SAAU,EAAA,qbAAA;AAAA,UAgBV,IAAM,EAAA;AAAA;AAAA,OACR,EACC,WACC,oBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,uCACb,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,+EAAgF,EAAA,CACjG,CAEJ,CAAA;AAAA,MAEC,CAAC,sBAAA,IAA0B,cAAe,CAAA,MAAA,GAAS,qBACjDA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,2CAAA,EAAA,EACZ,cAAe,CAAA,GAAA,CAAI,CAAC,KAAA,EAAO,0BACzBA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,GAAK,EAAA,KAAA,EAAO,SAAU,EAAA,iEAAA,EAAA,kBACxBA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,KAAK,KAAM,CAAA,OAAA,EAAS,GAAK,EAAA,CAAA,SAAA,EAAY,KAAQ,GAAA,CAAC,CAAI,CAAA,EAAA,SAAA,EAAU,8BAA6B,CAC9F,kBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,MAAM,aAAA,GAAgB,KAAK,CAAA;AAAA,UACpC,SAAU,EAAA;AAAA,SAAA;AAAA,wBAcTA,cAAA,CAAA,aAAA,CAAA,CAAA,EAAA,EAAE,SAAU,EAAA,mBAAA,EAAoB,cAAW,cAAe,EAAA;AAAA,OAE/D,CACD,CACH,CAAA;AAAA,MAGD,CAAC,qBACA,oBAAAA,cAAA,CAAA,aAAA,CAAC,SAAI,SAAU,EAAA,oEAAA,EAAA,+CACZ,KAAI,EAAA,EAAA,SAAA,EAAU,YACZ,EAAA,EAAA,WAAA,CAAY,SAAS,CACpB,oBAAAA,cAAA,CAAA,aAAA,CAAC,oCACEA,cAAA,CAAA,aAAA,CAAA,mBAAA,EAAA,EAAoB,SAAO,IAC1B,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAQ,EAAA,OAAA;AAAA,UACR,IAAK,EAAA,IAAA;AAAA,UACL,SAAU,EAAA;AAAA,SAAA;AAAA,QAYT,WAAA,CAAY,IAAK,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,OAAO,mBAAmB,CAAA,EAAG,IACtD,IAAA,UAAA,CAAW,gBACX,IAAA,eAAA;AAAA,wBACFA,cAAA,CAAA,aAAA,CAAC,SAAU,EAAA,EAAA,SAAA,EAAU,kCAAmC,EAAA;AAAA,OAE5D,mBACCA,cAAA,CAAA,aAAA,CAAA,mBAAA,EAAA,EAAoB,WAAU,UAC5B,EAAA,EAAA,WAAA,CAAY,GAAI,CAAA,CAAC,UAChB,qBAAAA,cAAA,CAAA,aAAA,CAAC,oBAAiB,GAAK,EAAA,UAAA,CAAW,IAAI,OAAS,EAAA,MAAM,qBAAqB,UAAW,CAAA,EAAE,CACpF,EAAA,EAAA,UAAA,CAAW,EAAO,KAAA,mBAAA,gDAChB,WAAY,EAAA,EAAA,SAAA,EAAU,yCAAwC,MAAO,EAAA,MAAA,EAAO,oBAE5EA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,SAAU,EAAA,oCAAA,EAAqC,CAEzD,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAK,SAAU,EAAA,kBAAA,EAAA,EAAoB,UAAW,CAAA,IAAK,CACtD,CACD,CACH,CACF,CAAA,EAGD,CAAC,sBAAA,oBAEEA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAK,EAAA,MAAA;AAAA,UACL,GAAK,EAAA,YAAA;AAAA,UACL,MAAO,EAAA,SAAA;AAAA,UACP,QAAQ,EAAA,IAAA;AAAA,UACR,SAAU,EAAA,QAAA;AAAA,UACV,QAAU,EAAA;AAAA;AAAA,OAEZ,kBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAQ,EAAA,OAAA;AAAA,UACR,IAAK,EAAA,IAAA;AAAA,UACL,SAAU,EAAA,0DAAA;AAAA,UACV,OAAS,EAAA,MAAM,YAAa,CAAA,OAAA,EAAS,KAAM,EAAA;AAAA,UAC3C,cAAY,UAAW,CAAA;AAAA,SAAA;AAAA,wBAEvBA,cAAA,CAAA,aAAA,CAAC,KAAM,EAAA,EAAA,SAAA,EAAU,kCAAmC,EAAA,CAAA;AAAA,wBACnDA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,kBAAA,EAAA,EAAoB,WAAW,eAAgB;AAAA,OAEnE,CAEJ,CAAA,kBAECA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,WAAU,mBACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,IAAK,EAAA,IAAA;AAAA,UACL,QAAA,EAAU,CAAC,KAAS,IAAA,WAAA;AAAA,UACpB,eAAA,EAAe,CAAC,KAAS,IAAA,WAAA;AAAA,UACzB,SAAU,EAAA,kDAAA;AAAA,UACV,OAAS,EAAA;AAAA,SAAA;AAAA,QAER,WAAA,gDACE,KAAI,EAAA,EAAA,SAAA,EAAU,qBAAoB,IAAK,EAAA,QAAA,EAAS,aAAU,QACzD,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAU,EAAA,6EAAA;AAAA,YACV,aAAY,EAAA;AAAA;AAAA,2BAEbA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,WAAU,SAAU,EAAA,EAAA,SAAO,CACnC,CAEA,mBAAAA,cAAA,CAAA,aAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,SAAU,EAAA,yBAAA;AAAA,YACV,IAAM,EAAA,EAAA;AAAA,YACN,MAAO,EAAA,MAAA;AAAA,YACP,YAAW,EAAA;AAAA;AAAA;AACb,OAGN,CACF;AAAA,KAIJ,kBAAAA,cAAA,CAAA,aAAA,CAAC,eAAgB,EAAA,EAAA,IAAA,EAAK,UACnB,qBACC,oBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAO,CAAA,GAAA;AAAA,MAAP;AAAA,QACC,QAAU,EAAA,gBAAA;AAAA,QACV,OAAQ,EAAA,QAAA;AAAA,QACR,OAAQ,EAAA,SAAA;AAAA,QACR,IAAK,EAAA,MAAA;AAAA,QACL,SAAU,EAAA;AAAA,OAAA;AAAA,sBAaVA,cAAA,CAAA,aAAA,CAAC,MAAO,CAAA,GAAA,EAAP,EAAW,SAAA,EAAU,aAAY,QAAU,EAAA,YAAA,EAAA,EACzC,KAAM,CAAA,IAAA,EACL,oBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,IAAK,EAAA,QAAA;AAAA,UACL,eAAe,EAAA,KAAA;AAAA,UACf,QAAU,EAAA,CAAA;AAAA,UACV,SAAU,EAAA,2gBAAA;AAAA,UAeV,SAAS,MAAM;AACb,YAAS,QAAA,EAAA;AACT,YAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,WAC1B;AAAA,UACA,SAAA,EAAW,CAAC,CAAM,KAAA;AAChB,YAAA,IAAI,CAAE,CAAA,GAAA,KAAQ,OAAW,IAAA,CAAA,CAAE,QAAQ,GAAK,EAAA;AACtC,cAAA,CAAA,CAAE,cAAe,EAAA;AACjB,cAAS,QAAA,EAAA;AACT,cAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA;AAC1B;AACF,SAAA;AAAA,wBAEAA,cAAA,CAAA,aAAA,CAAC,eAAgB,EAAA,EAAA,SAAA,EAAU,gDAAiD,EAAA,CAAA;AAAA,wBAC3EA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,aAAA,EAAA,EAAe,KAAM,CAAA;AAAA,wBACrCA,cAAA,CAAA,aAAA,CAAC,SAAI,SAAU,EAAA,2BAAA,EAAA,+CACZ,UAAW,EAAA,EAAA,SAAA,EAAU,oCAAmC,CAC3D;AAAA,OAGN,CAAA;AAAA,sBAECA,cAAA,CAAA,aAAA,CAAA,MAAA,CAAO,GAAP,EAAA,EAAW,QAAU,EAAA,YAAA,EAAc,OAAQ,EAAA,QAAA,EAAS,OAAQ,EAAA,SAAA,EAAA,EAC1D,uBAAwB,CAAA,GAAA,CAAI,CAAC,UAC5B,qBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,MAAO,CAAA,GAAA;AAAA,QAAP;AAAA,UACC,KAAK,UAAW,CAAA,EAAA;AAAA,UAChB,QAAU,EAAA,YAAA;AAAA,UACV,IAAK,EAAA,QAAA;AAAA,UACL,eAAe,EAAA,KAAA;AAAA,UACf,QAAU,EAAA,CAAA;AAAA,UACV,SAAU,EAAA,sHAAA;AAAA,UACV,SAAS,MAAM;AACb,YAAA,8BAAA,GAAiC,UAAU,CAAA;AAC3C,YAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,WAC1B;AAAA,UACA,SAAA,EAAW,CAAC,CAAM,KAAA;AAChB,YAAA,IAAI,CAAE,CAAA,GAAA,KAAQ,OAAW,IAAA,CAAA,CAAE,QAAQ,GAAK,EAAA;AACtC,cAAA,CAAA,CAAE,cAAe,EAAA;AACjB,cAAA,8BAAA,GAAiC,UAAU,CAAA;AAC3C,cAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA;AAC1B;AACF,SAAA;AAAA,wBAEAA,cAAA,CAAA,aAAA,CAAC,eAAgB,EAAA,EAAA,SAAA,EAAU,gDAAiD,EAAA,CAAA;AAAA,wBAC3EA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,aAAA,EAAA,EAAe,WAAW,QAAS,CAAA;AAAA,wBACnDA,cAAA,CAAA,aAAA,CAAC,SAAI,SAAU,EAAA,2BAAA,EAAA,+CACZ,UAAW,EAAA,EAAA,SAAA,EAAU,oCAAmC,CAC3D;AAAA,OAEH,CACH;AAAA,KAGN,CACF,CAAA;AAAA;AAGN,CAAA;AAEA,aAAA,CAAc,WAAc,GAAA,eAAA;;;;;;;AC7YrB,MAAM,oBAAoBA,cAAM,CAAA,UAAA;AAAA,EACrC,CAAC,EAAE,YAAe,GAAA,EAAA,EAAI,eAAe,WAAa,EAAA,oBAAA,EAAsB,UAAW,EAAA,EAAG,GAAQ,KAAA;AAE5F,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,YAAY,CAAA;AAEzD,IAAM,MAAA,gBAAA,GAAmB,OAAmC,IAAI,CAAA;AAChE,IAAM,MAAA,cAAA,GAAiB,CAAC,QAAyC,KAAA;AAC/D,MAAA,gBAAA,CAAiB,OAAU,GAAA,QAAA;AAC3B,MAAI,IAAA,OAAO,QAAQ,UAAY,EAAA;AAC7B,QAAA,GAAA,CAAI,QAAQ,CAAA;AAAA,OACd,MAAA,IAAW,GAAO,IAAA,SAAA,IAAa,GAAK,EAAA;AAClC,QAAC,IAA2D,OAAU,GAAA,QAAA;AAAA;AACxE,KACF;AAGA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,iBAAiB,OAAS,EAAA;AAC5B,QAAiB,gBAAA,CAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,SAAA;AACxC,QAAA,gBAAA,CAAiB,QAAQ,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA,gBAAA,CAAiB,QAAQ,YAAY,CAAA,EAAA,CAAA;AAAA;AAClF,KACF,EAAG,CAAC,UAAU,CAAC,CAAA;AAGf,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,aAAA,CAAc,YAAY,CAAA;AAAA,KAC5B,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,IAAM,MAAA,cAAA,GAAiB,CAAC,CAA2B,KAAA;AACjD,MAAA,IAAI,EAAE,GAAQ,KAAA,OAAA,IAAW,CAAC,CAAE,CAAA,QAAA,IAAY,CAAC,WAAa,EAAA;AACpD,QAAA,CAAA,CAAE,cAAe,EAAA;AACjB,QAAA,MAAM,YAAe,GAAA,UAAA;AACrB,QAAA,aAAA,CAAc,YAAY,CAAA;AAC1B,QAAA,oBAAA,CAAqB,YAAY,CAAA;AAEjC,QAAA,aAAA,CAAc,EAAE,CAAA;AAAA;AAClB,KACF;AAEA,IAAM,MAAA,YAAA,GAAe,CAAC,CAA8C,KAAA;AAClE,MAAc,aAAA,CAAA,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,KAC9B;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,IAAI,eAAe,YAAc,EAAA;AAC/B,QAAA,aAAA,CAAc,UAAU,CAAA;AAAA;AAC1B,KACF;AAEA,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAA,MAAM,YAAe,GAAA,UAAA;AACrB,MAAA,aAAA,CAAc,YAAY,CAAA;AAC1B,MAAA,oBAAA,CAAqB,YAAY,CAAA;AAEjC,MAAA,aAAA,CAAc,EAAE,CAAA;AAAA,KAClB;AAEA,IACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAO,CAAA,MAAA;AAAA,MAAP;AAAA,QACC,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,EAAG,EAAA;AAAA,QAC7B,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAI,EAAA;AAAA,QAC5B,WAAW,MAAO,CAAA;AAAA,OAAA;AAAA,mDAEjB,KAAI,EAAA,EAAA,SAAA,EAAU,gDACb,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,SAAI,SAAU,EAAA,qFAAA,EAAA,kBACZA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,WAAU,uDACb,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,mBAAgB,SAAU,EAAA,kCAAA,EAAmC,CAChE,CACA,kBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,GAAK,EAAA,cAAA;AAAA,UACL,KAAO,EAAA,UAAA;AAAA,UACP,QAAU,EAAA,YAAA;AAAA,UACV,MAAQ,EAAA,UAAA;AAAA,UACR,SAAW,EAAA,cAAA;AAAA,UACX,aAAa,UAAW,CAAA,mBAAA;AAAA,UACxB,SAAU,EAAA,sIAAA;AAAA,UACV,IAAM,EAAA;AAAA;AAAA,OAER,kBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,IAAK,EAAA,QAAA;AAAA,UACL,IAAK,EAAA,MAAA;AAAA,UACL,QAAU,EAAA,WAAA,IAAe,CAAC,UAAA,CAAW,IAAK,EAAA;AAAA,UAC1C,OAAS,EAAA,iBAAA;AAAA,UACT,SAAW,EAAA,EAAA;AAAA,YACT,yBAAA;AAAA,YACA,aAAa,oCAAuC,GAAA;AAAA;AACtD,SAAA;AAAA,QAEC,WAAA,gDACE,KAAI,EAAA,EAAA,SAAA,EAAU,iHAAgH,CAE/H,mBAAAA,cAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,SAAA,EAAU,QAAS,EAAA;AAAA,OAGrC,CACF;AAAA,KACF;AAAA;AAGN,CAAA;AAEA,iBAAA,CAAkB,WAAc,GAAA,mBAAA;;ACxGzB,SAAS,MAAO,CAAA;AAAA,EACrB,UAAA;AAAA,EACA,uBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAgB,EAAA;AACd,EAAA,MAAM,UAAU,oBAAqB,EAAA;AACrC,EAAA,MAAM,CAAC,UAAY,EAAA,aAAa,CAAI,GAAAA,cAAA,CAAM,SAAS,KAAK,CAAA;AAExD,EAAA,MAAM,EAAE,WAAA,EAAa,2BAA6B,EAAA,gBAAA,KAAqB,aAAc,EAAA;AAErF,EAAA,MAAM,8BAA8B,MAAM;AACxC,IAAc,aAAA,CAAA,CAAC,IAAS,KAAA,CAAC,IAAI,CAAA;AAC7B,IAAwB,uBAAA,EAAA;AAAA,GAC1B;AAEA,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,EAAA;AAAA,QACT,oDAAA;AAAA,QACA,2BAAA;AAAA,QACA,qDAAA;AAAA,QACA,6CAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA,KAAA;AAAA,oBAEJA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAO,CAAA,EAAA;AAAA,MAAP;AAAA,QACC,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,EAAG,EAAA;AAAA,QAC7B,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,QAC5B,UAAY,EAAA,EAAE,QAAU,EAAA,GAAA,EAAK,OAAO,GAAI,EAAA;AAAA,QACxC,SAAU,EAAA;AAAA,OAAA;AAAA,MAET,OACC,oBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,IAAK,EAAA,MAAA;AAAA,UACL,OAAQ,EAAA,OAAA;AAAA,UACR,OAAS,EAAA,iBAAA;AAAA,UACT,YAAW,EAAA,SAAA;AAAA,UACX,SAAU,EAAA,sBAAA;AAAA,UACV,QAAU,EAAA;AAAA,SAAA;AAAA,qDAET,SAAU,EAAA,IAAA;AAAA,OACb;AAAA,sBAGFA,cAAA,CAAA,aAAA,CAAC,cAAM,UAAW;AAAA,KACpB;AAAA,oBACCA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,sBAAA,EAAA,EAGZ,CAAC,gBACA,oBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,IAAK,EAAA,MAAA;AAAA,QACL,OAAQ,EAAA,OAAA;AAAA,QACR,OAAS,EAAA,2BAAA;AAAA,QACT,YAAA,EAAY,aAAa,iBAAoB,GAAA,eAAA;AAAA,QAC7C,SAAU,EAAA;AAAA,OAAA;AAAA,MAET,UAAa,mBAAAA,cAAA,CAAA,aAAA,CAAC,cAAe,EAAA,IAAA,CAAA,gDAAM,eAAgB,EAAA,IAAA;AAAA,KAGxD,kBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,IAAK,EAAA,MAAA;AAAA,QACL,OAAQ,EAAA,OAAA;AAAA,QACR,OAAS,EAAA,kBAAA;AAAA,QACT,YAAW,EAAA,cAAA;AAAA,QACX,SAAU,EAAA;AAAA,OAAA;AAAA,mDAET,CAAE,EAAA,IAAA;AAAA,KAEP;AAAA,GACF;AAEJ;;ACzFO,MAAM,iBAAgC,GAAA;AAAA,EAC3C,UAAY,EAAA,4BAAA;AAAA,EACZ,iBAAmB,EAAA,+CAAA;AAAA,EACnB,eAAiB,EAAA,cAAA;AAAA,EACjB,gBAAkB,EAAA,eAAA;AAAA,EAClB,iBAAmB,EAAA,mCAAA;AAAA,EACnB,iBAAmB,EAAA,wBAAA;AAAA,EACnB,SAAW,EAAA,kDAAA;AAAA,EACX,mBAAqB,EAAA,eAAA;AAAA,EACrB,kBAAoB,EAAA,SAAA;AAAA,EACpB,kBAAoB,EAAA,aAAA;AAAA,EACpB,uBAAyB,EAAA;AAAA,IACvB,IAAM,EAAA,gHAAA;AAAA,IACN,IAAM,EAAA,wHAAA;AAAA,IACN,IAAM,EAAA,sGAAA;AAAA,IACN,IAAM,EAAA,sIAAA;AAAA,IACN,IAAM,EAAA,gGAAA;AAAA,IACN,IAAM,EAAA,iGAAA;AAAA,IACN,IAAM,EAAA,mHAAA;AAAA,IACN,IAAM,EAAA,2GAAA;AAAA,IACN,IAAM,EAAA,oHAAA;AAAA,IACN,IAAM,EAAA,iDAAA;AAAA,IACN,IAAM,EAAA,wDAAA;AAAA,IACN,IAAM,EAAA,6BAAA;AAAA,IACN,OAAS,EAAA;AAAA;AAEb,CAAA;;AC9BA,MAAM,wBAA2B,GAAA,kBAAA;AACjC,MAAM,8BAAiC,GAAA,yBAAA;AAY1B,MAAA,mBAAA,GAAsB,CAAC,GAAA,EAAa,MAAgC,KAAA;AAC/E,EAAO,OAAA,IAAI,OAAqC,CAAA,CAAC,OAAY,KAAA;AAG3D,IAAM,MAAA,SAAA,GAAY,OAAO,UAAW,EAAA;AAEpC,IAAM,MAAA,cAAA,GAAiB,CACrB,KAKG,KAAA;AACH,MAAA,IAAI,MAAM,IAAK,CAAA,SAAA,KAAc,aAAa,KAAM,CAAA,IAAA,CAAK,SAAS,8BAAgC,EAAA;AAC5F,QAAO,MAAA,CAAA,mBAAA,CAAoB,WAAW,cAAc,CAAA;AACpD,QAAQ,OAAA,CAAA,KAAA,CAAM,KAAK,MAAM,CAAA;AAAA;AAC3B,KACF;AAGA,IAAO,MAAA,CAAA,gBAAA,CAAiB,WAAW,cAAc,CAAA;AAGjD,IAAA,MAAA,CAAO,MAAO,CAAA,WAAA;AAAA,MACZ;AAAA,QACE,IAAM,EAAA,wBAAA;AAAA,QACN,SAAA;AAAA,QACA,SAAW,EAAA,GAAA;AAAA,QACX;AAAA,OACF;AAAA,MACA;AAAA,KACF;AAGA,IAAA,UAAA,CAAW,MAAM;AACf,MAAO,MAAA,CAAA,mBAAA,CAAoB,WAAW,cAAc,CAAA;AAEpD,MAAQ,OAAA,CAAA;AAAA,QACN,OAAS,EAAA,KAAA;AAAA,QACT,MAAA,EAAQ,kCAAkC,GAAG,CAAA,UAAA;AAAA,OAC9C,CAAA;AAAA,OACA,GAAI,CAAA;AAAA,GACR,CAAA;AACH,CAAA;;ACrDO,MAAM,sBAAsB,MAAM;AACvC,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,MAAO,CAAA,GAAA;AAAA,IAAP;AAAA,MACC,GAAI,EAAA,SAAA;AAAA,MACJ,OAAA,EAAS,EAAE,OAAA,EAAS,CAAE,EAAA;AAAA,MACtB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAE,EAAA;AAAA,MACtB,IAAA,EAAM,EAAE,OAAA,EAAS,CAAE,EAAA;AAAA,MACnB,SAAU,EAAA,+CAAA;AAAA,MACV,WAAU,EAAA;AAAA,KAAA;AAAA,oBAETA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,kCAAA,EAAA,+CACZ,KAAI,EAAA,EAAA,SAAA,EAAU,+EAAgF,EAAA,CAAA,kBAC9FA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAE,SAAU,EAAA,mCAAA,EAAA,EAAoC,yBAAuB,CAC1E;AAAA,GACF;AAEJ,CAAA;;ACfA,MAAM,kBAAA,GAAqB,cAAwC,MAAS,CAAA;AAErE,SAAS,mBAAoB,CAAA,EAAE,QAAU,EAAA,KAAA,EAAmE,EAAA;AACjH,EAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,mBAAmB,QAAnB,EAAA,EAA4B,OAAO,KAAS,IAAA,MAAK,QAAS,CAAA;AACpE;;ACFgB,SAAA,WAAA,CAAe,OAAU,KAAkB,EAAA;AACzD,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAY,KAAK,CAAA;AAE7D,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,OAAA,GAAU,WAAW,MAAM;AAC/B,MAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,OACtB,KAAK,CAAA;AAER,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,OAAO,CAAA;AAAA,KACtB;AAAA,GACC,EAAA,CAAC,KAAO,EAAA,KAAK,CAAC,CAAA;AAEjB,EAAO,OAAA,cAAA;AACT;AAEO,SAAS,eAAgB,CAAA;AAAA,EAC9B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,KAAQ,GAAA;AACV,CAQG,EAAA;AACD,EAAA,MAAM,CAAC,WAAa,EAAA,cAAc,CAAI,GAAA,QAAA,CAAuB,EAAE,CAAA;AAC/D,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,QAAiB,EAAA;AAE3C,EAAM,MAAA,cAAA,GAAiB,WAAY,CAAA,KAAA,EAAO,KAAK,CAAA;AAE/C,EAAM,MAAA,gBAAA,GAAmB,YAAY,YAAY;AAC/C,IAAI,IAAA,CAAC,cAAe,CAAA,IAAA,EAAQ,EAAA;AAC1B,MAAA,cAAA,CAAe,EAAE,CAAA;AAEjB,MAAA;AAAA;AAGF,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,QAAA,CAAS,MAAS,CAAA;AAElB,IAAI,IAAA;AACF,MAAM,MAAA,OAAA,GAAU,MAAM,iBAAkB,CAAA;AAAA,QACtC,QAAA;AAAA,QACA,KAAO,EAAA,cAAA;AAAA,QACP,YAAA;AAAA,QACA,OAAA;AAAA,QACA,cAAA;AAAA,QACA;AAAA,OACD,CAAA;AACD,MAAe,cAAA,CAAA,OAAA,EAAS,UAAU,OAAO,CAAA;AAAA,aAClC,GAAK,EAAA;AACZ,MAAQ,OAAA,CAAA,KAAA,CAAM,4CAA4C,GAAG,CAAA;AAC7D,MAAA,QAAA,CAAS,GAAe,YAAA,KAAA,GAAQ,GAAI,CAAA,OAAA,GAAU,6BAA6B,CAAA;AAC3E,MAAA,cAAA,CAAe,EAAE,CAAA;AAAA,KACjB,SAAA;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA;AACpB,GACF,EAAG,CAAC,cAAgB,EAAA,QAAA,EAAU,cAAc,OAAS,EAAA,cAAA,EAAgB,cAAc,CAAC,CAAA;AAEpF,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,KAAK,gBAAiB,EAAA;AAAA,GACxB,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAErB,EAAO,OAAA,EAAE,WAAa,EAAA,SAAA,EAAW,KAAM,EAAA;AACzC;;ACZA,MAAM,mBAAsB,GAAA,UAAA;AAAA,EAC1B,CACE;AAAA,IACE,WAAA,EAAa,qBAAqB,EAAC;AAAA,IACnC,cAAc,EAAC;AAAA,IACf,oBAAA;AAAA,IACA,kBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,gBAAA;AAAA,IACA,sBAAA;AAAA,IACA,wBAAA;AAAA,IACA,oBAAA;AAAA,IACA,wBAA2B,GAAA,KAAA;AAAA,IAC3B,sBAAyB,GAAA,KAAA;AAAA,IACzB,eAAkB,GAAA,KAAA;AAAA,IAClB,UAAA;AAAA,IACA,MAAS,GAAA,CAAA;AAAA,IACT,OAAA;AAAA,IACA,aAAa,EAAC;AAAA,IACd,yBAAA;AAAA,IACA,SAAA;AAAA,IACA,uBAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAe,GAAA,IAAA;AAAA,IACf,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,qBAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,KAEF,GACG,KAAA;AACH,IAAM,MAAA;AAAA,MACJ,OAAA;AAAA,MACA,kBAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,iBAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAgB,EAAA,qBAAA;AAAA,MAChB,iBAAmB,EAAA,wBAAA;AAAA,MACnB,mBAAqB,EAAA,0BAAA;AAAA,MACrB,qBAAA;AAAA,MACA;AAAA,QACE,aAAc,EAAA;AAElB,IAAA,MAAM,gBAAmB,GAAA,EAAE,GAAG,iBAAA,EAAmB,GAAG,UAAW,EAAA;AAE/D,IAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5D,IAAA,MAAM,CAAC,cAAgB,EAAA,iBAAiB,CAAI,GAAA,QAAA,CAA4C,EAAE,CAAA;AAC1F,IAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAI,SAA6B,oBAAoB,CAAA;AACvG,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,IAAI,CAAA;AAErD,IAAM,MAAA,kBAAA,GAAqB,OAA4B,IAAI,CAAA;AAC3D,IAAM,MAAA,UAAA,GAAa,MAAkC,CAAA,EAAE,CAAA;AACvD,IAAM,MAAA,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,IAAM,MAAA,YAAA,GAAe,OAAyB,IAAI,CAAA;AAClD,IAAM,MAAA,gBAAA,GAAmB,OAA4B,IAAI,CAAA;AACzD,IAAM,MAAA,iBAAA,GAAoB,OAA4B,IAAI,CAAA;AAG1D,IAAA,MAAM,EAAE,WAAA,EAAa,uBAAwB,EAAA,GAAI,eAAgB,CAAA;AAAA,MAC/D,KAAA;AAAA,MACA,UAAU,oBAAwB,IAAA,EAAA;AAAA,MAClC,cAAA;AAAA,MACA,YAAc,EAAA,mBAAA;AAAA,MACd,OAAA;AAAA,MACA,cAAgB,EAAA,qBAAA;AAAA,MAChB,KAAO,EAAA;AAAA,KACR,CAAA;AAED,IAAM,MAAA,EAAE,oBAAqB,EAAA,GAAI,qBAAsB,CAAA;AAAA,MACrD,wBAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACD,CAAA;AACD,IAAA,MAAM,EAAE,kBAAoB,EAAA,cAAA,EAAmB,GAAA,gBAAA,CAAiB,YAAY,YAAY,CAAA;AACxF,IAAM,MAAA,EAAE,uBAAwB,EAAA,GAAI,sBAAuB,EAAA;AAE3D,IAAM,MAAA,qBAAA,GAAwB,OAC5B,aAAA,EACA,cACkC,KAAA;AAElC,MAAI,IAAA,CAAC,6BAA6B,wBAA0B,EAAA;AAC1D,QAAA;AAAA;AAGF,MAAI,IAAA;AACF,QAAM,MAAA,SAAA,GAAY,MAAM,sBAAuB,CAAA;AAAA,UAC7C,QAAU,EAAA,yBAAA;AAAA,UACV,aAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAO,OAAA,SAAA;AAAA,eACA,KAAO,EAAA;AACd,QAAQ,OAAA,CAAA,KAAA,CAAM,uCAAuC,KAAK,CAAA;AAE1D,QAAO,OAAA,MAAA;AAAA;AACT,KACF;AAEA,IAAA,MAAM,sBAAsB,OAAO;AAAA,MACjC,MAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KAMI,KAAA;AACJ,MAAA,IAAI,iBAAoB,GAAA,EAAA;AACxB,MAAI,IAAA;AACF,QAAA,IAAI,OAAO,KACT,EAAA,YAAA,GAAe,IACf,EAAA,cAAA,EACA,cAAc,KACd,EAAA,KAAA;AAEF,QAAS,OAAA,EAAE,MAAM,KAAM,EAAA,GAAI,MAAM,MAAO,CAAA,IAAA,EAAS,EAAA,CAAC,IAAO,EAAA;AACvD,UAAA,IAAI,YAAc,EAAA;AAChB,YAAe,YAAA,GAAA,KAAA;AACf,YAAe,YAAA,IAAA;AAAA;AAGjB,UAAM,MAAA,KAAA,GAAQ,IAAI,WAAA,EACf,CAAA,MAAA,CAAO,KAAK,CAAA,CACZ,KAAM,CAAA,MAAM,CACZ,CAAA,MAAA,CAAO,CAAC,IAAA,KAAS,IAAK,CAAA,UAAA,CAAW,QAAQ,CAAC,CAC1C,CAAA,GAAA,CAAI,CAAC,IAAA,KAAS,IAAK,CAAA,OAAA,CAAQ,SAAW,EAAA,EAAE,CAAE,CAAA,IAAA,EAAM,CAAA;AAEnD,UAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACxB,YAAI,IAAA;AACF,cAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,KAAA,CAAM,IAAI,CAAA;AAE7B,cAAI,IAAA,KAAA,CAAM,SAAS,mBAAqB,EAAA;AACtC,gBAAA,iBAAA,IAAqB,KAAM,CAAA,OAAA;AAE3B,gBAAA,kBAAA;AAAA,kBACE,iBAAkB,CAAA;AAAA,oBAChB,MAAM,KAAM,CAAA;AAAA,mBACb;AAAA,iBACH;AAEA,gBAAM,MAAA,gBAAA,GAAmB,kBAAkB,iBAAiB,CAAA;AAC5D,gBAAA,WAAA,GAAc,gBAAiB,CAAA,SAAA;AAE/B,gBAAA,IAAI,WAAa,EAAA;AACf,kBAAA,MAAM,kBACJ,gBAAiB,CAAA,uBAAA,GAA0B,iBAAiB,QAAY,IAAA,IAAI,KAC5E,iBACA,IAAA,eAAA;AAEF,kBAAA,kBAAA,CAAmB,eAAgB,CAAA,EAAE,eAAgB,EAAC,CAAC,CAAA;AAAA;AACzD;AAGF,cAAI,IAAA,KAAA,CAAM,SAAS,gBAAkB,EAAA;AACnC,gBAAA,cAAA,GAAiB,KAAM,CAAA,cAAA;AACvB,gBAAA,kBAAA;AAAA,kBACE,gBAAiB,CAAA;AAAA,oBACf,cAAA;AAAA,oBACA,SAAS,KAAM,CAAA;AAAA,mBAChB;AAAA,iBACH;AAAA;AAGF,cAAI,IAAA,KAAA,CAAM,SAAS,mBAAqB,EAAA;AACtC,gBAAA,cAAA,GAAiB,KAAM,CAAA,cAAA;AAEvB,gBAAA,kBAAA;AAAA,kBACE,eAAgB,CAAA;AAAA,oBACd,gBAAgB,KAAM,CAAA,cAAA;AAAA,oBACtB,QAAQ,KAAM,CAAA,MAAA;AAAA,oBACd,UAAU,KAAM,CAAA,QAAA;AAAA,oBAChB,QAAQ,KAAM,CAAA,MAAA;AAAA,oBACd,eAAe,KAAM,CAAA,MAAA;AAAA,oBACrB,QAAA,EAAU,OAAO,UAAe,KAAA;AAC9B,sBAAI,IAAA,KAAA,CAAM,eAAe,kBAAoB,EAAA;AAC3C,wBAAA,MAAM,OAAU,GAAA,MAAM,mBAAoB,CAAA,KAAA,CAAM,WAAW,UAAU,CAAA;AAGrE,wBAAA,OAAO,6BAA8B,CAAA;AAAA,0BACnC,aAAA;AAAA,0BACA,cAAA;AAAA,0BACA,gBAAgB,KAAM,CAAA,cAAA;AAAA,0BACtB,UAAU,KAAM,CAAA,QAAA;AAAA,0BAChB;AAAA,yBACD,CAAA;AAAA;AAIH,sBAAA,OAAO,uBAAwB,CAAA;AAAA,wBAC7B,aAAA;AAAA,wBACA,cAAA;AAAA,wBACA,gBAAgB,KAAM,CAAA,cAAA;AAAA,wBACtB,UAAU,KAAM,CAAA,QAAA;AAAA,wBAChB;AAAA,uBACD,CAAA;AAAA;AACH,mBACD;AAAA,iBACH;AAAA;AACF,aACM,CAAA,MAAA;AACN,cAAA,OAAA,CAAQ,KAAK,qCAAqC,CAAA;AAAA;AACpD;AACF;AAGF,QAAA,OAAO,EAAE,MAAA,EAAQ,iBAAmB,EAAA,cAAA,EAAgB,WAAY,EAAA;AAAA,OAChE,SAAA;AACA,QAAA,MAAA,CAAO,WAAY,EAAA;AAAA;AACrB,KACF;AAEA,IAAA,MAAM,yBAAyB,OAAO;AAAA,MACpC,aAAA;AAAA,MACA;AAAA,KAII,KAAA;AACJ,MAAI,IAAA;AACF,QAAM,MAAA,iBAAA,GAAoB,sBAAsB,aAAa,CAAA;AAE7D,QAAM,MAAA,QAAA,GAAW,MAAM,iBAAkB,CAAA;AAAA,UACvC,QAAU,EAAA,oBAAA;AAAA,UACV,OAAA;AAAA,UACA,IAAM,EAAA;AAAA,YACJ,IAAM,EAAA,oBAAA;AAAA,YACN,cAAA;AAAA,YACA;AAAA;AACF,SACD,CAAA;AAED,QAAM,MAAA,MAAA,GAAS,QAAS,CAAA,IAAA,EAAM,SAAU,EAAA;AACxC,QAAA,IAAI,CAAC,MAAQ,EAAA;AAEb,QAAA,MAAM,EAAE,MAAQ,EAAA,cAAA,EAAgB,WAAY,EAAA,GAAI,MAAM,mBAAoB,CAAA;AAAA,UACxE,MAAA;AAAA,UACA,aAAA;AAAA,UACA,cAAA;AAAA,UACA,cAAc,MAAM;AAClB,YAAA,UAAA,GAAa,sCAAwC,EAAA,EAAE,cAAgB,EAAA,aAAA,EAAe,CAAA;AAAA;AACxF,SACD,CAAA;AAED,QAAA,IAAI,CAAC,MAAQ,EAAA;AAGb,QAAK,KAAA,iBAAA,CAAkB,IAAK,CAAA,CAAC,SAAc,KAAA;AACzC,UAAA,IAAI,SAAa,IAAA,SAAA,CAAU,MAAS,GAAA,CAAA,IAAK,CAAC,cAAgB,EAAA;AACxD,YAAA,kBAAA,CAAmB,oBAAqB,CAAA,EAAE,SAAU,EAAC,CAAC,CAAA;AAAA;AACxD,SACD,CAAA;AAED,QAAA,IAAI,WAAa,EAAA;AACf,UAAA,UAAA,GAAa,kBAAoB,EAAA,EAAE,cAAgB,EAAA,aAAA,EAAe,CAAA;AAAA,SAC7D,MAAA;AACL,UAAA,UAAA,GAAa,cAAgB,EAAA,EAAE,cAAgB,EAAA,aAAA,EAAe,CAAA;AAAA;AAChE,eACO,CAAG,EAAA;AACV,QAAQ,OAAA,CAAA,KAAA,CAAM,sCAAsC,CAAC,CAAA;AACrD,QAAA,kBAAA,CAAmB,eAAe,EAAE,KAAA,EAAO,iBAAiB,SAAa,IAAA,oBAAA,EAAsB,CAAC,CAAA;AAAA,OAChG,SAAA;AACA,QAAA,kBAAA,CAAmB,gBAAgB,CAAA;AAAA;AACrC,KACF;AAEA,IAAA,MAAM,0BAA0B,OAAO;AAAA,MACrC,aAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KAOI,KAAA;AACJ,MAAA,kBAAA,CAAmB,cAAc,CAAA;AAEjC,MAAI,IAAA;AACF,QAAM,MAAA,QAAA,GAAW,MAAM,iBAAkB,CAAA;AAAA,UACvC,QAAU,EAAA,oBAAA;AAAA,UACV,OAAA;AAAA,UACA,IAAM,EAAA;AAAA,YACJ,IAAM,EAAA,eAAA;AAAA,YACN,cAAA;AAAA,YACA,aAAA;AAAA,YACA,cAAA;AAAA,YACA,QAAA;AAAA,YACA;AAAA;AACF,SACD,CAAA;AAED,QAAM,MAAA,MAAA,GAAS,QAAS,CAAA,IAAA,EAAM,SAAU,EAAA;AACxC,QAAA,IAAI,CAAC,MAAQ,EAAA;AAEb,QAAA,MAAM,mBAAoB,CAAA;AAAA,UACxB,MAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,eACM,CAAG,EAAA;AACV,QAAQ,OAAA,CAAA,KAAA,CAAM,uCAAuC,CAAC,CAAA;AACtD,QAAA,kBAAA,CAAmB,eAAe,EAAE,KAAA,EAAO,iBAAiB,SAAa,IAAA,oBAAA,EAAsB,CAAC,CAAA;AAAA,OAChG,SAAA;AACA,QAAA,kBAAA,CAAmB,gBAAgB,CAAA;AACnC,QAAA,cAAA,CAAe,KAAK,CAAA;AAAA;AACtB,KACF;AAEA,IAAA,MAAM,gCAAgC,OAAO;AAAA,MAC3C,aAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KAOI,KAAA;AACJ,MAAA,kBAAA,CAAmB,cAAc,CAAA;AAEjC,MAAI,IAAA;AACF,QAAM,MAAA,QAAA,GAAW,MAAM,iBAAkB,CAAA;AAAA,UACvC,QAAU,EAAA,oBAAA;AAAA,UACV,OAAA;AAAA,UACA,IAAM,EAAA;AAAA,YACJ,IAAM,EAAA,yBAAA;AAAA,YACN,cAAA;AAAA,YACA,aAAA;AAAA,YACA,cAAA;AAAA,YACA,QAAA;AAAA,YACA;AAAA;AACF,SACD,CAAA;AAED,QAAM,MAAA,MAAA,GAAS,QAAS,CAAA,IAAA,EAAM,SAAU,EAAA;AACxC,QAAA,IAAI,CAAC,MAAQ,EAAA;AAEb,QAAA,MAAM,mBAAoB,CAAA;AAAA,UACxB,MAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,eACM,CAAG,EAAA;AACV,QAAQ,OAAA,CAAA,KAAA,CAAM,uCAAuC,CAAC,CAAA;AACtD,QAAA,kBAAA,CAAmB,eAAe,EAAE,KAAA,EAAO,iBAAiB,SAAa,IAAA,oBAAA,EAAsB,CAAC,CAAA;AAAA,OAChG,SAAA;AACA,QAAA,kBAAA,CAAmB,gBAAgB,CAAA;AACnC,QAAA,cAAA,CAAe,KAAK,CAAA;AAAA;AACtB,KACF;AAGA,IAAA,MAAM,sBAAsB,OAAO;AAAA,MACjC,WAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,gBAAAyB,EAAAA,iBAAAA;AAAA,MACA,cAAAC,EAAAA;AAAA,KAOI,KAAA;AACJ,MAAM,MAAA,cAAA,GAAiB,MAAM,SAAU,CAAA;AAAA,QACrC,QAAU,EAAA,cAAA;AAAA,QACV,KAAO,EAAA,WAAA;AAAA,QACP,YAAc,EAAA,mBAAA;AAAA,QACd,OAAA;AAAA,QACA,cAAA;AAAA,QACA,UAAA;AAAA,QACA,gBAAAD,EAAAA,iBAAAA;AAAA,QACA,cAAAC,EAAAA;AAAA,OACD,CAAA;AAED,MAAI,IAAA,cAAA,CAAe,OAAQ,CAAA,MAAA,KAAW,CAAG,EAAA;AACvC,QAAA,UAAA,GAAa,mBAAqB,EAAA,EAAE,cAAgB,EAAA,WAAA,EAAa,CAAA;AAEjE,QAAA;AAAA;AAGF,MAAA,kBAAA;AAAA,QACE,gBAAiB,CAAA;AAAA,UACf,eAAe,cAAe,CAAA,aAAA;AAAA,UAC9B,SAAS,cAAe,CAAA;AAAA,SACzB;AAAA,OACH;AAEA,MAAA,OAAO,cAAe,CAAA,aAAA;AAAA,KACxB;AAOA,IAAM,MAAA,aAAA,GAAgB,OAAO,EAAE,WAAA,GAAc,MAAM,IAAK,EAAA,EAAG,OAAgC,KAAA;AACzF,MAAA,IAAI,CAAC,WAAa,EAAA;AAElB,MAAM,MAAA,cAAA,GAAiB,yBAAyB,oBAAqB,EAAA;AACrE,MAAA,wBAAA,CAAyB,cAAc,CAAA;AAEvC,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA,oBAAA,CAAqB,QAAQ,MAAM,CAAA;AACnC,MAAmB,kBAAA,EAAA;AAEnB,MAAA,kBAAA;AAAA,QACE,eAAgB,CAAA;AAAA,UACd,KAAO,EAAA;AAAA,SACR;AAAA,OACH;AAGA,MAAA,MAAM,QAAQ,OAAQ,EAAA;AAGtB,MAAA,iBAAA,CAAkB,SAAS,KAAM,EAAA;AAEjC,MAAI,IAAA;AACF,QAAM,MAAA,UAAA,GAAa,EAAE,GAAG,QAAS,EAAA;AACjC,QAAM,MAAA,aAAA,GAAgB,MAAM,mBAAoB,CAAA;AAAA,UAC9C,WAAA;AAAA,UACA,cAAA;AAAA,UACA,UAAA;AAAA,UACA,gBAAA;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,IAAI,aAAe,EAAA;AACjB,UACE,KAAA,IAAA,UAAA,GAAa,MAAM,IAAM,EAAA;AAAA,YACvB,cAAA;AAAA,YACA,WAAA;AAAA,YACA,aAAA;AAAA,YACA,GAAG,KAAM,CAAA;AAAA,WACV,CAAA;AAEH,UAAA,MAAM,sBAAuB,CAAA;AAAA,YAC3B,aAAA;AAAA,YACA;AAAA,WACD,CAAA;AAAA,SACI,MAAA;AACL,UAAA,kBAAA,CAAmB,iBAAiB,CAAA;AAAA;AACtC,eACO,KAAO,EAAA;AACd,QAAQ,OAAA,CAAA,KAAA,CAAM,4BAA4B,KAAK,CAAA;AAG/C,QAAA,KAAA,IACE,UAAa,GAAA,CAAA,EAAG,KAAM,CAAA,IAAI,CAAmB,eAAA,CAAA,EAAA;AAAA,UAC3C,cAAA;AAAA,UACA,WAAA;AAAA,UACA,GAAG,KAAM,CAAA;AAAA,SACV,CAAA;AAEH,QAAA,kBAAA,CAAmB,eAAe,EAAE,KAAA,EAAO,iBAAiB,SAAa,IAAA,oBAAA,EAAsB,CAAC,CAAA;AAAA,OAChG,SAAA;AACA,QAAA,cAAA,CAAe,KAAK,CAAA;AAAA;AACtB,KACF;AAEA,IAAM,MAAA,eAAA,GAAkB,CAAC,UAAwB,KAAA;AAE/C,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,QAAA,CAAS,UAAU,CAAA;AACnB,QAAK,KAAA,aAAA,CAAc,EAAE,WAAa,EAAA,UAAA,EAAY,OAAO,EAAE,IAAA,EAAM,+BAAgC,EAAA,EAAG,CAAA;AAEhG,QAAA;AAAA;AAGF,MAAA,QAAA,CAAS,EAAE,CAAA;AACX,MAAA,gBAAA,CAAiB,EAAE,CAAA;AACnB,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAA,kBAAA,CAAmB,UAAU,CAAA;AAC7B,MAAA,oBAAA,CAAqB,CAAC,CAAA;AACtB,MAAA,iBAAA,CAAkB,EAAE,CAAA;AACpB,MAA2B,0BAAA,EAAA;AAE3B,MAAA,UAAA,GAAa,oBAAsB,EAAA,EAAE,iBAAmB,EAAA,qBAAA,EAAuB,CAAA;AAE/E,MAAA,IAAI,mBAAmB,OAAS,EAAA;AAC9B,QAAmB,kBAAA,CAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,MAAA;AAAA;AAC5C,KACF;AAGA,IAAA,mBAAA,CAAoB,KAAK,OAAO;AAAA,MAC9B,eAAA;AAAA,MACA,kBAAA,EAAoB,CAAC,IAAkB,KAAA;AACrC,QAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,OACtB;AAAA,MACA,uBAAA;AAAA,MACA,gBAAA,EAAkB,MAAM,gBAAiB,CAAA,OAAA,EAAS,OAAW,IAAA,iBAAA,CAAkB,SAAS,KAAM,EAAA;AAAA,MAC9F,eAAA,EAAiB,CAAC,UAAA,GAAsB,IAAS,KAAA;AAC/C,QAAA,8BAAA,CAA+B,UAAU,CAAA;AAAA;AAC3C,KACA,CAAA,CAAA;AAGF,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,sBAAA,CAAuB,oBAAoB,CAAA;AAAA,KAC7C,EAAG,CAAC,oBAAoB,CAAC,CAAA;AAEzB,IAAM,MAAA,oBAAA,GAAuB,CAAC,QAAkC,KAAA;AAC9D,MAAA,QAAA,CAAS,MAAM,MAAS,GAAA,MAAA;AACxB,MAAA,QAAA,CAAS,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA,QAAA,CAAS,YAAY,CAAA,EAAA,CAAA;AAAA,KAClD;AAGA,IAAA,MAAM,mBAAsB,GAAA,OAAO,WAAsB,GAAA,KAAA,CAAM,MAAW,KAAA;AACxE,MAAM,MAAA,aAAA,CAAc,EAAE,WAAa,EAAA,KAAA,EAAO,EAAE,IAAM,EAAA,gCAAA,IAAoC,CAAA;AAAA,KACxF;AAEA,IAAA,MAAM,cAAiB,GAAA,OAAO,QAA4B,EAAA,aAAA,EAAuB,WAAwB,KAAA;AACvG,MAAA,IAAI,CAAC,gBAAkB,EAAA;AAGvB,MAAA,kBAAA;AAAA,QACE,eAAgB,CAAA;AAAA,UACd,QAAU,EAAA,QAAA;AAAA,UACV,KAAO,EAAA;AAAA,SACR;AAAA,OACH;AAEA,MAAI,IAAA;AACF,QAAA,MAAM,YAAa,CAAA;AAAA,UACjB,QAAU,EAAA,gBAAA;AAAA,UACV,aAAA;AAAA,UACA,QAAA;AAAA,UACA,OAAA;AAAA,UACA,cAAgB,EAAA;AAAA,SACjB,CAAA;AAED,QAAa,UAAA,GAAA,QAAA,KAAa,QAAW,GAAA,iBAAA,GAAoB,iBAAmB,EAAA;AAAA,UAC1E,cAAgB,EAAA,qBAAA;AAAA,UAChB;AAAA,SACD,CAAA;AAAA,eACM,KAAO,EAAA;AACd,QAAQ,OAAA,CAAA,KAAA,CAAM,2BAA2B,KAAK,CAAA;AAE9C,QAAA,kBAAA;AAAA,UACE,iBAAkB,CAAA;AAAA,YAChB,KAAO,EAAA;AAAA,WACR;AAAA,SACH;AAAA;AACF,KACF;AAEA,IAAM,MAAA,0BAAA,GAA6B,OAAO,MAAA,EAAgB,aAA0B,KAAA;AAClF,MAAA,IAAI,CAAC,sBAAwB,EAAA;AAE7B,MAAI,IAAA;AACF,QAAA,MAAM,kBAAmB,CAAA;AAAA,UACvB,QAAU,EAAA,sBAAA;AAAA,UACV,aAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,eACM,KAAO,EAAA;AACd,QAAQ,OAAA,CAAA,KAAA,CAAM,kCAAkC,KAAK,CAAA;AAAA;AACvD,KACF;AAEA,IAAM,MAAA,oBAAA,GAAuB,OAAO,WAAyB,KAAA;AAE3D,MAAM,MAAA,UAAA,GAAa,WAAgB,KAAA,MAAA,GAAY,WAAc,GAAA,aAAA;AAE7D,MAAI,IAAA,UAAA,CAAW,MAAQ,EAAA;AACrB,QAAA,QAAA,CAAS,UAAU,CAAA;AACnB,QAAA,gBAAA,CAAiB,EAAE,CAAA;AACnB,QAAM,MAAA,aAAA,CAAc,EAAE,WAAa,EAAA,UAAA,EAAY,OAAO,EAAE,IAAA,EAAM,kCAAmC,EAAA,EAAG,CAAA;AAAA;AACtG,KACF;AAEA,IAAM,MAAA,4BAAA,GAA+B,CAAC,UAA2B,KAAA;AAC/D,MAAA,IAAI,WAAW,cAAgB,EAAA;AAC7B,QAAA,UAAA,GAAa,6BAA+B,EAAA;AAAA,UAC1C,cAAgB,EAAA,qBAAA;AAAA,UAChB,UAAU,UAAW,CAAA;AAAA,SACtB,CAAA;AACD,QAAA,oBAAA,CAAqB,WAAW,cAAc,CAAA;AAE9C,QAAA;AAAA;AAGF,MAAK,KAAA,aAAA,CAAc,EAAE,WAAA,EAAa,UAAW,CAAA,QAAA,EAAU,OAAO,EAAE,IAAA,EAAM,4BAA6B,EAAA,EAAG,CAAA;AAAA,KACxG;AAEA,IAAM,MAAA,iCAAA,GAAoC,CAAC,UAA2B,KAAA;AAEpE,MAAK,KAAA,aAAA,CAAc,EAAE,WAAA,EAAa,UAAW,CAAA,QAAA,EAAU,OAAO,EAAE,IAAA,EAAM,iCAAkC,EAAA,EAAG,CAAA;AAAA,KAC7G;AAEA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,MAAM,eAAe,MAAM;AACzB,QAAA,MAAM,eAAe,MAAO,CAAA,WAAA,GAAc,OAAO,WAAe,IAAA,QAAA,CAAS,gBAAgB,YAAe,GAAA,GAAA;AACxG,QAAA,kBAAA,CAAmB,CAAC,YAAY,CAAA;AAAA,OAClC;AAEA,MAAO,MAAA,CAAA,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAE9C,MAAA,OAAO,MAAM,MAAA,CAAO,mBAAoB,CAAA,QAAA,EAAU,YAAY,CAAA;AAAA,KAChE,EAAG,EAAE,CAAA;AAEL,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,OAAO,MAAM;AACX,QAAA,cAAA,CAAe,QAAQ,CAAC,KAAA,KAAU,IAAI,eAAgB,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA;AAAA,OACtE;AAAA,KACF,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,IAAM,MAAA,iBAAA,GAAoB,CAAC,KAA+C,KAAA;AACxE,MAAM,MAAA,KAAA,GAAQ,MAAM,MAAO,CAAA,KAAA;AAC3B,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,MAAM,YAAY,KAAM,CAAA,IAAA,CAAK,KAAK,CAAE,CAAA,GAAA,CAAI,CAAC,IAAU,MAAA;AAAA,UACjD,IAAA;AAAA,UACA,OAAA,EAAS,GAAI,CAAA,eAAA,CAAgB,IAAI;AAAA,SACjC,CAAA,CAAA;AACF,QAAA,iBAAA,CAAkB,CAAC,IAAS,KAAA,CAAC,GAAG,IAAM,EAAA,GAAG,SAAS,CAAC,CAAA;AAAA;AAErD,MAAA,IAAI,aAAa,OAAS,EAAA;AACxB,QAAA,YAAA,CAAa,QAAQ,KAAQ,GAAA,EAAA;AAAA;AAC/B,KACF;AAEA,IAAM,MAAA,WAAA,GAAc,CAAC,KAAkB,KAAA;AACrC,MAAA,iBAAA,CAAkB,CAAC,IAAS,KAAA;AAC1B,QAAA,GAAA,CAAI,eAAgB,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,OAAO,CAAA;AAEvC,QAAA,OAAO,KAAK,MAAO,CAAA,CAAC,CAAG,EAAA,CAAA,KAAM,MAAM,KAAK,CAAA;AAAA,OACzC,CAAA;AAAA,KACH;AAEA,IAAM,MAAA,sBAAA,GAAyB,CAAC,YAAyB,KAAA;AACvD,MAAA,sBAAA,CAAuB,YAAY,CAAA;AACnC,MAAA,kBAAA,GAAqB,YAAY,CAAA;AAAA,KACnC;AAGA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,MAAM,kBAAkB,MAAM;AAC5B,QAAA,MAAM,SAAY,GAAA,IAAI,eAAgB,CAAA,MAAA,CAAO,SAAS,MAAM,CAAA;AAC5D,QAAM,MAAA,iBAAA,GAAoB,SAAU,CAAA,GAAA,CAAI,cAAc,CAAA;AAEtD,QAAA,IAAI,CAAC,iBAAmB,EAAA;AACtB,UAAA,QAAA,CAAS,EAAE,CAAA;AACX,UAAA,gBAAA,CAAiB,EAAE,CAAA;AACnB,UAAA,cAAA,CAAe,KAAK,CAAA;AACpB,UAAA,kBAAA,CAAmB,UAAU,CAAA;AAC7B,UAAA,oBAAA,CAAqB,CAAC,CAAA;AACtB,UAAA,iBAAA,CAAkB,EAAE,CAAA;AACpB,UAAA,IAAI,mBAAmB,OAAS,EAAA;AAC9B,YAAmB,kBAAA,CAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,MAAA;AAAA;AAC5C;AACF,OACF;AAEA,MAAO,MAAA,CAAA,gBAAA,CAAiB,YAAY,eAAe,CAAA;AAEnD,MAAA,OAAO,MAAM,MAAA,CAAO,mBAAoB,CAAA,UAAA,EAAY,eAAe,CAAA;AAAA,KACrE,EAAG,EAAE,CAAA;AAGL,IAAM,MAAA,2BAAA,GAA8B,CAAC,QAAqB,KAAA;AACxD,MAAA,UAAA,GAAa,4BAA8B,EAAA,EAAE,cAAgB,EAAA,qBAAA,EAAuB,UAAU,CAAA;AAC9F,MAAK,KAAA,aAAA,CAAc,EAAE,WAAa,EAAA,QAAA,EAAU,OAAO,EAAE,IAAA,EAAM,4BAA6B,EAAA,EAAG,CAAA;AAAA,KAC7F;AAGA,IAAM,MAAA,yBAAA,GAA4B,CAAC,EAAE,MAAA,EAAQ,eAAe,KAAAC,EAAAA,MAAAA,EAAO,QAA0B,KAAA;AAC3F,MAAA,UAAA,GAAa,0BAA4B,EAAA;AAAA,QACvC,cAAgB,EAAA,qBAAA;AAAA,QAChB,aAAA;AAAA,QACA,QAAQ,MAAO,CAAA;AAAA,OAChB,CAAA;AACD,MAAA,qBAAA,GAAwB,EAAE,MAAQ,EAAA,aAAA,EAAe,KAAAA,EAAAA,MAAAA,EAAO,QAAQ,CAAA;AAAA,KAClE;AAEA,IACE,uBAAA3B,cAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAG,CAAA,gEAAA,EAAkE,SAAS,CAAA;AAAA,QACzF,WAAU,EAAA;AAAA,OAAA;AAAA,MAGR,CAAA,YAAA,IAAgB,CAAC,WACjB,qBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,WAAU,EAAA,QAAA;AAAA,UACV,YAAY,gBAAiB,CAAA,UAAA;AAAA,UAC7B,yBAAyB,MAAM;AAC7B,YAA0B,uBAAA,IAAA;AAAA,WAC5B;AAAA,UACA,iBAAA,EAAmB,MAAM,KAAK,eAAgB,EAAA;AAAA,UAC9C,kBAAA,EAAoB,MAAM,aAAgB,IAAA;AAAA,UAC1C,SAAU,EAAA;AAAA;AAAA,OACZ;AAAA,sBAEDA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,SAAU,EAAA,kCAAA,EAAmC,KAAK,YAC5D,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,eACE,EAAA,IAAA,EAAA,qBAAA,mBACEA,cAAA,CAAA,aAAA,CAAA,mBAAA,EAAA,IAAoB,CACnB,GAAA,CAAC,8BAGDA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,MAAO,CAAA,GAAA;AAAA,QAAP;AAAA,UACC,GAAI,EAAA,QAAA;AAAA,UACJ,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,EAAG,EAAA;AAAA,UAC7B,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,UAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAI,EAAA;AAAA,UAC5B,SAAU,EAAA;AAAA,SAAA;AAAA,wBAGVA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,oDACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,UAAC,MAAO,CAAA,GAAA;AAAA,UAAP;AAAA,YACC,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,EAAG,EAAA;AAAA,YAC7B,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,YAC5B,UAAY,EAAA,EAAE,QAAU,EAAA,GAAA,EAAK,OAAO,GAAI;AAAA,WAAA;AAAA,0BAExCA,cAAA,CAAA,aAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,GAAK,EAAA,gBAAA;AAAA,cACL,KAAA;AAAA,cACA,aAAA,EAAe,CAAC,KAAU,KAAA;AACxB,gBAAA,QAAA,CAAS,KAAK,CAAA;AACd,gBAAA,IAAI,mBAAmB,OAAS,EAAA;AAC9B,kBAAA,oBAAA,CAAqB,mBAAmB,OAAO,CAAA;AAAA;AACjD,eACF;AAAA,cACA,QAAA,EAAU,MAAM,KAAK,mBAAoB,EAAA;AAAA,cACzC,UAAY,EAAA,gBAAA;AAAA,cACZ,WAAA;AAAA,cACA,mBAAA;AAAA,cACA,kBAAoB,EAAA,sBAAA;AAAA,cACpB,sBAAA;AAAA,cACA,cAAA;AAAA,cACA,aAAe,EAAA,iBAAA;AAAA,cACf,aAAe,EAAA,WAAA;AAAA,cACf,WAAA;AAAA,cACA,uBAAA;AAAA,cACA,8BAAgC,EAAA;AAAA;AAAA;AAClC,SAEJ,CAAA;AAAA,wBAGAA,cAAA,CAAA,aAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,WAAa,EAAA,kBAAA;AAAA,YACb,eAAiB,EAAA,4BAAA;AAAA,YACjB,OAAO,gBAAiB,CAAA;AAAA;AAAA,SAC1B;AAAA,QAGC,iBAAA,IAAqB,iBAAkB,CAAA,MAAA,GAAS,CAC/C,oBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,0BACb,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,WACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,eAAA,EAAiB,qBAAqB,EAAC;AAAA,YACvC,aAAA,EAAe,CAAC,MAAA,KACd,yBAA0B,CAAA;AAAA,cACxB,MAAA;AAAA,cACA,aAAe,EAAA,EAAA;AAAA,cACf,KAAO,EAAA,EAAA;AAAA,cACP,MAAQ,EAAA;AAAA,aACT;AAAA;AAAA,SAGP,CACF;AAAA,OAGN,oBAIEA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,MAAO,CAAA,GAAA;AAAA,QAAP;AAAA,UACC,GAAI,EAAA,SAAA;AAAA,UACJ,OAAA,EAAS,EAAE,OAAA,EAAS,CAAE,EAAA;AAAA,UACtB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAE,EAAA;AAAA,UACtB,IAAA,EAAM,EAAE,OAAA,EAAS,CAAE,EAAA;AAAA,UACnB,UAAA,EAAY,EAAE,QAAA,EAAU,GAAI,EAAA;AAAA,UAC5B,SAAU,EAAA;AAAA,SAAA;AAAA,QAGT,OAAQ,CAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,CACpB,qBAAAA,cAAA,CAAA,aAAA;AAAA,UAAC,MAAO,CAAA,GAAA;AAAA,UAAP;AAAA,YACC,GAAK,EAAA,CAAA;AAAA,YACL,KAAK,CAAC,EAAA,KAAQ,UAAW,CAAA,OAAA,CAAQ,CAAC,CAAI,GAAA,EAAA;AAAA,YACtC,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,EAAG,EAAA;AAAA,YAC7B,OAAS,EAAA,EAAE,OAAS,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAAA,YAC5B,YAAY,EAAE,QAAA,EAAU,GAAK,EAAA,KAAA,EAAO,IAAI,GAAI;AAAA,WAAA;AAAA,0BAE5CA,cAAA,CAAA,aAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA,CAAA;AAAA,cACP,QAAQ,MAAO,CAAA,MAAA;AAAA,cACf,UAAU,MAAO,CAAA,QAAA;AAAA,cACjB,OAAO,MAAO,CAAA,KAAA;AAAA,cACd,eAAe,MAAO,CAAA,aAAA;AAAA,cACtB,eAAe,MAAO,CAAA,aAAA;AAAA,cACtB,UAAU,MAAO,CAAA,QAAA;AAAA,cACjB,UAAA,EAAY,CAAC,QAAa,KAAA,KAAK,eAAe,QAAU,EAAA,MAAA,CAAO,eAAgB,CAAC,CAAA;AAAA,cAChF,eAAA;AAAA,cACA,UAAY,EAAA,gBAAA;AAAA,cACZ,aAAA;AAAA,cACA,eAAA;AAAA,cACA,SAAS,MAAO,CAAA,OAAA;AAAA,cAChB,iBAAmB,EAAA,yBAAA;AAAA,cACnB,YAAA,EAAc,CAAM,KAAA,OAAA,CAAQ,MAAS,GAAA,CAAA;AAAA,cACrC,wBAAwB,CAAC,MAAA,KACvB,KAAK,0BAA2B,CAAA,MAAA,EAAQ,OAAO,aAAc;AAAA;AAAA,WAEjE;AAAA,UACC,CAAM,KAAA,OAAA,CAAQ,MAAS,GAAA,CAAA,IACtB,CAAC,wBACD,IAAA,MAAA,CAAO,iBACP,IAAA,MAAA,CAAO,KAAU,KAAA,WAAA,oBACdA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,WAAU,MACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,YAAC,iBAAA;AAAA,YAAA;AAAA,cACC,WAAW,MAAO,CAAA,iBAAA;AAAA,cAClB,eAAiB,EAAA;AAAA;AAAA,WAErB;AAAA,SAGP;AAAA,OAEL,CAEJ,CAAA,EACC,WAAe,IAAA,OAAA,CAAQ,SAAS,CAC/B,oBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,iBACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,WAAW,OAAQ,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA;AAAA,UACxC,WAAa,EAAA,iBAAA;AAAA,UACb,UAAA,EAAY,CAAC,KAAU,KAAA;AACrB,YAAA,oBAAA,CAAqB,KAAK,CAAA;AAC1B,YAAA,cAAA,CAAe,KAAK,CAAA;AAAA,WACtB;AAAA,UACA;AAAA;AAAA,OAEJ,CAGD,EAAA,UAAA,IAAc,EAAE,WAAe,IAAA,YAAA,CAAA,iDAC7B,KAAI,EAAA,EAAA,SAAA,EAAU,wHACb,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,gBAAa,QAAS,EAAA,MAAA,EAAO,WAAU,QAAS,EAAA,CAAA,EAChD,UACH,CAEJ,CAAA;AAAA,MAEC,eAAe,YACd,oBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,GAAK,EAAA,iBAAA;AAAA,UACL,YAAc,EAAA,aAAA;AAAA,UACd,aAAe,EAAA,gBAAA;AAAA,UACf,WAAA;AAAA,UACA,oBAAA;AAAA,UACA,UAAY,EAAA;AAAA;AAAA,OACd;AAAA,MAGD,eAAmB,IAAA,WAAA,oBAAgBA,cAAA,CAAA,aAAA,CAAA,mBAAA,EAAA,EAAoB,SAAS,kBAAoB,EAAA;AAAA,KACvF;AAAA;AAGN,CAAA;AAEA,mBAAA,CAAoB,WAAc,GAAA,YAAA;AAE5B,MAAA,UAAA,GAAa,UAA8C,CAAA,CAAC,EAAE,YAAA,EAAc,GAAG,KAAM,EAAA,EAAG,GAC5F,qBAAAA,cAAA,CAAA,aAAA,CAAC,mBAAoB,EAAA,EAAA,KAAA,EAAO,gCACzBA,cAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,EAAmB,UAAY,EAAA,KAAA,CAAM,UACpC,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,mBAAqB,EAAA,EAAA,GAAG,KAAO,EAAA,GAAA,EAAU,CAC5C,CACF,CACD;AAED,UAAA,CAAW,WAAc,GAAA,YAAA;;;;","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]}