@tarojs/runtime 4.0.0-alpha.0 → 4.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/runtime.cjs.d.ts +2 -1
- package/dist/runtime.cjs.js +7 -2
- package/dist/runtime.esm.d.ts +2 -1
- package/dist/runtime.esm.js +7 -2
- package/dist/runtime.esm.js.map +1 -1
- package/dist/runtime.h5.d.ts +2 -1
- package/dist/runtime.h5.js +7 -2
- package/package.json +3 -3
package/dist/runtime.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.esm.js","sources":["../src/constants/index.ts","../src/dom-external/mutation-observer/implements.ts","../src/dom-external/mutation-observer/index.ts","../src/utils/index.ts","../src/dom/class-list.ts","../src/dom/event-source.ts","../src/env.ts","../src/hydrate.ts","../src/dom/event-target.ts","../src/dom/node.ts","../src/dom/style_properties.ts","../src/dom/style.ts","../src/dom/tree.ts","../src/dom/element.ts","../src/options.ts","../src/dom-external/inner-html/scaner.ts","../src/dom-external/inner-html/utils.ts","../src/dom-external/inner-html/style.ts","../src/dom-external/inner-html/tags.ts","../src/dom-external/inner-html/parser.ts","../src/dom-external/inner-html/html.ts","../src/dom-external/element.ts","../src/dom-external/node.ts","../src/dom-external/index.ts","../src/dom/event.ts","../src/dom/form.ts","../src/perf.ts","../src/dom/root.ts","../src/dom/text.ts","../src/bom/URLSearchParams.ts","../src/bom/URL.ts","../src/dom/anchor-element.ts","../src/dom/transfer.ts","../src/dom/document.ts","../src/bom/document.ts","../src/bom/getComputedStyle.ts","../src/emitter/emitter.ts","../src/utils/cache.ts","../src/bom/history.ts","../src/current.ts","../src/bom/location.ts","../src/bom/navigator.ts","../src/bom/raf.ts","../src/bom/window.ts","../src/dom/svg.ts","../src/dsl/common.ts","../src/next-tick.ts"],"sourcesContent":["export const PROPERTY_THRESHOLD = 2046\nexport const TARO_RUNTIME = 'Taro runtime'\nexport const HOOKS_APP_ID = 'taro-app'\nexport const SET_DATA = '小程序 setData'\nexport const PAGE_INIT = '页面初始化'\nexport const ROOT_STR = 'root'\nexport const HTML = 'html'\nexport const HEAD = 'head'\nexport const BODY = 'body'\nexport const APP = 'app'\nexport const CONTAINER = 'container'\nexport const DOCUMENT_ELEMENT_NAME = '#document'\nexport const DOCUMENT_FRAGMENT = 'document-fragment'\nexport const ID = 'id'\nexport const UID = 'uid'\nexport const CLASS = 'class'\nexport const STYLE = 'style'\nexport const FOCUS = 'focus'\nexport const VIEW = 'view'\nexport const STATIC_VIEW = 'static-view'\nexport const PURE_VIEW = 'pure-view'\nexport const PROPS = 'props'\nexport const DATASET = 'dataset'\nexport const OBJECT = 'object'\nexport const VALUE = 'value'\nexport const INPUT = 'input'\nexport const CHANGE = 'change'\nexport const CUSTOM_WRAPPER = 'custom-wrapper'\nexport const TARGET = 'target'\nexport const CURRENT_TARGET = 'currentTarget'\nexport const TYPE = 'type'\nexport const CONFIRM = 'confirm'\nexport const TIME_STAMP = 'timeStamp'\nexport const KEY_CODE = 'keyCode'\nexport const TOUCHMOVE = 'touchmove'\nexport const DATE = 'Date'\nexport const SET_TIMEOUT = 'setTimeout'\nexport const COMPILE_MODE = 'compileMode'\nexport const CATCHMOVE = 'catchMove'\nexport const CATCH_VIEW = 'catch-view'\nexport const COMMENT = 'comment'\nexport const ON_LOAD = 'onLoad'\nexport const ON_READY = 'onReady'\nexport const ON_SHOW = 'onShow'\nexport const ON_HIDE = 'onHide'\nexport const OPTIONS = 'options'\nexport const EXTERNAL_CLASSES = 'externalClasses'\nexport const EVENT_CALLBACK_RESULT = 'e_result'\nexport const BEHAVIORS = 'behaviors'\nexport const A = 'a'\n\n/**\n * 页面上下文切换时的行为\n */\nexport enum CONTEXT_ACTIONS {\n INIT = '0',\n RESTORE = '1',\n RECOVER = '2',\n DESTORY = '3'\n}\n","import { MutationRecordType } from './record'\n\nimport type { TaroNode } from '../../dom/node'\nimport type { MutationRecord } from './record'\n\nexport type MutationCallback = (mutations: MutationRecord[]) => any\n\n/**\n * @see https://dom.spec.whatwg.org/#dictdef-mutationobserverinit\n */\nexport interface MutationObserverInit {\n attributeFilter?: string[]\n attributeOldValue?: boolean\n attributes?: boolean\n characterData?: boolean\n characterDataOldValue?: boolean\n childList?: boolean\n subtree?: boolean\n}\n\nconst observers: MutationObserverImpl[] = []\n\n/**\n * The MutationObserver provides the ability\n * to watch for changes being made to the DOM tree.\n * It will invoke a specified callback function\n * when DOM changes occur.\n * @see https://dom.spec.whatwg.org/#mutationobserver\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver\n */\nexport class MutationObserverImpl {\n public callback: MutationCallback\n public target: TaroNode | null\n public options: MutationObserverInit\n public records: MutationRecord[] = []\n\n constructor (callback: MutationCallback) {\n this.callback = callback\n }\n\n /**\n * Configures the MutationObserver\n * to begin receiving notifications\n * through its callback function\n * when DOM changes matching the given options occur.\n *\n * Options matching is to be implemented.\n */\n observe (target: TaroNode, options?: MutationObserverInit): void {\n this.disconnect()\n this.target = target\n this.options = options || {}\n\n observers.push(this)\n }\n\n /**\n * Stop the MutationObserver instance\n * from receiving further notifications\n * until and unless observe() is called again.\n */\n disconnect (): void {\n this.target = null\n\n const index = observers.indexOf(this)\n if (index >= 0) {\n observers.splice(index, 1)\n }\n }\n\n /**\n * Removes all pending notifications\n * from the MutationObserver's notification queue\n * and returns them in a new Array of MutationRecord objects.\n */\n takeRecords (): MutationRecord[] {\n return this.records.splice(0, this.records.length)\n }\n}\n\n/** Match two TaroNodes by sid. */\nconst sidMatches = (\n observerTarget: TaroNode | null,\n target: TaroNode | null\n): boolean => {\n return !!observerTarget && observerTarget.sid === target?.sid\n}\n\nconst isConcerned = (record: MutationRecord, options: MutationObserverInit) => {\n const { characterData, characterDataOldValue, attributes, attributeOldValue, childList } = options\n switch (record.type) {\n case MutationRecordType.CHARACTER_DATA:\n if (characterData) {\n if (!characterDataOldValue) record.oldValue = null\n return true\n }\n return false\n case MutationRecordType.ATTRIBUTES:\n if (attributes) {\n if (!attributeOldValue) record.oldValue = null\n return true\n }\n return false\n case MutationRecordType.CHILD_LIST:\n if (childList) {\n return true\n }\n return false\n }\n}\n\nlet pendingMuatations = false\n\nfunction logMutation (observer: MutationObserverImpl, record: MutationRecord) {\n observer.records.push(record)\n if (!pendingMuatations) {\n pendingMuatations = true\n Promise\n .resolve()\n .then(() => {\n pendingMuatations = false\n observers.forEach(observer => {\n return observer.callback(observer.takeRecords())\n })\n })\n }\n}\n\nexport function recordMutation (record: MutationRecord) {\n observers.forEach(observer => {\n const { options } = observer\n for (let t: TaroNode | null = record.target; t; t = t.parentNode) {\n if (sidMatches(observer.target, t) && isConcerned(record, options)) {\n logMutation(observer, record)\n break\n }\n if (!options.subtree) break\n }\n })\n}\n","import { noop } from '@tarojs/shared'\n\nimport { MutationObserverImpl, recordMutation } from './implements'\nimport { MutationRecord, MutationRecordType } from './record'\n\nimport type { TaroNode } from '../../dom/node'\nimport type { MutationCallback, MutationObserverInit } from './implements'\n\ndeclare const ENABLE_MUTATION_OBSERVER: boolean\n\nexport class MutationObserver {\n core: Pick<MutationObserverImpl, 'observe' | 'disconnect' | 'takeRecords'>\n\n constructor (callback: MutationCallback) {\n if (ENABLE_MUTATION_OBSERVER) {\n this.core = new MutationObserverImpl(callback)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[Taro Warning] 若要使用 MutationObserver,请在 Taro 编译配置中设置 \\'mini.runtime.enableMutationObserver: true\\'')\n }\n this.core = {\n observe: noop,\n disconnect: noop,\n takeRecords: (noop as () => any)\n }\n }\n }\n\n public observe (...args: [TaroNode, MutationObserverInit?]) {\n this.core.observe(...args)\n }\n\n public disconnect () {\n this.core.disconnect()\n }\n\n public takeRecords () {\n return this.core.takeRecords()\n }\n\n static record (record: MutationRecord) {\n recordMutation(record)\n }\n}\n\nexport {\n MutationRecordType\n}\n","import {\n getComponentsAlias as _getComponentsAlias,\n internalComponents,\n isFunction,\n Shortcuts\n} from '@tarojs/shared'\n\nimport {\n CLASS,\n COMMENT,\n ID,\n ROOT_STR,\n STYLE,\n UID\n} from '../constants'\nimport { NodeType } from '../dom/node_types'\nimport { Func } from '../interface'\n\nimport type { TaroElement } from '../dom/element'\nimport type { TaroNode } from '../dom/node'\nimport type { TaroText } from '../dom/text'\n\nexport const incrementId = () => {\n const chatCodes: number[] = []\n // A-Z\n for (let i = 65; i <= 90; i++) {\n chatCodes.push(i)\n }\n // a-z\n for (let i = 97; i <= 122; i++) {\n chatCodes.push(i)\n }\n const chatCodesLen = chatCodes.length - 1\n const list = [0, 0]\n return () => {\n const target = list.map(item => chatCodes[item])\n const res = String.fromCharCode(...target)\n\n let tailIdx = list.length - 1\n\n list[tailIdx]++\n\n while (list[tailIdx] > chatCodesLen) {\n list[tailIdx] = 0\n tailIdx = tailIdx - 1\n if (tailIdx < 0) {\n list.push(0)\n break\n }\n list[tailIdx]++\n }\n\n return res\n }\n}\n\nexport function isElement (node: TaroNode): node is TaroElement {\n return node.nodeType === NodeType.ELEMENT_NODE\n}\n\nexport function isText (node: TaroNode): node is TaroText {\n return node.nodeType === NodeType.TEXT_NODE\n}\n\nexport function isComment (node: TaroNode): boolean {\n return node.nodeName === COMMENT\n}\n\nexport function isHasExtractProp (el: TaroElement): boolean {\n const res = Object.keys(el.props).find(prop => {\n return !(/^(class|style|id)$/.test(prop) || prop.startsWith('data-'))\n })\n return Boolean(res)\n}\n\n/**\n * 往上寻找组件树直到 root,寻找是否有祖先组件绑定了同类型的事件\n * @param node 当前组件\n * @param type 事件类型\n */\nexport function isParentBinded (node: TaroElement | null, type: string): boolean {\n while ((node = node?.parentElement || null)) {\n if (!node || node.nodeName === ROOT_STR || node.nodeName === 'root-portal') {\n return false\n } else if (node.__handlers[type]?.length) {\n return true\n }\n }\n\n return false\n}\n\nexport function shortcutAttr (key: string): string {\n switch (key) {\n case STYLE:\n return Shortcuts.Style\n case ID:\n return UID\n case CLASS:\n return Shortcuts.Class\n default:\n return key\n }\n}\n\nexport const customWrapperCache = new Map<string, Record<string, any>>()\n\ninterface Ctor {\n new (...args: any[]): any\n}\n\nexport function extend (ctor: Ctor, methodName: string, options: Func | Record<string, any>) {\n if (isFunction(options)) {\n options = {\n value: options\n }\n }\n Object.defineProperty(ctor.prototype, methodName, {\n configurable: true,\n enumerable: true,\n ...options\n })\n}\n\nlet componentsAlias\nexport function getComponentsAlias () {\n if (!componentsAlias) {\n componentsAlias = _getComponentsAlias(internalComponents)\n }\n return componentsAlias\n}\n\nexport function convertNumber2PX (value: number) {\n return value + 'px'\n}\n","import type { TaroElement } from './element'\n\nexport class ClassList {\n private el: TaroElement\n\n private tokenList: string[] = []\n\n constructor (className: string, el: TaroElement) {\n this.el = el\n className.trim().split(/\\s+/).forEach(token => this.tokenList.push(token))\n }\n\n public get value () {\n return this.toString()\n }\n\n public get length () {\n return this.tokenList.length\n }\n\n add () {\n let index = 0\n let updated = false\n\n const tokens = arguments\n const length = tokens.length\n const tokenList = this.tokenList\n\n do {\n const token: string = tokens[index]\n\n if (this.checkTokenIsValid(token) && !~tokenList.indexOf(token)) {\n tokenList.push(token)\n\n updated = true\n }\n } while (++index < length)\n\n if (updated) {\n this._update()\n }\n }\n\n remove () {\n let i = 0\n let updated = false\n\n const tokens = arguments\n const length = tokens.length\n const tokenList = this.tokenList\n\n do {\n const token = tokens[i] + ''\n\n if (!this.checkTokenIsValid(token)) continue\n\n const index = tokenList.indexOf(token)\n\n if (~tokenList.indexOf(token)) {\n tokenList.splice(index, 1)\n\n updated = true\n }\n } while (++i < length)\n\n if (updated) {\n this._update()\n }\n }\n\n contains (token: string) {\n if (!this.checkTokenIsValid(token)) return false\n\n return !!~this.tokenList.indexOf(token)\n }\n\n toggle (token: string, force: boolean) {\n const result = this.contains(token)\n const method = result ? force !== true && 'remove' : force !== false && 'add'\n\n if (method) {\n // @ts-ignore\n this[method](token)\n }\n\n if (force === true || force === false) {\n return force\n } else {\n return !result\n }\n }\n\n replace (token: string, replacement_token: string) {\n if (!this.checkTokenIsValid(token) || !this.checkTokenIsValid(replacement_token)) return\n\n const index = this.tokenList.indexOf(token)\n\n if (~index) {\n this.tokenList.splice(index, 1, replacement_token)\n\t\t this._update()\n }\n }\n\n toString () {\n\t return this.tokenList.filter(v => v !== '').join(' ')\n }\n\n private checkTokenIsValid (token: string) {\n if (token === '' || /\\s/.test(token)) return false\n\n return true\n }\n\n private _update () {\n this.el.className = this.value\n }\n}\n","import type { TaroNode } from './node'\n\ninterface IEventSource extends Map<string | undefined | null, TaroNode> {\n removeNode (child: TaroNode): void\n removeNodeTree (child: TaroNode): void\n}\n\nclass EventSource extends Map {\n removeNode (child: TaroNode) {\n const { sid, uid } = child\n this.delete(sid)\n if (uid !== sid && uid) this.delete(uid)\n }\n\n removeNodeTree (child: TaroNode) {\n this.removeNode(child)\n const { childNodes } = child\n childNodes.forEach(node => this.removeNodeTree(node))\n }\n}\n\nexport const eventSource: IEventSource = new EventSource()\n","import { EMPTY_OBJ, isWebPlatform } from '@tarojs/shared'\n\nimport type { TaroDocument } from './dom/document'\n\ninterface Env {\n window\n document: TaroDocument\n}\n\nconst isWeb = isWebPlatform()\nconst env: Env = {\n window: isWeb ? window : EMPTY_OBJ,\n document: isWeb ? document : EMPTY_OBJ\n}\n\nexport default env\n","import { hooks, Shortcuts, toCamelCase } from '@tarojs/shared'\n\nimport {\n CATCH_VIEW,\n CATCHMOVE,\n CLASS,\n COMPILE_MODE,\n ID,\n PURE_VIEW,\n STYLE,\n VIEW\n} from './constants'\nimport { getComponentsAlias, isComment, isHasExtractProp, isText } from './utils'\n\nimport type { TaroElement } from './dom/element'\nimport type { TaroText } from './dom/text'\nimport type { MiniData, MiniElementData } from './interface'\n\nlet SPECIAL_NODES\nlet componentsAlias\n\n/**\n * React also has a fancy function's name for this: `hydrate()`.\n * You may have been heard `hydrate` as a SSR-related function,\n * actually, `hydrate` basicly do the `render()` thing, but ignore some properties,\n * it's a vnode traverser and modifier: that's exactly what Taro's doing in here.\n */\nexport function hydrate (node: TaroElement | TaroText): MiniData {\n // 初始化 componentsAlias\n componentsAlias ||= getComponentsAlias()\n\n // 初始化 SPECIAL_NODES\n SPECIAL_NODES ||= hooks.call('getSpecialNodes')!\n\n const nodeName = node.nodeName\n\n if (isText(node)) {\n return {\n sid: node.sid,\n [Shortcuts.Text]: node.nodeValue,\n [Shortcuts.NodeName]: componentsAlias[nodeName]?._num || '8'\n }\n }\n\n const data: MiniElementData = {\n [Shortcuts.NodeName]: nodeName,\n sid: node.sid\n }\n\n if (node.uid !== node.sid) {\n data.uid = node.uid\n }\n\n if (!node.isAnyEventBinded() && SPECIAL_NODES.indexOf(nodeName) > -1) {\n data[Shortcuts.NodeName] = `static-${nodeName}`\n if (nodeName === VIEW && !isHasExtractProp(node)) {\n data[Shortcuts.NodeName] = PURE_VIEW\n }\n }\n\n const { props } = node\n for (const prop in props) {\n const propInCamelCase = toCamelCase(prop)\n if (\n !prop.startsWith('data-') && // 在 node.dataset 的数据\n prop !== CLASS &&\n prop !== STYLE &&\n prop !== ID &&\n propInCamelCase !== CATCHMOVE &&\n propInCamelCase !== COMPILE_MODE\n ) {\n data[propInCamelCase] = props[prop]\n }\n if (nodeName === VIEW && propInCamelCase === CATCHMOVE && props[prop] !== false) {\n data[Shortcuts.NodeName] = CATCH_VIEW\n }\n if (propInCamelCase === COMPILE_MODE) {\n data[Shortcuts.NodeName] = props[prop]\n }\n }\n\n // Children\n data[Shortcuts.Childnodes] = node.childNodes.filter(node => !isComment(node)).map(hydrate)\n\n if (node.className !== '') {\n data[Shortcuts.Class] = node.className\n }\n\n const cssText = node.cssText\n if (cssText !== '' && nodeName !== 'swiper-item') {\n data[Shortcuts.Style] = cssText\n }\n\n hooks.call('modifyHydrateData', data, node)\n\n const nn = data[Shortcuts.NodeName]\n const componentAlias = componentsAlias[nn]\n if (componentAlias) {\n data[Shortcuts.NodeName] = componentAlias._num\n for (const prop in data) {\n if (prop in componentAlias) {\n data[componentAlias[prop]] = data[prop]\n delete data[prop]\n }\n }\n }\n\n const resData = hooks.call('transferHydrateData', data, node, componentAlias)\n\n return resData || data\n}\n","import { hooks, isArray, isObject, warn } from '@tarojs/shared'\n\nimport type { AddEventListenerOptions, EventHandler } from '../interface'\n\nexport class TaroEventTarget {\n public __handlers: Record<string, EventHandler[]> = {}\n\n public addEventListener (type: string, handler: EventHandler, options?: boolean | AddEventListenerOptions) {\n type = type.toLowerCase()\n\n hooks.call('onAddEvent', type, handler, options, this)\n\n if (type === 'regionchange') {\n // map 组件的 regionchange 事件非常特殊,详情:https://github.com/NervJS/taro/issues/5766\n this.addEventListener('begin', handler, options)\n this.addEventListener('end', handler, options)\n return\n }\n\n let isCapture = Boolean(options)\n let isOnce = false\n if (isObject<AddEventListenerOptions>(options)) {\n isCapture = Boolean(options.capture)\n isOnce = Boolean(options.once)\n }\n\n if (isOnce) {\n const wrapper = function () {\n handler.apply(this, arguments) // this 指向 Element\n this.removeEventListener(type, wrapper)\n }\n this.addEventListener(type, wrapper, {\n ...(options as AddEventListenerOptions),\n once: false\n })\n return\n }\n\n process.env.NODE_ENV !== 'production' && warn(isCapture, 'Taro 暂未实现 event 的 capture 特性。')\n\n // 某些框架,如 PReact 有委托的机制,handler 始终是同一个函数\n // 这会导致多层停止冒泡失败:view -> view(handler.stop = false) -> view(handler.stop = true)\n // 这样解决:view -> view(handlerA.stop = false) -> view(handlerB.stop = false)\n // 因此每次绑定事件都新建一个函数,如果带来了性能问题,可以把这段逻辑抽取到 PReact 插件中。\n const oldHandler = handler\n handler = function () {\n return oldHandler.apply(this, arguments) // this 指向 Element\n }\n ;(handler as any).oldHandler = oldHandler\n\n const handlers = this.__handlers[type]\n if (isArray(handlers)) {\n handlers.push(handler)\n } else {\n this.__handlers[type] = [handler]\n }\n }\n\n public removeEventListener (type: string, handler: EventHandler) {\n type = type.toLowerCase()\n\n if (type === 'regionchange') {\n // map 组件的 regionchange 事件非常特殊,详情:https://github.com/NervJS/taro/issues/5766\n this.removeEventListener('begin', handler)\n this.removeEventListener('end', handler)\n return\n }\n\n if (!handler) {\n return\n }\n\n const handlers = this.__handlers[type]\n if (!isArray(handlers)) {\n return\n }\n\n const index = handlers.findIndex(item => {\n if (item === handler || (item as any).oldHandler === handler) return true\n })\n\n process.env.NODE_ENV !== 'production' && warn(index === -1, `事件: '${type}' 没有注册在 DOM 中,因此不会被移除。`)\n\n handlers.splice(index, 1)\n }\n\n public isAnyEventBinded (): boolean {\n const handlers = this.__handlers\n const isAnyEventBinded = Object.keys(handlers).find(key => handlers[key].length)\n return Boolean(isAnyEventBinded)\n }\n}\n","import { ensure, hooks, Shortcuts } from '@tarojs/shared'\n\nimport { DOCUMENT_FRAGMENT } from '../constants'\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport env from '../env'\nimport { hydrate } from '../hydrate'\nimport { extend, incrementId, isComment } from '../utils'\nimport { eventSource } from './event-source'\nimport { TaroEventTarget } from './event-target'\nimport { NodeType } from './node_types'\n\nimport type { Func, UpdatePayload } from '../interface'\nimport type { TaroDocument } from './document'\nimport type { TaroElement } from './element'\nimport type { TaroRootElement } from './root'\n\ninterface RemoveChildOptions {\n cleanRef?: boolean\n doUpdate?: boolean\n}\n\nconst CHILDNODES = Shortcuts.Childnodes\nconst nodeId = incrementId()\n\nexport class TaroNode extends TaroEventTarget {\n public uid: string\n public sid: string\n public nodeType: NodeType\n public nodeName: string\n public parentNode: TaroNode | null = null\n public childNodes: TaroNode[] = []\n\n public constructor () {\n super()\n this.uid = '_' + nodeId() // dom 节点 id,开发者可修改\n this.sid = this.uid // dom 节点全局唯一 id,不可被修改\n eventSource.set(this.sid, this)\n }\n\n private hydrate = (node: TaroNode) => () => hydrate(node as TaroElement)\n\n private updateChildNodes (isClean?: boolean) {\n const cleanChildNodes = () => []\n const rerenderChildNodes = () => {\n const childNodes = this.childNodes.filter(node => !isComment(node))\n return childNodes.map(hydrate)\n }\n\n this.enqueueUpdate({\n path: `${this._path}.${CHILDNODES}`,\n value: isClean ? cleanChildNodes : rerenderChildNodes\n })\n }\n\n private updateSingleChild (index: number) {\n this.childNodes.forEach((child, childIndex) => {\n if (isComment(child)) return\n\n if (index && childIndex < index) return\n\n this.enqueueUpdate({\n path: child._path,\n value: this.hydrate(child)\n })\n })\n }\n\n public get _root (): TaroRootElement | null {\n return this.parentNode?._root || null\n }\n\n protected findIndex (refChild: TaroNode): number {\n const index = this.childNodes.indexOf(refChild)\n\n ensure(index !== -1, 'The node to be replaced is not a child of this node.')\n\n return index\n }\n\n public get _path (): string {\n const parentNode = this.parentNode\n\n if (parentNode) {\n // 计算路径时,先过滤掉 comment 节点\n const list = parentNode.childNodes.filter(node => !isComment(node))\n const indexOfNode = list.indexOf(this)\n const index = hooks.call('getPathIndex', indexOfNode)\n\n return `${parentNode._path}.${CHILDNODES}.${index}`\n }\n\n return ''\n }\n\n public get nextSibling (): TaroNode | null {\n const parentNode = this.parentNode\n return parentNode?.childNodes[parentNode.findIndex(this) + 1] || null\n }\n\n public get previousSibling (): TaroNode | null {\n const parentNode = this.parentNode\n return parentNode?.childNodes[parentNode.findIndex(this) - 1] || null\n }\n\n public get parentElement (): TaroElement | null {\n const parentNode = this.parentNode\n if (parentNode?.nodeType === NodeType.ELEMENT_NODE) {\n return parentNode as TaroElement\n }\n return null\n }\n\n public get firstChild (): TaroNode | null {\n return this.childNodes[0] || null\n }\n\n public get lastChild (): TaroNode | null {\n const childNodes = this.childNodes\n return childNodes[childNodes.length - 1] || null\n }\n\n /**\n * @textContent 目前只能置空子元素\n * @TODO 等待完整 innerHTML 实现\n */\n // eslint-disable-next-line accessor-pairs\n public set textContent (text: string) {\n const removedNodes = this.childNodes.slice()\n const addedNodes: TaroNode[] = []\n\n // Handle old children' data structure & ref\n while (this.firstChild) {\n this.removeChild(this.firstChild, { doUpdate: false })\n }\n\n if (text === '') {\n this.updateChildNodes(true)\n } else {\n const newText = env.document.createTextNode(text)\n addedNodes.push(newText)\n this.appendChild(newText)\n this.updateChildNodes()\n }\n\n // @Todo: appendChild 会多触发一次\n MutationObserver.record({\n type: MutationRecordType.CHILD_LIST,\n target: this,\n removedNodes,\n addedNodes\n })\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/insertBefore\n * @scenario\n * [A,B,C]\n * 1. insert D before C, D has no parent\n * 2. insert D before C, D has the same parent of C\n * 3. insert D before C, D has the different parent of C\n */\n public insertBefore<T extends TaroNode> (newChild: T, refChild?: TaroNode | null, isReplace?: boolean): T {\n if (newChild.nodeName === DOCUMENT_FRAGMENT) {\n newChild.childNodes.reduceRight((previousValue, currentValue) => {\n this.insertBefore(currentValue, previousValue)\n return currentValue\n }, refChild)\n return newChild\n }\n\n // Parent release newChild\n // - cleanRef: false (No need to clean eventSource, because newChild is about to be inserted)\n // - update: true (Need to update parent.childNodes, because parent.childNodes is reordered)\n newChild.remove({ cleanRef: false })\n\n let index = 0\n // Data structure\n newChild.parentNode = this\n if (refChild) {\n // insertBefore & replaceChild\n index = this.findIndex(refChild)\n this.childNodes.splice(index, 0, newChild)\n } else {\n // appendChild\n this.childNodes.push(newChild)\n }\n\n const childNodesLength = this.childNodes.length\n // Serialization\n if (this._root) {\n if (!refChild) {\n // appendChild\n const isOnlyChild = childNodesLength === 1\n if (isOnlyChild) {\n this.updateChildNodes()\n } else {\n this.enqueueUpdate({\n path: newChild._path,\n value: this.hydrate(newChild)\n })\n }\n } else if (isReplace) {\n // replaceChild\n this.enqueueUpdate({\n path: newChild._path,\n value: this.hydrate(newChild)\n })\n } else {\n // insertBefore 有两种更新模式\n // 比方说有 A B C 三个节点,现在要在 C 前插入 D\n // 1. 插入 D,然后更新整个父节点的 childNodes 数组\n // setData({ cn: [A, B, D, C] })\n // 2. 插入 D,然后更新 D 以及 D 之后每个节点的数据\n // setData ({\n // cn.[2]: D,\n // cn.[3]: C,\n // })\n // 由于微信解析 ’cn.[2]‘ 这些路径的时候也需要消耗时间,\n // 所以根据 insertBefore 插入的位置来做不同的处理\n const mark = childNodesLength * 2 / 3\n if (mark > index) {\n // 如果 insertBefore 的位置在 childNodes 的 2/3 前,则为了避免解析路径消耗过多的时间,采用第一种方式\n this.updateChildNodes()\n } else {\n // 如果 insertBefore 的位置在 childNodes 的 2/3 之后,则采用第二种方式,避免 childNodes 的全量更新\n this.updateSingleChild(index)\n }\n }\n }\n\n MutationObserver.record({\n type: MutationRecordType.CHILD_LIST,\n target: this,\n addedNodes: [newChild],\n removedNodes: isReplace\n ? [refChild as TaroNode] /** replaceChild */\n : [],\n nextSibling: isReplace\n ? (refChild as TaroNode).nextSibling /** replaceChild */\n : (refChild || null), /** insertBefore & appendChild */\n previousSibling: newChild.previousSibling\n })\n\n return newChild\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/appendChild\n * @scenario\n * [A,B,C]\n * 1. append C, C has no parent\n * 2. append C, C has the same parent of B\n * 3. append C, C has the different parent of B\n */\n public appendChild (newChild: TaroNode) {\n return this.insertBefore(newChild)\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/replaceChild\n * @scenario\n * [A,B,C]\n * 1. replace B with C, C has no parent\n * 2. replace B with C, C has no parent, C has the same parent of B\n * 3. replace B with C, C has no parent, C has the different parent of B\n */\n public replaceChild (newChild: TaroNode, oldChild: TaroNode) {\n if (oldChild.parentNode !== this) return\n\n // Insert the newChild\n this.insertBefore(newChild, oldChild, true)\n\n // Destroy the oldChild\n // - cleanRef: true (Need to clean eventSource, because the oldChild was detached from the DOM tree)\n // - update: false (No need to update parent.childNodes, because replace will not cause the parent.childNodes being reordered)\n oldChild.remove({ doUpdate: false })\n\n return oldChild\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/removeChild\n * @scenario\n * [A,B,C]\n * 1. remove A or B\n * 2. remove C\n */\n public removeChild<T extends TaroNode> (child: T, options: RemoveChildOptions = {}): T {\n const { cleanRef, doUpdate } = options\n\n if (cleanRef !== false && doUpdate !== false) {\n // appendChild/replaceChild/insertBefore 不应该触发\n // @Todo: 但其实如果 newChild 的父节点是另一颗子树的节点,应该是要触发的\n MutationObserver.record({\n type: MutationRecordType.CHILD_LIST,\n target: this,\n removedNodes: [child],\n nextSibling: child.nextSibling,\n previousSibling: child.previousSibling\n })\n }\n\n // Data Structure\n const index = this.findIndex(child)\n this.childNodes.splice(index, 1)\n child.parentNode = null\n\n // Set eventSource\n if (cleanRef !== false) {\n eventSource.removeNodeTree(child)\n }\n\n // Serialization\n if (this._root && doUpdate !== false) {\n this.updateChildNodes()\n }\n\n return child\n }\n\n public remove (options?: RemoveChildOptions) {\n this.parentNode?.removeChild(this, options)\n }\n\n public hasChildNodes () {\n return this.childNodes.length > 0\n }\n\n public enqueueUpdate (payload: UpdatePayload) {\n this._root?.enqueueUpdate(payload)\n }\n\n public get ownerDocument (): TaroDocument {\n return env.document\n }\n\n static extend (methodName: string, options: Func | Record<string, any>) {\n extend(TaroNode, methodName, options)\n }\n}\n","/*\n *\n * https://www.w3.org/Style/CSS/all-properties.en.html\n */\n\nconst WEBKIT = 'webkit'\n\nconst styleProperties = [\n 'all',\n 'appearance',\n 'blockOverflow',\n 'blockSize',\n 'bottom',\n 'clear',\n 'contain',\n 'content',\n 'continue',\n 'cursor',\n 'direction',\n 'display',\n 'filter',\n 'float',\n 'gap',\n 'height',\n 'inset',\n 'isolation',\n 'left',\n 'letterSpacing',\n 'lightingColor',\n 'markerSide',\n 'mixBlendMode',\n 'opacity',\n 'order',\n 'position',\n 'quotes',\n 'resize',\n 'right',\n 'rowGap',\n 'tabSize',\n 'tableLayout',\n 'top',\n 'userSelect',\n 'verticalAlign',\n 'visibility',\n 'voiceFamily',\n 'volume',\n 'whiteSpace',\n 'widows',\n 'width',\n 'zIndex',\n 'pointerEvents',\n 'aspectRatio'\n\n /** 非常用 style */\n // 'azimuth',\n // 'backfaceVisibility',\n // 'baselineShift',\n // 'captionSide',\n // 'chains',\n // 'dominantBaseline',\n // 'elevation',\n // 'emptyCells',\n // 'forcedColorAdjust',\n // 'glyphOrientationVertical',\n // 'hangingPunctuation',\n // 'hyphenateCharacter',\n // 'hyphens',\n // 'imageOrientation',\n // 'imageResolution',\n // 'orphans',\n // 'playDuring',\n // 'pointerEvents',\n // 'regionFragment',\n // 'richness',\n // 'running',\n // 'scrollBehavior',\n // 'speechRate',\n // 'stress',\n // 'stringSet',\n // 'unicodeBidi',\n // 'willChange',\n // 'writingMode',\n]\n\n// 减少文件体积\nfunction combine (prefix: string, list: string[], excludeSelf?: boolean) {\n !excludeSelf && styleProperties.push(prefix)\n list.forEach(item => {\n styleProperties.push(prefix + item)\n if (prefix === WEBKIT) {\n styleProperties.push('Webkit' + item)\n }\n })\n}\n\nconst color = 'Color'\nconst style = 'Style'\nconst width = 'Width'\nconst image = 'Image'\nconst size = 'Size'\nconst color_style_width = [color, style, width]\nconst fitlength_fitwidth_image = ['FitLength', 'FitWidth', image]\nconst fitlength_fitwidth_image_radius = [...fitlength_fitwidth_image, 'Radius']\nconst color_style_width_fitlength_fitwidth_image = [...color_style_width, ...fitlength_fitwidth_image]\nconst endRadius_startRadius = ['EndRadius', 'StartRadius']\nconst bottom_left_right_top = ['Bottom', 'Left', 'Right', 'Top']\nconst end_start = ['End', 'Start']\nconst content_items_self = ['Content', 'Items', 'Self']\nconst blockSize_height_inlineSize_width = ['BlockSize', 'Height', 'InlineSize', width]\nconst after_before = ['After', 'Before']\n\ncombine('borderBlock', color_style_width)\ncombine('borderBlockEnd', color_style_width)\ncombine('borderBlockStart', color_style_width)\ncombine('outline', [...color_style_width, 'Offset'])\ncombine('border', [...color_style_width, 'Boundary', 'Break', 'Collapse', 'Radius', 'Spacing'])\ncombine('borderFit', ['Length', width])\ncombine('borderInline', color_style_width)\ncombine('borderInlineEnd', color_style_width)\ncombine('borderInlineStart', color_style_width)\ncombine('borderLeft', color_style_width_fitlength_fitwidth_image)\ncombine('borderRight', color_style_width_fitlength_fitwidth_image)\ncombine('borderTop', color_style_width_fitlength_fitwidth_image)\ncombine('borderBottom', color_style_width_fitlength_fitwidth_image)\ncombine('textDecoration', [color, style, 'Line'])\ncombine('textEmphasis', [color, style, 'Position'])\ncombine('scrollMargin', bottom_left_right_top)\ncombine('scrollPadding', bottom_left_right_top)\ncombine('padding', bottom_left_right_top)\ncombine('margin', [...bottom_left_right_top, 'Trim'])\ncombine('scrollMarginBlock', end_start)\ncombine('scrollMarginInline', end_start)\ncombine('scrollPaddingBlock', end_start)\ncombine('scrollPaddingInline', end_start)\ncombine('gridColumn', end_start)\ncombine('gridRow', end_start)\ncombine('insetBlock', end_start)\ncombine('insetInline', end_start)\ncombine('marginBlock', end_start)\ncombine('marginInline', end_start)\ncombine('paddingBlock', end_start)\ncombine('paddingInline', end_start)\ncombine('pause', after_before)\ncombine('cue', after_before)\ncombine('mask', ['Clip', 'Composite', image, 'Mode', 'Origin', 'Position', 'Repeat', size, 'Type'])\ncombine('borderImage', ['Outset', 'Repeat', 'Slice', 'Source', 'Transform', width])\ncombine('maskBorder', ['Mode', 'Outset', 'Repeat', 'Slice', 'Source', width])\ncombine('font', ['Family', 'FeatureSettings', 'Kerning', 'LanguageOverride', 'MaxSize', 'MinSize', 'OpticalSizing', 'Palette', size, 'SizeAdjust', 'Stretch', style, 'Weight', 'VariationSettings'])\ncombine('transform', ['Box', 'Origin', style])\ncombine('background', [color, image, 'Attachment', 'BlendMode', 'Clip', 'Origin', 'Position', 'Repeat', size])\ncombine('listStyle', [image, 'Position', 'Type'])\ncombine('scrollSnap', ['Align', 'Stop', 'Type'])\ncombine('grid', ['Area', 'AutoColumns', 'AutoFlow', 'AutoRows'])\ncombine('gridTemplate', ['Areas', 'Columns', 'Rows'])\ncombine('overflow', ['Block', 'Inline', 'Wrap', 'X', 'Y'])\ncombine('transition', ['Delay', 'Duration', 'Property', 'TimingFunction'])\ncombine('color', ['Adjust', 'InterpolationFilters', 'Scheme'])\ncombine('textAlign', ['All', 'Last'])\ncombine('page', ['BreakAfter', 'BreakBefore', 'BreakInside'])\ncombine('animation', ['Delay', 'Direction', 'Duration', 'FillMode', 'IterationCount', 'Name', 'PlayState', 'TimingFunction'])\ncombine('flex', ['Basis', 'Direction', 'Flow', 'Grow', 'Shrink', 'Wrap'])\ncombine('offset', [...after_before, ...end_start, 'Anchor', 'Distance', 'Path', 'Position', 'Rotate'])\ncombine('perspective', ['Origin'])\ncombine('clip', ['Path', 'Rule'])\ncombine('flow', ['From', 'Into'])\n\ncombine('align', ['Content', 'Items', 'Self'], true)\ncombine('alignment', ['Adjust', 'Baseline'], true)\ncombine('borderStart', endRadius_startRadius, true)\ncombine('borderEnd', endRadius_startRadius, true)\ncombine('borderCorner', ['Fit', image, 'ImageTransform'], true)\ncombine('borderTopLeft', fitlength_fitwidth_image_radius, true)\ncombine('borderTopRight', fitlength_fitwidth_image_radius, true)\ncombine('borderBottomLeft', fitlength_fitwidth_image_radius, true)\ncombine('borderBottomRight', fitlength_fitwidth_image_radius, true)\ncombine('column', ['s', 'Count', 'Fill', 'Gap', 'Rule', 'RuleColor', 'RuleStyle', 'RuleWidth', 'Span', width], true)\ncombine('break', [...after_before, 'Inside'], true)\ncombine('wrap', [...after_before, 'Flow', 'Inside', 'Through'], true)\ncombine('justify', content_items_self, true)\ncombine('place', content_items_self, true)\ncombine('max', [...blockSize_height_inlineSize_width, 'Lines'], true)\ncombine('min', blockSize_height_inlineSize_width, true)\ncombine('line', ['Break', 'Clamp', 'Grid', 'Height', 'Padding', 'Snap'], true)\ncombine('inline', ['BoxAlign', size, 'Sizing'], true)\ncombine('text', ['CombineUpright', 'GroupAlign', 'Height', 'Indent', 'Justify', 'Orientation', 'Overflow', 'Shadow', 'SpaceCollapse', 'SpaceTrim', 'Spacing', 'Transform', 'UnderlinePosition', 'Wrap'], true)\ncombine('shape', ['ImageThreshold', 'Inside', 'Margin', 'Outside'], true)\ncombine('word', ['Break', 'Spacing', 'Wrap'], true)\ncombine('object', ['Fit', 'Position'], true)\ncombine('box', ['DecorationBreak', 'Shadow', 'Sizing', 'Snap'], true)\n\ncombine(WEBKIT, ['LineClamp', 'BoxOrient', 'TextFillColor', 'TextStroke', 'TextStrokeColor', 'TextStrokeWidth'], true)\n\n/** 非常用 style */\n// combine('caret', [color, 'Shape'])\n// combine('counter', ['Increment', 'Reset', 'Set'], true)\n// combine('dropInitial', ['AfterAdjust', 'AfterAlign', 'BeforeAdjust', 'BeforeAlign', size, 'Value'], true)\n// combine('flood', [color, 'Opacity'], true)\n// combine('footnote', ['Display', 'Policy'], true)\n// combine('hyphenateLimit', ['Chars', 'Last', 'Lines', 'Zone'], true)\n// combine('initialLetters', ['Align', 'Wrap'])\n// combine('ruby', ['Align', 'Merge', 'Position'], true)\n// combine('lineStacking', ['Ruby', 'Shift', 'Strategy'])\n// combine('bookmark', ['Label', 'Level', 'State'], true)\n// combine('speak', ['Header', 'Numeral', 'Punctuation'])\n// combine('pitch', ['Range'])\n// combine('nav', ['Down', 'Left', 'Right', 'Up'], true)\n// combine('fontSynthesis', ['SmallCaps', style, 'Weight'])\n// combine('fontVariant', ['Alternates', 'Caps', 'EastAsian', 'Emoji', 'Ligatures', 'Numeric', 'Position'])\n\nexport { styleProperties }\n","import { hooks, isArray, isNull, isString, isUndefined, Shortcuts, toCamelCase, toDashed, warn } from '@tarojs/shared'\n\nimport { PROPERTY_THRESHOLD } from '../constants'\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport { TaroElement } from './element'\nimport { styleProperties } from './style_properties'\n\nfunction recordCss (obj: Style) {\n MutationObserver.record({\n type: MutationRecordType.ATTRIBUTES,\n target: obj._element,\n attributeName: 'style',\n oldValue: obj.cssText\n })\n}\n\nfunction enqueueUpdate (obj: Style) {\n const element = obj._element\n if (element._root) {\n element.enqueueUpdate({\n path: `${element._path}.${Shortcuts.Style}`,\n value: obj.cssText\n })\n }\n}\n\nfunction setStyle (this: Style, newVal: string, styleKey: string) {\n process.env.NODE_ENV !== 'production' && warn(\n isString(newVal) && newVal.length > PROPERTY_THRESHOLD,\n `Style 属性 ${styleKey} 的值数据量过大,可能会影响渲染性能,考虑使用 CSS 类或其它方案替代。`\n )\n\n const old = this[styleKey]\n\n if (old === newVal) return\n\n !this._pending && recordCss(this)\n\n if (isNull(newVal) || isUndefined(newVal) || newVal === '') {\n this._usedStyleProp.delete(styleKey)\n delete this._value[styleKey]\n } else {\n this._usedStyleProp.add(styleKey)\n this._value[styleKey] = newVal\n }\n\n !this._pending && enqueueUpdate(this)\n}\n\nfunction initStyle (ctor: typeof Style, styleProperties: string[]) {\n const properties = {}\n\n for (let i = 0; i < styleProperties.length; i++) {\n const styleKey = styleProperties[i]\n\n if (ctor[styleKey]) return\n\n properties[styleKey] = {\n get (this: Style) {\n const val = this._value[styleKey]\n return isNull(val) || isUndefined(val) ? '' : val\n },\n set (this: Style, newVal: string) {\n setStyle.call(this, newVal, styleKey)\n }\n }\n }\n\n Object.defineProperties(ctor.prototype, properties)\n}\n\nfunction isCssVariable (propertyName) {\n return /^--/.test(propertyName)\n}\n\nexport class Style {\n public _pending: boolean\n\n public _usedStyleProp: Set<string>\n\n public _value: Partial<CSSStyleDeclaration>\n\n public _element: TaroElement\n\n public constructor (element: TaroElement) {\n this._element = element\n this._usedStyleProp = new Set()\n this._value = {}\n }\n\n private setCssVariables (styleKey: string) {\n this.hasOwnProperty(styleKey) || Object.defineProperty(this, styleKey, {\n enumerable: true,\n configurable: true,\n get: () => {\n return this._value[styleKey] || ''\n },\n set: (newVal: string) => {\n setStyle.call(this, newVal, styleKey)\n }\n })\n }\n\n public get cssText () {\n if (!this._usedStyleProp.size) return ''\n\n const texts: string[] = []\n this._usedStyleProp.forEach(key => {\n const val = this[key]\n if (isNull(val) || isUndefined(val)) return\n let styleName = isCssVariable(key) ? key : toDashed(key)\n if (styleName.indexOf('webkit') === 0 || styleName.indexOf('Webkit') === 0) {\n styleName = `-${styleName}`\n }\n texts.push(`${styleName}: ${val};`)\n })\n return texts.join(' ')\n }\n\n public set cssText (str: string) {\n this._pending = true\n recordCss(this)\n\n this._usedStyleProp.forEach(prop => {\n this.removeProperty(prop)\n })\n\n if (str === '' || isUndefined(str) || isNull(str)) {\n this._pending = false\n enqueueUpdate(this)\n return\n }\n\n const rules = str.split(';')\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i].trim()\n if (rule === '') {\n continue\n }\n\n // 可能存在 'background: url(http:x/y/z)' 的情况\n const [propName, ...valList] = rule.split(':')\n const val = valList.join(':')\n\n if (isUndefined(val)) {\n continue\n }\n this.setProperty(propName.trim(), val.trim())\n }\n\n this._pending = false\n enqueueUpdate(this)\n }\n\n public setProperty (propertyName: string, value?: string | null) {\n if (propertyName[0] === '-') {\n // 支持 webkit 属性或 css 变量\n this.setCssVariables(propertyName)\n } else {\n propertyName = toCamelCase(propertyName)\n }\n\n if (isNull(value) || isUndefined(value)) {\n this.removeProperty(propertyName)\n } else {\n this[propertyName] = value\n }\n }\n\n public removeProperty (propertyName: string): string {\n propertyName = toCamelCase(propertyName)\n if (!this._usedStyleProp.has(propertyName)) {\n return ''\n }\n\n const value = this[propertyName]\n this[propertyName] = undefined\n return value\n }\n\n public getPropertyValue (propertyName: string) {\n propertyName = toCamelCase(propertyName)\n const value = this[propertyName]\n if (!value) {\n return ''\n }\n\n return value\n }\n}\n\ninitStyle(Style, styleProperties)\n\nhooks.tap('injectNewStyleProperties', (newStyleProperties: string[]) => {\n if (isArray(newStyleProperties)) {\n initStyle(Style, newStyleProperties)\n } else {\n if (typeof newStyleProperties !== 'string') return\n\n initStyle(Style, [newStyleProperties])\n }\n})\n","import { NodeType } from './node_types'\n\nimport type { TaroElement } from './element'\n\ntype Filter = (element: TaroElement) => boolean\n\nfunction returnTrue () {\n return true\n}\n\nexport function treeToArray (root: TaroElement, predict?: Filter): TaroElement[] {\n const array: TaroElement[] = []\n const filter = predict ?? returnTrue\n\n let object: TaroElement | null = root\n\n while (object) {\n if (object.nodeType === NodeType.ELEMENT_NODE && filter(object)) {\n array.push(object)\n }\n\n object = following(object, root)\n }\n\n return array\n}\n\nfunction following (el: TaroElement, root: TaroElement): TaroElement | null {\n const firstChild = el.firstChild\n const isElmentTypeValid = el.nodeType === NodeType.ELEMENT_NODE || el.nodeType === NodeType.DOCUMENT_NODE\n\n // 如果当前 el 不是 element 或 document 元素,则可以直接不递归他的子元素了\n if (firstChild && isElmentTypeValid) {\n return firstChild as TaroElement\n }\n\n let current: TaroElement | null = el\n\n do {\n if (current === root) {\n return null\n }\n\n const nextSibling = current.nextSibling\n\n if (nextSibling) {\n return nextSibling as TaroElement\n }\n current = current.parentElement\n } while (current)\n\n return null\n}\n","import { EMPTY_OBJ, hooks, isArray, isFunction, isObject, isString, isUndefined, Shortcuts, toCamelCase, warn } from '@tarojs/shared'\n\nimport {\n CATCH_VIEW,\n CATCHMOVE,\n CLASS,\n EVENT_CALLBACK_RESULT,\n FOCUS,\n ID,\n PROPERTY_THRESHOLD,\n PURE_VIEW,\n STATIC_VIEW,\n STYLE,\n VIEW\n} from '../constants'\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport { extend, getComponentsAlias, isElement, isHasExtractProp, shortcutAttr } from '../utils'\nimport { ClassList } from './class-list'\nimport { eventSource } from './event-source'\nimport { TaroNode } from './node'\nimport { NodeType } from './node_types'\nimport { Style } from './style'\nimport { treeToArray } from './tree'\n\nimport type { Attributes, Func } from '../interface'\nimport type { TaroEvent } from './event'\n\nexport class TaroElement extends TaroNode {\n public ctx?\n public tagName: string\n public props: Record<string, any> = {}\n public style: Style\n public dataset: Record<string, unknown> = EMPTY_OBJ\n public innerHTML: string\n\n public constructor () {\n super()\n this.nodeType = NodeType.ELEMENT_NODE\n this.style = new Style(this)\n hooks.call('patchElement', this)\n }\n\n private _stopPropagation (event: TaroEvent) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let target = this\n // eslint-disable-next-line no-cond-assign\n while ((target = target.parentNode as this)) {\n const listeners = target.__handlers[event.type]\n\n if (!isArray(listeners)) {\n continue\n }\n\n for (let i = listeners.length; i--;) {\n const l = listeners[i]\n l._stop = true\n }\n }\n }\n\n public get id (): string {\n return this.getAttribute(ID)!\n }\n\n public set id (val: string) {\n this.setAttribute(ID, val)\n }\n\n public get className (): string {\n return this.getAttribute(CLASS) || ''\n }\n\n public set className (val: string) {\n this.setAttribute(CLASS, val)\n }\n\n public get cssText (): string {\n return this.getAttribute(STYLE) || ''\n }\n\n public get classList (): ClassList {\n return new ClassList(this.className, this)\n }\n\n public get children (): TaroElement[] {\n return this.childNodes.filter(isElement)\n }\n\n public get attributes (): Attributes[] {\n const props = this.props\n const propKeys = Object.keys(props)\n const style = this.style.cssText\n const attrs = propKeys.map(key => ({ name: key, value: props[key] }))\n return attrs.concat(style ? { name: STYLE, value: style } : [])\n }\n\n public get textContent (): string {\n let text = ''\n const childNodes = this.childNodes\n\n for (let i = 0; i < childNodes.length; i++) {\n text += childNodes[i].textContent\n }\n\n return text\n }\n\n public set textContent (text: string) {\n super.textContent = text\n }\n\n public hasAttribute (qualifiedName: string): boolean {\n return !isUndefined(this.props[qualifiedName])\n }\n\n public hasAttributes (): boolean {\n return this.attributes.length > 0\n }\n\n public get focus () {\n return function () {\n this.setAttribute(FOCUS, true)\n }\n }\n\n // 兼容 Vue3,详情请见:https://github.com/NervJS/taro/issues/10579\n public set focus (value) {\n this.setAttribute(FOCUS, value)\n }\n\n public blur () {\n this.setAttribute(FOCUS, false)\n }\n\n public setAttribute (qualifiedName: string, value: any): void {\n process.env.NODE_ENV !== 'production' && warn(\n isString(value) && value.length > PROPERTY_THRESHOLD,\n `元素 ${this.nodeName} 的 ${qualifiedName} 属性值数据量过大,可能会影响渲染性能。考虑降低图片转为 base64 的阈值或在 CSS 中使用 base64。`\n )\n\n const isPureView = this.nodeName === VIEW && !isHasExtractProp(this) && !this.isAnyEventBinded()\n\n if (qualifiedName !== STYLE) {\n MutationObserver.record({\n target: this,\n type: MutationRecordType.ATTRIBUTES,\n attributeName: qualifiedName,\n oldValue: this.getAttribute(qualifiedName)\n })\n }\n\n switch (qualifiedName) {\n case STYLE:\n this.style.cssText = value as string\n break\n case ID:\n if (this.uid !== this.sid) {\n // eventSource[sid] 永远保留,直到组件卸载\n // eventSource[uid] 可变\n eventSource.delete(this.uid)\n }\n value = String(value)\n this.props[qualifiedName] = this.uid = value\n eventSource.set(value, this)\n break\n default:\n this.props[qualifiedName] = value as string\n\n if (qualifiedName.startsWith('data-')) {\n if (this.dataset === EMPTY_OBJ) {\n this.dataset = Object.create(null)\n }\n this.dataset[toCamelCase(qualifiedName.replace(/^data-/, ''))] = value\n }\n break\n }\n\n // Serialization\n if (!this._root) return\n\n const componentsAlias = getComponentsAlias()\n const _alias = componentsAlias[this.nodeName]\n const viewAlias = componentsAlias[VIEW]._num\n const staticViewAlias = componentsAlias[STATIC_VIEW]._num\n const catchViewAlias = componentsAlias[CATCH_VIEW]._num\n const _path = this._path\n\n qualifiedName = shortcutAttr(qualifiedName)\n\n const qualifiedNameInCamelCase = toCamelCase(qualifiedName)\n const payload = {\n path: `${_path}.${qualifiedNameInCamelCase}`,\n value: isFunction(value) ? () => value : value\n }\n\n hooks.call('modifySetAttrPayload', this, qualifiedName, payload, componentsAlias)\n\n if (_alias) {\n const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName\n payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`\n }\n\n this.enqueueUpdate(payload)\n\n if (this.nodeName === VIEW) {\n if (qualifiedNameInCamelCase === CATCHMOVE) {\n // catchMove = true: catch-view\n // catchMove = false: view or static-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: value ? catchViewAlias : (\n this.isAnyEventBinded() ? viewAlias : staticViewAlias\n )\n })\n } else if (isPureView && isHasExtractProp(this)) {\n // pure-view => static-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: staticViewAlias\n })\n }\n }\n }\n\n public removeAttribute (qualifiedName: string) {\n const isStaticView = this.nodeName === VIEW && isHasExtractProp(this) && !this.isAnyEventBinded()\n\n MutationObserver.record({\n target: this,\n type: MutationRecordType.ATTRIBUTES,\n attributeName: qualifiedName,\n oldValue: this.getAttribute(qualifiedName)\n })\n\n if (qualifiedName === STYLE) {\n this.style.cssText = ''\n } else {\n const isInterrupt = hooks.call('onRemoveAttribute', this, qualifiedName)\n if (isInterrupt) {\n return\n }\n\n if (!this.props.hasOwnProperty(qualifiedName)) {\n return\n }\n delete this.props[qualifiedName]\n }\n\n // Serialization\n if (!this._root) return\n\n const componentsAlias = getComponentsAlias()\n const _alias = componentsAlias[this.nodeName]\n const viewAlias = componentsAlias[VIEW]._num\n const staticViewAlias = componentsAlias[STATIC_VIEW]._num\n const pureViewAlias = componentsAlias[PURE_VIEW]._num\n const _path = this._path\n\n qualifiedName = shortcutAttr(qualifiedName)\n\n const qualifiedNameInCamelCase = toCamelCase(qualifiedName)\n const payload = {\n path: `${_path}.${qualifiedNameInCamelCase}`,\n value: ''\n }\n\n hooks.call('modifyRmAttrPayload', this, qualifiedName, payload, componentsAlias)\n\n if (_alias) {\n const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName\n payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`\n }\n\n this.enqueueUpdate(payload)\n\n if (this.nodeName === VIEW) {\n if (qualifiedNameInCamelCase === CATCHMOVE) {\n // catch-view => view or static-view or pure-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: this.isAnyEventBinded() ? viewAlias : (isHasExtractProp(this) ? staticViewAlias : pureViewAlias)\n })\n } else if (isStaticView && !isHasExtractProp(this)) {\n // static-view => pure-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: pureViewAlias\n })\n }\n }\n }\n\n public getAttribute (qualifiedName: string): string {\n const attr = qualifiedName === STYLE ? this.style.cssText : this.props[qualifiedName]\n return attr ?? ''\n }\n\n public getElementsByTagName (tagName: string): TaroElement[] {\n return treeToArray(this, (el) => {\n return el.nodeName === tagName || (tagName === '*' && this !== el)\n })\n }\n\n public getElementsByClassName (className: string): TaroElement[] {\n const classNames = className.trim().split(/\\s+/)\n\n return treeToArray(this, (el) => {\n const classList = el.classList\n return classNames.every(c => classList.contains(c))\n })\n }\n\n public dispatchEvent (event: TaroEvent): boolean {\n const cancelable = event.cancelable\n\n const listeners = this.__handlers[event.type]\n\n if (!isArray(listeners)) {\n return false\n }\n\n for (let i = listeners.length; i--;) {\n const listener = listeners[i]\n let result: unknown\n if (listener._stop) {\n listener._stop = false\n } else {\n hooks.call('modifyDispatchEvent', event, this)\n result = listener.call(this, event)\n }\n if ((result === false || event._end) && cancelable) {\n event.defaultPrevented = true\n }\n\n if (!isUndefined(result) && event.mpEvent) {\n const res = hooks.call('modifyTaroEventReturn', this, event, result)\n if (res) { event.mpEvent[EVENT_CALLBACK_RESULT] = result }\n }\n\n if (event._end && event._stop) {\n break\n }\n }\n\n if (event._stop) {\n this._stopPropagation(event)\n }\n\n return listeners != null\n }\n\n public addEventListener (type, handler, options) {\n const name = this.nodeName\n const SPECIAL_NODES = hooks.call('getSpecialNodes')!\n\n let sideEffect = true\n if (isObject<Record<string, any>>(options) && options.sideEffect === false) {\n sideEffect = false\n delete options.sideEffect\n }\n\n hooks.call('modifyAddEventListener', this, sideEffect, getComponentsAlias)\n\n if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n const componentsAlias = getComponentsAlias()\n const alias = componentsAlias[name]._num\n this.enqueueUpdate({\n path: `${this._path}.${Shortcuts.NodeName}`,\n value: alias\n })\n }\n\n super.addEventListener(type, handler, options)\n }\n\n public removeEventListener (type, handler, sideEffect = true) {\n super.removeEventListener(type, handler)\n\n const name = this.nodeName\n const SPECIAL_NODES = hooks.call('getSpecialNodes')!\n\n hooks.call('modifyRemoveEventListener', this, sideEffect, getComponentsAlias)\n\n if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n const componentsAlias = getComponentsAlias()\n const value = isHasExtractProp(this) ? `static-${name}` : `pure-${name}`\n const valueAlias = componentsAlias[value]._num\n this.enqueueUpdate({\n path: `${this._path}.${Shortcuts.NodeName}`,\n value: valueAlias\n })\n }\n }\n\n static extend (methodName: string, options: Func | Record<string, any>) {\n extend(TaroElement, methodName, options)\n }\n}\n","import type { Options } from './interface'\n\nexport const options: Options = {\n prerender: true,\n debug: false\n}\n","import { options } from '../../options'\n\ninterface Position {\n index: number\n column: number\n line: number\n}\n\nexport interface Token {\n type: string\n content?: string\n position?: {\n start?: Position\n end?: Position\n }\n close?: boolean\n}\n\nfunction initPosition (): Position {\n return {\n index: 0,\n column: 0,\n line: 0\n }\n}\n\nfunction feedPosition (position: Position, str: string, len: number) {\n const start = position.index\n const end = position.index = start + len\n for (let i = start; i < end; i++) {\n const char = str.charAt(i)\n if (char === '\\n') {\n position.line++\n position.column = 0\n } else {\n position.column++\n }\n }\n}\n\nfunction jumpPosition (position: Position, str: string, end: number) {\n const len = end - position.index\n return feedPosition(position, str, len)\n}\n\nfunction copyPosition (position: Position) {\n return {\n index: position.index,\n line: position.line,\n column: position.column\n }\n}\n\nconst whitespace = /\\s/\nfunction isWhitespaceChar (char: string) {\n return whitespace.test(char)\n}\n\nconst equalSign = /=/\nfunction isEqualSignChar (char: string) {\n return equalSign.test(char)\n}\n\nfunction shouldBeIgnore (tagName: string) {\n const name = tagName.toLowerCase()\n if (options.html!.skipElements.has(name)) {\n return true\n }\n return false\n}\n\nconst alphanumeric = /[A-Za-z0-9]/\n\nfunction findTextEnd (str: string, index: number) {\n while (true) {\n const textEnd = str.indexOf('<', index)\n if (textEnd === -1) {\n return textEnd\n }\n const char = str.charAt(textEnd + 1)\n if (char === '/' || char === '!' || alphanumeric.test(char)) {\n return textEnd\n }\n index = textEnd + 1\n }\n}\n\nfunction isWordEnd (cursor: number, wordBegin: number, html: string) {\n if (!isWhitespaceChar(html.charAt(cursor))) return false\n\n const len = html.length\n\n // backwrad\n for (let i = cursor - 1; i > wordBegin; i--) {\n const char = html.charAt(i)\n if (!isWhitespaceChar(char)) {\n if (isEqualSignChar(char)) return false\n break\n }\n }\n\n // forward\n for (let i = cursor + 1; i < len; i++) {\n const char = html.charAt(i)\n if (!isWhitespaceChar(char)) {\n if (isEqualSignChar(char)) return false\n return true\n }\n }\n}\n\nexport class Scaner {\n private tokens: Token[] = []\n\n private position: Position = initPosition()\n\n private html: string\n\n constructor (html: string) {\n this.html = html\n }\n\n public scan (): Token[] {\n const { html, position } = this\n const len = html.length\n\n while (position.index < len) {\n const start = position.index\n this.scanText()\n if (position.index === start) {\n const isComment = html.startsWith('!--', start + 1)\n if (isComment) {\n this.scanComment()\n } else {\n const tagName = this.scanTag()\n if (shouldBeIgnore(tagName)) {\n this.scanSkipTag(tagName)\n }\n }\n }\n }\n\n return this.tokens\n }\n\n private scanText () {\n const type = 'text'\n const { html, position } = this\n let textEnd = findTextEnd(html, position.index)\n if (textEnd === position.index) {\n return\n }\n if (textEnd === -1) {\n textEnd = html.length\n }\n\n const start = copyPosition(position)\n const content = html.slice(position.index, textEnd)\n jumpPosition(position, html, textEnd)\n const end = copyPosition(position)\n this.tokens.push({ type, content, position: { start, end } })\n }\n\n private scanComment () {\n const type = 'comment'\n const { html, position } = this\n const start = copyPosition(position)\n feedPosition(position, html, 4) // \"<!--\".length\n let contentEnd = html.indexOf('-->', position.index)\n let commentEnd = contentEnd + 3 // \"-->\".length\n if (contentEnd === -1) {\n contentEnd = commentEnd = html.length\n }\n\n const content = html.slice(position.index, contentEnd)\n jumpPosition(position, html, commentEnd)\n this.tokens.push({\n type,\n content,\n position: {\n start,\n end: copyPosition(position)\n }\n })\n }\n\n private scanTag () {\n this.scanTagStart()\n const tagName = this.scanTagName()\n this.scanAttrs()\n this.scanTagEnd()\n\n return tagName\n }\n\n private scanTagStart () {\n const type = 'tag-start'\n const { html, position } = this\n\n const secondChar = html.charAt(position.index + 1)\n const close = secondChar === '/'\n const start = copyPosition(position)\n feedPosition(position, html, close ? 2 : 1)\n this.tokens.push({ type, close, position: { start } })\n }\n\n private scanTagEnd () {\n const type = 'tag-end'\n const { html, position } = this\n\n const firstChar = html.charAt(position.index)\n const close = firstChar === '/'\n feedPosition(position, html, close ? 2 : 1)\n const end = copyPosition(position)\n this.tokens.push({ type, close, position: { end } })\n }\n\n private scanTagName (): string {\n const type = 'tag'\n const { html, position } = this\n const len = html.length\n let start = position.index\n while (start < len) {\n const char = html.charAt(start)\n const isTagChar = !(isWhitespaceChar(char) || char === '/' || char === '>')\n if (isTagChar) break\n start++\n }\n\n let end = start + 1\n while (end < len) {\n const char = html.charAt(end)\n const isTagChar = !(isWhitespaceChar(char) || char === '/' || char === '>')\n if (!isTagChar) break\n end++\n }\n\n jumpPosition(position, html, end)\n const tagName = html.slice(start, end)\n this.tokens.push({\n type,\n content: tagName\n })\n\n return tagName\n }\n\n private scanAttrs () {\n const { html, position, tokens } = this\n let cursor = position.index\n let quote: string | null = null // null, single-, or double-quote\n let wordBegin = cursor // index of word start\n const words: string[] = [] // \"key\", \"key=value\", \"key='value'\", etc\n const len = html.length\n while (cursor < len) {\n const char = html.charAt(cursor)\n if (quote) {\n const isQuoteEnd = char === quote\n if (isQuoteEnd) {\n quote = null\n }\n cursor++\n continue\n }\n\n const isTagEnd = char === '/' || char === '>'\n if (isTagEnd) {\n if (cursor !== wordBegin) {\n words.push(html.slice(wordBegin, cursor))\n }\n break\n }\n\n if (isWordEnd(cursor, wordBegin, html)) {\n if (cursor !== wordBegin) {\n words.push(html.slice(wordBegin, cursor))\n }\n wordBegin = cursor + 1\n cursor++\n continue\n }\n\n const isQuoteStart = char === '\\'' || char === '\"'\n if (isQuoteStart) {\n quote = char\n cursor++\n continue\n }\n\n cursor++\n }\n\n jumpPosition(position, html, cursor)\n\n const wLen = words.length\n const type = 'attribute'\n for (let i = 0; i < wLen; i++) {\n const word = words[i]\n const isNotPair = word.includes('=')\n if (isNotPair) {\n const secondWord = words[i + 1]\n if (secondWord && secondWord.startsWith('=')) {\n if (secondWord.length > 1) {\n const newWord = word + secondWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n const thirdWord = words[i + 2]\n i += 1\n if (thirdWord) {\n const newWord = word + '=' + thirdWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n }\n }\n if (word.endsWith('=')) {\n const secondWord = words[i + 1]\n if (secondWord && !secondWord.includes('=')) {\n const newWord = word + secondWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n\n const newWord = word.slice(0, -1)\n tokens.push({ type, content: newWord })\n continue\n }\n\n tokens.push({ type, content: word })\n }\n }\n\n private scanSkipTag (tagName: string) {\n const { html, position } = this\n const safeTagName = tagName.toLowerCase()\n const len = html.length\n while (position.index < len) {\n const nextTag = html.indexOf('</', position.index)\n if (nextTag === -1) {\n this.scanText()\n break\n }\n\n jumpPosition(position, html, nextTag)\n const name = this.scanTag()\n if (safeTagName === name.toLowerCase()) {\n break\n }\n }\n }\n}\n","export function unquote (str: string): string {\n const car = str.charAt(0)\n const end = str.length - 1\n const isQuoteStart = car === '\"' || car === \"'\"\n if (isQuoteStart && car === str.charAt(end)) {\n return str.slice(1, end)\n }\n return str\n}\n","import { NodeType } from '../../dom/node_types'\nimport { unquote } from './utils'\n\nimport type { TaroNode } from '../../dom/node'\nimport type { ParsedTaroElement } from './parser'\n\nconst LEFT_BRACKET = '{'\nconst RIGHT_BRACKET = '}'\nconst CLASS_SELECTOR = '.'\nconst ID_SELECTOR = '#'\nconst CHILD_COMBINATOR = '>'\nconst GENERAL_SIBLING_COMBINATOR = '~'\nconst ADJACENT_SIBLING_COMBINATOR = '+'\n\ninterface ISelector {\n isChild: boolean\n isGeneralSibling: boolean\n isAdjacentSibling: boolean\n tag: string | null\n id: string | null\n class: string[]\n attrs: {\n all: boolean\n key: string\n value?: string | null\n }[]\n}\n\ninterface IStyle {\n content: string\n selectorList: ISelector[]\n}\n\nexport default class StyleTagParser {\n styles: IStyle[] = []\n\n extractStyle (src: string) {\n const REG_STYLE = /<style\\s?[^>]*>((.|\\n|\\s)+?)<\\/style>/g\n let html = src\n // let html = src.replace(/\\n/g, '')\n\n html = html.replace(REG_STYLE, (_, $1: string) => {\n const style = $1.trim()\n this.stringToSelector(style)\n return ''\n })\n\n return html.trim()\n }\n\n stringToSelector (style: string) {\n let lb = style.indexOf(LEFT_BRACKET)\n\n while (lb > -1) {\n const rb = style.indexOf(RIGHT_BRACKET)\n const selectors = style.slice(0, lb).trim()\n\n let content = style.slice(lb + 1, rb)\n content = content.replace(/:(.*);/g, function (_, $1) {\n const t = $1.trim().replace(/ +/g, '+++')\n return `:${t};`\n })\n content = content.replace(/ /g, '')\n content = content.replace(/\\+\\+\\+/g, ' ')\n\n if (!(/;$/.test(content))) {\n content += ';'\n }\n selectors.split(',').forEach(src => {\n const selectorList = this.parseSelector(src)\n this.styles.push({\n content,\n selectorList\n })\n })\n style = style.slice(rb + 1)\n lb = style.indexOf(LEFT_BRACKET)\n }\n // console.log('res this.styles: ', this.styles)\n }\n\n parseSelector (src: string) {\n const list = src\n .trim()\n .replace(/ *([>~+]) */g, ' $1')\n .replace(/ +/g, ' ')\n .replace(/\\[\\s*([^[\\]=\\s]+)\\s*=\\s*([^[\\]=\\s]+)\\s*\\]/g, '[$1=$2]')\n .split(' ')\n const selectors = list.map(item => {\n const firstChar = item.charAt(0)\n const selector: ISelector = {\n isChild: firstChar === CHILD_COMBINATOR,\n isGeneralSibling: firstChar === GENERAL_SIBLING_COMBINATOR,\n isAdjacentSibling: firstChar === ADJACENT_SIBLING_COMBINATOR,\n tag: null,\n id: null,\n class: [],\n attrs: []\n }\n\n item = item.replace(/^[>~+]/, '')\n\n // 属性选择器\n item = item.replace(/\\[(.+?)\\]/g, function (_, $1: string) {\n const [key, value] = $1.split('=')\n const all = $1.indexOf('=') === -1\n\n const attr = {\n all,\n key,\n value: all ? null : value\n }\n selector.attrs.push(attr)\n return ''\n })\n\n item = item.replace(/([.#][A-Za-z0-9-_]+)/g, function (_, $1: string) {\n if ($1[0] === ID_SELECTOR) {\n // id 选择器\n selector.id = $1.substr(1)\n } else if ($1[0] === CLASS_SELECTOR) {\n // class 选择器\n selector.class.push($1.substr(1))\n }\n return ''\n })\n\n // 标签选择器\n if (item !== '') {\n selector.tag = item\n }\n\n return selector\n })\n return selectors\n }\n\n matchStyle (tagName: string, el: ParsedTaroElement, list: number[]): string {\n const res = sortStyles(this.styles).reduce((str, { content, selectorList }, i) => {\n let idx = list[i]\n let selector = selectorList[idx]\n const nextSelector = selectorList[idx + 1]\n\n if (nextSelector?.isGeneralSibling || nextSelector?.isAdjacentSibling) {\n selector = nextSelector\n idx += 1\n list[i] += 1\n }\n\n let isMatch = this.matchCurrent(tagName, el, selector)\n\n if (isMatch && selector.isGeneralSibling) {\n let prev: ParsedTaroElement = getPreviousElement(el)\n while (prev) {\n if (prev.h5tagName && this.matchCurrent(prev.h5tagName, prev, selectorList[idx - 1])) {\n isMatch = true\n break\n }\n prev = getPreviousElement(prev)\n isMatch = false\n }\n }\n if (isMatch && selector.isAdjacentSibling) {\n const prev: ParsedTaroElement = getPreviousElement(el)\n if (!prev || !prev.h5tagName) {\n isMatch = false\n } else {\n const isSiblingMatch = this.matchCurrent(prev.h5tagName, prev, selectorList[idx - 1])\n if (!isSiblingMatch) {\n isMatch = false\n }\n }\n }\n\n if (isMatch) {\n if (idx === selectorList.length - 1) {\n return str + content\n } else if (idx < selectorList.length - 1) {\n list[i] += 1\n }\n } else {\n // 直接子代组合器: >\n if (selector.isChild && idx > 0) {\n list[i] -= 1\n if (this.matchCurrent(tagName, el, selectorList[list[i]])) {\n list[i] += 1\n }\n }\n }\n\n return str\n }, '')\n return res\n }\n\n matchCurrent (tagName: string, el: ParsedTaroElement, selector: ISelector): boolean {\n // 标签选择器\n if (selector.tag && selector.tag !== tagName) return false\n\n // id 选择器\n if (selector.id && selector.id !== el.id) return false\n\n // class 选择器\n if (selector.class.length) {\n const classList = el.className.split(' ')\n for (let i = 0; i < selector.class.length; i++) {\n const cls = selector.class[i]\n if (classList.indexOf(cls) === -1) {\n return false\n }\n }\n }\n\n // 属性选择器\n if (selector.attrs.length) {\n for (let i = 0; i < selector.attrs.length; i++) {\n const { all, key, value } = selector.attrs[i]\n if (all && !el.hasAttribute(key)) {\n return false\n } else {\n const attr = el.getAttribute(key)\n if (attr !== unquote(value || '')) {\n return false\n }\n }\n }\n }\n\n return true\n }\n}\n\nfunction getPreviousElement (el: TaroNode) {\n const parent = el.parentElement\n if (!parent) return null\n\n const prev = el.previousSibling\n if (!prev) return null\n\n if (prev.nodeType === NodeType.ELEMENT_NODE) {\n return prev\n } else {\n return getPreviousElement(prev)\n }\n}\n\n// 根据 css selector 权重排序: 权重大的靠后\n// @WARN 不考虑伪类\n// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance#specificity_2\nfunction sortStyles (styles: IStyle[]) {\n return styles.sort((s1, s2) => {\n const hundreds1 = getHundredsWeight(s1.selectorList)\n const hundreds2 = getHundredsWeight(s2.selectorList)\n\n if (hundreds1 !== hundreds2) return hundreds1 - hundreds2\n\n const tens1 = getTensWeight(s1.selectorList)\n const tens2 = getTensWeight(s2.selectorList)\n\n if (tens1 !== tens2) return tens1 - tens2\n\n const ones1 = getOnesWeight(s1.selectorList)\n const ones2 = getOnesWeight(s2.selectorList)\n\n return ones1 - ones2\n })\n}\n\nfunction getHundredsWeight (selectors: ISelector[]) {\n return selectors.reduce((pre, cur) => pre + (cur.id ? 1 : 0), 0)\n}\n\nfunction getTensWeight (selectors: ISelector[]) {\n return selectors.reduce((pre, cur) => pre + cur.class.length + cur.attrs.length, 0)\n}\n\nfunction getOnesWeight (selectors: ISelector[]) {\n return selectors.reduce((pre, cur) => pre + (cur.tag ? 1 : 0), 0)\n}\n","import { internalComponents } from '@tarojs/shared'\n\nexport function makeMap (\n str: string,\n expectsLowerCase?: boolean\n): (key: string) => boolean {\n const map: Record<string, boolean> = Object.create(null)\n const list: Array<string> = str.split(',')\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true\n }\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val]\n}\n\nexport const specialMiniElements = {\n img: 'image',\n iframe: 'web-view'\n}\n\nconst internalCompsList = Object.keys(internalComponents)\n .map(i => i.toLowerCase())\n .join(',')\n\n// https://developers.weixin.qq.com/miniprogram/dev/component\nexport const isMiniElements = makeMap(internalCompsList, true)\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements\nexport const isInlineElements = makeMap('a,i,abbr,iframe,select,acronym,slot,small,span,bdi,kbd,strong,big,map,sub,sup,br,mark,mark,meter,template,canvas,textarea,cite,object,time,code,output,u,data,picture,tt,datalist,var,dfn,del,q,em,s,embed,samp,b', true)\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\nexport const isBlockElements = makeMap('address,fieldset,li,article,figcaption,main,aside,figure,nav,blockquote,footer,ol,details,form,p,dialog,h1,h2,h3,h4,h5,h6,pre,dd,header,section,div,hgroup,table,dl,hr,ul,dt', true)\n","import { isFunction } from '@tarojs/shared'\n\nimport { options } from '../../options'\nimport { Scaner, Token } from './scaner'\nimport StyleTagParser from './style'\nimport { isBlockElements, isInlineElements, isMiniElements, specialMiniElements } from './tags'\nimport { unquote } from './utils'\n\nimport type { TaroDocument } from '../../dom/document'\nimport type { TaroElement } from '../../dom/element'\n\ninterface State {\n tokens: Token[]\n cursor: number\n stack: Element[]\n}\n\nconst closingTagAncestorBreakers = {\n li: ['ul', 'ol', 'menu'],\n dt: ['dl'],\n dd: ['dl'],\n tbody: ['table'],\n thead: ['table'],\n tfoot: ['table'],\n tr: ['table'],\n td: ['table']\n}\n\ninterface Node {\n type: string\n}\n\ninterface Comment extends Node {\n type: 'comment'\n content: string\n}\n\nexport interface Text extends Node {\n type: 'text'\n content: string\n}\n\nexport interface Element extends Node {\n type: 'element'\n tagName: string\n children: ChildNode[]\n attributes: string[]\n}\n\nexport interface ParsedTaroElement extends TaroElement{\n h5tagName?: string\n}\n\ntype ChildNode = Comment | Text | Element\n\nfunction hasTerminalParent (tagName: string, stack: Element[]) {\n const tagParents: undefined | string[] = closingTagAncestorBreakers[tagName]\n if (tagParents) {\n let currentIndex = stack.length - 1\n while (currentIndex >= 0) {\n const parentTagName = stack[currentIndex].tagName\n if (parentTagName === tagName) {\n break\n }\n if (tagParents && tagParents.includes(parentTagName!)) {\n return true\n }\n currentIndex--\n }\n }\n return false\n}\n\nfunction getTagName (tag: string) {\n if (options.html!.renderHTMLTag) {\n return tag\n }\n\n if (specialMiniElements[tag]) {\n return specialMiniElements[tag]\n } else if (isMiniElements(tag)) {\n return tag\n } else if (isBlockElements(tag)) {\n return 'view'\n } else if (isInlineElements(tag)) {\n return 'text'\n }\n\n return 'view'\n}\n\nfunction splitEqual (str: string) {\n const sep = '='\n const idx = str.indexOf(sep)\n if (idx === -1) return [str]\n const key = str.slice(0, idx).trim()\n const value = str.slice(idx + sep.length).trim()\n return [key, value]\n}\n\nfunction format (\n children: ChildNode[],\n document: TaroDocument,\n styleOptions: {\n styleTagParser: StyleTagParser\n descendantList: number[]\n },\n parent?: TaroElement\n) {\n return children\n .filter(child => {\n // 过滤注释和空文本节点\n if (child.type === 'comment') {\n return false\n } else if (child.type === 'text') {\n return child.content !== ''\n }\n return true\n })\n .map((child: Text | Element) => {\n // 文本节点\n if (child.type === 'text') {\n let text = document.createTextNode(child.content)\n if (isFunction(options.html!.transformText)) {\n text = options.html!.transformText(text, child)\n }\n parent?.appendChild(text)\n return text\n }\n\n const el: ParsedTaroElement = document.createElement(getTagName(child.tagName))\n el.h5tagName = child.tagName\n\n parent?.appendChild(el)\n\n if (!options.html!.renderHTMLTag) {\n el.className = `h5-${child.tagName}`\n }\n\n for (let i = 0; i < child.attributes.length; i++) {\n const attr = child.attributes[i]\n const [key, value] = splitEqual(attr)\n if (key === 'class') {\n el.className += ' ' + unquote(value)\n } else if (key[0] === 'o' && key[1] === 'n') {\n continue\n } else {\n el.setAttribute(key, value == null ? true : unquote(value))\n }\n }\n\n const { styleTagParser, descendantList } = styleOptions\n const list = descendantList.slice()\n const style = styleTagParser.matchStyle(child.tagName, el, list)\n\n el.setAttribute('style', style + el.style.cssText)\n // console.log('style, ', style)\n\n format(child.children, document, {\n styleTagParser,\n descendantList: list\n }, el)\n\n if (isFunction(options.html!.transformElement)) {\n return options.html!.transformElement(el, child)\n }\n\n return el\n })\n}\n\nexport function parser (html: string, document: TaroDocument) {\n const styleTagParser = new StyleTagParser()\n html = styleTagParser.extractStyle(html)\n\n const tokens = new Scaner(html).scan()\n\n const root: Element = { tagName: '', children: [], type: 'element', attributes: [] }\n\n const state = { tokens, options, cursor: 0, stack: [root] }\n parse(state)\n\n return format(root.children, document, {\n styleTagParser,\n descendantList: Array(styleTagParser.styles.length).fill(0)\n })\n}\n\nfunction parse (state: State) {\n const { tokens, stack } = state\n let { cursor } = state\n\n const len = tokens.length\n\n let nodes = stack[stack.length - 1].children\n\n while (cursor < len) {\n const token = tokens[cursor]\n if (token.type !== 'tag-start') {\n // comment or text\n nodes.push(token as ChildNode)\n cursor++\n continue\n }\n\n const tagToken = tokens[++cursor]\n cursor++\n const tagName = tagToken.content!.toLowerCase()\n if (token.close) {\n let index = stack.length\n let shouldRewind = false\n while (--index > -1) {\n if (stack[index].tagName === tagName) {\n shouldRewind = true\n break\n }\n }\n while (cursor < len) {\n const endToken = tokens[cursor]\n if (endToken.type !== 'tag-end') break\n cursor++\n }\n if (shouldRewind) {\n stack.splice(index)\n break\n } else {\n continue\n }\n }\n\n const isClosingTag = options.html!.closingElements.has(tagName)\n let shouldRewindToAutoClose = isClosingTag\n if (shouldRewindToAutoClose) {\n shouldRewindToAutoClose = !hasTerminalParent(tagName, stack)\n }\n\n if (shouldRewindToAutoClose) {\n let currentIndex = stack.length - 1\n while (currentIndex > 0) {\n if (tagName === stack[currentIndex].tagName) {\n stack.splice(currentIndex)\n const previousIndex = currentIndex - 1\n nodes = stack[previousIndex].children\n break\n }\n currentIndex = currentIndex - 1\n }\n }\n\n const attributes: string[] = []\n let attrToken: Token\n while (cursor < len) {\n attrToken = tokens[cursor]\n if (attrToken.type === 'tag-end') break\n attributes.push(attrToken.content!)\n cursor++\n }\n\n cursor++\n const children: Element[] = []\n const element: Element = {\n type: 'element',\n tagName: tagToken.content!,\n attributes,\n children\n }\n nodes.push(element)\n\n const hasChildren = !(attrToken!.close || options.html!.voidElements.has(tagName))\n if (hasChildren) {\n stack.push({ tagName, children } as any)\n const innerState: State = { tokens, cursor, stack }\n parse(innerState)\n cursor = innerState.cursor\n }\n }\n\n state.cursor = cursor\n}\n","import { options } from '../../options'\nimport { parser } from './parser'\n\nimport type { TaroNode } from '../../dom/node'\n\noptions.html = {\n skipElements: new Set(['style', 'script']),\n voidElements: new Set([\n '!doctype', 'area', 'base', 'br', 'col', 'command',\n 'embed', 'hr', 'img', 'input', 'keygen', 'link',\n 'meta', 'param', 'source', 'track', 'wbr'\n ]),\n closingElements: new Set([\n 'html', 'head', 'body', 'p', 'dt', 'dd', 'li', 'option',\n 'thead', 'th', 'tbody', 'tr', 'td', 'tfoot', 'colgroup'\n ]),\n renderHTMLTag: false\n}\n\nexport function setInnerHTML (element: TaroNode, html: string) {\n while (element.firstChild) {\n element.removeChild(element.firstChild)\n }\n const children = parser(html, element.ownerDocument)\n\n for (let i = 0; i < children.length; i++) {\n element.appendChild(children[i])\n }\n}\n","import { DOCUMENT_FRAGMENT } from '../constants'\nimport { options } from '../options'\n\nimport type { TaroElement } from '../dom/element'\n\nexport function getBoundingClientRectImpl (this: TaroElement): Promise<null> {\n if (!options.miniGlobal) return Promise.resolve(null)\n return new Promise(resolve => {\n const query = options.miniGlobal.createSelectorQuery()\n query.select(`#${this.uid}`).boundingClientRect(res => {\n resolve(res)\n }).exec()\n })\n}\n\nexport function getTemplateContent (ctx: TaroElement): TaroElement | undefined {\n if (ctx.nodeName === 'template') {\n const document = ctx.ownerDocument\n const content: TaroElement = document.createElement(DOCUMENT_FRAGMENT)\n content.childNodes = ctx.childNodes\n ctx.childNodes = [content]\n content.parentNode = ctx\n content.childNodes.forEach(nodes => {\n nodes.parentNode = content\n })\n return content\n }\n}\n","import { DATASET, OBJECT, PROPS, STYLE } from '../constants'\nimport { NodeType } from '../dom/node_types'\nimport { parser } from '../dom-external/inner-html/parser'\n\nimport type { TaroNode } from '../dom/node'\n\nexport type IPosition = 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend'\n\n/**\n * An implementation of `Element.insertAdjacentHTML()`\n * to support Vue 3 with a version of or greater than `vue@3.1.2`\n */\nexport function insertAdjacentHTML (\n this: TaroNode,\n position: IPosition,\n html: string\n) {\n const parsedNodes = parser(html, this.ownerDocument)\n\n for (let i = 0; i < parsedNodes.length; i++) {\n const n = parsedNodes[i]\n\n switch (position) {\n case 'beforebegin':\n this.parentNode?.insertBefore(n, this)\n break\n case 'afterbegin':\n if (this.hasChildNodes()) {\n this.insertBefore(n, this.childNodes[0])\n } else {\n this.appendChild(n)\n }\n break\n case 'beforeend':\n this.appendChild(n)\n break\n case 'afterend':\n this.parentNode?.appendChild(n)\n break\n }\n }\n}\n\nexport function cloneNode (this: TaroNode, isDeep = false) {\n const document = this.ownerDocument\n let newNode\n\n if (this.nodeType === NodeType.ELEMENT_NODE) {\n newNode = document.createElement(this.nodeName)\n } else if (this.nodeType === NodeType.TEXT_NODE) {\n newNode = document.createTextNode('')\n }\n\n for (const key in this) {\n const value: any = this[key]\n if ([PROPS, DATASET].includes(key) && typeof value === OBJECT) {\n newNode[key] = { ...value }\n } else if (key === '_value') {\n newNode[key] = value\n } else if (key === STYLE) {\n newNode.style._value = { ...value._value }\n newNode.style._usedStyleProp = new Set(Array.from(value._usedStyleProp))\n }\n }\n\n if (isDeep) {\n newNode.childNodes = this.childNodes.map(node => (node as any).cloneNode(true))\n }\n\n return newNode\n}\n\nexport function contains (this: TaroNode, node: TaroNode & { id?: string }): boolean {\n let isContains = false\n this.childNodes.some(childNode => {\n const { uid } = childNode\n if (uid === node.uid || uid === node.id || (childNode as any).contains(node)) {\n isContains = true\n return true\n }\n })\n return isContains\n}\n","import { isWebPlatform } from '@tarojs/shared'\n\nimport { TaroElement } from '../dom/element'\nimport { TaroNode } from '../dom/node'\nimport { setInnerHTML } from '../dom-external/inner-html/html'\nimport { getBoundingClientRectImpl, getTemplateContent } from './element'\nimport { cloneNode, contains, insertAdjacentHTML } from './node'\n\ndeclare const ENABLE_INNER_HTML: boolean\ndeclare const ENABLE_ADJACENT_HTML: boolean\ndeclare const ENABLE_CLONE_NODE: boolean\ndeclare const ENABLE_CONTAINS: boolean\n\ndeclare const ENABLE_SIZE_APIS: boolean\ndeclare const ENABLE_TEMPLATE_CONTENT: boolean\n\nconst isWeb = isWebPlatform()\nconst isHarmony = process.env.TARO_PLATFORM === 'harmony' || process.env.TARO_ENV === 'harmony'\nif (!isWeb && !isHarmony) {\n if (ENABLE_INNER_HTML) {\n TaroNode.extend('innerHTML', {\n set (html: string) {\n setInnerHTML.call(this, this, html)\n },\n get (): string {\n return ''\n }\n })\n\n if (ENABLE_ADJACENT_HTML) {\n TaroNode.extend('insertAdjacentHTML', insertAdjacentHTML)\n }\n }\n\n if (ENABLE_CLONE_NODE) {\n TaroNode.extend('cloneNode', cloneNode)\n }\n\n if (ENABLE_CONTAINS) {\n TaroNode.extend('contains', contains)\n }\n\n if (ENABLE_SIZE_APIS) {\n TaroElement.extend('getBoundingClientRect', getBoundingClientRectImpl)\n }\n\n if (ENABLE_TEMPLATE_CONTENT) {\n TaroElement.extend('content', {\n get () {\n return getTemplateContent(this)\n }\n })\n }\n}\n","import { EMPTY_OBJ, hooks, isUndefined } from '@tarojs/shared'\n\nimport {\n CONFIRM,\n CURRENT_TARGET,\n EVENT_CALLBACK_RESULT,\n INPUT,\n KEY_CODE,\n TARGET,\n TIME_STAMP,\n TOUCHMOVE,\n TYPE\n} from '../constants'\nimport env from '../env'\nimport { isParentBinded } from '../utils'\n\nimport type { EventOptions, MpEvent } from '../interface'\nimport type { TaroElement } from './element'\n\n// Taro 事件对象。以 Web 标准的事件对象为基础,加入小程序事件对象中携带的部分信息,并模拟实现事件冒泡。\nexport class TaroEvent {\n private cacheTarget\n private cacheCurrentTarget\n\n public type: string\n\n public bubbles: boolean\n\n public cancelable: boolean\n\n public _stop = false\n\n public _end = false\n\n public defaultPrevented = false\n\n // Mouse Event botton property, it's used in 3rd lib, like react-router. default 0 in general\n public button = 0\n\n // timestamp can either be hi-res ( relative to page load) or low-res (relative to UNIX epoch)\n // here use hi-res timestamp\n public timeStamp = Date.now()\n\n public mpEvent: MpEvent | undefined\n\n public constructor (type: string, opts: EventOptions, event?: MpEvent) {\n this.type = type.toLowerCase()\n this.mpEvent = event\n this.bubbles = Boolean(opts && opts.bubbles)\n this.cancelable = Boolean(opts && opts.cancelable)\n }\n\n public stopPropagation () {\n this._stop = true\n }\n\n public stopImmediatePropagation () {\n this._end = this._stop = true\n }\n\n public preventDefault () {\n this.defaultPrevented = true\n }\n\n get target () {\n const cacheTarget = this.cacheTarget\n if (!cacheTarget) {\n const target = Object.create(this.mpEvent?.target || null)\n // Note:优先判断冒泡场景alipay的targetDataset的sid, 不然冒泡场景target属性吐出不对,其余拿取当前绑定id\n const element = env.document.getElementById(target.targetDataset?.sid || target.dataset?.sid || target.id || null)\n target.dataset = element !== null ? element.dataset : EMPTY_OBJ\n\n for (const key in this.mpEvent?.detail) {\n target[key] = this.mpEvent!.detail[key]\n }\n\n this.cacheTarget = target\n\n return target\n } else {\n return cacheTarget\n }\n }\n\n get currentTarget () {\n const cacheCurrentTarget = this.cacheCurrentTarget\n if (!cacheCurrentTarget) {\n const doc = env.document\n\n const currentTarget = Object.create(this.mpEvent?.currentTarget || null)\n\n const element = doc.getElementById(currentTarget.dataset?.sid || currentTarget.id || null)\n const targetElement = doc.getElementById(this.mpEvent?.target?.dataset?.sid as string || this.mpEvent?.target?.id as string || null)\n\n if (element === null || (element && element === targetElement)) {\n this.cacheCurrentTarget = this.target\n return this.target\n }\n\n currentTarget.dataset = element.dataset\n\n for (const key in this.mpEvent?.detail) {\n currentTarget[key] = this.mpEvent!.detail[key]\n }\n\n this.cacheCurrentTarget = currentTarget\n\n return currentTarget\n } else {\n return cacheCurrentTarget\n }\n }\n}\n\nexport function createEvent (event: MpEvent | string, node?: TaroElement) {\n if (typeof event === 'string') {\n // For Vue3 using document.createEvent\n return new TaroEvent(event, { bubbles: true, cancelable: true })\n }\n\n const domEv = new TaroEvent(event.type, { bubbles: true, cancelable: true }, event)\n\n for (const key in event) {\n if (key === CURRENT_TARGET || key === TARGET || key === TYPE || key === TIME_STAMP) {\n continue\n } else {\n domEv[key] = event[key]\n }\n }\n\n if (domEv.type === CONFIRM && node?.nodeName === INPUT) {\n // eslint-disable-next-line dot-notation\n domEv[KEY_CODE] = 13\n }\n\n return domEv\n}\n\nconst eventsBatch = {}\n\nfunction getEventCBResult (event: MpEvent) {\n const result = event[EVENT_CALLBACK_RESULT]\n if (!isUndefined(result)) {\n delete event[EVENT_CALLBACK_RESULT]\n }\n return result\n}\n\n// 小程序的事件代理回调函数\nexport function eventHandler (event: MpEvent) {\n // Note: ohos 上事件没有设置 type、detail 类型 setter 方法,且部分事件(例如 load 等)缺失 target 导致事件错误\n event.type === undefined && Object.defineProperty(event, 'type', {\n value: (event as any)._type // ohos only\n })\n event.detail === undefined && Object.defineProperty(event, 'detail', {\n value: (event as any)._detail || { ...event } // ohos only\n })\n event.currentTarget = event.currentTarget || event.target || { ...event }\n hooks.call('modifyMpEventImpl', event)\n\n const currentTarget = event.currentTarget\n const id = currentTarget.dataset?.sid as string /** sid */ || currentTarget.id /** uid */ || event.detail?.id as string || ''\n\n const node = env.document.getElementById(id)\n if (node) {\n const dispatch = () => {\n const e = createEvent(event, node)\n\n hooks.call('modifyTaroEvent', e, node)\n hooks.call('dispatchTaroEvent', e, node)\n hooks.call('dispatchTaroEventFinish', e, node)\n }\n if (hooks.isExist('batchedEventUpdates')) {\n const type = event.type\n\n if (\n !hooks.call('isBubbleEvents', type) ||\n !isParentBinded(node, type) ||\n (type === TOUCHMOVE && !!node.props.catchMove)\n ) {\n // 最上层组件统一 batchUpdate\n hooks.call('batchedEventUpdates', () => {\n if (eventsBatch[type]) {\n eventsBatch[type].forEach(fn => fn())\n delete eventsBatch[type]\n }\n dispatch()\n })\n return getEventCBResult(event)\n } else {\n // 如果上层组件也有绑定同类型的组件,委托给上层组件调用事件回调\n (eventsBatch[type] ||= []).push(dispatch)\n }\n } else {\n dispatch()\n return getEventCBResult(event)\n }\n }\n}\n","import {\n CHANGE,\n INPUT,\n TYPE,\n VALUE } from '../constants'\nimport { TaroElement } from './element'\n\nimport type { TaroEvent } from './event'\n\nexport class FormElement extends TaroElement {\n public get type () {\n return this.props[TYPE] ?? ''\n }\n\n public set type (val: string) {\n this.setAttribute(TYPE, val)\n }\n\n public get value () {\n // eslint-disable-next-line dot-notation\n const val = this.props[VALUE]\n return val == null ? '' : val\n }\n\n public set value (val: string | boolean | number | any[]) {\n this.setAttribute(VALUE, val)\n }\n\n public dispatchEvent (event: TaroEvent) {\n if (event.mpEvent) {\n const val = event.mpEvent.detail.value\n if (event.type === CHANGE) {\n this.props.value = val as string\n } else if (event.type === INPUT) {\n // Web 规范中表单组件的 value 应该跟着输入改变\n // 只是改 this.props.value 的话不会进行 setData,因此这里修改 this.value。\n // 只测试了 React、Vue、Vue3 input 组件的 onInput 事件,onChange 事件不确定有没有副作用,所以暂不修改。\n this.value = val as string\n }\n }\n\n return super.dispatchEvent(event)\n }\n}\n","import { options } from './options'\n\nclass Performance {\n private recorder = new Map<string, number>()\n\n public start (id: string) {\n if (!options.debug) {\n return\n }\n this.recorder.set(id, Date.now())\n }\n\n public stop (id: string) {\n if (!options.debug) {\n return\n }\n const now = Date.now()\n const prev = this.recorder.get(id)!\n this.recorder.delete(id)\n const time = now - prev\n // eslint-disable-next-line no-console\n console.log(`${id} 时长: ${time}ms`)\n }\n}\n\nexport const perf = new Performance()\n","import { hooks, isArray, isFunction, isUndefined, Shortcuts } from '@tarojs/shared'\n\nimport {\n CUSTOM_WRAPPER,\n PAGE_INIT,\n ROOT_STR,\n SET_DATA\n} from '../constants'\nimport { options } from '../options'\nimport { perf } from '../perf'\nimport { customWrapperCache, isComment } from '../utils'\nimport { TaroElement } from './element'\n\nimport type { Func, HydratedData, MpInstance, UpdatePayload, UpdatePayloadValue } from '../interface'\n\nfunction findCustomWrapper (root: TaroRootElement, dataPathArr: string[]) {\n // ['root', 'cn', '[0]'] remove 'root' => ['cn', '[0]']\n const list = dataPathArr.slice(1)\n let currentData: any = root\n let customWrapper: Record<string, any> | undefined\n let splitedPath = ''\n\n list.some((item, i) => {\n const key = item\n // '[0]' => '0'\n .replace(/^\\[(.+)\\]$/, '$1')\n // 'cn' => 'childNodes'\n .replace(/\\bcn\\b/g, 'childNodes')\n\n currentData = currentData[key]\n\n if (isArray(currentData)) {\n currentData = currentData.filter(el => !isComment(el))\n }\n\n if (isUndefined(currentData)) return true\n\n if (currentData.nodeName === CUSTOM_WRAPPER) {\n const res = customWrapperCache.get(currentData.sid)\n if (res) {\n customWrapper = res\n splitedPath = dataPathArr.slice(i + 2).join('.')\n }\n }\n })\n\n if (customWrapper) {\n return {\n customWrapper,\n splitedPath\n }\n }\n}\n\nexport class TaroRootElement extends TaroElement {\n private updatePayloads: UpdatePayload[] = []\n\n private updateCallbacks: Func[] = []\n\n public pendingUpdate = false\n\n public ctx: null | MpInstance = null\n\n public constructor () {\n super()\n this.nodeName = ROOT_STR\n this.tagName = ROOT_STR.toUpperCase()\n }\n\n public get _path (): string {\n return ROOT_STR\n }\n\n public get _root (): TaroRootElement {\n return this\n }\n\n public enqueueUpdate (payload: UpdatePayload): void {\n this.updatePayloads.push(payload)\n\n if (!this.pendingUpdate && this.ctx) {\n this.performUpdate()\n }\n }\n\n public performUpdate (initRender = false, prerender?: Func) {\n this.pendingUpdate = true\n\n const ctx = hooks.call('proxyToRaw', this.ctx)!\n\n setTimeout(() => {\n const setDataMark = `${SET_DATA} 开始时间戳 ${Date.now()}`\n perf.start(setDataMark)\n const data: Record<string, UpdatePayloadValue | ReturnType<HydratedData>> = Object.create(null)\n const resetPaths = new Set<string>(\n initRender\n ? ['root.cn.[0]', 'root.cn[0]']\n : []\n )\n\n while (this.updatePayloads.length > 0) {\n const { path, value } = this.updatePayloads.shift()!\n if (path.endsWith(Shortcuts.Childnodes)) {\n resetPaths.add(path)\n }\n data[path] = value\n }\n\n for (const path in data) {\n resetPaths.forEach(p => {\n // 已经重置了数组,就不需要分别再设置了\n if (path.includes(p) && path !== p) {\n delete data[path]\n }\n })\n\n const value = data[path]\n if (isFunction(value)) {\n data[path] = value()\n }\n }\n\n // 预渲染\n if (isFunction(prerender)) return prerender(data)\n\n // 正常渲染\n this.pendingUpdate = false\n let normalUpdate = {}\n const customWrapperMap: Map<Record<any, any>, Record<string, any>> = new Map()\n\n if (initRender) {\n // 初次渲染,使用页面级别的 setData\n normalUpdate = data\n } else {\n // 更新渲染,区分 CustomWrapper 与页面级别的 setData\n for (const p in data) {\n const dataPathArr = p.split('.')\n const found = findCustomWrapper(this, dataPathArr)\n if (found) {\n // 此项数据使用 CustomWrapper 去更新\n const { customWrapper, splitedPath } = found\n // 合并同一个 customWrapper 的相关更新到一次 setData 中\n customWrapperMap.set(customWrapper, {\n ...(customWrapperMap.get(customWrapper) || {}),\n [`i.${splitedPath}`]: data[p]\n })\n } else {\n // 此项数据使用页面去更新\n normalUpdate[p] = data[p]\n }\n }\n }\n\n const customWrapperCount = customWrapperMap.size\n const isNeedNormalUpdate = Object.keys(normalUpdate).length > 0\n const updateArrLen = customWrapperCount + (isNeedNormalUpdate ? 1 : 0)\n let executeTime = 0\n\n const cb = () => {\n if (++executeTime === updateArrLen) {\n perf.stop(setDataMark)\n this.flushUpdateCallback()\n initRender && perf.stop(PAGE_INIT)\n }\n }\n\n // custom-wrapper setData\n if (customWrapperCount) {\n customWrapperMap.forEach((data, ctx) => {\n if (process.env.NODE_ENV !== 'production' && options.debug) {\n // eslint-disable-next-line no-console\n console.log('custom wrapper setData: ', data)\n }\n ctx.setData(data, cb)\n })\n }\n\n // page setData\n if (isNeedNormalUpdate) {\n if (process.env.NODE_ENV !== 'production' && options.debug) {\n // eslint-disable-next-line no-console\n console.log('page setData:', normalUpdate)\n }\n ctx.setData(normalUpdate, cb)\n }\n }, 0)\n }\n\n public enqueueUpdateCallback (cb: Func, ctx?: Record<string, any>) {\n this.updateCallbacks.push(() => {\n ctx ? cb.call(ctx) : cb()\n })\n }\n\n public flushUpdateCallback () {\n const updateCallbacks = this.updateCallbacks\n if (!updateCallbacks.length) return\n\n const copies = updateCallbacks.slice(0)\n this.updateCallbacks.length = 0\n for (let i = 0; i < copies.length; i++) {\n copies[i]()\n }\n }\n}\n","import { Shortcuts } from '@tarojs/shared'\n\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport { TaroNode } from './node'\nimport { NodeType } from './node_types'\n\nexport class TaroText extends TaroNode {\n public _value: string\n public nodeType = NodeType.TEXT_NODE\n public nodeName = '#text'\n\n constructor (value) {\n super()\n this._value = value\n }\n\n public set textContent (text: string) {\n MutationObserver.record({\n target: this,\n type: MutationRecordType.CHARACTER_DATA,\n oldValue: this._value\n })\n this._value = text\n this.enqueueUpdate({\n path: `${this._path}.${Shortcuts.Text}`,\n value: text\n })\n }\n\n public get textContent (): string {\n return this._value\n }\n\n public set nodeValue (text: string) {\n this.textContent = text\n }\n\n public get nodeValue (): string {\n return this._value\n }\n\n public set data (text: string) {\n this.textContent = text\n }\n\n public get data (): string {\n return this._value\n }\n}\n","import { isArray } from '@tarojs/shared'\n\nconst findReg = /[!'()~]|%20|%00/g\nconst plusReg = /\\+/g\nconst replaceCharMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n}\n\nfunction replacer (match: string) {\n return replaceCharMap[match]\n}\n\nfunction appendTo (dict: Record<string, string[]>, name: string, value: string) {\n const res = isArray(value) ? value.join(',') : value\n if (name in dict) dict[name].push(res)\n else dict[name] = [res]\n}\n\nfunction addEach (value: string, key: string) {\n appendTo(this, key, value)\n}\n\nfunction decode (str: string) {\n return decodeURIComponent(str.replace(plusReg, ' '))\n}\n\nfunction encode (str: string) {\n return encodeURIComponent(str).replace(findReg, replacer)\n}\n\nexport class URLSearchParams {\n #dict = Object.create(null)\n\n constructor (query) {\n query ??= ''\n\n const dict = this.#dict\n\n if (typeof query === 'string') {\n if (query.charAt(0) === '?') {\n query = query.slice(1)\n }\n for (let pairs = query.split('&'), i = 0, length = pairs.length; i < length; i++) {\n const value = pairs[i]\n const index = value.indexOf('=')\n if (index > -1) {\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)))\n } else if (value.length) {\n appendTo(dict, decode(value), '')\n }\n }\n } else {\n if (isArray(query)) {\n for (let i = 0, length = query.length; i < length; i++) {\n const value = query[i]\n appendTo(dict, value[0], value[1])\n }\n } else if (query.forEach) {\n query.forEach(addEach, dict)\n } else {\n for (const key in query) {\n appendTo(dict, key, query[key])\n }\n }\n }\n }\n\n append (name: string, value: string) {\n appendTo(this.#dict, name, value)\n }\n\n delete (name: string) {\n delete this.#dict[name]\n }\n\n get (name: string) {\n const dict = this.#dict\n return name in dict ? dict[name][0] : null\n }\n\n getAll (name: string) {\n const dict = this.#dict\n return name in dict ? dict[name].slice(0) : []\n }\n\n has (name: string) {\n return name in this.#dict\n }\n\n keys (){\n return Object.keys(this.#dict)\n }\n\n set (name: string, value: string) {\n this.#dict[name] = ['' + value]\n }\n\n forEach (callback, thisArg) {\n const dict = this.#dict\n Object.getOwnPropertyNames(dict).forEach(function (name) {\n dict[name].forEach(function (value: string) {\n callback.call(thisArg, value, name, this)\n }, this)\n }, this)\n }\n\n toJSON () {\n return {}\n }\n\n toString () {\n const dict = this.#dict\n const query: any[] = []\n for (const key in dict) {\n const name = encode(key)\n for (let i = 0, value = dict[key]; i < value.length; i++) {\n query.push(name + '=' + encode(value[i]))\n }\n }\n return query.join('&')\n }\n}\n","import { isString, isUndefined } from '@tarojs/shared'\n\nimport { URLSearchParams } from './URLSearchParams'\n\nexport class URL {\n static createObjectURL () {\n throw new Error('Oops, not support URL.createObjectURL() in miniprogram.')\n }\n\n static revokeObjectURL () {\n throw new Error('Oops, not support URL.revokeObjectURL() in miniprogram.')\n }\n\n /* private property */\n #hash = ''\n #hostname = ''\n #pathname = ''\n #port = ''\n #protocol = ''\n #search: URLSearchParams\n\n constructor (url: string, base?: string) {\n if (!isString(url)) url = String(url)\n\n const parseResult = parseUrlBase(url, base)\n const { hash, hostname, pathname, port, protocol, search } = parseResult\n\n this.#hash = hash\n this.#hostname = hostname\n this.#pathname = pathname || '/'\n this.#port = port\n this.#protocol = protocol\n this.#search = new URLSearchParams(search)\n }\n\n /* public property */\n get protocol () {\n return this.#protocol\n }\n\n set protocol (val: string) {\n isString(val) && (this.#protocol = val.trim())\n }\n\n get host () {\n return this.hostname + (this.port ? ':' + this.port : '')\n }\n\n set host (val: string) {\n if (val && isString(val)) {\n val = val.trim()\n const { hostname, port } = parseUrl(`//${val}`)\n this.hostname = hostname\n this.port = port\n }\n }\n\n get hostname () {\n return this.#hostname\n }\n\n set hostname (val: string) {\n val && isString(val) && (this.#hostname = val.trim())\n }\n\n get port () {\n return this.#port\n }\n\n set port (val: string) {\n isString(val) && (this.#port = val.trim())\n }\n\n get pathname () {\n return this.#pathname\n }\n\n set pathname (val: string) {\n if (isString(val)) {\n val = val.trim()\n const HEAD_REG = /^(\\/|\\.\\/|\\.\\.\\/)/\n let temp = val\n while (HEAD_REG.test(temp)) {\n temp = temp.replace(HEAD_REG, '')\n }\n if (temp) this.#pathname = '/' + temp\n else this.#pathname = '/'\n }\n }\n\n get search () {\n const val = this.#search.toString()\n return (val.length === 0 || val.startsWith('?')) ? val : `?${val}`\n }\n\n set search (val: string) {\n if (isString(val)) {\n val = val.trim()\n this.#search = new URLSearchParams(val)\n }\n }\n\n get hash () {\n return this.#hash\n }\n\n set hash (val: string) {\n if (isString(val)) {\n val = val.trim()\n if (val) this.#hash = val.startsWith('#') ? val : `#${val}`\n else this.#hash = ''\n }\n }\n\n get href () {\n return `${this.protocol}//${this.host}${this.pathname}${this.search}${this.hash}`\n }\n\n set href (val: string) {\n if (val && isString(val)) {\n val = val.trim()\n const { protocol, hostname, port, hash, search, pathname } = parseUrl(val)\n this.protocol = protocol\n this.hostname = hostname\n this.pathname = pathname\n this.port = port\n this.hash = hash\n this.search = search\n }\n }\n\n get origin () {\n return `${this.protocol}//${this.host}`\n }\n\n set origin (val: string) {\n if (val && isString(val)) {\n val = val.trim()\n const { protocol, hostname, port } = parseUrl(val)\n this.protocol = protocol\n this.hostname = hostname\n this.port = port\n }\n }\n\n get searchParams () {\n return this.#search\n }\n\n // public method\n toString () {\n return this.href\n }\n\n toJSON () {\n return this.toString()\n }\n\n // convenient for deconstructor\n _toRaw () {\n return {\n protocol: this.protocol,\n port: this.port,\n host: this.host,\n hostname: this.hostname,\n pathname: this.pathname,\n hash: this.hash,\n search: this.search,\n origin: this.origin,\n href: this.href,\n }\n }\n}\n\nexport function parseUrl (url = '') {\n const result = {\n href: '',\n origin: '',\n protocol: '',\n hostname: '',\n host: '',\n port: '',\n pathname: '',\n search: '',\n hash: ''\n }\n if (!url || !isString(url)) return result\n\n url = url.trim()\n const PATTERN = /^(([^:/?#]+):)?\\/\\/(([^/?#]+):(.+)@)?([^/?#:]*)(:(\\d+))?([^?#]*)(\\?([^#]*))?(#(.*))?/\n const matches = url.match(PATTERN)\n\n if (!matches) return result\n\n // TODO: username & password ?\n result.protocol = matches[1] || 'https:'\n result.hostname = matches[6] || 'taro.com'\n result.port = matches[8] || ''\n result.pathname = matches[9] || '/'\n result.search = matches[10] || ''\n result.hash = matches[12] || ''\n result.href = url\n result.origin = result.protocol + '//' + result.hostname\n result.host = result.hostname + (result.port ? `:${result.port}` : '')\n\n return result\n}\n\nexport function parseUrlBase (url: string, base?: string) {\n const VALID_URL = /^(https?:)\\/\\//i\n\n let fullUrl = ''\n let parsedBase: ReturnType<typeof parseUrl> | null = null\n\n if (!isUndefined(base)) {\n base = String(base).trim()\n if (!VALID_URL.test(base)) throw new TypeError(`Failed to construct 'URL': Invalid base URL`)\n parsedBase = parseUrl(base)\n }\n\n url = String(url).trim()\n\n if (VALID_URL.test(url)) {\n fullUrl = url\n } else if (parsedBase) {\n if (url) {\n if (url.startsWith('//')) {\n fullUrl = parsedBase.protocol + url\n } else {\n fullUrl = parsedBase.origin + (url.startsWith('/') ? url : `/${url}`)\n }\n } else {\n fullUrl = parsedBase.href\n }\n } else {\n throw new TypeError(`Failed to construct 'URL': Invalid URL`)\n }\n\n return parseUrl(fullUrl)\n}\n","import { parseUrl } from '../bom/URL'\nimport { TaroElement } from './element'\n\nconst enum AnchorElementAttrs {\n HREF = 'href',\n PROTOCOL = 'protocol',\n HOST = 'host',\n SEARCH = 'search',\n HASH = 'hash',\n HOSTNAME = 'hostname',\n PORT = 'port',\n PATHNAME = 'pathname'\n}\n\nexport class AnchorElement extends TaroElement {\n public get href () {\n return this.props[AnchorElementAttrs.HREF] ?? ''\n }\n\n public set href (val: string) {\n this.setAttribute(AnchorElementAttrs.HREF, val)\n }\n\n get protocol () {\n return this.props[AnchorElementAttrs.PROTOCOL] ?? ''\n }\n\n get host () {\n return this.props[AnchorElementAttrs.HOST] ?? ''\n }\n\n get search () {\n return this.props[AnchorElementAttrs.SEARCH] ?? ''\n }\n\n get hash () {\n return this.props[AnchorElementAttrs.HASH] ?? ''\n }\n\n get hostname () {\n return this.props[AnchorElementAttrs.HOSTNAME] ?? ''\n }\n\n get port () {\n return this.props[AnchorElementAttrs.PORT] ?? ''\n }\n\n get pathname () {\n return this.props[AnchorElementAttrs.PATHNAME] ?? ''\n }\n\n public setAttribute (qualifiedName: string, value: any): void {\n if (qualifiedName === AnchorElementAttrs.HREF) {\n const willSetAttr = parseUrl(value)\n for (const k in willSetAttr) {\n super.setAttribute(k, willSetAttr[k])\n }\n } else {\n super.setAttribute(qualifiedName, value)\n }\n }\n\n}\n","import { TaroElement } from './element'\n\nexport class TransferElement extends TaroElement {\n public isTransferElement = true\n\n constructor (public dataName: string) {\n super()\n }\n\n public get _path () {\n return this.dataName\n }\n}\n","import { controlledComponent, isUndefined, toCamelCase } from '@tarojs/shared'\n\nimport {\n A,\n COMMENT,\n DOCUMENT_ELEMENT_NAME,\n ROOT_STR\n} from '../constants'\nimport { TaroElement } from '../dom/element'\nimport { createEvent } from '../dom/event'\nimport { eventSource } from '../dom/event-source'\nimport { FormElement } from '../dom/form'\nimport { NodeType } from '../dom/node_types'\nimport { TaroRootElement } from '../dom/root'\nimport { TaroText } from '../dom/text'\nimport env from '../env'\nimport { AnchorElement } from './anchor-element'\nimport { TransferElement } from './transfer'\n\nexport class TaroDocument extends TaroElement {\n public documentElement: TaroElement\n public head: TaroElement\n public body: TaroElement\n public createEvent = createEvent\n\n public constructor () {\n super()\n this.nodeType = NodeType.DOCUMENT_NODE\n this.nodeName = DOCUMENT_ELEMENT_NAME\n }\n\n public createElement (type: string): TaroElement | TaroRootElement | FormElement {\n const nodeName = type.toLowerCase()\n\n let element: TaroElement\n switch (true) {\n case nodeName === ROOT_STR:\n element = new TaroRootElement()\n return element\n case controlledComponent.has(nodeName):\n element = new FormElement()\n break\n case nodeName === A:\n element = new AnchorElement()\n break\n case nodeName === 'page-meta':\n case nodeName === 'navigation-bar':\n element = new TransferElement(toCamelCase(nodeName))\n break\n default:\n element = new TaroElement()\n break\n }\n\n element.nodeName = nodeName\n element.tagName = type.toUpperCase()\n\n return element\n }\n\n // an ugly fake createElementNS to deal with @vue/runtime-dom's\n // support mounting app to svg container since vue@3.0.8\n public createElementNS (_svgNS: string, type: string): TaroElement | TaroRootElement | FormElement {\n return this.createElement(type)\n }\n\n public createTextNode (text: string): TaroText {\n return new TaroText(text)\n }\n\n public getElementById<T extends TaroElement> (id: string | undefined | null): T | null {\n const el = eventSource.get(id)\n return isUndefined(el) ? null : el as T\n }\n\n public querySelector<T extends TaroElement> (query: string): T | null {\n // 为了 Vue3 的乞丐版实现\n if (/^#/.test(query)) {\n return this.getElementById<T>(query.slice(1))\n }\n return null\n }\n\n public querySelectorAll () {\n // fake hack\n return []\n }\n\n // @TODO: @PERF: 在 hydrate 移除掉空的 node\n public createComment (): TaroText {\n const textnode = new TaroText('')\n textnode.nodeName = COMMENT\n return textnode\n }\n\n get defaultView () {\n return env.window\n }\n}\n","import { isWebPlatform } from '@tarojs/shared'\n\nimport {\n APP,\n BODY,\n CONTAINER,\n HEAD,\n HTML\n} from '../constants'\nimport { TaroDocument } from '../dom/document'\nimport env from '../env'\n\nlet document\n\nif (process.env.TARO_ENV && !isWebPlatform()) {\n /* eslint-disable no-inner-declarations */\n function createDocument (): TaroDocument {\n /**\n * <document>\n * <html>\n * <head></head>\n * <body>\n * <container>\n * <app id=\"app\" />\n * </container>\n * </body>\n * </html>\n * </document>\n */\n const doc = new TaroDocument()\n const documentCreateElement = doc.createElement.bind(doc)\n const html = documentCreateElement(HTML)\n const head = documentCreateElement(HEAD)\n const body = documentCreateElement(BODY)\n const app = documentCreateElement(APP)\n app.id = APP\n const container = documentCreateElement(CONTAINER) // 多包一层主要为了兼容 vue\n\n doc.appendChild(html)\n html.appendChild(head)\n html.appendChild(body)\n body.appendChild(container)\n container.appendChild(app)\n\n doc.documentElement = html\n doc.head = head\n doc.body = body\n\n return doc\n }\n document = env.document = createDocument()\n} else {\n document = env.document\n}\n\nexport {\n document\n}\n","import type { TaroElement } from '../dom/element'\nimport type { Style } from '../dom/style'\n\nexport function getComputedStyle (element: TaroElement): Style {\n return element.style\n}\n","import { Events, hooks } from '@tarojs/shared'\n\nconst eventCenter = hooks.call('getEventCenter', Events)!\n\nexport type EventsType = typeof Events\nexport { eventCenter, Events }\n","/**\n * 一个小型缓存池,用于在切换页面时,存储一些上下文信息\n */\n\nexport class RuntimeCache<T> {\n name: string\n cache = new Map<string, T>()\n\n constructor (name: string) {\n this.name = name\n }\n\n has (identifier: string) {\n return this.cache.has(identifier)\n }\n\n set (identifier: string, ctx: T) {\n if (identifier && ctx) {\n this.cache.set(identifier, ctx)\n }\n }\n\n get (identifier: string): T | undefined {\n if (this.has(identifier)) return this.cache.get(identifier)\n }\n\n delete (identifier: string) {\n this.cache.delete(identifier)\n }\n}\n","import { isNumber, isString } from '@tarojs/shared'\n\nimport { CONTEXT_ACTIONS } from '../constants'\nimport { Events } from '../emitter/emitter'\nimport { RuntimeCache } from '../utils/cache'\n\nimport type * as LocationType from './location'\n\nexport interface HistoryState {\n state: Record<string, any> | null\n title: string\n url: string\n}\n\ntype Options = {\n window: any\n}\ntype HistoryContext = {\n location: LocationType.Location\n stack: HistoryState[]\n cur: number\n}\nconst cache = new RuntimeCache<HistoryContext>('history')\n\nexport class History extends Events {\n /* private property */\n #location: LocationType.Location\n #stack: HistoryState[] = []\n #cur = 0\n\n #window: any\n\n constructor (location: LocationType.Location, options: Options) {\n super()\n\n this.#window = options.window\n this.#location = location\n\n this.#location.on('__record_history__', (href: string) => {\n this.#cur++\n this.#stack = this.#stack.slice(0, this.#cur)\n this.#stack.push({\n state: null,\n title: '',\n url: href\n })\n }, null)\n\n this.#location.on('__reset_history__', (href: string) => {\n this.#reset(href)\n }, null)\n\n // 切换上下文行为\n\n this.on(CONTEXT_ACTIONS.INIT, () => {\n this.#reset()\n }, null)\n\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId: string) => {\n cache.set(pageId, {\n location: this.#location,\n stack: this.#stack.slice(),\n cur: this.#cur\n })\n }, null)\n\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId: string) => {\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId)!\n this.#location = ctx.location\n this.#stack = ctx.stack\n this.#cur = ctx.cur\n }\n }, null)\n\n this.on(CONTEXT_ACTIONS.DESTORY, (pageId: string) => {\n cache.delete(pageId)\n }, null)\n\n this.#reset()\n }\n\n #reset (href = '') {\n this.#stack = [\n {\n state: null,\n title: '',\n url: href || this.#location.href\n }\n ]\n this.#cur = 0\n }\n\n /* public property */\n get length () {\n return this.#stack.length\n }\n\n get state () {\n return this.#stack[this.#cur].state\n }\n\n /* public method */\n go (delta: number) {\n if (!isNumber(delta) || isNaN(delta)) return\n\n let targetIdx = this.#cur + delta\n targetIdx = Math.min(Math.max(targetIdx, 0), this.length - 1)\n\n this.#cur = targetIdx\n\n this.#location.trigger('__set_href_without_history__', this.#stack[this.#cur].url)\n this.#window.trigger('popstate', this.#stack[this.#cur])\n }\n\n back () {\n this.go(-1)\n }\n\n forward () {\n this.go(1)\n }\n\n pushState (state: any, title: string, url: string) {\n if (!url || !isString(url)) return\n this.#stack = this.#stack.slice(0, this.#cur + 1)\n this.#stack.push({\n state,\n title,\n url\n })\n this.#cur = this.length - 1\n\n this.#location.trigger('__set_href_without_history__', url)\n }\n\n replaceState (state: any, title: string, url: string) {\n if (!url || !isString(url)) return\n this.#stack[this.#cur] = {\n state,\n title,\n url\n }\n\n this.#location.trigger('__set_href_without_history__', url)\n }\n\n // For debug\n get cache () {\n return cache\n }\n}\n","import { AppInstance, PageInstance } from './dsl/instance'\n\nexport interface Router {\n params: Record<string, unknown>\n path: string\n $taroPath: string\n onReady: string\n onHide: string\n onShow: string\n exitState?: any\n}\n\ninterface Current {\n app: AppInstance | null\n router: Router | null\n page: PageInstance | null\n preloadData?: any\n}\n\nexport const Current: Current = {\n app: null,\n router: null,\n page: null\n}\n\nexport const getCurrentInstance = () => Current\n","import { isNumber, isString, warn } from '@tarojs/shared'\n\nimport { CONTEXT_ACTIONS } from '../constants'\nimport { getCurrentInstance } from '../current'\nimport { Events } from '../emitter/emitter'\nimport { RuntimeCache } from '../utils/cache'\nimport { URL } from './URL'\n\ntype PreValue = ReturnType<typeof URL.prototype._toRaw>\n\ntype Options = {\n window: any\n}\ntype LocationContext = {\n lastHref: string\n}\n\nconst INIT_URL = 'https://taro.com'\nconst cache = new RuntimeCache<LocationContext>('location')\n\nexport class Location extends Events {\n /* private property */\n #url = new URL(INIT_URL)\n #noCheckUrl = false\n #window: any\n\n constructor (options: Options) {\n super()\n\n this.#window = options.window\n\n this.#reset()\n\n this.on(\n '__set_href_without_history__',\n (href: string) => {\n this.#noCheckUrl = true\n\n const lastHash = this.#url.hash\n this.#url.href = generateFullUrl(href)\n\n if (lastHash !== this.#url.hash) {\n this.#window.trigger('hashchange')\n }\n\n this.#noCheckUrl = false\n },\n null\n )\n\n // 切换上下文行为\n this.on(\n CONTEXT_ACTIONS.INIT,\n () => {\n this.#reset()\n },\n null\n )\n\n this.on(\n CONTEXT_ACTIONS.RESTORE,\n (pageId: string) => {\n cache.set(pageId, {\n lastHref: this.href,\n })\n },\n null\n )\n\n this.on(\n CONTEXT_ACTIONS.RECOVER,\n (pageId: string) => {\n // 数据恢复时,不需要执行跳转\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId)!\n this.#noCheckUrl = true\n this.#url.href = ctx.lastHref\n this.#noCheckUrl = false\n }\n },\n null\n )\n\n this.on(\n CONTEXT_ACTIONS.DESTORY,\n (pageId: string) => {\n cache.delete(pageId)\n },\n null\n )\n }\n\n /* private method */\n #reset () {\n const Current = getCurrentInstance()\n const router = Current.router\n if (router) {\n const { path, params } = router\n const searchArr = Object.keys(params).map((key) => {\n return `${key}=${params[key]}`\n })\n const searchStr = searchArr.length > 0 ? '?' + searchArr.join('&') : ''\n const url = `${INIT_URL}${path.startsWith('/') ? path : '/' + path}${searchStr}`\n\n this.#url = new URL(url)\n\n this.trigger('__reset_history__', this.href)\n }\n }\n\n #getPreValue (): PreValue {\n return this.#url._toRaw()\n }\n\n #rollBack (href: string) {\n this.#url.href = href\n }\n\n #recordHistory () {\n this.trigger('__record_history__', this.href)\n }\n\n /**\n * 校验url的变化,是否需要更新history\n */\n #checkUrlChange (preValue: PreValue): boolean {\n if (this.#noCheckUrl) {\n return false\n }\n\n const { protocol, hostname, port, pathname, search, hash } = this.#url._toRaw()\n\n // 跨域三要素不允许修改\n if (protocol !== preValue.protocol || hostname !== preValue.hostname || port !== preValue.port) {\n this.#rollBack(preValue.href)\n return false\n }\n\n // pathname\n if (pathname !== preValue.pathname) {\n return true\n }\n\n // search\n if (search !== preValue.search) {\n return true\n }\n\n // hashchange\n if (hash !== preValue.hash) {\n this.#window.trigger('hashchange')\n return true\n }\n\n this.#rollBack(preValue.href)\n return false\n }\n\n /* public property */\n get protocol () {\n return this.#url.protocol\n }\n\n set protocol (val: string) {\n const REG = /^(http|https):$/i\n if (!val || !isString(val) || !REG.test(val.trim())) return\n\n val = val.trim()\n const preValue = this.#getPreValue()\n this.#url.protocol = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get host () {\n return this.#url.host\n }\n\n set host (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n\n const preValue = this.#getPreValue()\n this.#url.host = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get hostname () {\n return this.#url.hostname\n }\n\n set hostname (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n\n const preValue = this.#getPreValue()\n this.#url.hostname = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get port () {\n return this.#url.port\n }\n\n set port (val: string) {\n const xVal = Number((val = val.trim()))\n if (!isNumber(xVal) || xVal <= 0) return\n\n const preValue = this.#getPreValue()\n this.#url.port = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get pathname () {\n return this.#url.pathname\n }\n\n set pathname (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n\n const preValue = this.#getPreValue()\n this.#url.pathname = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get search () {\n return this.#url.search\n }\n\n set search (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n val = val.startsWith('?') ? val : `?${val}`\n\n const preValue = this.#getPreValue()\n this.#url.search = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get hash () {\n return this.#url.hash\n }\n\n // 小程序的navigateTo存在截断hash字符串的问题\n set hash (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n val = val.startsWith('#') ? val : `#${val}`\n\n const preValue = this.#getPreValue()\n this.#url.hash = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get href () {\n return this.#url.href\n }\n\n set href (val: string) {\n const REG = /^(http:|https:)?\\/\\/.+/\n if (!val || !isString(val) || !REG.test((val = val.trim()))) return\n\n const preValue = this.#getPreValue()\n this.#url.href = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get origin () {\n return this.#url.origin\n }\n\n set origin (val: string) {\n const REG = /^(http:|https:)?\\/\\/.+/\n if (!val || !isString(val) || !REG.test((val = val.trim()))) return\n\n const preValue = this.#getPreValue()\n this.#url.origin = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n /* public method */\n assign () {\n warn(true, '小程序环境中调用location.assign()无效.')\n }\n\n reload () {\n warn(true, '小程序环境中调用location.reload()无效.')\n }\n\n replace (url: string) {\n this.trigger('__set_href_without_history__', url)\n }\n\n toString () {\n return this.href\n }\n\n // For debug\n get cache () {\n return cache\n }\n}\n\nfunction generateFullUrl (val = '') {\n const origin = INIT_URL\n if (/^[/?#]/.test(val)) {\n return origin + val\n }\n return val\n}\n","import { isWebPlatform } from '@tarojs/shared'\n\nimport env from '../env'\n\nconst machine = 'Macintosh'\nconst arch = 'Intel Mac OS X 10_14_5'\nconst engine = 'AppleWebKit/534.36 (KHTML, like Gecko) NodeJS/v4.1.0 Chrome/76.0.3809.132 Safari/534.36'\n\nconst msg = '(' + machine + '; ' + arch + ') ' + engine\n\nexport const nav = isWebPlatform() ? env.window.navigator : {\n appCodeName: 'Mozilla',\n appName: 'Netscape',\n appVersion: '5.0 ' + msg,\n cookieEnabled: true,\n mimeTypes: [],\n onLine: true,\n platform: 'MacIntel',\n plugins: [],\n product: 'Taro',\n productSub: '20030107',\n userAgent: 'Mozilla/5.0 ' + msg,\n vendor: 'Joyent',\n vendorSub: ''\n}\n","// https://github.com/myrne/performance-now\nexport let now: () => number\n\n(function () {\n let loadTime\n if ((typeof performance !== 'undefined' && performance !== null) && performance.now) {\n now = () => performance.now()\n } else if (Date.now) {\n loadTime = Date.now()\n now = () => Date.now() - loadTime\n } else {\n loadTime = new Date().getTime()\n now = () => new Date().getTime() - loadTime\n }\n})()\n\nlet lastTime = 0\n\n// https://gist.github.com/paulirish/1579671\n// https://gist.github.com/jalbam/5fe05443270fa6d8136238ec72accbc0\nconst _raf = typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame !== null ? requestAnimationFrame : function (callback) {\n const _now = now()\n const nextTime = Math.max(lastTime + 16, _now) // First time will execute it immediately but barely noticeable and performance is gained.\n return setTimeout(function () { callback(lastTime = nextTime) }, nextTime - _now)\n}\n\nconst _caf = typeof cancelAnimationFrame !== 'undefined' && cancelAnimationFrame !== null\n ? cancelAnimationFrame\n : function (seed) {\n // fix https://github.com/NervJS/taro/issues/7749\n clearTimeout(seed)\n }\n\nexport {\n _caf as caf,\n _raf as raf\n}\n","import { isString, isWebPlatform } from '@tarojs/shared'\n\nimport { CONTEXT_ACTIONS } from '../constants'\nimport { Events } from '../emitter/emitter'\nimport env from '../env'\nimport { getComputedStyle } from './getComputedStyle'\nimport { History } from './history'\nimport { Location } from './location'\nimport { nav as navigator } from './navigator'\nimport { caf, raf } from './raf'\n\nlet window\n\nif (process.env.TARO_ENV && !isWebPlatform()) {\n class Window extends Events {\n navigator = navigator\n requestAnimationFrame = raf\n cancelAnimationFrame = caf\n getComputedStyle = getComputedStyle\n Date: DateConstructor\n\n location: Location\n history: History\n\n constructor () {\n super()\n\n const globalProperties = [\n ...Object.getOwnPropertyNames(global || {}),\n ...Object.getOwnPropertySymbols(global || {})\n ]\n\n globalProperties.forEach(property => {\n if (property === 'atob' || property === 'document') return\n if (!Object.prototype.hasOwnProperty.call(this, property)) {\n // 防止小程序环境下,window 上的某些 get 属性在赋值时报错\n try {\n this[property] = global[property] \n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Taro warn] window.${String(property)} 在赋值到 window 时报错`)\n }\n }\n }\n })\n\n this.Date ||= Date\n\n // 应用启动时,提供给需要读取历史信息的库使用\n this.location = new Location({ window: this })\n this.history = new History(this.location, { window: this })\n\n this.initEvent()\n }\n\n initEvent () {\n const _location = this.location\n const _history = this.history\n\n this.on(CONTEXT_ACTIONS.INIT, (pageId: string) => {\n // 页面onload,为该页面建立新的上下文信息\n _location.trigger(CONTEXT_ACTIONS.INIT, pageId)\n }, null)\n\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId: string) => {\n // 页面onshow,恢复当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.RECOVER, pageId)\n _history.trigger(CONTEXT_ACTIONS.RECOVER, pageId)\n }, null)\n\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId: string) => {\n // 页面onhide,缓存当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.RESTORE, pageId)\n _history.trigger(CONTEXT_ACTIONS.RESTORE, pageId)\n }, null)\n\n this.on(CONTEXT_ACTIONS.DESTORY, (pageId: string) => {\n // 页面onunload,清除当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.DESTORY, pageId)\n _history.trigger(CONTEXT_ACTIONS.DESTORY, pageId)\n }, null)\n }\n\n get document () {\n return env.document\n }\n\n addEventListener (event: string, callback: (arg: any) => void) {\n if (!isString(event)) return\n this.on(event, callback, null)\n }\n\n removeEventListener (event: string, callback: (arg: any) => void) {\n if (!isString(event)) return\n this.off(event, callback, null)\n }\n\n setTimeout (...args: Parameters<typeof setTimeout>) {\n return setTimeout(...args)\n }\n\n clearTimeout (...args: Parameters<typeof clearTimeout>) {\n return clearTimeout(...args)\n }\n }\n\n window = env.window = new Window()\n} else {\n window = env.window\n}\n\nexport const location = window.location\nexport const history = window.history\n\nexport {\n window\n}\n","import { TaroElement } from './element'\n\n// for Vue3\nexport class SVGElement extends TaroElement {}\n","/* eslint-disable dot-notation */\nimport {\n EMPTY_OBJ, ensure, getComponentsAlias, hooks, internalComponents,\n isArray, isFunction, isString, isUndefined, isWebPlatform, Shortcuts\n} from '@tarojs/shared'\n\nimport { raf } from '../bom/raf'\nimport { window } from '../bom/window'\nimport { BEHAVIORS, CONTEXT_ACTIONS, CUSTOM_WRAPPER, EXTERNAL_CLASSES, ON_HIDE, ON_LOAD, ON_READY, ON_SHOW, OPTIONS, PAGE_INIT, VIEW } from '../constants'\nimport { Current } from '../current'\nimport { eventHandler } from '../dom/event'\nimport { eventCenter } from '../emitter/emitter'\nimport env from '../env'\nimport { perf } from '../perf'\nimport { customWrapperCache, incrementId } from '../utils'\n\nimport type { PageConfig } from '@tarojs/taro'\nimport type { TaroRootElement } from '../dom/root'\nimport type { Func, MpInstance } from '../interface'\nimport type { Instance, PageInstance, PageProps } from './instance'\n\nconst instances = new Map<string, Instance>()\nconst pageId = incrementId()\nconst isWeb = isWebPlatform()\n\nexport function injectPageInstance (inst: Instance<PageProps>, id: string) {\n hooks.call('mergePageInstance', instances.get(id), inst)\n instances.set(id, inst)\n}\n\nexport function getPageInstance (id: string): Instance | undefined {\n return instances.get(id)\n}\n\nexport function removePageInstance (id: string) {\n instances.delete(id)\n}\n\nexport function addLeadingSlash (path?: string): string {\n if (path == null) {\n return ''\n }\n return path.charAt(0) === '/' ? path : '/' + path\n}\n\nexport function safeExecute (path: string, lifecycle: string, ...args: unknown[]) {\n const instance = instances.get(path)\n\n if (instance == null) {\n return\n }\n\n const func = hooks.call('getLifecycle', instance, lifecycle as keyof PageInstance)\n\n if (isArray(func)) {\n const res = func.map(fn => fn.apply(instance, args))\n return res[0]\n }\n\n if (!isFunction(func)) {\n return\n }\n\n return func.apply(instance, args)\n}\n\nexport function stringify (obj?: Record<string, unknown>) {\n if (obj == null) {\n return ''\n }\n const path = Object.keys(obj).map((key) => {\n return key + '=' + obj[key]\n }).join('&')\n return path === '' ? path : '?' + path\n}\n\nexport function getPath (id: string, options?: Record<string, unknown>): string {\n const idx = id.indexOf('?')\n if (isWeb) {\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options?.stamp ? { stamp: options.stamp } : {})}`\n } else {\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options)}`\n }\n}\n\nexport function getOnReadyEventKey (path: string) {\n return path + '.' + ON_READY\n}\n\nexport function getOnShowEventKey (path: string) {\n return path + '.' + ON_SHOW\n}\n\nexport function getOnHideEventKey (path: string) {\n return path + '.' + ON_HIDE\n}\n\nexport function createPageConfig (component: any, pageName?: string, data?: Record<string, unknown>, pageConfig?: PageConfig) {\n // 小程序 Page 构造器是一个傲娇小公主,不能把复杂的对象挂载到参数上\n const id = pageName ?? `taro_page_${pageId()}`\n const [\n ONLOAD,\n ONUNLOAD,\n ONREADY,\n ONSHOW,\n ONHIDE,\n LIFECYCLES,\n SIDE_EFFECT_LIFECYCLES,\n ] = hooks.call('getMiniLifecycleImpl')!.page\n let pageElement: TaroRootElement | null = null\n let unmounting = false\n let prepareMountList: (() => void)[] = []\n\n function setCurrentRouter (page: MpInstance) {\n const router = isWeb ? page.$taroPath : page.route || page.__route__ || page.$taroPath\n Current.router = {\n params: page.$taroParams!,\n path: addLeadingSlash(router),\n $taroPath: page.$taroPath,\n onReady: getOnReadyEventKey(id),\n onShow: getOnShowEventKey(id),\n onHide: getOnHideEventKey(id)\n }\n if (!isUndefined(page.exitState)) {\n Current.router.exitState = page.exitState\n }\n }\n let loadResolver: (...args: unknown[]) => void\n let hasLoaded: Promise<void>\n const config: PageInstance = {\n [ONLOAD] (this: MpInstance, options: Readonly<Record<string, unknown>> = {}, cb?: Func) {\n hasLoaded = new Promise(resolve => { loadResolver = resolve })\n\n perf.start(PAGE_INIT)\n\n Current.page = this as any\n this.config = pageConfig || {}\n\n // this.$taroPath 是页面唯一标识\n const uniqueOptions = Object.assign({}, options, { $taroTimestamp: Date.now() })\n const $taroPath = this.$taroPath = getPath(id, uniqueOptions)\n if (isWeb) {\n config.path = $taroPath\n }\n // this.$taroParams 作为暴露给开发者的页面参数对象,可以被随意修改\n if (this.$taroParams == null) {\n this.$taroParams = uniqueOptions\n }\n\n setCurrentRouter(this)\n\n // 初始化当前页面的上下文信息\n if (!isWeb) {\n window.trigger(CONTEXT_ACTIONS.INIT, $taroPath)\n }\n\n const mount = () => {\n Current.app!.mount!(component, $taroPath, () => {\n pageElement = env.document.getElementById<TaroRootElement>($taroPath)\n\n ensure(pageElement !== null, '没有找到页面实例。')\n safeExecute($taroPath, ON_LOAD, this.$taroParams)\n loadResolver()\n if (!isWeb) {\n pageElement.ctx = this\n pageElement.performUpdate(true, cb)\n } else {\n isFunction(cb) && cb()\n }\n })\n }\n if (unmounting) {\n prepareMountList.push(mount)\n } else {\n mount()\n }\n },\n [ONUNLOAD] () {\n const $taroPath = this.$taroPath\n // 销毁当前页面的上下文信息\n if (!isWeb) {\n window.trigger(CONTEXT_ACTIONS.DESTORY, $taroPath)\n }\n // 触发onUnload生命周期\n safeExecute($taroPath, ONUNLOAD)\n unmounting = true\n Current.app!.unmount!($taroPath, () => {\n unmounting = false\n instances.delete($taroPath)\n if (pageElement) {\n pageElement.ctx = null\n pageElement = null\n }\n if (prepareMountList.length) {\n prepareMountList.forEach(fn => fn())\n prepareMountList = []\n }\n })\n },\n [ONREADY] () {\n hasLoaded.then(() => {\n // 触发生命周期\n safeExecute(this.$taroPath, ON_READY)\n // 通过事件触发子组件的生命周期\n raf(() => eventCenter.trigger(getOnReadyEventKey(id)))\n this.onReady.called = true\n })\n },\n [ONSHOW] (options = {}) {\n hasLoaded.then(() => {\n // 设置 Current 的 page 和 router\n Current.page = this as any\n setCurrentRouter(this)\n // 恢复上下文信息\n if (!isWeb) {\n window.trigger(CONTEXT_ACTIONS.RECOVER, this.$taroPath)\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_SHOW, options)\n // 通过事件触发子组件的生命周期\n raf(() => eventCenter.trigger(getOnShowEventKey(id)))\n })\n },\n [ONHIDE] () {\n // 缓存当前页面上下文信息\n if (!isWeb) {\n window.trigger(CONTEXT_ACTIONS.RESTORE, this.$taroPath)\n }\n // 设置 Current 的 page 和 router\n if (Current.page === this) {\n Current.page = null\n Current.router = null\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_HIDE)\n // 通过事件触发子组件的生命周期\n eventCenter.trigger(getOnHideEventKey(id))\n }\n }\n\n LIFECYCLES.forEach((lifecycle) => {\n let isDefer = false\n lifecycle = lifecycle.replace(/^defer:/, () => {\n isDefer = true\n return ''\n })\n config[lifecycle] = function () {\n const exec = () => safeExecute(this.$taroPath, lifecycle, ...arguments)\n if (isDefer) {\n hasLoaded.then(exec)\n } else {\n return exec()\n }\n }\n })\n\n // onShareAppMessage 和 onShareTimeline 一样,会影响小程序右上方按钮的选项,因此不能默认注册。\n SIDE_EFFECT_LIFECYCLES.forEach(lifecycle => {\n if (component[lifecycle] ||\n component.prototype?.[lifecycle] ||\n component[lifecycle.replace(/^on/, 'enable')] ||\n pageConfig?.[lifecycle.replace(/^on/, 'enable')]\n ) {\n config[lifecycle] = function (...args) {\n const target = args[0]?.target\n if (target?.id) {\n const id = target.id\n const element = env.document.getElementById(id)\n if (element) {\n target.dataset = element.dataset\n }\n }\n return safeExecute(this.$taroPath, lifecycle, ...args)\n }\n }\n })\n\n config.eh = eventHandler\n\n if (!isUndefined(data)) {\n config.data = data\n }\n\n hooks.call('modifyPageObject', config)\n\n return config\n}\n\nexport function createComponentConfig (component: React.ComponentClass, componentName?: string, data?: Record<string, unknown>) {\n const id = componentName ?? `taro_component_${pageId()}`\n let componentElement: TaroRootElement | null = null\n const [ ATTACHED, DETACHED ] = hooks.call('getMiniLifecycleImpl')!.component\n\n const config: any = {\n [ATTACHED] () {\n perf.start(PAGE_INIT)\n this.pageIdCache = this.getPageId?.() || pageId()\n\n const path = getPath(id, { id: this.pageIdCache })\n\n Current.app!.mount!(component, path, () => {\n componentElement = env.document.getElementById<TaroRootElement>(path)\n ensure(componentElement !== null, '没有找到组件实例。')\n this.$taroInstances = instances.get(path)\n safeExecute(path, ON_LOAD)\n if (!isWeb) {\n componentElement.ctx = this\n componentElement.performUpdate(true)\n }\n })\n },\n [DETACHED] () {\n const path = getPath(id, { id: this.pageIdCache })\n\n Current.app!.unmount!(path, () => {\n instances.delete(path)\n if (componentElement) {\n componentElement.ctx = null\n }\n })\n },\n methods: {\n eh: eventHandler\n }\n }\n\n if (!isUndefined(data)) {\n config.data = data\n }\n\n [OPTIONS, EXTERNAL_CLASSES, BEHAVIORS].forEach(key => {\n config[key] = component[key] ?? EMPTY_OBJ\n })\n\n return config\n}\n\nexport function createRecursiveComponentConfig (componentName?: string) {\n const isCustomWrapper = componentName === CUSTOM_WRAPPER\n const [ ATTACHED, DETACHED ] = hooks.call('getMiniLifecycleImpl')!.component\n\n const lifeCycles = isCustomWrapper\n ? {\n [ATTACHED] () {\n const componentId = this.data.i?.sid || this.props.i?.sid\n if (isString(componentId)) {\n customWrapperCache.set(componentId, this)\n const el = env.document.getElementById(componentId)\n if (el) {\n el.ctx = this\n }\n }\n },\n [DETACHED] () {\n const componentId = this.data.i?.sid || this.props.i?.sid\n if (isString(componentId)) {\n customWrapperCache.delete(componentId)\n const el = env.document.getElementById(componentId)\n if (el) {\n el.ctx = null\n }\n }\n }\n }\n : EMPTY_OBJ\n\n return hooks.call('modifyRecursiveComponentConfig', \n { \n properties: {\n i: {\n type: Object,\n value: {\n [Shortcuts.NodeName]: getComponentsAlias(internalComponents)[VIEW]._num\n }\n },\n l: {\n type: String,\n value: ''\n }\n },\n options: {\n addGlobalClass: true,\n virtualHost: !isCustomWrapper\n },\n methods: {\n eh: eventHandler\n },\n ...lifeCycles }, { isCustomWrapper })\n}\n","import { isWebPlatform } from '@tarojs/shared'\n\nimport { Current } from './current'\nimport { TaroRootElement } from './dom/root'\nimport env from './env'\n\nimport type { Func } from './interface'\n\nconst TIMEOUT = 100\n\nexport const nextTick = (cb: Func, ctx?: Record<string, any>) => {\n const beginTime = Date.now()\n const router = Current.router\n\n const timerFunc = () => {\n setTimeout(function () {\n ctx ? cb.call(ctx) : cb()\n }, 1)\n }\n\n if (router === null) return timerFunc()\n\n const path = router.$taroPath\n\n /**\n * 三种情况\n * 1. 调用 nextTick 时,pendingUpdate 已经从 true 变为 false(即已更新完成),那么需要光等 100ms\n * 2. 调用 nextTick 时,pendingUpdate 为 true,那么刚好可以搭上便车\n * 3. 调用 nextTick 时,pendingUpdate 还是 false,框架仍未启动更新逻辑,这时最多轮询 100ms,等待 pendingUpdate 变为 true。\n */\n function next () {\n const pageElement: TaroRootElement | null = env.document.getElementById<TaroRootElement>(path)\n if (pageElement?.pendingUpdate) {\n if (isWebPlatform()) {\n // eslint-disable-next-line dot-notation\n pageElement.firstChild?.['componentOnReady']?.().then(() => {\n timerFunc()\n }) ?? timerFunc()\n } else {\n pageElement.enqueueUpdateCallback(cb, ctx)\n }\n } else if (Date.now() - beginTime > TIMEOUT) {\n timerFunc()\n } else {\n setTimeout(() => next(), 20)\n }\n }\n\n next()\n}\n"],"names":["componentsAlias","_getComponentsAlias","isWeb","document","cache","window","navigator","raf","caf","getComponentsAlias"],"mappings":";;;AAAO,MAAM,kBAAkB,GAAG,KAAI;AAC/B,MAAM,YAAY,GAAG,eAAc;AACnC,MAAM,YAAY,GAAG,WAAU;AAC/B,MAAM,QAAQ,GAAG,cAAa;AAC9B,MAAM,SAAS,GAAG,QAAO;AACzB,MAAM,QAAQ,GAAG,OAAM;AACvB,MAAM,IAAI,GAAG,OAAM;AACnB,MAAM,IAAI,GAAG,OAAM;AACnB,MAAM,IAAI,GAAG,OAAM;AACnB,MAAM,GAAG,GAAG,MAAK;AACjB,MAAM,SAAS,GAAG,YAAW;AAC7B,MAAM,qBAAqB,GAAG,YAAW;AACzC,MAAM,iBAAiB,GAAG,oBAAmB;AAC7C,MAAM,EAAE,GAAG,KAAI;AACf,MAAM,GAAG,GAAG,MAAK;AACjB,MAAM,KAAK,GAAG,QAAO;AACrB,MAAM,KAAK,GAAG,QAAO;AACrB,MAAM,KAAK,GAAG,QAAO;AACrB,MAAM,IAAI,GAAG,OAAM;AACnB,MAAM,WAAW,GAAG,cAAa;AACjC,MAAM,SAAS,GAAG,YAAW;AAC7B,MAAM,KAAK,GAAG,QAAO;AACrB,MAAM,OAAO,GAAG,UAAS;AACzB,MAAM,MAAM,GAAG,SAAQ;AACvB,MAAM,KAAK,GAAG,QAAO;AACrB,MAAM,KAAK,GAAG,QAAO;AACrB,MAAM,MAAM,GAAG,SAAQ;AACvB,MAAM,cAAc,GAAG,iBAAgB;AACvC,MAAM,MAAM,GAAG,SAAQ;AACvB,MAAM,cAAc,GAAG,gBAAe;AACtC,MAAM,IAAI,GAAG,OAAM;AACnB,MAAM,OAAO,GAAG,UAAS;AACzB,MAAM,UAAU,GAAG,YAAW;AAC9B,MAAM,QAAQ,GAAG,UAAS;AAC1B,MAAM,SAAS,GAAG,YAAW;AAC7B,MAAM,IAAI,GAAG,OAAM;AACnB,MAAM,WAAW,GAAG,aAAY;AAChC,MAAM,YAAY,GAAG,cAAa;AAClC,MAAM,SAAS,GAAG,YAAW;AAC7B,MAAM,UAAU,GAAG,aAAY;AAC/B,MAAM,OAAO,GAAG,UAAS;AACzB,MAAM,OAAO,GAAG,SAAQ;AACxB,MAAM,QAAQ,GAAG,UAAS;AAC1B,MAAM,OAAO,GAAG,SAAQ;AACxB,MAAM,OAAO,GAAG,SAAQ;AACxB,MAAM,OAAO,GAAG,UAAS;AACzB,MAAM,gBAAgB,GAAG,kBAAiB;AAC1C,MAAM,qBAAqB,GAAG,WAAU;AACxC,MAAM,SAAS,GAAG,YAAW;AAC7B,MAAM,CAAC,GAAG,IAAG;AAEpB;;AAEG;IACS,gBAKX;AALD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,GAAU,CAAA;AACV,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,GAAa,CAAA;AACb,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,GAAa,CAAA;AACb,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,GAAa,CAAA;AACf,CAAC,EALW,eAAe,KAAf,eAAe,GAK1B,EAAA,CAAA,CAAA;;ACvCD,MAAM,SAAS,GAA2B,EAAE,CAAA;AAE5C;;;;;;;AAOG;MACU,oBAAoB,CAAA;AAM/B,IAAA,WAAA,CAAa,QAA0B,EAAA;QAFhC,IAAO,CAAA,OAAA,GAAqB,EAAE,CAAA;AAGnC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;KACzB;AAED;;;;;;;AAOG;IACH,OAAO,CAAE,MAAgB,EAAE,OAA8B,EAAA;QACvD,IAAI,CAAC,UAAU,EAAE,CAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;AAE5B,QAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACrB;AAED;;;;AAIG;IACH,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAElB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AAC3B,SAAA;KACF;AAED;;;;AAIG;IACH,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;KACnD;AACF,CAAA;AAED;AACA,MAAM,UAAU,GAAG,CACjB,cAA+B,EAC/B,MAAuB,KACZ;AACX,IAAA,OAAO,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,GAAG,MAAK,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,GAAG,CAAA,CAAA;AAC/D,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,MAAsB,EAAE,OAA6B,KAAI;AAC5E,IAAA,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IAClG,QAAQ,MAAM,CAAC,IAAI;AACjB,QAAA,KAAA,eAAA;AACE,YAAA,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,qBAAqB;AAAE,oBAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;AAClD,gBAAA,OAAO,IAAI,CAAA;AACZ,aAAA;AACD,YAAA,OAAO,KAAK,CAAA;AACd,QAAA,KAAA,YAAA;AACE,YAAA,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,iBAAiB;AAAE,oBAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;AAC9C,gBAAA,OAAO,IAAI,CAAA;AACZ,aAAA;AACD,YAAA,OAAO,KAAK,CAAA;AACd,QAAA,KAAA,WAAA;AACE,YAAA,IAAI,SAAS,EAAE;AACb,gBAAA,OAAO,IAAI,CAAA;AACZ,aAAA;AACD,YAAA,OAAO,KAAK,CAAA;AACf,KAAA;AACH,CAAC,CAAA;AAED,IAAI,iBAAiB,GAAG,KAAK,CAAA;AAE7B,SAAS,WAAW,CAAE,QAA8B,EAAE,MAAsB,EAAA;AAC1E,IAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC7B,IAAI,CAAC,iBAAiB,EAAE;QACtB,iBAAiB,GAAG,IAAI,CAAA;QACxB,OAAO;AACJ,aAAA,OAAO,EAAE;aACT,IAAI,CAAC,MAAK;YACT,iBAAiB,GAAG,KAAK,CAAA;AACzB,YAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;gBAC3B,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;AAClD,aAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;AACL,KAAA;AACH,CAAC;AAEK,SAAU,cAAc,CAAE,MAAsB,EAAA;AACpD,IAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC3B,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAA;AAC5B,QAAA,KAAK,IAAI,CAAC,GAAoB,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE;AAChE,YAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAClE,gBAAA,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBAC7B,MAAK;AACN,aAAA;YACD,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,MAAK;AAC5B,SAAA;AACH,KAAC,CAAC,CAAA;AACJ;;MCjIa,gBAAgB,CAAA;AAG3B,IAAA,WAAA,CAAa,QAA0B,EAAA;AACrC,QAAA,IAAI,wBAAwB,EAAE;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAA;AAC/C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AACzC,gBAAA,OAAO,CAAC,IAAI,CAAC,oGAAoG,CAAC,CAAA;AACnH,aAAA;YACD,IAAI,CAAC,IAAI,GAAG;AACV,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,WAAW,EAAG,IAAkB;aACjC,CAAA;AACF,SAAA;KACF;IAEM,OAAO,CAAE,GAAG,IAAuC,EAAA;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;KAC3B;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAA;KACvB;IAEM,WAAW,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;KAC/B;IAED,OAAO,MAAM,CAAE,MAAsB,EAAA;QACnC,cAAc,CAAC,MAAM,CAAC,CAAA;KACvB;AACF;;ACrBM,MAAM,WAAW,GAAG,MAAK;IAC9B,MAAM,SAAS,GAAa,EAAE,CAAA;;IAE9B,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAClB,KAAA;;IAED,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AAC9B,QAAA,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAClB,KAAA;AACD,IAAA,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;AACzC,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACnB,IAAA,OAAO,MAAK;AACV,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;QAChD,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAA;AAE1C,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;AAE7B,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;AAEf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,YAAY,EAAE;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AACjB,YAAA,OAAO,GAAG,OAAO,GAAG,CAAC,CAAA;YACrB,IAAI,OAAO,GAAG,CAAC,EAAE;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACZ,MAAK;AACN,aAAA;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;AAChB,SAAA;AAED,QAAA,OAAO,GAAG,CAAA;AACZ,KAAC,CAAA;AACH,EAAC;AAEK,SAAU,SAAS,CAAE,IAAc,EAAA;AACvC,IAAA,OAAO,IAAI,CAAC,QAAQ,KAAA,CAAA,6BAA0B;AAChD,CAAC;AAEK,SAAU,MAAM,CAAE,IAAc,EAAA;AACpC,IAAA,OAAO,IAAI,CAAC,QAAQ,KAAA,CAAA,0BAAuB;AAC7C,CAAC;AAEK,SAAU,SAAS,CAAE,IAAc,EAAA;AACvC,IAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAA;AAClC,CAAC;AAEK,SAAU,gBAAgB,CAAE,EAAe,EAAA;AAC/C,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,IAAG;AAC5C,QAAA,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;AACvE,KAAC,CAAC,CAAA;AACF,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;AACrB,CAAC;AAED;;;;AAIG;AACa,SAAA,cAAc,CAAE,IAAwB,EAAE,IAAY,EAAA;;AACpE,IAAA,QAAQ,IAAI,GAAG,CAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,aAAa,KAAI,IAAI,GAAG;AAC3C,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,EAAE;AAC1E,YAAA,OAAO,KAAK,CAAA;AACb,SAAA;aAAM,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AACxC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AACF,KAAA;AAED,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAEK,SAAU,YAAY,CAAE,GAAW,EAAA;AACvC,IAAA,QAAQ,GAAG;AACT,QAAA,KAAK,KAAK;YACR,OAAsB,IAAA,uBAAA;AACxB,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,GAAG,CAAA;AACZ,QAAA,KAAK,KAAK;YACR,OAAsB,IAAA,uBAAA;AACxB,QAAA;AACE,YAAA,OAAO,GAAG,CAAA;AACb,KAAA;AACH,CAAC;AAEY,MAAA,kBAAkB,GAAG,IAAI,GAAG,GAA+B;SAMxD,MAAM,CAAE,IAAU,EAAE,UAAkB,EAAE,OAAmC,EAAA;AACzF,IAAA,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;AACvB,QAAA,OAAO,GAAG;AACR,YAAA,KAAK,EAAE,OAAO;SACf,CAAA;AACF,KAAA;AACD,IAAA,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAA,MAAA,CAAA,MAAA,CAAA,EAC9C,YAAY,EAAE,IAAI,EAClB,UAAU,EAAE,IAAI,EACb,EAAA,OAAO,EACV,CAAA;AACJ,CAAC;AAED,IAAIA,iBAAe,CAAA;SACH,kBAAkB,GAAA;IAChC,IAAI,CAACA,iBAAe,EAAE;AACpB,QAAAA,iBAAe,GAAGC,oBAAmB,CAAC,kBAAkB,CAAC,CAAA;AAC1D,KAAA;AACD,IAAA,OAAOD,iBAAe,CAAA;AACxB,CAAC;AAEK,SAAU,gBAAgB,CAAE,KAAa,EAAA;IAC7C,OAAO,KAAK,GAAG,IAAI,CAAA;AACrB;;MCpIa,SAAS,CAAA;IAKpB,WAAa,CAAA,SAAiB,EAAE,EAAe,EAAA;QAFvC,IAAS,CAAA,SAAA,GAAa,EAAE,CAAA;AAG9B,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;KAC3E;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;KACvB;AAED,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;KAC7B;IAED,GAAG,GAAA;QACD,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,OAAO,GAAG,KAAK,CAAA;QAEnB,MAAM,MAAM,GAAG,SAAS,CAAA;AACxB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;AAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAEhC,GAAG;AACD,YAAA,MAAM,KAAK,GAAW,MAAM,CAAC,KAAK,CAAC,CAAA;AAEnC,YAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/D,gBAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAErB,OAAO,GAAG,IAAI,CAAA;AACf,aAAA;AACF,SAAA,QAAQ,EAAE,KAAK,GAAG,MAAM,EAAC;AAE1B,QAAA,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,OAAO,EAAE,CAAA;AACf,SAAA;KACF;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,IAAI,OAAO,GAAG,KAAK,CAAA;QAEnB,MAAM,MAAM,GAAG,SAAS,CAAA;AACxB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;AAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAEhC,GAAG;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;AAE5B,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAAE,SAAQ;YAE5C,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAEtC,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7B,gBAAA,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;gBAE1B,OAAO,GAAG,IAAI,CAAA;AACf,aAAA;AACF,SAAA,QAAQ,EAAE,CAAC,GAAG,MAAM,EAAC;AAEtB,QAAA,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,OAAO,EAAE,CAAA;AACf,SAAA;KACF;AAED,IAAA,QAAQ,CAAE,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAA;QAEhD,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACxC;IAED,MAAM,CAAE,KAAa,EAAE,KAAc,EAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACnC,QAAA,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,IAAI,QAAQ,GAAG,KAAK,KAAK,KAAK,IAAI,KAAK,CAAA;AAE7E,QAAA,IAAI,MAAM,EAAE;;AAEV,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAA;AACpB,SAAA;AAED,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE;AACrC,YAAA,OAAO,KAAK,CAAA;AACb,SAAA;AAAM,aAAA;YACL,OAAO,CAAC,MAAM,CAAA;AACf,SAAA;KACF;IAED,OAAO,CAAE,KAAa,EAAE,iBAAyB,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;YAAE,OAAM;QAExF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE3C,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAA;YACpD,IAAI,CAAC,OAAO,EAAE,CAAA;AACb,SAAA;KACF;IAED,QAAQ,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACrD;AAEO,IAAA,iBAAiB,CAAE,KAAa,EAAA;QACtC,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAA;AAElD,QAAA,OAAO,IAAI,CAAA;KACZ;IAEO,OAAO,GAAA;QACb,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAA;KAC/B;AACF;;AC7GD,MAAM,WAAY,SAAQ,GAAG,CAAA;AAC3B,IAAA,UAAU,CAAE,KAAe,EAAA;AACzB,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAChB,QAAA,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG;AAAE,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;KACzC;AAED,IAAA,cAAc,CAAE,KAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AACtB,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;AAC5B,QAAA,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;KACtD;AACF,CAAA;AAEY,MAAA,WAAW,GAAiB,IAAI,WAAW;;ACZxD,MAAME,OAAK,GAAG,aAAa,EAAE,CAAA;AAC7B,MAAM,GAAG,GAAQ;IACf,MAAM,EAAEA,OAAK,GAAG,MAAM,GAAG,SAAS;IAClC,QAAQ,EAAEA,OAAK,GAAG,QAAQ,GAAG,SAAS;;;ACMxC,IAAI,aAAa,CAAA;AACjB,IAAI,eAAe,CAAA;AAEnB;;;;;AAKG;AACG,SAAU,OAAO,CAAE,IAA4B,EAAA;;;AAEnD,IAAA,eAAe,KAAf,eAAe,GAAK,kBAAkB,EAAE,CAAA,CAAA;;IAGxC,aAAa,KAAb,aAAa,GAAK,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAE,CAAA,CAAA;AAEhD,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;AAE9B,IAAA,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;QAChB,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,CAAgB,GAAA,wBAAE,IAAI,CAAC,SAAS;YAChC,CAAoB,IAAA,4BAAE,CAAA,CAAA,EAAA,GAAA,eAAe,CAAC,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,KAAI,GAAG;SAC7D,CAAA;AACF,KAAA;AAED,IAAA,MAAM,IAAI,GAAoB;AAC5B,QAAA,CAAA,IAAA,4BAAsB,QAAQ;QAC9B,GAAG,EAAE,IAAI,CAAC,GAAG;KACd,CAAA;AAED,IAAA,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;AACpB,KAAA;AAED,IAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AACpE,QAAA,IAAI,CAAoB,IAAA,0BAAA,GAAG,CAAU,OAAA,EAAA,QAAQ,EAAE,CAAA;QAC/C,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YAChD,IAAI,CAAA,IAAA,0BAAoB,GAAG,SAAS,CAAA;AACrC,SAAA;AACF,KAAA;AAED,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;AACtB,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QACzC,IACE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AACzB,YAAA,IAAI,KAAK,KAAK;AACd,YAAA,IAAI,KAAK,KAAK;AACd,YAAA,IAAI,KAAK,EAAE;AACX,YAAA,eAAe,KAAK,SAAS;YAC7B,eAAe,KAAK,YAAY,EAChC;YACA,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;AACpC,SAAA;AACD,QAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,eAAe,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;YAC/E,IAAI,CAAA,IAAA,0BAAoB,GAAG,UAAU,CAAA;AACtC,SAAA;QACD,IAAI,eAAe,KAAK,YAAY,EAAE;AACpC,YAAA,IAAI,+BAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;AACvC,SAAA;AACF,KAAA;;IAGD,IAAI,CAAA,IAAA,4BAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAE1F,IAAA,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;AACzB,QAAA,IAAI,CAAiB,IAAA,uBAAA,GAAG,IAAI,CAAC,SAAS,CAAA;AACvC,KAAA;AAED,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;AAC5B,IAAA,IAAI,OAAO,KAAK,EAAE,IAAI,QAAQ,KAAK,aAAa,EAAE;QAChD,IAAI,CAAA,IAAA,uBAAiB,GAAG,OAAO,CAAA;AAChC,KAAA;IAED,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE3C,IAAA,MAAM,EAAE,GAAG,IAAI,CAAA,IAAA,0BAAoB,CAAA;AACnC,IAAA,MAAM,cAAc,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;AAC1C,IAAA,IAAI,cAAc,EAAE;AAClB,QAAA,IAAI,CAAoB,IAAA,0BAAA,GAAG,cAAc,CAAC,IAAI,CAAA;AAC9C,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;YACvB,IAAI,IAAI,IAAI,cAAc,EAAE;gBAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;AAClB,aAAA;AACF,SAAA;AACF,KAAA;AAED,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;IAE7E,OAAO,OAAO,IAAI,IAAI,CAAA;AACxB;;MC1Ga,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;QACS,IAAU,CAAA,UAAA,GAAmC,EAAE,CAAA;KAsFvD;AApFQ,IAAA,gBAAgB,CAAE,IAAY,EAAE,OAAqB,EAAE,OAA2C,EAAA;AACvG,QAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;AAEzB,QAAA,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAEtD,IAAI,IAAI,KAAK,cAAc,EAAE;;YAE3B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAChD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC9C,OAAM;AACP,SAAA;AAED,QAAA,IAAI,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAChC,IAAI,MAAM,GAAG,KAAK,CAAA;AAClB,QAAA,IAAI,QAAQ,CAA0B,OAAO,CAAC,EAAE;AAC9C,YAAA,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACpC,YAAA,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC/B,SAAA;AAED,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,OAAO,GAAG,YAAA;gBACd,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AAC9B,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACzC,aAAC,CAAA;AACD,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAC7B,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAmC,CACvC,EAAA,EAAA,IAAI,EAAE,KAAK,IACX,CAAA;YACF,OAAM;AACP,SAAA;AAED,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAA;;;;;QAMzF,MAAM,UAAU,GAAG,OAAO,CAAA;AAC1B,QAAA,OAAO,GAAG,YAAA;YACR,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AAC1C,SAAC,CACA;AAAC,QAAA,OAAe,CAAC,UAAU,GAAG,UAAU,CAAA;QAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AACtC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AACrB,YAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACvB,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAClC,SAAA;KACF;IAEM,mBAAmB,CAAE,IAAY,EAAE,OAAqB,EAAA;AAC7D,QAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAEzB,IAAI,IAAI,KAAK,cAAc,EAAE;;AAE3B,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AAC1C,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YACxC,OAAM;AACP,SAAA;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,OAAM;AACP,SAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACtB,OAAM;AACP,SAAA;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAG;YACtC,IAAI,IAAI,KAAK,OAAO,IAAK,IAAY,CAAC,UAAU,KAAK,OAAO;AAAE,gBAAA,OAAO,IAAI,CAAA;AAC3E,SAAC,CAAC,CAAA;AAEF,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,QAAQ,IAAI,CAAA,sBAAA,CAAwB,CAAC,CAAA;AAEjG,QAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;KAC1B;IAEM,gBAAgB,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAA;QAChC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;AAChF,QAAA,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAA;KACjC;AACF;;ACtED,MAAM,UAAU,mCAAuB;AACvC,MAAM,MAAM,GAAG,WAAW,EAAE,CAAA;AAEtB,MAAO,QAAS,SAAQ,eAAe,CAAA;AAQ3C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAA;QAJF,IAAU,CAAA,UAAA,GAAoB,IAAI,CAAA;QAClC,IAAU,CAAA,UAAA,GAAe,EAAE,CAAA;AAS1B,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,IAAc,KAAK,MAAM,OAAO,CAAC,IAAmB,CAAC,CAAA;QALtE,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,MAAM,EAAE,CAAA;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACnB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;KAChC;AAIO,IAAA,gBAAgB,CAAE,OAAiB,EAAA;AACzC,QAAA,MAAM,eAAe,GAAG,MAAM,EAAE,CAAA;QAChC,MAAM,kBAAkB,GAAG,MAAK;AAC9B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AACnE,YAAA,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAChC,SAAC,CAAA;QAED,IAAI,CAAC,aAAa,CAAC;AACjB,YAAA,IAAI,EAAE,CAAG,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,UAAU,CAAE,CAAA;YACnC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,kBAAkB;AACtD,SAAA,CAAC,CAAA;KACH;AAEO,IAAA,iBAAiB,CAAE,KAAa,EAAA;QACtC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,KAAI;YAC5C,IAAI,SAAS,CAAC,KAAK,CAAC;gBAAE,OAAM;AAE5B,YAAA,IAAI,KAAK,IAAI,UAAU,GAAG,KAAK;gBAAE,OAAM;YAEvC,IAAI,CAAC,aAAa,CAAC;gBACjB,IAAI,EAAE,KAAK,CAAC,KAAK;AACjB,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3B,aAAA,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;KACH;AAED,IAAA,IAAW,KAAK,GAAA;;QACd,OAAO,CAAA,MAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,IAAI,CAAA;KACtC;AAES,IAAA,SAAS,CAAE,QAAkB,EAAA;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAE/C,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,sDAAsD,CAAC,CAAA;AAE5E,QAAA,OAAO,KAAK,CAAA;KACb;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;AAElC,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;YACnE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;YAErD,OAAO,CAAA,EAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAA;AACpD,SAAA;AAED,QAAA,OAAO,EAAE,CAAA;KACV;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,OAAO,CAAA,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAI,IAAI,CAAA;KACtE;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,OAAO,CAAA,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAI,IAAI,CAAA;KACtE;AAED,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,IAAI,CAAA,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAE,QAAQ,MAAA,CAAA,8BAA4B;AAClD,YAAA,OAAO,UAAyB,CAAA;AACjC,SAAA;AACD,QAAA,OAAO,IAAI,CAAA;KACZ;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;KAClC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,OAAO,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAA;KACjD;AAED;;;AAGG;;IAEH,IAAW,WAAW,CAAE,IAAY,EAAA;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC5C,MAAM,UAAU,GAAe,EAAE,CAAA;;QAGjC,OAAO,IAAI,CAAC,UAAU,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;AACvD,SAAA;QAED,IAAI,IAAI,KAAK,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;AAC5B,SAAA;AAAM,aAAA;YACL,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;AACjD,YAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YACzB,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACxB,SAAA;;QAGD,gBAAgB,CAAC,MAAM,CAAC;AACtB,YAAA,IAAI,EAA+B,WAAA;AACnC,YAAA,MAAM,EAAE,IAAI;YACZ,YAAY;YACZ,UAAU;AACX,SAAA,CAAC,CAAA;KACH;AAED;;;;;;;AAOG;AACI,IAAA,YAAY,CAAsB,QAAW,EAAE,QAA0B,EAAE,SAAmB,EAAA;AACnG,QAAA,IAAI,QAAQ,CAAC,QAAQ,KAAK,iBAAiB,EAAE;YAC3C,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,YAAY,KAAI;AAC9D,gBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;AAC9C,gBAAA,OAAO,YAAY,CAAA;aACpB,EAAE,QAAQ,CAAC,CAAA;AACZ,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;;;;QAKD,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;QAEpC,IAAI,KAAK,GAAG,CAAC,CAAA;;AAEb,QAAA,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAA;AAC1B,QAAA,IAAI,QAAQ,EAAE;;AAEZ,YAAA,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YAChC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;AAC3C,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC/B,SAAA;AAED,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAA;;QAE/C,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,QAAQ,EAAE;;AAEb,gBAAA,MAAM,WAAW,GAAG,gBAAgB,KAAK,CAAC,CAAA;AAC1C,gBAAA,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACxB,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,aAAa,CAAC;wBACjB,IAAI,EAAE,QAAQ,CAAC,KAAK;AACpB,wBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC9B,qBAAA,CAAC,CAAA;AACH,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,SAAS,EAAE;;gBAEpB,IAAI,CAAC,aAAa,CAAC;oBACjB,IAAI,EAAE,QAAQ,CAAC,KAAK;AACpB,oBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC9B,iBAAA,CAAC,CAAA;AACH,aAAA;AAAM,iBAAA;;;;;;;;;;;;AAYL,gBAAA,MAAM,IAAI,GAAG,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAA;gBACrC,IAAI,IAAI,GAAG,KAAK,EAAE;;oBAEhB,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACxB,iBAAA;AAAM,qBAAA;;AAEL,oBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;AAC9B,iBAAA;AACF,aAAA;AACF,SAAA;QAED,gBAAgB,CAAC,MAAM,CAAC;AACtB,YAAA,IAAI,EAA+B,WAAA;AACnC,YAAA,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,CAAC,QAAQ,CAAC;AACtB,YAAA,YAAY,EAAE,SAAS;AACrB,kBAAE,CAAC,QAAoB,CAAC;AACxB,kBAAE,EAAE;AACN,YAAA,WAAW,EAAE,SAAS;AACpB,kBAAG,QAAqB,CAAC,WAAW;AACpC,mBAAG,QAAQ,IAAI,IAAI,CAAC;YACtB,eAAe,EAAE,QAAQ,CAAC,eAAe;AAC1C,SAAA,CAAC,CAAA;AAEF,QAAA,OAAO,QAAQ,CAAA;KAChB;AAED;;;;;;;AAOG;AACI,IAAA,WAAW,CAAE,QAAkB,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;KACnC;AAED;;;;;;;AAOG;IACI,YAAY,CAAE,QAAkB,EAAE,QAAkB,EAAA;AACzD,QAAA,IAAI,QAAQ,CAAC,UAAU,KAAK,IAAI;YAAE,OAAM;;QAGxC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;;;;QAK3C,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;AAEpC,QAAA,OAAO,QAAQ,CAAA;KAChB;AAED;;;;;;AAMG;AACI,IAAA,WAAW,CAAsB,KAAQ,EAAE,OAAA,GAA8B,EAAE,EAAA;AAChF,QAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;AAEtC,QAAA,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,KAAK,EAAE;;;YAG5C,gBAAgB,CAAC,MAAM,CAAC;AACtB,gBAAA,IAAI,EAA+B,WAAA;AACnC,gBAAA,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,CAAC,KAAK,CAAC;gBACrB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;AACvC,aAAA,CAAC,CAAA;AACH,SAAA;;QAGD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AAChC,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAA;;QAGvB,IAAI,QAAQ,KAAK,KAAK,EAAE;AACtB,YAAA,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;AAClC,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,KAAK,KAAK,EAAE;YACpC,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACxB,SAAA;AAED,QAAA,OAAO,KAAK,CAAA;KACb;AAEM,IAAA,MAAM,CAAE,OAA4B,EAAA;;QACzC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;KAC5C;IAEM,aAAa,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;KAClC;AAEM,IAAA,aAAa,CAAE,OAAsB,EAAA;;QAC1C,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC,OAAO,CAAC,CAAA;KACnC;AAED,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,GAAG,CAAC,QAAQ,CAAA;KACpB;AAED,IAAA,OAAO,MAAM,CAAE,UAAkB,EAAE,OAAmC,EAAA;AACpE,QAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;KACtC;AACF;;ACnVD;;;AAGG;AAEH,MAAM,MAAM,GAAG,QAAQ,CAAA;AAEvB,MAAM,eAAe,GAAG;IACtB,KAAK;IACL,YAAY;IACZ,eAAe;IACf,WAAW;IACX,QAAQ;IACR,OAAO;IACP,SAAS;IACT,SAAS;IACT,UAAU;IACV,QAAQ;IACR,WAAW;IACX,SAAS;IACT,QAAQ;IACR,OAAO;IACP,KAAK;IACL,QAAQ;IACR,OAAO;IACP,WAAW;IACX,MAAM;IACN,eAAe;IACf,eAAe;IACf,YAAY;IACZ,cAAc;IACd,SAAS;IACT,OAAO;IACP,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,SAAS;IACT,aAAa;IACb,KAAK;IACL,YAAY;IACZ,eAAe;IACf,YAAY;IACZ,aAAa;IACb,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,eAAe;IACf,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bd,CAAA;AAED;AACA,SAAS,OAAO,CAAE,MAAc,EAAE,IAAc,EAAE,WAAqB,EAAA;IACrE,CAAC,WAAW,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC5C,IAAA,IAAI,CAAC,OAAO,CAAC,IAAI,IAAG;AAClB,QAAA,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;QACnC,IAAI,MAAM,KAAK,MAAM,EAAE;AACrB,YAAA,eAAe,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;AACtC,SAAA;AACH,KAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,KAAK,GAAG,OAAO,CAAA;AACrB,MAAM,KAAK,GAAG,OAAO,CAAA;AACrB,MAAM,KAAK,GAAG,OAAO,CAAA;AACrB,MAAM,KAAK,GAAG,OAAO,CAAA;AACrB,MAAM,IAAI,GAAG,MAAM,CAAA;AACnB,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAC/C,MAAM,wBAAwB,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;AACjE,MAAM,+BAA+B,GAAG,CAAC,GAAG,wBAAwB,EAAE,QAAQ,CAAC,CAAA;AAC/E,MAAM,0CAA0C,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,wBAAwB,CAAC,CAAA;AACtG,MAAM,qBAAqB,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;AAC1D,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;AAChE,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAClC,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AACvD,MAAM,iCAAiC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;AACtF,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAExC,OAAO,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAA;AACzC,OAAO,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;AAC5C,OAAO,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAA;AAC9C,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAA;AACpD,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;AAC/F,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;AACvC,OAAO,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAA;AAC1C,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAA;AAC7C,OAAO,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAA;AAC/C,OAAO,CAAC,YAAY,EAAE,0CAA0C,CAAC,CAAA;AACjE,OAAO,CAAC,aAAa,EAAE,0CAA0C,CAAC,CAAA;AAClE,OAAO,CAAC,WAAW,EAAE,0CAA0C,CAAC,CAAA;AAChE,OAAO,CAAC,cAAc,EAAE,0CAA0C,CAAC,CAAA;AACnE,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;AACjD,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;AACnD,OAAO,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAA;AAC9C,OAAO,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAA;AAC/C,OAAO,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAA;AACzC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAA;AACrD,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAA;AACvC,OAAO,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;AACxC,OAAO,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;AACxC,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAA;AACzC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;AAChC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAC7B,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;AAChC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;AACjC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;AACjC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;AAClC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;AAClC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAA;AACnC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AAC9B,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;AAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;AACnG,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAA;AACnF,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;AAC7E,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAA;AACpM,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;AAC9C,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;AAC9G,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AACjD,OAAO,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAChD,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;AAChE,OAAO,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;AACrD,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAC1D,OAAO,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAC1E,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC9D,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;AACrC,OAAO,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAA;AAC7D,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAC7H,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;AACzE,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;AACtG,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;AAClC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AACjC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAEjC,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AACpD,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAA;AAClD,OAAO,CAAC,aAAa,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAA;AACnD,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAA;AACjD,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAA;AAC/D,OAAO,CAAC,eAAe,EAAE,+BAA+B,EAAE,IAAI,CAAC,CAAA;AAC/D,OAAO,CAAC,gBAAgB,EAAE,+BAA+B,EAAE,IAAI,CAAC,CAAA;AAChE,OAAO,CAAC,kBAAkB,EAAE,+BAA+B,EAAE,IAAI,CAAC,CAAA;AAClE,OAAO,CAAC,mBAAmB,EAAE,+BAA+B,EAAE,IAAI,CAAC,CAAA;AACnE,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;AACpH,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;AACnD,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;AACrE,OAAO,CAAC,SAAS,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAA;AAC5C,OAAO,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAA;AAC1C,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,iCAAiC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAA;AACrE,OAAO,CAAC,KAAK,EAAE,iCAAiC,EAAE,IAAI,CAAC,CAAA;AACvD,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AAC9E,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;AACrD,OAAO,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AAC9M,OAAO,CAAC,OAAO,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;AACzE,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AACnD,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAA;AAC5C,OAAO,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AAErE,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC;;ACvLtH,SAAS,SAAS,CAAE,GAAU,EAAA;IAC5B,gBAAgB,CAAC,MAAM,CAAC;AACtB,QAAA,IAAI,EAA+B,YAAA;QACnC,MAAM,EAAE,GAAG,CAAC,QAAQ;AACpB,QAAA,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,GAAG,CAAC,OAAO;AACtB,KAAA,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,aAAa,CAAE,GAAU,EAAA;AAChC,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAA;IAC5B,IAAI,OAAO,CAAC,KAAK,EAAE;QACjB,OAAO,CAAC,aAAa,CAAC;AACpB,YAAA,IAAI,EAAE,CAAG,EAAA,OAAO,CAAC,KAAK,CAAA,CAAA,EAAI,2BAAiB,CAAA;YAC3C,KAAK,EAAE,GAAG,CAAC,OAAO;AACnB,SAAA,CAAC,CAAA;AACH,KAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAe,MAAc,EAAE,QAAgB,EAAA;IAC9D,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAC3C,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,kBAAkB,EACtD,CAAY,SAAA,EAAA,QAAQ,CAAuC,qCAAA,CAAA,CAC5D,CAAA;AAED,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAE1B,IAAI,GAAG,KAAK,MAAM;QAAE,OAAM;IAE1B,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;AAEjC,IAAA,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,EAAE,EAAE;AAC1D,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACpC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC7B,KAAA;AAAM,SAAA;AACL,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA;AAC/B,KAAA;IAED,CAAC,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC;AAED,SAAS,SAAS,CAAE,IAAkB,EAAE,eAAyB,EAAA;IAC/D,MAAM,UAAU,GAAG,EAAE,CAAA;AAErB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QAEnC,IAAI,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAM;QAE1B,UAAU,CAAC,QAAQ,CAAC,GAAG;YACrB,GAAG,GAAA;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACjC,gBAAA,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAA;aAClD;AACD,YAAA,GAAG,CAAe,MAAc,EAAA;gBAC9B,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;aACtC;SACF,CAAA;AACF,KAAA;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;AACrD,CAAC;AAED,SAAS,aAAa,CAAE,YAAY,EAAA;AAClC,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AACjC,CAAC;MAEY,KAAK,CAAA;AAShB,IAAA,WAAA,CAAoB,OAAoB,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;KACjB;AAEO,IAAA,eAAe,CAAE,QAAgB,EAAA;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;AACrE,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,YAAY,EAAE,IAAI;YAClB,GAAG,EAAE,MAAK;gBACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;aACnC;AACD,YAAA,GAAG,EAAE,CAAC,MAAc,KAAI;gBACtB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;aACtC;AACF,SAAA,CAAC,CAAA;KACH;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE,CAAA;QAExC,MAAM,KAAK,GAAa,EAAE,CAAA;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAG;AAChC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACrB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC;gBAAE,OAAM;AAC3C,YAAA,IAAI,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;AACxD,YAAA,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1E,gBAAA,SAAS,GAAG,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAA;AAC5B,aAAA;YACD,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,SAAS,CAAK,EAAA,EAAA,GAAG,CAAG,CAAA,CAAA,CAAC,CAAA;AACrC,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACvB;IAED,IAAW,OAAO,CAAE,GAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,SAAS,CAAC,IAAI,CAAC,CAAA;AAEf,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAG;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;AAC3B,SAAC,CAAC,CAAA;AAEF,QAAA,IAAI,GAAG,KAAK,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;YACrB,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,OAAM;AACP,SAAA;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAE5B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAC5B,IAAI,IAAI,KAAK,EAAE,EAAE;gBACf,SAAQ;AACT,aAAA;;AAGD,YAAA,MAAM,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE7B,YAAA,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;gBACpB,SAAQ;AACT,aAAA;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;AAC9C,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACrB,aAAa,CAAC,IAAI,CAAC,CAAA;KACpB;IAEM,WAAW,CAAE,YAAoB,EAAE,KAAqB,EAAA;AAC7D,QAAA,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;;AAE3B,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;AACnC,SAAA;AAAM,aAAA;AACL,YAAA,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;AACzC,SAAA;QAED,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;AAClC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAA;AAC3B,SAAA;KACF;AAEM,IAAA,cAAc,CAAE,YAAoB,EAAA;AACzC,QAAA,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AAC1C,YAAA,OAAO,EAAE,CAAA;AACV,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA;AAC9B,QAAA,OAAO,KAAK,CAAA;KACb;AAEM,IAAA,gBAAgB,CAAE,YAAoB,EAAA;AAC3C,QAAA,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE,CAAA;AACV,SAAA;AAED,QAAA,OAAO,KAAK,CAAA;KACb;AACF,CAAA;AAED,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;AAEjC,KAAK,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,kBAA4B,KAAI;AACrE,IAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAC/B,QAAA,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;AACrC,KAAA;AAAM,SAAA;QACL,IAAI,OAAO,kBAAkB,KAAK,QAAQ;YAAE,OAAM;AAElD,QAAA,SAAS,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAA;AACvC,KAAA;AACH,CAAC,CAAC;;ACpMF,SAAS,UAAU,GAAA;AACjB,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;AAEe,SAAA,WAAW,CAAE,IAAiB,EAAE,OAAgB,EAAA;IAC9D,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,OAAO,GAAI,UAAU,CAAA;IAEpC,IAAI,MAAM,GAAuB,IAAI,CAAA;AAErC,IAAA,OAAO,MAAM,EAAE;QACb,IAAI,MAAM,CAAC,QAAQ,KAAA,CAAA,gCAA8B,MAAM,CAAC,MAAM,CAAC,EAAE;AAC/D,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACnB,SAAA;AAED,QAAA,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AACjC,KAAA;AAED,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,SAAS,CAAE,EAAe,EAAE,IAAiB,EAAA;AACpD,IAAA,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAA;IAChC,MAAM,iBAAiB,GAAG,EAAE,CAAC,QAAQ,KAA0B,CAAA,gCAAI,EAAE,CAAC,QAAQ,KAAA,CAAA,8BAA2B;;IAGzG,IAAI,UAAU,IAAI,iBAAiB,EAAE;AACnC,QAAA,OAAO,UAAyB,CAAA;AACjC,KAAA;IAED,IAAI,OAAO,GAAuB,EAAE,CAAA;IAEpC,GAAG;QACD,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;AAEvC,QAAA,IAAI,WAAW,EAAE;AACf,YAAA,OAAO,WAA0B,CAAA;AAClC,SAAA;AACD,QAAA,OAAO,GAAG,OAAO,CAAC,aAAa,CAAA;AAChC,KAAA,QAAQ,OAAO,EAAC;AAEjB,IAAA,OAAO,IAAI,CAAA;AACb;;ACzBM,MAAO,WAAY,SAAQ,QAAQ,CAAA;AAQvC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAA;QANF,IAAK,CAAA,KAAA,GAAwB,EAAE,CAAA;QAE/B,IAAO,CAAA,OAAA,GAA4B,SAAS,CAAA;QAKjD,IAAI,CAAC,QAAQ,GAAA,CAAA,6BAAwB;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;AAC5B,QAAA,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;KACjC;AAEO,IAAA,gBAAgB,CAAE,KAAgB,EAAA;;QAExC,IAAI,MAAM,GAAG,IAAI,CAAA;;AAEjB,QAAA,QAAQ,MAAM,GAAG,MAAM,CAAC,UAAkB,GAAG;YAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAE/C,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBACvB,SAAQ;AACT,aAAA;YAED,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;AACnC,gBAAA,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;AACtB,gBAAA,CAAC,CAAC,KAAK,GAAG,IAAI,CAAA;AACf,aAAA;AACF,SAAA;KACF;AAED,IAAA,IAAW,EAAE,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAE,CAAA;KAC9B;IAED,IAAW,EAAE,CAAE,GAAW,EAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;KAC3B;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;KACtC;IAED,IAAW,SAAS,CAAE,GAAW,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;KAC9B;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;KACtC;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;KAC3C;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;KACzC;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAA;QAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QACrE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;KAChE;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,IAAI,IAAI,GAAG,EAAE,CAAA;AACb,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;AAElC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAA,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;AAClC,SAAA;AAED,QAAA,OAAO,IAAI,CAAA;KACZ;IAED,IAAW,WAAW,CAAE,IAAY,EAAA;AAClC,QAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;KACzB;AAEM,IAAA,YAAY,CAAE,aAAqB,EAAA;QACxC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;KAC/C;IAEM,aAAa,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;KAClC;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,YAAA;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AAChC,SAAC,CAAA;KACF;;IAGD,IAAW,KAAK,CAAE,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KAChC;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KAChC;IAEM,YAAY,CAAE,aAAqB,EAAE,KAAU,EAAA;AACpD,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAC3C,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,kBAAkB,EACpD,CAAM,GAAA,EAAA,IAAI,CAAC,QAAQ,CAAM,GAAA,EAAA,aAAa,CAA2D,yDAAA,CAAA,CAClG,CAAA;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAEhG,IAAI,aAAa,KAAK,KAAK,EAAE;YAC3B,gBAAgB,CAAC,MAAM,CAAC;AACtB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,IAAI,EAA+B,YAAA;AACnC,gBAAA,aAAa,EAAE,aAAa;AAC5B,gBAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AAC3C,aAAA,CAAC,CAAA;AACH,SAAA;AAED,QAAA,QAAQ,aAAa;AACnB,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAe,CAAA;gBACpC,MAAK;AACP,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;;;AAGzB,oBAAA,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC7B,iBAAA;AACD,gBAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;gBACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;AAC5C,gBAAA,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAC5B,MAAK;AACP,YAAA;AACE,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,KAAe,CAAA;AAE3C,gBAAA,IAAI,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACrC,oBAAA,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;wBAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACnC,qBAAA;AACD,oBAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AACvE,iBAAA;gBACD,MAAK;AACR,SAAA;;QAGD,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAM;AAEvB,QAAA,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;QAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;QAC5C,MAAM,eAAe,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,CAAA;QACzD,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,IAAI,CAAA;AACvD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAExB,QAAA,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;AAE3C,QAAA,MAAM,wBAAwB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;AAC3D,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,wBAAwB,CAAE,CAAA;AAC5C,YAAA,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,KAAK,GAAG,KAAK;SAC/C,CAAA;AAED,QAAA,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,CAAC,CAAA;AAEjF,QAAA,IAAI,MAAM,EAAE;YACV,MAAM,kBAAkB,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,aAAa,CAAA;YAC5E,OAAO,CAAC,IAAI,GAAG,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,WAAW,CAAC,kBAAkB,CAAC,CAAA,CAAE,CAAA;AAC7D,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;AAE3B,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC1B,IAAI,wBAAwB,KAAK,SAAS,EAAE;;;gBAG1C,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,8BAAoB,CAAA;oBACtC,KAAK,EAAE,KAAK,GAAG,cAAc,IAC3B,IAAI,CAAC,gBAAgB,EAAE,GAAG,SAAS,GAAG,eAAe,CACtD;AACF,iBAAA,CAAC,CAAA;AACH,aAAA;AAAM,iBAAA,IAAI,UAAU,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE;;gBAE/C,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,8BAAoB,CAAA;AACtC,oBAAA,KAAK,EAAE,eAAe;AACvB,iBAAA,CAAC,CAAA;AACH,aAAA;AACF,SAAA;KACF;AAEM,IAAA,eAAe,CAAE,aAAqB,EAAA;AAC3C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAEjG,gBAAgB,CAAC,MAAM,CAAC;AACtB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,IAAI,EAA+B,YAAA;AACnC,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AAC3C,SAAA,CAAC,CAAA;QAEF,IAAI,aAAa,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAA;AACxB,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;AACxE,YAAA,IAAI,WAAW,EAAE;gBACf,OAAM;AACP,aAAA;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;gBAC7C,OAAM;AACP,aAAA;AACD,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;AACjC,SAAA;;QAGD,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAM;AAEvB,QAAA,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;QAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;QAC5C,MAAM,eAAe,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,CAAA;QACzD,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAA;AACrD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAExB,QAAA,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;AAE3C,QAAA,MAAM,wBAAwB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;AAC3D,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,wBAAwB,CAAE,CAAA;AAC5C,YAAA,KAAK,EAAE,EAAE;SACV,CAAA;AAED,QAAA,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,CAAC,CAAA;AAEhF,QAAA,IAAI,MAAM,EAAE;YACV,MAAM,kBAAkB,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,aAAa,CAAA;YAC5E,OAAO,CAAC,IAAI,GAAG,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,WAAW,CAAC,kBAAkB,CAAC,CAAA,CAAE,CAAA;AAC7D,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;AAE3B,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC1B,IAAI,wBAAwB,KAAK,SAAS,EAAE;;gBAE1C,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,8BAAoB,CAAA;oBACtC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,GAAG,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,eAAe,GAAG,aAAa,CAAC;AACxG,iBAAA,CAAC,CAAA;AACH,aAAA;AAAM,iBAAA,IAAI,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;;gBAElD,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,8BAAoB,CAAA;AACtC,oBAAA,KAAK,EAAE,aAAa;AACrB,iBAAA,CAAC,CAAA;AACH,aAAA;AACF,SAAA;KACF;AAEM,IAAA,YAAY,CAAE,aAAqB,EAAA;QACxC,MAAM,IAAI,GAAG,aAAa,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;AACrF,QAAA,OAAO,IAAI,KAAJ,IAAA,IAAA,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAA;KAClB;AAEM,IAAA,oBAAoB,CAAE,OAAe,EAAA;AAC1C,QAAA,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,KAAI;AAC9B,YAAA,OAAO,EAAE,CAAC,QAAQ,KAAK,OAAO,KAAK,OAAO,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAA;AACpE,SAAC,CAAC,CAAA;KACH;AAEM,IAAA,sBAAsB,CAAE,SAAiB,EAAA;QAC9C,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAEhD,QAAA,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,KAAI;AAC9B,YAAA,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAA;AAC9B,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACrD,SAAC,CAAC,CAAA;KACH;AAEM,IAAA,aAAa,CAAE,KAAgB,EAAA;AACpC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAE7C,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACvB,YAAA,OAAO,KAAK,CAAA;AACb,SAAA;QAED,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;AACnC,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;AAC7B,YAAA,IAAI,MAAe,CAAA;YACnB,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,gBAAA,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;AACvB,aAAA;AAAM,iBAAA;gBACL,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;gBAC9C,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACpC,aAAA;YACD,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;AAClD,gBAAA,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAA;AAC9B,aAAA;YAED,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE;AACzC,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;AACpE,gBAAA,IAAI,GAAG,EAAE;AAAE,oBAAA,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,MAAM,CAAA;AAAE,iBAAA;AAC3D,aAAA;AAED,YAAA,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;gBAC7B,MAAK;AACN,aAAA;AACF,SAAA;QAED,IAAI,KAAK,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;AAC7B,SAAA;QAED,OAAO,SAAS,IAAI,IAAI,CAAA;KACzB;AAEM,IAAA,gBAAgB,CAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAA;AAC7C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAE,CAAA;QAEpD,IAAI,UAAU,GAAG,IAAI,CAAA;QACrB,IAAI,QAAQ,CAAsB,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE;YAC1E,UAAU,GAAG,KAAK,CAAA;YAClB,OAAO,OAAO,CAAC,UAAU,CAAA;AAC1B,SAAA;QAED,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAA;AAE1E,QAAA,IAAI,UAAU,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AACxF,YAAA,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;YAC5C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;YACxC,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,IAAI,EAAE,CAAG,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,8BAAoB,CAAA;AAC3C,gBAAA,KAAK,EAAE,KAAK;AACb,aAAA,CAAC,CAAA;AACH,SAAA;QAED,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;KAC/C;AAEM,IAAA,mBAAmB,CAAE,IAAI,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,EAAA;AAC1D,QAAA,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAExC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAE,CAAA;QAEpD,KAAK,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAA;AAE7E,QAAA,IAAI,UAAU,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AACxF,YAAA,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;AAC5C,YAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAU,OAAA,EAAA,IAAI,EAAE,GAAG,CAAQ,KAAA,EAAA,IAAI,EAAE,CAAA;YACxE,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAA;YAC9C,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,IAAI,EAAE,CAAG,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,8BAAoB,CAAA;AAC3C,gBAAA,KAAK,EAAE,UAAU;AAClB,aAAA,CAAC,CAAA;AACH,SAAA;KACF;AAED,IAAA,OAAO,MAAM,CAAE,UAAkB,EAAE,OAAmC,EAAA;AACpE,QAAA,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;KACzC;AACF;;AC3YY,MAAA,OAAO,GAAY;AAC9B,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,KAAK,EAAE,KAAK;;;ACcd,SAAS,YAAY,GAAA;IACnB,OAAO;AACL,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,IAAI,EAAE,CAAC;KACR,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAE,QAAkB,EAAE,GAAW,EAAE,GAAW,EAAA;AACjE,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;IAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,CAAA;IACxC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,QAAQ,CAAC,IAAI,EAAE,CAAA;AACf,YAAA,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;AACpB,SAAA;AAAM,aAAA;YACL,QAAQ,CAAC,MAAM,EAAE,CAAA;AAClB,SAAA;AACF,KAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAE,QAAkB,EAAE,GAAW,EAAE,GAAW,EAAA;AACjE,IAAA,MAAM,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAA;IAChC,OAAO,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AACzC,CAAC;AAED,SAAS,YAAY,CAAE,QAAkB,EAAA;IACvC,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,CAAA;AACvB,SAAS,gBAAgB,CAAE,IAAY,EAAA;AACrC,IAAA,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,SAAS,GAAG,GAAG,CAAA;AACrB,SAAS,eAAe,CAAE,IAAY,EAAA;AACpC,IAAA,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,cAAc,CAAE,OAAe,EAAA;AACtC,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IAClC,IAAI,OAAO,CAAC,IAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACxC,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;AACD,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,YAAY,GAAG,aAAa,CAAA;AAElC,SAAS,WAAW,CAAE,GAAW,EAAE,KAAa,EAAA;AAC9C,IAAA,OAAO,IAAI,EAAE;QACX,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACvC,QAAA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE;AAClB,YAAA,OAAO,OAAO,CAAA;AACf,SAAA;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;AACpC,QAAA,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3D,YAAA,OAAO,OAAO,CAAA;AACf,SAAA;AACD,QAAA,KAAK,GAAG,OAAO,GAAG,CAAC,CAAA;AACpB,KAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAE,MAAc,EAAE,SAAiB,EAAE,IAAY,EAAA;IACjE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAAE,QAAA,OAAO,KAAK,CAAA;AAExD,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;AAGvB,IAAA,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,eAAe,CAAC,IAAI,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAA;YACvC,MAAK;AACN,SAAA;AACF,KAAA;;AAGD,IAAA,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,eAAe,CAAC,IAAI,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAA;AACvC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AACF,KAAA;AACH,CAAC;MAEY,MAAM,CAAA;AAOjB,IAAA,WAAA,CAAa,IAAY,EAAA;QANjB,IAAM,CAAA,MAAA,GAAY,EAAE,CAAA;QAEpB,IAAQ,CAAA,QAAA,GAAa,YAAY,EAAE,CAAA;AAKzC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;KACjB;IAEM,IAAI,GAAA;AACT,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;AAEvB,QAAA,OAAO,QAAQ,CAAC,KAAK,GAAG,GAAG,EAAE;AAC3B,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;YAC5B,IAAI,CAAC,QAAQ,EAAE,CAAA;AACf,YAAA,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,EAAE;AAC5B,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;AACnD,gBAAA,IAAI,SAAS,EAAE;oBACb,IAAI,CAAC,WAAW,EAAE,CAAA;AACnB,iBAAA;AAAM,qBAAA;AACL,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;AAC9B,oBAAA,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;AAC3B,wBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AAC1B,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;QAED,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;IAEO,QAAQ,GAAA;QACd,MAAM,IAAI,GAAG,MAAM,CAAA;AACnB,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAC/B,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC/C,QAAA,IAAI,OAAO,KAAK,QAAQ,CAAC,KAAK,EAAE;YAC9B,OAAM;AACP,SAAA;AACD,QAAA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE;AAClB,YAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAA;AACtB,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AACnD,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AACrC,QAAA,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;KAC9D;IAEO,WAAW,GAAA;QACjB,MAAM,IAAI,GAAG,SAAS,CAAA;AACtB,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAC/B,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;QACpC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAC/B,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;AACpD,QAAA,IAAI,UAAU,GAAG,UAAU,GAAG,CAAC,CAAA;AAC/B,QAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;AACrB,YAAA,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAA;AACtC,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;AACtD,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,IAAI;YACJ,OAAO;AACP,YAAA,QAAQ,EAAE;gBACR,KAAK;AACL,gBAAA,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC;AAC5B,aAAA;AACF,SAAA,CAAC,CAAA;KACH;IAEO,OAAO,GAAA;QACb,IAAI,CAAC,YAAY,EAAE,CAAA;AACnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAClC,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,IAAI,CAAC,UAAU,EAAE,CAAA;AAEjB,QAAA,OAAO,OAAO,CAAA;KACf;IAEO,YAAY,GAAA;QAClB,MAAM,IAAI,GAAG,WAAW,CAAA;AACxB,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAE/B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;AAClD,QAAA,MAAM,KAAK,GAAG,UAAU,KAAK,GAAG,CAAA;AAChC,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AACpC,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;KACvD;IAEO,UAAU,GAAA;QAChB,MAAM,IAAI,GAAG,SAAS,CAAA;AACtB,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC7C,QAAA,MAAM,KAAK,GAAG,SAAS,KAAK,GAAG,CAAA;AAC/B,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3C,QAAA,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;KACrD;IAEO,WAAW,GAAA;QACjB,MAAM,IAAI,GAAG,KAAK,CAAA;AAClB,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;AACvB,QAAA,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;QAC1B,OAAO,KAAK,GAAG,GAAG,EAAE;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC/B,YAAA,MAAM,SAAS,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAA;AAC3E,YAAA,IAAI,SAAS;gBAAE,MAAK;AACpB,YAAA,KAAK,EAAE,CAAA;AACR,SAAA;AAED,QAAA,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAA;QACnB,OAAO,GAAG,GAAG,GAAG,EAAE;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC7B,YAAA,MAAM,SAAS,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAA;AAC3E,YAAA,IAAI,CAAC,SAAS;gBAAE,MAAK;AACrB,YAAA,GAAG,EAAE,CAAA;AACN,SAAA;AAED,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACtC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,IAAI;AACJ,YAAA,OAAO,EAAE,OAAO;AACjB,SAAA,CAAC,CAAA;AAEF,QAAA,OAAO,OAAO,CAAA;KACf;IAEO,SAAS,GAAA;QACf,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;AACvC,QAAA,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAA;AAC3B,QAAA,IAAI,KAAK,GAAkB,IAAI,CAAA;AAC/B,QAAA,IAAI,SAAS,GAAG,MAAM,CAAA;AACtB,QAAA,MAAM,KAAK,GAAa,EAAE,CAAA;AAC1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;QACvB,OAAO,MAAM,GAAG,GAAG,EAAE;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAChC,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,MAAM,UAAU,GAAG,IAAI,KAAK,KAAK,CAAA;AACjC,gBAAA,IAAI,UAAU,EAAE;oBACd,KAAK,GAAG,IAAI,CAAA;AACb,iBAAA;AACD,gBAAA,MAAM,EAAE,CAAA;gBACR,SAAQ;AACT,aAAA;YAED,MAAM,QAAQ,GAAG,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAA;AAC7C,YAAA,IAAI,QAAQ,EAAE;gBACZ,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;AAC1C,iBAAA;gBACD,MAAK;AACN,aAAA;YAED,IAAI,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE;gBACtC,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;AAC1C,iBAAA;AACD,gBAAA,SAAS,GAAG,MAAM,GAAG,CAAC,CAAA;AACtB,gBAAA,MAAM,EAAE,CAAA;gBACR,SAAQ;AACT,aAAA;YAED,MAAM,YAAY,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAA;AAClD,YAAA,IAAI,YAAY,EAAE;gBAChB,KAAK,GAAG,IAAI,CAAA;AACZ,gBAAA,MAAM,EAAE,CAAA;gBACR,SAAQ;AACT,aAAA;AAED,YAAA,MAAM,EAAE,CAAA;AACT,SAAA;AAED,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAEpC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAA;QACzB,MAAM,IAAI,GAAG,WAAW,CAAA;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AAC7B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACpC,YAAA,IAAI,SAAS,EAAE;gBACb,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC/B,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC5C,oBAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,wBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,UAAU,CAAA;wBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;wBACvC,CAAC,IAAI,CAAC,CAAA;wBACN,SAAQ;AACT,qBAAA;oBACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC9B,CAAC,IAAI,CAAC,CAAA;AACN,oBAAA,IAAI,SAAS,EAAE;AACb,wBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,GAAG,GAAG,SAAS,CAAA;wBACtC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;wBACvC,CAAC,IAAI,CAAC,CAAA;wBACN,SAAQ;AACT,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACtB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC/B,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC3C,oBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,UAAU,CAAA;oBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;oBACvC,CAAC,IAAI,CAAC,CAAA;oBACN,SAAQ;AACT,iBAAA;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;gBACvC,SAAQ;AACT,aAAA;YAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACrC,SAAA;KACF;AAEO,IAAA,WAAW,CAAE,OAAe,EAAA;AAClC,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAC/B,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;AACzC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;AACvB,QAAA,OAAO,QAAQ,CAAC,KAAK,GAAG,GAAG,EAAE;AAC3B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;AAClD,YAAA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE;gBAClB,IAAI,CAAC,QAAQ,EAAE,CAAA;gBACf,MAAK;AACN,aAAA;AAED,YAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AACrC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;AAC3B,YAAA,IAAI,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtC,MAAK;AACN,aAAA;AACF,SAAA;KACF;AACF;;AClWK,SAAU,OAAO,CAAE,GAAW,EAAA;IAClC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AACzB,IAAA,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;IAC1B,MAAM,YAAY,GAAG,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,CAAA;IAC/C,IAAI,YAAY,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QAC3C,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACzB,KAAA;AACD,IAAA,OAAO,GAAG,CAAA;AACZ;;ACFA,MAAM,YAAY,GAAG,GAAG,CAAA;AACxB,MAAM,aAAa,GAAG,GAAG,CAAA;AACzB,MAAM,cAAc,GAAG,GAAG,CAAA;AAC1B,MAAM,WAAW,GAAG,GAAG,CAAA;AACvB,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAC5B,MAAM,0BAA0B,GAAG,GAAG,CAAA;AACtC,MAAM,2BAA2B,GAAG,GAAG,CAAA;AAqBzB,MAAO,cAAc,CAAA;AAAnC,IAAA,WAAA,GAAA;QACE,IAAM,CAAA,MAAA,GAAa,EAAE,CAAA;KAoMtB;AAlMC,IAAA,YAAY,CAAE,GAAW,EAAA;QACvB,MAAM,SAAS,GAAG,wCAAwC,CAAA;QAC1D,IAAI,IAAI,GAAG,GAAG,CAAA;;AAGd,QAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAU,KAAI;AAC/C,YAAA,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;AAC5B,YAAA,OAAO,EAAE,CAAA;AACX,SAAC,CAAC,CAAA;AAEF,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;KACnB;AAED,IAAA,gBAAgB,CAAE,KAAa,EAAA;QAC7B,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AAEpC,QAAA,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE;YACd,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;AACvC,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AAE3C,YAAA,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,EAAA;AAClD,gBAAA,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;gBACzC,OAAO,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAA;AACjB,aAAC,CAAC,CAAA;YACF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YACnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YAEzC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;gBACzB,OAAO,IAAI,GAAG,CAAA;AACf,aAAA;YACD,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;gBACjC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;AAC5C,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,OAAO;oBACP,YAAY;AACb,iBAAA,CAAC,CAAA;AACJ,aAAC,CAAC,CAAA;YACF,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;AAC3B,YAAA,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AACjC,SAAA;;KAEF;AAED,IAAA,aAAa,CAAE,GAAW,EAAA;QACxB,MAAM,IAAI,GAAG,GAAG;AACb,aAAA,IAAI,EAAE;AACN,aAAA,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC;AAC9B,aAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,aAAA,OAAO,CAAC,4CAA4C,EAAE,SAAS,CAAC;aAChE,KAAK,CAAC,GAAG,CAAC,CAAA;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAG;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAChC,YAAA,MAAM,QAAQ,GAAc;gBAC1B,OAAO,EAAE,SAAS,KAAK,gBAAgB;gBACvC,gBAAgB,EAAE,SAAS,KAAK,0BAA0B;gBAC1D,iBAAiB,EAAE,SAAS,KAAK,2BAA2B;AAC5D,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,KAAK,EAAE,EAAE;aACV,CAAA;YAED,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;YAGjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,EAAU,EAAA;AACvD,gBAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAClC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AAElC,gBAAA,MAAM,IAAI,GAAG;oBACX,GAAG;oBACH,GAAG;oBACH,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK;iBAC1B,CAAA;AACD,gBAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,gBAAA,OAAO,EAAE,CAAA;AACX,aAAC,CAAC,CAAA;YAEF,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,UAAU,CAAC,EAAE,EAAU,EAAA;AAClE,gBAAA,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;;oBAEzB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC3B,iBAAA;AAAM,qBAAA,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE;;AAEnC,oBAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAClC,iBAAA;AACD,gBAAA,OAAO,EAAE,CAAA;AACX,aAAC,CAAC,CAAA;;YAGF,IAAI,IAAI,KAAK,EAAE,EAAE;AACf,gBAAA,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAA;AACpB,aAAA;AAED,YAAA,OAAO,QAAQ,CAAA;AACjB,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,SAAS,CAAA;KACjB;AAED,IAAA,UAAU,CAAE,OAAe,EAAE,EAAqB,EAAE,IAAc,EAAA;QAChE,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC,KAAI;AAC/E,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,YAAA,IAAI,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;YAChC,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;AAE1C,YAAA,IAAI,CAAA,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,gBAAgB,MAAI,YAAY,aAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,iBAAiB,CAAA,EAAE;gBACrE,QAAQ,GAAG,YAAY,CAAA;gBACvB,GAAG,IAAI,CAAC,CAAA;AACR,gBAAA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACb,aAAA;AAED,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAEtD,YAAA,IAAI,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE;AACxC,gBAAA,IAAI,IAAI,GAAsB,kBAAkB,CAAC,EAAE,CAAC,CAAA;AACpD,gBAAA,OAAO,IAAI,EAAE;oBACX,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE;wBACpF,OAAO,GAAG,IAAI,CAAA;wBACd,MAAK;AACN,qBAAA;AACD,oBAAA,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;oBAC/B,OAAO,GAAG,KAAK,CAAA;AAChB,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,OAAO,IAAI,QAAQ,CAAC,iBAAiB,EAAE;AACzC,gBAAA,MAAM,IAAI,GAAsB,kBAAkB,CAAC,EAAE,CAAC,CAAA;AACtD,gBAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBAC5B,OAAO,GAAG,KAAK,CAAA;AAChB,iBAAA;AAAM,qBAAA;AACL,oBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;oBACrF,IAAI,CAAC,cAAc,EAAE;wBACnB,OAAO,GAAG,KAAK,CAAA;AAChB,qBAAA;AACF,iBAAA;AACF,aAAA;AAED,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,GAAG,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnC,OAAO,GAAG,GAAG,OAAO,CAAA;AACrB,iBAAA;AAAM,qBAAA,IAAI,GAAG,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,oBAAA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACb,iBAAA;AACF,aAAA;AAAM,iBAAA;;AAEL,gBAAA,IAAI,QAAQ,CAAC,OAAO,IAAI,GAAG,GAAG,CAAC,EAAE;AAC/B,oBAAA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACZ,oBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzD,wBAAA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACb,qBAAA;AACF,iBAAA;AACF,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;AACN,QAAA,OAAO,GAAG,CAAA;KACX;AAED,IAAA,YAAY,CAAE,OAAe,EAAE,EAAqB,EAAE,QAAmB,EAAA;;QAEvE,IAAI,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,KAAK,OAAO;AAAE,YAAA,OAAO,KAAK,CAAA;;QAG1D,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;AAAE,YAAA,OAAO,KAAK,CAAA;;AAGtD,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;YACzB,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACzC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC7B,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACjC,oBAAA,OAAO,KAAK,CAAA;AACb,iBAAA;AACF,aAAA;AACF,SAAA;;AAGD,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;AACzB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,gBAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC7C,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;AAChC,oBAAA,OAAO,KAAK,CAAA;AACb,iBAAA;AAAM,qBAAA;oBACL,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;oBACjC,IAAI,IAAI,KAAK,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;AACjC,wBAAA,OAAO,KAAK,CAAA;AACb,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,OAAO,IAAI,CAAA;KACZ;AACF,CAAA;AAED,SAAS,kBAAkB,CAAE,EAAY,EAAA;AACvC,IAAA,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAA;AAC/B,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI,CAAA;AAExB,IAAA,MAAM,IAAI,GAAG,EAAE,CAAC,eAAe,CAAA;AAC/B,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI,CAAA;AAEtB,IAAA,IAAI,IAAI,CAAC,QAAQ,KAAA,CAAA,8BAA4B;AAC3C,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAA;AAChC,KAAA;AACH,CAAC;AAED;AACA;AACA;AACA,SAAS,UAAU,CAAE,MAAgB,EAAA;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAI;QAC5B,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;QAEpD,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,GAAG,SAAS,CAAA;QAEzD,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;QAE5C,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,KAAK,GAAG,KAAK,CAAA;QAEzC,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;QAE5C,OAAO,KAAK,GAAG,KAAK,CAAA;AACtB,KAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAE,SAAsB,EAAA;AAChD,IAAA,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,aAAa,CAAE,SAAsB,EAAA;IAC5C,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AACrF,CAAC;AAED,SAAS,aAAa,CAAE,SAAsB,EAAA;AAC5C,IAAA,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACnE;;ACpRgB,SAAA,OAAO,CACrB,GAAW,EACX,gBAA0B,EAAA;IAE1B,MAAM,GAAG,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxD,MAAM,IAAI,GAAkB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC1C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;AACpB,KAAA;AACD,IAAA,OAAO,gBAAgB,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC/E,CAAC;AAEM,MAAM,mBAAmB,GAAG;AACjC,IAAA,GAAG,EAAE,OAAO;AACZ,IAAA,MAAM,EAAE,UAAU;CACnB,CAAA;AAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;KACtD,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;KACzB,IAAI,CAAC,GAAG,CAAC,CAAA;AAEZ;AACO,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;AAE9D;AACO,MAAM,gBAAgB,GAAG,OAAO,CAAC,mNAAmN,EAAE,IAAI,CAAC,CAAA;AAElQ;AACO,MAAM,eAAe,GAAG,OAAO,CAAC,8KAA8K,EAAE,IAAI,CAAC;;ACb5N,MAAM,0BAA0B,GAAG;AACjC,IAAA,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;IACxB,EAAE,EAAE,CAAC,IAAI,CAAC;IACV,EAAE,EAAE,CAAC,IAAI,CAAC;IACV,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,EAAE,EAAE,CAAC,OAAO,CAAC;IACb,EAAE,EAAE,CAAC,OAAO,CAAC;CACd,CAAA;AA6BD,SAAS,iBAAiB,CAAE,OAAe,EAAE,KAAgB,EAAA;AAC3D,IAAA,MAAM,UAAU,GAAyB,0BAA0B,CAAC,OAAO,CAAC,CAAA;AAC5E,IAAA,IAAI,UAAU,EAAE;AACd,QAAA,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;QACnC,OAAO,YAAY,IAAI,CAAC,EAAE;YACxB,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAA;YACjD,IAAI,aAAa,KAAK,OAAO,EAAE;gBAC7B,MAAK;AACN,aAAA;YACD,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAc,CAAC,EAAE;AACrD,gBAAA,OAAO,IAAI,CAAA;AACZ,aAAA;AACD,YAAA,YAAY,EAAE,CAAA;AACf,SAAA;AACF,KAAA;AACD,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,UAAU,CAAE,GAAW,EAAA;AAC9B,IAAA,IAAI,OAAO,CAAC,IAAK,CAAC,aAAa,EAAE;AAC/B,QAAA,OAAO,GAAG,CAAA;AACX,KAAA;AAED,IAAA,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAA,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAA;AAChC,KAAA;AAAM,SAAA,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;AAC9B,QAAA,OAAO,GAAG,CAAA;AACX,KAAA;AAAM,SAAA,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;AAC/B,QAAA,OAAO,MAAM,CAAA;AACd,KAAA;AAAM,SAAA,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;AAChC,QAAA,OAAO,MAAM,CAAA;AACd,KAAA;AAED,IAAA,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,UAAU,CAAE,GAAW,EAAA;IAC9B,MAAM,GAAG,GAAG,GAAG,CAAA;IACf,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,CAAA;AAC5B,IAAA,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AACpC,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;AAChD,IAAA,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACrB,CAAC;AAED,SAAS,MAAM,CACb,QAAqB,EACrB,QAAsB,EACtB,YAGC,EACD,MAAoB,EAAA;AAEpB,IAAA,OAAO,QAAQ;SACZ,MAAM,CAAC,KAAK,IAAG;;AAEd,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5B,YAAA,OAAO,KAAK,CAAA;AACb,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AAChC,YAAA,OAAO,KAAK,CAAC,OAAO,KAAK,EAAE,CAAA;AAC5B,SAAA;AACD,QAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAC;AACD,SAAA,GAAG,CAAC,CAAC,KAAqB,KAAI;;AAE7B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;YACzB,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACjD,IAAI,UAAU,CAAC,OAAO,CAAC,IAAK,CAAC,aAAa,CAAC,EAAE;gBAC3C,IAAI,GAAG,OAAO,CAAC,IAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAChD,aAAA;YACD,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,WAAW,CAAC,IAAI,CAAC,CAAA;AACzB,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AAED,QAAA,MAAM,EAAE,GAAsB,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;AAC/E,QAAA,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAA;QAE5B,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,WAAW,CAAC,EAAE,CAAC,CAAA;AAEvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAK,CAAC,aAAa,EAAE;YAChC,EAAE,CAAC,SAAS,GAAG,CAAA,GAAA,EAAM,KAAK,CAAC,OAAO,EAAE,CAAA;AACrC,SAAA;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YACrC,IAAI,GAAG,KAAK,OAAO,EAAE;gBACnB,EAAE,CAAC,SAAS,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;AACrC,aAAA;AAAM,iBAAA,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC3C,SAAQ;AACT,aAAA;AAAM,iBAAA;gBACL,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,aAAA;AACF,SAAA;AAED,QAAA,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,YAAY,CAAA;AACvD,QAAA,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,CAAA;AACnC,QAAA,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;AAEhE,QAAA,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;;AAGlD,QAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE;YAC/B,cAAc;AACd,YAAA,cAAc,EAAE,IAAI;SACrB,EAAE,EAAE,CAAC,CAAA;QAEN,IAAI,UAAU,CAAC,OAAO,CAAC,IAAK,CAAC,gBAAgB,CAAC,EAAE;YAC9C,OAAO,OAAO,CAAC,IAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AACjD,SAAA;AAED,QAAA,OAAO,EAAE,CAAA;AACX,KAAC,CAAC,CAAA;AACN,CAAC;AAEe,SAAA,MAAM,CAAE,IAAY,EAAE,QAAsB,EAAA;AAC1D,IAAA,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;AAC3C,IAAA,IAAI,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAExC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;AAEtC,IAAA,MAAM,IAAI,GAAY,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;AAEpF,IAAA,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAA;IAC3D,KAAK,CAAC,KAAK,CAAC,CAAA;AAEZ,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACrC,cAAc;AACd,QAAA,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,KAAA,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,KAAK,CAAE,KAAY,EAAA;AAC1B,IAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;AAC/B,IAAA,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;AAEtB,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAA;AAEzB,IAAA,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAA;IAE5C,OAAO,MAAM,GAAG,GAAG,EAAE;AACnB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC5B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;;AAE9B,YAAA,KAAK,CAAC,IAAI,CAAC,KAAkB,CAAC,CAAA;AAC9B,YAAA,MAAM,EAAE,CAAA;YACR,SAAQ;AACT,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;AACjC,QAAA,MAAM,EAAE,CAAA;QACR,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAQ,CAAC,WAAW,EAAE,CAAA;QAC/C,IAAI,KAAK,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;YACxB,IAAI,YAAY,GAAG,KAAK,CAAA;AACxB,YAAA,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;gBACnB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE;oBACpC,YAAY,GAAG,IAAI,CAAA;oBACnB,MAAK;AACN,iBAAA;AACF,aAAA;YACD,OAAO,MAAM,GAAG,GAAG,EAAE;AACnB,gBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC/B,gBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;oBAAE,MAAK;AACtC,gBAAA,MAAM,EAAE,CAAA;AACT,aAAA;AACD,YAAA,IAAI,YAAY,EAAE;AAChB,gBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACnB,MAAK;AACN,aAAA;AAAM,iBAAA;gBACL,SAAQ;AACT,aAAA;AACF,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAK,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC/D,IAAI,uBAAuB,GAAG,YAAY,CAAA;AAC1C,QAAA,IAAI,uBAAuB,EAAE;YAC3B,uBAAuB,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AAC7D,SAAA;AAED,QAAA,IAAI,uBAAuB,EAAE;AAC3B,YAAA,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;YACnC,OAAO,YAAY,GAAG,CAAC,EAAE;gBACvB,IAAI,OAAO,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;AAC3C,oBAAA,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AAC1B,oBAAA,MAAM,aAAa,GAAG,YAAY,GAAG,CAAC,CAAA;AACtC,oBAAA,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAA;oBACrC,MAAK;AACN,iBAAA;AACD,gBAAA,YAAY,GAAG,YAAY,GAAG,CAAC,CAAA;AAChC,aAAA;AACF,SAAA;QAED,MAAM,UAAU,GAAa,EAAE,CAAA;AAC/B,QAAA,IAAI,SAAgB,CAAA;QACpB,OAAO,MAAM,GAAG,GAAG,EAAE;AACnB,YAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC1B,YAAA,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;gBAAE,MAAK;AACvC,YAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAQ,CAAC,CAAA;AACnC,YAAA,MAAM,EAAE,CAAA;AACT,SAAA;AAED,QAAA,MAAM,EAAE,CAAA;QACR,MAAM,QAAQ,GAAc,EAAE,CAAA;AAC9B,QAAA,MAAM,OAAO,GAAY;AACvB,YAAA,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,QAAQ,CAAC,OAAQ;YAC1B,UAAU;YACV,QAAQ;SACT,CAAA;AACD,QAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAEnB,QAAA,MAAM,WAAW,GAAG,EAAE,SAAU,CAAC,KAAK,IAAI,OAAO,CAAC,IAAK,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAClF,QAAA,IAAI,WAAW,EAAE;YACf,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAS,CAAC,CAAA;YACxC,MAAM,UAAU,GAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;YACnD,KAAK,CAAC,UAAU,CAAC,CAAA;AACjB,YAAA,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;AAC3B,SAAA;AACF,KAAA;AAED,IAAA,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;AACvB;;ACjRA,OAAO,CAAC,IAAI,GAAG;IACb,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1C,YAAY,EAAE,IAAI,GAAG,CAAC;QACpB,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS;QAClD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;AAC/C,QAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK;KAC1C,CAAC;IACF,eAAe,EAAE,IAAI,GAAG,CAAC;AACvB,QAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ;QACvD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU;KACxD,CAAC;AACF,IAAA,aAAa,EAAE,KAAK;CACrB,CAAA;AAEe,SAAA,YAAY,CAAE,OAAiB,EAAE,IAAY,EAAA;IAC3D,OAAO,OAAO,CAAC,UAAU,EAAE;AACzB,QAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AACxC,KAAA;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;AAEpD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACjC,KAAA;AACH;;SCvBgB,yBAAyB,GAAA;IACvC,IAAI,CAAC,OAAO,CAAC,UAAU;AAAE,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACrD,IAAA,OAAO,IAAI,OAAO,CAAC,OAAO,IAAG;QAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAA;AACtD,QAAA,KAAK,CAAC,MAAM,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,CAAE,CAAA,CAAC,CAAC,kBAAkB,CAAC,GAAG,IAAG;YACpD,OAAO,CAAC,GAAG,CAAC,CAAA;AACd,SAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AACX,KAAC,CAAC,CAAA;AACJ,CAAC;AAEK,SAAU,kBAAkB,CAAE,GAAgB,EAAA;AAClD,IAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;AAC/B,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAA;QAClC,MAAM,OAAO,GAAgB,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;AACtE,QAAA,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;AACnC,QAAA,GAAG,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,CAAA;AAC1B,QAAA,OAAO,CAAC,UAAU,GAAG,GAAG,CAAA;AACxB,QAAA,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,IAAG;AACjC,YAAA,KAAK,CAAC,UAAU,GAAG,OAAO,CAAA;AAC5B,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,OAAO,CAAA;AACf,KAAA;AACH;;ACnBA;;;AAGG;AACa,SAAA,kBAAkB,CAEhC,QAAmB,EACnB,IAAY,EAAA;;IAEZ,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;AAEpD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAA,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;AAExB,QAAA,QAAQ,QAAQ;AACd,YAAA,KAAK,aAAa;gBAChB,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;gBACtC,MAAK;AACP,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,oBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AACzC,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AACpB,iBAAA;gBACD,MAAK;AACP,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;gBACnB,MAAK;AACP,YAAA,KAAK,UAAU;gBACb,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CAAC,CAAC,CAAC,CAAA;gBAC/B,MAAK;AACR,SAAA;AACF,KAAA;AACH,CAAC;AAEe,SAAA,SAAS,CAAkB,MAAM,GAAG,KAAK,EAAA;AACvD,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAA;AACnC,IAAA,IAAI,OAAO,CAAA;AAEX,IAAA,IAAI,IAAI,CAAC,QAAQ,KAAA,CAAA,8BAA4B;QAC3C,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAChD,KAAA;AAAM,SAAA,IAAI,IAAI,CAAC,QAAQ,KAAA,CAAA,2BAAyB;AAC/C,QAAA,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;AACtC,KAAA;AAED,IAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,MAAM,KAAK,GAAQ,IAAI,CAAC,GAAG,CAAC,CAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,MAAM,EAAE;AAC7D,YAAA,OAAO,CAAC,GAAG,CAAC,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAE,CAAA;AAC5B,SAAA;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACrB,SAAA;aAAM,IAAI,GAAG,KAAK,KAAK,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,MAAM,qBAAQ,KAAK,CAAC,MAAM,CAAE,CAAA;AAC1C,YAAA,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;AACzE,SAAA;AACF,KAAA;AAED,IAAA,IAAI,MAAM,EAAE;QACV,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAK,IAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AAChF,KAAA;AAED,IAAA,OAAO,OAAO,CAAA;AAChB,CAAC;AAEK,SAAU,QAAQ,CAAkB,IAAgC,EAAA;IACxE,IAAI,UAAU,GAAG,KAAK,CAAA;AACtB,IAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,IAAG;AAC/B,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAA;AACzB,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,EAAE,IAAK,SAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC5E,UAAU,GAAG,IAAI,CAAA;AACjB,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AACH,KAAC,CAAC,CAAA;AACF,IAAA,OAAO,UAAU,CAAA;AACnB;;AClEA,MAAMA,OAAK,GAAG,aAAa,EAAE,CAAA;AAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAA;AAC/F,IAAI,CAACA,OAAK,IAAI,CAAC,SAAS,EAAE;AACxB,IAAA,IAAI,iBAAiB,EAAE;AACrB,QAAA,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;AAC3B,YAAA,GAAG,CAAE,IAAY,EAAA;gBACf,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;aACpC;YACD,GAAG,GAAA;AACD,gBAAA,OAAO,EAAE,CAAA;aACV;AACF,SAAA,CAAC,CAAA;AAEF,QAAA,IAAI,oBAAoB,EAAE;AACxB,YAAA,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAA;AAC1D,SAAA;AACF,KAAA;AAED,IAAA,IAAI,iBAAiB,EAAE;AACrB,QAAA,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;AACxC,KAAA;AAED,IAAA,IAAI,eAAe,EAAE;AACnB,QAAA,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;AACtC,KAAA;AAED,IAAA,IAAI,gBAAgB,EAAE;AACpB,QAAA,WAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAA;AACvE,KAAA;AAED,IAAA,IAAI,uBAAuB,EAAE;AAC3B,QAAA,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE;YAC5B,GAAG,GAAA;AACD,gBAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAA;aAChC;AACF,SAAA,CAAC,CAAA;AACH,KAAA;AACF;;AClCD;MACa,SAAS,CAAA;AAyBpB,IAAA,WAAA,CAAoB,IAAY,EAAE,IAAkB,EAAE,KAAe,EAAA;QAf9D,IAAK,CAAA,KAAA,GAAG,KAAK,CAAA;QAEb,IAAI,CAAA,IAAA,GAAG,KAAK,CAAA;QAEZ,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAA;;QAGxB,IAAM,CAAA,MAAA,GAAG,CAAC,CAAA;;;AAIV,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AAK3B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAA;KACnD;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;KAClB;IAEM,wBAAwB,GAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;KAC9B;IAEM,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;KAC7B;AAED,IAAA,IAAI,MAAM,GAAA;;AACR,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QACpC,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,IAAI,CAAC,CAAA;;AAE1D,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,MAAI,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAA,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,CAAA;AAClH,YAAA,MAAM,CAAC,OAAO,GAAG,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAA;YAE/D,KAAK,MAAM,GAAG,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AACtC,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACxC,aAAA;AAED,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;AAEzB,YAAA,OAAO,MAAM,CAAA;AACd,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,WAAW,CAAA;AACnB,SAAA;KACF;AAED,IAAA,IAAI,aAAa,GAAA;;AACf,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAA;QAClD,IAAI,CAAC,kBAAkB,EAAE;AACvB,YAAA,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAA;AAExB,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,KAAI,IAAI,CAAC,CAAA;YAExE,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAA,MAAA,aAAa,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,KAAI,aAAa,CAAC,EAAE,IAAI,IAAI,CAAC,CAAA;AAC1F,YAAA,MAAM,aAAa,GAAG,GAAG,CAAC,cAAc,CAAC,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAa,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,0CAAE,EAAY,CAAA,IAAI,IAAI,CAAC,CAAA;YAEpI,IAAI,OAAO,KAAK,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,aAAa,CAAC,EAAE;AAC9D,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAA;gBACrC,OAAO,IAAI,CAAC,MAAM,CAAA;AACnB,aAAA;AAED,YAAA,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;YAEvC,KAAK,MAAM,GAAG,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AACtC,gBAAA,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC/C,aAAA;AAED,YAAA,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAA;AAEvC,YAAA,OAAO,aAAa,CAAA;AACrB,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,kBAAkB,CAAA;AAC1B,SAAA;KACF;AACF,CAAA;AAEe,SAAA,WAAW,CAAE,KAAuB,EAAE,IAAkB,EAAA;AACtE,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;;AAE7B,QAAA,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;AACjE,KAAA;IAED,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAA;AAEnF,IAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACvB,QAAA,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,UAAU,EAAE;YAClF,SAAQ;AACT,SAAA;AAAM,aAAA;YACL,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;AACxB,SAAA;AACF,KAAA;AAED,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,QAAQ,MAAK,KAAK,EAAE;;AAEtD,QAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;AACrB,KAAA;AAED,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,WAAW,GAAG,EAAE,CAAA;AAEtB,SAAS,gBAAgB,CAAE,KAAc,EAAA;AACvC,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAA;AAC3C,IAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,OAAO,KAAK,CAAC,qBAAqB,CAAC,CAAA;AACpC,KAAA;AACD,IAAA,OAAO,MAAM,CAAA;AACf,CAAC;AAED;AACM,SAAU,YAAY,CAAE,KAAc,EAAA;;;AAE1C,IAAA,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/D,QAAA,KAAK,EAAG,KAAa,CAAC,KAAK;AAC5B,KAAA,CAAC,CAAA;AACF,IAAA,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE;QACnE,KAAK,EAAG,KAAa,CAAC,OAAO,sBAAS,KAAK,CAAE;AAC9C,KAAA,CAAC,CAAA;AACF,IAAA,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,IAAS,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAE,CAAA;AACzE,IAAA,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;AAEtC,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;IACzC,MAAM,EAAE,GAAG,CAAA,CAAA,EAAA,GAAA,aAAa,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAa,gBAAe,aAAa,CAAC,EAAE,gBAAe,CAAA,EAAA,GAAA,KAAK,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAY,CAAA,IAAI,EAAE,CAAA;IAE7H,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;AAC5C,IAAA,IAAI,IAAI,EAAE;QACR,MAAM,QAAQ,GAAG,MAAK;YACpB,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAElC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;YACtC,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;YACxC,KAAK,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;AAChD,SAAC,CAAA;AACD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;AACxC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;YAEvB,IACE,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC;AACnC,gBAAA,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;AAC3B,iBAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAC9C;;AAEA,gBAAA,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAK;AACrC,oBAAA,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AACrB,wBAAA,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;AACrC,wBAAA,OAAO,WAAW,CAAC,IAAI,CAAC,CAAA;AACzB,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;AACZ,iBAAC,CAAC,CAAA;AACF,gBAAA,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;AAC/B,aAAA;AAAM,iBAAA;;AAEL,gBAAA,CAAC,WAAW,CAAC,IAAI,CAAA,KAAhB,WAAW,CAAC,IAAI,CAAM,GAAA,EAAE,GAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC1C,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,QAAQ,EAAE,CAAA;AACV,YAAA,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;AAC/B,SAAA;AACF,KAAA;AACH;;AC7LM,MAAO,WAAY,SAAQ,WAAW,CAAA;AAC1C,IAAA,IAAW,IAAI,GAAA;;QACb,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAA;KAC9B;IAED,IAAW,IAAI,CAAE,GAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;KAC7B;AAED,IAAA,IAAW,KAAK,GAAA;;QAEd,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,CAAA;KAC9B;IAED,IAAW,KAAK,CAAE,GAAsC,EAAA;AACtD,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;KAC9B;AAEM,IAAA,aAAa,CAAE,KAAgB,EAAA;QACpC,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA;AACtC,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACzB,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAa,CAAA;AACjC,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;;;;AAI/B,gBAAA,IAAI,CAAC,KAAK,GAAG,GAAa,CAAA;AAC3B,aAAA;AACF,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;KAClC;AACF;;ACzCD,MAAM,WAAW,CAAA;AAAjB,IAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;KAoB7C;AAlBQ,IAAA,KAAK,CAAE,EAAU,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClB,OAAM;AACP,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;KAClC;AAEM,IAAA,IAAI,CAAE,EAAU,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClB,OAAM;AACP,SAAA;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAE,CAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AACxB,QAAA,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA;;QAEvB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,EAAE,CAAQ,KAAA,EAAA,IAAI,CAAI,EAAA,CAAA,CAAC,CAAA;KACnC;AACF,CAAA;AAEM,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE;;ACVrC,SAAS,iBAAiB,CAAE,IAAqB,EAAE,WAAqB,EAAA;;IAEtE,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACjC,IAAI,WAAW,GAAQ,IAAI,CAAA;AAC3B,IAAA,IAAI,aAA8C,CAAA;IAClD,IAAI,WAAW,GAAG,EAAE,CAAA;IAEpB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;QACpB,MAAM,GAAG,GAAG,IAAI;;AAEb,aAAA,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;;AAE3B,aAAA,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;AAEnC,QAAA,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;AAE9B,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;AACxB,YAAA,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;AACvD,SAAA;QAED,IAAI,WAAW,CAAC,WAAW,CAAC;AAAE,YAAA,OAAO,IAAI,CAAA;AAEzC,QAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,cAAc,EAAE;YAC3C,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;AACnD,YAAA,IAAI,GAAG,EAAE;gBACP,aAAa,GAAG,GAAG,CAAA;AACnB,gBAAA,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,aAAA;AACF,SAAA;AACH,KAAC,CAAC,CAAA;AAEF,IAAA,IAAI,aAAa,EAAE;QACjB,OAAO;YACL,aAAa;YACb,WAAW;SACZ,CAAA;AACF,KAAA;AACH,CAAC;AAEK,MAAO,eAAgB,SAAQ,WAAW,CAAA;AAS9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAA;QATD,IAAc,CAAA,cAAA,GAAoB,EAAE,CAAA;QAEpC,IAAe,CAAA,eAAA,GAAW,EAAE,CAAA;QAE7B,IAAa,CAAA,aAAA,GAAG,KAAK,CAAA;QAErB,IAAG,CAAA,GAAA,GAAsB,IAAI,CAAA;AAIlC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;KACtC;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,QAAQ,CAAA;KAChB;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAA;KACZ;AAEM,IAAA,aAAa,CAAE,OAAsB,EAAA;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAEjC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,aAAa,EAAE,CAAA;AACrB,SAAA;KACF;AAEM,IAAA,aAAa,CAAE,UAAU,GAAG,KAAK,EAAE,SAAgB,EAAA;AACxD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;AAEzB,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAE,CAAA;QAE/C,UAAU,CAAC,MAAK;YACd,MAAM,WAAW,GAAG,CAAA,EAAG,QAAQ,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE,CAAA;AACrD,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YACvB,MAAM,IAAI,GAAkE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC/F,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,UAAU;AACR,kBAAE,CAAC,aAAa,EAAE,YAAY,CAAC;kBAC7B,EAAE,CACP,CAAA;AAED,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,gBAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAG,CAAA;AACpD,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAA,IAAA,4BAAsB,EAAE;AACvC,oBAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACrB,iBAAA;AACD,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;AACnB,aAAA;AAED,YAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,gBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;;oBAErB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;AAClC,wBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;AAClB,qBAAA;AACH,iBAAC,CAAC,CAAA;AAEF,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;AACxB,gBAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACrB,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAA;AACrB,iBAAA;AACF,aAAA;;YAGD,IAAI,UAAU,CAAC,SAAS,CAAC;AAAE,gBAAA,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;;AAGjD,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;YAC1B,IAAI,YAAY,GAAG,EAAE,CAAA;AACrB,YAAA,MAAM,gBAAgB,GAA+C,IAAI,GAAG,EAAE,CAAA;AAE9E,YAAA,IAAI,UAAU,EAAE;;gBAEd,YAAY,GAAG,IAAI,CAAA;AACpB,aAAA;AAAM,iBAAA;;AAEL,gBAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;oBACpB,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAChC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;AAClD,oBAAA,IAAI,KAAK,EAAE;;AAET,wBAAA,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;;wBAE5C,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAC5B,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,EAC7C,EAAA,EAAA,CAAC,CAAK,EAAA,EAAA,WAAW,CAAE,CAAA,GAAG,IAAI,CAAC,CAAC,CAAC,EAAA,CAAA,CAC7B,CAAA;AACH,qBAAA;AAAM,yBAAA;;wBAEL,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AAC1B,qBAAA;AACF,iBAAA;AACF,aAAA;AAED,YAAA,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,CAAA;AAChD,YAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AAC/D,YAAA,MAAM,YAAY,GAAG,kBAAkB,IAAI,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YACtE,IAAI,WAAW,GAAG,CAAC,CAAA;YAEnB,MAAM,EAAE,GAAG,MAAK;AACd,gBAAA,IAAI,EAAE,WAAW,KAAK,YAAY,EAAE;AAClC,oBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;oBACtB,IAAI,CAAC,mBAAmB,EAAE,CAAA;AAC1B,oBAAA,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACnC,iBAAA;AACH,aAAC,CAAA;;AAGD,YAAA,IAAI,kBAAkB,EAAE;gBACtB,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAI;oBACrC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;;AAE1D,wBAAA,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAA;AAC9C,qBAAA;AACD,oBAAA,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;AACvB,iBAAC,CAAC,CAAA;AACH,aAAA;;AAGD,YAAA,IAAI,kBAAkB,EAAE;gBACtB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;;AAE1D,oBAAA,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;AAC3C,iBAAA;AACD,gBAAA,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AAC9B,aAAA;SACF,EAAE,CAAC,CAAC,CAAA;KACN;IAEM,qBAAqB,CAAE,EAAQ,EAAE,GAAyB,EAAA;AAC/D,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAK;AAC7B,YAAA,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAA;AAC3B,SAAC,CAAC,CAAA;KACH;IAEM,mBAAmB,GAAA;AACxB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAA;QAC5C,IAAI,CAAC,eAAe,CAAC,MAAM;YAAE,OAAM;QAEnC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACvC,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA;AAC/B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;AACZ,SAAA;KACF;AACF;;ACtMK,MAAO,QAAS,SAAQ,QAAQ,CAAA;AAKpC,IAAA,WAAA,CAAa,KAAK,EAAA;AAChB,QAAA,KAAK,EAAE,CAAA;AAJF,QAAA,IAAA,CAAA,QAAQ,GAAqB,CAAA,0BAAA;QAC7B,IAAQ,CAAA,QAAA,GAAG,OAAO,CAAA;AAIvB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;KACpB;IAED,IAAW,WAAW,CAAE,IAAY,EAAA;QAClC,gBAAgB,CAAC,MAAM,CAAC;AACtB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,IAAI,EAAmC,eAAA;YACvC,QAAQ,EAAE,IAAI,CAAC,MAAM;AACtB,SAAA,CAAC,CAAA;AACF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,aAAa,CAAC;AACjB,YAAA,IAAI,EAAE,CAAG,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,yBAAgB,CAAA;AACvC,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC,CAAA;KACH;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;IAED,IAAW,SAAS,CAAE,IAAY,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;KACxB;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;IAED,IAAW,IAAI,CAAE,IAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;KACxB;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9CD,MAAM,OAAO,GAAG,kBAAkB,CAAA;AAClC,MAAM,OAAO,GAAG,KAAK,CAAA;AACrB,MAAM,cAAc,GAAG;AACrB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,KAAK,EAAE,MAAM;CACd,CAAA;AAED,SAAS,QAAQ,CAAE,KAAa,EAAA;AAC9B,IAAA,OAAO,cAAc,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,QAAQ,CAAE,IAA8B,EAAE,IAAY,EAAE,KAAa,EAAA;AAC5E,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IACpD,IAAI,IAAI,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,OAAO,CAAE,KAAa,EAAE,GAAW,EAAA;AAC1C,IAAA,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,MAAM,CAAE,GAAW,EAAA;IAC1B,OAAO,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,MAAM,CAAE,GAAW,EAAA;IAC1B,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAC3D,CAAC;MAEY,eAAe,CAAA;AAG1B,IAAA,WAAA,CAAa,KAAK,EAAA;AAFlB,QAAA,qBAAA,CAAA,GAAA,CAAA,IAAA,EAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAA;QAGzB,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAK,IAAL,KAAK,GAAK,EAAE,CAAA,CAAA;AAEZ,QAAA,MAAM,IAAI,GAAG,sBAAA,CAAA,IAAI,6BAAM,CAAA;AAEvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3B,gBAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACvB,aAAA;YACD,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAChF,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;gBACtB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAChC,gBAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;oBACd,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9E,iBAAA;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE;oBACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;AAClC,iBAAA;AACF,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAClB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,oBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;AACtB,oBAAA,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,iBAAA;AACF,aAAA;iBAAM,IAAI,KAAK,CAAC,OAAO,EAAE;AACxB,gBAAA,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAC7B,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;oBACvB,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAChC,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAED,MAAM,CAAE,IAAY,EAAE,KAAa,EAAA;QACjC,QAAQ,CAAC,uBAAA,IAAI,EAAA,qBAAA,EAAA,GAAA,CAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;KAClC;AAED,IAAA,MAAM,CAAE,IAAY,EAAA;AAClB,QAAA,OAAO,uBAAA,IAAI,EAAA,qBAAA,EAAA,GAAA,CAAM,CAAC,IAAI,CAAC,CAAA;KACxB;AAED,IAAA,GAAG,CAAE,IAAY,EAAA;AACf,QAAA,MAAM,IAAI,GAAG,sBAAA,CAAA,IAAI,6BAAM,CAAA;AACvB,QAAA,OAAO,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;KAC3C;AAED,IAAA,MAAM,CAAE,IAAY,EAAA;AAClB,QAAA,MAAM,IAAI,GAAG,sBAAA,CAAA,IAAI,6BAAM,CAAA;AACvB,QAAA,OAAO,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;KAC/C;AAED,IAAA,GAAG,CAAE,IAAY,EAAA;AACf,QAAA,OAAO,IAAI,IAAI,sBAAA,CAAA,IAAI,6BAAM,CAAA;KAC1B;IAED,IAAI,GAAA;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,uBAAA,IAAI,EAAA,qBAAA,EAAA,GAAA,CAAM,CAAC,CAAA;KAC/B;IAED,GAAG,CAAE,IAAY,EAAE,KAAa,EAAA;QAC9B,sBAAA,CAAA,IAAI,EAAM,qBAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAA;KAChC;IAED,OAAO,CAAE,QAAQ,EAAE,OAAO,EAAA;AACxB,QAAA,MAAM,IAAI,GAAG,sBAAA,CAAA,IAAI,6BAAM,CAAA;QACvB,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,EAAA;AACrD,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,KAAa,EAAA;gBACxC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;aAC1C,EAAE,IAAI,CAAC,CAAA;SACT,EAAE,IAAI,CAAC,CAAA;KACT;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,EAAE,CAAA;KACV;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,sBAAA,CAAA,IAAI,6BAAM,CAAA;QACvB,MAAM,KAAK,GAAU,EAAE,CAAA;AACvB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACvB;AACF,CAAA;;;;MC3HY,GAAG,CAAA;AACd,IAAA,OAAO,eAAe,GAAA;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;KAC3E;AAED,IAAA,OAAO,eAAe,GAAA;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;KAC3E;IAUD,WAAa,CAAA,GAAW,EAAE,IAAa,EAAA;;AAPvC,QAAA,SAAA,CAAA,GAAA,CAAA,IAAA,EAAQ,EAAE,CAAA,CAAA;AACV,QAAA,aAAA,CAAA,GAAA,CAAA,IAAA,EAAY,EAAE,CAAA,CAAA;AACd,QAAA,aAAA,CAAA,GAAA,CAAA,IAAA,EAAY,EAAE,CAAA,CAAA;AACd,QAAA,SAAA,CAAA,GAAA,CAAA,IAAA,EAAQ,EAAE,CAAA,CAAA;AACV,QAAA,aAAA,CAAA,GAAA,CAAA,IAAA,EAAY,EAAE,CAAA,CAAA;QACd,WAAwB,CAAA,GAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGtB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,YAAA,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAErC,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AAC3C,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,CAAA;AAExE,QAAA,sBAAA,CAAA,IAAI,EAAA,SAAA,EAAS,IAAI,EAAA,GAAA,CAAA,CAAA;AACjB,QAAA,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAa,QAAQ,EAAA,GAAA,CAAA,CAAA;AACzB,QAAA,sBAAA,CAAA,IAAI,EAAa,aAAA,EAAA,QAAQ,IAAI,GAAG,MAAA,CAAA;AAChC,QAAA,sBAAA,CAAA,IAAI,EAAA,SAAA,EAAS,IAAI,EAAA,GAAA,CAAA,CAAA;AACjB,QAAA,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAa,QAAQ,EAAA,GAAA,CAAA,CAAA;QACzB,sBAAA,CAAA,IAAI,eAAW,IAAI,eAAe,CAAC,MAAM,CAAC,MAAA,CAAA;KAC3C;;AAGD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAA,GAAA,CAAU,CAAA;KACtB;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;AACvB,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,sBAAA,CAAA,IAAI,EAAa,aAAA,EAAA,GAAG,CAAC,IAAI,EAAE,EAAA,GAAA,CAAA,CAAC,CAAA;KAC/C;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;KAC1D;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxB,YAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,YAAA,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAK,EAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAA;AAC/C,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AACjB,SAAA;KACF;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAA,GAAA,CAAU,CAAA;KACtB;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;AACvB,QAAA,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAa,GAAG,CAAC,IAAI,EAAE,EAAA,GAAA,CAAA,CAAC,CAAA;KACtD;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,sBAAA,CAAA,IAAI,EAAA,SAAA,EAAA,GAAA,CAAM,CAAA;KAClB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,sBAAA,CAAA,IAAI,EAAS,SAAA,EAAA,GAAG,CAAC,IAAI,EAAE,EAAA,GAAA,CAAA,CAAC,CAAA;KAC3C;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAA,GAAA,CAAU,CAAA;KACtB;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;AACvB,QAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjB,YAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;YAChB,MAAM,QAAQ,GAAG,mBAAmB,CAAA;YACpC,IAAI,IAAI,GAAG,GAAG,CAAA;AACd,YAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC1B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AAClC,aAAA;AACD,YAAA,IAAI,IAAI;AAAE,gBAAA,sBAAA,CAAA,IAAI,EAAa,aAAA,EAAA,GAAG,GAAG,IAAI,MAAA,CAAA;;AAChC,gBAAA,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAa,GAAG,EAAA,GAAA,CAAA,CAAA;AAC1B,SAAA;KACF;AAED,IAAA,IAAI,MAAM,GAAA;QACR,MAAM,GAAG,GAAG,sBAAA,CAAA,IAAI,mBAAQ,CAAC,QAAQ,EAAE,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;KACnE;IAED,IAAI,MAAM,CAAE,GAAW,EAAA;AACrB,QAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjB,YAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;YAChB,sBAAA,CAAA,IAAI,eAAW,IAAI,eAAe,CAAC,GAAG,CAAC,MAAA,CAAA;AACxC,SAAA;KACF;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,sBAAA,CAAA,IAAI,EAAA,SAAA,EAAA,GAAA,CAAM,CAAA;KAClB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjB,YAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,YAAA,IAAI,GAAG;AAAE,gBAAA,sBAAA,CAAA,IAAI,EAAS,SAAA,EAAA,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,CAAA,CAAE,MAAA,CAAA;;AACtD,gBAAA,sBAAA,CAAA,IAAI,EAAA,SAAA,EAAS,EAAE,EAAA,GAAA,CAAA,CAAA;AACrB,SAAA;KACF;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAA,CAAE,CAAA;KAClF;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxB,YAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,YAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC1E,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AAChB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;AACrB,SAAA;KACF;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAA,CAAE,CAAA;KACxC;IAED,IAAI,MAAM,CAAE,GAAW,EAAA;AACrB,QAAA,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxB,YAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,YAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;AAClD,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AACjB,SAAA;KACF;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,sBAAA,CAAA,IAAI,EAAA,WAAA,EAAA,GAAA,CAAQ,CAAA;KACpB;;IAGD,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAA;KACjB;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;KACvB;;IAGD,MAAM,GAAA;QACJ,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAA;KACF;AACF,CAAA;;AAEe,SAAA,QAAQ,CAAE,GAAG,GAAG,EAAE,EAAA;AAChC,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,EAAE;KACT,CAAA;AACD,IAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,MAAM,CAAA;AAEzC,IAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAChB,MAAM,OAAO,GAAG,sFAAsF,CAAA;IACtG,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAElC,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,MAAM,CAAA;;IAG3B,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAA;IACxC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,CAAA;IAC1C,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAC9B,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAA;IACnC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;IACjC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;AAC/B,IAAA,MAAM,CAAC,IAAI,GAAG,GAAG,CAAA;AACjB,IAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAA;IACxD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,GAAG,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,CAAE,GAAG,EAAE,CAAC,CAAA;AAEtE,IAAA,OAAO,MAAM,CAAA;AACf,CAAC;AAEe,SAAA,YAAY,CAAE,GAAW,EAAE,IAAa,EAAA;IACtD,MAAM,SAAS,GAAG,iBAAiB,CAAA;IAEnC,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,UAAU,GAAuC,IAAI,CAAA;AAEzD,IAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QACtB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAAE,YAAA,MAAM,IAAI,SAAS,CAAC,CAAA,2CAAA,CAA6C,CAAC,CAAA;AAC7F,QAAA,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC5B,KAAA;IAED,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AAExB,IAAA,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACvB,OAAO,GAAG,GAAG,CAAA;AACd,KAAA;AAAM,SAAA,IAAI,UAAU,EAAE;AACrB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACxB,gBAAA,OAAO,GAAG,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAA;AACpC,aAAA;AAAM,iBAAA;gBACL,OAAO,GAAG,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAA;AACtE,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,GAAG,UAAU,CAAC,IAAI,CAAA;AAC1B,SAAA;AACF,KAAA;AAAM,SAAA;AACL,QAAA,MAAM,IAAI,SAAS,CAAC,CAAA,sCAAA,CAAwC,CAAC,CAAA;AAC9D,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC1B;;ACjOM,MAAO,aAAc,SAAQ,WAAW,CAAA;AAC5C,IAAA,IAAW,IAAI,GAAA;;AACb,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAAyB,MAAA,+BAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACjD;IAED,IAAW,IAAI,CAAE,GAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,CAA0B,MAAA,gCAAA,GAAG,CAAC,CAAA;KAChD;AAED,IAAA,IAAI,QAAQ,GAAA;;AACV,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAA6B,UAAA,mCAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACrD;AAED,IAAA,IAAI,IAAI,GAAA;;AACN,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAAyB,MAAA,+BAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACjD;AAED,IAAA,IAAI,MAAM,GAAA;;AACR,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAA2B,QAAA,iCAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACnD;AAED,IAAA,IAAI,IAAI,GAAA;;AACN,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAAyB,MAAA,+BAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACjD;AAED,IAAA,IAAI,QAAQ,GAAA;;AACV,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAA6B,UAAA,mCAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACrD;AAED,IAAA,IAAI,IAAI,GAAA;;AACN,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAAyB,MAAA,+BAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACjD;AAED,IAAA,IAAI,QAAQ,GAAA;;AACV,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAA6B,UAAA,mCAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACrD;IAEM,YAAY,CAAE,aAAqB,EAAE,KAAU,EAAA;QACpD,IAAI,aAAa,2CAA8B;AAC7C,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;AACnC,YAAA,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE;gBAC3B,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;AACzC,SAAA;KACF;AAEF;;AC5DK,MAAO,eAAgB,SAAQ,WAAW,CAAA;AAG9C,IAAA,WAAA,CAAoB,QAAgB,EAAA;AAClC,QAAA,KAAK,EAAE,CAAA;QADW,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;QAF7B,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAA;KAI9B;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAA;KACrB;AACF;;ACOK,MAAO,YAAa,SAAQ,WAAW,CAAA;AAM3C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAA;QAHF,IAAW,CAAA,WAAA,GAAG,WAAW,CAAA;QAI9B,IAAI,CAAC,QAAQ,GAAA,CAAA,8BAAyB;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAA;KACtC;AAEM,IAAA,aAAa,CAAE,IAAY,EAAA;AAChC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;AAEnC,QAAA,IAAI,OAAoB,CAAA;AACxB,QAAA,QAAQ,IAAI;YACV,KAAK,QAAQ,KAAK,QAAQ;AACxB,gBAAA,OAAO,GAAG,IAAI,eAAe,EAAE,CAAA;AAC/B,gBAAA,OAAO,OAAO,CAAA;AAChB,YAAA,KAAK,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACpC,gBAAA,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;gBAC3B,MAAK;YACP,KAAK,QAAQ,KAAK,CAAC;AACjB,gBAAA,OAAO,GAAG,IAAI,aAAa,EAAE,CAAA;gBAC7B,MAAK;YACP,KAAK,QAAQ,KAAK,WAAW,CAAC;YAC9B,KAAK,QAAQ,KAAK,gBAAgB;gBAChC,OAAO,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;gBACpD,MAAK;AACP,YAAA;AACE,gBAAA,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;gBAC3B,MAAK;AACR,SAAA;AAED,QAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;AAC3B,QAAA,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;AAEpC,QAAA,OAAO,OAAO,CAAA;KACf;;;IAIM,eAAe,CAAE,MAAc,EAAE,IAAY,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;KAChC;AAEM,IAAA,cAAc,CAAE,IAAY,EAAA;AACjC,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;KAC1B;AAEM,IAAA,cAAc,CAAyB,EAA6B,EAAA;QACzE,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAC9B,QAAA,OAAO,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAO,CAAA;KACxC;AAEM,IAAA,aAAa,CAAyB,KAAa,EAAA;;AAExD,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO,IAAI,CAAC,cAAc,CAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9C,SAAA;AACD,QAAA,OAAO,IAAI,CAAA;KACZ;IAEM,gBAAgB,GAAA;;AAErB,QAAA,OAAO,EAAE,CAAA;KACV;;IAGM,aAAa,GAAA;AAClB,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAA;AACjC,QAAA,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAA;AAC3B,QAAA,OAAO,QAAQ,CAAA;KAChB;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,GAAG,CAAC,MAAM,CAAA;KAClB;AACF;;ACtFD,IAAIC,WAAQ;AAEZ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,EAAE;;AAE5C,IAAA,SAAS,cAAc,GAAA;AACrB;;;;;;;;;;;AAWK;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,YAAY,EAAE,CAAA;QAC9B,MAAM,qBAAqB,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzD,QAAA,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;AACxC,QAAA,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;AACxC,QAAA,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;AACxC,QAAA,MAAM,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;AACtC,QAAA,GAAG,CAAC,EAAE,GAAG,GAAG,CAAA;QACZ,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;AAElD,QAAA,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;AAC3B,QAAA,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;AAE1B,QAAA,GAAG,CAAC,eAAe,GAAG,IAAI,CAAA;AAC1B,QAAA,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;AACf,QAAA,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;AAEf,QAAA,OAAO,GAAG,CAAA;KACX;AACD,IAAAA,UAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,cAAc,EAAE,CAAA;AAC3C,CAAA;AAAM,KAAA;AACL,IAAAA,UAAQ,GAAG,GAAG,CAAC,QAAQ,CAAA;AACxB;;AClDK,SAAU,gBAAgB,CAAE,OAAoB,EAAA;IACpD,OAAO,OAAO,CAAC,KAAK,CAAA;AACtB;;ACHM,MAAA,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM;;ACFvD;;AAEG;MAEU,YAAY,CAAA;AAIvB,IAAA,WAAA,CAAa,IAAY,EAAA;AAFzB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAa,CAAA;AAG1B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;KACjB;AAED,IAAA,GAAG,CAAE,UAAkB,EAAA;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KAClC;IAED,GAAG,CAAE,UAAkB,EAAE,GAAM,EAAA;QAC7B,IAAI,UAAU,IAAI,GAAG,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;AAChC,SAAA;KACF;AAED,IAAA,GAAG,CAAE,UAAkB,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KAC5D;AAED,IAAA,MAAM,CAAE,UAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;KAC9B;AACF;;;ACPD,MAAMC,OAAK,GAAG,IAAI,YAAY,CAAiB,SAAS,CAAC,CAAA;AAEnD,MAAO,OAAQ,SAAQ,MAAM,CAAA;IAQjC,WAAa,CAAA,QAA+B,EAAE,OAAgB,EAAA;AAC5D,QAAA,KAAK,EAAE,CAAA;;;QAPT,iBAAgC,CAAA,GAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAChC,QAAA,cAAA,CAAA,GAAA,CAAA,IAAA,EAAyB,EAAE,CAAA,CAAA;AAC3B,QAAA,YAAA,CAAA,GAAA,CAAA,IAAA,EAAO,CAAC,CAAA,CAAA;QAER,eAAY,CAAA,GAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKV,QAAA,sBAAA,CAAA,IAAI,EAAW,eAAA,EAAA,OAAO,CAAC,MAAM,MAAA,CAAA;AAC7B,QAAA,sBAAA,CAAA,IAAI,EAAA,iBAAA,EAAa,QAAQ,EAAA,GAAA,CAAA,CAAA;QAEzB,sBAAA,CAAA,IAAI,EAAU,iBAAA,EAAA,GAAA,CAAA,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,IAAY,KAAI;;AACvD,YAAA,sBAAA,CAAA,IAAA,EAAA,YAAA,GAAA,EAAS,GAAA,sBAAA,CAAA,IAAA,EAAA,YAAA,EAAA,GAAA,CAAA,EAAT,IAAW,EAAA,EAAA,OAAA,CAAA;AACX,YAAA,sBAAA,CAAA,IAAI,EAAA,cAAA,EAAU,sBAAA,CAAA,IAAI,sBAAO,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAA,CAAA,IAAI,EAAK,YAAA,EAAA,GAAA,CAAA,CAAC,MAAA,CAAA;AAC7C,YAAA,sBAAA,CAAA,IAAI,EAAA,cAAA,EAAA,GAAA,CAAO,CAAC,IAAI,CAAC;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,GAAG,EAAE,IAAI;AACV,aAAA,CAAC,CAAA;SACH,EAAE,IAAI,CAAC,CAAA;QAER,sBAAA,CAAA,IAAI,EAAU,iBAAA,EAAA,GAAA,CAAA,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,IAAY,KAAI;AACtD,YAAA,sBAAA,CAAA,IAAI,EAAO,kBAAA,EAAA,GAAA,EAAA,cAAA,CAAA,CAAA,IAAA,CAAX,IAAI,EAAQ,IAAI,CAAC,CAAA;SAClB,EAAE,IAAI,CAAC,CAAA;;QAIR,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,MAAK;AACjC,YAAA,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,EAAA,cAAA,CAAO,CAAX,IAAA,CAAA,IAAI,CAAS,CAAA;SACd,EAAE,IAAI,CAAC,CAAA;QAER,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,MAAc,KAAI;AAClD,YAAAA,OAAK,CAAC,GAAG,CAAC,MAAM,EAAE;gBAChB,QAAQ,EAAE,sBAAA,CAAA,IAAI,EAAU,iBAAA,EAAA,GAAA,CAAA;AACxB,gBAAA,KAAK,EAAE,sBAAA,CAAA,IAAI,EAAO,cAAA,EAAA,GAAA,CAAA,CAAC,KAAK,EAAE;gBAC1B,GAAG,EAAE,sBAAA,CAAA,IAAI,EAAK,YAAA,EAAA,GAAA,CAAA;AACf,aAAA,CAAC,CAAA;SACH,EAAE,IAAI,CAAC,CAAA;QAER,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,MAAc,KAAI;AAClD,YAAA,IAAIA,OAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACrB,MAAM,GAAG,GAAGA,OAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;AAC9B,gBAAA,sBAAA,CAAA,IAAI,EAAa,iBAAA,EAAA,GAAG,CAAC,QAAQ,MAAA,CAAA;AAC7B,gBAAA,sBAAA,CAAA,IAAI,EAAU,cAAA,EAAA,GAAG,CAAC,KAAK,MAAA,CAAA;AACvB,gBAAA,sBAAA,CAAA,IAAI,EAAQ,YAAA,EAAA,GAAG,CAAC,GAAG,MAAA,CAAA;AACpB,aAAA;SACF,EAAE,IAAI,CAAC,CAAA;QAER,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,MAAc,KAAI;AAClD,YAAAA,OAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;SACrB,EAAE,IAAI,CAAC,CAAA;AAER,QAAA,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,EAAA,cAAA,CAAO,CAAX,IAAA,CAAA,IAAI,CAAS,CAAA;KACd;;AAcD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAO,cAAA,EAAA,GAAA,CAAA,CAAC,MAAM,CAAA;KAC1B;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,sBAAA,CAAA,IAAI,EAAA,cAAA,EAAA,GAAA,CAAO,CAAC,sBAAA,CAAA,IAAI,EAAK,YAAA,EAAA,GAAA,CAAA,CAAC,CAAC,KAAK,CAAA;KACpC;;AAGD,IAAA,EAAE,CAAE,KAAa,EAAA;QACf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;YAAE,OAAM;AAE5C,QAAA,IAAI,SAAS,GAAG,sBAAA,CAAA,IAAI,EAAK,YAAA,EAAA,GAAA,CAAA,GAAG,KAAK,CAAA;QACjC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAE7D,QAAA,sBAAA,CAAA,IAAI,EAAA,YAAA,EAAQ,SAAS,EAAA,GAAA,CAAA,CAAA;AAErB,QAAA,sBAAA,CAAA,IAAI,EAAU,iBAAA,EAAA,GAAA,CAAA,CAAC,OAAO,CAAC,8BAA8B,EAAE,sBAAA,CAAA,IAAI,EAAO,cAAA,EAAA,GAAA,CAAA,CAAC,uBAAA,IAAI,EAAA,YAAA,EAAA,GAAA,CAAK,CAAC,CAAC,GAAG,CAAC,CAAA;AAClF,QAAA,sBAAA,CAAA,IAAI,EAAQ,eAAA,EAAA,GAAA,CAAA,CAAC,OAAO,CAAC,UAAU,EAAE,sBAAA,CAAA,IAAI,EAAA,cAAA,EAAA,GAAA,CAAO,CAAC,sBAAA,CAAA,IAAI,EAAK,YAAA,EAAA,GAAA,CAAA,CAAC,CAAC,CAAA;KACzD;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACZ;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;KACX;AAED,IAAA,SAAS,CAAE,KAAU,EAAE,KAAa,EAAE,GAAW,EAAA;AAC/C,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,sBAAA,CAAA,IAAI,EAAU,cAAA,EAAA,sBAAA,CAAA,IAAI,EAAA,cAAA,EAAA,GAAA,CAAO,CAAC,KAAK,CAAC,CAAC,EAAE,uBAAA,IAAI,EAAA,YAAA,EAAA,GAAA,CAAK,GAAG,CAAC,CAAC,MAAA,CAAA;AACjD,QAAA,sBAAA,CAAA,IAAI,EAAA,cAAA,EAAA,GAAA,CAAO,CAAC,IAAI,CAAC;YACf,KAAK;YACL,KAAK;YACL,GAAG;AACJ,SAAA,CAAC,CAAA;QACF,sBAAA,CAAA,IAAI,gBAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,MAAA,CAAA;QAE3B,sBAAA,CAAA,IAAI,yBAAU,CAAC,OAAO,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAA;KAC5D;AAED,IAAA,YAAY,CAAE,KAAU,EAAE,KAAa,EAAE,GAAW,EAAA;AAClD,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,sBAAA,CAAA,IAAI,EAAO,cAAA,EAAA,GAAA,CAAA,CAAC,uBAAA,IAAI,EAAA,YAAA,EAAA,GAAA,CAAK,CAAC,GAAG;YACvB,KAAK;YACL,KAAK;YACL,GAAG;SACJ,CAAA;QAED,sBAAA,CAAA,IAAI,yBAAU,CAAC,OAAO,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAA;KAC5D;;AAGD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAOA,OAAK,CAAA;KACb;AACF,CAAA;AArES,iBAAA,GAAA,IAAA,OAAA,EAAA,EAAA,cAAA,GAAA,IAAA,OAAA,EAAA,EAAA,YAAA,GAAA,IAAA,OAAA,EAAA,EAAA,eAAA,GAAA,IAAA,OAAA,EAAA,EAAA,kBAAA,GAAA,IAAA,OAAA,EAAA,EAAA,cAAA,GAAA,SAAA,cAAA,CAAA,IAAI,GAAG,EAAE,EAAA;AACf,IAAA,sBAAA,CAAA,IAAI,EAAU,cAAA,EAAA;AACZ,QAAA;AACE,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,GAAG,EAAE,IAAI,IAAI,uBAAA,IAAI,EAAA,iBAAA,EAAA,GAAA,CAAU,CAAC,IAAI;AACjC,SAAA;AACF,KAAA,EAAA,GAAA,CAAA,CAAA;AACD,IAAA,sBAAA,CAAA,IAAI,EAAA,YAAA,EAAQ,CAAC,EAAA,GAAA,CAAA,CAAA;AACf,CAAC;;ACxEU,MAAA,OAAO,GAAY;AAC9B,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,IAAI,EAAE,IAAI;EACX;MAEY,kBAAkB,GAAG,MAAM;;;ACRxC,MAAM,QAAQ,GAAG,kBAAkB,CAAA;AACnC,MAAM,KAAK,GAAG,IAAI,YAAY,CAAkB,UAAU,CAAC,CAAA;AAErD,MAAO,QAAS,SAAQ,MAAM,CAAA;AAMlC,IAAA,WAAA,CAAa,OAAgB,EAAA;AAC3B,QAAA,KAAK,EAAE,CAAA;;;AALT,QAAA,aAAA,CAAA,GAAA,CAAA,IAAA,EAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AACxB,QAAA,oBAAA,CAAA,GAAA,CAAA,IAAA,EAAc,KAAK,CAAA,CAAA;QACnB,gBAAY,CAAA,GAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKV,QAAA,sBAAA,CAAA,IAAI,EAAW,gBAAA,EAAA,OAAO,CAAC,MAAM,MAAA,CAAA;AAE7B,QAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,eAAA,CAAO,CAAX,IAAA,CAAA,IAAI,CAAS,CAAA;QAEb,IAAI,CAAC,EAAE,CACL,8BAA8B,EAC9B,CAAC,IAAY,KAAI;AACf,YAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAe,IAAI,EAAA,GAAA,CAAA,CAAA;AAEvB,YAAA,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;YAC/B,sBAAA,CAAA,IAAI,qBAAK,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;AAEtC,YAAA,IAAI,QAAQ,KAAK,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,EAAE;AAC/B,gBAAA,sBAAA,CAAA,IAAI,EAAQ,gBAAA,EAAA,GAAA,CAAA,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AACnC,aAAA;AAED,YAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAe,KAAK,EAAA,GAAA,CAAA,CAAA;SACzB,EACD,IAAI,CACL,CAAA;;QAGD,IAAI,CAAC,EAAE,CACL,eAAe,CAAC,IAAI,EACpB,MAAK;AACH,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,eAAA,CAAO,CAAX,IAAA,CAAA,IAAI,CAAS,CAAA;SACd,EACD,IAAI,CACL,CAAA;QAED,IAAI,CAAC,EAAE,CACL,eAAe,CAAC,OAAO,EACvB,CAAC,MAAc,KAAI;AACjB,YAAA,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE;gBAChB,QAAQ,EAAE,IAAI,CAAC,IAAI;AACpB,aAAA,CAAC,CAAA;SACH,EACD,IAAI,CACL,CAAA;QAED,IAAI,CAAC,EAAE,CACL,eAAe,CAAC,OAAO,EACvB,CAAC,MAAc,KAAI;;AAEjB,YAAA,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACrB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;AAC9B,gBAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAe,IAAI,EAAA,GAAA,CAAA,CAAA;gBACvB,sBAAA,CAAA,IAAI,qBAAK,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAA;AAC7B,gBAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAe,KAAK,EAAA,GAAA,CAAA,CAAA;AACzB,aAAA;SACF,EACD,IAAI,CACL,CAAA;QAED,IAAI,CAAC,EAAE,CACL,eAAe,CAAC,OAAO,EACvB,CAAC,MAAc,KAAI;AACjB,YAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;SACrB,EACD,IAAI,CACL,CAAA;KACF;;AAqED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAA;KAC1B;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;QACvB,MAAM,GAAG,GAAG,kBAAkB,CAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAAE,OAAM;AAE3D,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAChB,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,GAAG,GAAG,CAAA;AAExB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;KACtB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAEhB,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,GAAG,CAAA;AAEpB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAA;KAC1B;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;AACvB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAEhB,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,GAAG,GAAG,CAAA;AAExB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;KACtB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,MAAM,IAAI,GAAG,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAA;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;YAAE,OAAM;QAExC,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,GAAG,CAAA;AAEpB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAA;KAC1B;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;AACvB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAEhB,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,GAAG,GAAG,CAAA;AAExB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,MAAM,CAAA;KACxB;IAED,IAAI,MAAM,CAAE,GAAW,EAAA;AACrB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,QAAA,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAI,CAAA,EAAA,GAAG,EAAE,CAAA;QAE3C,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,MAAM,GAAG,GAAG,CAAA;AAEtB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;KACtB;;IAGD,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,QAAA,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAI,CAAA,EAAA,GAAG,EAAE,CAAA;QAE3C,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,GAAG,CAAA;AAEpB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;KACtB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;QACnB,MAAM,GAAG,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE;YAAE,OAAM;QAEnE,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,GAAG,CAAA;AAEpB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,MAAM,CAAA;KACxB;IAED,IAAI,MAAM,CAAE,GAAW,EAAA;QACrB,MAAM,GAAG,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE;YAAE,OAAM;QAEnE,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,MAAM,GAAG,GAAG,CAAA;AAEtB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;;IAGD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAA;KAC3C;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAA;KAC3C;AAED,IAAA,OAAO,CAAE,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAA;KAClD;IAED,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAA;KACjB;;AAGD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,KAAK,CAAA;KACb;AACF,CAAA;;AAxNG,IAAA,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAA;AACpC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;AAC7B,IAAA,IAAI,MAAM,EAAE;AACV,QAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;AAC/B,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAChD,OAAO,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;AAChC,SAAC,CAAC,CAAA;QACF,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;QACvE,MAAM,GAAG,GAAG,CAAA,EAAG,QAAQ,CAAA,EAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA,EAAG,SAAS,CAAA,CAAE,CAAA;QAEhF,sBAAA,CAAA,IAAI,iBAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,MAAA,CAAA;QAExB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7C,KAAA;AACH,CAAC,EAAA,qBAAA,GAAA,SAAA,qBAAA,GAAA;AAGC,IAAA,OAAO,uBAAA,IAAI,EAAA,aAAA,EAAA,GAAA,CAAK,CAAC,MAAM,EAAE,CAAA;AAC3B,CAAC,mDAEU,IAAY,EAAA;AACrB,IAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,IAAI,CAAA;AACvB,CAAC,EAAA,uBAAA,GAAA,SAAA,uBAAA,GAAA;IAGC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC,+DAKgB,QAAkB,EAAA;IACjC,IAAI,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAY,EAAE;AACpB,QAAA,OAAO,KAAK,CAAA;AACb,KAAA;IAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,sBAAA,CAAA,IAAI,qBAAK,CAAC,MAAM,EAAE,CAAA;;AAG/E,IAAA,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;QAC9F,sBAAA,CAAA,IAAI,+CAAU,CAAd,IAAA,CAAA,IAAI,EAAW,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC7B,QAAA,OAAO,KAAK,CAAA;AACb,KAAA;;AAGD,IAAA,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE;AAClC,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;;AAGD,IAAA,IAAI,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AAC9B,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;;AAGD,IAAA,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;AAC1B,QAAA,sBAAA,CAAA,IAAI,EAAQ,gBAAA,EAAA,GAAA,CAAA,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AAClC,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;IAED,sBAAA,CAAA,IAAI,+CAAU,CAAd,IAAA,CAAA,IAAI,EAAW,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC7B,IAAA,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AA4JH,SAAS,eAAe,CAAE,GAAG,GAAG,EAAE,EAAA;IAChC,MAAM,MAAM,GAAG,QAAQ,CAAA;AACvB,IAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,MAAM,GAAG,GAAG,CAAA;AACpB,KAAA;AACD,IAAA,OAAO,GAAG,CAAA;AACZ;;AC1TA,MAAM,OAAO,GAAG,WAAW,CAAA;AAC3B,MAAM,IAAI,GAAG,wBAAwB,CAAA;AACrC,MAAM,MAAM,GAAG,yFAAyF,CAAA;AAExG,MAAM,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;AAE1C,MAAA,GAAG,GAAG,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG;AAC1D,IAAA,WAAW,EAAE,SAAS;AACtB,IAAA,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,MAAM,GAAG,GAAG;AACxB,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE,cAAc,GAAG,GAAG;AAC/B,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,SAAS,EAAE,EAAE;;;ACvBf;AACW,IAAA,IAAiB;AAE5B,CAAC,YAAA;AACC,IAAA,IAAI,QAAQ,CAAA;AACZ,IAAA,IAAI,CAAC,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,EAAE;QACnF,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAA;AAC9B,KAAA;SAAM,IAAI,IAAI,CAAC,GAAG,EAAE;AACnB,QAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAA;AAClC,KAAA;AAAM,SAAA;AACL,QAAA,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;AAC/B,QAAA,GAAG,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAA;AAC5C,KAAA;AACH,CAAC,GAAG,CAAA;AAEJ,IAAI,QAAQ,GAAG,CAAC,CAAA;AAEhB;AACA;AACA,MAAM,IAAI,GAAG,OAAO,qBAAqB,KAAK,WAAW,IAAI,qBAAqB,KAAK,IAAI,GAAG,qBAAqB,GAAG,UAAU,QAAQ,EAAA;AACtI,IAAA,MAAM,IAAI,GAAG,GAAG,EAAE,CAAA;AAClB,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,EAAE,EAAE,IAAI,CAAC,CAAA;AAC9C,IAAA,OAAO,UAAU,CAAC,YAAA,EAAc,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAA,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAA;AACnF,EAAC;AAEK,MAAA,IAAI,GAAG,OAAO,oBAAoB,KAAK,WAAW,IAAI,oBAAoB,KAAK,IAAI;AACvF,MAAE,oBAAoB;MACpB,UAAU,IAAI,EAAA;;QAEd,YAAY,CAAC,IAAI,CAAC,CAAA;AACpB;;ACpBF,IAAIC,SAAM;AAEV,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,EAAE;IAC5C,MAAM,MAAO,SAAQ,MAAM,CAAA;AAUzB,QAAA,WAAA,GAAA;AACE,YAAA,KAAK,EAAE,CAAA;YAVT,IAAS,CAAA,SAAA,GAAGC,GAAS,CAAA;YACrB,IAAqB,CAAA,qBAAA,GAAGC,IAAG,CAAA;YAC3B,IAAoB,CAAA,oBAAA,GAAGC,IAAG,CAAA;YAC1B,IAAgB,CAAA,gBAAA,GAAG,gBAAgB,CAAA;AASjC,YAAA,MAAM,gBAAgB,GAAG;AACvB,gBAAA,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,IAAI,EAAE,CAAC;AAC3C,gBAAA,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,IAAI,EAAE,CAAC;aAC9C,CAAA;AAED,YAAA,gBAAgB,CAAC,OAAO,CAAC,QAAQ,IAAG;AAClC,gBAAA,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU;oBAAE,OAAM;AAC1D,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;;oBAEzD,IAAI;wBACF,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAClC,qBAAA;AAAC,oBAAA,OAAO,CAAC,EAAE;AACV,wBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;4BACzC,OAAO,CAAC,IAAI,CAAC,CAAsB,mBAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAkB,gBAAA,CAAA,CAAC,CAAA;AACvE,yBAAA;AACF,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAA;YAEF,IAAI,CAAC,IAAI,KAAT,IAAI,CAAC,IAAI,GAAK,IAAI,CAAA,CAAA;;AAGlB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AAC9C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAE3D,IAAI,CAAC,SAAS,EAAE,CAAA;SACjB;QAED,SAAS,GAAA;AACP,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAA;AAC/B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAA;YAE7B,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,MAAc,KAAI;;gBAE/C,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;aAChD,EAAE,IAAI,CAAC,CAAA;YAER,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,MAAc,KAAI;;gBAElD,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAClD,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;aAClD,EAAE,IAAI,CAAC,CAAA;YAER,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,MAAc,KAAI;;gBAElD,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAClD,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;aAClD,EAAE,IAAI,CAAC,CAAA;YAER,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,MAAc,KAAI;;gBAElD,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAClD,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;aAClD,EAAE,IAAI,CAAC,CAAA;SACT;AAED,QAAA,IAAI,QAAQ,GAAA;YACV,OAAO,GAAG,CAAC,QAAQ,CAAA;SACpB;QAED,gBAAgB,CAAE,KAAa,EAAE,QAA4B,EAAA;AAC3D,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAM;YAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;SAC/B;QAED,mBAAmB,CAAE,KAAa,EAAE,QAA4B,EAAA;AAC9D,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAM;YAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;SAChC;QAED,UAAU,CAAE,GAAG,IAAmC,EAAA;AAChD,YAAA,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;SAC3B;QAED,YAAY,CAAE,GAAG,IAAqC,EAAA;AACpD,YAAA,OAAO,YAAY,CAAC,GAAG,IAAI,CAAC,CAAA;SAC7B;AACF,KAAA;IAEDH,QAAM,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;AACnC,CAAA;AAAM,KAAA;AACL,IAAAA,QAAM,GAAG,GAAG,CAAC,MAAM,CAAA;AACpB,CAAA;AAEY,MAAA,QAAQ,GAAGA,QAAM,CAAC,SAAQ;AAC1B,MAAA,OAAO,GAAGA,QAAM,CAAC;;AC9G9B;AACM,MAAO,UAAW,SAAQ,WAAW,CAAA;AAAG;;ACH9C;AAqBA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAA;AAC7C,MAAM,MAAM,GAAG,WAAW,EAAE,CAAA;AAC5B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAA;AAEb,SAAA,kBAAkB,CAAE,IAAyB,EAAE,EAAU,EAAA;AACvE,IAAA,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;AACxD,IAAA,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;AACzB,CAAC;AAEK,SAAU,eAAe,CAAE,EAAU,EAAA;AACzC,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAC1B,CAAC;AAEK,SAAU,kBAAkB,CAAE,EAAU,EAAA;AAC5C,IAAA,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AACtB,CAAC;AAEK,SAAU,eAAe,CAAE,IAAa,EAAA;IAC5C,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,QAAA,OAAO,EAAE,CAAA;AACV,KAAA;AACD,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA;AACnD,CAAC;AAEK,SAAU,WAAW,CAAE,IAAY,EAAE,SAAiB,EAAE,GAAG,IAAe,EAAA;IAC9E,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAEpC,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,OAAM;AACP,KAAA;AAED,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,SAA+B,CAAC,CAAA;AAElF,IAAA,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;AACjB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;AACpD,QAAA,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;AACd,KAAA;AAED,IAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACrB,OAAM;AACP,KAAA;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACnC,CAAC;AAEK,SAAU,SAAS,CAAE,GAA6B,EAAA;IACtD,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,QAAA,OAAO,EAAE,CAAA;AACV,KAAA;AACD,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;QACxC,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;AAC7B,KAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACZ,IAAA,OAAO,IAAI,KAAK,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA;AACxC,CAAC;AAEe,SAAA,OAAO,CAAE,EAAU,EAAE,OAAiC,EAAA;IACpE,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAC3B,IAAA,IAAI,KAAK,EAAE;QACT,OAAO,CAAA,EAAG,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA,EAAG,SAAS,CAAC,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,IAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA,CAAE,CAAA;AAC7G,KAAA;AAAM,SAAA;QACL,OAAO,CAAA,EAAG,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAG,EAAA,SAAS,CAAC,OAAO,CAAC,CAAA,CAAE,CAAA;AACtE,KAAA;AACH,CAAC;AAEK,SAAU,kBAAkB,CAAE,IAAY,EAAA;AAC9C,IAAA,OAAO,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAA;AAC9B,CAAC;AAEK,SAAU,iBAAiB,CAAE,IAAY,EAAA;AAC7C,IAAA,OAAO,IAAI,GAAG,GAAG,GAAG,OAAO,CAAA;AAC7B,CAAC;AAEK,SAAU,iBAAiB,CAAE,IAAY,EAAA;AAC7C,IAAA,OAAO,IAAI,GAAG,GAAG,GAAG,OAAO,CAAA;AAC7B,CAAC;AAEK,SAAU,gBAAgB,CAAE,SAAc,EAAE,QAAiB,EAAE,IAA8B,EAAE,UAAuB,EAAA;;AAE1H,IAAA,MAAM,EAAE,GAAG,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAR,QAAQ,GAAI,CAAa,UAAA,EAAA,MAAM,EAAE,CAAA,CAAE,CAAA;IAC9C,MAAM,CACJ,MAAM,EACN,QAAQ,EACR,OAAO,EACP,MAAM,EACN,MAAM,EACN,UAAU,EACV,sBAAsB,EACvB,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAE,CAAC,IAAI,CAAA;IAC5C,IAAI,WAAW,GAA2B,IAAI,CAAA;IAC9C,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,gBAAgB,GAAmB,EAAE,CAAA;IAEzC,SAAS,gBAAgB,CAAE,IAAgB,EAAA;QACzC,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAA;QACtF,OAAO,CAAC,MAAM,GAAG;YACf,MAAM,EAAE,IAAI,CAAC,WAAY;AACzB,YAAA,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;AAC/B,YAAA,MAAM,EAAE,iBAAiB,CAAC,EAAE,CAAC;AAC7B,YAAA,MAAM,EAAE,iBAAiB,CAAC,EAAE,CAAC;SAC9B,CAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAChC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;AAC1C,SAAA;KACF;AACD,IAAA,IAAI,YAA0C,CAAA;AAC9C,IAAA,IAAI,SAAwB,CAAA;AAC5B,IAAA,MAAM,MAAM,GAAiB;AAC3B,QAAA,CAAC,MAAM,CAAC,CAAoB,OAA6C,GAAA,EAAE,EAAE,EAAS,EAAA;AACpF,YAAA,SAAS,GAAG,IAAI,OAAO,CAAC,OAAO,IAAM,EAAA,YAAY,GAAG,OAAO,CAAA,EAAE,CAAC,CAAA;AAE9D,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AAErB,YAAA,OAAO,CAAC,IAAI,GAAG,IAAW,CAAA;AAC1B,YAAA,IAAI,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE,CAAA;;AAG9B,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AAChF,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;AAC7D,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,MAAM,CAAC,IAAI,GAAG,SAAS,CAAA;AACxB,aAAA;;AAED,YAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;AAC5B,gBAAA,IAAI,CAAC,WAAW,GAAG,aAAa,CAAA;AACjC,aAAA;YAED,gBAAgB,CAAC,IAAI,CAAC,CAAA;;YAGtB,IAAI,CAAC,KAAK,EAAE;gBACVA,QAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AAChD,aAAA;YAED,MAAM,KAAK,GAAG,MAAK;gBACjB,OAAO,CAAC,GAAI,CAAC,KAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAK;oBAC7C,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAkB,SAAS,CAAC,CAAA;AAErE,oBAAA,MAAM,CAAC,WAAW,KAAK,IAAI,EAAE,WAAW,CAAC,CAAA;oBACzC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;AACjD,oBAAA,YAAY,EAAE,CAAA;oBACd,IAAI,CAAC,KAAK,EAAE;AACV,wBAAA,WAAW,CAAC,GAAG,GAAG,IAAI,CAAA;AACtB,wBAAA,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;AACpC,qBAAA;AAAM,yBAAA;AACL,wBAAA,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAA;AACvB,qBAAA;AACH,iBAAC,CAAC,CAAA;AACJ,aAAC,CAAA;AACD,YAAA,IAAI,UAAU,EAAE;AACd,gBAAA,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC7B,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,EAAE,CAAA;AACR,aAAA;SACF;AACD,QAAA,CAAC,QAAQ,CAAC,GAAA;AACR,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;;YAEhC,IAAI,CAAC,KAAK,EAAE;gBACVA,QAAM,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AACnD,aAAA;;AAED,YAAA,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YAChC,UAAU,GAAG,IAAI,CAAA;YACjB,OAAO,CAAC,GAAI,CAAC,OAAQ,CAAC,SAAS,EAAE,MAAK;gBACpC,UAAU,GAAG,KAAK,CAAA;AAClB,gBAAA,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AAC3B,gBAAA,IAAI,WAAW,EAAE;AACf,oBAAA,WAAW,CAAC,GAAG,GAAG,IAAI,CAAA;oBACtB,WAAW,GAAG,IAAI,CAAA;AACnB,iBAAA;gBACD,IAAI,gBAAgB,CAAC,MAAM,EAAE;oBAC3B,gBAAgB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;oBACpC,gBAAgB,GAAG,EAAE,CAAA;AACtB,iBAAA;AACH,aAAC,CAAC,CAAA;SACH;AACD,QAAA,CAAC,OAAO,CAAC,GAAA;AACP,YAAA,SAAS,CAAC,IAAI,CAAC,MAAK;;AAElB,gBAAA,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;;AAErC,gBAAAE,IAAG,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACtD,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAA;AAC5B,aAAC,CAAC,CAAA;SACH;AACD,QAAA,CAAC,MAAM,CAAC,CAAE,OAAO,GAAG,EAAE,EAAA;AACpB,YAAA,SAAS,CAAC,IAAI,CAAC,MAAK;;AAElB,gBAAA,OAAO,CAAC,IAAI,GAAG,IAAW,CAAA;gBAC1B,gBAAgB,CAAC,IAAI,CAAC,CAAA;;gBAEtB,IAAI,CAAC,KAAK,EAAE;oBACVF,QAAM,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;AACxD,iBAAA;;gBAED,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;;AAE7C,gBAAAE,IAAG,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACvD,aAAC,CAAC,CAAA;SACH;AACD,QAAA,CAAC,MAAM,CAAC,GAAA;;YAEN,IAAI,CAAC,KAAK,EAAE;gBACVF,QAAM,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;AACxD,aAAA;;AAED,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;AACzB,gBAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;AACnB,gBAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAA;AACtB,aAAA;;AAED,YAAA,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;;YAEpC,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAA;SAC3C;KACF,CAAA;AAED,IAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;QAC/B,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,MAAK;YAC5C,OAAO,GAAG,IAAI,CAAA;AACd,YAAA,OAAO,EAAE,CAAA;AACX,SAAC,CAAC,CAAA;QACF,MAAM,CAAC,SAAS,CAAC,GAAG,YAAA;AAClB,YAAA,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC,CAAA;AACvE,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACrB,aAAA;AAAM,iBAAA;gBACL,OAAO,IAAI,EAAE,CAAA;AACd,aAAA;AACH,SAAC,CAAA;AACH,KAAC,CAAC,CAAA;;AAGF,IAAA,sBAAsB,CAAC,OAAO,CAAC,SAAS,IAAG;;QACzC,IAAI,SAAS,CAAC,SAAS,CAAC;AACtB,aAAA,CAAA,EAAA,GAAA,SAAS,CAAC,SAAS,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,CAAC,CAAA;YAChC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC7C,aAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA,EAChD;AACA,YAAA,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,GAAG,IAAI,EAAA;;gBACnC,MAAM,MAAM,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA;AAC9B,gBAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,EAAE,EAAE;AACd,oBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAA;oBACpB,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;AAC/C,oBAAA,IAAI,OAAO,EAAE;AACX,wBAAA,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;AACjC,qBAAA;AACF,iBAAA;gBACD,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAA;AACxD,aAAC,CAAA;AACF,SAAA;AACH,KAAC,CAAC,CAAA;AAEF,IAAA,MAAM,CAAC,EAAE,GAAG,YAAY,CAAA;AAExB,IAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AACtB,QAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;AACnB,KAAA;AAED,IAAA,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;AAEtC,IAAA,OAAO,MAAM,CAAA;AACf,CAAC;SAEe,qBAAqB,CAAE,SAA+B,EAAE,aAAsB,EAAE,IAA8B,EAAA;AAC5H,IAAA,MAAM,EAAE,GAAG,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,KAAA,CAAA,GAAb,aAAa,GAAI,CAAkB,eAAA,EAAA,MAAM,EAAE,CAAA,CAAE,CAAA;IACxD,IAAI,gBAAgB,GAA2B,IAAI,CAAA;AACnD,IAAA,MAAM,CAAE,QAAQ,EAAE,QAAQ,CAAE,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAE,CAAC,SAAS,CAAA;AAE5E,IAAA,MAAM,MAAM,GAAQ;AAClB,QAAA,CAAC,QAAQ,CAAC,GAAA;;AACR,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA,KAAI,MAAM,EAAE,CAAA;AAEjD,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YAElD,OAAO,CAAC,GAAI,CAAC,KAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAK;gBACxC,gBAAgB,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAkB,IAAI,CAAC,CAAA;AACrE,gBAAA,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,WAAW,CAAC,CAAA;gBAC9C,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACzC,gBAAA,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;gBAC1B,IAAI,CAAC,KAAK,EAAE;AACV,oBAAA,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAA;AAC3B,oBAAA,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;AACrC,iBAAA;AACH,aAAC,CAAC,CAAA;SACH;AACD,QAAA,CAAC,QAAQ,CAAC,GAAA;AACR,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YAElD,OAAO,CAAC,GAAI,CAAC,OAAQ,CAAC,IAAI,EAAE,MAAK;AAC/B,gBAAA,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACtB,gBAAA,IAAI,gBAAgB,EAAE;AACpB,oBAAA,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAA;AAC5B,iBAAA;AACH,aAAC,CAAC,CAAA;SACH;AACD,QAAA,OAAO,EAAE;AACP,YAAA,EAAE,EAAE,YAAY;AACjB,SAAA;KACF,CAAA;AAED,IAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AACtB,QAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;AACnB,KAAA;IAED,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;;QACnD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAA,EAAA,GAAA,SAAS,CAAC,GAAG,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,SAAS,CAAA;AAC3C,KAAC,CAAC,CAAA;AAEF,IAAA,OAAO,MAAM,CAAA;AACf,CAAC;AAEK,SAAU,8BAA8B,CAAE,aAAsB,EAAA;AACpE,IAAA,MAAM,eAAe,GAAG,aAAa,KAAK,cAAc,CAAA;AACxD,IAAA,MAAM,CAAE,QAAQ,EAAE,QAAQ,CAAE,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAE,CAAC,SAAS,CAAA;IAE5E,MAAM,UAAU,GAAG,eAAe;AAChC,UAAE;AACA,YAAA,CAAC,QAAQ,CAAC,GAAA;;gBACR,MAAM,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,MAAI,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAA,CAAA;AACzD,gBAAA,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzB,oBAAA,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;oBACzC,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;AACnD,oBAAA,IAAI,EAAE,EAAE;AACN,wBAAA,EAAE,CAAC,GAAG,GAAG,IAAI,CAAA;AACd,qBAAA;AACF,iBAAA;aACF;AACD,YAAA,CAAC,QAAQ,CAAC,GAAA;;gBACR,MAAM,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,MAAI,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAA,CAAA;AACzD,gBAAA,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzB,oBAAA,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;oBACtC,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;AACnD,oBAAA,IAAI,EAAE,EAAE;AACN,wBAAA,EAAE,CAAC,GAAG,GAAG,IAAI,CAAA;AACd,qBAAA;AACF,iBAAA;aACF;AACF,SAAA;UACC,SAAS,CAAA;AAEb,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,gCAAgC,EAAA,MAAA,CAAA,MAAA,CAAA,EAE9C,UAAU,EAAE;AACV,YAAA,CAAC,EAAE;AACD,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE;oBACL,CAAoB,IAAA,4BAAEI,oBAAkB,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI;AACxE,iBAAA;AACF,aAAA;AACD,YAAA,CAAC,EAAE;AACD,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,EAAE;AACV,aAAA;AACF,SAAA,EACD,OAAO,EAAE;AACP,YAAA,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,CAAC,eAAe;AAC9B,SAAA,EACD,OAAO,EAAE;AACP,YAAA,EAAE,EAAE,YAAY;AACjB,SAAA,EAAA,EACE,UAAU,CAAI,EAAA,EAAE,eAAe,EAAE,CAAC,CAAA;AAC3C;;AC5XA,MAAM,OAAO,GAAG,GAAG,CAAA;MAEN,QAAQ,GAAG,CAAC,EAAQ,EAAE,GAAyB,KAAI;AAC9D,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AAC5B,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAE7B,MAAM,SAAS,GAAG,MAAK;AACrB,QAAA,UAAU,CAAC,YAAA;AACT,YAAA,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAA;SAC1B,EAAE,CAAC,CAAC,CAAA;AACP,KAAC,CAAA;IAED,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,EAAE,CAAA;AAEvC,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAA;AAE7B;;;;;AAKG;AACH,IAAA,SAAS,IAAI,GAAA;;QACX,MAAM,WAAW,GAA2B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAkB,IAAI,CAAC,CAAA;AAC9F,QAAA,IAAI,WAAW,KAAX,IAAA,IAAA,WAAW,uBAAX,WAAW,CAAE,aAAa,EAAE;YAC9B,IAAI,aAAa,EAAE,EAAE;;AAEnB,gBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,WAAW,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,kBAAkB,CAAC,MAAK,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,IAAI,CAAC,MAAK;AACzD,oBAAA,SAAS,EAAE,CAAA;AACb,iBAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,SAAS,EAAE,CAAA;AAClB,aAAA;AAAM,iBAAA;AACL,gBAAA,WAAW,CAAC,qBAAqB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;AAC3C,aAAA;AACF,SAAA;aAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE;AAC3C,YAAA,SAAS,EAAE,CAAA;AACZ,SAAA;AAAM,aAAA;YACL,UAAU,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;AAC7B,SAAA;KACF;AAED,IAAA,IAAI,EAAE,CAAA;AACR;;;;"}
|
|
1
|
+
{"version":3,"file":"runtime.esm.js","sources":["../src/constants/index.ts","../src/dom-external/mutation-observer/implements.ts","../src/dom-external/mutation-observer/index.ts","../src/utils/index.ts","../src/dom/class-list.ts","../src/dom/event-source.ts","../src/env.ts","../src/hydrate.ts","../src/dom/event-target.ts","../src/dom/node.ts","../src/dom/style_properties.ts","../src/dom/style.ts","../src/dom/tree.ts","../src/dom/element.ts","../src/options.ts","../src/dom-external/inner-html/scaner.ts","../src/dom-external/inner-html/utils.ts","../src/dom-external/inner-html/style.ts","../src/dom-external/inner-html/tags.ts","../src/dom-external/inner-html/parser.ts","../src/dom-external/inner-html/html.ts","../src/dom-external/element.ts","../src/dom-external/node.ts","../src/dom-external/index.ts","../src/dom/event.ts","../src/dom/form.ts","../src/perf.ts","../src/dom/root.ts","../src/dom/text.ts","../src/bom/URLSearchParams.ts","../src/bom/URL.ts","../src/dom/anchor-element.ts","../src/dom/transfer.ts","../src/dom/document.ts","../src/bom/document.ts","../src/bom/getComputedStyle.ts","../src/emitter/emitter.ts","../src/utils/cache.ts","../src/bom/history.ts","../src/current.ts","../src/bom/location.ts","../src/bom/navigator.ts","../src/bom/raf.ts","../src/bom/window.ts","../src/dom/svg.ts","../src/dsl/common.ts","../src/next-tick.ts"],"sourcesContent":["export const PROPERTY_THRESHOLD = 2046\nexport const TARO_RUNTIME = 'Taro runtime'\nexport const HOOKS_APP_ID = 'taro-app'\nexport const SET_DATA = '小程序 setData'\nexport const PAGE_INIT = '页面初始化'\nexport const ROOT_STR = 'root'\nexport const HTML = 'html'\nexport const HEAD = 'head'\nexport const BODY = 'body'\nexport const APP = 'app'\nexport const CONTAINER = 'container'\nexport const DOCUMENT_ELEMENT_NAME = '#document'\nexport const DOCUMENT_FRAGMENT = 'document-fragment'\nexport const ID = 'id'\nexport const UID = 'uid'\nexport const CLASS = 'class'\nexport const STYLE = 'style'\nexport const FOCUS = 'focus'\nexport const VIEW = 'view'\nexport const STATIC_VIEW = 'static-view'\nexport const PURE_VIEW = 'pure-view'\nexport const PROPS = 'props'\nexport const DATASET = 'dataset'\nexport const OBJECT = 'object'\nexport const VALUE = 'value'\nexport const INPUT = 'input'\nexport const CHANGE = 'change'\nexport const CUSTOM_WRAPPER = 'custom-wrapper'\nexport const TARGET = 'target'\nexport const CURRENT_TARGET = 'currentTarget'\nexport const TYPE = 'type'\nexport const CONFIRM = 'confirm'\nexport const TIME_STAMP = 'timeStamp'\nexport const KEY_CODE = 'keyCode'\nexport const TOUCHMOVE = 'touchmove'\nexport const DATE = 'Date'\nexport const SET_TIMEOUT = 'setTimeout'\nexport const COMPILE_MODE = 'compileMode'\nexport const CATCHMOVE = 'catchMove'\nexport const CATCH_VIEW = 'catch-view'\nexport const COMMENT = 'comment'\nexport const ON_LOAD = 'onLoad'\nexport const ON_READY = 'onReady'\nexport const ON_SHOW = 'onShow'\nexport const ON_HIDE = 'onHide'\nexport const OPTIONS = 'options'\nexport const EXTERNAL_CLASSES = 'externalClasses'\nexport const EVENT_CALLBACK_RESULT = 'e_result'\nexport const BEHAVIORS = 'behaviors'\nexport const A = 'a'\n\n/**\n * 页面上下文切换时的行为\n */\nexport enum CONTEXT_ACTIONS {\n INIT = '0',\n RESTORE = '1',\n RECOVER = '2',\n DESTORY = '3'\n}\n","import { MutationRecordType } from './record'\n\nimport type { TaroNode } from '../../dom/node'\nimport type { MutationRecord } from './record'\n\nexport type MutationCallback = (mutations: MutationRecord[]) => any\n\n/**\n * @see https://dom.spec.whatwg.org/#dictdef-mutationobserverinit\n */\nexport interface MutationObserverInit {\n attributeFilter?: string[]\n attributeOldValue?: boolean\n attributes?: boolean\n characterData?: boolean\n characterDataOldValue?: boolean\n childList?: boolean\n subtree?: boolean\n}\n\nconst observers: MutationObserverImpl[] = []\n\n/**\n * The MutationObserver provides the ability\n * to watch for changes being made to the DOM tree.\n * It will invoke a specified callback function\n * when DOM changes occur.\n * @see https://dom.spec.whatwg.org/#mutationobserver\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver\n */\nexport class MutationObserverImpl {\n public callback: MutationCallback\n public target: TaroNode | null\n public options: MutationObserverInit\n public records: MutationRecord[] = []\n\n constructor (callback: MutationCallback) {\n this.callback = callback\n }\n\n /**\n * Configures the MutationObserver\n * to begin receiving notifications\n * through its callback function\n * when DOM changes matching the given options occur.\n *\n * Options matching is to be implemented.\n */\n observe (target: TaroNode, options?: MutationObserverInit): void {\n this.disconnect()\n this.target = target\n this.options = options || {}\n\n observers.push(this)\n }\n\n /**\n * Stop the MutationObserver instance\n * from receiving further notifications\n * until and unless observe() is called again.\n */\n disconnect (): void {\n this.target = null\n\n const index = observers.indexOf(this)\n if (index >= 0) {\n observers.splice(index, 1)\n }\n }\n\n /**\n * Removes all pending notifications\n * from the MutationObserver's notification queue\n * and returns them in a new Array of MutationRecord objects.\n */\n takeRecords (): MutationRecord[] {\n return this.records.splice(0, this.records.length)\n }\n}\n\n/** Match two TaroNodes by sid. */\nconst sidMatches = (\n observerTarget: TaroNode | null,\n target: TaroNode | null\n): boolean => {\n return !!observerTarget && observerTarget.sid === target?.sid\n}\n\nconst isConcerned = (record: MutationRecord, options: MutationObserverInit) => {\n const { characterData, characterDataOldValue, attributes, attributeOldValue, childList } = options\n switch (record.type) {\n case MutationRecordType.CHARACTER_DATA:\n if (characterData) {\n if (!characterDataOldValue) record.oldValue = null\n return true\n }\n return false\n case MutationRecordType.ATTRIBUTES:\n if (attributes) {\n if (!attributeOldValue) record.oldValue = null\n return true\n }\n return false\n case MutationRecordType.CHILD_LIST:\n if (childList) {\n return true\n }\n return false\n }\n}\n\nlet pendingMuatations = false\n\nfunction logMutation (observer: MutationObserverImpl, record: MutationRecord) {\n observer.records.push(record)\n if (!pendingMuatations) {\n pendingMuatations = true\n Promise\n .resolve()\n .then(() => {\n pendingMuatations = false\n observers.forEach(observer => {\n return observer.callback(observer.takeRecords())\n })\n })\n }\n}\n\nexport function recordMutation (record: MutationRecord) {\n observers.forEach(observer => {\n const { options } = observer\n for (let t: TaroNode | null = record.target; t; t = t.parentNode) {\n if (sidMatches(observer.target, t) && isConcerned(record, options)) {\n logMutation(observer, record)\n break\n }\n if (!options.subtree) break\n }\n })\n}\n","import { noop } from '@tarojs/shared'\n\nimport { MutationObserverImpl, recordMutation } from './implements'\nimport { MutationRecord, MutationRecordType } from './record'\n\nimport type { TaroNode } from '../../dom/node'\nimport type { MutationCallback, MutationObserverInit } from './implements'\n\ndeclare const ENABLE_MUTATION_OBSERVER: boolean\n\nexport class MutationObserver {\n core: Pick<MutationObserverImpl, 'observe' | 'disconnect' | 'takeRecords'>\n\n constructor (callback: MutationCallback) {\n if (ENABLE_MUTATION_OBSERVER) {\n this.core = new MutationObserverImpl(callback)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[Taro Warning] 若要使用 MutationObserver,请在 Taro 编译配置中设置 \\'mini.runtime.enableMutationObserver: true\\'')\n }\n this.core = {\n observe: noop,\n disconnect: noop,\n takeRecords: (noop as () => any)\n }\n }\n }\n\n public observe (...args: [TaroNode, MutationObserverInit?]) {\n this.core.observe(...args)\n }\n\n public disconnect () {\n this.core.disconnect()\n }\n\n public takeRecords () {\n return this.core.takeRecords()\n }\n\n static record (record: MutationRecord) {\n recordMutation(record)\n }\n}\n\nexport {\n MutationRecordType\n}\n","import {\n getComponentsAlias as _getComponentsAlias,\n internalComponents,\n isFunction,\n Shortcuts\n} from '@tarojs/shared'\n\nimport {\n CLASS,\n COMMENT,\n ID,\n ROOT_STR,\n STYLE,\n UID\n} from '../constants'\nimport { NodeType } from '../dom/node_types'\nimport { Func } from '../interface'\n\nimport type { TaroElement } from '../dom/element'\nimport type { TaroNode } from '../dom/node'\nimport type { TaroText } from '../dom/text'\n\nexport const incrementId = () => {\n const chatCodes: number[] = []\n // A-Z\n for (let i = 65; i <= 90; i++) {\n chatCodes.push(i)\n }\n // a-z\n for (let i = 97; i <= 122; i++) {\n chatCodes.push(i)\n }\n const chatCodesLen = chatCodes.length - 1\n const list = [0, 0]\n return () => {\n const target = list.map(item => chatCodes[item])\n const res = String.fromCharCode(...target)\n\n let tailIdx = list.length - 1\n\n list[tailIdx]++\n\n while (list[tailIdx] > chatCodesLen) {\n list[tailIdx] = 0\n tailIdx = tailIdx - 1\n if (tailIdx < 0) {\n list.push(0)\n break\n }\n list[tailIdx]++\n }\n\n return res\n }\n}\n\nexport function isElement (node: TaroNode): node is TaroElement {\n return node.nodeType === NodeType.ELEMENT_NODE\n}\n\nexport function isText (node: TaroNode): node is TaroText {\n return node.nodeType === NodeType.TEXT_NODE\n}\n\nexport function isComment (node: TaroNode): boolean {\n return node.nodeName === COMMENT\n}\n\nexport function isHasExtractProp (el: TaroElement): boolean {\n const res = Object.keys(el.props).find(prop => {\n return !(/^(class|style|id)$/.test(prop) || prop.startsWith('data-'))\n })\n return Boolean(res)\n}\n\n/**\n * 往上寻找组件树直到 root,寻找是否有祖先组件绑定了同类型的事件\n * @param node 当前组件\n * @param type 事件类型\n */\nexport function isParentBinded (node: TaroElement | null, type: string): boolean {\n while ((node = node?.parentElement || null)) {\n if (!node || node.nodeName === ROOT_STR || node.nodeName === 'root-portal') {\n return false\n } else if (node.__handlers[type]?.length) {\n return true\n }\n }\n\n return false\n}\n\nexport function shortcutAttr (key: string): string {\n switch (key) {\n case STYLE:\n return Shortcuts.Style\n case ID:\n return UID\n case CLASS:\n return Shortcuts.Class\n default:\n return key\n }\n}\n\nexport const customWrapperCache = new Map<string, Record<string, any>>()\n\ninterface Ctor {\n new (...args: any[]): any\n}\n\nexport function extend (ctor: Ctor, methodName: string, options: Func | Record<string, any>) {\n if (isFunction(options)) {\n options = {\n value: options\n }\n }\n Object.defineProperty(ctor.prototype, methodName, {\n configurable: true,\n enumerable: true,\n ...options\n })\n}\n\nlet componentsAlias\nexport function getComponentsAlias () {\n if (!componentsAlias) {\n componentsAlias = _getComponentsAlias(internalComponents)\n }\n return componentsAlias\n}\n\nexport function convertNumber2PX (value: number) {\n return value + 'px'\n}\n","import type { TaroElement } from './element'\n\nexport class ClassList {\n private el: TaroElement\n\n private tokenList: string[] = []\n\n constructor (className: string, el: TaroElement) {\n this.el = el\n className.trim().split(/\\s+/).forEach(token => this.tokenList.push(token))\n }\n\n public get value () {\n return this.toString()\n }\n\n public get length () {\n return this.tokenList.length\n }\n\n add () {\n let index = 0\n let updated = false\n\n const tokens = arguments\n const length = tokens.length\n const tokenList = this.tokenList\n\n do {\n const token: string = tokens[index]\n\n if (this.checkTokenIsValid(token) && !~tokenList.indexOf(token)) {\n tokenList.push(token)\n\n updated = true\n }\n } while (++index < length)\n\n if (updated) {\n this._update()\n }\n }\n\n remove () {\n let i = 0\n let updated = false\n\n const tokens = arguments\n const length = tokens.length\n const tokenList = this.tokenList\n\n do {\n const token = tokens[i] + ''\n\n if (!this.checkTokenIsValid(token)) continue\n\n const index = tokenList.indexOf(token)\n\n if (~tokenList.indexOf(token)) {\n tokenList.splice(index, 1)\n\n updated = true\n }\n } while (++i < length)\n\n if (updated) {\n this._update()\n }\n }\n\n contains (token: string) {\n if (!this.checkTokenIsValid(token)) return false\n\n return !!~this.tokenList.indexOf(token)\n }\n\n toggle (token: string, force: boolean) {\n const result = this.contains(token)\n const method = result ? force !== true && 'remove' : force !== false && 'add'\n\n if (method) {\n // @ts-ignore\n this[method](token)\n }\n\n if (force === true || force === false) {\n return force\n } else {\n return !result\n }\n }\n\n replace (token: string, replacement_token: string) {\n if (!this.checkTokenIsValid(token) || !this.checkTokenIsValid(replacement_token)) return\n\n const index = this.tokenList.indexOf(token)\n\n if (~index) {\n this.tokenList.splice(index, 1, replacement_token)\n\t\t this._update()\n }\n }\n\n toString () {\n\t return this.tokenList.filter(v => v !== '').join(' ')\n }\n\n private checkTokenIsValid (token: string) {\n if (token === '' || /\\s/.test(token)) return false\n\n return true\n }\n\n private _update () {\n this.el.className = this.value\n }\n}\n","import type { TaroNode } from './node'\n\ninterface IEventSource extends Map<string | undefined | null, TaroNode> {\n removeNode (child: TaroNode): void\n removeNodeTree (child: TaroNode): void\n}\n\nclass EventSource extends Map {\n removeNode (child: TaroNode) {\n const { sid, uid } = child\n this.delete(sid)\n if (uid !== sid && uid) this.delete(uid)\n }\n\n removeNodeTree (child: TaroNode) {\n this.removeNode(child)\n const { childNodes } = child\n childNodes.forEach(node => this.removeNodeTree(node))\n }\n}\n\nexport const eventSource: IEventSource = new EventSource()\n","import { EMPTY_OBJ, isWebPlatform } from '@tarojs/shared'\n\nimport type { TaroDocument } from './dom/document'\n\ninterface Env {\n window\n document: TaroDocument\n}\n\nconst isWeb = isWebPlatform()\nconst env: Env = {\n window: isWeb ? window : EMPTY_OBJ,\n document: isWeb ? document : EMPTY_OBJ\n}\n\nexport default env\n","import { hooks, Shortcuts, toCamelCase } from '@tarojs/shared'\n\nimport {\n CATCH_VIEW,\n CATCHMOVE,\n CLASS,\n COMPILE_MODE,\n ID,\n PURE_VIEW,\n STYLE,\n VIEW\n} from './constants'\nimport { getComponentsAlias, isComment, isHasExtractProp, isText } from './utils'\n\nimport type { TaroElement } from './dom/element'\nimport type { TaroText } from './dom/text'\nimport type { MiniData, MiniElementData } from './interface'\n\nlet SPECIAL_NODES\nlet componentsAlias\n\n/**\n * React also has a fancy function's name for this: `hydrate()`.\n * You may have been heard `hydrate` as a SSR-related function,\n * actually, `hydrate` basicly do the `render()` thing, but ignore some properties,\n * it's a vnode traverser and modifier: that's exactly what Taro's doing in here.\n */\nexport function hydrate (node: TaroElement | TaroText): MiniData {\n // 初始化 componentsAlias\n componentsAlias ||= getComponentsAlias()\n\n // 初始化 SPECIAL_NODES\n SPECIAL_NODES ||= hooks.call('getSpecialNodes')!\n\n const nodeName = node.nodeName\n\n if (isText(node)) {\n return {\n sid: node.sid,\n [Shortcuts.Text]: node.nodeValue,\n [Shortcuts.NodeName]: componentsAlias[nodeName]?._num || '8'\n }\n }\n\n const data: MiniElementData = {\n [Shortcuts.NodeName]: nodeName,\n sid: node.sid\n }\n\n if (node.uid !== node.sid) {\n data.uid = node.uid\n }\n\n if (!node.isAnyEventBinded() && SPECIAL_NODES.indexOf(nodeName) > -1) {\n data[Shortcuts.NodeName] = `static-${nodeName}`\n if (nodeName === VIEW && !isHasExtractProp(node)) {\n data[Shortcuts.NodeName] = PURE_VIEW\n }\n }\n\n const { props } = node\n for (const prop in props) {\n const propInCamelCase = toCamelCase(prop)\n if (\n !prop.startsWith('data-') && // 在 node.dataset 的数据\n prop !== CLASS &&\n prop !== STYLE &&\n prop !== ID &&\n propInCamelCase !== CATCHMOVE &&\n propInCamelCase !== COMPILE_MODE\n ) {\n data[propInCamelCase] = props[prop]\n }\n if (nodeName === VIEW && propInCamelCase === CATCHMOVE && props[prop] !== false) {\n data[Shortcuts.NodeName] = CATCH_VIEW\n }\n if (propInCamelCase === COMPILE_MODE) {\n data[Shortcuts.NodeName] = props[prop]\n }\n }\n\n // Children\n data[Shortcuts.Childnodes] = node.childNodes.filter(node => !isComment(node)).map(hydrate)\n\n if (node.className !== '') {\n data[Shortcuts.Class] = node.className\n }\n\n const cssText = node.cssText\n if (cssText !== '' && nodeName !== 'swiper-item') {\n data[Shortcuts.Style] = cssText\n }\n\n hooks.call('modifyHydrateData', data, node)\n\n const nn = data[Shortcuts.NodeName]\n const componentAlias = componentsAlias[nn]\n if (componentAlias) {\n data[Shortcuts.NodeName] = componentAlias._num\n for (const prop in data) {\n if (prop in componentAlias) {\n data[componentAlias[prop]] = data[prop]\n delete data[prop]\n }\n }\n }\n\n const resData = hooks.call('transferHydrateData', data, node, componentAlias)\n\n return resData || data\n}\n","import { hooks, isArray, isObject, warn } from '@tarojs/shared'\n\nimport type { AddEventListenerOptions, EventHandler } from '../interface'\n\nexport class TaroEventTarget {\n public __handlers: Record<string, EventHandler[]> = {}\n\n public addEventListener (type: string, handler: EventHandler, options?: boolean | AddEventListenerOptions) {\n type = type.toLowerCase()\n\n hooks.call('onAddEvent', type, handler, options, this)\n\n if (type === 'regionchange') {\n // map 组件的 regionchange 事件非常特殊,详情:https://github.com/NervJS/taro/issues/5766\n this.addEventListener('begin', handler, options)\n this.addEventListener('end', handler, options)\n return\n }\n\n let isCapture = Boolean(options)\n let isOnce = false\n if (isObject<AddEventListenerOptions>(options)) {\n isCapture = Boolean(options.capture)\n isOnce = Boolean(options.once)\n }\n\n if (isOnce) {\n const wrapper = function () {\n handler.apply(this, arguments) // this 指向 Element\n this.removeEventListener(type, wrapper)\n }\n this.addEventListener(type, wrapper, {\n ...(options as AddEventListenerOptions),\n once: false\n })\n return\n }\n\n process.env.NODE_ENV !== 'production' && warn(isCapture, 'Taro 暂未实现 event 的 capture 特性。')\n\n // 某些框架,如 PReact 有委托的机制,handler 始终是同一个函数\n // 这会导致多层停止冒泡失败:view -> view(handler.stop = false) -> view(handler.stop = true)\n // 这样解决:view -> view(handlerA.stop = false) -> view(handlerB.stop = false)\n // 因此每次绑定事件都新建一个函数,如果带来了性能问题,可以把这段逻辑抽取到 PReact 插件中。\n const oldHandler = handler\n handler = function () {\n return oldHandler.apply(this, arguments) // this 指向 Element\n }\n ;(handler as any).oldHandler = oldHandler\n\n const handlers = this.__handlers[type]\n if (isArray(handlers)) {\n handlers.push(handler)\n } else {\n this.__handlers[type] = [handler]\n }\n }\n\n public removeEventListener (type: string, handler: EventHandler) {\n type = type.toLowerCase()\n\n if (type === 'regionchange') {\n // map 组件的 regionchange 事件非常特殊,详情:https://github.com/NervJS/taro/issues/5766\n this.removeEventListener('begin', handler)\n this.removeEventListener('end', handler)\n return\n }\n\n if (!handler) {\n return\n }\n\n const handlers = this.__handlers[type]\n if (!isArray(handlers)) {\n return\n }\n\n const index = handlers.findIndex(item => {\n if (item === handler || (item as any).oldHandler === handler) return true\n })\n\n process.env.NODE_ENV !== 'production' && warn(index === -1, `事件: '${type}' 没有注册在 DOM 中,因此不会被移除。`)\n\n handlers.splice(index, 1)\n }\n\n public isAnyEventBinded (): boolean {\n const handlers = this.__handlers\n const isAnyEventBinded = Object.keys(handlers).find(key => handlers[key].length)\n return Boolean(isAnyEventBinded)\n }\n}\n","import { ensure, hooks, Shortcuts } from '@tarojs/shared'\n\nimport { DOCUMENT_FRAGMENT } from '../constants'\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport env from '../env'\nimport { hydrate } from '../hydrate'\nimport { extend, incrementId, isComment } from '../utils'\nimport { eventSource } from './event-source'\nimport { TaroEventTarget } from './event-target'\nimport { NodeType } from './node_types'\n\nimport type { Func, UpdatePayload } from '../interface'\nimport type { TaroDocument } from './document'\nimport type { TaroElement } from './element'\nimport type { TaroRootElement } from './root'\n\ninterface RemoveChildOptions {\n cleanRef?: boolean\n doUpdate?: boolean\n}\n\nconst CHILDNODES = Shortcuts.Childnodes\nconst nodeId = incrementId()\n\nexport class TaroNode extends TaroEventTarget {\n public uid: string\n public sid: string\n public nodeType: NodeType\n public nodeName: string\n public parentNode: TaroNode | null = null\n public childNodes: TaroNode[] = []\n\n public constructor () {\n super()\n this.uid = '_' + nodeId() // dom 节点 id,开发者可修改\n this.sid = this.uid // dom 节点全局唯一 id,不可被修改\n eventSource.set(this.sid, this)\n }\n\n private hydrate = (node: TaroNode) => () => hydrate(node as TaroElement)\n\n private updateChildNodes (isClean?: boolean) {\n const cleanChildNodes = () => []\n const rerenderChildNodes = () => {\n const childNodes = this.childNodes.filter(node => !isComment(node))\n return childNodes.map(hydrate)\n }\n\n this.enqueueUpdate({\n path: `${this._path}.${CHILDNODES}`,\n value: isClean ? cleanChildNodes : rerenderChildNodes\n })\n }\n\n private updateSingleChild (index: number) {\n this.childNodes.forEach((child, childIndex) => {\n if (isComment(child)) return\n\n if (index && childIndex < index) return\n\n this.enqueueUpdate({\n path: child._path,\n value: this.hydrate(child)\n })\n })\n }\n\n public get _root (): TaroRootElement | null {\n return this.parentNode?._root || null\n }\n\n protected findIndex (refChild: TaroNode): number {\n const index = this.childNodes.indexOf(refChild)\n\n ensure(index !== -1, 'The node to be replaced is not a child of this node.')\n\n return index\n }\n\n public get _path (): string {\n const parentNode = this.parentNode\n\n if (parentNode) {\n // 计算路径时,先过滤掉 comment 节点\n const list = parentNode.childNodes.filter(node => !isComment(node))\n const indexOfNode = list.indexOf(this)\n const index = hooks.call('getPathIndex', indexOfNode)\n\n return `${parentNode._path}.${CHILDNODES}.${index}`\n }\n\n return ''\n }\n\n public get nextSibling (): TaroNode | null {\n const parentNode = this.parentNode\n return parentNode?.childNodes[parentNode.findIndex(this) + 1] || null\n }\n\n public get previousSibling (): TaroNode | null {\n const parentNode = this.parentNode\n return parentNode?.childNodes[parentNode.findIndex(this) - 1] || null\n }\n\n public get parentElement (): TaroElement | null {\n const parentNode = this.parentNode\n if (parentNode?.nodeType === NodeType.ELEMENT_NODE) {\n return parentNode as TaroElement\n }\n return null\n }\n\n public get firstChild (): TaroNode | null {\n return this.childNodes[0] || null\n }\n\n public get lastChild (): TaroNode | null {\n const childNodes = this.childNodes\n return childNodes[childNodes.length - 1] || null\n }\n\n /**\n * @textContent 目前只能置空子元素\n * @TODO 等待完整 innerHTML 实现\n */\n // eslint-disable-next-line accessor-pairs\n public set textContent (text: string) {\n const removedNodes = this.childNodes.slice()\n const addedNodes: TaroNode[] = []\n\n // Handle old children' data structure & ref\n while (this.firstChild) {\n this.removeChild(this.firstChild, { doUpdate: false })\n }\n\n if (text === '') {\n this.updateChildNodes(true)\n } else {\n const newText = env.document.createTextNode(text)\n addedNodes.push(newText)\n this.appendChild(newText)\n this.updateChildNodes()\n }\n\n // @Todo: appendChild 会多触发一次\n MutationObserver.record({\n type: MutationRecordType.CHILD_LIST,\n target: this,\n removedNodes,\n addedNodes\n })\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/insertBefore\n * @scenario\n * [A,B,C]\n * 1. insert D before C, D has no parent\n * 2. insert D before C, D has the same parent of C\n * 3. insert D before C, D has the different parent of C\n */\n public insertBefore<T extends TaroNode> (newChild: T, refChild?: TaroNode | null, isReplace?: boolean): T {\n if (newChild.nodeName === DOCUMENT_FRAGMENT) {\n newChild.childNodes.reduceRight((previousValue, currentValue) => {\n this.insertBefore(currentValue, previousValue)\n return currentValue\n }, refChild)\n return newChild\n }\n\n // Parent release newChild\n // - cleanRef: false (No need to clean eventSource, because newChild is about to be inserted)\n // - update: true (Need to update parent.childNodes, because parent.childNodes is reordered)\n newChild.remove({ cleanRef: false })\n\n let index = 0\n // Data structure\n newChild.parentNode = this\n if (refChild) {\n // insertBefore & replaceChild\n index = this.findIndex(refChild)\n this.childNodes.splice(index, 0, newChild)\n } else {\n // appendChild\n this.childNodes.push(newChild)\n }\n\n const childNodesLength = this.childNodes.length\n // Serialization\n if (this._root) {\n if (!refChild) {\n // appendChild\n const isOnlyChild = childNodesLength === 1\n if (isOnlyChild) {\n this.updateChildNodes()\n } else {\n this.enqueueUpdate({\n path: newChild._path,\n value: this.hydrate(newChild)\n })\n }\n } else if (isReplace) {\n // replaceChild\n this.enqueueUpdate({\n path: newChild._path,\n value: this.hydrate(newChild)\n })\n } else {\n // insertBefore 有两种更新模式\n // 比方说有 A B C 三个节点,现在要在 C 前插入 D\n // 1. 插入 D,然后更新整个父节点的 childNodes 数组\n // setData({ cn: [A, B, D, C] })\n // 2. 插入 D,然后更新 D 以及 D 之后每个节点的数据\n // setData ({\n // cn.[2]: D,\n // cn.[3]: C,\n // })\n // 由于微信解析 ’cn.[2]‘ 这些路径的时候也需要消耗时间,\n // 所以根据 insertBefore 插入的位置来做不同的处理\n const mark = childNodesLength * 2 / 3\n if (mark > index) {\n // 如果 insertBefore 的位置在 childNodes 的 2/3 前,则为了避免解析路径消耗过多的时间,采用第一种方式\n this.updateChildNodes()\n } else {\n // 如果 insertBefore 的位置在 childNodes 的 2/3 之后,则采用第二种方式,避免 childNodes 的全量更新\n this.updateSingleChild(index)\n }\n }\n }\n\n MutationObserver.record({\n type: MutationRecordType.CHILD_LIST,\n target: this,\n addedNodes: [newChild],\n removedNodes: isReplace\n ? [refChild as TaroNode] /** replaceChild */\n : [],\n nextSibling: isReplace\n ? (refChild as TaroNode).nextSibling /** replaceChild */\n : (refChild || null), /** insertBefore & appendChild */\n previousSibling: newChild.previousSibling\n })\n\n return newChild\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/appendChild\n * @scenario\n * [A,B,C]\n * 1. append C, C has no parent\n * 2. append C, C has the same parent of B\n * 3. append C, C has the different parent of B\n */\n public appendChild (newChild: TaroNode) {\n return this.insertBefore(newChild)\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/replaceChild\n * @scenario\n * [A,B,C]\n * 1. replace B with C, C has no parent\n * 2. replace B with C, C has no parent, C has the same parent of B\n * 3. replace B with C, C has no parent, C has the different parent of B\n */\n public replaceChild (newChild: TaroNode, oldChild: TaroNode) {\n if (oldChild.parentNode !== this) return\n\n // Insert the newChild\n this.insertBefore(newChild, oldChild, true)\n\n // Destroy the oldChild\n // - cleanRef: true (Need to clean eventSource, because the oldChild was detached from the DOM tree)\n // - update: false (No need to update parent.childNodes, because replace will not cause the parent.childNodes being reordered)\n oldChild.remove({ doUpdate: false })\n\n return oldChild\n }\n\n /**\n * @doc https://developer.mozilla.org/zh-CN/docs/Web/API/Node/removeChild\n * @scenario\n * [A,B,C]\n * 1. remove A or B\n * 2. remove C\n */\n public removeChild<T extends TaroNode> (child: T, options: RemoveChildOptions = {}): T {\n const { cleanRef, doUpdate } = options\n\n if (cleanRef !== false && doUpdate !== false) {\n // appendChild/replaceChild/insertBefore 不应该触发\n // @Todo: 但其实如果 newChild 的父节点是另一颗子树的节点,应该是要触发的\n MutationObserver.record({\n type: MutationRecordType.CHILD_LIST,\n target: this,\n removedNodes: [child],\n nextSibling: child.nextSibling,\n previousSibling: child.previousSibling\n })\n }\n\n // Data Structure\n const index = this.findIndex(child)\n this.childNodes.splice(index, 1)\n child.parentNode = null\n\n // Set eventSource\n if (cleanRef !== false) {\n eventSource.removeNodeTree(child)\n }\n\n // Serialization\n if (this._root && doUpdate !== false) {\n this.updateChildNodes()\n }\n\n return child\n }\n\n public remove (options?: RemoveChildOptions) {\n this.parentNode?.removeChild(this, options)\n }\n\n public hasChildNodes () {\n return this.childNodes.length > 0\n }\n\n public enqueueUpdate (payload: UpdatePayload) {\n this._root?.enqueueUpdate(payload)\n }\n\n public get ownerDocument (): TaroDocument {\n return env.document\n }\n\n static extend (methodName: string, options: Func | Record<string, any>) {\n extend(TaroNode, methodName, options)\n }\n}\n","/*\n *\n * https://www.w3.org/Style/CSS/all-properties.en.html\n */\n\nconst WEBKIT = 'webkit'\n\nconst styleProperties = [\n 'all',\n 'appearance',\n 'blockOverflow',\n 'blockSize',\n 'bottom',\n 'clear',\n 'contain',\n 'content',\n 'continue',\n 'cursor',\n 'direction',\n 'display',\n 'filter',\n 'float',\n 'gap',\n 'height',\n 'inset',\n 'isolation',\n 'left',\n 'letterSpacing',\n 'lightingColor',\n 'markerSide',\n 'mixBlendMode',\n 'opacity',\n 'order',\n 'position',\n 'quotes',\n 'resize',\n 'right',\n 'rowGap',\n 'tabSize',\n 'tableLayout',\n 'top',\n 'userSelect',\n 'verticalAlign',\n 'visibility',\n 'voiceFamily',\n 'volume',\n 'whiteSpace',\n 'widows',\n 'width',\n 'zIndex',\n 'pointerEvents',\n 'aspectRatio'\n\n /** 非常用 style */\n // 'azimuth',\n // 'backfaceVisibility',\n // 'baselineShift',\n // 'captionSide',\n // 'chains',\n // 'dominantBaseline',\n // 'elevation',\n // 'emptyCells',\n // 'forcedColorAdjust',\n // 'glyphOrientationVertical',\n // 'hangingPunctuation',\n // 'hyphenateCharacter',\n // 'hyphens',\n // 'imageOrientation',\n // 'imageResolution',\n // 'orphans',\n // 'playDuring',\n // 'pointerEvents',\n // 'regionFragment',\n // 'richness',\n // 'running',\n // 'scrollBehavior',\n // 'speechRate',\n // 'stress',\n // 'stringSet',\n // 'unicodeBidi',\n // 'willChange',\n // 'writingMode',\n]\n\n// 减少文件体积\nfunction combine (prefix: string, list: string[], excludeSelf?: boolean) {\n !excludeSelf && styleProperties.push(prefix)\n list.forEach(item => {\n styleProperties.push(prefix + item)\n if (prefix === WEBKIT) {\n styleProperties.push('Webkit' + item)\n }\n })\n}\n\nconst color = 'Color'\nconst style = 'Style'\nconst width = 'Width'\nconst image = 'Image'\nconst size = 'Size'\nconst color_style_width = [color, style, width]\nconst fitlength_fitwidth_image = ['FitLength', 'FitWidth', image]\nconst fitlength_fitwidth_image_radius = [...fitlength_fitwidth_image, 'Radius']\nconst color_style_width_fitlength_fitwidth_image = [...color_style_width, ...fitlength_fitwidth_image]\nconst endRadius_startRadius = ['EndRadius', 'StartRadius']\nconst bottom_left_right_top = ['Bottom', 'Left', 'Right', 'Top']\nconst end_start = ['End', 'Start']\nconst content_items_self = ['Content', 'Items', 'Self']\nconst blockSize_height_inlineSize_width = ['BlockSize', 'Height', 'InlineSize', width]\nconst after_before = ['After', 'Before']\n\ncombine('borderBlock', color_style_width)\ncombine('borderBlockEnd', color_style_width)\ncombine('borderBlockStart', color_style_width)\ncombine('outline', [...color_style_width, 'Offset'])\ncombine('border', [...color_style_width, 'Boundary', 'Break', 'Collapse', 'Radius', 'Spacing'])\ncombine('borderFit', ['Length', width])\ncombine('borderInline', color_style_width)\ncombine('borderInlineEnd', color_style_width)\ncombine('borderInlineStart', color_style_width)\ncombine('borderLeft', color_style_width_fitlength_fitwidth_image)\ncombine('borderRight', color_style_width_fitlength_fitwidth_image)\ncombine('borderTop', color_style_width_fitlength_fitwidth_image)\ncombine('borderBottom', color_style_width_fitlength_fitwidth_image)\ncombine('textDecoration', [color, style, 'Line'])\ncombine('textEmphasis', [color, style, 'Position'])\ncombine('scrollMargin', bottom_left_right_top)\ncombine('scrollPadding', bottom_left_right_top)\ncombine('padding', bottom_left_right_top)\ncombine('margin', [...bottom_left_right_top, 'Trim'])\ncombine('scrollMarginBlock', end_start)\ncombine('scrollMarginInline', end_start)\ncombine('scrollPaddingBlock', end_start)\ncombine('scrollPaddingInline', end_start)\ncombine('gridColumn', end_start)\ncombine('gridRow', end_start)\ncombine('insetBlock', end_start)\ncombine('insetInline', end_start)\ncombine('marginBlock', end_start)\ncombine('marginInline', end_start)\ncombine('paddingBlock', end_start)\ncombine('paddingInline', end_start)\ncombine('pause', after_before)\ncombine('cue', after_before)\ncombine('mask', ['Clip', 'Composite', image, 'Mode', 'Origin', 'Position', 'Repeat', size, 'Type'])\ncombine('borderImage', ['Outset', 'Repeat', 'Slice', 'Source', 'Transform', width])\ncombine('maskBorder', ['Mode', 'Outset', 'Repeat', 'Slice', 'Source', width])\ncombine('font', ['Family', 'FeatureSettings', 'Kerning', 'LanguageOverride', 'MaxSize', 'MinSize', 'OpticalSizing', 'Palette', size, 'SizeAdjust', 'Stretch', style, 'Weight', 'VariationSettings'])\ncombine('transform', ['Box', 'Origin', style])\ncombine('background', [color, image, 'Attachment', 'BlendMode', 'Clip', 'Origin', 'Position', 'Repeat', size])\ncombine('listStyle', [image, 'Position', 'Type'])\ncombine('scrollSnap', ['Align', 'Stop', 'Type'])\ncombine('grid', ['Area', 'AutoColumns', 'AutoFlow', 'AutoRows'])\ncombine('gridTemplate', ['Areas', 'Columns', 'Rows'])\ncombine('overflow', ['Block', 'Inline', 'Wrap', 'X', 'Y'])\ncombine('transition', ['Delay', 'Duration', 'Property', 'TimingFunction'])\ncombine('color', ['Adjust', 'InterpolationFilters', 'Scheme'])\ncombine('textAlign', ['All', 'Last'])\ncombine('page', ['BreakAfter', 'BreakBefore', 'BreakInside'])\ncombine('animation', ['Delay', 'Direction', 'Duration', 'FillMode', 'IterationCount', 'Name', 'PlayState', 'TimingFunction'])\ncombine('flex', ['Basis', 'Direction', 'Flow', 'Grow', 'Shrink', 'Wrap'])\ncombine('offset', [...after_before, ...end_start, 'Anchor', 'Distance', 'Path', 'Position', 'Rotate'])\ncombine('perspective', ['Origin'])\ncombine('clip', ['Path', 'Rule'])\ncombine('flow', ['From', 'Into'])\n\ncombine('align', ['Content', 'Items', 'Self'], true)\ncombine('alignment', ['Adjust', 'Baseline'], true)\ncombine('borderStart', endRadius_startRadius, true)\ncombine('borderEnd', endRadius_startRadius, true)\ncombine('borderCorner', ['Fit', image, 'ImageTransform'], true)\ncombine('borderTopLeft', fitlength_fitwidth_image_radius, true)\ncombine('borderTopRight', fitlength_fitwidth_image_radius, true)\ncombine('borderBottomLeft', fitlength_fitwidth_image_radius, true)\ncombine('borderBottomRight', fitlength_fitwidth_image_radius, true)\ncombine('column', ['s', 'Count', 'Fill', 'Gap', 'Rule', 'RuleColor', 'RuleStyle', 'RuleWidth', 'Span', width], true)\ncombine('break', [...after_before, 'Inside'], true)\ncombine('wrap', [...after_before, 'Flow', 'Inside', 'Through'], true)\ncombine('justify', content_items_self, true)\ncombine('place', content_items_self, true)\ncombine('max', [...blockSize_height_inlineSize_width, 'Lines'], true)\ncombine('min', blockSize_height_inlineSize_width, true)\ncombine('line', ['Break', 'Clamp', 'Grid', 'Height', 'Padding', 'Snap'], true)\ncombine('inline', ['BoxAlign', size, 'Sizing'], true)\ncombine('text', ['CombineUpright', 'GroupAlign', 'Height', 'Indent', 'Justify', 'Orientation', 'Overflow', 'Shadow', 'SpaceCollapse', 'SpaceTrim', 'Spacing', 'Transform', 'UnderlinePosition', 'Wrap'], true)\ncombine('shape', ['ImageThreshold', 'Inside', 'Margin', 'Outside'], true)\ncombine('word', ['Break', 'Spacing', 'Wrap'], true)\ncombine('object', ['Fit', 'Position'], true)\ncombine('box', ['DecorationBreak', 'Shadow', 'Sizing', 'Snap'], true)\n\ncombine(WEBKIT, ['LineClamp', 'BoxOrient', 'TextFillColor', 'TextStroke', 'TextStrokeColor', 'TextStrokeWidth'], true)\n\n/** 非常用 style */\n// combine('caret', [color, 'Shape'])\n// combine('counter', ['Increment', 'Reset', 'Set'], true)\n// combine('dropInitial', ['AfterAdjust', 'AfterAlign', 'BeforeAdjust', 'BeforeAlign', size, 'Value'], true)\n// combine('flood', [color, 'Opacity'], true)\n// combine('footnote', ['Display', 'Policy'], true)\n// combine('hyphenateLimit', ['Chars', 'Last', 'Lines', 'Zone'], true)\n// combine('initialLetters', ['Align', 'Wrap'])\n// combine('ruby', ['Align', 'Merge', 'Position'], true)\n// combine('lineStacking', ['Ruby', 'Shift', 'Strategy'])\n// combine('bookmark', ['Label', 'Level', 'State'], true)\n// combine('speak', ['Header', 'Numeral', 'Punctuation'])\n// combine('pitch', ['Range'])\n// combine('nav', ['Down', 'Left', 'Right', 'Up'], true)\n// combine('fontSynthesis', ['SmallCaps', style, 'Weight'])\n// combine('fontVariant', ['Alternates', 'Caps', 'EastAsian', 'Emoji', 'Ligatures', 'Numeric', 'Position'])\n\nexport { styleProperties }\n","import { hooks, isArray, isNull, isString, isUndefined, Shortcuts, toCamelCase, toDashed, warn } from '@tarojs/shared'\n\nimport { PROPERTY_THRESHOLD } from '../constants'\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport { TaroElement } from './element'\nimport { styleProperties } from './style_properties'\n\nfunction recordCss (obj: Style) {\n MutationObserver.record({\n type: MutationRecordType.ATTRIBUTES,\n target: obj._element,\n attributeName: 'style',\n oldValue: obj.cssText\n })\n}\n\nfunction enqueueUpdate (obj: Style) {\n const element = obj._element\n if (element._root) {\n element.enqueueUpdate({\n path: `${element._path}.${Shortcuts.Style}`,\n value: obj.cssText\n })\n }\n}\n\nfunction setStyle (this: Style, newVal: string, styleKey: string) {\n process.env.NODE_ENV !== 'production' && warn(\n isString(newVal) && newVal.length > PROPERTY_THRESHOLD,\n `Style 属性 ${styleKey} 的值数据量过大,可能会影响渲染性能,考虑使用 CSS 类或其它方案替代。`\n )\n\n const old = this[styleKey]\n\n if (old === newVal) return\n\n !this._pending && recordCss(this)\n\n if (isNull(newVal) || isUndefined(newVal) || newVal === '') {\n this._usedStyleProp.delete(styleKey)\n delete this._value[styleKey]\n } else {\n this._usedStyleProp.add(styleKey)\n this._value[styleKey] = newVal\n }\n\n !this._pending && enqueueUpdate(this)\n}\n\nfunction initStyle (ctor: typeof Style, styleProperties: string[]) {\n const properties = {}\n\n for (let i = 0; i < styleProperties.length; i++) {\n const styleKey = styleProperties[i]\n\n if (ctor[styleKey]) return\n\n properties[styleKey] = {\n get (this: Style) {\n const val = this._value[styleKey]\n return isNull(val) || isUndefined(val) ? '' : val\n },\n set (this: Style, newVal: string) {\n setStyle.call(this, newVal, styleKey)\n }\n }\n }\n\n Object.defineProperties(ctor.prototype, properties)\n}\n\nfunction isCssVariable (propertyName) {\n return /^--/.test(propertyName)\n}\n\nexport class Style {\n public _pending: boolean\n\n public _usedStyleProp: Set<string>\n\n public _value: Partial<CSSStyleDeclaration>\n\n public _element: TaroElement\n\n public constructor (element: TaroElement) {\n this._element = element\n this._usedStyleProp = new Set()\n this._value = {}\n }\n\n private setCssVariables (styleKey: string) {\n this.hasOwnProperty(styleKey) || Object.defineProperty(this, styleKey, {\n enumerable: true,\n configurable: true,\n get: () => {\n return this._value[styleKey] || ''\n },\n set: (newVal: string) => {\n setStyle.call(this, newVal, styleKey)\n }\n })\n }\n\n public get cssText () {\n if (!this._usedStyleProp.size) return ''\n\n const texts: string[] = []\n this._usedStyleProp.forEach(key => {\n const val = this[key]\n if (isNull(val) || isUndefined(val)) return\n let styleName = isCssVariable(key) ? key : toDashed(key)\n if (styleName.indexOf('webkit') === 0 || styleName.indexOf('Webkit') === 0) {\n styleName = `-${styleName}`\n }\n texts.push(`${styleName}: ${val};`)\n })\n return texts.join(' ')\n }\n\n public set cssText (str: string) {\n this._pending = true\n recordCss(this)\n\n this._usedStyleProp.forEach(prop => {\n this.removeProperty(prop)\n })\n\n if (str === '' || isUndefined(str) || isNull(str)) {\n this._pending = false\n enqueueUpdate(this)\n return\n }\n\n const rules = str.split(';')\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i].trim()\n if (rule === '') {\n continue\n }\n\n // 可能存在 'background: url(http:x/y/z)' 的情况\n const [propName, ...valList] = rule.split(':')\n const val = valList.join(':')\n\n if (isUndefined(val)) {\n continue\n }\n this.setProperty(propName.trim(), val.trim())\n }\n\n this._pending = false\n enqueueUpdate(this)\n }\n\n public setProperty (propertyName: string, value?: string | null) {\n if (propertyName[0] === '-') {\n // 支持 webkit 属性或 css 变量\n this.setCssVariables(propertyName)\n } else {\n propertyName = toCamelCase(propertyName)\n }\n\n if (isNull(value) || isUndefined(value)) {\n this.removeProperty(propertyName)\n } else {\n this[propertyName] = value\n }\n }\n\n public removeProperty (propertyName: string): string {\n propertyName = toCamelCase(propertyName)\n if (!this._usedStyleProp.has(propertyName)) {\n return ''\n }\n\n const value = this[propertyName]\n this[propertyName] = undefined\n return value\n }\n\n public getPropertyValue (propertyName: string) {\n propertyName = toCamelCase(propertyName)\n const value = this[propertyName]\n if (!value) {\n return ''\n }\n\n return value\n }\n}\n\ninitStyle(Style, styleProperties)\n\nhooks.tap('injectNewStyleProperties', (newStyleProperties: string[]) => {\n if (isArray(newStyleProperties)) {\n initStyle(Style, newStyleProperties)\n } else {\n if (typeof newStyleProperties !== 'string') return\n\n initStyle(Style, [newStyleProperties])\n }\n})\n","import { NodeType } from './node_types'\n\nimport type { TaroElement } from './element'\n\ntype Filter = (element: TaroElement) => boolean\n\nfunction returnTrue () {\n return true\n}\n\nexport function treeToArray (root: TaroElement, predict?: Filter): TaroElement[] {\n const array: TaroElement[] = []\n const filter = predict ?? returnTrue\n\n let object: TaroElement | null = root\n\n while (object) {\n if (object.nodeType === NodeType.ELEMENT_NODE && filter(object)) {\n array.push(object)\n }\n\n object = following(object, root)\n }\n\n return array\n}\n\nfunction following (el: TaroElement, root: TaroElement): TaroElement | null {\n const firstChild = el.firstChild\n const isElmentTypeValid = el.nodeType === NodeType.ELEMENT_NODE || el.nodeType === NodeType.DOCUMENT_NODE\n\n // 如果当前 el 不是 element 或 document 元素,则可以直接不递归他的子元素了\n if (firstChild && isElmentTypeValid) {\n return firstChild as TaroElement\n }\n\n let current: TaroElement | null = el\n\n do {\n if (current === root) {\n return null\n }\n\n const nextSibling = current.nextSibling\n\n if (nextSibling) {\n return nextSibling as TaroElement\n }\n current = current.parentElement\n } while (current)\n\n return null\n}\n","import { EMPTY_OBJ, hooks, isArray, isFunction, isObject, isString, isUndefined, Shortcuts, toCamelCase, warn } from '@tarojs/shared'\n\nimport {\n CATCH_VIEW,\n CATCHMOVE,\n CLASS,\n EVENT_CALLBACK_RESULT,\n FOCUS,\n ID,\n PROPERTY_THRESHOLD,\n PURE_VIEW,\n STATIC_VIEW,\n STYLE,\n VIEW\n} from '../constants'\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport { extend, getComponentsAlias, isElement, isHasExtractProp, shortcutAttr } from '../utils'\nimport { ClassList } from './class-list'\nimport { eventSource } from './event-source'\nimport { TaroNode } from './node'\nimport { NodeType } from './node_types'\nimport { Style } from './style'\nimport { treeToArray } from './tree'\n\nimport type { Attributes, Func } from '../interface'\nimport type { TaroEvent } from './event'\n\nexport class TaroElement extends TaroNode {\n public ctx?\n public tagName: string\n public props: Record<string, any> = {}\n public style: Style\n public dataset: Record<string, unknown> = EMPTY_OBJ\n public innerHTML: string\n\n public constructor () {\n super()\n this.nodeType = NodeType.ELEMENT_NODE\n this.style = new Style(this)\n hooks.call('patchElement', this)\n }\n\n private _stopPropagation (event: TaroEvent) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let target = this\n // eslint-disable-next-line no-cond-assign\n while ((target = target.parentNode as this)) {\n const listeners = target.__handlers[event.type]\n\n if (!isArray(listeners)) {\n continue\n }\n\n for (let i = listeners.length; i--;) {\n const l = listeners[i]\n l._stop = true\n }\n }\n }\n\n public get id (): string {\n return this.getAttribute(ID)!\n }\n\n public set id (val: string) {\n this.setAttribute(ID, val)\n }\n\n public get className (): string {\n return this.getAttribute(CLASS) || ''\n }\n\n public set className (val: string) {\n this.setAttribute(CLASS, val)\n }\n\n public get cssText (): string {\n return this.getAttribute(STYLE) || ''\n }\n\n public get classList (): ClassList {\n return new ClassList(this.className, this)\n }\n\n public get children (): TaroElement[] {\n return this.childNodes.filter(isElement)\n }\n\n public get attributes (): Attributes[] {\n const props = this.props\n const propKeys = Object.keys(props)\n const style = this.style.cssText\n const attrs = propKeys.map(key => ({ name: key, value: props[key] }))\n return attrs.concat(style ? { name: STYLE, value: style } : [])\n }\n\n public get textContent (): string {\n let text = ''\n const childNodes = this.childNodes\n\n for (let i = 0; i < childNodes.length; i++) {\n text += childNodes[i].textContent\n }\n\n return text\n }\n\n public set textContent (text: string) {\n super.textContent = text\n }\n\n public hasAttribute (qualifiedName: string): boolean {\n return !isUndefined(this.props[qualifiedName])\n }\n\n public hasAttributes (): boolean {\n return this.attributes.length > 0\n }\n\n public get focus () {\n return function () {\n this.setAttribute(FOCUS, true)\n }\n }\n\n // 兼容 Vue3,详情请见:https://github.com/NervJS/taro/issues/10579\n public set focus (value) {\n this.setAttribute(FOCUS, value)\n }\n\n public blur () {\n this.setAttribute(FOCUS, false)\n }\n\n public setAttribute (qualifiedName: string, value: any): void {\n process.env.NODE_ENV !== 'production' && warn(\n isString(value) && value.length > PROPERTY_THRESHOLD,\n `元素 ${this.nodeName} 的 ${qualifiedName} 属性值数据量过大,可能会影响渲染性能。考虑降低图片转为 base64 的阈值或在 CSS 中使用 base64。`\n )\n\n const isPureView = this.nodeName === VIEW && !isHasExtractProp(this) && !this.isAnyEventBinded()\n\n if (qualifiedName !== STYLE) {\n MutationObserver.record({\n target: this,\n type: MutationRecordType.ATTRIBUTES,\n attributeName: qualifiedName,\n oldValue: this.getAttribute(qualifiedName)\n })\n }\n\n switch (qualifiedName) {\n case STYLE:\n this.style.cssText = value as string\n break\n case ID:\n if (this.uid !== this.sid) {\n // eventSource[sid] 永远保留,直到组件卸载\n // eventSource[uid] 可变\n eventSource.delete(this.uid)\n }\n value = String(value)\n this.props[qualifiedName] = this.uid = value\n eventSource.set(value, this)\n break\n default:\n this.props[qualifiedName] = value as string\n\n if (qualifiedName.startsWith('data-')) {\n if (this.dataset === EMPTY_OBJ) {\n this.dataset = Object.create(null)\n }\n this.dataset[toCamelCase(qualifiedName.replace(/^data-/, ''))] = value\n }\n break\n }\n\n // Serialization\n if (!this._root) return\n\n const componentsAlias = getComponentsAlias()\n const _alias = componentsAlias[this.nodeName]\n const viewAlias = componentsAlias[VIEW]._num\n const staticViewAlias = componentsAlias[STATIC_VIEW]._num\n const catchViewAlias = componentsAlias[CATCH_VIEW]._num\n const _path = this._path\n\n qualifiedName = shortcutAttr(qualifiedName)\n\n const qualifiedNameInCamelCase = toCamelCase(qualifiedName)\n const payload = {\n path: `${_path}.${qualifiedNameInCamelCase}`,\n value: isFunction(value) ? () => value : value\n }\n\n hooks.call('modifySetAttrPayload', this, qualifiedName, payload, componentsAlias)\n\n if (_alias) {\n const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName\n payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`\n }\n\n this.enqueueUpdate(payload)\n\n if (this.nodeName === VIEW) {\n if (qualifiedNameInCamelCase === CATCHMOVE) {\n // catchMove = true: catch-view\n // catchMove = false: view or static-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: value ? catchViewAlias : (\n this.isAnyEventBinded() ? viewAlias : staticViewAlias\n )\n })\n } else if (isPureView && isHasExtractProp(this)) {\n // pure-view => static-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: staticViewAlias\n })\n }\n }\n }\n\n public removeAttribute (qualifiedName: string) {\n const isStaticView = this.nodeName === VIEW && isHasExtractProp(this) && !this.isAnyEventBinded()\n\n MutationObserver.record({\n target: this,\n type: MutationRecordType.ATTRIBUTES,\n attributeName: qualifiedName,\n oldValue: this.getAttribute(qualifiedName)\n })\n\n if (qualifiedName === STYLE) {\n this.style.cssText = ''\n } else {\n const isInterrupt = hooks.call('onRemoveAttribute', this, qualifiedName)\n if (isInterrupt) {\n return\n }\n\n if (!this.props.hasOwnProperty(qualifiedName)) {\n return\n }\n delete this.props[qualifiedName]\n }\n\n // Serialization\n if (!this._root) return\n\n const componentsAlias = getComponentsAlias()\n const _alias = componentsAlias[this.nodeName]\n const viewAlias = componentsAlias[VIEW]._num\n const staticViewAlias = componentsAlias[STATIC_VIEW]._num\n const pureViewAlias = componentsAlias[PURE_VIEW]._num\n const _path = this._path\n\n qualifiedName = shortcutAttr(qualifiedName)\n\n const qualifiedNameInCamelCase = toCamelCase(qualifiedName)\n const payload = {\n path: `${_path}.${qualifiedNameInCamelCase}`,\n value: ''\n }\n\n hooks.call('modifyRmAttrPayload', this, qualifiedName, payload, componentsAlias)\n\n if (_alias) {\n const qualifiedNameAlias = _alias[qualifiedNameInCamelCase] || qualifiedName\n payload.path = `${_path}.${toCamelCase(qualifiedNameAlias)}`\n }\n\n this.enqueueUpdate(payload)\n\n if (this.nodeName === VIEW) {\n if (qualifiedNameInCamelCase === CATCHMOVE) {\n // catch-view => view or static-view or pure-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: this.isAnyEventBinded() ? viewAlias : (isHasExtractProp(this) ? staticViewAlias : pureViewAlias)\n })\n } else if (isStaticView && !isHasExtractProp(this)) {\n // static-view => pure-view\n this.enqueueUpdate({\n path: `${_path}.${Shortcuts.NodeName}`,\n value: pureViewAlias\n })\n }\n }\n }\n\n public getAttribute (qualifiedName: string): string {\n const attr = qualifiedName === STYLE ? this.style.cssText : this.props[qualifiedName]\n return attr ?? ''\n }\n\n public getElementsByTagName (tagName: string): TaroElement[] {\n return treeToArray(this, (el) => {\n return el.nodeName === tagName || (tagName === '*' && this !== el)\n })\n }\n\n public getElementsByClassName (className: string): TaroElement[] {\n const classNames = className.trim().split(/\\s+/)\n\n return treeToArray(this, (el) => {\n const classList = el.classList\n return classNames.every(c => classList.contains(c))\n })\n }\n\n public dispatchEvent (event: TaroEvent): boolean {\n const cancelable = event.cancelable\n\n const listeners = this.__handlers[event.type]\n\n if (!isArray(listeners)) {\n return false\n }\n\n for (let i = listeners.length; i--;) {\n const listener = listeners[i]\n let result: unknown\n if (listener._stop) {\n listener._stop = false\n } else {\n hooks.call('modifyDispatchEvent', event, this)\n result = listener.call(this, event)\n }\n if ((result === false || event._end) && cancelable) {\n event.defaultPrevented = true\n }\n\n if (!isUndefined(result) && event.mpEvent) {\n const res = hooks.call('modifyTaroEventReturn', this, event, result)\n if (res) { event.mpEvent[EVENT_CALLBACK_RESULT] = result }\n }\n\n if (event._end && event._stop) {\n break\n }\n }\n\n if (event._stop) {\n this._stopPropagation(event)\n }\n\n return listeners != null\n }\n\n public addEventListener (type, handler, options) {\n const name = this.nodeName\n const SPECIAL_NODES = hooks.call('getSpecialNodes')!\n\n let sideEffect = true\n if (isObject<Record<string, any>>(options) && options.sideEffect === false) {\n sideEffect = false\n delete options.sideEffect\n }\n\n hooks.call('modifyAddEventListener', this, sideEffect, getComponentsAlias)\n\n if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n const componentsAlias = getComponentsAlias()\n const alias = componentsAlias[name]._num\n this.enqueueUpdate({\n path: `${this._path}.${Shortcuts.NodeName}`,\n value: alias\n })\n }\n\n super.addEventListener(type, handler, options)\n }\n\n public removeEventListener (type, handler, sideEffect = true) {\n super.removeEventListener(type, handler)\n\n const name = this.nodeName\n const SPECIAL_NODES = hooks.call('getSpecialNodes')!\n\n hooks.call('modifyRemoveEventListener', this, sideEffect, getComponentsAlias)\n\n if (sideEffect !== false && !this.isAnyEventBinded() && SPECIAL_NODES.indexOf(name) > -1) {\n const componentsAlias = getComponentsAlias()\n const value = isHasExtractProp(this) ? `static-${name}` : `pure-${name}`\n const valueAlias = componentsAlias[value]._num\n this.enqueueUpdate({\n path: `${this._path}.${Shortcuts.NodeName}`,\n value: valueAlias\n })\n }\n }\n\n static extend (methodName: string, options: Func | Record<string, any>) {\n extend(TaroElement, methodName, options)\n }\n}\n","import type { Options } from './interface'\n\nexport const options: Options = {\n prerender: true,\n debug: false\n}\n","import { options } from '../../options'\n\ninterface Position {\n index: number\n column: number\n line: number\n}\n\nexport interface Token {\n type: string\n content?: string\n position?: {\n start?: Position\n end?: Position\n }\n close?: boolean\n}\n\nfunction initPosition (): Position {\n return {\n index: 0,\n column: 0,\n line: 0\n }\n}\n\nfunction feedPosition (position: Position, str: string, len: number) {\n const start = position.index\n const end = position.index = start + len\n for (let i = start; i < end; i++) {\n const char = str.charAt(i)\n if (char === '\\n') {\n position.line++\n position.column = 0\n } else {\n position.column++\n }\n }\n}\n\nfunction jumpPosition (position: Position, str: string, end: number) {\n const len = end - position.index\n return feedPosition(position, str, len)\n}\n\nfunction copyPosition (position: Position) {\n return {\n index: position.index,\n line: position.line,\n column: position.column\n }\n}\n\nconst whitespace = /\\s/\nfunction isWhitespaceChar (char: string) {\n return whitespace.test(char)\n}\n\nconst equalSign = /=/\nfunction isEqualSignChar (char: string) {\n return equalSign.test(char)\n}\n\nfunction shouldBeIgnore (tagName: string) {\n const name = tagName.toLowerCase()\n if (options.html!.skipElements.has(name)) {\n return true\n }\n return false\n}\n\nconst alphanumeric = /[A-Za-z0-9]/\n\nfunction findTextEnd (str: string, index: number) {\n while (true) {\n const textEnd = str.indexOf('<', index)\n if (textEnd === -1) {\n return textEnd\n }\n const char = str.charAt(textEnd + 1)\n if (char === '/' || char === '!' || alphanumeric.test(char)) {\n return textEnd\n }\n index = textEnd + 1\n }\n}\n\nfunction isWordEnd (cursor: number, wordBegin: number, html: string) {\n if (!isWhitespaceChar(html.charAt(cursor))) return false\n\n const len = html.length\n\n // backwrad\n for (let i = cursor - 1; i > wordBegin; i--) {\n const char = html.charAt(i)\n if (!isWhitespaceChar(char)) {\n if (isEqualSignChar(char)) return false\n break\n }\n }\n\n // forward\n for (let i = cursor + 1; i < len; i++) {\n const char = html.charAt(i)\n if (!isWhitespaceChar(char)) {\n if (isEqualSignChar(char)) return false\n return true\n }\n }\n}\n\nexport class Scaner {\n private tokens: Token[] = []\n\n private position: Position = initPosition()\n\n private html: string\n\n constructor (html: string) {\n this.html = html\n }\n\n public scan (): Token[] {\n const { html, position } = this\n const len = html.length\n\n while (position.index < len) {\n const start = position.index\n this.scanText()\n if (position.index === start) {\n const isComment = html.startsWith('!--', start + 1)\n if (isComment) {\n this.scanComment()\n } else {\n const tagName = this.scanTag()\n if (shouldBeIgnore(tagName)) {\n this.scanSkipTag(tagName)\n }\n }\n }\n }\n\n return this.tokens\n }\n\n private scanText () {\n const type = 'text'\n const { html, position } = this\n let textEnd = findTextEnd(html, position.index)\n if (textEnd === position.index) {\n return\n }\n if (textEnd === -1) {\n textEnd = html.length\n }\n\n const start = copyPosition(position)\n const content = html.slice(position.index, textEnd)\n jumpPosition(position, html, textEnd)\n const end = copyPosition(position)\n this.tokens.push({ type, content, position: { start, end } })\n }\n\n private scanComment () {\n const type = 'comment'\n const { html, position } = this\n const start = copyPosition(position)\n feedPosition(position, html, 4) // \"<!--\".length\n let contentEnd = html.indexOf('-->', position.index)\n let commentEnd = contentEnd + 3 // \"-->\".length\n if (contentEnd === -1) {\n contentEnd = commentEnd = html.length\n }\n\n const content = html.slice(position.index, contentEnd)\n jumpPosition(position, html, commentEnd)\n this.tokens.push({\n type,\n content,\n position: {\n start,\n end: copyPosition(position)\n }\n })\n }\n\n private scanTag () {\n this.scanTagStart()\n const tagName = this.scanTagName()\n this.scanAttrs()\n this.scanTagEnd()\n\n return tagName\n }\n\n private scanTagStart () {\n const type = 'tag-start'\n const { html, position } = this\n\n const secondChar = html.charAt(position.index + 1)\n const close = secondChar === '/'\n const start = copyPosition(position)\n feedPosition(position, html, close ? 2 : 1)\n this.tokens.push({ type, close, position: { start } })\n }\n\n private scanTagEnd () {\n const type = 'tag-end'\n const { html, position } = this\n\n const firstChar = html.charAt(position.index)\n const close = firstChar === '/'\n feedPosition(position, html, close ? 2 : 1)\n const end = copyPosition(position)\n this.tokens.push({ type, close, position: { end } })\n }\n\n private scanTagName (): string {\n const type = 'tag'\n const { html, position } = this\n const len = html.length\n let start = position.index\n while (start < len) {\n const char = html.charAt(start)\n const isTagChar = !(isWhitespaceChar(char) || char === '/' || char === '>')\n if (isTagChar) break\n start++\n }\n\n let end = start + 1\n while (end < len) {\n const char = html.charAt(end)\n const isTagChar = !(isWhitespaceChar(char) || char === '/' || char === '>')\n if (!isTagChar) break\n end++\n }\n\n jumpPosition(position, html, end)\n const tagName = html.slice(start, end)\n this.tokens.push({\n type,\n content: tagName\n })\n\n return tagName\n }\n\n private scanAttrs () {\n const { html, position, tokens } = this\n let cursor = position.index\n let quote: string | null = null // null, single-, or double-quote\n let wordBegin = cursor // index of word start\n const words: string[] = [] // \"key\", \"key=value\", \"key='value'\", etc\n const len = html.length\n while (cursor < len) {\n const char = html.charAt(cursor)\n if (quote) {\n const isQuoteEnd = char === quote\n if (isQuoteEnd) {\n quote = null\n }\n cursor++\n continue\n }\n\n const isTagEnd = char === '/' || char === '>'\n if (isTagEnd) {\n if (cursor !== wordBegin) {\n words.push(html.slice(wordBegin, cursor))\n }\n break\n }\n\n if (isWordEnd(cursor, wordBegin, html)) {\n if (cursor !== wordBegin) {\n words.push(html.slice(wordBegin, cursor))\n }\n wordBegin = cursor + 1\n cursor++\n continue\n }\n\n const isQuoteStart = char === '\\'' || char === '\"'\n if (isQuoteStart) {\n quote = char\n cursor++\n continue\n }\n\n cursor++\n }\n\n jumpPosition(position, html, cursor)\n\n const wLen = words.length\n const type = 'attribute'\n for (let i = 0; i < wLen; i++) {\n const word = words[i]\n const isNotPair = word.includes('=')\n if (isNotPair) {\n const secondWord = words[i + 1]\n if (secondWord && secondWord.startsWith('=')) {\n if (secondWord.length > 1) {\n const newWord = word + secondWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n const thirdWord = words[i + 2]\n i += 1\n if (thirdWord) {\n const newWord = word + '=' + thirdWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n }\n }\n if (word.endsWith('=')) {\n const secondWord = words[i + 1]\n if (secondWord && !secondWord.includes('=')) {\n const newWord = word + secondWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n\n const newWord = word.slice(0, -1)\n tokens.push({ type, content: newWord })\n continue\n }\n\n tokens.push({ type, content: word })\n }\n }\n\n private scanSkipTag (tagName: string) {\n const { html, position } = this\n const safeTagName = tagName.toLowerCase()\n const len = html.length\n while (position.index < len) {\n const nextTag = html.indexOf('</', position.index)\n if (nextTag === -1) {\n this.scanText()\n break\n }\n\n jumpPosition(position, html, nextTag)\n const name = this.scanTag()\n if (safeTagName === name.toLowerCase()) {\n break\n }\n }\n }\n}\n","export function unquote (str: string): string {\n const car = str.charAt(0)\n const end = str.length - 1\n const isQuoteStart = car === '\"' || car === \"'\"\n if (isQuoteStart && car === str.charAt(end)) {\n return str.slice(1, end)\n }\n return str\n}\n","import { NodeType } from '../../dom/node_types'\nimport { unquote } from './utils'\n\nimport type { TaroNode } from '../../dom/node'\nimport type { ParsedTaroElement } from './parser'\n\nconst LEFT_BRACKET = '{'\nconst RIGHT_BRACKET = '}'\nconst CLASS_SELECTOR = '.'\nconst ID_SELECTOR = '#'\nconst CHILD_COMBINATOR = '>'\nconst GENERAL_SIBLING_COMBINATOR = '~'\nconst ADJACENT_SIBLING_COMBINATOR = '+'\n\ninterface ISelector {\n isChild: boolean\n isGeneralSibling: boolean\n isAdjacentSibling: boolean\n tag: string | null\n id: string | null\n class: string[]\n attrs: {\n all: boolean\n key: string\n value?: string | null\n }[]\n}\n\ninterface IStyle {\n content: string\n selectorList: ISelector[]\n}\n\nexport default class StyleTagParser {\n styles: IStyle[] = []\n\n extractStyle (src: string) {\n const REG_STYLE = /<style\\s?[^>]*>((.|\\n|\\s)+?)<\\/style>/g\n let html = src\n // let html = src.replace(/\\n/g, '')\n\n html = html.replace(REG_STYLE, (_, $1: string) => {\n const style = $1.trim()\n this.stringToSelector(style)\n return ''\n })\n\n return html.trim()\n }\n\n stringToSelector (style: string) {\n let lb = style.indexOf(LEFT_BRACKET)\n\n while (lb > -1) {\n const rb = style.indexOf(RIGHT_BRACKET)\n const selectors = style.slice(0, lb).trim()\n\n let content = style.slice(lb + 1, rb)\n content = content.replace(/:(.*);/g, function (_, $1) {\n const t = $1.trim().replace(/ +/g, '+++')\n return `:${t};`\n })\n content = content.replace(/ /g, '')\n content = content.replace(/\\+\\+\\+/g, ' ')\n\n if (!(/;$/.test(content))) {\n content += ';'\n }\n selectors.split(',').forEach(src => {\n const selectorList = this.parseSelector(src)\n this.styles.push({\n content,\n selectorList\n })\n })\n style = style.slice(rb + 1)\n lb = style.indexOf(LEFT_BRACKET)\n }\n // console.log('res this.styles: ', this.styles)\n }\n\n parseSelector (src: string) {\n const list = src\n .trim()\n .replace(/ *([>~+]) */g, ' $1')\n .replace(/ +/g, ' ')\n .replace(/\\[\\s*([^[\\]=\\s]+)\\s*=\\s*([^[\\]=\\s]+)\\s*\\]/g, '[$1=$2]')\n .split(' ')\n const selectors = list.map(item => {\n const firstChar = item.charAt(0)\n const selector: ISelector = {\n isChild: firstChar === CHILD_COMBINATOR,\n isGeneralSibling: firstChar === GENERAL_SIBLING_COMBINATOR,\n isAdjacentSibling: firstChar === ADJACENT_SIBLING_COMBINATOR,\n tag: null,\n id: null,\n class: [],\n attrs: []\n }\n\n item = item.replace(/^[>~+]/, '')\n\n // 属性选择器\n item = item.replace(/\\[(.+?)\\]/g, function (_, $1: string) {\n const [key, value] = $1.split('=')\n const all = $1.indexOf('=') === -1\n\n const attr = {\n all,\n key,\n value: all ? null : value\n }\n selector.attrs.push(attr)\n return ''\n })\n\n item = item.replace(/([.#][A-Za-z0-9-_]+)/g, function (_, $1: string) {\n if ($1[0] === ID_SELECTOR) {\n // id 选择器\n selector.id = $1.substr(1)\n } else if ($1[0] === CLASS_SELECTOR) {\n // class 选择器\n selector.class.push($1.substr(1))\n }\n return ''\n })\n\n // 标签选择器\n if (item !== '') {\n selector.tag = item\n }\n\n return selector\n })\n return selectors\n }\n\n matchStyle (tagName: string, el: ParsedTaroElement, list: number[]): string {\n const res = sortStyles(this.styles).reduce((str, { content, selectorList }, i) => {\n let idx = list[i]\n let selector = selectorList[idx]\n const nextSelector = selectorList[idx + 1]\n\n if (nextSelector?.isGeneralSibling || nextSelector?.isAdjacentSibling) {\n selector = nextSelector\n idx += 1\n list[i] += 1\n }\n\n let isMatch = this.matchCurrent(tagName, el, selector)\n\n if (isMatch && selector.isGeneralSibling) {\n let prev: ParsedTaroElement = getPreviousElement(el)\n while (prev) {\n if (prev.h5tagName && this.matchCurrent(prev.h5tagName, prev, selectorList[idx - 1])) {\n isMatch = true\n break\n }\n prev = getPreviousElement(prev)\n isMatch = false\n }\n }\n if (isMatch && selector.isAdjacentSibling) {\n const prev: ParsedTaroElement = getPreviousElement(el)\n if (!prev || !prev.h5tagName) {\n isMatch = false\n } else {\n const isSiblingMatch = this.matchCurrent(prev.h5tagName, prev, selectorList[idx - 1])\n if (!isSiblingMatch) {\n isMatch = false\n }\n }\n }\n\n if (isMatch) {\n if (idx === selectorList.length - 1) {\n return str + content\n } else if (idx < selectorList.length - 1) {\n list[i] += 1\n }\n } else {\n // 直接子代组合器: >\n if (selector.isChild && idx > 0) {\n list[i] -= 1\n if (this.matchCurrent(tagName, el, selectorList[list[i]])) {\n list[i] += 1\n }\n }\n }\n\n return str\n }, '')\n return res\n }\n\n matchCurrent (tagName: string, el: ParsedTaroElement, selector: ISelector): boolean {\n // 标签选择器\n if (selector.tag && selector.tag !== tagName) return false\n\n // id 选择器\n if (selector.id && selector.id !== el.id) return false\n\n // class 选择器\n if (selector.class.length) {\n const classList = el.className.split(' ')\n for (let i = 0; i < selector.class.length; i++) {\n const cls = selector.class[i]\n if (classList.indexOf(cls) === -1) {\n return false\n }\n }\n }\n\n // 属性选择器\n if (selector.attrs.length) {\n for (let i = 0; i < selector.attrs.length; i++) {\n const { all, key, value } = selector.attrs[i]\n if (all && !el.hasAttribute(key)) {\n return false\n } else {\n const attr = el.getAttribute(key)\n if (attr !== unquote(value || '')) {\n return false\n }\n }\n }\n }\n\n return true\n }\n}\n\nfunction getPreviousElement (el: TaroNode) {\n const parent = el.parentElement\n if (!parent) return null\n\n const prev = el.previousSibling\n if (!prev) return null\n\n if (prev.nodeType === NodeType.ELEMENT_NODE) {\n return prev\n } else {\n return getPreviousElement(prev)\n }\n}\n\n// 根据 css selector 权重排序: 权重大的靠后\n// @WARN 不考虑伪类\n// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance#specificity_2\nfunction sortStyles (styles: IStyle[]) {\n return styles.sort((s1, s2) => {\n const hundreds1 = getHundredsWeight(s1.selectorList)\n const hundreds2 = getHundredsWeight(s2.selectorList)\n\n if (hundreds1 !== hundreds2) return hundreds1 - hundreds2\n\n const tens1 = getTensWeight(s1.selectorList)\n const tens2 = getTensWeight(s2.selectorList)\n\n if (tens1 !== tens2) return tens1 - tens2\n\n const ones1 = getOnesWeight(s1.selectorList)\n const ones2 = getOnesWeight(s2.selectorList)\n\n return ones1 - ones2\n })\n}\n\nfunction getHundredsWeight (selectors: ISelector[]) {\n return selectors.reduce((pre, cur) => pre + (cur.id ? 1 : 0), 0)\n}\n\nfunction getTensWeight (selectors: ISelector[]) {\n return selectors.reduce((pre, cur) => pre + cur.class.length + cur.attrs.length, 0)\n}\n\nfunction getOnesWeight (selectors: ISelector[]) {\n return selectors.reduce((pre, cur) => pre + (cur.tag ? 1 : 0), 0)\n}\n","import { internalComponents } from '@tarojs/shared'\n\nexport function makeMap (\n str: string,\n expectsLowerCase?: boolean\n): (key: string) => boolean {\n const map: Record<string, boolean> = Object.create(null)\n const list: Array<string> = str.split(',')\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true\n }\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val]\n}\n\nexport const specialMiniElements = {\n img: 'image',\n iframe: 'web-view'\n}\n\nconst internalCompsList = Object.keys(internalComponents)\n .map(i => i.toLowerCase())\n .join(',')\n\n// https://developers.weixin.qq.com/miniprogram/dev/component\nexport const isMiniElements = makeMap(internalCompsList, true)\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements\nexport const isInlineElements = makeMap('a,i,abbr,iframe,select,acronym,slot,small,span,bdi,kbd,strong,big,map,sub,sup,br,mark,mark,meter,template,canvas,textarea,cite,object,time,code,output,u,data,picture,tt,datalist,var,dfn,del,q,em,s,embed,samp,b', true)\n\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\nexport const isBlockElements = makeMap('address,fieldset,li,article,figcaption,main,aside,figure,nav,blockquote,footer,ol,details,form,p,dialog,h1,h2,h3,h4,h5,h6,pre,dd,header,section,div,hgroup,table,dl,hr,ul,dt', true)\n","import { isFunction } from '@tarojs/shared'\n\nimport { options } from '../../options'\nimport { Scaner, Token } from './scaner'\nimport StyleTagParser from './style'\nimport { isBlockElements, isInlineElements, isMiniElements, specialMiniElements } from './tags'\nimport { unquote } from './utils'\n\nimport type { TaroDocument } from '../../dom/document'\nimport type { TaroElement } from '../../dom/element'\n\ninterface State {\n tokens: Token[]\n cursor: number\n stack: Element[]\n}\n\nconst closingTagAncestorBreakers = {\n li: ['ul', 'ol', 'menu'],\n dt: ['dl'],\n dd: ['dl'],\n tbody: ['table'],\n thead: ['table'],\n tfoot: ['table'],\n tr: ['table'],\n td: ['table']\n}\n\ninterface Node {\n type: string\n}\n\ninterface Comment extends Node {\n type: 'comment'\n content: string\n}\n\nexport interface Text extends Node {\n type: 'text'\n content: string\n}\n\nexport interface Element extends Node {\n type: 'element'\n tagName: string\n children: ChildNode[]\n attributes: string[]\n}\n\nexport interface ParsedTaroElement extends TaroElement{\n h5tagName?: string\n}\n\ntype ChildNode = Comment | Text | Element\n\nfunction hasTerminalParent (tagName: string, stack: Element[]) {\n const tagParents: undefined | string[] = closingTagAncestorBreakers[tagName]\n if (tagParents) {\n let currentIndex = stack.length - 1\n while (currentIndex >= 0) {\n const parentTagName = stack[currentIndex].tagName\n if (parentTagName === tagName) {\n break\n }\n if (tagParents && tagParents.includes(parentTagName!)) {\n return true\n }\n currentIndex--\n }\n }\n return false\n}\n\nfunction getTagName (tag: string) {\n if (options.html!.renderHTMLTag) {\n return tag\n }\n\n if (specialMiniElements[tag]) {\n return specialMiniElements[tag]\n } else if (isMiniElements(tag)) {\n return tag\n } else if (isBlockElements(tag)) {\n return 'view'\n } else if (isInlineElements(tag)) {\n return 'text'\n }\n\n return 'view'\n}\n\nfunction splitEqual (str: string) {\n const sep = '='\n const idx = str.indexOf(sep)\n if (idx === -1) return [str]\n const key = str.slice(0, idx).trim()\n const value = str.slice(idx + sep.length).trim()\n return [key, value]\n}\n\nfunction format (\n children: ChildNode[],\n document: TaroDocument,\n styleOptions: {\n styleTagParser: StyleTagParser\n descendantList: number[]\n },\n parent?: TaroElement\n) {\n return children\n .filter(child => {\n // 过滤注释和空文本节点\n if (child.type === 'comment') {\n return false\n } else if (child.type === 'text') {\n return child.content !== ''\n }\n return true\n })\n .map((child: Text | Element) => {\n // 文本节点\n if (child.type === 'text') {\n let text = document.createTextNode(child.content)\n if (isFunction(options.html!.transformText)) {\n text = options.html!.transformText(text, child)\n }\n parent?.appendChild(text)\n return text\n }\n\n const el: ParsedTaroElement = document.createElement(getTagName(child.tagName))\n el.h5tagName = child.tagName\n\n parent?.appendChild(el)\n\n if (!options.html!.renderHTMLTag) {\n el.className = `h5-${child.tagName}`\n }\n\n for (let i = 0; i < child.attributes.length; i++) {\n const attr = child.attributes[i]\n const [key, value] = splitEqual(attr)\n if (key === 'class') {\n el.className += ' ' + unquote(value)\n } else if (key[0] === 'o' && key[1] === 'n') {\n continue\n } else {\n el.setAttribute(key, value == null ? true : unquote(value))\n }\n }\n\n const { styleTagParser, descendantList } = styleOptions\n const list = descendantList.slice()\n const style = styleTagParser.matchStyle(child.tagName, el, list)\n\n el.setAttribute('style', style + el.style.cssText)\n // console.log('style, ', style)\n\n format(child.children, document, {\n styleTagParser,\n descendantList: list\n }, el)\n\n if (isFunction(options.html!.transformElement)) {\n return options.html!.transformElement(el, child)\n }\n\n return el\n })\n}\n\nexport function parser (html: string, document: TaroDocument) {\n const styleTagParser = new StyleTagParser()\n html = styleTagParser.extractStyle(html)\n\n const tokens = new Scaner(html).scan()\n\n const root: Element = { tagName: '', children: [], type: 'element', attributes: [] }\n\n const state = { tokens, options, cursor: 0, stack: [root] }\n parse(state)\n\n return format(root.children, document, {\n styleTagParser,\n descendantList: Array(styleTagParser.styles.length).fill(0)\n })\n}\n\nfunction parse (state: State) {\n const { tokens, stack } = state\n let { cursor } = state\n\n const len = tokens.length\n\n let nodes = stack[stack.length - 1].children\n\n while (cursor < len) {\n const token = tokens[cursor]\n if (token.type !== 'tag-start') {\n // comment or text\n nodes.push(token as ChildNode)\n cursor++\n continue\n }\n\n const tagToken = tokens[++cursor]\n cursor++\n const tagName = tagToken.content!.toLowerCase()\n if (token.close) {\n let index = stack.length\n let shouldRewind = false\n while (--index > -1) {\n if (stack[index].tagName === tagName) {\n shouldRewind = true\n break\n }\n }\n while (cursor < len) {\n const endToken = tokens[cursor]\n if (endToken.type !== 'tag-end') break\n cursor++\n }\n if (shouldRewind) {\n stack.splice(index)\n break\n } else {\n continue\n }\n }\n\n const isClosingTag = options.html!.closingElements.has(tagName)\n let shouldRewindToAutoClose = isClosingTag\n if (shouldRewindToAutoClose) {\n shouldRewindToAutoClose = !hasTerminalParent(tagName, stack)\n }\n\n if (shouldRewindToAutoClose) {\n let currentIndex = stack.length - 1\n while (currentIndex > 0) {\n if (tagName === stack[currentIndex].tagName) {\n stack.splice(currentIndex)\n const previousIndex = currentIndex - 1\n nodes = stack[previousIndex].children\n break\n }\n currentIndex = currentIndex - 1\n }\n }\n\n const attributes: string[] = []\n let attrToken: Token\n while (cursor < len) {\n attrToken = tokens[cursor]\n if (attrToken.type === 'tag-end') break\n attributes.push(attrToken.content!)\n cursor++\n }\n\n cursor++\n const children: Element[] = []\n const element: Element = {\n type: 'element',\n tagName: tagToken.content!,\n attributes,\n children\n }\n nodes.push(element)\n\n const hasChildren = !(attrToken!.close || options.html!.voidElements.has(tagName))\n if (hasChildren) {\n stack.push({ tagName, children } as any)\n const innerState: State = { tokens, cursor, stack }\n parse(innerState)\n cursor = innerState.cursor\n }\n }\n\n state.cursor = cursor\n}\n","import { options } from '../../options'\nimport { parser } from './parser'\n\nimport type { TaroNode } from '../../dom/node'\n\noptions.html = {\n skipElements: new Set(['style', 'script']),\n voidElements: new Set([\n '!doctype', 'area', 'base', 'br', 'col', 'command',\n 'embed', 'hr', 'img', 'input', 'keygen', 'link',\n 'meta', 'param', 'source', 'track', 'wbr'\n ]),\n closingElements: new Set([\n 'html', 'head', 'body', 'p', 'dt', 'dd', 'li', 'option',\n 'thead', 'th', 'tbody', 'tr', 'td', 'tfoot', 'colgroup'\n ]),\n renderHTMLTag: false\n}\n\nexport function setInnerHTML (element: TaroNode, html: string) {\n while (element.firstChild) {\n element.removeChild(element.firstChild)\n }\n const children = parser(html, element.ownerDocument)\n\n for (let i = 0; i < children.length; i++) {\n element.appendChild(children[i])\n }\n}\n","import { DOCUMENT_FRAGMENT } from '../constants'\nimport { options } from '../options'\n\nimport type { TaroElement } from '../dom/element'\n\nexport function getBoundingClientRectImpl (this: TaroElement): Promise<null> {\n if (!options.miniGlobal) return Promise.resolve(null)\n return new Promise(resolve => {\n const query = options.miniGlobal.createSelectorQuery()\n query.select(`#${this.uid}`).boundingClientRect(res => {\n resolve(res)\n }).exec()\n })\n}\n\nexport function getTemplateContent (ctx: TaroElement): TaroElement | undefined {\n if (ctx.nodeName === 'template') {\n const document = ctx.ownerDocument\n const content: TaroElement = document.createElement(DOCUMENT_FRAGMENT)\n content.childNodes = ctx.childNodes\n ctx.childNodes = [content]\n content.parentNode = ctx\n content.childNodes.forEach(nodes => {\n nodes.parentNode = content\n })\n return content\n }\n}\n","import { DATASET, OBJECT, PROPS, STYLE } from '../constants'\nimport { NodeType } from '../dom/node_types'\nimport { parser } from '../dom-external/inner-html/parser'\n\nimport type { TaroNode } from '../dom/node'\n\nexport type IPosition = 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend'\n\n/**\n * An implementation of `Element.insertAdjacentHTML()`\n * to support Vue 3 with a version of or greater than `vue@3.1.2`\n */\nexport function insertAdjacentHTML (\n this: TaroNode,\n position: IPosition,\n html: string\n) {\n const parsedNodes = parser(html, this.ownerDocument)\n\n for (let i = 0; i < parsedNodes.length; i++) {\n const n = parsedNodes[i]\n\n switch (position) {\n case 'beforebegin':\n this.parentNode?.insertBefore(n, this)\n break\n case 'afterbegin':\n if (this.hasChildNodes()) {\n this.insertBefore(n, this.childNodes[0])\n } else {\n this.appendChild(n)\n }\n break\n case 'beforeend':\n this.appendChild(n)\n break\n case 'afterend':\n this.parentNode?.appendChild(n)\n break\n }\n }\n}\n\nexport function cloneNode (this: TaroNode, isDeep = false) {\n const document = this.ownerDocument\n let newNode\n\n if (this.nodeType === NodeType.ELEMENT_NODE) {\n newNode = document.createElement(this.nodeName)\n } else if (this.nodeType === NodeType.TEXT_NODE) {\n newNode = document.createTextNode('')\n }\n\n for (const key in this) {\n const value: any = this[key]\n if ([PROPS, DATASET].includes(key) && typeof value === OBJECT) {\n newNode[key] = { ...value }\n } else if (key === '_value') {\n newNode[key] = value\n } else if (key === STYLE) {\n newNode.style._value = { ...value._value }\n newNode.style._usedStyleProp = new Set(Array.from(value._usedStyleProp))\n }\n }\n\n if (isDeep) {\n newNode.childNodes = this.childNodes.map(node => (node as any).cloneNode(true))\n }\n\n return newNode\n}\n\nexport function contains (this: TaroNode, node: TaroNode & { id?: string }): boolean {\n let isContains = false\n this.childNodes.some(childNode => {\n const { uid } = childNode\n if (uid === node.uid || uid === node.id || (childNode as any).contains(node)) {\n isContains = true\n return true\n }\n })\n return isContains\n}\n","import { isWebPlatform } from '@tarojs/shared'\n\nimport { TaroElement } from '../dom/element'\nimport { TaroNode } from '../dom/node'\nimport { setInnerHTML } from '../dom-external/inner-html/html'\nimport { getBoundingClientRectImpl, getTemplateContent } from './element'\nimport { cloneNode, contains, insertAdjacentHTML } from './node'\n\ndeclare const ENABLE_INNER_HTML: boolean\ndeclare const ENABLE_ADJACENT_HTML: boolean\ndeclare const ENABLE_CLONE_NODE: boolean\ndeclare const ENABLE_CONTAINS: boolean\n\ndeclare const ENABLE_SIZE_APIS: boolean\ndeclare const ENABLE_TEMPLATE_CONTENT: boolean\n\nconst isWeb = isWebPlatform()\nconst isHarmony = process.env.TARO_PLATFORM === 'harmony' || process.env.TARO_ENV === 'harmony'\nif (!isWeb && !isHarmony) {\n if (ENABLE_INNER_HTML) {\n TaroNode.extend('innerHTML', {\n set (html: string) {\n setInnerHTML.call(this, this, html)\n },\n get (): string {\n return ''\n }\n })\n\n if (ENABLE_ADJACENT_HTML) {\n TaroNode.extend('insertAdjacentHTML', insertAdjacentHTML)\n }\n }\n\n if (ENABLE_CLONE_NODE) {\n TaroNode.extend('cloneNode', cloneNode)\n }\n\n if (ENABLE_CONTAINS) {\n TaroNode.extend('contains', contains)\n }\n\n if (ENABLE_SIZE_APIS) {\n TaroElement.extend('getBoundingClientRect', getBoundingClientRectImpl)\n }\n\n if (ENABLE_TEMPLATE_CONTENT) {\n TaroElement.extend('content', {\n get () {\n return getTemplateContent(this)\n }\n })\n }\n}\n","import { EMPTY_OBJ, hooks, isUndefined } from '@tarojs/shared'\n\nimport {\n CONFIRM,\n CURRENT_TARGET,\n EVENT_CALLBACK_RESULT,\n INPUT,\n KEY_CODE,\n TARGET,\n TIME_STAMP,\n TOUCHMOVE,\n TYPE\n} from '../constants'\nimport env from '../env'\nimport { isParentBinded } from '../utils'\n\nimport type { EventOptions, MpEvent } from '../interface'\nimport type { TaroElement } from './element'\n\n// Taro 事件对象。以 Web 标准的事件对象为基础,加入小程序事件对象中携带的部分信息,并模拟实现事件冒泡。\nexport class TaroEvent {\n private cacheTarget\n private cacheCurrentTarget\n\n public type: string\n\n public bubbles: boolean\n\n public cancelable: boolean\n\n public _stop = false\n\n public _end = false\n\n public defaultPrevented = false\n\n // Mouse Event botton property, it's used in 3rd lib, like react-router. default 0 in general\n public button = 0\n\n // timestamp can either be hi-res ( relative to page load) or low-res (relative to UNIX epoch)\n // here use hi-res timestamp\n public timeStamp = Date.now()\n\n public mpEvent: MpEvent | undefined\n\n public constructor (type: string, opts: EventOptions, event?: MpEvent) {\n this.type = type.toLowerCase()\n this.mpEvent = event\n this.bubbles = Boolean(opts && opts.bubbles)\n this.cancelable = Boolean(opts && opts.cancelable)\n }\n\n public stopPropagation () {\n this._stop = true\n }\n\n public stopImmediatePropagation () {\n this._end = this._stop = true\n }\n\n public preventDefault () {\n this.defaultPrevented = true\n }\n\n get target () {\n const cacheTarget = this.cacheTarget\n if (!cacheTarget) {\n const target = Object.create(this.mpEvent?.target || null)\n // Note:优先判断冒泡场景alipay的targetDataset的sid, 不然冒泡场景target属性吐出不对,其余拿取当前绑定id\n const element = env.document.getElementById(target.targetDataset?.sid || target.dataset?.sid || target.id || null)\n target.dataset = element !== null ? element.dataset : EMPTY_OBJ\n\n for (const key in this.mpEvent?.detail) {\n target[key] = this.mpEvent!.detail[key]\n }\n\n this.cacheTarget = target\n\n return target\n } else {\n return cacheTarget\n }\n }\n\n get currentTarget () {\n const cacheCurrentTarget = this.cacheCurrentTarget\n if (!cacheCurrentTarget) {\n const doc = env.document\n\n const currentTarget = Object.create(this.mpEvent?.currentTarget || null)\n\n const element = doc.getElementById(currentTarget.dataset?.sid || currentTarget.id || null)\n const targetElement = doc.getElementById(this.mpEvent?.target?.dataset?.sid as string || this.mpEvent?.target?.id as string || null)\n\n if (element === null || (element && element === targetElement)) {\n this.cacheCurrentTarget = this.target\n return this.target\n }\n\n currentTarget.dataset = element.dataset\n\n for (const key in this.mpEvent?.detail) {\n currentTarget[key] = this.mpEvent!.detail[key]\n }\n\n this.cacheCurrentTarget = currentTarget\n\n return currentTarget\n } else {\n return cacheCurrentTarget\n }\n }\n}\n\nexport function createEvent (event: MpEvent | string, node?: TaroElement) {\n if (typeof event === 'string') {\n // For Vue3 using document.createEvent\n return new TaroEvent(event, { bubbles: true, cancelable: true })\n }\n\n const domEv = new TaroEvent(event.type, { bubbles: true, cancelable: true }, event)\n\n for (const key in event) {\n if (key === CURRENT_TARGET || key === TARGET || key === TYPE || key === TIME_STAMP) {\n continue\n } else {\n domEv[key] = event[key]\n }\n }\n\n if (domEv.type === CONFIRM && node?.nodeName === INPUT) {\n // eslint-disable-next-line dot-notation\n domEv[KEY_CODE] = 13\n }\n\n return domEv\n}\n\nconst eventsBatch = {}\n\nfunction getEventCBResult (event: MpEvent) {\n const result = event[EVENT_CALLBACK_RESULT]\n if (!isUndefined(result)) {\n delete event[EVENT_CALLBACK_RESULT]\n }\n return result\n}\n\n// 小程序的事件代理回调函数\nexport function eventHandler (event: MpEvent) {\n // Note: ohos 上事件没有设置 type、detail 类型 setter 方法,且部分事件(例如 load 等)缺失 target 导致事件错误\n event.type === undefined && Object.defineProperty(event, 'type', {\n value: (event as any)._type // ohos only\n })\n event.detail === undefined && Object.defineProperty(event, 'detail', {\n value: (event as any)._detail || { ...event } // ohos only\n })\n event.currentTarget = event.currentTarget || event.target || { ...event }\n hooks.call('modifyMpEventImpl', event)\n\n const currentTarget = event.currentTarget\n const id = currentTarget.dataset?.sid as string /** sid */ || currentTarget.id /** uid */ || event.detail?.id as string || ''\n\n const node = env.document.getElementById(id)\n if (node) {\n const dispatch = () => {\n const e = createEvent(event, node)\n\n hooks.call('modifyTaroEvent', e, node)\n hooks.call('dispatchTaroEvent', e, node)\n hooks.call('dispatchTaroEventFinish', e, node)\n }\n if (hooks.isExist('batchedEventUpdates')) {\n const type = event.type\n\n if (\n !hooks.call('isBubbleEvents', type) ||\n !isParentBinded(node, type) ||\n (type === TOUCHMOVE && !!node.props.catchMove)\n ) {\n // 最上层组件统一 batchUpdate\n hooks.call('batchedEventUpdates', () => {\n if (eventsBatch[type]) {\n eventsBatch[type].forEach(fn => fn())\n delete eventsBatch[type]\n }\n dispatch()\n })\n return getEventCBResult(event)\n } else {\n // 如果上层组件也有绑定同类型的组件,委托给上层组件调用事件回调\n (eventsBatch[type] ||= []).push(dispatch)\n }\n } else {\n dispatch()\n return getEventCBResult(event)\n }\n }\n}\n","import {\n CHANGE,\n INPUT,\n TYPE,\n VALUE } from '../constants'\nimport { TaroElement } from './element'\n\nimport type { TaroEvent } from './event'\n\nexport class FormElement extends TaroElement {\n public get type () {\n return this.props[TYPE] ?? ''\n }\n\n public set type (val: string) {\n this.setAttribute(TYPE, val)\n }\n\n public get value () {\n // eslint-disable-next-line dot-notation\n const val = this.props[VALUE]\n return val == null ? '' : val\n }\n\n public set value (val: string | boolean | number | any[]) {\n this.setAttribute(VALUE, val)\n }\n\n public dispatchEvent (event: TaroEvent) {\n if (event.mpEvent) {\n const val = event.mpEvent.detail.value\n if (event.type === CHANGE) {\n this.props.value = val as string\n } else if (event.type === INPUT) {\n // Web 规范中表单组件的 value 应该跟着输入改变\n // 只是改 this.props.value 的话不会进行 setData,因此这里修改 this.value。\n // 只测试了 React、Vue、Vue3 input 组件的 onInput 事件,onChange 事件不确定有没有副作用,所以暂不修改。\n this.value = val as string\n }\n }\n\n return super.dispatchEvent(event)\n }\n}\n","import { options } from './options'\n\nclass Performance {\n private recorder = new Map<string, number>()\n\n public start (id: string) {\n if (!options.debug) {\n return\n }\n this.recorder.set(id, Date.now())\n }\n\n public stop (id: string) {\n if (!options.debug) {\n return\n }\n const now = Date.now()\n const prev = this.recorder.get(id)!\n this.recorder.delete(id)\n const time = now - prev\n // eslint-disable-next-line no-console\n console.log(`${id} 时长: ${time}ms`)\n }\n}\n\nexport const perf = new Performance()\n","import { hooks, isArray, isFunction, isUndefined, Shortcuts } from '@tarojs/shared'\n\nimport {\n CUSTOM_WRAPPER,\n PAGE_INIT,\n ROOT_STR,\n SET_DATA\n} from '../constants'\nimport { options } from '../options'\nimport { perf } from '../perf'\nimport { customWrapperCache, isComment } from '../utils'\nimport { TaroElement } from './element'\n\nimport type { Func, HydratedData, MpInstance, UpdatePayload, UpdatePayloadValue } from '../interface'\n\nfunction findCustomWrapper (root: TaroRootElement, dataPathArr: string[]) {\n // ['root', 'cn', '[0]'] remove 'root' => ['cn', '[0]']\n const list = dataPathArr.slice(1)\n let currentData: any = root\n let customWrapper: Record<string, any> | undefined\n let splitedPath = ''\n\n list.some((item, i) => {\n const key = item\n // '[0]' => '0'\n .replace(/^\\[(.+)\\]$/, '$1')\n // 'cn' => 'childNodes'\n .replace(/\\bcn\\b/g, 'childNodes')\n\n currentData = currentData[key]\n\n if (isArray(currentData)) {\n currentData = currentData.filter(el => !isComment(el))\n }\n\n if (isUndefined(currentData)) return true\n\n if (currentData.nodeName === CUSTOM_WRAPPER) {\n const res = customWrapperCache.get(currentData.sid)\n if (res) {\n customWrapper = res\n splitedPath = dataPathArr.slice(i + 2).join('.')\n }\n }\n })\n\n if (customWrapper) {\n return {\n customWrapper,\n splitedPath\n }\n }\n}\n\nexport class TaroRootElement extends TaroElement {\n private updatePayloads: UpdatePayload[] = []\n\n private updateCallbacks: Func[] = []\n\n public pendingUpdate = false\n\n public ctx: null | MpInstance = null\n\n public constructor () {\n super()\n this.nodeName = ROOT_STR\n this.tagName = ROOT_STR.toUpperCase()\n }\n\n public get _path (): string {\n return ROOT_STR\n }\n\n public get _root (): TaroRootElement {\n return this\n }\n\n public enqueueUpdate (payload: UpdatePayload): void {\n this.updatePayloads.push(payload)\n\n if (!this.pendingUpdate && this.ctx) {\n this.performUpdate()\n }\n }\n\n public performUpdate (initRender = false, prerender?: Func) {\n this.pendingUpdate = true\n\n const ctx = hooks.call('proxyToRaw', this.ctx)!\n\n setTimeout(() => {\n const setDataMark = `${SET_DATA} 开始时间戳 ${Date.now()}`\n perf.start(setDataMark)\n const data: Record<string, UpdatePayloadValue | ReturnType<HydratedData>> = Object.create(null)\n const resetPaths = new Set<string>(\n initRender\n ? ['root.cn.[0]', 'root.cn[0]']\n : []\n )\n\n while (this.updatePayloads.length > 0) {\n const { path, value } = this.updatePayloads.shift()!\n if (path.endsWith(Shortcuts.Childnodes)) {\n resetPaths.add(path)\n }\n data[path] = value\n }\n\n for (const path in data) {\n resetPaths.forEach(p => {\n // 已经重置了数组,就不需要分别再设置了\n if (path.includes(p) && path !== p) {\n delete data[path]\n }\n })\n\n const value = data[path]\n if (isFunction(value)) {\n data[path] = value()\n }\n }\n\n // 预渲染\n if (isFunction(prerender)) return prerender(data)\n\n // 正常渲染\n this.pendingUpdate = false\n let normalUpdate = {}\n const customWrapperMap: Map<Record<any, any>, Record<string, any>> = new Map()\n\n if (initRender) {\n // 初次渲染,使用页面级别的 setData\n normalUpdate = data\n } else {\n // 更新渲染,区分 CustomWrapper 与页面级别的 setData\n for (const p in data) {\n const dataPathArr = p.split('.')\n const found = findCustomWrapper(this, dataPathArr)\n if (found) {\n // 此项数据使用 CustomWrapper 去更新\n const { customWrapper, splitedPath } = found\n // 合并同一个 customWrapper 的相关更新到一次 setData 中\n customWrapperMap.set(customWrapper, {\n ...(customWrapperMap.get(customWrapper) || {}),\n [`i.${splitedPath}`]: data[p]\n })\n } else {\n // 此项数据使用页面去更新\n normalUpdate[p] = data[p]\n }\n }\n }\n\n const customWrapperCount = customWrapperMap.size\n const isNeedNormalUpdate = Object.keys(normalUpdate).length > 0\n const updateArrLen = customWrapperCount + (isNeedNormalUpdate ? 1 : 0)\n let executeTime = 0\n\n const cb = () => {\n if (++executeTime === updateArrLen) {\n perf.stop(setDataMark)\n this.flushUpdateCallback()\n initRender && perf.stop(PAGE_INIT)\n }\n }\n\n // custom-wrapper setData\n if (customWrapperCount) {\n customWrapperMap.forEach((data, ctx) => {\n if (process.env.NODE_ENV !== 'production' && options.debug) {\n // eslint-disable-next-line no-console\n console.log('custom wrapper setData: ', data)\n }\n ctx.setData(data, cb)\n })\n }\n\n // page setData\n if (isNeedNormalUpdate) {\n if (process.env.NODE_ENV !== 'production' && options.debug) {\n // eslint-disable-next-line no-console\n console.log('page setData:', normalUpdate)\n }\n ctx.setData(normalUpdate, cb)\n }\n }, 0)\n }\n\n public enqueueUpdateCallback (cb: Func, ctx?: Record<string, any>) {\n this.updateCallbacks.push(() => {\n ctx ? cb.call(ctx) : cb()\n })\n }\n\n public flushUpdateCallback () {\n const updateCallbacks = this.updateCallbacks\n if (!updateCallbacks.length) return\n\n const copies = updateCallbacks.slice(0)\n this.updateCallbacks.length = 0\n for (let i = 0; i < copies.length; i++) {\n copies[i]()\n }\n }\n}\n","import { Shortcuts } from '@tarojs/shared'\n\nimport { MutationObserver, MutationRecordType } from '../dom-external/mutation-observer'\nimport { TaroNode } from './node'\nimport { NodeType } from './node_types'\n\nexport class TaroText extends TaroNode {\n public _value: string\n public nodeType = NodeType.TEXT_NODE\n public nodeName = '#text'\n\n constructor (value) {\n super()\n this._value = value\n }\n\n public set textContent (text: string) {\n MutationObserver.record({\n target: this,\n type: MutationRecordType.CHARACTER_DATA,\n oldValue: this._value\n })\n this._value = text\n this.enqueueUpdate({\n path: `${this._path}.${Shortcuts.Text}`,\n value: text\n })\n }\n\n public get textContent (): string {\n return this._value\n }\n\n public set nodeValue (text: string) {\n this.textContent = text\n }\n\n public get nodeValue (): string {\n return this._value\n }\n\n public set data (text: string) {\n this.textContent = text\n }\n\n public get data (): string {\n return this._value\n }\n}\n","import { isArray } from '@tarojs/shared'\n\nconst findReg = /[!'()~]|%20|%00/g\nconst plusReg = /\\+/g\nconst replaceCharMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n}\n\nfunction replacer (match: string) {\n return replaceCharMap[match]\n}\n\nfunction appendTo (dict: Record<string, string[]>, name: string, value: string) {\n const res = isArray(value) ? value.join(',') : value\n if (name in dict) dict[name].push(res)\n else dict[name] = [res]\n}\n\nfunction addEach (value: string, key: string) {\n appendTo(this, key, value)\n}\n\nfunction decode (str: string) {\n return decodeURIComponent(str.replace(plusReg, ' '))\n}\n\nfunction encode (str: string) {\n return encodeURIComponent(str).replace(findReg, replacer)\n}\n\nexport class URLSearchParams {\n #dict = Object.create(null)\n\n constructor (query) {\n query ??= ''\n\n const dict = this.#dict\n\n if (typeof query === 'string') {\n if (query.charAt(0) === '?') {\n query = query.slice(1)\n }\n for (let pairs = query.split('&'), i = 0, length = pairs.length; i < length; i++) {\n const value = pairs[i]\n const index = value.indexOf('=')\n if (index > -1) {\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)))\n } else if (value.length) {\n appendTo(dict, decode(value), '')\n }\n }\n } else {\n if (isArray(query)) {\n for (let i = 0, length = query.length; i < length; i++) {\n const value = query[i]\n appendTo(dict, value[0], value[1])\n }\n } else if (query.forEach) {\n query.forEach(addEach, dict)\n } else {\n for (const key in query) {\n appendTo(dict, key, query[key])\n }\n }\n }\n }\n\n append (name: string, value: string) {\n appendTo(this.#dict, name, value)\n }\n\n delete (name: string) {\n delete this.#dict[name]\n }\n\n get (name: string) {\n const dict = this.#dict\n return name in dict ? dict[name][0] : null\n }\n\n getAll (name: string) {\n const dict = this.#dict\n return name in dict ? dict[name].slice(0) : []\n }\n\n has (name: string) {\n return name in this.#dict\n }\n\n keys (){\n return Object.keys(this.#dict)\n }\n\n set (name: string, value: string) {\n this.#dict[name] = ['' + value]\n }\n\n forEach (callback, thisArg) {\n const dict = this.#dict\n Object.getOwnPropertyNames(dict).forEach(function (name) {\n dict[name].forEach(function (value: string) {\n callback.call(thisArg, value, name, this)\n }, this)\n }, this)\n }\n\n toJSON () {\n return {}\n }\n\n toString () {\n const dict = this.#dict\n const query: any[] = []\n for (const key in dict) {\n const name = encode(key)\n for (let i = 0, value = dict[key]; i < value.length; i++) {\n query.push(name + '=' + encode(value[i]))\n }\n }\n return query.join('&')\n }\n}\n","import { isString, isUndefined } from '@tarojs/shared'\n\nimport { URLSearchParams } from './URLSearchParams'\n\nexport class URL {\n static createObjectURL () {\n throw new Error('Oops, not support URL.createObjectURL() in miniprogram.')\n }\n\n static revokeObjectURL () {\n throw new Error('Oops, not support URL.revokeObjectURL() in miniprogram.')\n }\n\n /* private property */\n #hash = ''\n #hostname = ''\n #pathname = ''\n #port = ''\n #protocol = ''\n #search: URLSearchParams\n\n constructor (url: string, base?: string) {\n if (!isString(url)) url = String(url)\n\n const parseResult = parseUrlBase(url, base)\n const { hash, hostname, pathname, port, protocol, search } = parseResult\n\n this.#hash = hash\n this.#hostname = hostname\n this.#pathname = pathname || '/'\n this.#port = port\n this.#protocol = protocol\n this.#search = new URLSearchParams(search)\n }\n\n /* public property */\n get protocol () {\n return this.#protocol\n }\n\n set protocol (val: string) {\n isString(val) && (this.#protocol = val.trim())\n }\n\n get host () {\n return this.hostname + (this.port ? ':' + this.port : '')\n }\n\n set host (val: string) {\n if (val && isString(val)) {\n val = val.trim()\n const { hostname, port } = parseUrl(`//${val}`)\n this.hostname = hostname\n this.port = port\n }\n }\n\n get hostname () {\n return this.#hostname\n }\n\n set hostname (val: string) {\n val && isString(val) && (this.#hostname = val.trim())\n }\n\n get port () {\n return this.#port\n }\n\n set port (val: string) {\n isString(val) && (this.#port = val.trim())\n }\n\n get pathname () {\n return this.#pathname\n }\n\n set pathname (val: string) {\n if (isString(val)) {\n val = val.trim()\n const HEAD_REG = /^(\\/|\\.\\/|\\.\\.\\/)/\n let temp = val\n while (HEAD_REG.test(temp)) {\n temp = temp.replace(HEAD_REG, '')\n }\n if (temp) this.#pathname = '/' + temp\n else this.#pathname = '/'\n }\n }\n\n get search () {\n const val = this.#search.toString()\n return (val.length === 0 || val.startsWith('?')) ? val : `?${val}`\n }\n\n set search (val: string) {\n if (isString(val)) {\n val = val.trim()\n this.#search = new URLSearchParams(val)\n }\n }\n\n get hash () {\n return this.#hash\n }\n\n set hash (val: string) {\n if (isString(val)) {\n val = val.trim()\n if (val) this.#hash = val.startsWith('#') ? val : `#${val}`\n else this.#hash = ''\n }\n }\n\n get href () {\n return `${this.protocol}//${this.host}${this.pathname}${this.search}${this.hash}`\n }\n\n set href (val: string) {\n if (val && isString(val)) {\n val = val.trim()\n const { protocol, hostname, port, hash, search, pathname } = parseUrl(val)\n this.protocol = protocol\n this.hostname = hostname\n this.pathname = pathname\n this.port = port\n this.hash = hash\n this.search = search\n }\n }\n\n get origin () {\n return `${this.protocol}//${this.host}`\n }\n\n set origin (val: string) {\n if (val && isString(val)) {\n val = val.trim()\n const { protocol, hostname, port } = parseUrl(val)\n this.protocol = protocol\n this.hostname = hostname\n this.port = port\n }\n }\n\n get searchParams () {\n return this.#search\n }\n\n // public method\n toString () {\n return this.href\n }\n\n toJSON () {\n return this.toString()\n }\n\n // convenient for deconstructor\n _toRaw () {\n return {\n protocol: this.protocol,\n port: this.port,\n host: this.host,\n hostname: this.hostname,\n pathname: this.pathname,\n hash: this.hash,\n search: this.search,\n origin: this.origin,\n href: this.href,\n }\n }\n}\n\nexport function parseUrl (url = '') {\n const result = {\n href: '',\n origin: '',\n protocol: '',\n hostname: '',\n host: '',\n port: '',\n pathname: '',\n search: '',\n hash: ''\n }\n if (!url || !isString(url)) return result\n\n url = url.trim()\n const PATTERN = /^(([^:/?#]+):)?\\/\\/(([^/?#]+):(.+)@)?([^/?#:]*)(:(\\d+))?([^?#]*)(\\?([^#]*))?(#(.*))?/\n const matches = url.match(PATTERN)\n\n if (!matches) return result\n\n // TODO: username & password ?\n result.protocol = matches[1] || 'https:'\n result.hostname = matches[6] || 'taro.com'\n result.port = matches[8] || ''\n result.pathname = matches[9] || '/'\n result.search = matches[10] || ''\n result.hash = matches[12] || ''\n result.href = url\n result.origin = result.protocol + '//' + result.hostname\n result.host = result.hostname + (result.port ? `:${result.port}` : '')\n\n return result\n}\n\nexport function parseUrlBase (url: string, base?: string) {\n const VALID_URL = /^(https?:)\\/\\//i\n\n let fullUrl = ''\n let parsedBase: ReturnType<typeof parseUrl> | null = null\n\n if (!isUndefined(base)) {\n base = String(base).trim()\n if (!VALID_URL.test(base)) throw new TypeError(`Failed to construct 'URL': Invalid base URL`)\n parsedBase = parseUrl(base)\n }\n\n url = String(url).trim()\n\n if (VALID_URL.test(url)) {\n fullUrl = url\n } else if (parsedBase) {\n if (url) {\n if (url.startsWith('//')) {\n fullUrl = parsedBase.protocol + url\n } else {\n fullUrl = parsedBase.origin + (url.startsWith('/') ? url : `/${url}`)\n }\n } else {\n fullUrl = parsedBase.href\n }\n } else {\n throw new TypeError(`Failed to construct 'URL': Invalid URL`)\n }\n\n return parseUrl(fullUrl)\n}\n","import { parseUrl } from '../bom/URL'\nimport { TaroElement } from './element'\n\nconst enum AnchorElementAttrs {\n HREF = 'href',\n PROTOCOL = 'protocol',\n HOST = 'host',\n SEARCH = 'search',\n HASH = 'hash',\n HOSTNAME = 'hostname',\n PORT = 'port',\n PATHNAME = 'pathname'\n}\n\nexport class AnchorElement extends TaroElement {\n public get href () {\n return this.props[AnchorElementAttrs.HREF] ?? ''\n }\n\n public set href (val: string) {\n this.setAttribute(AnchorElementAttrs.HREF, val)\n }\n\n get protocol () {\n return this.props[AnchorElementAttrs.PROTOCOL] ?? ''\n }\n\n get host () {\n return this.props[AnchorElementAttrs.HOST] ?? ''\n }\n\n get search () {\n return this.props[AnchorElementAttrs.SEARCH] ?? ''\n }\n\n get hash () {\n return this.props[AnchorElementAttrs.HASH] ?? ''\n }\n\n get hostname () {\n return this.props[AnchorElementAttrs.HOSTNAME] ?? ''\n }\n\n get port () {\n return this.props[AnchorElementAttrs.PORT] ?? ''\n }\n\n get pathname () {\n return this.props[AnchorElementAttrs.PATHNAME] ?? ''\n }\n\n public setAttribute (qualifiedName: string, value: any): void {\n if (qualifiedName === AnchorElementAttrs.HREF) {\n const willSetAttr = parseUrl(value)\n for (const k in willSetAttr) {\n super.setAttribute(k, willSetAttr[k])\n }\n } else {\n super.setAttribute(qualifiedName, value)\n }\n }\n\n}\n","import { TaroElement } from './element'\n\nexport class TransferElement extends TaroElement {\n public isTransferElement = true\n\n constructor (public dataName: string) {\n super()\n }\n\n public get _path () {\n return this.dataName\n }\n}\n","import { controlledComponent, isUndefined, toCamelCase } from '@tarojs/shared'\n\nimport {\n A,\n COMMENT,\n DOCUMENT_ELEMENT_NAME,\n ROOT_STR\n} from '../constants'\nimport { TaroElement } from '../dom/element'\nimport { createEvent } from '../dom/event'\nimport { eventSource } from '../dom/event-source'\nimport { FormElement } from '../dom/form'\nimport { NodeType } from '../dom/node_types'\nimport { TaroRootElement } from '../dom/root'\nimport { TaroText } from '../dom/text'\nimport env from '../env'\nimport { AnchorElement } from './anchor-element'\nimport { TransferElement } from './transfer'\n\nexport class TaroDocument extends TaroElement {\n public documentElement: TaroElement\n public head: TaroElement\n public body: TaroElement\n public createEvent = createEvent\n\n public constructor () {\n super()\n this.nodeType = NodeType.DOCUMENT_NODE\n this.nodeName = DOCUMENT_ELEMENT_NAME\n }\n\n public createElement (type: string): TaroElement | TaroRootElement | FormElement {\n const nodeName = type.toLowerCase()\n\n let element: TaroElement\n switch (true) {\n case nodeName === ROOT_STR:\n element = new TaroRootElement()\n return element\n case controlledComponent.has(nodeName):\n element = new FormElement()\n break\n case nodeName === A:\n element = new AnchorElement()\n break\n case nodeName === 'page-meta':\n case nodeName === 'navigation-bar':\n element = new TransferElement(toCamelCase(nodeName))\n break\n default:\n element = new TaroElement()\n break\n }\n\n element.nodeName = nodeName\n element.tagName = type.toUpperCase()\n\n return element\n }\n\n // an ugly fake createElementNS to deal with @vue/runtime-dom's\n // support mounting app to svg container since vue@3.0.8\n public createElementNS (_svgNS: string, type: string): TaroElement | TaroRootElement | FormElement {\n return this.createElement(type)\n }\n\n public createTextNode (text: string): TaroText {\n return new TaroText(text)\n }\n\n public getElementById<T extends TaroElement> (id: string | undefined | null): T | null {\n const el = eventSource.get(id)\n return isUndefined(el) ? null : el as T\n }\n\n public querySelector<T extends TaroElement> (query: string): T | null {\n // 为了 Vue3 的乞丐版实现\n if (/^#/.test(query)) {\n return this.getElementById<T>(query.slice(1))\n }\n return null\n }\n\n public querySelectorAll () {\n // fake hack\n return []\n }\n\n // @TODO: @PERF: 在 hydrate 移除掉空的 node\n public createComment (): TaroText {\n const textnode = new TaroText('')\n textnode.nodeName = COMMENT\n return textnode\n }\n\n get defaultView () {\n return env.window\n }\n}\n","import { isWebPlatform } from '@tarojs/shared'\n\nimport {\n APP,\n BODY,\n CONTAINER,\n HEAD,\n HTML\n} from '../constants'\nimport { TaroDocument } from '../dom/document'\nimport env from '../env'\n\nlet document\n\nif (process.env.TARO_ENV && !isWebPlatform()) {\n /* eslint-disable no-inner-declarations */\n function createDocument (): TaroDocument {\n /**\n * <document>\n * <html>\n * <head></head>\n * <body>\n * <container>\n * <app id=\"app\" />\n * </container>\n * </body>\n * </html>\n * </document>\n */\n const doc = new TaroDocument()\n const documentCreateElement = doc.createElement.bind(doc)\n const html = documentCreateElement(HTML)\n const head = documentCreateElement(HEAD)\n const body = documentCreateElement(BODY)\n const app = documentCreateElement(APP)\n app.id = APP\n const container = documentCreateElement(CONTAINER) // 多包一层主要为了兼容 vue\n\n doc.appendChild(html)\n html.appendChild(head)\n html.appendChild(body)\n body.appendChild(container)\n container.appendChild(app)\n\n doc.documentElement = html\n doc.head = head\n doc.body = body\n\n return doc\n }\n document = env.document = createDocument()\n} else {\n document = env.document\n}\n\nexport {\n document\n}\n","import type { TaroElement } from '../dom/element'\nimport type { Style } from '../dom/style'\n\nexport function getComputedStyle (element: TaroElement): Style {\n return element.style\n}\n","import { Events, hooks } from '@tarojs/shared'\n\nconst eventCenter = hooks.call('getEventCenter', Events)!\n\nexport type EventsType = typeof Events\nexport { eventCenter, Events }\n","/**\n * 一个小型缓存池,用于在切换页面时,存储一些上下文信息\n */\n\nexport class RuntimeCache<T> {\n name: string\n cache = new Map<string, T>()\n\n constructor (name: string) {\n this.name = name\n }\n\n has (identifier: string) {\n return this.cache.has(identifier)\n }\n\n set (identifier: string, ctx: T) {\n if (identifier && ctx) {\n this.cache.set(identifier, ctx)\n }\n }\n\n get (identifier: string): T | undefined {\n if (this.has(identifier)) return this.cache.get(identifier)\n }\n\n delete (identifier: string) {\n this.cache.delete(identifier)\n }\n}\n","import { isNumber, isString } from '@tarojs/shared'\n\nimport { CONTEXT_ACTIONS } from '../constants'\nimport { Events } from '../emitter/emitter'\nimport { RuntimeCache } from '../utils/cache'\n\nimport type * as LocationType from './location'\n\nexport interface HistoryState {\n state: Record<string, any> | null\n title: string\n url: string\n}\n\ntype Options = {\n window: any\n}\ntype HistoryContext = {\n location: LocationType.Location\n stack: HistoryState[]\n cur: number\n}\nconst cache = new RuntimeCache<HistoryContext>('history')\n\nexport class History extends Events {\n /* private property */\n #location: LocationType.Location\n #stack: HistoryState[] = []\n #cur = 0\n\n #window: any\n\n constructor (location: LocationType.Location, options: Options) {\n super()\n\n this.#window = options.window\n this.#location = location\n\n this.#location.on('__record_history__', (href: string) => {\n this.#cur++\n this.#stack = this.#stack.slice(0, this.#cur)\n this.#stack.push({\n state: null,\n title: '',\n url: href\n })\n }, null)\n\n this.#location.on('__reset_history__', (href: string) => {\n this.#reset(href)\n }, null)\n\n // 切换上下文行为\n\n this.on(CONTEXT_ACTIONS.INIT, () => {\n this.#reset()\n }, null)\n\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId: string) => {\n cache.set(pageId, {\n location: this.#location,\n stack: this.#stack.slice(),\n cur: this.#cur\n })\n }, null)\n\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId: string) => {\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId)!\n this.#location = ctx.location\n this.#stack = ctx.stack\n this.#cur = ctx.cur\n }\n }, null)\n\n this.on(CONTEXT_ACTIONS.DESTORY, (pageId: string) => {\n cache.delete(pageId)\n }, null)\n\n this.#reset()\n }\n\n #reset (href = '') {\n this.#stack = [\n {\n state: null,\n title: '',\n url: href || this.#location.href\n }\n ]\n this.#cur = 0\n }\n\n /* public property */\n get length () {\n return this.#stack.length\n }\n\n get state () {\n return this.#stack[this.#cur].state\n }\n\n /* public method */\n go (delta: number) {\n if (!isNumber(delta) || isNaN(delta)) return\n\n let targetIdx = this.#cur + delta\n targetIdx = Math.min(Math.max(targetIdx, 0), this.length - 1)\n\n this.#cur = targetIdx\n\n this.#location.trigger('__set_href_without_history__', this.#stack[this.#cur].url)\n this.#window.trigger('popstate', this.#stack[this.#cur])\n }\n\n back () {\n this.go(-1)\n }\n\n forward () {\n this.go(1)\n }\n\n pushState (state: any, title: string, url: string) {\n if (!url || !isString(url)) return\n this.#stack = this.#stack.slice(0, this.#cur + 1)\n this.#stack.push({\n state,\n title,\n url\n })\n this.#cur = this.length - 1\n\n this.#location.trigger('__set_href_without_history__', url)\n }\n\n replaceState (state: any, title: string, url: string) {\n if (!url || !isString(url)) return\n this.#stack[this.#cur] = {\n state,\n title,\n url\n }\n\n this.#location.trigger('__set_href_without_history__', url)\n }\n\n // For debug\n get cache () {\n return cache\n }\n}\n","import { AppInstance, PageInstance } from './dsl/instance'\n\nexport interface Router {\n params: Record<string, unknown>\n path: string\n $taroPath: string\n onReady: string\n onHide: string\n onShow: string\n exitState?: any\n}\n\ninterface Current {\n app: AppInstance | null\n router: Router | null\n page: PageInstance | null\n preloadData?: any\n}\n\nexport const Current: Current = {\n app: null,\n router: null,\n page: null\n}\n\nexport const getCurrentInstance = () => Current\n","import { isNumber, isString, warn } from '@tarojs/shared'\n\nimport { CONTEXT_ACTIONS } from '../constants'\nimport { getCurrentInstance } from '../current'\nimport { Events } from '../emitter/emitter'\nimport { RuntimeCache } from '../utils/cache'\nimport { URL } from './URL'\n\ntype PreValue = ReturnType<typeof URL.prototype._toRaw>\n\ntype Options = {\n window: any\n}\ntype LocationContext = {\n lastHref: string\n}\n\nconst INIT_URL = 'https://taro.com'\nconst cache = new RuntimeCache<LocationContext>('location')\n\nexport class Location extends Events {\n /* private property */\n #url = new URL(INIT_URL)\n #noCheckUrl = false\n #window: any\n\n constructor (options: Options) {\n super()\n\n this.#window = options.window\n\n this.#reset()\n\n this.on(\n '__set_href_without_history__',\n (href: string) => {\n this.#noCheckUrl = true\n\n const lastHash = this.#url.hash\n this.#url.href = generateFullUrl(href)\n\n if (lastHash !== this.#url.hash) {\n this.#window.trigger('hashchange')\n }\n\n this.#noCheckUrl = false\n },\n null\n )\n\n // 切换上下文行为\n this.on(\n CONTEXT_ACTIONS.INIT,\n () => {\n this.#reset()\n },\n null\n )\n\n this.on(\n CONTEXT_ACTIONS.RESTORE,\n (pageId: string) => {\n cache.set(pageId, {\n lastHref: this.href,\n })\n },\n null\n )\n\n this.on(\n CONTEXT_ACTIONS.RECOVER,\n (pageId: string) => {\n // 数据恢复时,不需要执行跳转\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId)!\n this.#noCheckUrl = true\n this.#url.href = ctx.lastHref\n this.#noCheckUrl = false\n }\n },\n null\n )\n\n this.on(\n CONTEXT_ACTIONS.DESTORY,\n (pageId: string) => {\n cache.delete(pageId)\n },\n null\n )\n }\n\n /* private method */\n #reset () {\n const Current = getCurrentInstance()\n const router = Current.router\n if (router) {\n const { path, params } = router\n const searchArr = Object.keys(params).map((key) => {\n return `${key}=${params[key]}`\n })\n const searchStr = searchArr.length > 0 ? '?' + searchArr.join('&') : ''\n const url = `${INIT_URL}${path.startsWith('/') ? path : '/' + path}${searchStr}`\n\n this.#url = new URL(url)\n\n this.trigger('__reset_history__', this.href)\n }\n }\n\n #getPreValue (): PreValue {\n return this.#url._toRaw()\n }\n\n #rollBack (href: string) {\n this.#url.href = href\n }\n\n #recordHistory () {\n this.trigger('__record_history__', this.href)\n }\n\n /**\n * 校验url的变化,是否需要更新history\n */\n #checkUrlChange (preValue: PreValue): boolean {\n if (this.#noCheckUrl) {\n return false\n }\n\n const { protocol, hostname, port, pathname, search, hash } = this.#url._toRaw()\n\n // 跨域三要素不允许修改\n if (protocol !== preValue.protocol || hostname !== preValue.hostname || port !== preValue.port) {\n this.#rollBack(preValue.href)\n return false\n }\n\n // pathname\n if (pathname !== preValue.pathname) {\n return true\n }\n\n // search\n if (search !== preValue.search) {\n return true\n }\n\n // hashchange\n if (hash !== preValue.hash) {\n this.#window.trigger('hashchange')\n return true\n }\n\n this.#rollBack(preValue.href)\n return false\n }\n\n /* public property */\n get protocol () {\n return this.#url.protocol\n }\n\n set protocol (val: string) {\n const REG = /^(http|https):$/i\n if (!val || !isString(val) || !REG.test(val.trim())) return\n\n val = val.trim()\n const preValue = this.#getPreValue()\n this.#url.protocol = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get host () {\n return this.#url.host\n }\n\n set host (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n\n const preValue = this.#getPreValue()\n this.#url.host = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get hostname () {\n return this.#url.hostname\n }\n\n set hostname (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n\n const preValue = this.#getPreValue()\n this.#url.hostname = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get port () {\n return this.#url.port\n }\n\n set port (val: string) {\n const xVal = Number((val = val.trim()))\n if (!isNumber(xVal) || xVal <= 0) return\n\n const preValue = this.#getPreValue()\n this.#url.port = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get pathname () {\n return this.#url.pathname\n }\n\n set pathname (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n\n const preValue = this.#getPreValue()\n this.#url.pathname = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get search () {\n return this.#url.search\n }\n\n set search (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n val = val.startsWith('?') ? val : `?${val}`\n\n const preValue = this.#getPreValue()\n this.#url.search = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get hash () {\n return this.#url.hash\n }\n\n // 小程序的navigateTo存在截断hash字符串的问题\n set hash (val: string) {\n if (!val || !isString(val)) return\n val = val.trim()\n val = val.startsWith('#') ? val : `#${val}`\n\n const preValue = this.#getPreValue()\n this.#url.hash = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get href () {\n return this.#url.href\n }\n\n set href (val: string) {\n const REG = /^(http:|https:)?\\/\\/.+/\n if (!val || !isString(val) || !REG.test((val = val.trim()))) return\n\n const preValue = this.#getPreValue()\n this.#url.href = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n get origin () {\n return this.#url.origin\n }\n\n set origin (val: string) {\n const REG = /^(http:|https:)?\\/\\/.+/\n if (!val || !isString(val) || !REG.test((val = val.trim()))) return\n\n const preValue = this.#getPreValue()\n this.#url.origin = val\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory()\n }\n\n /* public method */\n assign () {\n warn(true, '小程序环境中调用location.assign()无效.')\n }\n\n reload () {\n warn(true, '小程序环境中调用location.reload()无效.')\n }\n\n replace (url: string) {\n this.trigger('__set_href_without_history__', url)\n }\n\n toString () {\n return this.href\n }\n\n // For debug\n get cache () {\n return cache\n }\n}\n\nfunction generateFullUrl (val = '') {\n const origin = INIT_URL\n if (/^[/?#]/.test(val)) {\n return origin + val\n }\n return val\n}\n","import { isWebPlatform } from '@tarojs/shared'\n\nimport env from '../env'\n\nconst machine = 'Macintosh'\nconst arch = 'Intel Mac OS X 10_14_5'\nconst engine = 'AppleWebKit/534.36 (KHTML, like Gecko) NodeJS/v4.1.0 Chrome/76.0.3809.132 Safari/534.36'\n\nconst msg = '(' + machine + '; ' + arch + ') ' + engine\n\nexport const nav = isWebPlatform() ? env.window.navigator : {\n appCodeName: 'Mozilla',\n appName: 'Netscape',\n appVersion: '5.0 ' + msg,\n cookieEnabled: true,\n mimeTypes: [],\n onLine: true,\n platform: 'MacIntel',\n plugins: [],\n product: 'Taro',\n productSub: '20030107',\n userAgent: 'Mozilla/5.0 ' + msg,\n vendor: 'Joyent',\n vendorSub: ''\n}\n","// https://github.com/myrne/performance-now\nexport let now: () => number\n\n(function () {\n let loadTime\n if ((typeof performance !== 'undefined' && performance !== null) && performance.now) {\n now = () => performance.now()\n } else if (Date.now) {\n loadTime = Date.now()\n now = () => Date.now() - loadTime\n } else {\n loadTime = new Date().getTime()\n now = () => new Date().getTime() - loadTime\n }\n})()\n\nlet lastTime = 0\n\n// https://gist.github.com/paulirish/1579671\n// https://gist.github.com/jalbam/5fe05443270fa6d8136238ec72accbc0\nconst _raf = typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame !== null ? requestAnimationFrame : function (callback) {\n const _now = now()\n const nextTime = Math.max(lastTime + 16, _now) // First time will execute it immediately but barely noticeable and performance is gained.\n return setTimeout(function () { callback(lastTime = nextTime) }, nextTime - _now)\n}\n\nconst _caf = typeof cancelAnimationFrame !== 'undefined' && cancelAnimationFrame !== null\n ? cancelAnimationFrame\n : function (seed) {\n // fix https://github.com/NervJS/taro/issues/7749\n clearTimeout(seed)\n }\n\nexport {\n _caf as caf,\n _raf as raf\n}\n","import { isString, isWebPlatform } from '@tarojs/shared'\n\nimport { CONTEXT_ACTIONS } from '../constants'\nimport { Events } from '../emitter/emitter'\nimport env from '../env'\nimport { getComputedStyle } from './getComputedStyle'\nimport { History } from './history'\nimport { Location } from './location'\nimport { nav as navigator } from './navigator'\nimport { caf, raf } from './raf'\n\nlet window\n\nif (process.env.TARO_ENV && !isWebPlatform()) {\n class Window extends Events {\n navigator = navigator\n requestAnimationFrame = raf\n cancelAnimationFrame = caf\n getComputedStyle = getComputedStyle\n Date: DateConstructor\n\n location: Location\n history: History\n\n constructor () {\n super()\n\n const globalProperties = [\n ...Object.getOwnPropertyNames(global || {}),\n ...Object.getOwnPropertySymbols(global || {})\n ]\n\n globalProperties.forEach(property => {\n if (property === 'atob' || property === 'document') return\n if (!Object.prototype.hasOwnProperty.call(this, property)) {\n // 防止小程序环境下,window 上的某些 get 属性在赋值时报错\n try {\n this[property] = global[property] \n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Taro warn] window.${String(property)} 在赋值到 window 时报错`)\n }\n }\n }\n })\n\n this.Date ||= Date\n\n // 应用启动时,提供给需要读取历史信息的库使用\n this.location = new Location({ window: this })\n this.history = new History(this.location, { window: this })\n\n this.initEvent()\n }\n\n initEvent () {\n const _location = this.location\n const _history = this.history\n\n this.on(CONTEXT_ACTIONS.INIT, (pageId: string) => {\n // 页面onload,为该页面建立新的上下文信息\n _location.trigger(CONTEXT_ACTIONS.INIT, pageId)\n }, null)\n\n this.on(CONTEXT_ACTIONS.RECOVER, (pageId: string) => {\n // 页面onshow,恢复当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.RECOVER, pageId)\n _history.trigger(CONTEXT_ACTIONS.RECOVER, pageId)\n }, null)\n\n this.on(CONTEXT_ACTIONS.RESTORE, (pageId: string) => {\n // 页面onhide,缓存当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.RESTORE, pageId)\n _history.trigger(CONTEXT_ACTIONS.RESTORE, pageId)\n }, null)\n\n this.on(CONTEXT_ACTIONS.DESTORY, (pageId: string) => {\n // 页面onunload,清除当前页面的上下文信息\n _location.trigger(CONTEXT_ACTIONS.DESTORY, pageId)\n _history.trigger(CONTEXT_ACTIONS.DESTORY, pageId)\n }, null)\n }\n\n get document () {\n return env.document\n }\n\n addEventListener (event: string, callback: (arg: any) => void) {\n if (!isString(event)) return\n this.on(event, callback, null)\n }\n\n removeEventListener (event: string, callback: (arg: any) => void) {\n if (!isString(event)) return\n this.off(event, callback, null)\n }\n\n setTimeout (...args: Parameters<typeof setTimeout>) {\n return setTimeout(...args)\n }\n\n clearTimeout (...args: Parameters<typeof clearTimeout>) {\n return clearTimeout(...args)\n }\n }\n\n window = env.window = new Window()\n} else {\n window = env.window\n}\n\nexport const location = window.location\nexport const history = window.history\n\nexport {\n window\n}\n","import { TaroElement } from './element'\n\n// for Vue3\nexport class SVGElement extends TaroElement {}\n","/* eslint-disable dot-notation */\nimport {\n EMPTY_OBJ, ensure, getComponentsAlias, hooks, internalComponents,\n isArray, isFunction, isString, isUndefined, isWebPlatform, Shortcuts\n} from '@tarojs/shared'\n\nimport { raf } from '../bom/raf'\nimport { window } from '../bom/window'\nimport { BEHAVIORS, CONTEXT_ACTIONS, CUSTOM_WRAPPER, EXTERNAL_CLASSES, ON_HIDE, ON_LOAD, ON_READY, ON_SHOW, OPTIONS, PAGE_INIT, VIEW } from '../constants'\nimport { Current } from '../current'\nimport { eventHandler } from '../dom/event'\nimport { eventCenter } from '../emitter/emitter'\nimport env from '../env'\nimport { perf } from '../perf'\nimport { customWrapperCache, incrementId } from '../utils'\n\nimport type { PageConfig } from '@tarojs/taro'\nimport type { TaroRootElement } from '../dom/root'\nimport type { Func, MpInstance } from '../interface'\nimport type { Instance, PageInstance, PageProps } from './instance'\n\nconst instances = new Map<string, Instance>()\nconst pageId = incrementId()\nconst isWeb = isWebPlatform()\n\nexport function injectPageInstance (inst: Instance<PageProps>, id: string) {\n hooks.call('mergePageInstance', instances.get(id), inst)\n instances.set(id, inst)\n}\n\nexport function getPageInstance (id: string): Instance | undefined {\n return instances.get(id)\n}\n\nexport function removePageInstance (id: string) {\n instances.delete(id)\n}\n\nexport function addLeadingSlash (path?: string): string {\n if (path == null) {\n return ''\n }\n return path.charAt(0) === '/' ? path : '/' + path\n}\n\nexport function safeExecute (path: string, lifecycle: string, ...args: unknown[]) {\n const instance = instances.get(path)\n\n if (instance == null) {\n return\n }\n\n const func = hooks.call('getLifecycle', instance, lifecycle as keyof PageInstance)\n\n if (isArray(func)) {\n const res = func.map(fn => fn.apply(instance, args))\n return res[0]\n }\n\n if (!isFunction(func)) {\n return\n }\n\n return func.apply(instance, args)\n}\n\nexport function stringify (obj?: Record<string, unknown>) {\n if (obj == null) {\n return ''\n }\n const path = Object.keys(obj).map((key) => {\n return key + '=' + obj[key]\n }).join('&')\n return path === '' ? path : '?' + path\n}\n\nexport function getPath (id: string, options?: Record<string, unknown>): string {\n const idx = id.indexOf('?')\n if (isWeb) {\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options?.stamp ? { stamp: options.stamp } : {})}`\n } else {\n return `${idx > -1 ? id.substring(0, idx) : id}${stringify(options)}`\n }\n}\n\nexport function getOnReadyEventKey (path: string) {\n return path + '.' + ON_READY\n}\n\nexport function getOnShowEventKey (path: string) {\n return path + '.' + ON_SHOW\n}\n\nexport function getOnHideEventKey (path: string) {\n return path + '.' + ON_HIDE\n}\n\nexport function createPageConfig (component: any, pageName?: string, data?: Record<string, unknown>, pageConfig?: PageConfig) {\n // 小程序 Page 构造器是一个傲娇小公主,不能把复杂的对象挂载到参数上\n const id = pageName ?? `taro_page_${pageId()}`\n const [\n ONLOAD,\n ONUNLOAD,\n ONREADY,\n ONSHOW,\n ONHIDE,\n LIFECYCLES,\n SIDE_EFFECT_LIFECYCLES,\n ] = hooks.call('getMiniLifecycleImpl')!.page\n let pageElement: TaroRootElement | null = null\n let unmounting = false\n let prepareMountList: (() => void)[] = []\n\n function setCurrentRouter (page: MpInstance) {\n const router = isWeb ? page.$taroPath : page.route || page.__route__ || page.$taroPath\n Current.router = {\n params: page.$taroParams!,\n path: addLeadingSlash(router),\n $taroPath: page.$taroPath,\n onReady: getOnReadyEventKey(id),\n onShow: getOnShowEventKey(id),\n onHide: getOnHideEventKey(id)\n }\n if (!isUndefined(page.exitState)) {\n Current.router.exitState = page.exitState\n }\n }\n let loadResolver: (...args: unknown[]) => void\n let hasLoaded: Promise<void>\n const config: PageInstance = {\n [ONLOAD] (this: MpInstance, options: Readonly<Record<string, unknown>> = {}, cb?: Func) {\n hasLoaded = new Promise(resolve => { loadResolver = resolve })\n\n perf.start(PAGE_INIT)\n\n Current.page = this as any\n this.config = pageConfig || {}\n\n // this.$taroPath 是页面唯一标识\n const uniqueOptions = Object.assign({}, options, { $taroTimestamp: Date.now() })\n const $taroPath = this.$taroPath = getPath(id, uniqueOptions)\n if (isWeb) {\n config.path = $taroPath\n }\n // this.$taroParams 作为暴露给开发者的页面参数对象,可以被随意修改\n if (this.$taroParams == null) {\n this.$taroParams = uniqueOptions\n }\n\n setCurrentRouter(this)\n\n // 初始化当前页面的上下文信息\n if (!isWeb) {\n window.trigger(CONTEXT_ACTIONS.INIT, $taroPath)\n }\n\n const mount = () => {\n Current.app!.mount!(component, $taroPath, () => {\n pageElement = env.document.getElementById<TaroRootElement>($taroPath)\n\n ensure(pageElement !== null, '没有找到页面实例。')\n safeExecute($taroPath, ON_LOAD, this.$taroParams)\n loadResolver()\n if (!isWeb) {\n pageElement.ctx = this\n pageElement.performUpdate(true, cb)\n } else {\n isFunction(cb) && cb()\n }\n })\n }\n if (unmounting) {\n prepareMountList.push(mount)\n } else {\n mount()\n }\n },\n [ONUNLOAD] () {\n const $taroPath = this.$taroPath\n // 销毁当前页面的上下文信息\n if (!isWeb) {\n window.trigger(CONTEXT_ACTIONS.DESTORY, $taroPath)\n }\n // 触发onUnload生命周期\n safeExecute($taroPath, ONUNLOAD)\n unmounting = true\n Current.app!.unmount!($taroPath, () => {\n unmounting = false\n instances.delete($taroPath)\n if (pageElement) {\n pageElement.ctx = null\n pageElement = null\n }\n if (prepareMountList.length) {\n prepareMountList.forEach(fn => fn())\n prepareMountList = []\n }\n })\n },\n [ONREADY] () {\n hasLoaded.then(() => {\n // 触发生命周期\n safeExecute(this.$taroPath, ON_READY)\n // 通过事件触发子组件的生命周期\n raf(() => eventCenter.trigger(getOnReadyEventKey(id)))\n this.onReady.called = true\n })\n },\n [ONSHOW] (options = {}) {\n hasLoaded.then(() => {\n // 设置 Current 的 page 和 router\n Current.page = this as any\n setCurrentRouter(this)\n // 恢复上下文信息\n if (!isWeb) {\n window.trigger(CONTEXT_ACTIONS.RECOVER, this.$taroPath)\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_SHOW, options)\n // 通过事件触发子组件的生命周期\n raf(() => eventCenter.trigger(getOnShowEventKey(id)))\n })\n },\n [ONHIDE] () {\n // 缓存当前页面上下文信息\n if (!isWeb) {\n window.trigger(CONTEXT_ACTIONS.RESTORE, this.$taroPath)\n }\n // 设置 Current 的 page 和 router\n if (Current.page === this) {\n Current.page = null\n Current.router = null\n }\n // 触发生命周期\n safeExecute(this.$taroPath, ON_HIDE)\n // 通过事件触发子组件的生命周期\n eventCenter.trigger(getOnHideEventKey(id))\n }\n }\n\n LIFECYCLES.forEach((lifecycle) => {\n let isDefer = false\n lifecycle = lifecycle.replace(/^defer:/, () => {\n isDefer = true\n return ''\n })\n config[lifecycle] = function () {\n const exec = () => safeExecute(this.$taroPath, lifecycle, ...arguments)\n if (isDefer) {\n hasLoaded.then(exec)\n } else {\n return exec()\n }\n }\n })\n\n // onShareAppMessage 和 onShareTimeline 一样,会影响小程序右上方按钮的选项,因此不能默认注册。\n SIDE_EFFECT_LIFECYCLES.forEach(lifecycle => {\n if (component[lifecycle] ||\n component.prototype?.[lifecycle] ||\n component[lifecycle.replace(/^on/, 'enable')] ||\n pageConfig?.[lifecycle.replace(/^on/, 'enable')]\n ) {\n config[lifecycle] = function (...args) {\n const target = args[0]?.target\n if (target?.id) {\n const id = target.id\n const element = env.document.getElementById(id)\n if (element) {\n target.dataset = element.dataset\n }\n }\n return safeExecute(this.$taroPath, lifecycle, ...args)\n }\n }\n })\n\n config.eh = eventHandler\n\n if (!isUndefined(data)) {\n config.data = data\n }\n\n hooks.call('modifyPageObject', config)\n\n return config\n}\n\nexport function createComponentConfig (component: React.ComponentClass, componentName?: string, data?: Record<string, unknown>) {\n const id = componentName ?? `taro_component_${pageId()}`\n let componentElement: TaroRootElement | null = null\n const [ ATTACHED, DETACHED ] = hooks.call('getMiniLifecycleImpl')!.component\n\n const config: any = {\n [ATTACHED] () {\n perf.start(PAGE_INIT)\n this.pageIdCache = this.getPageId?.() || pageId()\n\n const path = getPath(id, { id: this.pageIdCache })\n\n Current.app!.mount!(component, path, () => {\n componentElement = env.document.getElementById<TaroRootElement>(path)\n ensure(componentElement !== null, '没有找到组件实例。')\n this.$taroInstances = instances.get(path)\n safeExecute(path, ON_LOAD)\n if (!isWeb) {\n componentElement.ctx = this\n componentElement.performUpdate(true)\n }\n })\n },\n [DETACHED] () {\n const path = getPath(id, { id: this.pageIdCache })\n\n Current.app!.unmount!(path, () => {\n instances.delete(path)\n if (componentElement) {\n componentElement.ctx = null\n }\n })\n },\n methods: {\n eh: eventHandler\n }\n }\n\n if (!isUndefined(data)) {\n config.data = data\n }\n\n [OPTIONS, EXTERNAL_CLASSES, BEHAVIORS].forEach(key => {\n config[key] = component[key] ?? EMPTY_OBJ\n })\n\n return config\n}\n\nexport function createRecursiveComponentConfig (componentName?: string) {\n const isCustomWrapper = componentName === CUSTOM_WRAPPER\n const [ ATTACHED, DETACHED ] = hooks.call('getMiniLifecycleImpl')!.component\n\n const lifeCycles = isCustomWrapper\n ? {\n [ATTACHED] () {\n const componentId = this.data.i?.sid || this.props.i?.sid\n if (isString(componentId)) {\n customWrapperCache.set(componentId, this)\n const el = env.document.getElementById(componentId)\n if (el) {\n el.ctx = this\n }\n }\n },\n [DETACHED] () {\n const componentId = this.data.i?.sid || this.props.i?.sid\n if (isString(componentId)) {\n customWrapperCache.delete(componentId)\n const el = env.document.getElementById(componentId)\n if (el) {\n el.ctx = null\n }\n }\n }\n }\n : EMPTY_OBJ\n\n return hooks.call('modifyRecursiveComponentConfig', \n { \n properties: {\n i: {\n type: Object,\n value: {\n [Shortcuts.NodeName]: getComponentsAlias(internalComponents)[VIEW]._num\n }\n },\n l: {\n type: String,\n value: ''\n }\n },\n options: {\n addGlobalClass: true,\n virtualHost: !isCustomWrapper\n },\n methods: {\n eh: eventHandler\n },\n ...lifeCycles }, { isCustomWrapper })\n}\n","import { isWebPlatform } from '@tarojs/shared'\n\nimport { Current } from './current'\nimport { TaroRootElement } from './dom/root'\nimport env from './env'\n\nimport type { Func } from './interface'\n\nconst TIMEOUT = 100\n\nexport const nextTick = (cb: Func, ctx?: Record<string, any>) => {\n const beginTime = Date.now()\n const router = Current.router\n\n const timerFunc = () => {\n setTimeout(function () {\n ctx ? cb.call(ctx) : cb()\n }, 1)\n }\n\n if (router === null) return timerFunc()\n\n const path = router.$taroPath\n\n /**\n * 三种情况\n * 1. 调用 nextTick 时,pendingUpdate 已经从 true 变为 false(即已更新完成),那么需要光等 100ms\n * 2. 调用 nextTick 时,pendingUpdate 为 true,那么刚好可以搭上便车\n * 3. 调用 nextTick 时,pendingUpdate 还是 false,框架仍未启动更新逻辑,这时最多轮询 100ms,等待 pendingUpdate 变为 true。\n */\n function next () {\n const pageElement: TaroRootElement | null = env.document.getElementById<TaroRootElement>(path)\n if (pageElement?.pendingUpdate) {\n if (isWebPlatform()) {\n // eslint-disable-next-line dot-notation\n pageElement.firstChild?.['componentOnReady']?.().then(() => {\n timerFunc()\n }) ?? timerFunc()\n } else {\n pageElement.enqueueUpdateCallback(cb, ctx)\n }\n } else if (Date.now() - beginTime > TIMEOUT) {\n timerFunc()\n } else {\n setTimeout(() => next(), 20)\n }\n }\n\n next()\n}\n"],"names":["componentsAlias","_getComponentsAlias","isWeb","document","cache","window","navigator","raf","caf","getComponentsAlias"],"mappings":";;;AAAO,MAAM,kBAAkB,GAAG,KAAI;AAC/B,MAAM,YAAY,GAAG,eAAc;AACnC,MAAM,YAAY,GAAG,WAAU;AAC/B,MAAM,QAAQ,GAAG,cAAa;AAC9B,MAAM,SAAS,GAAG,QAAO;AACzB,MAAM,QAAQ,GAAG,OAAM;AACvB,MAAM,IAAI,GAAG,OAAM;AACnB,MAAM,IAAI,GAAG,OAAM;AACnB,MAAM,IAAI,GAAG,OAAM;AACnB,MAAM,GAAG,GAAG,MAAK;AACjB,MAAM,SAAS,GAAG,YAAW;AAC7B,MAAM,qBAAqB,GAAG,YAAW;AACzC,MAAM,iBAAiB,GAAG,oBAAmB;AAC7C,MAAM,EAAE,GAAG,KAAI;AACf,MAAM,GAAG,GAAG,MAAK;AACjB,MAAM,KAAK,GAAG,QAAO;AACrB,MAAM,KAAK,GAAG,QAAO;AACrB,MAAM,KAAK,GAAG,QAAO;AACrB,MAAM,IAAI,GAAG,OAAM;AACnB,MAAM,WAAW,GAAG,cAAa;AACjC,MAAM,SAAS,GAAG,YAAW;AAC7B,MAAM,KAAK,GAAG,QAAO;AACrB,MAAM,OAAO,GAAG,UAAS;AACzB,MAAM,MAAM,GAAG,SAAQ;AACvB,MAAM,KAAK,GAAG,QAAO;AACrB,MAAM,KAAK,GAAG,QAAO;AACrB,MAAM,MAAM,GAAG,SAAQ;AACvB,MAAM,cAAc,GAAG,iBAAgB;AACvC,MAAM,MAAM,GAAG,SAAQ;AACvB,MAAM,cAAc,GAAG,gBAAe;AACtC,MAAM,IAAI,GAAG,OAAM;AACnB,MAAM,OAAO,GAAG,UAAS;AACzB,MAAM,UAAU,GAAG,YAAW;AAC9B,MAAM,QAAQ,GAAG,UAAS;AAC1B,MAAM,SAAS,GAAG,YAAW;AAC7B,MAAM,IAAI,GAAG,OAAM;AACnB,MAAM,WAAW,GAAG,aAAY;AAChC,MAAM,YAAY,GAAG,cAAa;AAClC,MAAM,SAAS,GAAG,YAAW;AAC7B,MAAM,UAAU,GAAG,aAAY;AAC/B,MAAM,OAAO,GAAG,UAAS;AACzB,MAAM,OAAO,GAAG,SAAQ;AACxB,MAAM,QAAQ,GAAG,UAAS;AAC1B,MAAM,OAAO,GAAG,SAAQ;AACxB,MAAM,OAAO,GAAG,SAAQ;AACxB,MAAM,OAAO,GAAG,UAAS;AACzB,MAAM,gBAAgB,GAAG,kBAAiB;AAC1C,MAAM,qBAAqB,GAAG,WAAU;AACxC,MAAM,SAAS,GAAG,YAAW;AAC7B,MAAM,CAAC,GAAG,IAAG;AAEpB;;AAEG;IACS,gBAKX;AALD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,GAAU,CAAA;AACV,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,GAAa,CAAA;AACb,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,GAAa,CAAA;AACb,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,GAAa,CAAA;AACf,CAAC,EALW,eAAe,KAAf,eAAe,GAK1B,EAAA,CAAA,CAAA;;ACvCD,MAAM,SAAS,GAA2B,EAAE,CAAA;AAE5C;;;;;;;AAOG;MACU,oBAAoB,CAAA;AAM/B,IAAA,WAAA,CAAa,QAA0B,EAAA;QAFhC,IAAO,CAAA,OAAA,GAAqB,EAAE,CAAA;AAGnC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;KACzB;AAED;;;;;;;AAOG;IACH,OAAO,CAAE,MAAgB,EAAE,OAA8B,EAAA;QACvD,IAAI,CAAC,UAAU,EAAE,CAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;AAE5B,QAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACrB;AAED;;;;AAIG;IACH,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAElB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AAC3B,SAAA;KACF;AAED;;;;AAIG;IACH,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;KACnD;AACF,CAAA;AAED;AACA,MAAM,UAAU,GAAG,CACjB,cAA+B,EAC/B,MAAuB,KACZ;AACX,IAAA,OAAO,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,GAAG,MAAK,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,GAAG,CAAA,CAAA;AAC/D,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,MAAsB,EAAE,OAA6B,KAAI;AAC5E,IAAA,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IAClG,QAAQ,MAAM,CAAC,IAAI;AACjB,QAAA,KAAA,eAAA;AACE,YAAA,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,qBAAqB;AAAE,oBAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;AAClD,gBAAA,OAAO,IAAI,CAAA;AACZ,aAAA;AACD,YAAA,OAAO,KAAK,CAAA;AACd,QAAA,KAAA,YAAA;AACE,YAAA,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,iBAAiB;AAAE,oBAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;AAC9C,gBAAA,OAAO,IAAI,CAAA;AACZ,aAAA;AACD,YAAA,OAAO,KAAK,CAAA;AACd,QAAA,KAAA,WAAA;AACE,YAAA,IAAI,SAAS,EAAE;AACb,gBAAA,OAAO,IAAI,CAAA;AACZ,aAAA;AACD,YAAA,OAAO,KAAK,CAAA;AACf,KAAA;AACH,CAAC,CAAA;AAED,IAAI,iBAAiB,GAAG,KAAK,CAAA;AAE7B,SAAS,WAAW,CAAE,QAA8B,EAAE,MAAsB,EAAA;AAC1E,IAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC7B,IAAI,CAAC,iBAAiB,EAAE;QACtB,iBAAiB,GAAG,IAAI,CAAA;QACxB,OAAO;AACJ,aAAA,OAAO,EAAE;aACT,IAAI,CAAC,MAAK;YACT,iBAAiB,GAAG,KAAK,CAAA;AACzB,YAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;gBAC3B,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;AAClD,aAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;AACL,KAAA;AACH,CAAC;AAEK,SAAU,cAAc,CAAE,MAAsB,EAAA;AACpD,IAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC3B,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAA;AAC5B,QAAA,KAAK,IAAI,CAAC,GAAoB,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE;AAChE,YAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAClE,gBAAA,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBAC7B,MAAK;AACN,aAAA;YACD,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,MAAK;AAC5B,SAAA;AACH,KAAC,CAAC,CAAA;AACJ;;MCjIa,gBAAgB,CAAA;AAG3B,IAAA,WAAA,CAAa,QAA0B,EAAA;AACrC,QAAA,IAAI,wBAAwB,EAAE;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAA;AAC/C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AACzC,gBAAA,OAAO,CAAC,IAAI,CAAC,oGAAoG,CAAC,CAAA;AACnH,aAAA;YACD,IAAI,CAAC,IAAI,GAAG;AACV,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,WAAW,EAAG,IAAkB;aACjC,CAAA;AACF,SAAA;KACF;IAEM,OAAO,CAAE,GAAG,IAAuC,EAAA;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;KAC3B;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAA;KACvB;IAEM,WAAW,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;KAC/B;IAED,OAAO,MAAM,CAAE,MAAsB,EAAA;QACnC,cAAc,CAAC,MAAM,CAAC,CAAA;KACvB;AACF;;ACrBM,MAAM,WAAW,GAAG,MAAK;IAC9B,MAAM,SAAS,GAAa,EAAE,CAAA;;IAE9B,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAClB,KAAA;;IAED,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AAC9B,QAAA,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAClB,KAAA;AACD,IAAA,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;AACzC,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACnB,IAAA,OAAO,MAAK;AACV,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;QAChD,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAA;AAE1C,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;AAE7B,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;AAEf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,YAAY,EAAE;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AACjB,YAAA,OAAO,GAAG,OAAO,GAAG,CAAC,CAAA;YACrB,IAAI,OAAO,GAAG,CAAC,EAAE;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACZ,MAAK;AACN,aAAA;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;AAChB,SAAA;AAED,QAAA,OAAO,GAAG,CAAA;AACZ,KAAC,CAAA;AACH,EAAC;AAEK,SAAU,SAAS,CAAE,IAAc,EAAA;AACvC,IAAA,OAAO,IAAI,CAAC,QAAQ,KAAA,CAAA,6BAA0B;AAChD,CAAC;AAEK,SAAU,MAAM,CAAE,IAAc,EAAA;AACpC,IAAA,OAAO,IAAI,CAAC,QAAQ,KAAA,CAAA,0BAAuB;AAC7C,CAAC;AAEK,SAAU,SAAS,CAAE,IAAc,EAAA;AACvC,IAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAA;AAClC,CAAC;AAEK,SAAU,gBAAgB,CAAE,EAAe,EAAA;AAC/C,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,IAAG;AAC5C,QAAA,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;AACvE,KAAC,CAAC,CAAA;AACF,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;AACrB,CAAC;AAED;;;;AAIG;AACa,SAAA,cAAc,CAAE,IAAwB,EAAE,IAAY,EAAA;;AACpE,IAAA,QAAQ,IAAI,GAAG,CAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,aAAa,KAAI,IAAI,GAAG;AAC3C,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,EAAE;AAC1E,YAAA,OAAO,KAAK,CAAA;AACb,SAAA;aAAM,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AACxC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AACF,KAAA;AAED,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAEK,SAAU,YAAY,CAAE,GAAW,EAAA;AACvC,IAAA,QAAQ,GAAG;AACT,QAAA,KAAK,KAAK;YACR,OAAsB,IAAA,uBAAA;AACxB,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,GAAG,CAAA;AACZ,QAAA,KAAK,KAAK;YACR,OAAsB,IAAA,uBAAA;AACxB,QAAA;AACE,YAAA,OAAO,GAAG,CAAA;AACb,KAAA;AACH,CAAC;AAEY,MAAA,kBAAkB,GAAG,IAAI,GAAG,GAA+B;SAMxD,MAAM,CAAE,IAAU,EAAE,UAAkB,EAAE,OAAmC,EAAA;AACzF,IAAA,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;AACvB,QAAA,OAAO,GAAG;AACR,YAAA,KAAK,EAAE,OAAO;SACf,CAAA;AACF,KAAA;AACD,IAAA,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAA,MAAA,CAAA,MAAA,CAAA,EAC9C,YAAY,EAAE,IAAI,EAClB,UAAU,EAAE,IAAI,EACb,EAAA,OAAO,EACV,CAAA;AACJ,CAAC;AAED,IAAIA,iBAAe,CAAA;SACH,kBAAkB,GAAA;IAChC,IAAI,CAACA,iBAAe,EAAE;AACpB,QAAAA,iBAAe,GAAGC,oBAAmB,CAAC,kBAAkB,CAAC,CAAA;AAC1D,KAAA;AACD,IAAA,OAAOD,iBAAe,CAAA;AACxB,CAAC;AAEK,SAAU,gBAAgB,CAAE,KAAa,EAAA;IAC7C,OAAO,KAAK,GAAG,IAAI,CAAA;AACrB;;MCpIa,SAAS,CAAA;IAKpB,WAAa,CAAA,SAAiB,EAAE,EAAe,EAAA;QAFvC,IAAS,CAAA,SAAA,GAAa,EAAE,CAAA;AAG9B,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;KAC3E;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;KACvB;AAED,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;KAC7B;IAED,GAAG,GAAA;QACD,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,OAAO,GAAG,KAAK,CAAA;QAEnB,MAAM,MAAM,GAAG,SAAS,CAAA;AACxB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;AAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAEhC,GAAG;AACD,YAAA,MAAM,KAAK,GAAW,MAAM,CAAC,KAAK,CAAC,CAAA;AAEnC,YAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/D,gBAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAErB,OAAO,GAAG,IAAI,CAAA;AACf,aAAA;AACF,SAAA,QAAQ,EAAE,KAAK,GAAG,MAAM,EAAC;AAE1B,QAAA,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,OAAO,EAAE,CAAA;AACf,SAAA;KACF;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,IAAI,OAAO,GAAG,KAAK,CAAA;QAEnB,MAAM,MAAM,GAAG,SAAS,CAAA;AACxB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;AAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAEhC,GAAG;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;AAE5B,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAAE,SAAQ;YAE5C,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAEtC,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7B,gBAAA,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;gBAE1B,OAAO,GAAG,IAAI,CAAA;AACf,aAAA;AACF,SAAA,QAAQ,EAAE,CAAC,GAAG,MAAM,EAAC;AAEtB,QAAA,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,OAAO,EAAE,CAAA;AACf,SAAA;KACF;AAED,IAAA,QAAQ,CAAE,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAA;QAEhD,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACxC;IAED,MAAM,CAAE,KAAa,EAAE,KAAc,EAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACnC,QAAA,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,IAAI,QAAQ,GAAG,KAAK,KAAK,KAAK,IAAI,KAAK,CAAA;AAE7E,QAAA,IAAI,MAAM,EAAE;;AAEV,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAA;AACpB,SAAA;AAED,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE;AACrC,YAAA,OAAO,KAAK,CAAA;AACb,SAAA;AAAM,aAAA;YACL,OAAO,CAAC,MAAM,CAAA;AACf,SAAA;KACF;IAED,OAAO,CAAE,KAAa,EAAE,iBAAyB,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;YAAE,OAAM;QAExF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE3C,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAA;YACpD,IAAI,CAAC,OAAO,EAAE,CAAA;AACb,SAAA;KACF;IAED,QAAQ,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACrD;AAEO,IAAA,iBAAiB,CAAE,KAAa,EAAA;QACtC,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAA;AAElD,QAAA,OAAO,IAAI,CAAA;KACZ;IAEO,OAAO,GAAA;QACb,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAA;KAC/B;AACF;;AC7GD,MAAM,WAAY,SAAQ,GAAG,CAAA;AAC3B,IAAA,UAAU,CAAE,KAAe,EAAA;AACzB,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAChB,QAAA,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG;AAAE,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;KACzC;AAED,IAAA,cAAc,CAAE,KAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AACtB,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;AAC5B,QAAA,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;KACtD;AACF,CAAA;AAEY,MAAA,WAAW,GAAiB,IAAI,WAAW;;ACZxD,MAAME,OAAK,GAAG,aAAa,EAAE,CAAA;AAC7B,MAAM,GAAG,GAAQ;IACf,MAAM,EAAEA,OAAK,GAAG,MAAM,GAAG,SAAS;IAClC,QAAQ,EAAEA,OAAK,GAAG,QAAQ,GAAG,SAAS;;;ACMxC,IAAI,aAAa,CAAA;AACjB,IAAI,eAAe,CAAA;AAEnB;;;;;AAKG;AACG,SAAU,OAAO,CAAE,IAA4B,EAAA;;;AAEnD,IAAA,eAAe,KAAf,eAAe,GAAK,kBAAkB,EAAE,CAAA,CAAA;;IAGxC,aAAa,KAAb,aAAa,GAAK,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAE,CAAA,CAAA;AAEhD,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;AAE9B,IAAA,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;QAChB,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,CAAgB,GAAA,wBAAE,IAAI,CAAC,SAAS;YAChC,CAAoB,IAAA,4BAAE,CAAA,CAAA,EAAA,GAAA,eAAe,CAAC,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,KAAI,GAAG;SAC7D,CAAA;AACF,KAAA;AAED,IAAA,MAAM,IAAI,GAAoB;AAC5B,QAAA,CAAA,IAAA,4BAAsB,QAAQ;QAC9B,GAAG,EAAE,IAAI,CAAC,GAAG;KACd,CAAA;AAED,IAAA,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;AACpB,KAAA;AAED,IAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AACpE,QAAA,IAAI,CAAoB,IAAA,0BAAA,GAAG,CAAU,OAAA,EAAA,QAAQ,EAAE,CAAA;QAC/C,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YAChD,IAAI,CAAA,IAAA,0BAAoB,GAAG,SAAS,CAAA;AACrC,SAAA;AACF,KAAA;AAED,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;AACtB,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QACzC,IACE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AACzB,YAAA,IAAI,KAAK,KAAK;AACd,YAAA,IAAI,KAAK,KAAK;AACd,YAAA,IAAI,KAAK,EAAE;AACX,YAAA,eAAe,KAAK,SAAS;YAC7B,eAAe,KAAK,YAAY,EAChC;YACA,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;AACpC,SAAA;AACD,QAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,eAAe,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;YAC/E,IAAI,CAAA,IAAA,0BAAoB,GAAG,UAAU,CAAA;AACtC,SAAA;QACD,IAAI,eAAe,KAAK,YAAY,EAAE;AACpC,YAAA,IAAI,+BAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;AACvC,SAAA;AACF,KAAA;;IAGD,IAAI,CAAA,IAAA,4BAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAE1F,IAAA,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;AACzB,QAAA,IAAI,CAAiB,IAAA,uBAAA,GAAG,IAAI,CAAC,SAAS,CAAA;AACvC,KAAA;AAED,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;AAC5B,IAAA,IAAI,OAAO,KAAK,EAAE,IAAI,QAAQ,KAAK,aAAa,EAAE;QAChD,IAAI,CAAA,IAAA,uBAAiB,GAAG,OAAO,CAAA;AAChC,KAAA;IAED,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE3C,IAAA,MAAM,EAAE,GAAG,IAAI,CAAA,IAAA,0BAAoB,CAAA;AACnC,IAAA,MAAM,cAAc,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;AAC1C,IAAA,IAAI,cAAc,EAAE;AAClB,QAAA,IAAI,CAAoB,IAAA,0BAAA,GAAG,cAAc,CAAC,IAAI,CAAA;AAC9C,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;YACvB,IAAI,IAAI,IAAI,cAAc,EAAE;gBAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;AAClB,aAAA;AACF,SAAA;AACF,KAAA;AAED,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;IAE7E,OAAO,OAAO,IAAI,IAAI,CAAA;AACxB;;MC1Ga,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;QACS,IAAU,CAAA,UAAA,GAAmC,EAAE,CAAA;KAsFvD;AApFQ,IAAA,gBAAgB,CAAE,IAAY,EAAE,OAAqB,EAAE,OAA2C,EAAA;AACvG,QAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;AAEzB,QAAA,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAEtD,IAAI,IAAI,KAAK,cAAc,EAAE;;YAE3B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAChD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC9C,OAAM;AACP,SAAA;AAED,QAAA,IAAI,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAChC,IAAI,MAAM,GAAG,KAAK,CAAA;AAClB,QAAA,IAAI,QAAQ,CAA0B,OAAO,CAAC,EAAE;AAC9C,YAAA,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACpC,YAAA,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC/B,SAAA;AAED,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,OAAO,GAAG,YAAA;gBACd,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AAC9B,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACzC,aAAC,CAAA;AACD,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAC7B,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAmC,CACvC,EAAA,EAAA,IAAI,EAAE,KAAK,IACX,CAAA;YACF,OAAM;AACP,SAAA;AAED,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAA;;;;;QAMzF,MAAM,UAAU,GAAG,OAAO,CAAA;AAC1B,QAAA,OAAO,GAAG,YAAA;YACR,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AAC1C,SAAC,CACA;AAAC,QAAA,OAAe,CAAC,UAAU,GAAG,UAAU,CAAA;QAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AACtC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AACrB,YAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACvB,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAClC,SAAA;KACF;IAEM,mBAAmB,CAAE,IAAY,EAAE,OAAqB,EAAA;AAC7D,QAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAEzB,IAAI,IAAI,KAAK,cAAc,EAAE;;AAE3B,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AAC1C,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YACxC,OAAM;AACP,SAAA;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,OAAM;AACP,SAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACtB,OAAM;AACP,SAAA;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAG;YACtC,IAAI,IAAI,KAAK,OAAO,IAAK,IAAY,CAAC,UAAU,KAAK,OAAO;AAAE,gBAAA,OAAO,IAAI,CAAA;AAC3E,SAAC,CAAC,CAAA;AAEF,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,QAAQ,IAAI,CAAA,sBAAA,CAAwB,CAAC,CAAA;AAEjG,QAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;KAC1B;IAEM,gBAAgB,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAA;QAChC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;AAChF,QAAA,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAA;KACjC;AACF;;ACtED,MAAM,UAAU,mCAAuB;AACvC,MAAM,MAAM,GAAG,WAAW,EAAE,CAAA;AAEtB,MAAO,QAAS,SAAQ,eAAe,CAAA;AAQ3C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAA;QAJF,IAAU,CAAA,UAAA,GAAoB,IAAI,CAAA;QAClC,IAAU,CAAA,UAAA,GAAe,EAAE,CAAA;AAS1B,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,IAAc,KAAK,MAAM,OAAO,CAAC,IAAmB,CAAC,CAAA;QALtE,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,MAAM,EAAE,CAAA;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACnB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;KAChC;AAIO,IAAA,gBAAgB,CAAE,OAAiB,EAAA;AACzC,QAAA,MAAM,eAAe,GAAG,MAAM,EAAE,CAAA;QAChC,MAAM,kBAAkB,GAAG,MAAK;AAC9B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AACnE,YAAA,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAChC,SAAC,CAAA;QAED,IAAI,CAAC,aAAa,CAAC;AACjB,YAAA,IAAI,EAAE,CAAG,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,UAAU,CAAE,CAAA;YACnC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,kBAAkB;AACtD,SAAA,CAAC,CAAA;KACH;AAEO,IAAA,iBAAiB,CAAE,KAAa,EAAA;QACtC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,KAAI;YAC5C,IAAI,SAAS,CAAC,KAAK,CAAC;gBAAE,OAAM;AAE5B,YAAA,IAAI,KAAK,IAAI,UAAU,GAAG,KAAK;gBAAE,OAAM;YAEvC,IAAI,CAAC,aAAa,CAAC;gBACjB,IAAI,EAAE,KAAK,CAAC,KAAK;AACjB,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3B,aAAA,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;KACH;AAED,IAAA,IAAW,KAAK,GAAA;;QACd,OAAO,CAAA,MAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,IAAI,CAAA;KACtC;AAES,IAAA,SAAS,CAAE,QAAkB,EAAA;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAE/C,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,sDAAsD,CAAC,CAAA;AAE5E,QAAA,OAAO,KAAK,CAAA;KACb;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;AAElC,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;YACnE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;YAErD,OAAO,CAAA,EAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAA;AACpD,SAAA;AAED,QAAA,OAAO,EAAE,CAAA;KACV;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,OAAO,CAAA,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAI,IAAI,CAAA;KACtE;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,OAAO,CAAA,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAI,IAAI,CAAA;KACtE;AAED,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,IAAI,CAAA,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAE,QAAQ,MAAA,CAAA,8BAA4B;AAClD,YAAA,OAAO,UAAyB,CAAA;AACjC,SAAA;AACD,QAAA,OAAO,IAAI,CAAA;KACZ;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;KAClC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,OAAO,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAA;KACjD;AAED;;;AAGG;;IAEH,IAAW,WAAW,CAAE,IAAY,EAAA;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC5C,MAAM,UAAU,GAAe,EAAE,CAAA;;QAGjC,OAAO,IAAI,CAAC,UAAU,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;AACvD,SAAA;QAED,IAAI,IAAI,KAAK,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;AAC5B,SAAA;AAAM,aAAA;YACL,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;AACjD,YAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YACzB,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACxB,SAAA;;QAGD,gBAAgB,CAAC,MAAM,CAAC;AACtB,YAAA,IAAI,EAA+B,WAAA;AACnC,YAAA,MAAM,EAAE,IAAI;YACZ,YAAY;YACZ,UAAU;AACX,SAAA,CAAC,CAAA;KACH;AAED;;;;;;;AAOG;AACI,IAAA,YAAY,CAAsB,QAAW,EAAE,QAA0B,EAAE,SAAmB,EAAA;AACnG,QAAA,IAAI,QAAQ,CAAC,QAAQ,KAAK,iBAAiB,EAAE;YAC3C,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,YAAY,KAAI;AAC9D,gBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;AAC9C,gBAAA,OAAO,YAAY,CAAA;aACpB,EAAE,QAAQ,CAAC,CAAA;AACZ,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;;;;QAKD,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;QAEpC,IAAI,KAAK,GAAG,CAAC,CAAA;;AAEb,QAAA,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAA;AAC1B,QAAA,IAAI,QAAQ,EAAE;;AAEZ,YAAA,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YAChC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;AAC3C,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC/B,SAAA;AAED,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAA;;QAE/C,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,QAAQ,EAAE;;AAEb,gBAAA,MAAM,WAAW,GAAG,gBAAgB,KAAK,CAAC,CAAA;AAC1C,gBAAA,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACxB,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,aAAa,CAAC;wBACjB,IAAI,EAAE,QAAQ,CAAC,KAAK;AACpB,wBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC9B,qBAAA,CAAC,CAAA;AACH,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,SAAS,EAAE;;gBAEpB,IAAI,CAAC,aAAa,CAAC;oBACjB,IAAI,EAAE,QAAQ,CAAC,KAAK;AACpB,oBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC9B,iBAAA,CAAC,CAAA;AACH,aAAA;AAAM,iBAAA;;;;;;;;;;;;AAYL,gBAAA,MAAM,IAAI,GAAG,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAA;gBACrC,IAAI,IAAI,GAAG,KAAK,EAAE;;oBAEhB,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACxB,iBAAA;AAAM,qBAAA;;AAEL,oBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;AAC9B,iBAAA;AACF,aAAA;AACF,SAAA;QAED,gBAAgB,CAAC,MAAM,CAAC;AACtB,YAAA,IAAI,EAA+B,WAAA;AACnC,YAAA,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,CAAC,QAAQ,CAAC;AACtB,YAAA,YAAY,EAAE,SAAS;AACrB,kBAAE,CAAC,QAAoB,CAAC;AACxB,kBAAE,EAAE;AACN,YAAA,WAAW,EAAE,SAAS;AACpB,kBAAG,QAAqB,CAAC,WAAW;AACpC,mBAAG,QAAQ,IAAI,IAAI,CAAC;YACtB,eAAe,EAAE,QAAQ,CAAC,eAAe;AAC1C,SAAA,CAAC,CAAA;AAEF,QAAA,OAAO,QAAQ,CAAA;KAChB;AAED;;;;;;;AAOG;AACI,IAAA,WAAW,CAAE,QAAkB,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;KACnC;AAED;;;;;;;AAOG;IACI,YAAY,CAAE,QAAkB,EAAE,QAAkB,EAAA;AACzD,QAAA,IAAI,QAAQ,CAAC,UAAU,KAAK,IAAI;YAAE,OAAM;;QAGxC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;;;;QAK3C,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;AAEpC,QAAA,OAAO,QAAQ,CAAA;KAChB;AAED;;;;;;AAMG;AACI,IAAA,WAAW,CAAsB,KAAQ,EAAE,OAAA,GAA8B,EAAE,EAAA;AAChF,QAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;AAEtC,QAAA,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,KAAK,EAAE;;;YAG5C,gBAAgB,CAAC,MAAM,CAAC;AACtB,gBAAA,IAAI,EAA+B,WAAA;AACnC,gBAAA,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,CAAC,KAAK,CAAC;gBACrB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;AACvC,aAAA,CAAC,CAAA;AACH,SAAA;;QAGD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AAChC,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAA;;QAGvB,IAAI,QAAQ,KAAK,KAAK,EAAE;AACtB,YAAA,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;AAClC,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,KAAK,KAAK,EAAE;YACpC,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACxB,SAAA;AAED,QAAA,OAAO,KAAK,CAAA;KACb;AAEM,IAAA,MAAM,CAAE,OAA4B,EAAA;;QACzC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;KAC5C;IAEM,aAAa,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;KAClC;AAEM,IAAA,aAAa,CAAE,OAAsB,EAAA;;QAC1C,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC,OAAO,CAAC,CAAA;KACnC;AAED,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,GAAG,CAAC,QAAQ,CAAA;KACpB;AAED,IAAA,OAAO,MAAM,CAAE,UAAkB,EAAE,OAAmC,EAAA;AACpE,QAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;KACtC;AACF;;ACnVD;;;AAGG;AAEH,MAAM,MAAM,GAAG,QAAQ,CAAA;AAEvB,MAAM,eAAe,GAAG;IACtB,KAAK;IACL,YAAY;IACZ,eAAe;IACf,WAAW;IACX,QAAQ;IACR,OAAO;IACP,SAAS;IACT,SAAS;IACT,UAAU;IACV,QAAQ;IACR,WAAW;IACX,SAAS;IACT,QAAQ;IACR,OAAO;IACP,KAAK;IACL,QAAQ;IACR,OAAO;IACP,WAAW;IACX,MAAM;IACN,eAAe;IACf,eAAe;IACf,YAAY;IACZ,cAAc;IACd,SAAS;IACT,OAAO;IACP,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,SAAS;IACT,aAAa;IACb,KAAK;IACL,YAAY;IACZ,eAAe;IACf,YAAY;IACZ,aAAa;IACb,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,eAAe;IACf,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bd,CAAA;AAED;AACA,SAAS,OAAO,CAAE,MAAc,EAAE,IAAc,EAAE,WAAqB,EAAA;IACrE,CAAC,WAAW,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC5C,IAAA,IAAI,CAAC,OAAO,CAAC,IAAI,IAAG;AAClB,QAAA,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;QACnC,IAAI,MAAM,KAAK,MAAM,EAAE;AACrB,YAAA,eAAe,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;AACtC,SAAA;AACH,KAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,KAAK,GAAG,OAAO,CAAA;AACrB,MAAM,KAAK,GAAG,OAAO,CAAA;AACrB,MAAM,KAAK,GAAG,OAAO,CAAA;AACrB,MAAM,KAAK,GAAG,OAAO,CAAA;AACrB,MAAM,IAAI,GAAG,MAAM,CAAA;AACnB,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAC/C,MAAM,wBAAwB,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;AACjE,MAAM,+BAA+B,GAAG,CAAC,GAAG,wBAAwB,EAAE,QAAQ,CAAC,CAAA;AAC/E,MAAM,0CAA0C,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,wBAAwB,CAAC,CAAA;AACtG,MAAM,qBAAqB,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;AAC1D,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;AAChE,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAClC,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AACvD,MAAM,iCAAiC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;AACtF,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAExC,OAAO,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAA;AACzC,OAAO,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;AAC5C,OAAO,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAA;AAC9C,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAA;AACpD,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,iBAAiB,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;AAC/F,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;AACvC,OAAO,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAA;AAC1C,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAA;AAC7C,OAAO,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAA;AAC/C,OAAO,CAAC,YAAY,EAAE,0CAA0C,CAAC,CAAA;AACjE,OAAO,CAAC,aAAa,EAAE,0CAA0C,CAAC,CAAA;AAClE,OAAO,CAAC,WAAW,EAAE,0CAA0C,CAAC,CAAA;AAChE,OAAO,CAAC,cAAc,EAAE,0CAA0C,CAAC,CAAA;AACnE,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;AACjD,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;AACnD,OAAO,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAA;AAC9C,OAAO,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAA;AAC/C,OAAO,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAA;AACzC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAA;AACrD,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAA;AACvC,OAAO,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;AACxC,OAAO,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;AACxC,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAA;AACzC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;AAChC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAC7B,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;AAChC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;AACjC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;AACjC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;AAClC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;AAClC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAA;AACnC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AAC9B,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;AAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;AACnG,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAA;AACnF,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;AAC7E,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAA;AACpM,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;AAC9C,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;AAC9G,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AACjD,OAAO,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAChD,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;AAChE,OAAO,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;AACrD,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAC1D,OAAO,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAC1E,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC9D,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;AACrC,OAAO,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAA;AAC7D,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAC7H,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;AACzE,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;AACtG,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;AAClC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AACjC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAEjC,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AACpD,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAA;AAClD,OAAO,CAAC,aAAa,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAA;AACnD,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAA;AACjD,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAA;AAC/D,OAAO,CAAC,eAAe,EAAE,+BAA+B,EAAE,IAAI,CAAC,CAAA;AAC/D,OAAO,CAAC,gBAAgB,EAAE,+BAA+B,EAAE,IAAI,CAAC,CAAA;AAChE,OAAO,CAAC,kBAAkB,EAAE,+BAA+B,EAAE,IAAI,CAAC,CAAA;AAClE,OAAO,CAAC,mBAAmB,EAAE,+BAA+B,EAAE,IAAI,CAAC,CAAA;AACnE,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;AACpH,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;AACnD,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;AACrE,OAAO,CAAC,SAAS,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAA;AAC5C,OAAO,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAA;AAC1C,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,iCAAiC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAA;AACrE,OAAO,CAAC,KAAK,EAAE,iCAAiC,EAAE,IAAI,CAAC,CAAA;AACvD,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AAC9E,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;AACrD,OAAO,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AAC9M,OAAO,CAAC,OAAO,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;AACzE,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AACnD,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAA;AAC5C,OAAO,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AAErE,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC;;ACvLtH,SAAS,SAAS,CAAE,GAAU,EAAA;IAC5B,gBAAgB,CAAC,MAAM,CAAC;AACtB,QAAA,IAAI,EAA+B,YAAA;QACnC,MAAM,EAAE,GAAG,CAAC,QAAQ;AACpB,QAAA,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,GAAG,CAAC,OAAO;AACtB,KAAA,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,aAAa,CAAE,GAAU,EAAA;AAChC,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAA;IAC5B,IAAI,OAAO,CAAC,KAAK,EAAE;QACjB,OAAO,CAAC,aAAa,CAAC;AACpB,YAAA,IAAI,EAAE,CAAG,EAAA,OAAO,CAAC,KAAK,CAAA,CAAA,EAAI,2BAAiB,CAAA;YAC3C,KAAK,EAAE,GAAG,CAAC,OAAO;AACnB,SAAA,CAAC,CAAA;AACH,KAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAe,MAAc,EAAE,QAAgB,EAAA;IAC9D,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAC3C,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,kBAAkB,EACtD,CAAY,SAAA,EAAA,QAAQ,CAAuC,qCAAA,CAAA,CAC5D,CAAA;AAED,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAE1B,IAAI,GAAG,KAAK,MAAM;QAAE,OAAM;IAE1B,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;AAEjC,IAAA,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,EAAE,EAAE;AAC1D,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACpC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC7B,KAAA;AAAM,SAAA;AACL,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA;AAC/B,KAAA;IAED,CAAC,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC;AAED,SAAS,SAAS,CAAE,IAAkB,EAAE,eAAyB,EAAA;IAC/D,MAAM,UAAU,GAAG,EAAE,CAAA;AAErB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QAEnC,IAAI,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAM;QAE1B,UAAU,CAAC,QAAQ,CAAC,GAAG;YACrB,GAAG,GAAA;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACjC,gBAAA,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAA;aAClD;AACD,YAAA,GAAG,CAAe,MAAc,EAAA;gBAC9B,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;aACtC;SACF,CAAA;AACF,KAAA;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;AACrD,CAAC;AAED,SAAS,aAAa,CAAE,YAAY,EAAA;AAClC,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AACjC,CAAC;MAEY,KAAK,CAAA;AAShB,IAAA,WAAA,CAAoB,OAAoB,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;KACjB;AAEO,IAAA,eAAe,CAAE,QAAgB,EAAA;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;AACrE,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,YAAY,EAAE,IAAI;YAClB,GAAG,EAAE,MAAK;gBACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;aACnC;AACD,YAAA,GAAG,EAAE,CAAC,MAAc,KAAI;gBACtB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;aACtC;AACF,SAAA,CAAC,CAAA;KACH;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE,CAAA;QAExC,MAAM,KAAK,GAAa,EAAE,CAAA;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAG;AAChC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACrB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC;gBAAE,OAAM;AAC3C,YAAA,IAAI,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;AACxD,YAAA,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1E,gBAAA,SAAS,GAAG,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAA;AAC5B,aAAA;YACD,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,SAAS,CAAK,EAAA,EAAA,GAAG,CAAG,CAAA,CAAA,CAAC,CAAA;AACrC,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACvB;IAED,IAAW,OAAO,CAAE,GAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,SAAS,CAAC,IAAI,CAAC,CAAA;AAEf,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAG;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;AAC3B,SAAC,CAAC,CAAA;AAEF,QAAA,IAAI,GAAG,KAAK,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;YACrB,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,OAAM;AACP,SAAA;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAE5B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAC5B,IAAI,IAAI,KAAK,EAAE,EAAE;gBACf,SAAQ;AACT,aAAA;;AAGD,YAAA,MAAM,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE7B,YAAA,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;gBACpB,SAAQ;AACT,aAAA;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;AAC9C,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACrB,aAAa,CAAC,IAAI,CAAC,CAAA;KACpB;IAEM,WAAW,CAAE,YAAoB,EAAE,KAAqB,EAAA;AAC7D,QAAA,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;;AAE3B,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;AACnC,SAAA;AAAM,aAAA;AACL,YAAA,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;AACzC,SAAA;QAED,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;AAClC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAA;AAC3B,SAAA;KACF;AAEM,IAAA,cAAc,CAAE,YAAoB,EAAA;AACzC,QAAA,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AAC1C,YAAA,OAAO,EAAE,CAAA;AACV,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA;AAC9B,QAAA,OAAO,KAAK,CAAA;KACb;AAEM,IAAA,gBAAgB,CAAE,YAAoB,EAAA;AAC3C,QAAA,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE,CAAA;AACV,SAAA;AAED,QAAA,OAAO,KAAK,CAAA;KACb;AACF,CAAA;AAED,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;AAEjC,KAAK,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,kBAA4B,KAAI;AACrE,IAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAC/B,QAAA,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;AACrC,KAAA;AAAM,SAAA;QACL,IAAI,OAAO,kBAAkB,KAAK,QAAQ;YAAE,OAAM;AAElD,QAAA,SAAS,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAA;AACvC,KAAA;AACH,CAAC,CAAC;;ACpMF,SAAS,UAAU,GAAA;AACjB,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;AAEe,SAAA,WAAW,CAAE,IAAiB,EAAE,OAAgB,EAAA;IAC9D,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,OAAO,GAAI,UAAU,CAAA;IAEpC,IAAI,MAAM,GAAuB,IAAI,CAAA;AAErC,IAAA,OAAO,MAAM,EAAE;QACb,IAAI,MAAM,CAAC,QAAQ,KAAA,CAAA,gCAA8B,MAAM,CAAC,MAAM,CAAC,EAAE;AAC/D,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACnB,SAAA;AAED,QAAA,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AACjC,KAAA;AAED,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,SAAS,CAAE,EAAe,EAAE,IAAiB,EAAA;AACpD,IAAA,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAA;IAChC,MAAM,iBAAiB,GAAG,EAAE,CAAC,QAAQ,KAA0B,CAAA,gCAAI,EAAE,CAAC,QAAQ,KAAA,CAAA,8BAA2B;;IAGzG,IAAI,UAAU,IAAI,iBAAiB,EAAE;AACnC,QAAA,OAAO,UAAyB,CAAA;AACjC,KAAA;IAED,IAAI,OAAO,GAAuB,EAAE,CAAA;IAEpC,GAAG;QACD,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;AAEvC,QAAA,IAAI,WAAW,EAAE;AACf,YAAA,OAAO,WAA0B,CAAA;AAClC,SAAA;AACD,QAAA,OAAO,GAAG,OAAO,CAAC,aAAa,CAAA;AAChC,KAAA,QAAQ,OAAO,EAAC;AAEjB,IAAA,OAAO,IAAI,CAAA;AACb;;ACzBM,MAAO,WAAY,SAAQ,QAAQ,CAAA;AAQvC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAA;QANF,IAAK,CAAA,KAAA,GAAwB,EAAE,CAAA;QAE/B,IAAO,CAAA,OAAA,GAA4B,SAAS,CAAA;QAKjD,IAAI,CAAC,QAAQ,GAAA,CAAA,6BAAwB;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;AAC5B,QAAA,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;KACjC;AAEO,IAAA,gBAAgB,CAAE,KAAgB,EAAA;;QAExC,IAAI,MAAM,GAAG,IAAI,CAAA;;AAEjB,QAAA,QAAQ,MAAM,GAAG,MAAM,CAAC,UAAkB,GAAG;YAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAE/C,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBACvB,SAAQ;AACT,aAAA;YAED,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;AACnC,gBAAA,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;AACtB,gBAAA,CAAC,CAAC,KAAK,GAAG,IAAI,CAAA;AACf,aAAA;AACF,SAAA;KACF;AAED,IAAA,IAAW,EAAE,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAE,CAAA;KAC9B;IAED,IAAW,EAAE,CAAE,GAAW,EAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;KAC3B;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;KACtC;IAED,IAAW,SAAS,CAAE,GAAW,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;KAC9B;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;KACtC;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;KAC3C;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;KACzC;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAA;QAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QACrE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;KAChE;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,IAAI,IAAI,GAAG,EAAE,CAAA;AACb,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;AAElC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAA,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;AAClC,SAAA;AAED,QAAA,OAAO,IAAI,CAAA;KACZ;IAED,IAAW,WAAW,CAAE,IAAY,EAAA;AAClC,QAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;KACzB;AAEM,IAAA,YAAY,CAAE,aAAqB,EAAA;QACxC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;KAC/C;IAEM,aAAa,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;KAClC;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,YAAA;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AAChC,SAAC,CAAA;KACF;;IAGD,IAAW,KAAK,CAAE,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KAChC;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KAChC;IAEM,YAAY,CAAE,aAAqB,EAAE,KAAU,EAAA;AACpD,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAC3C,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,kBAAkB,EACpD,CAAM,GAAA,EAAA,IAAI,CAAC,QAAQ,CAAM,GAAA,EAAA,aAAa,CAA2D,yDAAA,CAAA,CAClG,CAAA;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAEhG,IAAI,aAAa,KAAK,KAAK,EAAE;YAC3B,gBAAgB,CAAC,MAAM,CAAC;AACtB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,IAAI,EAA+B,YAAA;AACnC,gBAAA,aAAa,EAAE,aAAa;AAC5B,gBAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AAC3C,aAAA,CAAC,CAAA;AACH,SAAA;AAED,QAAA,QAAQ,aAAa;AACnB,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAe,CAAA;gBACpC,MAAK;AACP,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;;;AAGzB,oBAAA,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC7B,iBAAA;AACD,gBAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;gBACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;AAC5C,gBAAA,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAC5B,MAAK;AACP,YAAA;AACE,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,KAAe,CAAA;AAE3C,gBAAA,IAAI,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACrC,oBAAA,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;wBAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACnC,qBAAA;AACD,oBAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AACvE,iBAAA;gBACD,MAAK;AACR,SAAA;;QAGD,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAM;AAEvB,QAAA,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;QAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;QAC5C,MAAM,eAAe,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,CAAA;QACzD,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,IAAI,CAAA;AACvD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAExB,QAAA,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;AAE3C,QAAA,MAAM,wBAAwB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;AAC3D,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,wBAAwB,CAAE,CAAA;AAC5C,YAAA,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,KAAK,GAAG,KAAK;SAC/C,CAAA;AAED,QAAA,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,CAAC,CAAA;AAEjF,QAAA,IAAI,MAAM,EAAE;YACV,MAAM,kBAAkB,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,aAAa,CAAA;YAC5E,OAAO,CAAC,IAAI,GAAG,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,WAAW,CAAC,kBAAkB,CAAC,CAAA,CAAE,CAAA;AAC7D,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;AAE3B,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC1B,IAAI,wBAAwB,KAAK,SAAS,EAAE;;;gBAG1C,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,8BAAoB,CAAA;oBACtC,KAAK,EAAE,KAAK,GAAG,cAAc,IAC3B,IAAI,CAAC,gBAAgB,EAAE,GAAG,SAAS,GAAG,eAAe,CACtD;AACF,iBAAA,CAAC,CAAA;AACH,aAAA;AAAM,iBAAA,IAAI,UAAU,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE;;gBAE/C,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,8BAAoB,CAAA;AACtC,oBAAA,KAAK,EAAE,eAAe;AACvB,iBAAA,CAAC,CAAA;AACH,aAAA;AACF,SAAA;KACF;AAEM,IAAA,eAAe,CAAE,aAAqB,EAAA;AAC3C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAEjG,gBAAgB,CAAC,MAAM,CAAC;AACtB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,IAAI,EAA+B,YAAA;AACnC,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AAC3C,SAAA,CAAC,CAAA;QAEF,IAAI,aAAa,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAA;AACxB,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;AACxE,YAAA,IAAI,WAAW,EAAE;gBACf,OAAM;AACP,aAAA;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;gBAC7C,OAAM;AACP,aAAA;AACD,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;AACjC,SAAA;;QAGD,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAM;AAEvB,QAAA,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;QAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;QAC5C,MAAM,eAAe,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,CAAA;QACzD,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAA;AACrD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAExB,QAAA,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;AAE3C,QAAA,MAAM,wBAAwB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;AAC3D,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,wBAAwB,CAAE,CAAA;AAC5C,YAAA,KAAK,EAAE,EAAE;SACV,CAAA;AAED,QAAA,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,CAAC,CAAA;AAEhF,QAAA,IAAI,MAAM,EAAE;YACV,MAAM,kBAAkB,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,aAAa,CAAA;YAC5E,OAAO,CAAC,IAAI,GAAG,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,WAAW,CAAC,kBAAkB,CAAC,CAAA,CAAE,CAAA;AAC7D,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;AAE3B,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC1B,IAAI,wBAAwB,KAAK,SAAS,EAAE;;gBAE1C,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,8BAAoB,CAAA;oBACtC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,GAAG,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,eAAe,GAAG,aAAa,CAAC;AACxG,iBAAA,CAAC,CAAA;AACH,aAAA;AAAM,iBAAA,IAAI,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;;gBAElD,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,8BAAoB,CAAA;AACtC,oBAAA,KAAK,EAAE,aAAa;AACrB,iBAAA,CAAC,CAAA;AACH,aAAA;AACF,SAAA;KACF;AAEM,IAAA,YAAY,CAAE,aAAqB,EAAA;QACxC,MAAM,IAAI,GAAG,aAAa,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;AACrF,QAAA,OAAO,IAAI,KAAJ,IAAA,IAAA,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAA;KAClB;AAEM,IAAA,oBAAoB,CAAE,OAAe,EAAA;AAC1C,QAAA,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,KAAI;AAC9B,YAAA,OAAO,EAAE,CAAC,QAAQ,KAAK,OAAO,KAAK,OAAO,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAA;AACpE,SAAC,CAAC,CAAA;KACH;AAEM,IAAA,sBAAsB,CAAE,SAAiB,EAAA;QAC9C,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAEhD,QAAA,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,KAAI;AAC9B,YAAA,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAA;AAC9B,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACrD,SAAC,CAAC,CAAA;KACH;AAEM,IAAA,aAAa,CAAE,KAAgB,EAAA;AACpC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAE7C,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACvB,YAAA,OAAO,KAAK,CAAA;AACb,SAAA;QAED,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;AACnC,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;AAC7B,YAAA,IAAI,MAAe,CAAA;YACnB,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,gBAAA,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;AACvB,aAAA;AAAM,iBAAA;gBACL,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;gBAC9C,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACpC,aAAA;YACD,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;AAClD,gBAAA,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAA;AAC9B,aAAA;YAED,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE;AACzC,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;AACpE,gBAAA,IAAI,GAAG,EAAE;AAAE,oBAAA,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,MAAM,CAAA;AAAE,iBAAA;AAC3D,aAAA;AAED,YAAA,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;gBAC7B,MAAK;AACN,aAAA;AACF,SAAA;QAED,IAAI,KAAK,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;AAC7B,SAAA;QAED,OAAO,SAAS,IAAI,IAAI,CAAA;KACzB;AAEM,IAAA,gBAAgB,CAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAA;AAC7C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAE,CAAA;QAEpD,IAAI,UAAU,GAAG,IAAI,CAAA;QACrB,IAAI,QAAQ,CAAsB,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE;YAC1E,UAAU,GAAG,KAAK,CAAA;YAClB,OAAO,OAAO,CAAC,UAAU,CAAA;AAC1B,SAAA;QAED,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAA;AAE1E,QAAA,IAAI,UAAU,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AACxF,YAAA,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;YAC5C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;YACxC,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,IAAI,EAAE,CAAG,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,8BAAoB,CAAA;AAC3C,gBAAA,KAAK,EAAE,KAAK;AACb,aAAA,CAAC,CAAA;AACH,SAAA;QAED,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;KAC/C;AAEM,IAAA,mBAAmB,CAAE,IAAI,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,EAAA;AAC1D,QAAA,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAExC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAE,CAAA;QAEpD,KAAK,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAA;AAE7E,QAAA,IAAI,UAAU,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AACxF,YAAA,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;AAC5C,YAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAU,OAAA,EAAA,IAAI,EAAE,GAAG,CAAQ,KAAA,EAAA,IAAI,EAAE,CAAA;YACxE,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAA;YAC9C,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,IAAI,EAAE,CAAG,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,8BAAoB,CAAA;AAC3C,gBAAA,KAAK,EAAE,UAAU;AAClB,aAAA,CAAC,CAAA;AACH,SAAA;KACF;AAED,IAAA,OAAO,MAAM,CAAE,UAAkB,EAAE,OAAmC,EAAA;AACpE,QAAA,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;KACzC;AACF;;AC3YY,MAAA,OAAO,GAAY;AAC9B,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,KAAK,EAAE,KAAK;;;ACcd,SAAS,YAAY,GAAA;IACnB,OAAO;AACL,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,IAAI,EAAE,CAAC;KACR,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAE,QAAkB,EAAE,GAAW,EAAE,GAAW,EAAA;AACjE,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;IAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,CAAA;IACxC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,QAAQ,CAAC,IAAI,EAAE,CAAA;AACf,YAAA,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;AACpB,SAAA;AAAM,aAAA;YACL,QAAQ,CAAC,MAAM,EAAE,CAAA;AAClB,SAAA;AACF,KAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAE,QAAkB,EAAE,GAAW,EAAE,GAAW,EAAA;AACjE,IAAA,MAAM,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAA;IAChC,OAAO,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AACzC,CAAC;AAED,SAAS,YAAY,CAAE,QAAkB,EAAA;IACvC,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,CAAA;AACvB,SAAS,gBAAgB,CAAE,IAAY,EAAA;AACrC,IAAA,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,SAAS,GAAG,GAAG,CAAA;AACrB,SAAS,eAAe,CAAE,IAAY,EAAA;AACpC,IAAA,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,cAAc,CAAE,OAAe,EAAA;AACtC,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IAClC,IAAI,OAAO,CAAC,IAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACxC,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;AACD,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,YAAY,GAAG,aAAa,CAAA;AAElC,SAAS,WAAW,CAAE,GAAW,EAAE,KAAa,EAAA;AAC9C,IAAA,OAAO,IAAI,EAAE;QACX,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACvC,QAAA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE;AAClB,YAAA,OAAO,OAAO,CAAA;AACf,SAAA;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;AACpC,QAAA,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3D,YAAA,OAAO,OAAO,CAAA;AACf,SAAA;AACD,QAAA,KAAK,GAAG,OAAO,GAAG,CAAC,CAAA;AACpB,KAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAE,MAAc,EAAE,SAAiB,EAAE,IAAY,EAAA;IACjE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAAE,QAAA,OAAO,KAAK,CAAA;AAExD,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;AAGvB,IAAA,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,eAAe,CAAC,IAAI,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAA;YACvC,MAAK;AACN,SAAA;AACF,KAAA;;AAGD,IAAA,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,eAAe,CAAC,IAAI,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAA;AACvC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AACF,KAAA;AACH,CAAC;MAEY,MAAM,CAAA;AAOjB,IAAA,WAAA,CAAa,IAAY,EAAA;QANjB,IAAM,CAAA,MAAA,GAAY,EAAE,CAAA;QAEpB,IAAQ,CAAA,QAAA,GAAa,YAAY,EAAE,CAAA;AAKzC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;KACjB;IAEM,IAAI,GAAA;AACT,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;AAEvB,QAAA,OAAO,QAAQ,CAAC,KAAK,GAAG,GAAG,EAAE;AAC3B,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;YAC5B,IAAI,CAAC,QAAQ,EAAE,CAAA;AACf,YAAA,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,EAAE;AAC5B,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;AACnD,gBAAA,IAAI,SAAS,EAAE;oBACb,IAAI,CAAC,WAAW,EAAE,CAAA;AACnB,iBAAA;AAAM,qBAAA;AACL,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;AAC9B,oBAAA,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;AAC3B,wBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AAC1B,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;QAED,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;IAEO,QAAQ,GAAA;QACd,MAAM,IAAI,GAAG,MAAM,CAAA;AACnB,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAC/B,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC/C,QAAA,IAAI,OAAO,KAAK,QAAQ,CAAC,KAAK,EAAE;YAC9B,OAAM;AACP,SAAA;AACD,QAAA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE;AAClB,YAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAA;AACtB,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AACnD,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AACrC,QAAA,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;KAC9D;IAEO,WAAW,GAAA;QACjB,MAAM,IAAI,GAAG,SAAS,CAAA;AACtB,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAC/B,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;QACpC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAC/B,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;AACpD,QAAA,IAAI,UAAU,GAAG,UAAU,GAAG,CAAC,CAAA;AAC/B,QAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;AACrB,YAAA,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAA;AACtC,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;AACtD,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,IAAI;YACJ,OAAO;AACP,YAAA,QAAQ,EAAE;gBACR,KAAK;AACL,gBAAA,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC;AAC5B,aAAA;AACF,SAAA,CAAC,CAAA;KACH;IAEO,OAAO,GAAA;QACb,IAAI,CAAC,YAAY,EAAE,CAAA;AACnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAClC,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,IAAI,CAAC,UAAU,EAAE,CAAA;AAEjB,QAAA,OAAO,OAAO,CAAA;KACf;IAEO,YAAY,GAAA;QAClB,MAAM,IAAI,GAAG,WAAW,CAAA;AACxB,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAE/B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;AAClD,QAAA,MAAM,KAAK,GAAG,UAAU,KAAK,GAAG,CAAA;AAChC,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AACpC,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;KACvD;IAEO,UAAU,GAAA;QAChB,MAAM,IAAI,GAAG,SAAS,CAAA;AACtB,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC7C,QAAA,MAAM,KAAK,GAAG,SAAS,KAAK,GAAG,CAAA;AAC/B,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3C,QAAA,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;KACrD;IAEO,WAAW,GAAA;QACjB,MAAM,IAAI,GAAG,KAAK,CAAA;AAClB,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;AACvB,QAAA,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;QAC1B,OAAO,KAAK,GAAG,GAAG,EAAE;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC/B,YAAA,MAAM,SAAS,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAA;AAC3E,YAAA,IAAI,SAAS;gBAAE,MAAK;AACpB,YAAA,KAAK,EAAE,CAAA;AACR,SAAA;AAED,QAAA,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAA;QACnB,OAAO,GAAG,GAAG,GAAG,EAAE;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC7B,YAAA,MAAM,SAAS,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAA;AAC3E,YAAA,IAAI,CAAC,SAAS;gBAAE,MAAK;AACrB,YAAA,GAAG,EAAE,CAAA;AACN,SAAA;AAED,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACtC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,IAAI;AACJ,YAAA,OAAO,EAAE,OAAO;AACjB,SAAA,CAAC,CAAA;AAEF,QAAA,OAAO,OAAO,CAAA;KACf;IAEO,SAAS,GAAA;QACf,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;AACvC,QAAA,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAA;AAC3B,QAAA,IAAI,KAAK,GAAkB,IAAI,CAAA;AAC/B,QAAA,IAAI,SAAS,GAAG,MAAM,CAAA;AACtB,QAAA,MAAM,KAAK,GAAa,EAAE,CAAA;AAC1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;QACvB,OAAO,MAAM,GAAG,GAAG,EAAE;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAChC,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,MAAM,UAAU,GAAG,IAAI,KAAK,KAAK,CAAA;AACjC,gBAAA,IAAI,UAAU,EAAE;oBACd,KAAK,GAAG,IAAI,CAAA;AACb,iBAAA;AACD,gBAAA,MAAM,EAAE,CAAA;gBACR,SAAQ;AACT,aAAA;YAED,MAAM,QAAQ,GAAG,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAA;AAC7C,YAAA,IAAI,QAAQ,EAAE;gBACZ,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;AAC1C,iBAAA;gBACD,MAAK;AACN,aAAA;YAED,IAAI,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE;gBACtC,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;AAC1C,iBAAA;AACD,gBAAA,SAAS,GAAG,MAAM,GAAG,CAAC,CAAA;AACtB,gBAAA,MAAM,EAAE,CAAA;gBACR,SAAQ;AACT,aAAA;YAED,MAAM,YAAY,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAA;AAClD,YAAA,IAAI,YAAY,EAAE;gBAChB,KAAK,GAAG,IAAI,CAAA;AACZ,gBAAA,MAAM,EAAE,CAAA;gBACR,SAAQ;AACT,aAAA;AAED,YAAA,MAAM,EAAE,CAAA;AACT,SAAA;AAED,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAEpC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAA;QACzB,MAAM,IAAI,GAAG,WAAW,CAAA;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AAC7B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACpC,YAAA,IAAI,SAAS,EAAE;gBACb,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC/B,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC5C,oBAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,wBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,UAAU,CAAA;wBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;wBACvC,CAAC,IAAI,CAAC,CAAA;wBACN,SAAQ;AACT,qBAAA;oBACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC9B,CAAC,IAAI,CAAC,CAAA;AACN,oBAAA,IAAI,SAAS,EAAE;AACb,wBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,GAAG,GAAG,SAAS,CAAA;wBACtC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;wBACvC,CAAC,IAAI,CAAC,CAAA;wBACN,SAAQ;AACT,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACtB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC/B,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC3C,oBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,UAAU,CAAA;oBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;oBACvC,CAAC,IAAI,CAAC,CAAA;oBACN,SAAQ;AACT,iBAAA;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;gBACvC,SAAQ;AACT,aAAA;YAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACrC,SAAA;KACF;AAEO,IAAA,WAAW,CAAE,OAAe,EAAA;AAClC,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAC/B,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;AACzC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;AACvB,QAAA,OAAO,QAAQ,CAAC,KAAK,GAAG,GAAG,EAAE;AAC3B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;AAClD,YAAA,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE;gBAClB,IAAI,CAAC,QAAQ,EAAE,CAAA;gBACf,MAAK;AACN,aAAA;AAED,YAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AACrC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;AAC3B,YAAA,IAAI,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtC,MAAK;AACN,aAAA;AACF,SAAA;KACF;AACF;;AClWK,SAAU,OAAO,CAAE,GAAW,EAAA;IAClC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AACzB,IAAA,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;IAC1B,MAAM,YAAY,GAAG,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,CAAA;IAC/C,IAAI,YAAY,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QAC3C,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACzB,KAAA;AACD,IAAA,OAAO,GAAG,CAAA;AACZ;;ACFA,MAAM,YAAY,GAAG,GAAG,CAAA;AACxB,MAAM,aAAa,GAAG,GAAG,CAAA;AACzB,MAAM,cAAc,GAAG,GAAG,CAAA;AAC1B,MAAM,WAAW,GAAG,GAAG,CAAA;AACvB,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAC5B,MAAM,0BAA0B,GAAG,GAAG,CAAA;AACtC,MAAM,2BAA2B,GAAG,GAAG,CAAA;AAqBzB,MAAO,cAAc,CAAA;AAAnC,IAAA,WAAA,GAAA;QACE,IAAM,CAAA,MAAA,GAAa,EAAE,CAAA;KAoMtB;AAlMC,IAAA,YAAY,CAAE,GAAW,EAAA;QACvB,MAAM,SAAS,GAAG,wCAAwC,CAAA;QAC1D,IAAI,IAAI,GAAG,GAAG,CAAA;;AAGd,QAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAU,KAAI;AAC/C,YAAA,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;AAC5B,YAAA,OAAO,EAAE,CAAA;AACX,SAAC,CAAC,CAAA;AAEF,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;KACnB;AAED,IAAA,gBAAgB,CAAE,KAAa,EAAA;QAC7B,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AAEpC,QAAA,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE;YACd,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;AACvC,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AAE3C,YAAA,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;YACrC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,EAAA;AAClD,gBAAA,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;gBACzC,OAAO,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAA;AACjB,aAAC,CAAC,CAAA;YACF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YACnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YAEzC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;gBACzB,OAAO,IAAI,GAAG,CAAA;AACf,aAAA;YACD,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;gBACjC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;AAC5C,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,OAAO;oBACP,YAAY;AACb,iBAAA,CAAC,CAAA;AACJ,aAAC,CAAC,CAAA;YACF,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;AAC3B,YAAA,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AACjC,SAAA;;KAEF;AAED,IAAA,aAAa,CAAE,GAAW,EAAA;QACxB,MAAM,IAAI,GAAG,GAAG;AACb,aAAA,IAAI,EAAE;AACN,aAAA,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC;AAC9B,aAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,aAAA,OAAO,CAAC,4CAA4C,EAAE,SAAS,CAAC;aAChE,KAAK,CAAC,GAAG,CAAC,CAAA;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAG;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAChC,YAAA,MAAM,QAAQ,GAAc;gBAC1B,OAAO,EAAE,SAAS,KAAK,gBAAgB;gBACvC,gBAAgB,EAAE,SAAS,KAAK,0BAA0B;gBAC1D,iBAAiB,EAAE,SAAS,KAAK,2BAA2B;AAC5D,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,KAAK,EAAE,EAAE;aACV,CAAA;YAED,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;YAGjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,EAAU,EAAA;AACvD,gBAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAClC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AAElC,gBAAA,MAAM,IAAI,GAAG;oBACX,GAAG;oBACH,GAAG;oBACH,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK;iBAC1B,CAAA;AACD,gBAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,gBAAA,OAAO,EAAE,CAAA;AACX,aAAC,CAAC,CAAA;YAEF,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,UAAU,CAAC,EAAE,EAAU,EAAA;AAClE,gBAAA,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;;oBAEzB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC3B,iBAAA;AAAM,qBAAA,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE;;AAEnC,oBAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAClC,iBAAA;AACD,gBAAA,OAAO,EAAE,CAAA;AACX,aAAC,CAAC,CAAA;;YAGF,IAAI,IAAI,KAAK,EAAE,EAAE;AACf,gBAAA,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAA;AACpB,aAAA;AAED,YAAA,OAAO,QAAQ,CAAA;AACjB,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,SAAS,CAAA;KACjB;AAED,IAAA,UAAU,CAAE,OAAe,EAAE,EAAqB,EAAE,IAAc,EAAA;QAChE,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC,KAAI;AAC/E,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,YAAA,IAAI,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;YAChC,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;AAE1C,YAAA,IAAI,CAAA,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,gBAAgB,MAAI,YAAY,aAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,iBAAiB,CAAA,EAAE;gBACrE,QAAQ,GAAG,YAAY,CAAA;gBACvB,GAAG,IAAI,CAAC,CAAA;AACR,gBAAA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACb,aAAA;AAED,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAEtD,YAAA,IAAI,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE;AACxC,gBAAA,IAAI,IAAI,GAAsB,kBAAkB,CAAC,EAAE,CAAC,CAAA;AACpD,gBAAA,OAAO,IAAI,EAAE;oBACX,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE;wBACpF,OAAO,GAAG,IAAI,CAAA;wBACd,MAAK;AACN,qBAAA;AACD,oBAAA,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;oBAC/B,OAAO,GAAG,KAAK,CAAA;AAChB,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,OAAO,IAAI,QAAQ,CAAC,iBAAiB,EAAE;AACzC,gBAAA,MAAM,IAAI,GAAsB,kBAAkB,CAAC,EAAE,CAAC,CAAA;AACtD,gBAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBAC5B,OAAO,GAAG,KAAK,CAAA;AAChB,iBAAA;AAAM,qBAAA;AACL,oBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;oBACrF,IAAI,CAAC,cAAc,EAAE;wBACnB,OAAO,GAAG,KAAK,CAAA;AAChB,qBAAA;AACF,iBAAA;AACF,aAAA;AAED,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,GAAG,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnC,OAAO,GAAG,GAAG,OAAO,CAAA;AACrB,iBAAA;AAAM,qBAAA,IAAI,GAAG,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,oBAAA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACb,iBAAA;AACF,aAAA;AAAM,iBAAA;;AAEL,gBAAA,IAAI,QAAQ,CAAC,OAAO,IAAI,GAAG,GAAG,CAAC,EAAE;AAC/B,oBAAA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACZ,oBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzD,wBAAA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACb,qBAAA;AACF,iBAAA;AACF,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;AACN,QAAA,OAAO,GAAG,CAAA;KACX;AAED,IAAA,YAAY,CAAE,OAAe,EAAE,EAAqB,EAAE,QAAmB,EAAA;;QAEvE,IAAI,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,KAAK,OAAO;AAAE,YAAA,OAAO,KAAK,CAAA;;QAG1D,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;AAAE,YAAA,OAAO,KAAK,CAAA;;AAGtD,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;YACzB,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACzC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC7B,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACjC,oBAAA,OAAO,KAAK,CAAA;AACb,iBAAA;AACF,aAAA;AACF,SAAA;;AAGD,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;AACzB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,gBAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC7C,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;AAChC,oBAAA,OAAO,KAAK,CAAA;AACb,iBAAA;AAAM,qBAAA;oBACL,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;oBACjC,IAAI,IAAI,KAAK,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;AACjC,wBAAA,OAAO,KAAK,CAAA;AACb,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,OAAO,IAAI,CAAA;KACZ;AACF,CAAA;AAED,SAAS,kBAAkB,CAAE,EAAY,EAAA;AACvC,IAAA,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAA;AAC/B,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI,CAAA;AAExB,IAAA,MAAM,IAAI,GAAG,EAAE,CAAC,eAAe,CAAA;AAC/B,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI,CAAA;AAEtB,IAAA,IAAI,IAAI,CAAC,QAAQ,KAAA,CAAA,8BAA4B;AAC3C,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAA;AAChC,KAAA;AACH,CAAC;AAED;AACA;AACA;AACA,SAAS,UAAU,CAAE,MAAgB,EAAA;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAI;QAC5B,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;QAEpD,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,GAAG,SAAS,CAAA;QAEzD,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;QAE5C,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,KAAK,GAAG,KAAK,CAAA;QAEzC,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;QAE5C,OAAO,KAAK,GAAG,KAAK,CAAA;AACtB,KAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAE,SAAsB,EAAA;AAChD,IAAA,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,aAAa,CAAE,SAAsB,EAAA;IAC5C,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AACrF,CAAC;AAED,SAAS,aAAa,CAAE,SAAsB,EAAA;AAC5C,IAAA,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACnE;;ACpRgB,SAAA,OAAO,CACrB,GAAW,EACX,gBAA0B,EAAA;IAE1B,MAAM,GAAG,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxD,MAAM,IAAI,GAAkB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC1C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;AACpB,KAAA;AACD,IAAA,OAAO,gBAAgB,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC/E,CAAC;AAEM,MAAM,mBAAmB,GAAG;AACjC,IAAA,GAAG,EAAE,OAAO;AACZ,IAAA,MAAM,EAAE,UAAU;CACnB,CAAA;AAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;KACtD,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;KACzB,IAAI,CAAC,GAAG,CAAC,CAAA;AAEZ;AACO,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;AAE9D;AACO,MAAM,gBAAgB,GAAG,OAAO,CAAC,mNAAmN,EAAE,IAAI,CAAC,CAAA;AAElQ;AACO,MAAM,eAAe,GAAG,OAAO,CAAC,8KAA8K,EAAE,IAAI,CAAC;;ACb5N,MAAM,0BAA0B,GAAG;AACjC,IAAA,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;IACxB,EAAE,EAAE,CAAC,IAAI,CAAC;IACV,EAAE,EAAE,CAAC,IAAI,CAAC;IACV,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,EAAE,EAAE,CAAC,OAAO,CAAC;IACb,EAAE,EAAE,CAAC,OAAO,CAAC;CACd,CAAA;AA6BD,SAAS,iBAAiB,CAAE,OAAe,EAAE,KAAgB,EAAA;AAC3D,IAAA,MAAM,UAAU,GAAyB,0BAA0B,CAAC,OAAO,CAAC,CAAA;AAC5E,IAAA,IAAI,UAAU,EAAE;AACd,QAAA,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;QACnC,OAAO,YAAY,IAAI,CAAC,EAAE;YACxB,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAA;YACjD,IAAI,aAAa,KAAK,OAAO,EAAE;gBAC7B,MAAK;AACN,aAAA;YACD,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAc,CAAC,EAAE;AACrD,gBAAA,OAAO,IAAI,CAAA;AACZ,aAAA;AACD,YAAA,YAAY,EAAE,CAAA;AACf,SAAA;AACF,KAAA;AACD,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,UAAU,CAAE,GAAW,EAAA;AAC9B,IAAA,IAAI,OAAO,CAAC,IAAK,CAAC,aAAa,EAAE;AAC/B,QAAA,OAAO,GAAG,CAAA;AACX,KAAA;AAED,IAAA,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAA,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAA;AAChC,KAAA;AAAM,SAAA,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;AAC9B,QAAA,OAAO,GAAG,CAAA;AACX,KAAA;AAAM,SAAA,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;AAC/B,QAAA,OAAO,MAAM,CAAA;AACd,KAAA;AAAM,SAAA,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;AAChC,QAAA,OAAO,MAAM,CAAA;AACd,KAAA;AAED,IAAA,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,UAAU,CAAE,GAAW,EAAA;IAC9B,MAAM,GAAG,GAAG,GAAG,CAAA;IACf,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,CAAA;AAC5B,IAAA,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AACpC,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;AAChD,IAAA,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACrB,CAAC;AAED,SAAS,MAAM,CACb,QAAqB,EACrB,QAAsB,EACtB,YAGC,EACD,MAAoB,EAAA;AAEpB,IAAA,OAAO,QAAQ;SACZ,MAAM,CAAC,KAAK,IAAG;;AAEd,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5B,YAAA,OAAO,KAAK,CAAA;AACb,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AAChC,YAAA,OAAO,KAAK,CAAC,OAAO,KAAK,EAAE,CAAA;AAC5B,SAAA;AACD,QAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAC;AACD,SAAA,GAAG,CAAC,CAAC,KAAqB,KAAI;;AAE7B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;YACzB,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACjD,IAAI,UAAU,CAAC,OAAO,CAAC,IAAK,CAAC,aAAa,CAAC,EAAE;gBAC3C,IAAI,GAAG,OAAO,CAAC,IAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAChD,aAAA;YACD,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,WAAW,CAAC,IAAI,CAAC,CAAA;AACzB,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AAED,QAAA,MAAM,EAAE,GAAsB,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;AAC/E,QAAA,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAA;QAE5B,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,WAAW,CAAC,EAAE,CAAC,CAAA;AAEvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAK,CAAC,aAAa,EAAE;YAChC,EAAE,CAAC,SAAS,GAAG,CAAA,GAAA,EAAM,KAAK,CAAC,OAAO,EAAE,CAAA;AACrC,SAAA;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YACrC,IAAI,GAAG,KAAK,OAAO,EAAE;gBACnB,EAAE,CAAC,SAAS,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;AACrC,aAAA;AAAM,iBAAA,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC3C,SAAQ;AACT,aAAA;AAAM,iBAAA;gBACL,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,aAAA;AACF,SAAA;AAED,QAAA,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,YAAY,CAAA;AACvD,QAAA,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,CAAA;AACnC,QAAA,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;AAEhE,QAAA,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;;AAGlD,QAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE;YAC/B,cAAc;AACd,YAAA,cAAc,EAAE,IAAI;SACrB,EAAE,EAAE,CAAC,CAAA;QAEN,IAAI,UAAU,CAAC,OAAO,CAAC,IAAK,CAAC,gBAAgB,CAAC,EAAE;YAC9C,OAAO,OAAO,CAAC,IAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AACjD,SAAA;AAED,QAAA,OAAO,EAAE,CAAA;AACX,KAAC,CAAC,CAAA;AACN,CAAC;AAEe,SAAA,MAAM,CAAE,IAAY,EAAE,QAAsB,EAAA;AAC1D,IAAA,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;AAC3C,IAAA,IAAI,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAExC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;AAEtC,IAAA,MAAM,IAAI,GAAY,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;AAEpF,IAAA,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAA;IAC3D,KAAK,CAAC,KAAK,CAAC,CAAA;AAEZ,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACrC,cAAc;AACd,QAAA,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,KAAA,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,KAAK,CAAE,KAAY,EAAA;AAC1B,IAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;AAC/B,IAAA,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;AAEtB,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAA;AAEzB,IAAA,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAA;IAE5C,OAAO,MAAM,GAAG,GAAG,EAAE;AACnB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC5B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;;AAE9B,YAAA,KAAK,CAAC,IAAI,CAAC,KAAkB,CAAC,CAAA;AAC9B,YAAA,MAAM,EAAE,CAAA;YACR,SAAQ;AACT,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;AACjC,QAAA,MAAM,EAAE,CAAA;QACR,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAQ,CAAC,WAAW,EAAE,CAAA;QAC/C,IAAI,KAAK,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;YACxB,IAAI,YAAY,GAAG,KAAK,CAAA;AACxB,YAAA,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;gBACnB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE;oBACpC,YAAY,GAAG,IAAI,CAAA;oBACnB,MAAK;AACN,iBAAA;AACF,aAAA;YACD,OAAO,MAAM,GAAG,GAAG,EAAE;AACnB,gBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC/B,gBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;oBAAE,MAAK;AACtC,gBAAA,MAAM,EAAE,CAAA;AACT,aAAA;AACD,YAAA,IAAI,YAAY,EAAE;AAChB,gBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACnB,MAAK;AACN,aAAA;AAAM,iBAAA;gBACL,SAAQ;AACT,aAAA;AACF,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAK,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC/D,IAAI,uBAAuB,GAAG,YAAY,CAAA;AAC1C,QAAA,IAAI,uBAAuB,EAAE;YAC3B,uBAAuB,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AAC7D,SAAA;AAED,QAAA,IAAI,uBAAuB,EAAE;AAC3B,YAAA,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;YACnC,OAAO,YAAY,GAAG,CAAC,EAAE;gBACvB,IAAI,OAAO,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;AAC3C,oBAAA,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AAC1B,oBAAA,MAAM,aAAa,GAAG,YAAY,GAAG,CAAC,CAAA;AACtC,oBAAA,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAA;oBACrC,MAAK;AACN,iBAAA;AACD,gBAAA,YAAY,GAAG,YAAY,GAAG,CAAC,CAAA;AAChC,aAAA;AACF,SAAA;QAED,MAAM,UAAU,GAAa,EAAE,CAAA;AAC/B,QAAA,IAAI,SAAgB,CAAA;QACpB,OAAO,MAAM,GAAG,GAAG,EAAE;AACnB,YAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AAC1B,YAAA,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;gBAAE,MAAK;AACvC,YAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAQ,CAAC,CAAA;AACnC,YAAA,MAAM,EAAE,CAAA;AACT,SAAA;AAED,QAAA,MAAM,EAAE,CAAA;QACR,MAAM,QAAQ,GAAc,EAAE,CAAA;AAC9B,QAAA,MAAM,OAAO,GAAY;AACvB,YAAA,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,QAAQ,CAAC,OAAQ;YAC1B,UAAU;YACV,QAAQ;SACT,CAAA;AACD,QAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAEnB,QAAA,MAAM,WAAW,GAAG,EAAE,SAAU,CAAC,KAAK,IAAI,OAAO,CAAC,IAAK,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAClF,QAAA,IAAI,WAAW,EAAE;YACf,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAS,CAAC,CAAA;YACxC,MAAM,UAAU,GAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;YACnD,KAAK,CAAC,UAAU,CAAC,CAAA;AACjB,YAAA,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;AAC3B,SAAA;AACF,KAAA;AAED,IAAA,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;AACvB;;ACjRA,OAAO,CAAC,IAAI,GAAG;IACb,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1C,YAAY,EAAE,IAAI,GAAG,CAAC;QACpB,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS;QAClD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;AAC/C,QAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK;KAC1C,CAAC;IACF,eAAe,EAAE,IAAI,GAAG,CAAC;AACvB,QAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ;QACvD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU;KACxD,CAAC;AACF,IAAA,aAAa,EAAE,KAAK;CACrB,CAAA;AAEe,SAAA,YAAY,CAAE,OAAiB,EAAE,IAAY,EAAA;IAC3D,OAAO,OAAO,CAAC,UAAU,EAAE;AACzB,QAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AACxC,KAAA;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;AAEpD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACjC,KAAA;AACH;;SCvBgB,yBAAyB,GAAA;IACvC,IAAI,CAAC,OAAO,CAAC,UAAU;AAAE,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACrD,IAAA,OAAO,IAAI,OAAO,CAAC,OAAO,IAAG;QAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAA;AACtD,QAAA,KAAK,CAAC,MAAM,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,CAAE,CAAA,CAAC,CAAC,kBAAkB,CAAC,GAAG,IAAG;YACpD,OAAO,CAAC,GAAG,CAAC,CAAA;AACd,SAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AACX,KAAC,CAAC,CAAA;AACJ,CAAC;AAEK,SAAU,kBAAkB,CAAE,GAAgB,EAAA;AAClD,IAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;AAC/B,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAA;QAClC,MAAM,OAAO,GAAgB,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;AACtE,QAAA,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;AACnC,QAAA,GAAG,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,CAAA;AAC1B,QAAA,OAAO,CAAC,UAAU,GAAG,GAAG,CAAA;AACxB,QAAA,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,IAAG;AACjC,YAAA,KAAK,CAAC,UAAU,GAAG,OAAO,CAAA;AAC5B,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,OAAO,CAAA;AACf,KAAA;AACH;;ACnBA;;;AAGG;AACa,SAAA,kBAAkB,CAEhC,QAAmB,EACnB,IAAY,EAAA;;IAEZ,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;AAEpD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAA,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;AAExB,QAAA,QAAQ,QAAQ;AACd,YAAA,KAAK,aAAa;gBAChB,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;gBACtC,MAAK;AACP,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,oBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AACzC,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AACpB,iBAAA;gBACD,MAAK;AACP,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;gBACnB,MAAK;AACP,YAAA,KAAK,UAAU;gBACb,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CAAC,CAAC,CAAC,CAAA;gBAC/B,MAAK;AACR,SAAA;AACF,KAAA;AACH,CAAC;AAEe,SAAA,SAAS,CAAkB,MAAM,GAAG,KAAK,EAAA;AACvD,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAA;AACnC,IAAA,IAAI,OAAO,CAAA;AAEX,IAAA,IAAI,IAAI,CAAC,QAAQ,KAAA,CAAA,8BAA4B;QAC3C,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAChD,KAAA;AAAM,SAAA,IAAI,IAAI,CAAC,QAAQ,KAAA,CAAA,2BAAyB;AAC/C,QAAA,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;AACtC,KAAA;AAED,IAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,MAAM,KAAK,GAAQ,IAAI,CAAC,GAAG,CAAC,CAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,MAAM,EAAE;AAC7D,YAAA,OAAO,CAAC,GAAG,CAAC,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAE,CAAA;AAC5B,SAAA;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACrB,SAAA;aAAM,IAAI,GAAG,KAAK,KAAK,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,MAAM,qBAAQ,KAAK,CAAC,MAAM,CAAE,CAAA;AAC1C,YAAA,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;AACzE,SAAA;AACF,KAAA;AAED,IAAA,IAAI,MAAM,EAAE;QACV,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAK,IAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AAChF,KAAA;AAED,IAAA,OAAO,OAAO,CAAA;AAChB,CAAC;AAEK,SAAU,QAAQ,CAAkB,IAAgC,EAAA;IACxE,IAAI,UAAU,GAAG,KAAK,CAAA;AACtB,IAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,IAAG;AAC/B,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAA;AACzB,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,EAAE,IAAK,SAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC5E,UAAU,GAAG,IAAI,CAAA;AACjB,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AACH,KAAC,CAAC,CAAA;AACF,IAAA,OAAO,UAAU,CAAA;AACnB;;AClEA,MAAMA,OAAK,GAAG,aAAa,EAAE,CAAA;AAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAA;AAC/F,IAAI,CAACA,OAAK,IAAI,CAAC,SAAS,EAAE;AACxB,IAAA,IAAI,iBAAiB,EAAE;AACrB,QAAA,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;AAC3B,YAAA,GAAG,CAAE,IAAY,EAAA;gBACf,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;aACpC;YACD,GAAG,GAAA;AACD,gBAAA,OAAO,EAAE,CAAA;aACV;AACF,SAAA,CAAC,CAAA;AAEF,QAAA,IAAI,oBAAoB,EAAE;AACxB,YAAA,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAA;AAC1D,SAAA;AACF,KAAA;AAED,IAAA,IAAI,iBAAiB,EAAE;AACrB,QAAA,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;AACxC,KAAA;AAED,IAAA,IAAI,eAAe,EAAE;AACnB,QAAA,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;AACtC,KAAA;AAED,IAAA,IAAI,gBAAgB,EAAE;AACpB,QAAA,WAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAA;AACvE,KAAA;AAED,IAAA,IAAI,uBAAuB,EAAE;AAC3B,QAAA,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE;YAC5B,GAAG,GAAA;AACD,gBAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAA;aAChC;AACF,SAAA,CAAC,CAAA;AACH,KAAA;AACF;;AClCD;MACa,SAAS,CAAA;AAyBpB,IAAA,WAAA,CAAoB,IAAY,EAAE,IAAkB,EAAE,KAAe,EAAA;QAf9D,IAAK,CAAA,KAAA,GAAG,KAAK,CAAA;QAEb,IAAI,CAAA,IAAA,GAAG,KAAK,CAAA;QAEZ,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAA;;QAGxB,IAAM,CAAA,MAAA,GAAG,CAAC,CAAA;;;AAIV,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AAK3B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAA;KACnD;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;KAClB;IAEM,wBAAwB,GAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;KAC9B;IAEM,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;KAC7B;AAED,IAAA,IAAI,MAAM,GAAA;;AACR,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QACpC,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,IAAI,CAAC,CAAA;;AAE1D,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,MAAI,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAA,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,CAAA;AAClH,YAAA,MAAM,CAAC,OAAO,GAAG,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAA;YAE/D,KAAK,MAAM,GAAG,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AACtC,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACxC,aAAA;AAED,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;AAEzB,YAAA,OAAO,MAAM,CAAA;AACd,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,WAAW,CAAA;AACnB,SAAA;KACF;AAED,IAAA,IAAI,aAAa,GAAA;;AACf,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAA;QAClD,IAAI,CAAC,kBAAkB,EAAE;AACvB,YAAA,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAA;AAExB,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,KAAI,IAAI,CAAC,CAAA;YAExE,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAA,MAAA,aAAa,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,KAAI,aAAa,CAAC,EAAE,IAAI,IAAI,CAAC,CAAA;AAC1F,YAAA,MAAM,aAAa,GAAG,GAAG,CAAC,cAAc,CAAC,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAa,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,0CAAE,EAAY,CAAA,IAAI,IAAI,CAAC,CAAA;YAEpI,IAAI,OAAO,KAAK,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,aAAa,CAAC,EAAE;AAC9D,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAA;gBACrC,OAAO,IAAI,CAAC,MAAM,CAAA;AACnB,aAAA;AAED,YAAA,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;YAEvC,KAAK,MAAM,GAAG,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AACtC,gBAAA,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC/C,aAAA;AAED,YAAA,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAA;AAEvC,YAAA,OAAO,aAAa,CAAA;AACrB,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,kBAAkB,CAAA;AAC1B,SAAA;KACF;AACF,CAAA;AAEe,SAAA,WAAW,CAAE,KAAuB,EAAE,IAAkB,EAAA;AACtE,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;;AAE7B,QAAA,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;AACjE,KAAA;IAED,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAA;AAEnF,IAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACvB,QAAA,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,UAAU,EAAE;YAClF,SAAQ;AACT,SAAA;AAAM,aAAA;YACL,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;AACxB,SAAA;AACF,KAAA;AAED,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,QAAQ,MAAK,KAAK,EAAE;;AAEtD,QAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;AACrB,KAAA;AAED,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,WAAW,GAAG,EAAE,CAAA;AAEtB,SAAS,gBAAgB,CAAE,KAAc,EAAA;AACvC,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAA;AAC3C,IAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,OAAO,KAAK,CAAC,qBAAqB,CAAC,CAAA;AACpC,KAAA;AACD,IAAA,OAAO,MAAM,CAAA;AACf,CAAC;AAED;AACM,SAAU,YAAY,CAAE,KAAc,EAAA;;;AAE1C,IAAA,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/D,QAAA,KAAK,EAAG,KAAa,CAAC,KAAK;AAC5B,KAAA,CAAC,CAAA;AACF,IAAA,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE;QACnE,KAAK,EAAG,KAAa,CAAC,OAAO,sBAAS,KAAK,CAAE;AAC9C,KAAA,CAAC,CAAA;AACF,IAAA,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,IAAS,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAE,CAAA;AACzE,IAAA,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;AAEtC,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;IACzC,MAAM,EAAE,GAAG,CAAA,CAAA,EAAA,GAAA,aAAa,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAa,gBAAe,aAAa,CAAC,EAAE,gBAAe,CAAA,EAAA,GAAA,KAAK,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAY,CAAA,IAAI,EAAE,CAAA;IAE7H,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;AAC5C,IAAA,IAAI,IAAI,EAAE;QACR,MAAM,QAAQ,GAAG,MAAK;YACpB,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAElC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;YACtC,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;YACxC,KAAK,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;AAChD,SAAC,CAAA;AACD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;AACxC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;YAEvB,IACE,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC;AACnC,gBAAA,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;AAC3B,iBAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAC9C;;AAEA,gBAAA,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAK;AACrC,oBAAA,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AACrB,wBAAA,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;AACrC,wBAAA,OAAO,WAAW,CAAC,IAAI,CAAC,CAAA;AACzB,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;AACZ,iBAAC,CAAC,CAAA;AACF,gBAAA,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;AAC/B,aAAA;AAAM,iBAAA;;AAEL,gBAAA,CAAC,WAAW,CAAC,IAAI,CAAA,KAAhB,WAAW,CAAC,IAAI,CAAM,GAAA,EAAE,GAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC1C,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,QAAQ,EAAE,CAAA;AACV,YAAA,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;AAC/B,SAAA;AACF,KAAA;AACH;;AC7LM,MAAO,WAAY,SAAQ,WAAW,CAAA;AAC1C,IAAA,IAAW,IAAI,GAAA;;QACb,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAA;KAC9B;IAED,IAAW,IAAI,CAAE,GAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;KAC7B;AAED,IAAA,IAAW,KAAK,GAAA;;QAEd,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,CAAA;KAC9B;IAED,IAAW,KAAK,CAAE,GAAsC,EAAA;AACtD,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;KAC9B;AAEM,IAAA,aAAa,CAAE,KAAgB,EAAA;QACpC,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA;AACtC,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACzB,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAa,CAAA;AACjC,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;;;;AAI/B,gBAAA,IAAI,CAAC,KAAK,GAAG,GAAa,CAAA;AAC3B,aAAA;AACF,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;KAClC;AACF;;ACzCD,MAAM,WAAW,CAAA;AAAjB,IAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;KAoB7C;AAlBQ,IAAA,KAAK,CAAE,EAAU,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClB,OAAM;AACP,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;KAClC;AAEM,IAAA,IAAI,CAAE,EAAU,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClB,OAAM;AACP,SAAA;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAE,CAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AACxB,QAAA,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA;;QAEvB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,EAAE,CAAQ,KAAA,EAAA,IAAI,CAAI,EAAA,CAAA,CAAC,CAAA;KACnC;AACF,CAAA;AAEM,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE;;ACVrC,SAAS,iBAAiB,CAAE,IAAqB,EAAE,WAAqB,EAAA;;IAEtE,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACjC,IAAI,WAAW,GAAQ,IAAI,CAAA;AAC3B,IAAA,IAAI,aAA8C,CAAA;IAClD,IAAI,WAAW,GAAG,EAAE,CAAA;IAEpB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;QACpB,MAAM,GAAG,GAAG,IAAI;;AAEb,aAAA,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;;AAE3B,aAAA,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;AAEnC,QAAA,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;AAE9B,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;AACxB,YAAA,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;AACvD,SAAA;QAED,IAAI,WAAW,CAAC,WAAW,CAAC;AAAE,YAAA,OAAO,IAAI,CAAA;AAEzC,QAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,cAAc,EAAE;YAC3C,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;AACnD,YAAA,IAAI,GAAG,EAAE;gBACP,aAAa,GAAG,GAAG,CAAA;AACnB,gBAAA,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,aAAA;AACF,SAAA;AACH,KAAC,CAAC,CAAA;AAEF,IAAA,IAAI,aAAa,EAAE;QACjB,OAAO;YACL,aAAa;YACb,WAAW;SACZ,CAAA;AACF,KAAA;AACH,CAAC;AAEK,MAAO,eAAgB,SAAQ,WAAW,CAAA;AAS9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAA;QATD,IAAc,CAAA,cAAA,GAAoB,EAAE,CAAA;QAEpC,IAAe,CAAA,eAAA,GAAW,EAAE,CAAA;QAE7B,IAAa,CAAA,aAAA,GAAG,KAAK,CAAA;QAErB,IAAG,CAAA,GAAA,GAAsB,IAAI,CAAA;AAIlC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;KACtC;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,QAAQ,CAAA;KAChB;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAA;KACZ;AAEM,IAAA,aAAa,CAAE,OAAsB,EAAA;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAEjC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,aAAa,EAAE,CAAA;AACrB,SAAA;KACF;AAEM,IAAA,aAAa,CAAE,UAAU,GAAG,KAAK,EAAE,SAAgB,EAAA;AACxD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;AAEzB,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAE,CAAA;QAE/C,UAAU,CAAC,MAAK;YACd,MAAM,WAAW,GAAG,CAAA,EAAG,QAAQ,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE,CAAA;AACrD,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YACvB,MAAM,IAAI,GAAkE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC/F,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,UAAU;AACR,kBAAE,CAAC,aAAa,EAAE,YAAY,CAAC;kBAC7B,EAAE,CACP,CAAA;AAED,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,gBAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAG,CAAA;AACpD,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAA,IAAA,4BAAsB,EAAE;AACvC,oBAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACrB,iBAAA;AACD,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;AACnB,aAAA;AAED,YAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,gBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;;oBAErB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;AAClC,wBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;AAClB,qBAAA;AACH,iBAAC,CAAC,CAAA;AAEF,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;AACxB,gBAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACrB,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAA;AACrB,iBAAA;AACF,aAAA;;YAGD,IAAI,UAAU,CAAC,SAAS,CAAC;AAAE,gBAAA,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;;AAGjD,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;YAC1B,IAAI,YAAY,GAAG,EAAE,CAAA;AACrB,YAAA,MAAM,gBAAgB,GAA+C,IAAI,GAAG,EAAE,CAAA;AAE9E,YAAA,IAAI,UAAU,EAAE;;gBAEd,YAAY,GAAG,IAAI,CAAA;AACpB,aAAA;AAAM,iBAAA;;AAEL,gBAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;oBACpB,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAChC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;AAClD,oBAAA,IAAI,KAAK,EAAE;;AAET,wBAAA,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;;wBAE5C,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAC5B,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,EAC7C,EAAA,EAAA,CAAC,CAAK,EAAA,EAAA,WAAW,CAAE,CAAA,GAAG,IAAI,CAAC,CAAC,CAAC,EAAA,CAAA,CAC7B,CAAA;AACH,qBAAA;AAAM,yBAAA;;wBAEL,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AAC1B,qBAAA;AACF,iBAAA;AACF,aAAA;AAED,YAAA,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,CAAA;AAChD,YAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AAC/D,YAAA,MAAM,YAAY,GAAG,kBAAkB,IAAI,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YACtE,IAAI,WAAW,GAAG,CAAC,CAAA;YAEnB,MAAM,EAAE,GAAG,MAAK;AACd,gBAAA,IAAI,EAAE,WAAW,KAAK,YAAY,EAAE;AAClC,oBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;oBACtB,IAAI,CAAC,mBAAmB,EAAE,CAAA;AAC1B,oBAAA,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACnC,iBAAA;AACH,aAAC,CAAA;;AAGD,YAAA,IAAI,kBAAkB,EAAE;gBACtB,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAI;oBACrC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;;AAE1D,wBAAA,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAA;AAC9C,qBAAA;AACD,oBAAA,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;AACvB,iBAAC,CAAC,CAAA;AACH,aAAA;;AAGD,YAAA,IAAI,kBAAkB,EAAE;gBACtB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;;AAE1D,oBAAA,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;AAC3C,iBAAA;AACD,gBAAA,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AAC9B,aAAA;SACF,EAAE,CAAC,CAAC,CAAA;KACN;IAEM,qBAAqB,CAAE,EAAQ,EAAE,GAAyB,EAAA;AAC/D,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAK;AAC7B,YAAA,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAA;AAC3B,SAAC,CAAC,CAAA;KACH;IAEM,mBAAmB,GAAA;AACxB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAA;QAC5C,IAAI,CAAC,eAAe,CAAC,MAAM;YAAE,OAAM;QAEnC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACvC,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA;AAC/B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;AACZ,SAAA;KACF;AACF;;ACtMK,MAAO,QAAS,SAAQ,QAAQ,CAAA;AAKpC,IAAA,WAAA,CAAa,KAAK,EAAA;AAChB,QAAA,KAAK,EAAE,CAAA;AAJF,QAAA,IAAA,CAAA,QAAQ,GAAqB,CAAA,0BAAA;QAC7B,IAAQ,CAAA,QAAA,GAAG,OAAO,CAAA;AAIvB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;KACpB;IAED,IAAW,WAAW,CAAE,IAAY,EAAA;QAClC,gBAAgB,CAAC,MAAM,CAAC;AACtB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,IAAI,EAAmC,eAAA;YACvC,QAAQ,EAAE,IAAI,CAAC,MAAM;AACtB,SAAA,CAAC,CAAA;AACF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,aAAa,CAAC;AACjB,YAAA,IAAI,EAAE,CAAG,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,yBAAgB,CAAA;AACvC,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC,CAAA;KACH;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;IAED,IAAW,SAAS,CAAE,IAAY,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;KACxB;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;IAED,IAAW,IAAI,CAAE,IAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;KACxB;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9CD,MAAM,OAAO,GAAG,kBAAkB,CAAA;AAClC,MAAM,OAAO,GAAG,KAAK,CAAA;AACrB,MAAM,cAAc,GAAG;AACrB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,KAAK,EAAE,MAAM;CACd,CAAA;AAED,SAAS,QAAQ,CAAE,KAAa,EAAA;AAC9B,IAAA,OAAO,cAAc,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,QAAQ,CAAE,IAA8B,EAAE,IAAY,EAAE,KAAa,EAAA;AAC5E,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IACpD,IAAI,IAAI,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,OAAO,CAAE,KAAa,EAAE,GAAW,EAAA;AAC1C,IAAA,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,MAAM,CAAE,GAAW,EAAA;IAC1B,OAAO,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,MAAM,CAAE,GAAW,EAAA;IAC1B,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAC3D,CAAC;MAEY,eAAe,CAAA;AAG1B,IAAA,WAAA,CAAa,KAAK,EAAA;AAFlB,QAAA,qBAAA,CAAA,GAAA,CAAA,IAAA,EAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAA;QAGzB,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAK,IAAL,KAAK,GAAK,EAAE,CAAA,CAAA;AAEZ,QAAA,MAAM,IAAI,GAAG,sBAAA,CAAA,IAAI,6BAAM,CAAA;AAEvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3B,gBAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACvB,aAAA;YACD,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAChF,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;gBACtB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAChC,gBAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;oBACd,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9E,iBAAA;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE;oBACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;AAClC,iBAAA;AACF,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAClB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,oBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;AACtB,oBAAA,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,iBAAA;AACF,aAAA;iBAAM,IAAI,KAAK,CAAC,OAAO,EAAE;AACxB,gBAAA,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAC7B,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;oBACvB,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAChC,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAED,MAAM,CAAE,IAAY,EAAE,KAAa,EAAA;QACjC,QAAQ,CAAC,uBAAA,IAAI,EAAA,qBAAA,EAAA,GAAA,CAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;KAClC;AAED,IAAA,MAAM,CAAE,IAAY,EAAA;AAClB,QAAA,OAAO,uBAAA,IAAI,EAAA,qBAAA,EAAA,GAAA,CAAM,CAAC,IAAI,CAAC,CAAA;KACxB;AAED,IAAA,GAAG,CAAE,IAAY,EAAA;AACf,QAAA,MAAM,IAAI,GAAG,sBAAA,CAAA,IAAI,6BAAM,CAAA;AACvB,QAAA,OAAO,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;KAC3C;AAED,IAAA,MAAM,CAAE,IAAY,EAAA;AAClB,QAAA,MAAM,IAAI,GAAG,sBAAA,CAAA,IAAI,6BAAM,CAAA;AACvB,QAAA,OAAO,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;KAC/C;AAED,IAAA,GAAG,CAAE,IAAY,EAAA;AACf,QAAA,OAAO,IAAI,IAAI,sBAAA,CAAA,IAAI,6BAAM,CAAA;KAC1B;IAED,IAAI,GAAA;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,uBAAA,IAAI,EAAA,qBAAA,EAAA,GAAA,CAAM,CAAC,CAAA;KAC/B;IAED,GAAG,CAAE,IAAY,EAAE,KAAa,EAAA;QAC9B,sBAAA,CAAA,IAAI,EAAM,qBAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAA;KAChC;IAED,OAAO,CAAE,QAAQ,EAAE,OAAO,EAAA;AACxB,QAAA,MAAM,IAAI,GAAG,sBAAA,CAAA,IAAI,6BAAM,CAAA;QACvB,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,EAAA;AACrD,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,KAAa,EAAA;gBACxC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;aAC1C,EAAE,IAAI,CAAC,CAAA;SACT,EAAE,IAAI,CAAC,CAAA;KACT;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,EAAE,CAAA;KACV;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,sBAAA,CAAA,IAAI,6BAAM,CAAA;QACvB,MAAM,KAAK,GAAU,EAAE,CAAA;AACvB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACvB;AACF,CAAA;;;;MC3HY,GAAG,CAAA;AACd,IAAA,OAAO,eAAe,GAAA;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;KAC3E;AAED,IAAA,OAAO,eAAe,GAAA;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;KAC3E;IAUD,WAAa,CAAA,GAAW,EAAE,IAAa,EAAA;;AAPvC,QAAA,SAAA,CAAA,GAAA,CAAA,IAAA,EAAQ,EAAE,CAAA,CAAA;AACV,QAAA,aAAA,CAAA,GAAA,CAAA,IAAA,EAAY,EAAE,CAAA,CAAA;AACd,QAAA,aAAA,CAAA,GAAA,CAAA,IAAA,EAAY,EAAE,CAAA,CAAA;AACd,QAAA,SAAA,CAAA,GAAA,CAAA,IAAA,EAAQ,EAAE,CAAA,CAAA;AACV,QAAA,aAAA,CAAA,GAAA,CAAA,IAAA,EAAY,EAAE,CAAA,CAAA;QACd,WAAwB,CAAA,GAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGtB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,YAAA,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAErC,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AAC3C,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,CAAA;AAExE,QAAA,sBAAA,CAAA,IAAI,EAAA,SAAA,EAAS,IAAI,EAAA,GAAA,CAAA,CAAA;AACjB,QAAA,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAa,QAAQ,EAAA,GAAA,CAAA,CAAA;AACzB,QAAA,sBAAA,CAAA,IAAI,EAAa,aAAA,EAAA,QAAQ,IAAI,GAAG,MAAA,CAAA;AAChC,QAAA,sBAAA,CAAA,IAAI,EAAA,SAAA,EAAS,IAAI,EAAA,GAAA,CAAA,CAAA;AACjB,QAAA,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAa,QAAQ,EAAA,GAAA,CAAA,CAAA;QACzB,sBAAA,CAAA,IAAI,eAAW,IAAI,eAAe,CAAC,MAAM,CAAC,MAAA,CAAA;KAC3C;;AAGD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAA,GAAA,CAAU,CAAA;KACtB;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;AACvB,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,sBAAA,CAAA,IAAI,EAAa,aAAA,EAAA,GAAG,CAAC,IAAI,EAAE,EAAA,GAAA,CAAA,CAAC,CAAA;KAC/C;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;KAC1D;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxB,YAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,YAAA,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAK,EAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAA;AAC/C,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AACjB,SAAA;KACF;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAA,GAAA,CAAU,CAAA;KACtB;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;AACvB,QAAA,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAa,GAAG,CAAC,IAAI,EAAE,EAAA,GAAA,CAAA,CAAC,CAAA;KACtD;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,sBAAA,CAAA,IAAI,EAAA,SAAA,EAAA,GAAA,CAAM,CAAA;KAClB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,sBAAA,CAAA,IAAI,EAAS,SAAA,EAAA,GAAG,CAAC,IAAI,EAAE,EAAA,GAAA,CAAA,CAAC,CAAA;KAC3C;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAA,GAAA,CAAU,CAAA;KACtB;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;AACvB,QAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjB,YAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;YAChB,MAAM,QAAQ,GAAG,mBAAmB,CAAA;YACpC,IAAI,IAAI,GAAG,GAAG,CAAA;AACd,YAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC1B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AAClC,aAAA;AACD,YAAA,IAAI,IAAI;AAAE,gBAAA,sBAAA,CAAA,IAAI,EAAa,aAAA,EAAA,GAAG,GAAG,IAAI,MAAA,CAAA;;AAChC,gBAAA,sBAAA,CAAA,IAAI,EAAA,aAAA,EAAa,GAAG,EAAA,GAAA,CAAA,CAAA;AAC1B,SAAA;KACF;AAED,IAAA,IAAI,MAAM,GAAA;QACR,MAAM,GAAG,GAAG,sBAAA,CAAA,IAAI,mBAAQ,CAAC,QAAQ,EAAE,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;KACnE;IAED,IAAI,MAAM,CAAE,GAAW,EAAA;AACrB,QAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjB,YAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;YAChB,sBAAA,CAAA,IAAI,eAAW,IAAI,eAAe,CAAC,GAAG,CAAC,MAAA,CAAA;AACxC,SAAA;KACF;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,sBAAA,CAAA,IAAI,EAAA,SAAA,EAAA,GAAA,CAAM,CAAA;KAClB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjB,YAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,YAAA,IAAI,GAAG;AAAE,gBAAA,sBAAA,CAAA,IAAI,EAAS,SAAA,EAAA,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,CAAA,CAAE,MAAA,CAAA;;AACtD,gBAAA,sBAAA,CAAA,IAAI,EAAA,SAAA,EAAS,EAAE,EAAA,GAAA,CAAA,CAAA;AACrB,SAAA;KACF;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAA,CAAE,CAAA;KAClF;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxB,YAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,YAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC1E,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AAChB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;AACrB,SAAA;KACF;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAA,CAAE,CAAA;KACxC;IAED,IAAI,MAAM,CAAE,GAAW,EAAA;AACrB,QAAA,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxB,YAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,YAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;AAClD,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AACjB,SAAA;KACF;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,sBAAA,CAAA,IAAI,EAAA,WAAA,EAAA,GAAA,CAAQ,CAAA;KACpB;;IAGD,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAA;KACjB;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;KACvB;;IAGD,MAAM,GAAA;QACJ,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAA;KACF;AACF,CAAA;;AAEe,SAAA,QAAQ,CAAE,GAAG,GAAG,EAAE,EAAA;AAChC,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,EAAE;KACT,CAAA;AACD,IAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,MAAM,CAAA;AAEzC,IAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAChB,MAAM,OAAO,GAAG,sFAAsF,CAAA;IACtG,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAElC,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,MAAM,CAAA;;IAG3B,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAA;IACxC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,CAAA;IAC1C,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAC9B,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAA;IACnC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;IACjC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;AAC/B,IAAA,MAAM,CAAC,IAAI,GAAG,GAAG,CAAA;AACjB,IAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAA;IACxD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,GAAG,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,CAAE,GAAG,EAAE,CAAC,CAAA;AAEtE,IAAA,OAAO,MAAM,CAAA;AACf,CAAC;AAEe,SAAA,YAAY,CAAE,GAAW,EAAE,IAAa,EAAA;IACtD,MAAM,SAAS,GAAG,iBAAiB,CAAA;IAEnC,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,UAAU,GAAuC,IAAI,CAAA;AAEzD,IAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QACtB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAAE,YAAA,MAAM,IAAI,SAAS,CAAC,CAAA,2CAAA,CAA6C,CAAC,CAAA;AAC7F,QAAA,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC5B,KAAA;IAED,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AAExB,IAAA,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACvB,OAAO,GAAG,GAAG,CAAA;AACd,KAAA;AAAM,SAAA,IAAI,UAAU,EAAE;AACrB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACxB,gBAAA,OAAO,GAAG,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAA;AACpC,aAAA;AAAM,iBAAA;gBACL,OAAO,GAAG,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAA;AACtE,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,GAAG,UAAU,CAAC,IAAI,CAAA;AAC1B,SAAA;AACF,KAAA;AAAM,SAAA;AACL,QAAA,MAAM,IAAI,SAAS,CAAC,CAAA,sCAAA,CAAwC,CAAC,CAAA;AAC9D,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC1B;;ACjOM,MAAO,aAAc,SAAQ,WAAW,CAAA;AAC5C,IAAA,IAAW,IAAI,GAAA;;AACb,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAAyB,MAAA,+BAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACjD;IAED,IAAW,IAAI,CAAE,GAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,CAA0B,MAAA,gCAAA,GAAG,CAAC,CAAA;KAChD;AAED,IAAA,IAAI,QAAQ,GAAA;;AACV,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAA6B,UAAA,mCAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACrD;AAED,IAAA,IAAI,IAAI,GAAA;;AACN,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAAyB,MAAA,+BAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACjD;AAED,IAAA,IAAI,MAAM,GAAA;;AACR,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAA2B,QAAA,iCAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACnD;AAED,IAAA,IAAI,IAAI,GAAA;;AACN,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAAyB,MAAA,+BAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACjD;AAED,IAAA,IAAI,QAAQ,GAAA;;AACV,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAA6B,UAAA,mCAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACrD;AAED,IAAA,IAAI,IAAI,GAAA;;AACN,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAAyB,MAAA,+BAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACjD;AAED,IAAA,IAAI,QAAQ,GAAA;;AACV,QAAA,OAAO,MAAA,IAAI,CAAC,KAAK,CAA6B,UAAA,mCAAA,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA;KACrD;IAEM,YAAY,CAAE,aAAqB,EAAE,KAAU,EAAA;QACpD,IAAI,aAAa,2CAA8B;AAC7C,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;AACnC,YAAA,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE;gBAC3B,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;AACzC,SAAA;KACF;AAEF;;AC5DK,MAAO,eAAgB,SAAQ,WAAW,CAAA;AAG9C,IAAA,WAAA,CAAoB,QAAgB,EAAA;AAClC,QAAA,KAAK,EAAE,CAAA;QADW,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;QAF7B,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAA;KAI9B;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAA;KACrB;AACF;;ACOK,MAAO,YAAa,SAAQ,WAAW,CAAA;AAM3C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAA;QAHF,IAAW,CAAA,WAAA,GAAG,WAAW,CAAA;QAI9B,IAAI,CAAC,QAAQ,GAAA,CAAA,8BAAyB;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAA;KACtC;AAEM,IAAA,aAAa,CAAE,IAAY,EAAA;AAChC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;AAEnC,QAAA,IAAI,OAAoB,CAAA;AACxB,QAAA,QAAQ,IAAI;YACV,KAAK,QAAQ,KAAK,QAAQ;AACxB,gBAAA,OAAO,GAAG,IAAI,eAAe,EAAE,CAAA;AAC/B,gBAAA,OAAO,OAAO,CAAA;AAChB,YAAA,KAAK,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACpC,gBAAA,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;gBAC3B,MAAK;YACP,KAAK,QAAQ,KAAK,CAAC;AACjB,gBAAA,OAAO,GAAG,IAAI,aAAa,EAAE,CAAA;gBAC7B,MAAK;YACP,KAAK,QAAQ,KAAK,WAAW,CAAC;YAC9B,KAAK,QAAQ,KAAK,gBAAgB;gBAChC,OAAO,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;gBACpD,MAAK;AACP,YAAA;AACE,gBAAA,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;gBAC3B,MAAK;AACR,SAAA;AAED,QAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;AAC3B,QAAA,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;AAEpC,QAAA,OAAO,OAAO,CAAA;KACf;;;IAIM,eAAe,CAAE,MAAc,EAAE,IAAY,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;KAChC;AAEM,IAAA,cAAc,CAAE,IAAY,EAAA;AACjC,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;KAC1B;AAEM,IAAA,cAAc,CAAyB,EAA6B,EAAA;QACzE,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAC9B,QAAA,OAAO,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAO,CAAA;KACxC;AAEM,IAAA,aAAa,CAAyB,KAAa,EAAA;;AAExD,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO,IAAI,CAAC,cAAc,CAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9C,SAAA;AACD,QAAA,OAAO,IAAI,CAAA;KACZ;IAEM,gBAAgB,GAAA;;AAErB,QAAA,OAAO,EAAE,CAAA;KACV;;IAGM,aAAa,GAAA;AAClB,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAA;AACjC,QAAA,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAA;AAC3B,QAAA,OAAO,QAAQ,CAAA;KAChB;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,GAAG,CAAC,MAAM,CAAA;KAClB;AACF;;ACtFD,IAAIC,WAAQ;AAEZ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,EAAE;;AAE5C,IAAA,SAAS,cAAc,GAAA;AACrB;;;;;;;;;;;AAWK;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,YAAY,EAAE,CAAA;QAC9B,MAAM,qBAAqB,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzD,QAAA,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;AACxC,QAAA,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;AACxC,QAAA,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;AACxC,QAAA,MAAM,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;AACtC,QAAA,GAAG,CAAC,EAAE,GAAG,GAAG,CAAA;QACZ,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;AAElD,QAAA,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;AAC3B,QAAA,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;AAE1B,QAAA,GAAG,CAAC,eAAe,GAAG,IAAI,CAAA;AAC1B,QAAA,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;AACf,QAAA,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;AAEf,QAAA,OAAO,GAAG,CAAA;KACX;AACD,IAAAA,UAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,cAAc,EAAE,CAAA;AAC3C,CAAA;AAAM,KAAA;AACL,IAAAA,UAAQ,GAAG,GAAG,CAAC,QAAQ,CAAA;AACxB;;AClDK,SAAU,gBAAgB,CAAE,OAAoB,EAAA;IACpD,OAAO,OAAO,CAAC,KAAK,CAAA;AACtB;;ACHM,MAAA,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM;;ACFvD;;AAEG;MAEU,YAAY,CAAA;AAIvB,IAAA,WAAA,CAAa,IAAY,EAAA;AAFzB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAa,CAAA;AAG1B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;KACjB;AAED,IAAA,GAAG,CAAE,UAAkB,EAAA;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KAClC;IAED,GAAG,CAAE,UAAkB,EAAE,GAAM,EAAA;QAC7B,IAAI,UAAU,IAAI,GAAG,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;AAChC,SAAA;KACF;AAED,IAAA,GAAG,CAAE,UAAkB,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KAC5D;AAED,IAAA,MAAM,CAAE,UAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;KAC9B;AACF;;;ACPD,MAAMC,OAAK,GAAG,IAAI,YAAY,CAAiB,SAAS,CAAC,CAAA;AAEnD,MAAO,OAAQ,SAAQ,MAAM,CAAA;IAQjC,WAAa,CAAA,QAA+B,EAAE,OAAgB,EAAA;AAC5D,QAAA,KAAK,EAAE,CAAA;;;QAPT,iBAAgC,CAAA,GAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAChC,QAAA,cAAA,CAAA,GAAA,CAAA,IAAA,EAAyB,EAAE,CAAA,CAAA;AAC3B,QAAA,YAAA,CAAA,GAAA,CAAA,IAAA,EAAO,CAAC,CAAA,CAAA;QAER,eAAY,CAAA,GAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKV,QAAA,sBAAA,CAAA,IAAI,EAAW,eAAA,EAAA,OAAO,CAAC,MAAM,MAAA,CAAA;AAC7B,QAAA,sBAAA,CAAA,IAAI,EAAA,iBAAA,EAAa,QAAQ,EAAA,GAAA,CAAA,CAAA;QAEzB,sBAAA,CAAA,IAAI,EAAU,iBAAA,EAAA,GAAA,CAAA,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,IAAY,KAAI;;AACvD,YAAA,sBAAA,CAAA,IAAA,EAAA,YAAA,GAAA,EAAS,GAAA,sBAAA,CAAA,IAAA,EAAA,YAAA,EAAA,GAAA,CAAA,EAAT,IAAW,EAAA,EAAA,OAAA,CAAA;AACX,YAAA,sBAAA,CAAA,IAAI,EAAA,cAAA,EAAU,sBAAA,CAAA,IAAI,sBAAO,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAA,CAAA,IAAI,EAAK,YAAA,EAAA,GAAA,CAAA,CAAC,MAAA,CAAA;AAC7C,YAAA,sBAAA,CAAA,IAAI,EAAA,cAAA,EAAA,GAAA,CAAO,CAAC,IAAI,CAAC;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,GAAG,EAAE,IAAI;AACV,aAAA,CAAC,CAAA;SACH,EAAE,IAAI,CAAC,CAAA;QAER,sBAAA,CAAA,IAAI,EAAU,iBAAA,EAAA,GAAA,CAAA,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,IAAY,KAAI;AACtD,YAAA,sBAAA,CAAA,IAAI,EAAO,kBAAA,EAAA,GAAA,EAAA,cAAA,CAAA,CAAA,IAAA,CAAX,IAAI,EAAQ,IAAI,CAAC,CAAA;SAClB,EAAE,IAAI,CAAC,CAAA;;QAIR,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,MAAK;AACjC,YAAA,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,EAAA,cAAA,CAAO,CAAX,IAAA,CAAA,IAAI,CAAS,CAAA;SACd,EAAE,IAAI,CAAC,CAAA;QAER,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,MAAc,KAAI;AAClD,YAAAA,OAAK,CAAC,GAAG,CAAC,MAAM,EAAE;gBAChB,QAAQ,EAAE,sBAAA,CAAA,IAAI,EAAU,iBAAA,EAAA,GAAA,CAAA;AACxB,gBAAA,KAAK,EAAE,sBAAA,CAAA,IAAI,EAAO,cAAA,EAAA,GAAA,CAAA,CAAC,KAAK,EAAE;gBAC1B,GAAG,EAAE,sBAAA,CAAA,IAAI,EAAK,YAAA,EAAA,GAAA,CAAA;AACf,aAAA,CAAC,CAAA;SACH,EAAE,IAAI,CAAC,CAAA;QAER,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,MAAc,KAAI;AAClD,YAAA,IAAIA,OAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACrB,MAAM,GAAG,GAAGA,OAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;AAC9B,gBAAA,sBAAA,CAAA,IAAI,EAAa,iBAAA,EAAA,GAAG,CAAC,QAAQ,MAAA,CAAA;AAC7B,gBAAA,sBAAA,CAAA,IAAI,EAAU,cAAA,EAAA,GAAG,CAAC,KAAK,MAAA,CAAA;AACvB,gBAAA,sBAAA,CAAA,IAAI,EAAQ,YAAA,EAAA,GAAG,CAAC,GAAG,MAAA,CAAA;AACpB,aAAA;SACF,EAAE,IAAI,CAAC,CAAA;QAER,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,MAAc,KAAI;AAClD,YAAAA,OAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;SACrB,EAAE,IAAI,CAAC,CAAA;AAER,QAAA,sBAAA,CAAA,IAAI,EAAA,kBAAA,EAAA,GAAA,EAAA,cAAA,CAAO,CAAX,IAAA,CAAA,IAAI,CAAS,CAAA;KACd;;AAcD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAO,cAAA,EAAA,GAAA,CAAA,CAAC,MAAM,CAAA;KAC1B;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,sBAAA,CAAA,IAAI,EAAA,cAAA,EAAA,GAAA,CAAO,CAAC,sBAAA,CAAA,IAAI,EAAK,YAAA,EAAA,GAAA,CAAA,CAAC,CAAC,KAAK,CAAA;KACpC;;AAGD,IAAA,EAAE,CAAE,KAAa,EAAA;QACf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;YAAE,OAAM;AAE5C,QAAA,IAAI,SAAS,GAAG,sBAAA,CAAA,IAAI,EAAK,YAAA,EAAA,GAAA,CAAA,GAAG,KAAK,CAAA;QACjC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAE7D,QAAA,sBAAA,CAAA,IAAI,EAAA,YAAA,EAAQ,SAAS,EAAA,GAAA,CAAA,CAAA;AAErB,QAAA,sBAAA,CAAA,IAAI,EAAU,iBAAA,EAAA,GAAA,CAAA,CAAC,OAAO,CAAC,8BAA8B,EAAE,sBAAA,CAAA,IAAI,EAAO,cAAA,EAAA,GAAA,CAAA,CAAC,uBAAA,IAAI,EAAA,YAAA,EAAA,GAAA,CAAK,CAAC,CAAC,GAAG,CAAC,CAAA;AAClF,QAAA,sBAAA,CAAA,IAAI,EAAQ,eAAA,EAAA,GAAA,CAAA,CAAC,OAAO,CAAC,UAAU,EAAE,sBAAA,CAAA,IAAI,EAAA,cAAA,EAAA,GAAA,CAAO,CAAC,sBAAA,CAAA,IAAI,EAAK,YAAA,EAAA,GAAA,CAAA,CAAC,CAAC,CAAA;KACzD;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACZ;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;KACX;AAED,IAAA,SAAS,CAAE,KAAU,EAAE,KAAa,EAAE,GAAW,EAAA;AAC/C,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,sBAAA,CAAA,IAAI,EAAU,cAAA,EAAA,sBAAA,CAAA,IAAI,EAAA,cAAA,EAAA,GAAA,CAAO,CAAC,KAAK,CAAC,CAAC,EAAE,uBAAA,IAAI,EAAA,YAAA,EAAA,GAAA,CAAK,GAAG,CAAC,CAAC,MAAA,CAAA;AACjD,QAAA,sBAAA,CAAA,IAAI,EAAA,cAAA,EAAA,GAAA,CAAO,CAAC,IAAI,CAAC;YACf,KAAK;YACL,KAAK;YACL,GAAG;AACJ,SAAA,CAAC,CAAA;QACF,sBAAA,CAAA,IAAI,gBAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,MAAA,CAAA;QAE3B,sBAAA,CAAA,IAAI,yBAAU,CAAC,OAAO,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAA;KAC5D;AAED,IAAA,YAAY,CAAE,KAAU,EAAE,KAAa,EAAE,GAAW,EAAA;AAClD,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,sBAAA,CAAA,IAAI,EAAO,cAAA,EAAA,GAAA,CAAA,CAAC,uBAAA,IAAI,EAAA,YAAA,EAAA,GAAA,CAAK,CAAC,GAAG;YACvB,KAAK;YACL,KAAK;YACL,GAAG;SACJ,CAAA;QAED,sBAAA,CAAA,IAAI,yBAAU,CAAC,OAAO,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAA;KAC5D;;AAGD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAOA,OAAK,CAAA;KACb;AACF,CAAA;AArES,iBAAA,GAAA,IAAA,OAAA,EAAA,EAAA,cAAA,GAAA,IAAA,OAAA,EAAA,EAAA,YAAA,GAAA,IAAA,OAAA,EAAA,EAAA,eAAA,GAAA,IAAA,OAAA,EAAA,EAAA,kBAAA,GAAA,IAAA,OAAA,EAAA,EAAA,cAAA,GAAA,SAAA,cAAA,CAAA,IAAI,GAAG,EAAE,EAAA;AACf,IAAA,sBAAA,CAAA,IAAI,EAAU,cAAA,EAAA;AACZ,QAAA;AACE,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,GAAG,EAAE,IAAI,IAAI,uBAAA,IAAI,EAAA,iBAAA,EAAA,GAAA,CAAU,CAAC,IAAI;AACjC,SAAA;AACF,KAAA,EAAA,GAAA,CAAA,CAAA;AACD,IAAA,sBAAA,CAAA,IAAI,EAAA,YAAA,EAAQ,CAAC,EAAA,GAAA,CAAA,CAAA;AACf,CAAC;;ACxEU,MAAA,OAAO,GAAY;AAC9B,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,IAAI,EAAE,IAAI;EACX;MAEY,kBAAkB,GAAG,MAAM;;;ACRxC,MAAM,QAAQ,GAAG,kBAAkB,CAAA;AACnC,MAAM,KAAK,GAAG,IAAI,YAAY,CAAkB,UAAU,CAAC,CAAA;AAErD,MAAO,QAAS,SAAQ,MAAM,CAAA;AAMlC,IAAA,WAAA,CAAa,OAAgB,EAAA;AAC3B,QAAA,KAAK,EAAE,CAAA;;;AALT,QAAA,aAAA,CAAA,GAAA,CAAA,IAAA,EAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AACxB,QAAA,oBAAA,CAAA,GAAA,CAAA,IAAA,EAAc,KAAK,CAAA,CAAA;QACnB,gBAAY,CAAA,GAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKV,QAAA,sBAAA,CAAA,IAAI,EAAW,gBAAA,EAAA,OAAO,CAAC,MAAM,MAAA,CAAA;AAE7B,QAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,eAAA,CAAO,CAAX,IAAA,CAAA,IAAI,CAAS,CAAA;QAEb,IAAI,CAAC,EAAE,CACL,8BAA8B,EAC9B,CAAC,IAAY,KAAI;AACf,YAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAe,IAAI,EAAA,GAAA,CAAA,CAAA;AAEvB,YAAA,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;YAC/B,sBAAA,CAAA,IAAI,qBAAK,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;AAEtC,YAAA,IAAI,QAAQ,KAAK,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,EAAE;AAC/B,gBAAA,sBAAA,CAAA,IAAI,EAAQ,gBAAA,EAAA,GAAA,CAAA,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AACnC,aAAA;AAED,YAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAe,KAAK,EAAA,GAAA,CAAA,CAAA;SACzB,EACD,IAAI,CACL,CAAA;;QAGD,IAAI,CAAC,EAAE,CACL,eAAe,CAAC,IAAI,EACpB,MAAK;AACH,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,eAAA,CAAO,CAAX,IAAA,CAAA,IAAI,CAAS,CAAA;SACd,EACD,IAAI,CACL,CAAA;QAED,IAAI,CAAC,EAAE,CACL,eAAe,CAAC,OAAO,EACvB,CAAC,MAAc,KAAI;AACjB,YAAA,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE;gBAChB,QAAQ,EAAE,IAAI,CAAC,IAAI;AACpB,aAAA,CAAC,CAAA;SACH,EACD,IAAI,CACL,CAAA;QAED,IAAI,CAAC,EAAE,CACL,eAAe,CAAC,OAAO,EACvB,CAAC,MAAc,KAAI;;AAEjB,YAAA,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACrB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;AAC9B,gBAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAe,IAAI,EAAA,GAAA,CAAA,CAAA;gBACvB,sBAAA,CAAA,IAAI,qBAAK,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAA;AAC7B,gBAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAe,KAAK,EAAA,GAAA,CAAA,CAAA;AACzB,aAAA;SACF,EACD,IAAI,CACL,CAAA;QAED,IAAI,CAAC,EAAE,CACL,eAAe,CAAC,OAAO,EACvB,CAAC,MAAc,KAAI;AACjB,YAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;SACrB,EACD,IAAI,CACL,CAAA;KACF;;AAqED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAA;KAC1B;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;QACvB,MAAM,GAAG,GAAG,kBAAkB,CAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAAE,OAAM;AAE3D,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAChB,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,GAAG,GAAG,CAAA;AAExB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;KACtB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAEhB,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,GAAG,CAAA;AAEpB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAA;KAC1B;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;AACvB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAEhB,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,GAAG,GAAG,CAAA;AAExB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;KACtB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,MAAM,IAAI,GAAG,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAA;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;YAAE,OAAM;QAExC,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,GAAG,CAAA;AAEpB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAA;KAC1B;IAED,IAAI,QAAQ,CAAE,GAAW,EAAA;AACvB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAEhB,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,GAAG,GAAG,CAAA;AAExB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,MAAM,CAAA;KACxB;IAED,IAAI,MAAM,CAAE,GAAW,EAAA;AACrB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,QAAA,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAI,CAAA,EAAA,GAAG,EAAE,CAAA;QAE3C,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,MAAM,GAAG,GAAG,CAAA;AAEtB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;KACtB;;IAGD,IAAI,IAAI,CAAE,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;AAClC,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;AAChB,QAAA,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAI,CAAA,EAAA,GAAG,EAAE,CAAA;QAE3C,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,GAAG,CAAA;AAEpB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,CAAA;KACtB;IAED,IAAI,IAAI,CAAE,GAAW,EAAA;QACnB,MAAM,GAAG,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE;YAAE,OAAM;QAEnE,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,GAAG,CAAA;AAEpB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,MAAM,CAAA;KACxB;IAED,IAAI,MAAM,CAAE,GAAW,EAAA;QACrB,MAAM,GAAG,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE;YAAE,OAAM;QAEnE,MAAM,QAAQ,GAAG,sBAAA,CAAA,IAAI,kDAAa,CAAjB,IAAA,CAAA,IAAI,CAAe,CAAA;AACpC,QAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,MAAM,GAAG,GAAG,CAAA;AAEtB,QAAA,IAAI,uBAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,wBAAA,CAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC;AAAE,YAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,EAAA,uBAAA,CAAe,CAAnB,IAAA,CAAA,IAAI,CAAiB,CAAA;KAC1D;;IAGD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAA;KAC3C;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAA;KAC3C;AAED,IAAA,OAAO,CAAE,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAA;KAClD;IAED,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAA;KACjB;;AAGD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,KAAK,CAAA;KACb;AACF,CAAA;;AAxNG,IAAA,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAA;AACpC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;AAC7B,IAAA,IAAI,MAAM,EAAE;AACV,QAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;AAC/B,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAChD,OAAO,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;AAChC,SAAC,CAAC,CAAA;QACF,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;QACvE,MAAM,GAAG,GAAG,CAAA,EAAG,QAAQ,CAAA,EAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA,EAAG,SAAS,CAAA,CAAE,CAAA;QAEhF,sBAAA,CAAA,IAAI,iBAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,MAAA,CAAA;QAExB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7C,KAAA;AACH,CAAC,EAAA,qBAAA,GAAA,SAAA,qBAAA,GAAA;AAGC,IAAA,OAAO,uBAAA,IAAI,EAAA,aAAA,EAAA,GAAA,CAAK,CAAC,MAAM,EAAE,CAAA;AAC3B,CAAC,mDAEU,IAAY,EAAA;AACrB,IAAA,sBAAA,CAAA,IAAI,EAAK,aAAA,EAAA,GAAA,CAAA,CAAC,IAAI,GAAG,IAAI,CAAA;AACvB,CAAC,EAAA,uBAAA,GAAA,SAAA,uBAAA,GAAA;IAGC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC,+DAKgB,QAAkB,EAAA;IACjC,IAAI,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAY,EAAE;AACpB,QAAA,OAAO,KAAK,CAAA;AACb,KAAA;IAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,sBAAA,CAAA,IAAI,qBAAK,CAAC,MAAM,EAAE,CAAA;;AAG/E,IAAA,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;QAC9F,sBAAA,CAAA,IAAI,+CAAU,CAAd,IAAA,CAAA,IAAI,EAAW,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC7B,QAAA,OAAO,KAAK,CAAA;AACb,KAAA;;AAGD,IAAA,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE;AAClC,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;;AAGD,IAAA,IAAI,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AAC9B,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;;AAGD,IAAA,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;AAC1B,QAAA,sBAAA,CAAA,IAAI,EAAQ,gBAAA,EAAA,GAAA,CAAA,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AAClC,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;IAED,sBAAA,CAAA,IAAI,+CAAU,CAAd,IAAA,CAAA,IAAI,EAAW,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC7B,IAAA,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AA4JH,SAAS,eAAe,CAAE,GAAG,GAAG,EAAE,EAAA;IAChC,MAAM,MAAM,GAAG,QAAQ,CAAA;AACvB,IAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,MAAM,GAAG,GAAG,CAAA;AACpB,KAAA;AACD,IAAA,OAAO,GAAG,CAAA;AACZ;;AC1TA,MAAM,OAAO,GAAG,WAAW,CAAA;AAC3B,MAAM,IAAI,GAAG,wBAAwB,CAAA;AACrC,MAAM,MAAM,GAAG,yFAAyF,CAAA;AAExG,MAAM,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;AAE1C,MAAA,GAAG,GAAG,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG;AAC1D,IAAA,WAAW,EAAE,SAAS;AACtB,IAAA,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,MAAM,GAAG,GAAG;AACxB,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE,cAAc,GAAG,GAAG;AAC/B,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,SAAS,EAAE,EAAE;;;ACvBf;AACW,IAAA,IAAiB;AAE5B,CAAC,YAAA;AACC,IAAA,IAAI,QAAQ,CAAA;AACZ,IAAA,IAAI,CAAC,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,EAAE;QACnF,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAA;AAC9B,KAAA;SAAM,IAAI,IAAI,CAAC,GAAG,EAAE;AACnB,QAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAA;AAClC,KAAA;AAAM,SAAA;AACL,QAAA,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;AAC/B,QAAA,GAAG,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAA;AAC5C,KAAA;AACH,CAAC,GAAG,CAAA;AAEJ,IAAI,QAAQ,GAAG,CAAC,CAAA;AAEhB;AACA;AACA,MAAM,IAAI,GAAG,OAAO,qBAAqB,KAAK,WAAW,IAAI,qBAAqB,KAAK,IAAI,GAAG,qBAAqB,GAAG,UAAU,QAAQ,EAAA;AACtI,IAAA,MAAM,IAAI,GAAG,GAAG,EAAE,CAAA;AAClB,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,EAAE,EAAE,IAAI,CAAC,CAAA;AAC9C,IAAA,OAAO,UAAU,CAAC,YAAA,EAAc,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAA,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAA;AACnF,EAAC;AAEK,MAAA,IAAI,GAAG,OAAO,oBAAoB,KAAK,WAAW,IAAI,oBAAoB,KAAK,IAAI;AACvF,MAAE,oBAAoB;MACpB,UAAU,IAAI,EAAA;;QAEd,YAAY,CAAC,IAAI,CAAC,CAAA;AACpB;;ACpBF,IAAIC,SAAM;AAEV,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,EAAE;IAC5C,MAAM,MAAO,SAAQ,MAAM,CAAA;AAUzB,QAAA,WAAA,GAAA;AACE,YAAA,KAAK,EAAE,CAAA;YAVT,IAAS,CAAA,SAAA,GAAGC,GAAS,CAAA;YACrB,IAAqB,CAAA,qBAAA,GAAGC,IAAG,CAAA;YAC3B,IAAoB,CAAA,oBAAA,GAAGC,IAAG,CAAA;YAC1B,IAAgB,CAAA,gBAAA,GAAG,gBAAgB,CAAA;AASjC,YAAA,MAAM,gBAAgB,GAAG;AACvB,gBAAA,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,IAAI,EAAE,CAAC;AAC3C,gBAAA,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,IAAI,EAAE,CAAC;aAC9C,CAAA;AAED,YAAA,gBAAgB,CAAC,OAAO,CAAC,QAAQ,IAAG;AAClC,gBAAA,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU;oBAAE,OAAM;AAC1D,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;;oBAEzD,IAAI;wBACF,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAClC,qBAAA;AAAC,oBAAA,OAAO,CAAC,EAAE;AACV,wBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;4BACzC,OAAO,CAAC,IAAI,CAAC,CAAsB,mBAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAkB,gBAAA,CAAA,CAAC,CAAA;AACvE,yBAAA;AACF,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAA;YAEF,IAAI,CAAC,IAAI,KAAT,IAAI,CAAC,IAAI,GAAK,IAAI,CAAA,CAAA;;AAGlB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AAC9C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAE3D,IAAI,CAAC,SAAS,EAAE,CAAA;SACjB;QAED,SAAS,GAAA;AACP,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAA;AAC/B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAA;YAE7B,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,MAAc,KAAI;;gBAE/C,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;aAChD,EAAE,IAAI,CAAC,CAAA;YAER,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,MAAc,KAAI;;gBAElD,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAClD,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;aAClD,EAAE,IAAI,CAAC,CAAA;YAER,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,MAAc,KAAI;;gBAElD,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAClD,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;aAClD,EAAE,IAAI,CAAC,CAAA;YAER,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,MAAc,KAAI;;gBAElD,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAClD,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;aAClD,EAAE,IAAI,CAAC,CAAA;SACT;AAED,QAAA,IAAI,QAAQ,GAAA;YACV,OAAO,GAAG,CAAC,QAAQ,CAAA;SACpB;QAED,gBAAgB,CAAE,KAAa,EAAE,QAA4B,EAAA;AAC3D,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAM;YAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;SAC/B;QAED,mBAAmB,CAAE,KAAa,EAAE,QAA4B,EAAA;AAC9D,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAM;YAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;SAChC;QAED,UAAU,CAAE,GAAG,IAAmC,EAAA;AAChD,YAAA,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;SAC3B;QAED,YAAY,CAAE,GAAG,IAAqC,EAAA;AACpD,YAAA,OAAO,YAAY,CAAC,GAAG,IAAI,CAAC,CAAA;SAC7B;AACF,KAAA;IAEDH,QAAM,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;AACnC,CAAA;AAAM,KAAA;AACL,IAAAA,QAAM,GAAG,GAAG,CAAC,MAAM,CAAA;AACpB,CAAA;AAEY,MAAA,QAAQ,GAAGA,QAAM,CAAC,SAAQ;AAC1B,MAAA,OAAO,GAAGA,QAAM,CAAC;;AC9G9B;AACM,MAAO,UAAW,SAAQ,WAAW,CAAA;AAAG;;ACH9C;AAqBA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAA;AAC7C,MAAM,MAAM,GAAG,WAAW,EAAE,CAAA;AAC5B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAA;AAEb,SAAA,kBAAkB,CAAE,IAAyB,EAAE,EAAU,EAAA;AACvE,IAAA,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;AACxD,IAAA,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;AACzB,CAAC;AAEK,SAAU,eAAe,CAAE,EAAU,EAAA;AACzC,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAC1B,CAAC;AAEK,SAAU,kBAAkB,CAAE,EAAU,EAAA;AAC5C,IAAA,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AACtB,CAAC;AAEK,SAAU,eAAe,CAAE,IAAa,EAAA;IAC5C,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,QAAA,OAAO,EAAE,CAAA;AACV,KAAA;AACD,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA;AACnD,CAAC;AAEK,SAAU,WAAW,CAAE,IAAY,EAAE,SAAiB,EAAE,GAAG,IAAe,EAAA;IAC9E,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAEpC,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,OAAM;AACP,KAAA;AAED,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,SAA+B,CAAC,CAAA;AAElF,IAAA,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;AACjB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;AACpD,QAAA,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;AACd,KAAA;AAED,IAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACrB,OAAM;AACP,KAAA;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACnC,CAAC;AAEK,SAAU,SAAS,CAAE,GAA6B,EAAA;IACtD,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,QAAA,OAAO,EAAE,CAAA;AACV,KAAA;AACD,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;QACxC,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;AAC7B,KAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACZ,IAAA,OAAO,IAAI,KAAK,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA;AACxC,CAAC;AAEe,SAAA,OAAO,CAAE,EAAU,EAAE,OAAiC,EAAA;IACpE,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAC3B,IAAA,IAAI,KAAK,EAAE;QACT,OAAO,CAAA,EAAG,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA,EAAG,SAAS,CAAC,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,IAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA,CAAE,CAAA;AAC7G,KAAA;AAAM,SAAA;QACL,OAAO,CAAA,EAAG,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAG,EAAA,SAAS,CAAC,OAAO,CAAC,CAAA,CAAE,CAAA;AACtE,KAAA;AACH,CAAC;AAEK,SAAU,kBAAkB,CAAE,IAAY,EAAA;AAC9C,IAAA,OAAO,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAA;AAC9B,CAAC;AAEK,SAAU,iBAAiB,CAAE,IAAY,EAAA;AAC7C,IAAA,OAAO,IAAI,GAAG,GAAG,GAAG,OAAO,CAAA;AAC7B,CAAC;AAEK,SAAU,iBAAiB,CAAE,IAAY,EAAA;AAC7C,IAAA,OAAO,IAAI,GAAG,GAAG,GAAG,OAAO,CAAA;AAC7B,CAAC;AAEK,SAAU,gBAAgB,CAAE,SAAc,EAAE,QAAiB,EAAE,IAA8B,EAAE,UAAuB,EAAA;;AAE1H,IAAA,MAAM,EAAE,GAAG,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAR,QAAQ,GAAI,CAAa,UAAA,EAAA,MAAM,EAAE,CAAA,CAAE,CAAA;IAC9C,MAAM,CACJ,MAAM,EACN,QAAQ,EACR,OAAO,EACP,MAAM,EACN,MAAM,EACN,UAAU,EACV,sBAAsB,EACvB,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAE,CAAC,IAAI,CAAA;IAC5C,IAAI,WAAW,GAA2B,IAAI,CAAA;IAC9C,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,gBAAgB,GAAmB,EAAE,CAAA;IAEzC,SAAS,gBAAgB,CAAE,IAAgB,EAAA;QACzC,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAA;QACtF,OAAO,CAAC,MAAM,GAAG;YACf,MAAM,EAAE,IAAI,CAAC,WAAY;AACzB,YAAA,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;AAC/B,YAAA,MAAM,EAAE,iBAAiB,CAAC,EAAE,CAAC;AAC7B,YAAA,MAAM,EAAE,iBAAiB,CAAC,EAAE,CAAC;SAC9B,CAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAChC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;AAC1C,SAAA;KACF;AACD,IAAA,IAAI,YAA0C,CAAA;AAC9C,IAAA,IAAI,SAAwB,CAAA;AAC5B,IAAA,MAAM,MAAM,GAAiB;AAC3B,QAAA,CAAC,MAAM,CAAC,CAAoB,OAA6C,GAAA,EAAE,EAAE,EAAS,EAAA;AACpF,YAAA,SAAS,GAAG,IAAI,OAAO,CAAC,OAAO,IAAM,EAAA,YAAY,GAAG,OAAO,CAAA,EAAE,CAAC,CAAA;AAE9D,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AAErB,YAAA,OAAO,CAAC,IAAI,GAAG,IAAW,CAAA;AAC1B,YAAA,IAAI,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE,CAAA;;AAG9B,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AAChF,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;AAC7D,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,MAAM,CAAC,IAAI,GAAG,SAAS,CAAA;AACxB,aAAA;;AAED,YAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;AAC5B,gBAAA,IAAI,CAAC,WAAW,GAAG,aAAa,CAAA;AACjC,aAAA;YAED,gBAAgB,CAAC,IAAI,CAAC,CAAA;;YAGtB,IAAI,CAAC,KAAK,EAAE;gBACVA,QAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AAChD,aAAA;YAED,MAAM,KAAK,GAAG,MAAK;gBACjB,OAAO,CAAC,GAAI,CAAC,KAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAK;oBAC7C,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAkB,SAAS,CAAC,CAAA;AAErE,oBAAA,MAAM,CAAC,WAAW,KAAK,IAAI,EAAE,WAAW,CAAC,CAAA;oBACzC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;AACjD,oBAAA,YAAY,EAAE,CAAA;oBACd,IAAI,CAAC,KAAK,EAAE;AACV,wBAAA,WAAW,CAAC,GAAG,GAAG,IAAI,CAAA;AACtB,wBAAA,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;AACpC,qBAAA;AAAM,yBAAA;AACL,wBAAA,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAA;AACvB,qBAAA;AACH,iBAAC,CAAC,CAAA;AACJ,aAAC,CAAA;AACD,YAAA,IAAI,UAAU,EAAE;AACd,gBAAA,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC7B,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,EAAE,CAAA;AACR,aAAA;SACF;AACD,QAAA,CAAC,QAAQ,CAAC,GAAA;AACR,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;;YAEhC,IAAI,CAAC,KAAK,EAAE;gBACVA,QAAM,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AACnD,aAAA;;AAED,YAAA,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YAChC,UAAU,GAAG,IAAI,CAAA;YACjB,OAAO,CAAC,GAAI,CAAC,OAAQ,CAAC,SAAS,EAAE,MAAK;gBACpC,UAAU,GAAG,KAAK,CAAA;AAClB,gBAAA,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AAC3B,gBAAA,IAAI,WAAW,EAAE;AACf,oBAAA,WAAW,CAAC,GAAG,GAAG,IAAI,CAAA;oBACtB,WAAW,GAAG,IAAI,CAAA;AACnB,iBAAA;gBACD,IAAI,gBAAgB,CAAC,MAAM,EAAE;oBAC3B,gBAAgB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;oBACpC,gBAAgB,GAAG,EAAE,CAAA;AACtB,iBAAA;AACH,aAAC,CAAC,CAAA;SACH;AACD,QAAA,CAAC,OAAO,CAAC,GAAA;AACP,YAAA,SAAS,CAAC,IAAI,CAAC,MAAK;;AAElB,gBAAA,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;;AAErC,gBAAAE,IAAG,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACtD,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAA;AAC5B,aAAC,CAAC,CAAA;SACH;AACD,QAAA,CAAC,MAAM,CAAC,CAAE,OAAO,GAAG,EAAE,EAAA;AACpB,YAAA,SAAS,CAAC,IAAI,CAAC,MAAK;;AAElB,gBAAA,OAAO,CAAC,IAAI,GAAG,IAAW,CAAA;gBAC1B,gBAAgB,CAAC,IAAI,CAAC,CAAA;;gBAEtB,IAAI,CAAC,KAAK,EAAE;oBACVF,QAAM,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;AACxD,iBAAA;;gBAED,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;;AAE7C,gBAAAE,IAAG,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACvD,aAAC,CAAC,CAAA;SACH;AACD,QAAA,CAAC,MAAM,CAAC,GAAA;;YAEN,IAAI,CAAC,KAAK,EAAE;gBACVF,QAAM,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;AACxD,aAAA;;AAED,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;AACzB,gBAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;AACnB,gBAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAA;AACtB,aAAA;;AAED,YAAA,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;;YAEpC,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAA;SAC3C;KACF,CAAA;AAED,IAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;QAC/B,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,MAAK;YAC5C,OAAO,GAAG,IAAI,CAAA;AACd,YAAA,OAAO,EAAE,CAAA;AACX,SAAC,CAAC,CAAA;QACF,MAAM,CAAC,SAAS,CAAC,GAAG,YAAA;AAClB,YAAA,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC,CAAA;AACvE,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACrB,aAAA;AAAM,iBAAA;gBACL,OAAO,IAAI,EAAE,CAAA;AACd,aAAA;AACH,SAAC,CAAA;AACH,KAAC,CAAC,CAAA;;AAGF,IAAA,sBAAsB,CAAC,OAAO,CAAC,SAAS,IAAG;;QACzC,IAAI,SAAS,CAAC,SAAS,CAAC;AACtB,aAAA,CAAA,EAAA,GAAA,SAAS,CAAC,SAAS,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,CAAC,CAAA;YAChC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC7C,aAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA,EAChD;AACA,YAAA,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,GAAG,IAAI,EAAA;;gBACnC,MAAM,MAAM,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA;AAC9B,gBAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,EAAE,EAAE;AACd,oBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAA;oBACpB,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;AAC/C,oBAAA,IAAI,OAAO,EAAE;AACX,wBAAA,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;AACjC,qBAAA;AACF,iBAAA;gBACD,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAA;AACxD,aAAC,CAAA;AACF,SAAA;AACH,KAAC,CAAC,CAAA;AAEF,IAAA,MAAM,CAAC,EAAE,GAAG,YAAY,CAAA;AAExB,IAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AACtB,QAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;AACnB,KAAA;AAED,IAAA,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;AAEtC,IAAA,OAAO,MAAM,CAAA;AACf,CAAC;SAEe,qBAAqB,CAAE,SAA+B,EAAE,aAAsB,EAAE,IAA8B,EAAA;AAC5H,IAAA,MAAM,EAAE,GAAG,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,KAAA,CAAA,GAAb,aAAa,GAAI,CAAkB,eAAA,EAAA,MAAM,EAAE,CAAA,CAAE,CAAA;IACxD,IAAI,gBAAgB,GAA2B,IAAI,CAAA;AACnD,IAAA,MAAM,CAAE,QAAQ,EAAE,QAAQ,CAAE,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAE,CAAC,SAAS,CAAA;AAE5E,IAAA,MAAM,MAAM,GAAQ;AAClB,QAAA,CAAC,QAAQ,CAAC,GAAA;;AACR,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA,KAAI,MAAM,EAAE,CAAA;AAEjD,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YAElD,OAAO,CAAC,GAAI,CAAC,KAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAK;gBACxC,gBAAgB,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAkB,IAAI,CAAC,CAAA;AACrE,gBAAA,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,WAAW,CAAC,CAAA;gBAC9C,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACzC,gBAAA,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;gBAC1B,IAAI,CAAC,KAAK,EAAE;AACV,oBAAA,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAA;AAC3B,oBAAA,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;AACrC,iBAAA;AACH,aAAC,CAAC,CAAA;SACH;AACD,QAAA,CAAC,QAAQ,CAAC,GAAA;AACR,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YAElD,OAAO,CAAC,GAAI,CAAC,OAAQ,CAAC,IAAI,EAAE,MAAK;AAC/B,gBAAA,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACtB,gBAAA,IAAI,gBAAgB,EAAE;AACpB,oBAAA,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAA;AAC5B,iBAAA;AACH,aAAC,CAAC,CAAA;SACH;AACD,QAAA,OAAO,EAAE;AACP,YAAA,EAAE,EAAE,YAAY;AACjB,SAAA;KACF,CAAA;AAED,IAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AACtB,QAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;AACnB,KAAA;IAED,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;;QACnD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAA,EAAA,GAAA,SAAS,CAAC,GAAG,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,SAAS,CAAA;AAC3C,KAAC,CAAC,CAAA;AAEF,IAAA,OAAO,MAAM,CAAA;AACf,CAAC;AAEK,SAAU,8BAA8B,CAAE,aAAsB,EAAA;AACpE,IAAA,MAAM,eAAe,GAAG,aAAa,KAAK,cAAc,CAAA;AACxD,IAAA,MAAM,CAAE,QAAQ,EAAE,QAAQ,CAAE,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAE,CAAC,SAAS,CAAA;IAE5E,MAAM,UAAU,GAAG,eAAe;AAChC,UAAE;AACA,YAAA,CAAC,QAAQ,CAAC,GAAA;;gBACR,MAAM,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,MAAI,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAA,CAAA;AACzD,gBAAA,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzB,oBAAA,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;oBACzC,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;AACnD,oBAAA,IAAI,EAAE,EAAE;AACN,wBAAA,EAAE,CAAC,GAAG,GAAG,IAAI,CAAA;AACd,qBAAA;AACF,iBAAA;aACF;AACD,YAAA,CAAC,QAAQ,CAAC,GAAA;;gBACR,MAAM,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,MAAI,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAA,CAAA;AACzD,gBAAA,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzB,oBAAA,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;oBACtC,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;AACnD,oBAAA,IAAI,EAAE,EAAE;AACN,wBAAA,EAAE,CAAC,GAAG,GAAG,IAAI,CAAA;AACd,qBAAA;AACF,iBAAA;aACF;AACF,SAAA;UACC,SAAS,CAAA;AAEb,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,gCAAgC,EAAA,MAAA,CAAA,MAAA,CAAA,EAE9C,UAAU,EAAE;AACV,YAAA,CAAC,EAAE;AACD,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE;oBACL,CAAoB,IAAA,4BAAEI,oBAAkB,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI;AACxE,iBAAA;AACF,aAAA;AACD,YAAA,CAAC,EAAE;AACD,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,EAAE;AACV,aAAA;AACF,SAAA,EACD,OAAO,EAAE;AACP,YAAA,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,CAAC,eAAe;AAC9B,SAAA,EACD,OAAO,EAAE;AACP,YAAA,EAAE,EAAE,YAAY;AACjB,SAAA,EAAA,EACE,UAAU,CAAI,EAAA,EAAE,eAAe,EAAE,CAAC,CAAA;AAC3C;;AC5XA,MAAM,OAAO,GAAG,GAAG,CAAA;MAEN,QAAQ,GAAG,CAAC,EAAQ,EAAE,GAAyB,KAAI;AAC9D,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AAC5B,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAE7B,MAAM,SAAS,GAAG,MAAK;AACrB,QAAA,UAAU,CAAC,YAAA;AACT,YAAA,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAA;SAC1B,EAAE,CAAC,CAAC,CAAA;AACP,KAAC,CAAA;IAED,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,EAAE,CAAA;AAEvC,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAA;AAE7B;;;;;AAKG;AACH,IAAA,SAAS,IAAI,GAAA;;QACX,MAAM,WAAW,GAA2B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAkB,IAAI,CAAC,CAAA;AAC9F,QAAA,IAAI,WAAW,KAAX,IAAA,IAAA,WAAW,uBAAX,WAAW,CAAE,aAAa,EAAE;YAC9B,IAAI,aAAa,EAAE,EAAE;;AAEnB,gBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,WAAW,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,kBAAkB,CAAC,MAAK,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,IAAI,CAAC,MAAK;AACzD,oBAAA,SAAS,EAAE,CAAA;AACb,iBAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,SAAS,EAAE,CAAA;AAClB,aAAA;AAAM,iBAAA;AACL,gBAAA,WAAW,CAAC,qBAAqB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;AAC3C,aAAA;AACF,SAAA;aAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE;AAC3C,YAAA,SAAS,EAAE,CAAA;AACZ,SAAA;AAAM,aAAA;YACL,UAAU,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;AAC7B,SAAA;KACF;AAED,IAAA,IAAI,EAAE,CAAA;AACR;;;;"}
|