@mybricks/taro-core 0.0.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/index.cjs.js +2555 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +692 -0
- package/dist/index.esm.js +2504 -0
- package/dist/index.esm.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/mybricks/constant.js","../src/mybricks/log.js","../src/mybricks/Subject.js","../src/mybricks/createReactiveInputHandler.js","../../../src/utils/hooks.ts","../../../src/utils/useContext.ts","../src/mybricks/utils.js","../src/mybricks/createJSHandle.js","../src/mybricks/variables.js","../src/mybricks/index.js","../../../src/utils/pageRouter.ts","../../../src/utils/ComContext.tsx","../../../src/utils/slots.tsx","../../../src/utils/with.tsx","../../../src/utils/PopupRenderer.tsx","../../../src/utils/popupRouter.ts","../../../src/comlib/_ShowToast.ts","../../../src/comlib/_ScanQrcode.ts","../../../src/comlib/_SetStorage.ts","../../../src/comlib/_GetStorage.ts","../../../src/comlib/_RemoveStorage.ts","../../../src/comlib/_GetLocation.ts","../../../src/comlib/_Vibrate.ts","../../../src/comlib/_CallPhone.ts","../../../src/comlib/_OpenCamera.ts","../../../src/comlib/_OpenUrl.ts","../../../src/comlib/_Share.ts","../../../src/comlib/_GetSystemInfo.ts","../../../src/comlib/_AesEncode.ts","../../../src/comlib/_Modal.ts","../../../src/comlib/_Format.ts","../../../src/comlib/_ChooseFile.ts","../../../src/comlib/_ChooseMedia.ts","../../../src/comlib/_Connector.ts","../../../src/comlib/_ConnectorGlobalHeaders.ts","../../../src/comlib/_BackTo.ts","../../../src/comlib/_Router.ts","../../../src/comlib/_OpenPetalMap.ts","../../../src/comlib/_TextToSpeech.ts","../../../src/comlib/_TimerDebounce.ts","../../../src/comlib/_TimerDelay.ts","../../../src/comlib/_TimerThrottle.ts"],"sourcesContent":["export const SUBJECT_NEXT = Symbol(\"SUBJECT_NEXT\")\nexport const SUBJECT_VALUE = Symbol(\"SUBJECT_VALUE\")\nexport const SUBJECT_SUBSCRIBE = Symbol(\"SUBJECT_SUBSCRIBE\")\nexport const SUBJECT_UNSUBSCRIBE = Symbol(\"SUBJECT_UNSUBSCRIBE\")\nexport const SUBJECT_EMPTY = Symbol(\"SUBJECT_EMPTY\")\nexport const SUBJECT_SETVALUE = Symbol(\"SUBJECT_SETVALUE\")\nexport const VARS_MARK = Symbol(\"VARS_MARK\")\nexport const BASECONTROLLER_MARK = Symbol(\"BASECONTROLLER_MARK\")\nexport const MYBRICKS_DESCRIPTOR = Symbol(\"MYBRICKS_DESCRIPTOR\")\nexport const EXE_TITLE_MAP = {\n output: \"输出\",\n input: \"输入\"\n}\nexport const CONTROLLER_CONTEXT = Symbol(\"CONTROLLER_CONTEXT\")\nexport const EXCUTE_TYPE_KEY = Symbol(\"EXCUTE_TYPE_KEY\")\nexport const EXCUTE_TYPE_VALUE = {\n DATACHANGED: Symbol('DATACHANGED')\n}\n\n","export const log = (...args) => {\n // console.log(\"[MyBricks]\", ...args)\n}\n\nexport const logger = {\n info: log,\n warn: log,\n error: log,\n}\n\n","import { log } from \"./log\"\nimport {\n SUBJECT_NEXT,\n SUBJECT_VALUE,\n SUBJECT_EMPTY,\n SUBJECT_SETVALUE,\n SUBJECT_SUBSCRIBE,\n SUBJECT_UNSUBSCRIBE\n} from \"./constant\"\n\n/** 数据流 */\nexport class Subject {\n _values = []\n _observers = new Set()\n _log = undefined\n _empty = true;\n\n constructor(params = {}) {\n this._log = params.log\n return new Proxy(this, {\n get(target, prop) {\n if (prop in target) {\n return target[prop];\n }\n\n const subjectNext = new SubjectNext(prop)\n\n target[SUBJECT_SUBSCRIBE]((value, extra) => {\n subjectNext[SUBJECT_NEXT](value, extra)\n })\n\n return subjectNext\n }\n })\n }\n\n get [SUBJECT_VALUE]() {\n return this._values[0]\n }\n\n get [SUBJECT_EMPTY]() {\n return this._empty;\n }\n\n [SUBJECT_SETVALUE](value) {\n this._values[0] = value;\n this._empty = false;\n }\n\n [SUBJECT_NEXT](value, extra) {\n log(this._log, JSON.stringify(value))\n this._values[0] = value\n this._empty = false\n this._observers.forEach((observer) => observer(value, extra))\n }\n\n [SUBJECT_SUBSCRIBE](observer) {\n if (this._values.length) {\n observer(this._values[0])\n }\n this._observers.add(observer)\n }\n\n [SUBJECT_UNSUBSCRIBE](observer) {\n this._observers.delete(observer)\n }\n}\n\nfunction getValueNextByPath(params) {\n const { value, path } = params\n let current = value\n for (const key of path) {\n if (current === null || current === undefined) {\n return undefined\n }\n current = current[key]\n }\n return current\n}\n\nclass SubjectNext extends Subject {\n _path = []\n\n constructor(path) {\n super()\n\n this._path.push(path)\n\n return new Proxy(this, {\n get(target, prop) {\n if (prop in target) {\n return target[prop];\n }\n\n target._path.push(prop)\n\n return target;\n }\n })\n }\n\n [SUBJECT_NEXT](value, extra) {\n this._values[0] = value\n this._empty = false\n const nextValue = getValueNextByPath({ value, path: this._path })\n this._observers.forEach((observer) => observer(nextValue, extra))\n }\n\n [SUBJECT_SUBSCRIBE](observer) {\n if (this._values.length) {\n observer(getValueNextByPath({ value: this._values[0], path: this._path }))\n }\n this._observers.add(observer)\n }\n}\n","import { EXE_TITLE_MAP, SUBJECT_NEXT, SUBJECT_SUBSCRIBE } from \"./constant\"\nimport { Subject } from \"./Subject\"\n\n/** 组件的输入 */\nexport const createReactiveInputHandler = (params) => {\n const { input, value, rels, title } = params;\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n input(value, new Proxy({}, {\n get(_, key) {\n return (value) => {\n (rels[key] ||\n (rels[key] = new Subject({ log: `${EXE_TITLE_MAP[\"output\"]} ${title} | ${key}` })))[SUBJECT_NEXT](value)\n }\n }\n }))\n })\n } else {\n input(value, new Proxy({},\n {\n get(_, key) {\n return (value) => {\n (rels[key] ||\n (rels[key] = new Subject({ log: `${EXE_TITLE_MAP[\"output\"]} ${title} | ${key}` })))[SUBJECT_NEXT](value)\n }\n }\n }\n ))\n }\n\n return new Proxy({},\n {\n get(_, key) {\n return rels[key] || (rels[key] = new Subject({ log: `${EXE_TITLE_MAP[\"output\"]} ${title} | ${key}` }))\n }\n }\n )\n}\n\n","import { useState, useRef, useMemo } from 'react';\nimport { createReactiveInputHandler } from '../mybricks/createReactiveInputHandler';\n\n/**\n * 深度代理,支持自动路径初始化和响应式更新(鸿蒙化处理方案)\n */\nexport function deepProxy(target: any, onSet?: () => void): any {\n if (target === null || typeof target !== 'object' || target.__isProxy) {\n return target;\n }\n\n return new Proxy(target, {\n get(obj, prop) {\n if (prop === '__isProxy') return true;\n if (prop === 'toJSON') return () => obj;\n\n let value = (obj as any)[prop];\n\n // 只代理已存在的对象属性,不自动创建空对象\n // 避免访问不存在的属性(如 disabled)时污染原始数据\n if (typeof value === 'object' && value !== null && !value.__isProxy) {\n (obj as any)[prop] = deepProxy(value, onSet);\n }\n\n return (obj as any)[prop];\n },\n set(obj, prop, value) {\n const result = Reflect.set(obj, prop, value);\n if (onSet) onSet();\n return result;\n }\n });\n}\n\nexport function useModel(rawData: any) {\n const [, forceUpdate] = useState({});\n const dataRef = useRef(rawData || {});\n\n return useMemo(() => {\n return deepProxy(dataRef.current, () => forceUpdate({}));\n }, []);\n}\n\nexport function useBindInputs(scope: any, id: string, initialHandlers?: Record<string, any>) {\n const handlersRef = useRef<Record<string, any>>({ ...initialHandlers });\n\n // 同步最新的 initialHandlers\n if (initialHandlers) {\n Object.assign(handlersRef.current, initialHandlers);\n }\n\n return useMemo(() => {\n const proxy = new Proxy({}, {\n get: (_target, pin: string) => {\n return (arg: any, ...args: any[]) => {\n if (typeof arg === 'function') {\n // 组件注册回调\n handlersRef.current[pin] = arg;\n } else {\n // 逻辑流触发输入\n const handler = handlersRef.current[pin];\n\n if (typeof handler === 'function') {\n if (pin === '_setData') {\n return handler(arg, ...args);\n }\n // 构造 createReactiveInputHandler 需要的参数\n return createReactiveInputHandler({\n input: handler,\n value: arg,\n rels: {}, // 这里可以扩展 output 关联\n title: id\n });\n }\n }\n };\n }\n });\n\n // 将代理对象挂载到作用域,供外部 comRefs.current.id.pin() 调用\n if (scope && scope.current) {\n scope.current[id] = proxy;\n }\n return proxy;\n }, [scope, id]);\n}\n\nexport function useBindEvents(props: any, context?: { id: string, name: string, parentSlot?: any }) {\n return useMemo(() => {\n const _events: Record<string, any> = {};\n\n // 预处理已存在的事件\n Object.keys(props).forEach(key => {\n // 兼容:MyBricks 输出 pin 既可能是 onChange,也可能是 changeTab 这种非 on 前缀\n if (typeof props[key] === 'function') {\n const handler = props[key];\n const wrapped = (originalValue: any) => {\n // 鸿蒙/render-web 规范:如果是在插槽中触发事件,且存在父级协议,则自动封装元数据\n // 这解决了 FormContainer 等组件识别子项的需求\n // 注意:不要仅凭 parentSlot 存在就封装,否则会影响 Tabs2/changeTab 这类事件直接给 JS 计算组件传参\n // 仅在父级 slot 使用 itemWrap 协议时才需要这层元数据\n const value = context?.parentSlot?.params?.itemWrap ? {\n id: context.id,\n name: context.name,\n value: originalValue\n } : originalValue;\n \n return handler(value);\n };\n wrapped.getConnections = () => [{ id: 'default' }];\n _events[key] = wrapped;\n }\n });\n\n return new Proxy(_events, {\n get(target, key: string) {\n // 对 onXXX 事件(不少组件 runtime 直接 outputs[\"onChange\"](...))提供兜底函数,避免未连线时报错\n if (typeof key === 'string' && key.startsWith('on')) {\n if ((target as any)[key]) {\n return (target as any)[key];\n }\n // 对未连接的事件返回兜底函数\n const emptyFn: any = () => { };\n emptyFn.getConnections = () => [];\n return emptyFn;\n }\n return (target as any)[key];\n }\n });\n }, [props, context]);\n}\n\n\n","import { useRef, useState, useMemo } from 'react'\nimport { deepProxy } from './hooks'\n\nexport interface ComContextStore {\n comRefs: any;\n $vars: any;\n $fxs: any;\n appContext: any; \n popupState: {\n visible: boolean;\n name: string;\n value: any;\n controller: any;\n };\n setPopupState: (state: any) => void;\n}\n\nexport function useAppCreateContext(id: string): ComContextStore {\n // 约定:场景级 inputs 统一挂载到 $inputs,避免与组件 runtime 的 inputs 命名冲突\n // 同时可避免 `Cannot set property 'open' of undefined`\n // 注册表拆分:\n // - comRefs: 组件实例/inputs/outputs 注册表(可 scoped)\n // - $vars/$fxs: 逻辑能力注册表(仅页面级,全作用域共享)\n const comRefs = useRef<any>(deepProxy({ $inputs: {}, $outputs: {} }));\n const $vars = useRef<any>({});\n const $fxs = useRef<any>({});\n const [popupState, setPopupState] = useState({\n visible: false,\n name: '',\n value: null,\n controller: null\n });\n\n const appContext = useRef({\n canvas: {\n id, // 使用 data 中的 id\n },\n runtime: {\n debug: false,\n },\n edit: false,\n isH5: false,\n isDesigner: false,\n isPreview: false,\n isRelease: false,\n isDebug: false,\n isLocal: false,\n isTest: false,\n tabBar: [],\n useTabBar: false,\n }).current;\n\n return useMemo(() => ({\n comRefs,\n $vars,\n $fxs,\n appContext,\n popupState,\n setPopupState\n }), [popupState]);\n}\n","export const safeSetByPath = (params) => {\n const { data, path, value } = params;\n const nextIndex = path.length - 1;\n let current = data;\n let errorFlag = false;\n for (let i = 0; i < nextIndex; i++) {\n try {\n current = current[path[i]];\n } catch (error) {\n errorFlag = true;\n break;\n }\n }\n\n if (!errorFlag) {\n current[path[nextIndex]] = value;\n }\n}\n\nexport const safeGetByPath = (params) => {\n const { data, path } = params;\n let current = data;\n let errorFlag = false;\n for (let i = 0; i < path.length; i++) {\n try {\n current = current[path[i]];\n } catch (error) {\n errorFlag = true;\n break;\n }\n }\n\n if (!errorFlag) {\n return current;\n }\n\n return undefined;\n}\n\nexport const isObject = (value) => {\n return value && typeof value === \"object\";\n}\n\n","import { EXE_TITLE_MAP, SUBJECT_NEXT, SUBJECT_SUBSCRIBE } from \"./constant\"\nimport { Subject } from \"./Subject\"\nimport { log, logger } from \"./log\"\nimport { createReactiveInputHandler } from \"./createReactiveInputHandler\"\n\n/** utils */\n/**\n * 判断是否js多输入\n */\nexport const validateJsMultipleInputs = (input) => {\n return input.match(/\\./); // input.xxx 为多输入模式\n}\n\n// JS\nexport const createJSHandle = (fn, options) => {\n let controller\n\n const { props, appContext } = options\n\n const inputs = new Proxy({}, {\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n ownKeys() {\n return props.inputs\n },\n get() {\n return (input) => {\n // 约定只有一个输入\n controller = input\n }\n }\n })\n\n const rels = {}\n\n const outputs = new Proxy({}, {\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n ownKeys() {\n return props.outputs\n },\n get(_, key) {\n return (value) => {\n (rels[key] ||\n (rels[key] = new Subject({ log: `${EXE_TITLE_MAP[\"output\"]} ${props.title} | ${key}` })))[SUBJECT_NEXT](value)\n }\n }\n })\n\n fn({\n data: props.data,\n inputs,\n outputs,\n logger,\n env: appContext?.env\n })\n\n const isJsMultipleInputs = props.inputs[0]\n ? validateJsMultipleInputs(props.inputs[0])\n : false;\n\n const exeOutputs = new Proxy(\n {},\n {\n get(_, key) {\n return rels[key] || (rels[key] = new Subject({ log: `${EXE_TITLE_MAP[\"output\"]} ${props.title} | ${key}` }))\n },\n },\n )\n\n const exe = (...args) => {\n if (args.length) {\n // 调用输入\n if (isJsMultipleInputs) {\n // 多输入模式\n const length = args.length;\n let valueAry = {};\n args.forEach((value, index) => {\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n log(`${EXE_TITLE_MAP[\"input\"]} ${props.title} | ${props.inputs[index]}`, JSON.stringify(value));\n valueAry[props.inputs[index]] = value\n if (Object.keys(valueAry).length === length) {\n createReactiveInputHandler({\n input: controller,\n value: valueAry,\n rels,\n title: props.title\n })\n // 触发输入后清除\n valueAry = {}\n }\n })\n } else {\n log(`${EXE_TITLE_MAP[\"input\"]} ${props.title} | ${props.inputs[index]}`, JSON.stringify(value));\n valueAry[props.inputs[index]] = value\n\n if (Object.keys(valueAry).length === length) {\n createReactiveInputHandler({\n input: controller,\n value: valueAry,\n rels,\n title: props.title\n })\n // 触发输入后清除\n valueAry = {}\n }\n }\n })\n } else {\n // 非多输入\n const value = args[0]\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n log(`${EXE_TITLE_MAP[\"input\"]} ${props.title} | ${props.inputs[0]}`, JSON.stringify(value));\n createReactiveInputHandler({\n input: controller,\n value,\n rels,\n title: props.title\n })\n })\n } else {\n log(`${EXE_TITLE_MAP[\"input\"]} ${props.title} | ${props.inputs[0]}`, JSON.stringify(value));\n createReactiveInputHandler({\n input: controller,\n value,\n rels,\n title: props.title\n })\n }\n }\n }\n\n return exeOutputs;\n }\n\n return exe;\n}\n\n","import { Subject } from \"./Subject\"\nimport { context } from \"./context\"\nimport { safeSetByPath, safeGetByPath } from \"./utils\"\nimport { SUBJECT_NEXT, SUBJECT_SUBSCRIBE, SUBJECT_VALUE, SUBJECT_EMPTY, SUBJECT_SETVALUE } from \"./constant\"\n\n/** 创建变量 */\nexport const createVariable = (...args) => {\n const hasDefaultValue = args.length > 0\n const initValue = args[0]\n const value = new Subject()\n if (hasDefaultValue) {\n value[SUBJECT_NEXT](initValue)\n }\n const ref = {\n value,\n callBacksMap: new Map(),\n\n // 注册change后,设置一个subject,用于触发change\n changeValues: new Set(),\n // change到上述subject的映射\n changeValuesMap: new Map(),\n }\n\n const variable = {\n /** 读取 */\n get(value, path) {\n const nextValue = new Subject()\n const next = () => {\n nextValue[SUBJECT_NEXT](path ? safeGetByPath({\n data: ref.value[SUBJECT_VALUE],\n path: path.split(\".\")\n }) : ref.value[SUBJECT_VALUE])\n }\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE](() => {\n next()\n })\n } else {\n next()\n }\n return nextValue\n },\n /** 赋值 */\n set(value, path) {\n const nextValue = new Subject()\n const next = (value, extra) => {\n if (path) {\n const isEmpty = ref.value[SUBJECT_EMPTY]\n if (isEmpty) {\n ref.value[SUBJECT_SETVALUE]({})\n }\n safeSetByPath({\n data: ref.value[SUBJECT_VALUE],\n path: path.split(\".\"),\n value: value\n })\n\n value = ref.value[SUBJECT_VALUE]\n }\n\n ref.value[SUBJECT_NEXT](value, extra)\n ref.changeValues.forEach((changeValue) => {\n changeValue[SUBJECT_NEXT](value, extra)\n })\n nextValue[SUBJECT_NEXT](value, extra)\n }\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value, extra) => {\n next(value, extra)\n })\n } else {\n next(value)\n }\n return nextValue\n },\n /** 重置 */\n reset(value) {\n const nextValue = new Subject()\n const next = () => {\n ref.value[SUBJECT_NEXT](initValue)\n ref.changeValues.forEach((changeValue) => {\n changeValue[SUBJECT_NEXT](initValue)\n })\n nextValue[SUBJECT_NEXT](initValue)\n }\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE](() => {\n next()\n })\n } else {\n next()\n }\n return nextValue\n },\n /** 值变更监听 */\n changed() {\n const changeValue = new Subject();\n ref.changeValues.add(changeValue);\n\n const result = {\n destroy() {\n ref.changeValues.delete(changeValue)\n },\n [SUBJECT_SUBSCRIBE](next) {\n changeValue[SUBJECT_SUBSCRIBE](next)\n }\n }\n\n if (context.apiRun) {\n if (!context.apiRunVariablesSubject[context.apiRun]) {\n context.apiRunVariablesSubject[context.apiRun] = [result]\n } else {\n context.apiRunVariablesSubject[context.apiRun].push(result)\n }\n }\n\n return result\n },\n bind(callBack) {\n if (!ref.callBacksMap.has(\"\")) {\n ref.callBacksMap.set(\"\", new Set())\n }\n const callBacks = ref.callBacksMap.get(\"\")\n callBacks.add(callBack)\n // 默认触发一次\n callBack(ref.value[SUBJECT_VALUE])\n },\n ext() {\n return {\n setValue(value) {\n variable.set(value)\n },\n getValue() {\n return ref.value[SUBJECT_VALUE]\n }\n }\n },\n registerChange(change) {\n const changeValue = new Subject()\n // 默认执行,进行初始化动作\n change(changeValue)\n\n ref.changeValues.add(changeValue)\n ref.changeValuesMap.set(change, changeValue)\n\n if (!ref.value[SUBJECT_EMPTY]) {\n // 有值就默认执行\n changeValue[SUBJECT_NEXT](ref.value[SUBJECT_VALUE])\n }\n },\n unregisterChange(change) {\n const changeValue = ref.changeValuesMap.get(change)\n ref.changeValues.delete(changeValue)\n ref.changeValuesMap.delete(change)\n },\n // 内置的赋值操作\n setTrue() {\n return variable.set(true)\n },\n setFalse() {\n return variable.set(false)\n },\n setAryAdd(value) {\n const nextValue = new Subject()\n\n if (Array.isArray(ref.value[SUBJECT_VALUE])) {\n const next = (value) => {\n const arrayValue = ref.value[SUBJECT_VALUE].concat(value)\n ref.value[SUBJECT_NEXT](arrayValue)\n ref.changeValues.forEach((changeValue) => {\n changeValue[SUBJECT_NEXT](value)\n })\n nextValue[SUBJECT_NEXT](arrayValue)\n }\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n next(value)\n })\n } else {\n next(value)\n }\n }\n\n return nextValue\n }\n }\n\n return new Proxy({}, {\n get(_, key) {\n return variable[key]\n }\n })\n}\n\n/** 创建变量map */\nexport const createVars = (vars) => {\n return new Proxy(vars, {\n get(target, key) {\n const value = target[key]\n if (value) {\n return value.get()[SUBJECT_VALUE]\n }\n return value\n }\n })\n}\n\n","import {\n SUBJECT_NEXT,\n SUBJECT_VALUE,\n SUBJECT_SUBSCRIBE,\n VARS_MARK,\n BASECONTROLLER_MARK,\n EXE_TITLE_MAP,\n CONTROLLER_CONTEXT,\n EXCUTE_TYPE_KEY,\n EXCUTE_TYPE_VALUE\n} from \"./constant\"\nimport { log } from \"./log\"\nimport { Subject } from \"./Subject\"\nimport { context } from \"./context\"\nimport { safeSetByPath, isObject } from \"./utils\"\nimport { createReactiveInputHandler } from \"./createReactiveInputHandler\"\n\n/** 合并数据流 */\nexport const merge = (...subjects) => {\n const merge = new Subject()\n\n subjects.forEach((subject) => {\n if (subject?.[SUBJECT_SUBSCRIBE]) {\n subject[SUBJECT_SUBSCRIBE]((value) => {\n merge[SUBJECT_NEXT](value)\n })\n } else {\n merge[SUBJECT_NEXT](subject)\n }\n })\n\n return merge\n}\n\n\n// UI\nexport const createInputsHandle = (params, init = false) => {\n if (init) {\n /** 注册的输入 */\n const _inputEvents = {}\n /** 输入未完成注册,写入todo列表 */\n const _inputEventsTodo = {}\n /** 组件基础信息 */\n const _comInfo = {}\n /** 全局 */\n const controllerContext = {\n initStyles: {},\n initData: {},\n dataChangedSubjects: {},\n // 唯一标记\n mark: {}\n }\n\n const proxy = new Proxy({}, {\n get(_, key) {\n // 内置关键字\n if (key === \"_inputEvents\") {\n return _inputEvents;\n } else if (key === \"_inputEventsTodo\") {\n return _inputEventsTodo\n } else if (key === \"_comInfo\") {\n return _comInfo\n } else if (key === CONTROLLER_CONTEXT) {\n return controllerContext\n } else if (key === \"_setStyle\") {\n return (value0, value1) => {\n const next = (value) => {\n if (Object.prototype.toString.call(value) === \"[object Object]\") {\n Object.entries(value).forEach(([selector, nextStyle]) => {\n if (!controllerContext.styles) {\n const { initStyles } = controllerContext\n if (!initStyles[selector]) {\n initStyles[selector] = nextStyle\n } else {\n const initStyle = initStyles[selector]\n Object.entries(nextStyle).forEach(([key, value]) => {\n initStyle[key] = value\n })\n }\n return\n }\n const { style } = controllerContext.styles.getStyle(selector)\n const updators = controllerContext.styles.getUpdators(selector)\n\n Object.entries(nextStyle).forEach(([key, value]) => {\n style[key] = value\n })\n\n if (updators) {\n updators.forEach((updator) => {\n updator(selector, style)\n })\n }\n })\n }\n }\n\n if (typeof value0 === \"string\" && value1) {\n if (value1?.[SUBJECT_SUBSCRIBE]) {\n value1[SUBJECT_SUBSCRIBE]((value) => {\n next({\n [value0]: value\n })\n })\n } else {\n next({\n [value0]: value1\n })\n }\n } else {\n if (value0?.[SUBJECT_SUBSCRIBE]) {\n value0[SUBJECT_SUBSCRIBE]((value) => {\n next(value)\n })\n } else {\n next(value0)\n }\n }\n }\n } else if (key === \"_setData\") {\n return (...args) => {\n if (args.length === 2) {\n const [path, value] = args\n\n const next = (params) => {\n const { path, value } = params\n if (!controllerContext.data) {\n const { initData } = controllerContext\n initData[path] = value\n return\n }\n\n safeSetByPath({\n data: controllerContext.data,\n path: path.split(\".\"),\n value: {\n value,\n [EXCUTE_TYPE_KEY]: EXCUTE_TYPE_VALUE.DATACHANGED\n }\n })\n }\n\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value, extra) => {\n if (extra?.[EXCUTE_TYPE_KEY] === EXCUTE_TYPE_VALUE.DATACHANGED && extra?.controllerMark === controllerContext.mark) {\n // 数据流来自「EXCUTE_TYPE_VALUE.DATACHANGED」且来自自身,不再继续执行,避免死循环\n return\n }\n next({ value, path })\n })\n } else {\n next({ value, path })\n }\n }\n }\n } else if (key === \"_dataChanged\") {\n return (path) => {\n const subject = new Subject();\n controllerContext.dataChangedSubjects[path] = subject;\n\n return subject;\n }\n }\n\n return (value) => {\n if (!_inputEvents[key]) {\n // 组件未完成输入注册\n if (!_inputEventsTodo[key]) {\n _inputEventsTodo[key] = []\n }\n\n const rels = {}\n\n _inputEventsTodo[key].push({\n value,\n rels,\n });\n\n return new Proxy({}, {\n get(_, key) {\n return rels[key] || (rels[key] = new Subject())\n }\n })\n }\n\n return createReactiveInputHandler({\n input(value, proxy) {\n log(`${EXE_TITLE_MAP[\"input\"]} ${_comInfo.title} | ${key}`, JSON.stringify(value))\n return _inputEvents[key](value, proxy)\n },\n title: _comInfo.title,\n value,\n rels: {}\n })\n }\n }\n })\n\n return proxy;\n } else {\n if (!params.controller[CONTROLLER_CONTEXT].inputs) {\n const { controller, title, styles } = params\n const { _inputEvents, _comInfo, _inputEventsTodo, [CONTROLLER_CONTEXT]: controllerContext } = controller\n _comInfo.title = title;\n controllerContext.initModifier = {\n visibility: styles?.root?.display === \"none\" ? Visibility.None : Visibility.Visible\n }\n\n const createVisibilityHandler = (visibilityState) => {\n return (value) => {\n const setVisibility = () => {\n if (!controllerContext.modifier?.attribute) {\n controllerContext.initModifier.visibility = visibilityState\n } else {\n controllerContext.modifier.attribute?.visibility(visibilityState)\n }\n }\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE](setVisibility);\n } else {\n setVisibility()\n }\n };\n };\n\n // 内置显示隐藏逻辑\n _inputEvents.show = createVisibilityHandler(Visibility.Visible)\n _inputEvents.hide = createVisibilityHandler(Visibility.None)\n _inputEvents.showOrHide = (value) => {\n const setVisibility = (value) => {\n if (!controllerContext.modifier?.attribute) {\n controllerContext.initModifier.visibility = !!value ? Visibility.Visible : Visibility.None\n } else {\n controllerContext.modifier.attribute?.visibility(!!value ? Visibility.Visible : Visibility.None)\n }\n }\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE](setVisibility)\n } else {\n setVisibility(value)\n }\n }\n // 处理显示隐藏todo项\n [\"show\", \"hide\", \"showOrHide\"].forEach((key) => {\n const todo = _inputEventsTodo[key]\n if (todo) {\n Reflect.deleteProperty(_inputEventsTodo, key)\n\n todo.forEach(({ value }) => {\n _inputEvents[key](value)\n })\n }\n })\n\n const proxy = new Proxy(controller, {\n get(_, key) {\n return (input) => {\n if (!_inputEvents[key]) {\n // 第一次注册,处理TODO\n if (_inputEventsTodo[key]) {\n _inputEventsTodo[key].forEach(({ value, rels }) => {\n createReactiveInputHandler({\n input(value, proxy) {\n log(`${EXE_TITLE_MAP[\"input\"]} ${title} | ${key}`, JSON.stringify(value))\n return input(value, proxy)\n },\n title,\n value,\n rels\n })\n })\n Reflect.deleteProperty(_inputEventsTodo, key)\n }\n }\n\n _inputEvents[key] = input\n }\n }\n })\n\n params.controller[CONTROLLER_CONTEXT].inputs = proxy;\n }\n\n return params.controller[CONTROLLER_CONTEXT].inputs\n }\n}\n\n// 事件\nexport const createEventsHandle = (params) => {\n if (!params.controller[CONTROLLER_CONTEXT].outputs) {\n params.controller[CONTROLLER_CONTEXT].outputs = new Proxy(params.events || {}, {\n get(target, key) {\n const event = params.controller[CONTROLLER_CONTEXT].appContext?.comEvent?.[params.uid]?.[key]\n if (event) {\n const { getVar, getOutput, getInput } = params.controller[CONTROLLER_CONTEXT]\n return (value) => {\n event(value, {\n getVar,\n getOutput,\n getInput\n })\n }\n }\n\n return target[key] || (() => {\n })\n }\n })\n }\n\n return params.controller[CONTROLLER_CONTEXT].outputs\n}\n\n// 场景打开、输出\nexport const pageController = () => {\n return new Proxy({\n commit: new Subject(),\n cancel: new Subject(),\n apply: new Subject(),\n close: new Subject(),\n }, {\n get(target, key) {\n return target[key]\n }\n })\n}\n\nexport class Page {\n appRouter\n\n constructor(appRouter) {\n this.appRouter = appRouter\n }\n\n /** 获取当前页面入参 */\n getParams(name) {\n const params = this.appRouter.getParams(name)\n const subject = new Subject()\n subject[SUBJECT_NEXT](params?.value)\n return subject\n }\n\n /** 打开 */\n open(name, value) {\n const controller = pageController()\n\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n this.appRouter.push(name, { value, controller })\n })\n } else {\n this.appRouter.push(name, { value, controller })\n }\n\n return controller\n }\n\n /** 打开 */\n replace(name, value) {\n const controller = pageController()\n\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n this.appRouter.replace(name, { value, controller })\n })\n } else {\n this.appRouter.replace(name, { value, controller })\n }\n\n return controller\n }\n\n /** 确定 */\n commit(name, value) {\n const params = this.appRouter.getParams(name)\n\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n this.appRouter.pop()\n setTimeout(() => {\n params.controller.commit[SUBJECT_NEXT](value)\n }, 100)\n })\n } else {\n this.appRouter.pop()\n setTimeout(() => {\n params.controller.commit[SUBJECT_NEXT](value)\n }, 100)\n }\n }\n\n /** 取消 */\n cancel(name, value) {\n const params = this.appRouter.getParams(name)\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n this.appRouter.pop()\n setTimeout(() => {\n params.controller.cancel[SUBJECT_NEXT](value)\n }, 100)\n })\n } else {\n this.appRouter.pop()\n setTimeout(() => {\n params.controller.cancel[SUBJECT_NEXT](value)\n }, 100)\n }\n }\n\n /** 应用,不关闭 */\n apply(name, value) {\n const params = this.appRouter.getParams(name)\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n params.controller.apply[SUBJECT_NEXT](value)\n })\n } else {\n params.controller.apply[SUBJECT_NEXT](value)\n }\n }\n\n /** 关闭 */\n close(name, value) {\n const params = this.appRouter.getParams(name)\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n this.appRouter.pop()\n setTimeout(() => {\n params.controller.close[SUBJECT_NEXT](value)\n }, 100)\n })\n } else {\n this.appRouter.pop()\n setTimeout(() => {\n params.controller.close[SUBJECT_NEXT](value)\n }, 100)\n }\n }\n}\n\n// api\nexport const emit = (fn, value) => {\n const subject = new Subject()\n\n if (!fn) {\n return subject\n }\n\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n const res = fn(value)\n\n if (res instanceof Promise) {\n res.then((value) => {\n subject[SUBJECT_NEXT](value)\n })\n } else {\n subject[SUBJECT_NEXT](res)\n }\n })\n } else {\n const res = fn(value)\n\n if (res instanceof Promise) {\n res.then((value) => {\n subject[SUBJECT_NEXT](value)\n })\n } else {\n subject[SUBJECT_NEXT](res)\n }\n }\n\n return subject;\n}\n\n/** 创建fx */\nexport const createFx = (fx) => {\n return (value, ...args) => {\n const outputs = {}\n\n const proxy = new Proxy({}, {\n get(_, key) {\n return outputs[key] || (outputs[key] = new Subject())\n }\n })\n\n const next = (value) => {\n const res = fx(value, ...args)\n if (res) {\n Object.entries(res).forEach(([key, value]) => {\n if (!outputs[key]) {\n outputs[key] = new Subject()\n }\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n outputs[key][SUBJECT_NEXT](value)\n })\n } else {\n outputs[key][SUBJECT_NEXT](value)\n }\n })\n }\n }\n\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n next(value)\n })\n } else {\n next(value)\n }\n\n return proxy\n }\n}\n\n/** 创建插槽IO */\nexport const createSlotsIO = (params) => {\n if (!params.controller[CONTROLLER_CONTEXT].slotsIO) {\n const slotsIOMap = {}\n params.controller[CONTROLLER_CONTEXT].slotsIO = new Proxy({}, {\n get(_, key) {\n if (!slotsIOMap[key]) {\n const inputsMap = {}\n slotsIOMap[key] = {\n inputs: new Proxy({}, {\n get(_, key) {\n if (!inputsMap[key]) {\n inputsMap[key] = new Subject()\n }\n\n const next = (value) => {\n inputsMap[key][SUBJECT_NEXT](value)\n }\n\n next[SUBJECT_SUBSCRIBE] = (next) => {\n inputsMap[key][SUBJECT_SUBSCRIBE](next)\n }\n\n return next\n }\n }),\n outputs: new Proxy({}, {\n get(_, key) {\n return (next) => {\n return (value) => {\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n next(value)\n })\n } else {\n next(value)\n }\n }\n }\n }\n })\n }\n }\n\n return slotsIOMap[key]\n }\n })\n }\n\n return params.controller[CONTROLLER_CONTEXT].slotsIO\n}\n\n/**\n * 模块\n * [TODO] 暂时无法在多处使用关联输出项\n */\nexport const createModuleInputsHandle = () => {\n const inputsMap = {}\n const outputsMap = {}\n\n return new Proxy({}, {\n get(_, key) {\n if (key === \"outputs\") {\n return new Proxy({}, {\n get(_, key) {\n if (!outputsMap[key]) {\n outputsMap[key] = new Subject()\n }\n return (value) => {\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n outputsMap[key][SUBJECT_NEXT](value)\n });\n } else {\n outputsMap[key][SUBJECT_NEXT](value)\n }\n }\n }\n })\n }\n\n if (!inputsMap[key]) {\n inputsMap[key] = new Subject()\n }\n\n const next = (value) => {\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n inputsMap[key][SUBJECT_NEXT](value)\n });\n } else {\n inputsMap[key][SUBJECT_NEXT](value)\n }\n\n return new Proxy({}, {\n get(_, key) {\n return outputsMap[key] || (outputsMap[key] = new Subject())\n }\n })\n }\n\n return new Proxy(next, {\n get(_, proxyKey) {\n if (proxyKey === \"subscribe\" || proxyKey === SUBJECT_SUBSCRIBE) {\n return (next) => {\n inputsMap[key][SUBJECT_SUBSCRIBE](next)\n }\n } else if (proxyKey === \"value\" || proxyKey === SUBJECT_VALUE) {\n return inputsMap[key][SUBJECT_VALUE]\n }\n }\n })\n }\n })\n}\n\nclass Styles {\n styles = {}\n map = new Map()\n\n constructor(styles) {\n this.styles = styles\n }\n\n getStyle(selector) {\n let style = this.styles[selector]\n if (!style) {\n this.styles[selector] = {}\n style = this.styles[selector]\n }\n return {\n selector,\n style,\n setUpdator: (updator, uid) => {\n if (!this.map.has(selector)) {\n this.map.set(selector, new Map())\n }\n const selectorMap = this.map.get(selector)\n selectorMap.set(uid, updator)\n },\n ...style\n }\n }\n\n getUpdators(selector) {\n return this.map.get(selector)\n }\n}\n\n/**\n * 组件样式\n */\nexport const createStyles = (params) => {\n if (!params.controller[CONTROLLER_CONTEXT].styles) {\n const initStyles = params.controller[CONTROLLER_CONTEXT].initStyles\n const { styles, parentSlot } = params;\n Object.entries(initStyles).forEach(([selector, initStyle]) => {\n if (!styles[selector]) {\n styles[selector] = initStyle\n } else {\n const style = styles[selector]\n Object.entries(initStyle).forEach(([key, value]) => {\n style[key] = value\n })\n }\n })\n if (parentSlot?.itemWrap) {\n const { root, ...other } = styles\n params.controller[CONTROLLER_CONTEXT].styles = new Styles(other)\n } else {\n params.controller[CONTROLLER_CONTEXT].styles = new Styles(styles)\n }\n }\n\n return new Proxy({}, {\n ownKeys() {\n return Object.keys(params.styles)\n },\n getOwnPropertyDescriptor(k) {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n get(_, key) {\n return params.controller[CONTROLLER_CONTEXT].styles.getStyle(key)\n }\n })\n}\n\n/**\n * @returns {any}\n */\nexport const transformApi = (api) => {\n return (value, cb) => {\n const id = `${Math.random()}_${new Date().getTime()}`\n const outputs = {}\n const dispose = () => {\n\n }\n const proxy = new Proxy(dispose, {\n get(_, key) {\n return outputs[key] || (outputs[key] = new Subject())\n }\n })\n let isDispose = false;\n\n context.apiRun = id;\n\n const res = api(value)\n\n context.apiRun = null;\n\n if (res) {\n Object.entries(res).forEach(([key, value]) => {\n if (!outputs[key]) {\n outputs[key] = new Subject()\n }\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n if (isDispose) {\n return\n }\n isDispose = true\n outputs[key][SUBJECT_NEXT](value)\n cb?.[key]?.(value)\n context.apiRunVariablesSubject[id]?.forEach((subject) => {\n subject.destroy()\n })\n })\n } else {\n if (isDispose) {\n return\n }\n isDispose = true\n outputs[key][SUBJECT_NEXT](value)\n cb?.[key]?.(value)\n context.apiRunVariablesSubject[id]?.forEach((subject) => {\n subject.destroy()\n })\n }\n })\n }\n\n return proxy\n }\n}\n\nexport const transformBus = (bus) => {\n return (newBus) => {\n Object.entries(newBus).forEach(([key, newBus]) => {\n bus[key] = (value) => {\n const outputs = {}\n\n const callBack = new Proxy({}, {\n get(_, key) {\n return (value) => {\n const output = outputs[key] || (outputs[key] = new Subject())\n output[SUBJECT_NEXT](value)\n }\n }\n })\n\n if (value?.[SUBJECT_SUBSCRIBE]) {\n value[SUBJECT_SUBSCRIBE]((value) => {\n newBus(value, callBack)\n })\n } else {\n newBus(value, callBack)\n }\n\n return new Proxy({}, {\n get(_, key) {\n return outputs[key] || (outputs[key] = new Subject())\n }\n })\n };\n })\n }\n}\n\nexport const createBus = (bus) => {\n return () => {\n return new Proxy({}, {\n get() {\n return new Subject()\n }\n })\n }\n}\n\nexport const join = (lastSubject, nextSubject) => {\n const subject = new Subject();\n const next = () => {\n if (nextSubject?.[SUBJECT_SUBSCRIBE]) {\n subject[SUBJECT_NEXT](nextSubject[SUBJECT_VALUE]);\n } else {\n subject[SUBJECT_NEXT](nextSubject);\n }\n }\n\n if (lastSubject?.[SUBJECT_SUBSCRIBE]) {\n lastSubject[SUBJECT_SUBSCRIBE](() => {\n next()\n });\n } else {\n next()\n }\n\n return subject;\n};\n\nexport const createModifier = (params, Modifier) => {\n if (!params.controller[CONTROLLER_CONTEXT].modifier) {\n params.controller[CONTROLLER_CONTEXT].modifier = new Modifier(params.controller[CONTROLLER_CONTEXT].initModifier);\n }\n return params.controller[CONTROLLER_CONTEXT].modifier\n}\n\nconst DATA_PROXY = Symbol(\"DATA_PROXY\");\nconst dataProxy = (params) => {\n const { data, path, config } = params;\n return new Proxy(data, {\n get(target, key, receiver) {\n if (key === DATA_PROXY) {\n return true;\n }\n const value = Reflect.get(target, key, receiver);\n if (typeof key !== \"string\" || target.hasOwnProperty(key)) {\n return value\n }\n if (isObject(value)) {\n if (value[DATA_PROXY]) {\n return value;\n }\n\n return dataProxy({\n data: value,\n path: path ? `${path}.${key}` : key,\n config\n });\n }\n return value;\n },\n set(target, key, value, receiver) {\n if (typeof key !== \"string\" || target.hasOwnProperty(key)) {\n Reflect.set(target, key, value, receiver);\n } else {\n if (!value?.[EXCUTE_TYPE_KEY]) {\n Reflect.set(target, key, value, receiver);\n // 目前只有「EXCUTE_TYPE_VALUE.DATACHANGED」,所以判断有「EXCUTE_TYPE_KEY」就行\n config?.set?.({\n value,\n path: path ? `${path}.${key}` : key,\n });\n } else {\n Reflect.set(target, key, value.value, receiver);\n }\n }\n return true;\n },\n });\n}\n\nexport const createData = (params, Data) => {\n if (!params.controller[CONTROLLER_CONTEXT].data) {\n const { initData, dataChangedSubjects, mark } = params.controller[CONTROLLER_CONTEXT]\n const nextData = Object.assign({}, params.data)\n Object.entries(initData).forEach(([path, value]) => {\n safeSetByPath({\n data: nextData,\n path: path.split(\".\"),\n value\n })\n })\n\n const data = new Data(nextData)\n const observeData = dataProxy({\n data,\n path: \"\",\n config: {\n set(params) {\n const dataChangedSubject = dataChangedSubjects[params.path];\n if (dataChangedSubject) {\n dataChangedSubject[SUBJECT_NEXT](params.value, {\n [EXCUTE_TYPE_KEY]: EXCUTE_TYPE_VALUE.DATACHANGED,\n controllerMark: mark,\n })\n }\n }\n }\n })\n\n params.controller[CONTROLLER_CONTEXT].data = observeData\n }\n\n return params.controller[CONTROLLER_CONTEXT].data\n}\n\nexport class Vars {\n [VARS_MARK] = true\n}\n\nexport class BaseController {\n [BASECONTROLLER_MARK] = true\n}\n\nexport * from \"./MyBricksDescriptor\"\n\nexport * from \"./createModuleEventsHandle\"\n\nexport * from \"./createJSHandle\"\n\nexport * from \"./Subject\"\n\nexport * from \"./createEnv\"\n\nexport * from \"./variables\"\n\nexport * from \"./event\"\n\n","// @ts-ignore 运行时由宿主项目提供 @tarojs/taro\nimport Taro from '@tarojs/taro';\nimport { Page } from '../mybricks';\n\n/**\n * Taro 路由驱动 (纯粹版)\n * 只负责处理真正的 Taro 页面跳转\n */\nclass TaroRouter {\n private paramsBackup: Record<string, any> = {};\n\n getParams(name: string) {\n const instance = Taro.getCurrentInstance();\n let params = instance.router?.params || {};\n \n // 备份参数,解决某些生命周期下 Taro 获取不到 params 的问题\n if (!params.data && this.paramsBackup[name]) {\n params = { data: this.paramsBackup[name] };\n }\n\n return { value: params };\n }\n\n push(name: string, { value }: any) {\n const url = `/pages/${name}/index`;\n const dataStr = value ? encodeURIComponent(JSON.stringify(value)) : '';\n \n if (dataStr) {\n this.paramsBackup[name] = dataStr;\n }\n\n Taro.navigateTo({\n url: `${url}${dataStr ? `?data=${dataStr}` : ''}`\n });\n }\n\n replace(name: string, { value }: any) {\n const url = `/pages/${name}/index`;\n const dataStr = value ? encodeURIComponent(JSON.stringify(value)) : '';\n \n if (dataStr) {\n this.paramsBackup[name] = dataStr;\n }\n\n Taro.redirectTo({\n url: `${url}${dataStr ? `?data=${dataStr}` : ''}`\n });\n }\n\n pop() {\n Taro.navigateBack();\n }\n}\n\nexport const router = new TaroRouter();\nexport const pageRouter = new Page(router);\n","import { createContext, useContext } from 'react'\nimport type { ComContextStore } from './useContext'\nexport { pageRouter } from './pageRouter'\n\nconst ComContext = createContext<ComContextStore | undefined>(undefined)\nconst SlotContext = createContext<any>(null)\n\nexport function useAppContext(): ComContextStore {\n const context = useContext(ComContext)\n if (!context) {\n throw new Error('useAppContext must be used within a ComContext.Provider')\n }\n return context\n}\n\nexport function useParentSlot<T = any>(): T | null {\n return useContext(SlotContext)\n}\n\nexport const SlotProvider = SlotContext.Provider\n\nexport default ComContext\n","import React, { useMemo, useRef } from \"react\";\nimport ComContext, { SlotProvider, useAppContext, useParentSlot } from \"./ComContext\";\nimport { createReactiveInputHandler } from \"../mybricks/createReactiveInputHandler\";\n\ntype AnyRecord = Record<string, any>;\n\ntype SlotState = {\n inputs: any;\n outputs: any;\n _inputs: any;\n /** scopeId -> scoped comRefs(每个 scope 一套,避免列表多实例覆盖) */\n _scopedComRefs?: Record<string, any>;\n _render?: any;\n render: (params?: any) => any;\n};\n\nfunction SlotParamsBridge(props: {\n state: SlotState;\n params: any;\n render?: any;\n children?: React.ReactNode;\n}) {\n const parentSlot = useParentSlot<any>();\n const mergedParams =\n props.params?.inputValues === undefined && parentSlot?.params?.inputValues\n ? { ...(props.params || {}), inputValues: parentSlot.params.inputValues }\n : props.params;\n\n const SlotComp = props.render;\n const content = SlotComp ? <SlotComp {...(mergedParams || {})} /> : props.children ?? null;\n\n return <SlotProvider value={{ ...props.state, params: mergedParams }}>{content}</SlotProvider>;\n}\n\nfunction createChannelProxy(title: string) {\n const handlersMap: Record<string, any> = {};\n return new Proxy(\n {},\n {\n get: (_t, pin: string) => {\n return (arg: any) => {\n if (typeof arg === \"function\") {\n handlersMap[pin] = arg;\n return;\n }\n const handler = handlersMap[pin];\n if (typeof handler === \"function\") {\n return createReactiveInputHandler({\n input: handler,\n value: arg,\n rels: {},\n title,\n });\n }\n };\n },\n },\n );\n}\n\n/**\n * 参考鸿蒙的 createSlotsIO:\n * - 确保每个 slot 都具备 inputs / outputs / _inputs 三套通道,避免 runtime 访问时报 undefined\n * - render 时通过 SlotProvider 注入 parentSlot(slot 内子组件可 useParentSlot 获取)\n */\nexport function useEnhancedSlots(rawSlots: any, id: string) {\n const slotStoreRef = useRef<Record<string, SlotState>>({});\n\n return useMemo(() => {\n if (!rawSlots) return {};\n const nextSlots: AnyRecord = {};\n\n Object.entries(rawSlots).forEach(([slotKey, slotDef]: any) => {\n const state =\n slotStoreRef.current[slotKey] ||\n (slotStoreRef.current[slotKey] = {\n inputs: createChannelProxy(`${id}.${slotKey}.inputs`),\n outputs: createChannelProxy(`${id}.${slotKey}.outputs`),\n _inputs: createChannelProxy(`${id}.${slotKey}._inputs`),\n _scopedComRefs: {},\n _render: undefined,\n render: (params?: any) => {\n const r = state._render;\n // 只有存在 key 或 index 时才认为是“多实例作用域插槽”,需要实例隔离\n const rawScope = params?.key ?? params?.inputValues?.index ?? params?.inputValues?.itemData?.id;\n \n if (rawScope === undefined || rawScope === null) {\n return (\n <SlotParamsBridge state={state} params={params} render={r} />\n );\n }\n\n const scopeId = `${id}.${slotKey}::${String(rawScope)}`;\n const scopedComRefs =\n (state._scopedComRefs![scopeId] ||= { current: { $inputs: {}, $outputs: {} } });\n return (\n <SlotProvider value={{ ...state, params }}>\n <ScopedComContextProvider comRefs={scopedComRefs} scopeId={scopeId}>\n <SlotParamsBridge state={state} params={params} render={r} />\n </ScopedComContextProvider>\n </SlotProvider>\n );\n },\n });\n\n state._render = slotDef?.render;\n nextSlots[slotKey] = {\n ...(slotDef || {}),\n render: state.render,\n inputs: state.inputs,\n outputs: state.outputs,\n _inputs: state._inputs,\n };\n });\n\n return nextSlots;\n }, [rawSlots, id]);\n}\n\nexport function ScopedComContextProvider(props: {\n comRefs?: any;\n scopeId: string;\n children: React.ReactNode;\n}) {\n const parent = useAppContext();\n const value = useMemo(() => {\n // $outputs 与 $inputs 一样:在 scoped 下应当隔离(由 scopedComRefs.current.$outputs 提供)\n // 如果没有显式传 comRefs,则沿用父级的,但依然带上新的 scopeId\n return {\n ...parent,\n comRefs: props.comRefs || parent.comRefs,\n $scopeId: props.scopeId,\n } as any;\n }, [parent, props.comRefs, props.scopeId]);\n\n return <ComContext.Provider value={value}>{props.children}</ComContext.Provider>;\n}\n\n/** parentSlot 解析:props 优先,其次用 SlotProvider 注入的 context */\nexport function useResolvedParentSlot(parentSlotProp: any) {\n const parentSlotFromCtx = useParentSlot();\n return parentSlotProp ?? parentSlotFromCtx;\n}\n","import React, { useState, useEffect } from 'react';\n// @ts-ignore 运行时由宿主项目提供 @tarojs/components\nimport { View } from '@tarojs/components';\nimport { useModel, useBindInputs, useBindEvents, subscribePopupRouter, closeActivePopupRouter } from './index';\nimport { useAppCreateContext } from './useContext';\nimport ComContext, { useAppContext } from './ComContext';\nimport { useEnhancedSlots, useResolvedParentSlot } from './slots';\n// @ts-ignore 运行时由宿主项目提供 @tarojs/taro\nimport { useTabItemTap } from '@tarojs/taro';\n\ninterface WithComProps {\n component: React.ComponentType<any>;\n intputRef?: any;\n id?: string;\n data?: any;\n className?: string;\n style?: any;\n [key: string]: any;\n}\n\nexport const WithCom: React.FC<WithComProps> = (props) => {\n const { component: Component, id = '', data, className, style, ...rest } = props;\n const { comRefs, appContext } = useAppContext();\n const env = appContext; //TODO: 需要根据实际情况修改\n\n const isPopup = (Component as any).isPopup;\n const [show, setShow] = useState(true);\n const [dynamicStyle, setDynamicStyle] = useState({});\n\n\n //数据模型\n const _data = useModel(data || {});\n\n // 内置通用能力\n const handlers = {\n _setStyle: (style: any) => {\n setDynamicStyle((prev) => ({ ...prev, ...style }));\n },\n _setData: (path: string, value: any) => {\n const paths = path.split('.');\n let current = _data;\n for (let i = 0; i < paths.length - 1; i++) {\n if (!current[paths[i]]) current[paths[i]] = {};\n current = current[paths[i]];\n }\n current[paths[paths.length - 1]] = value;\n }\n };\n\n if (!isPopup) {\n Object.assign(handlers, {\n show: () => setShow(true),\n hide: () => setShow(false),\n showOrHide: () => setShow((prev) => !prev),\n });\n }\n\n // 绑定输入,传入初始 handlers\n const inputProxy = useBindInputs(comRefs, id, handlers);\n\n const { slots: rawSlots, parentSlot: parentSlotProp, ...restProps } = rest as any;\n const parentSlot = useResolvedParentSlot(parentSlotProp);\n\n // 绑定事件,带上上下文(用于事件流自动封装 id/name)\n const eventProxy = useBindEvents(restProps, { \n id, \n name: props.name || id, \n parentSlot \n });\n\n // 注册 outputs 到注册表(按组件 id)\n if (comRefs?.current?.$outputs) {\n comRefs.current.$outputs[id] = eventProxy;\n }\n\n // 鸿蒙规范:确保 comRefs 中挂载的是最新的 inputProxy\n comRefs.current[id] = inputProxy;\n\n const enhancedSlots = useEnhancedSlots(rawSlots, id);\n\n const jsx = (\n <Component\n {...restProps}\n inputs={inputProxy}\n outputs={eventProxy}\n slots={enhancedSlots}\n parentSlot={parentSlot}\n data={_data}\n env={env}\n id={id}\n style={style}\n />\n );\n\n // 鸿蒙化处理:支持 itemWrap 协议\n if (parentSlot?.params?.itemWrap) {\n return parentSlot.params.itemWrap({\n id,\n name: props.name || id,\n jsx,\n def: (Component as any).def,\n inputs: inputProxy,\n outputs: eventProxy,\n style\n });\n }\n\n return (\n show || isPopup ? (\n <View className={className} style={{ ...style, ...dynamicStyle }} >\n {jsx}\n </View>\n ) : null\n );\n};\n\nexport const WithWrapper = (id: string, Component: React.ComponentType<any>) => {\n return function WrappedComponent(props: any) {\n const contextStore = useAppCreateContext(id);\n const { setPopupState } = contextStore;\n const isPopup = (Component as any).isPopup;\n\n // 通过发布订阅模式解耦弹窗状态变化\n useEffect(() => {\n return subscribePopupRouter((state) => setPopupState(state));\n }, [setPopupState]);\n\n // 点击 TabBar 时自动关闭弹窗(自定义 TabBar 或原生 TabBar 点击均会触发)\n useTabItemTap(() => {\n if (isPopup) return;\n closeActivePopupRouter();\n });\n\n return (\n <ComContext.Provider value={contextStore}>\n <Component {...props} />\n </ComContext.Provider>\n );\n };\n};\n","import React from 'react';\nimport { View } from '@tarojs/components';\nimport { useAppContext } from './ComContext';\n\ninterface PopupRendererProps {\n popupMap: Record<string, any>;\n}\n\nexport const PopupRenderer: React.FC<PopupRendererProps> = ({ popupMap }) => {\n const { popupState } = useAppContext();\n\n const ActivePopup = popupState.visible && popupMap[popupState.name] \n ? popupMap[popupState.name] \n : null;\n\n if (!ActivePopup) return <View></View>;\n\n return (\n <View \n className=\"global-popup-container\" \n style={{ \n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 999999,\n pointerEvents: 'auto',\n }}\n >\n <View style={{ width: '100%', height: '100%' }}>\n <ActivePopup />\n </View>\n </View>\n );\n};\n\n","import { Page } from '../mybricks';\n\n/**\n * 弹窗状态管理(解耦版)\n * 弹窗在 Taro 中被视为组件,不走路由栈\n */\nclass PopupStore {\n private activePopup: any = null;\n private listeners: Set<(state: any) => void> = new Set();\n\n /** 订阅弹窗状态变化 */\n subscribe(listener: (state: any) => void) {\n this.listeners.add(listener);\n // 返回取消订阅函数\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n private notify() {\n this.listeners.forEach((l) =>\n l(\n this.activePopup || {\n visible: false,\n name: '',\n value: null,\n controller: null,\n },\n ),\n );\n }\n\n /** 获取弹窗参数 */\n getParams(name: string) {\n if (this.activePopup && this.activePopup.name === name) {\n return {\n value: this.activePopup.value,\n controller: this.activePopup.controller,\n };\n }\n return { value: null };\n }\n\n /** 获取当前激活的弹窗名称 */\n getActiveName(): string | undefined {\n return this.activePopup?.name;\n }\n\n /** 打开弹窗 */\n push(name: string, { value, controller }: any) {\n this.activePopup = { visible: true, name, value, controller };\n this.notify();\n }\n\n /** 行为同 push */\n replace(name: string, params: any) {\n this.push(name, params);\n }\n\n /** 关闭弹窗 */\n pop() {\n this.activePopup = null;\n this.notify();\n }\n}\n\nconst popupStore = new PopupStore();\n\n/**\n * 订阅弹窗状态变化(统一入口,避免外部依赖内部实现细节)\n */\nexport const subscribePopupRouter = (listener: (state: any) => void) => {\n return popupStore.subscribe(listener);\n};\n\n/** 弹窗控制器(命名与文件名保持一致) */\nexport const popupRouter = new Page(popupStore);\n\n/**\n * 关闭当前激活的弹窗(用于 TabBar 点击等场景)\n * 不需要知道弹窗 id\n */\nexport const closeActivePopupRouter = () => {\n const name = popupStore.getActiveName();\n if (!name) return;\n // 走 Page.close,保证 close/commit/cancel 等控制器语义保持一致\n popupRouter.close(name);\n};\n\n\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n dynamic?: boolean;\n title?: string;\n duration?: number;\n mask?: boolean;\n asynchronous?: boolean;\n icon?: 'success' | 'error' | 'loading' | 'none';\n image?: string;\n};\n\nexport interface Inputs {\n showToast?: (fn: (config: DataType | string, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n afterShowToast: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.showToast?.((val: DataType | string) => {\n try {\n // 构建 Toast 配置\n const toastConfig: any = {\n title: typeof val === 'string' ? val : val?.title || data.title || '',\n duration: Number(typeof val === 'object' && val?.duration ? val.duration : data.duration || 1000),\n mask: typeof val === 'object' && val?.mask !== undefined ? val.mask : data.mask || false,\n };\n\n // 图标配置\n if (typeof val === 'object' && val?.icon) {\n toastConfig.icon = val.icon;\n } else if (data.icon) {\n toastConfig.icon = data.icon;\n }\n\n // 图片配置\n if (typeof val === 'object' && val?.image) {\n toastConfig.image = val.image;\n } else if (data.image) {\n toastConfig.image = data.image;\n }\n\n Taro.showToast(toastConfig);\n\n // 处理输出回调\n const triggerOutput = () => outputs.afterShowToast(val);\n\n if (data.asynchronous) {\n setTimeout(triggerOutput, toastConfig.duration);\n } else {\n triggerOutput();\n }\n } catch (error) {\n console.error('显示 Toast 失败:', error);\n }\n });\n};\n\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n onlyFromCamera?: boolean;\n scanType?: ('barCode' | 'qrCode' | 'datamatrix' | 'pdf417')[];\n};\n\nexport interface Inputs {\n scan?: (fn: (val: DataType | any, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.scan?.((val: DataType | any) => {\n try {\n const scanConfig = {\n onlyFromCamera: val?.onlyFromCamera ?? data.onlyFromCamera ?? false,\n scanType: val?.scanType ?? data.scanType ?? ['barCode', 'qrCode'],\n success: (res: any) => {\n outputs.onSuccess(res.result || res);\n },\n fail: (err: any) => {\n outputs.onFail(err.errMsg || '扫码失败');\n },\n };\n\n Taro.scanCode(scanConfig);\n } catch (error: any) {\n console.error('扫码失败:', error);\n outputs.onFail(error?.message || '扫码失败');\n }\n });\n};\n\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n key?: string;\n value?: any;\n sync?: boolean;\n};\n\nexport interface Inputs {\n setStorage?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.setStorage?.((val: DataType) => {\n try {\n const key = val?.key || data.key;\n const value = val?.value !== undefined ? val.value : data.value;\n const useSync = val?.sync !== undefined ? val.sync : data.sync || false;\n\n if (!key) {\n outputs.onFail('存储 key 不能为空');\n return;\n }\n\n const result = { key, value };\n\n if (useSync) {\n Taro.setStorageSync(key, value);\n outputs.onSuccess(result);\n } else {\n Taro.setStorage({\n key,\n data: value,\n success: () => outputs.onSuccess(result),\n fail: (err) => outputs.onFail(err.errMsg || '写入本地缓存失败'),\n });\n }\n } catch (error: any) {\n console.error('写入本地缓存失败:', error);\n outputs.onFail(error?.message || '写入本地缓存失败');\n }\n });\n};\n\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n key?: string;\n sync?: boolean;\n};\n\nexport interface Inputs {\n getStorage?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.getStorage?.((val: DataType) => {\n try {\n const key = val?.key || data.key;\n const useSync = val?.sync !== undefined ? val.sync : data.sync || false;\n\n if (!key) {\n outputs.onFail('存储 key 不能为空');\n return;\n }\n\n if (useSync) {\n try {\n const value = Taro.getStorageSync(key);\n outputs.onSuccess({ key, value });\n } catch (error: any) {\n outputs.onFail(error?.message || '读取本地缓存失败');\n }\n } else {\n Taro.getStorage({\n key,\n success: (res) => outputs.onSuccess({ key, value: res.data }),\n fail: (err) => outputs.onFail(err.errMsg || '读取本地缓存失败'),\n });\n }\n } catch (error: any) {\n console.error('读取本地缓存失败:', error);\n outputs.onFail(error?.message || '读取本地缓存失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n key?: string;\n sync?: boolean;\n};\n\nexport interface Inputs {\n removeStorage?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.removeStorage?.((val: DataType) => {\n try {\n const key = val?.key || data.key;\n const useSync = val?.sync !== undefined ? val.sync : data.sync || false;\n\n if (!key) {\n outputs.onFail('存储 key 不能为空');\n return;\n }\n\n if (useSync) {\n try {\n Taro.removeStorageSync(key);\n outputs.onSuccess({ key });\n } catch (error: any) {\n outputs.onFail(error?.message || '移除本地缓存失败');\n }\n } else {\n Taro.removeStorage({\n key,\n success: () => outputs.onSuccess({ key }),\n fail: (err) => outputs.onFail(err.errMsg || '移除本地缓存失败'),\n });\n }\n } catch (error: any) {\n console.error('移除本地缓存失败:', error);\n outputs.onFail(error?.message || '移除本地缓存失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n type?: 'wgs84' | 'gcj02';\n altitude?: boolean;\n timeout?: number;\n};\n\nexport interface Inputs {\n getLocation?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.getLocation?.((val: DataType) => {\n try {\n const locationConfig = {\n type: val?.type || data.type || 'wgs84',\n altitude: val?.altitude !== undefined ? val.altitude : data.altitude || false,\n timeout: val?.timeout || data.timeout || 30000,\n success: (res: any) => {\n outputs.onSuccess(res);\n },\n fail: (err: any) => {\n outputs.onFail(err.errMsg || '获取地理位置失败');\n },\n };\n\n Taro.getLocation(locationConfig);\n } catch (error: any) {\n console.error('获取地理位置失败:', error);\n outputs.onFail(error?.message || '获取地理位置失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n type?: 'short' | 'long';\n duration?: number;\n};\n\nexport interface Inputs {\n vibrate?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.vibrate?.((val: DataType) => {\n try {\n const type = val?.type || data.type || 'short';\n\n if (type === 'long') {\n Taro.vibrateLong({\n success: () => outputs.onSuccess('长振动成功'),\n fail: (err) => outputs.onFail(err.errMsg || '长振动失败'),\n });\n } else {\n Taro.vibrateShort({\n success: () => outputs.onSuccess('短振动成功'),\n fail: (err) => outputs.onFail(err.errMsg || '短振动失败'),\n });\n }\n } catch (error: any) {\n console.error('设备振动失败:', error);\n outputs.onFail(error?.message || '设备振动失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n phoneNumber?: string;\n};\n\nexport interface Inputs {\n callPhone?: (fn: (config: DataType | string, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.callPhone?.((val: DataType | string) => {\n try {\n const phoneNumber = typeof val === 'string' ? val : val?.phoneNumber || data.phoneNumber;\n\n if (!phoneNumber) {\n outputs.onFail('电话号码不能为空');\n return;\n }\n\n Taro.makePhoneCall({\n phoneNumber,\n success: () => outputs.onSuccess({ phoneNumber }),\n fail: (err) => outputs.onFail(err.errMsg || '拨打电话失败'),\n });\n } catch (error: any) {\n console.error('拨打电话失败:', error);\n outputs.onFail(error?.message || '拨打电话失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n camera?: 'back' | 'front';\n flash?: 'auto' | 'on' | 'off';\n quality?: 'high' | 'normal' | 'low';\n};\n\nexport interface Inputs {\n openCamera?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.openCamera?.((val: DataType) => {\n try {\n const config = {\n camera: val?.camera || data.camera || 'back',\n flash: val?.flash || data.flash || 'auto',\n quality: val?.quality || data.quality || 'normal',\n };\n\n // Taro没有直接的打开相机API,我们可以:\n // 1. 使用chooseImage并设置sourceType为camera\n // 2. 或者提示用户使用系统相机\n\n Taro.chooseImage({\n count: 1,\n sourceType: ['camera'],\n success: (res) => {\n outputs.onSuccess({\n type: 'camera',\n tempFilePath: res.tempFilePaths[0],\n tempFile: res.tempFiles[0],\n config,\n });\n },\n fail: (err) => {\n if (err.errMsg?.includes('cancel')) {\n outputs.onFail('用户取消拍照');\n } else {\n outputs.onFail(err.errMsg || '打开相机失败');\n }\n },\n });\n } catch (error: any) {\n console.error('打开相机失败:', error);\n outputs.onFail(error?.message || '打开相机失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n url?: string;\n target?: '_blank' | '_self';\n};\n\nexport interface Inputs {\n openUrl?: (fn: (config: DataType | string, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.openUrl?.((val: DataType | string) => {\n try {\n const url = typeof val === 'string' ? val : val?.url || data.url;\n\n if (!url) {\n outputs.onFail('URL 地址不能为空');\n return;\n }\n\n // 检查是否为有效的 URL\n if (!/^https?:\\/\\//.test(url)) {\n outputs.onFail('URL 格式不正确,请以 http:// 或 https:// 开头');\n return;\n }\n\n Taro.navigateTo({\n url: `/pages/webview/index?url=${encodeURIComponent(url)}`,\n success: () => outputs.onSuccess({ url }),\n fail: (err) => outputs.onFail(err.errMsg || '打开链接失败'),\n });\n } catch (error: any) {\n console.error('打开链接失败:', error);\n outputs.onFail(error?.message || '打开链接失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n title?: string;\n path?: string;\n imageUrl?: string;\n};\n\nexport interface Inputs {\n share?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n onCancel: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.share?.((val: DataType) => {\n try {\n const shareData = {\n title: val?.title || data.title || '分享',\n path: val?.path || data.path || '/pages/index/index',\n imageUrl: val?.imageUrl || data.imageUrl,\n };\n\n Taro.showShareMenu({\n withShareTicket: true,\n success: () => outputs.onSuccess(shareData),\n fail: (err) => outputs.onFail(err.errMsg || '分享失败'),\n });\n } catch (error: any) {\n console.error('分享失败:', error);\n outputs.onFail(error?.message || '分享失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n sync?: boolean;\n};\n\nexport interface Inputs {\n getSystemInfo?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.getSystemInfo?.((val: DataType) => {\n try {\n const useSync = val?.sync !== undefined ? val.sync : data.sync || false;\n\n if (useSync) {\n try {\n const systemInfo = Taro.getSystemInfoSync();\n outputs.onSuccess(systemInfo);\n } catch (error: any) {\n outputs.onFail(error?.message || '获取系统信息失败');\n }\n } else {\n Taro.getSystemInfo({\n success: (res) => outputs.onSuccess(res),\n fail: (err) => outputs.onFail(err.errMsg || '获取系统信息失败'),\n });\n }\n } catch (error: any) {\n console.error('获取系统信息失败:', error);\n outputs.onFail(error?.message || '获取系统信息失败');\n }\n });\n};\n","import CryptoJS from 'crypto-js';\n\nexport type DataType = {\n key?: string;\n iv?: string;\n mode?: 'CBC' | 'ECB' | 'CFB' | 'OFB' | 'CTR';\n padding?: 'Pkcs7' | 'Iso97971' | 'AnsiX923' | 'Iso10126' | 'ZeroPadding' | 'NoPadding';\n};\n\nexport interface Inputs {\n encrypt?: (fn: (config: DataType & { text: string }, relOutputs?: any) => void) => void;\n decrypt?: (fn: (config: DataType & { encryptedText: string }, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onEncryptSuccess: (value?: any) => void;\n onDecryptSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n // 模式映射\n const modeMap: Record<string, any> = {\n CBC: CryptoJS.mode.CBC,\n ECB: CryptoJS.mode.ECB,\n CFB: CryptoJS.mode.CFB,\n OFB: CryptoJS.mode.OFB,\n CTR: CryptoJS.mode.CTR,\n };\n\n // 填充方式映射\n const paddingMap: Record<string, any> = {\n Pkcs7: CryptoJS.pad.Pkcs7,\n Iso97971: CryptoJS.pad.Iso97971,\n AnsiX923: CryptoJS.pad.AnsiX923,\n Iso10126: CryptoJS.pad.Iso10126,\n ZeroPadding: CryptoJS.pad.ZeroPadding,\n NoPadding: CryptoJS.pad.NoPadding,\n };\n\n inputs.encrypt?.((val: DataType & { text: string }) => {\n try {\n const text = val.text || '';\n const key = val.key || data.key || 'defaultKey1234567890123456';\n const iv = val.iv || data.iv;\n const mode = modeMap[val.mode || data.mode || 'CBC'];\n const padding = paddingMap[val.padding || data.padding || 'Pkcs7'];\n\n if (!text) {\n outputs.onFail('待加密文本不能为空');\n return;\n }\n\n const keyBytes = CryptoJS.enc.Utf8.parse(key);\n const ivBytes = iv ? CryptoJS.enc.Utf8.parse(iv) : undefined;\n\n const encrypted = CryptoJS.AES.encrypt(text, keyBytes, {\n mode,\n padding,\n iv: ivBytes,\n });\n\n outputs.onEncryptSuccess({\n encryptedText: encrypted.toString(),\n originalText: text,\n });\n } catch (error: any) {\n console.error('AES加密失败:', error);\n outputs.onFail(error?.message || 'AES加密失败');\n }\n });\n\n inputs.decrypt?.((val: DataType & { encryptedText: string }) => {\n try {\n const encryptedText = val.encryptedText || '';\n const key = val.key || data.key || 'defaultKey1234567890123456';\n const iv = val.iv || data.iv;\n const mode = modeMap[val.mode || data.mode || 'CBC'];\n const padding = paddingMap[val.padding || data.padding || 'Pkcs7'];\n\n if (!encryptedText) {\n outputs.onFail('待解密文本不能为空');\n return;\n }\n\n const keyBytes = CryptoJS.enc.Utf8.parse(key);\n const ivBytes = iv ? CryptoJS.enc.Utf8.parse(iv) : undefined;\n\n const decrypted = CryptoJS.AES.decrypt(encryptedText, keyBytes, {\n mode,\n padding,\n iv: ivBytes,\n });\n\n const decryptedText = decrypted.toString(CryptoJS.enc.Utf8);\n\n if (!decryptedText) {\n outputs.onFail('解密失败,可能密钥或参数不正确');\n return;\n }\n\n outputs.onDecryptSuccess({\n decryptedText,\n encryptedText,\n });\n } catch (error: any) {\n console.error('AES解密失败:', error);\n outputs.onFail(error?.message || 'AES解密失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n dynamic?: boolean;\n title?: string;\n content?: string;\n /** 微信/部分端支持,可编辑输入框 */\n editable?: boolean;\n showCancel?: boolean;\n cancelText?: string;\n cancelColor?: string;\n confirmText?: string;\n confirmColor?: string;\n};\n\nexport interface Inputs {\n /** 显示模态对话框 */\n show?: (fn: (config?: DataType | string, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onConfirm: (value?: any) => void;\n onCancel: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.show?.(async (val?: DataType | string) => {\n try {\n const cfg: DataType =\n typeof val === 'string'\n ? { content: val }\n : (val || {});\n\n const modalConfig: any = {\n title: cfg.title ?? data.title ?? '',\n content: cfg.content ?? data.content ?? '',\n showCancel: cfg.showCancel ?? data.showCancel ?? true,\n cancelText: cfg.cancelText ?? data.cancelText ?? '取消',\n cancelColor: cfg.cancelColor ?? data.cancelColor,\n confirmText: cfg.confirmText ?? data.confirmText ?? '确认',\n confirmColor: cfg.confirmColor ?? data.confirmColor,\n };\n\n // editable 不是所有端都支持,按存在即传\n if (cfg.editable !== undefined) modalConfig.editable = cfg.editable;\n else if (data.editable !== undefined) modalConfig.editable = data.editable;\n\n const res: any = await (Taro as any).showModal(modalConfig);\n if (res?.confirm) outputs.onConfirm?.(res);\n else outputs.onCancel?.(res);\n } catch (error: any) {\n console.error('显示 Modal 失败:', error);\n outputs.onCancel?.(error);\n }\n });\n};\n\n\n","export type DataType = {\n input?: any;\n format?: 'json' | 'string' | 'number' | 'boolean' | 'date' | 'base64' | 'urlEncode' | 'urlDecode';\n options?: {\n dateFormat?: string; // 日期格式,如 'YYYY-MM-DD HH:mm:ss'\n precision?: number; // 数字精度\n radix?: number; // 进制转换的基数\n };\n};\n\nexport interface Inputs {\n format?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.format?.((val: DataType) => {\n try {\n const input = val?.input !== undefined ? val.input : data.input;\n const format = val?.format || data.format || 'string';\n const options = val?.options || data.options || {};\n\n if (input === undefined || input === null) {\n outputs.onFail('输入值不能为空');\n return;\n }\n\n let result: any;\n\n switch (format) {\n case 'json':\n if (typeof input === 'string') {\n try {\n result = JSON.parse(input);\n } catch (error) {\n outputs.onFail('JSON解析失败');\n return;\n }\n } else {\n result = JSON.stringify(input, null, 2);\n }\n break;\n\n case 'string':\n result = String(input);\n break;\n\n case 'number':\n const num = Number(input);\n if (isNaN(num)) {\n outputs.onFail('无法转换为有效数字');\n return;\n }\n result = options.precision !== undefined ? Number(num.toFixed(options.precision)) : num;\n break;\n\n case 'boolean':\n result = Boolean(input);\n break;\n\n case 'date':\n const date = new Date(input);\n if (isNaN(date.getTime())) {\n outputs.onFail('无效的日期格式');\n return;\n }\n if (options.dateFormat) {\n // 简单的日期格式化\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n\n result = options.dateFormat\n .replace('YYYY', year.toString())\n .replace('MM', month)\n .replace('DD', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds);\n } else {\n result = date.toISOString();\n }\n break;\n\n case 'base64':\n if (typeof input === 'string') {\n try {\n // 尝试解码Base64\n result = decodeURIComponent(escape(atob(input)));\n } catch {\n // 如果解码失败,则编码为Base64\n result = btoa(unescape(encodeURIComponent(input)));\n }\n } else {\n outputs.onFail('Base64转换需要字符串输入');\n return;\n }\n break;\n\n case 'urlEncode':\n result = encodeURIComponent(String(input));\n break;\n\n case 'urlDecode':\n try {\n result = decodeURIComponent(String(input));\n } catch (error) {\n outputs.onFail('URL解码失败');\n return;\n }\n break;\n\n default:\n outputs.onFail(`不支持的格式类型: ${format}`);\n return;\n }\n\n outputs.onSuccess({\n input,\n output: result,\n format,\n options,\n });\n } catch (error: any) {\n console.error('格式化失败:', error);\n outputs.onFail(error?.message || '格式化失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n accept?: string; // 文件类型,如 'image/*', 'video/*', 'audio/*', '.pdf,.doc,.docx'\n multiple?: boolean; // 是否支持多选\n capture?: 'camera' | 'album' | 'both'; // 拍摄来源\n compressed?: boolean; // 是否压缩\n maxDuration?: number; // 视频最大时长(秒)\n camera?: 'back' | 'front'; // 摄像头方向\n};\n\nexport interface Inputs {\n chooseFile?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.chooseFile?.((val: DataType) => {\n try {\n const config = {\n accept: val?.accept || data.accept || 'image/*',\n multiple: val?.multiple !== undefined ? val.multiple : data.multiple || false,\n capture: val?.capture || data.capture,\n compressed: val?.compressed !== undefined ? val.compressed : data.compressed,\n maxDuration: val?.maxDuration || data.maxDuration,\n camera: val?.camera || data.camera,\n };\n\n // 根据文件类型选择不同的API\n if (config.accept?.startsWith('image/')) {\n // 选择图片\n Taro.chooseImage({\n count: config.multiple ? 9 : 1,\n sourceType: config.capture === 'album' ? ['album'] : config.capture === 'camera' ? ['camera'] : ['album', 'camera'],\n success: (res) => {\n outputs.onSuccess({\n type: 'image',\n files: res.tempFiles,\n tempFilePaths: res.tempFilePaths,\n });\n },\n fail: (err) => outputs.onFail(err.errMsg || '选择图片失败'),\n });\n } else if (config.accept?.startsWith('video/')) {\n // 选择视频\n Taro.chooseVideo({\n sourceType: config.capture === 'album' ? ['album'] : config.capture === 'camera' ? ['camera'] : ['album', 'camera'],\n compressed: config.compressed,\n maxDuration: config.maxDuration,\n camera: config.camera,\n success: (res) => {\n outputs.onSuccess({\n type: 'video',\n file: res,\n });\n },\n fail: (err) => outputs.onFail(err.errMsg || '选择视频失败'),\n });\n } else if (config.accept?.startsWith('audio/')) {\n // 选择音频(小程序暂不支持直接选择音频文件,这里返回提示)\n outputs.onFail('小程序暂不支持直接选择音频文件');\n } else {\n // 其他文件类型,使用文件选择器(如果支持)\n if (Taro.chooseMessageFile) {\n Taro.chooseMessageFile({\n count: config.multiple ? 10 : 1,\n type: 'file',\n success: (res) => {\n outputs.onSuccess({\n type: 'file',\n files: res.tempFiles,\n });\n },\n fail: (err) => outputs.onFail(err.errMsg || '选择文件失败'),\n });\n } else {\n outputs.onFail('当前环境不支持文件选择');\n }\n }\n } catch (error: any) {\n console.error('文件选择失败:', error);\n outputs.onFail(error?.message || '文件选择失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n mediaType?: ('image' | 'video')[];\n sourceType?: ('album' | 'camera')[];\n count?: number;\n sizeType?: ('original' | 'compressed')[];\n maxDuration?: number;\n camera?: 'back' | 'front';\n};\n\nexport interface Inputs {\n chooseMedia?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.chooseMedia?.((val: DataType) => {\n try {\n const config = {\n mediaType: val?.mediaType || data.mediaType || ['image', 'video'],\n sourceType: val?.sourceType || data.sourceType || ['album', 'camera'],\n count: val?.count || data.count || 9,\n sizeType: val?.sizeType || data.sizeType || ['original', 'compressed'],\n maxDuration: val?.maxDuration || data.maxDuration || 10,\n camera: val?.camera || data.camera,\n };\n\n Taro.chooseMedia({\n ...config,\n success: (res) => {\n outputs.onSuccess({\n type: res.type,\n tempFiles: res.tempFiles,\n tempFilePaths: res.tempFilePaths || res.tempFiles?.map(file => file.tempFilePath),\n });\n },\n fail: (err) => {\n outputs.onFail(err.errMsg || '选择媒体失败');\n },\n });\n } catch (error: any) {\n console.error('选择媒体失败:', error);\n outputs.onFail(error?.message || '选择媒体失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';\n url?: string;\n headers?: Record<string, string>;\n data?: any;\n timeout?: number;\n dataType?: 'json' | 'text' | 'base64';\n responseType?: 'text' | 'arraybuffer';\n};\n\nexport interface Inputs {\n request?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.request?.((val: DataType) => {\n try {\n const config = {\n method: val?.method || data.method || 'GET',\n url: val?.url || data.url,\n header: val?.headers || data.headers || {},\n data: val?.data || data.data,\n timeout: val?.timeout || data.timeout,\n dataType: val?.dataType || data.dataType || 'json',\n responseType: val?.responseType || data.responseType || 'text',\n };\n\n if (!config.url) {\n outputs.onFail('请求URL不能为空');\n return;\n }\n\n // 检查URL格式\n if (!/^https?:\\/\\//.test(config.url)) {\n outputs.onFail('URL格式不正确,请以http://或https://开头');\n return;\n }\n\n Taro.request({\n ...config,\n success: (res) => {\n if (res.statusCode >= 200 && res.statusCode < 300) {\n outputs.onSuccess({\n data: res.data,\n statusCode: res.statusCode,\n header: res.header,\n });\n } else {\n outputs.onFail({\n message: `请求失败: ${res.statusCode}`,\n statusCode: res.statusCode,\n data: res.data,\n });\n }\n },\n fail: (err) => {\n outputs.onFail({\n message: err.errMsg || '网络请求失败',\n error: err,\n });\n },\n });\n } catch (error: any) {\n console.error('网络请求失败:', error);\n outputs.onFail({\n message: error?.message || '网络请求失败',\n error,\n });\n }\n });\n};\n","export type DataType = {\n headers?: Record<string, string>;\n};\n\nexport interface Inputs {\n setGlobalHeaders?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n getGlobalHeaders?: (fn: (config: {}, relOutputs?: any) => void) => void;\n clearGlobalHeaders?: (fn: (config: {}, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\n// 全局请求头存储\nlet globalHeaders: Record<string, string> = {};\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.setGlobalHeaders?.((val: DataType) => {\n try {\n const headers = val?.headers || data.headers || {};\n\n if (Object.keys(headers).length === 0) {\n outputs.onFail('请求头不能为空');\n return;\n }\n\n // 合并到全局请求头\n globalHeaders = { ...globalHeaders, ...headers };\n\n outputs.onSuccess({\n globalHeaders: { ...globalHeaders },\n addedHeaders: headers,\n });\n } catch (error: any) {\n console.error('设置全局请求头失败:', error);\n outputs.onFail(error?.message || '设置全局请求头失败');\n }\n });\n\n inputs.getGlobalHeaders?.(() => {\n try {\n outputs.onSuccess({\n globalHeaders: { ...globalHeaders },\n });\n } catch (error: any) {\n console.error('获取全局请求头失败:', error);\n outputs.onFail(error?.message || '获取全局请求头失败');\n }\n });\n\n inputs.clearGlobalHeaders?.(() => {\n try {\n const oldHeaders = { ...globalHeaders };\n globalHeaders = {};\n\n outputs.onSuccess({\n clearedHeaders: oldHeaders,\n globalHeaders: {},\n });\n } catch (error: any) {\n console.error('清除全局请求头失败:', error);\n outputs.onFail(error?.message || '清除全局请求头失败');\n }\n });\n};\n\n// 导出一个工具函数,用于在其他组件中获取全局请求头\nexport const getGlobalHeaders = (): Record<string, string> => {\n return { ...globalHeaders };\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n delta?: number;\n animation?: boolean;\n};\n\nexport interface Inputs {\n back?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.back?.((val: DataType) => {\n try {\n const delta = val?.delta ?? data.delta ?? 1;\n const animation = val?.animation !== undefined ? val.animation : data.animation ?? true;\n\n // 获取当前页面栈信息\n const pages = Taro.getCurrentPages();\n const currentIndex = pages.length - 1;\n\n if (currentIndex === 0) {\n // 如果是首页,返回失败\n outputs.onFail('已经是首页,无法返回');\n return;\n }\n\n if (delta > currentIndex) {\n // 如果返回层数超过页面栈深度,返回失败\n outputs.onFail(`页面栈深度不足,无法返回${delta}层`);\n return;\n }\n\n if (delta === 1) {\n // 返回上一页\n Taro.navigateBack({\n delta: 1,\n animation,\n success: () => outputs.onSuccess({ delta: 1 }),\n fail: (err) => outputs.onFail(err.errMsg || '返回失败'),\n });\n } else {\n // 多层返回,需要先获取目标页面信息\n const targetPage = pages[currentIndex - delta];\n if (targetPage) {\n Taro.navigateBack({\n delta,\n animation,\n success: () => outputs.onSuccess({ delta, targetPage: targetPage.route }),\n fail: (err) => outputs.onFail(err.errMsg || '返回失败'),\n });\n } else {\n outputs.onFail('目标页面不存在');\n }\n }\n } catch (error: any) {\n console.error('返回操作失败:', error);\n outputs.onFail(error?.message || '返回操作失败');\n }\n });\n};\n","import Taro from '@tarojs/taro';\n\nexport type DataType = {\n path?: string;\n params?: Record<string, any>;\n type?: 'navigateTo' | 'redirectTo' | 'switchTab' | 'reLaunch' | 'navigateBack';\n delta?: number;\n};\n\nexport interface Inputs {\n navigate?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.navigate?.((val: DataType) => {\n try {\n const type = val?.type || data.type || 'navigateTo';\n const path = val?.path || data.path;\n const params = val?.params || data.params || {};\n const delta = val?.delta || data.delta || 1;\n\n if (!path && type !== 'navigateBack') {\n outputs.onFail('路由路径不能为空');\n return;\n }\n\n // 构建完整的URL\n let url = path;\n if (params && Object.keys(params).length > 0) {\n const queryString = Object.entries(params)\n .map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`)\n .join('&');\n url += (url.includes('?') ? '&' : '?') + queryString;\n }\n\n switch (type) {\n case 'navigateTo':\n Taro.navigateTo({\n url,\n success: () => outputs.onSuccess({ type, path: url, params }),\n fail: (err) => outputs.onFail(err.errMsg || '页面跳转失败'),\n });\n break;\n\n case 'redirectTo':\n Taro.redirectTo({\n url,\n success: () => outputs.onSuccess({ type, path: url, params }),\n fail: (err) => outputs.onFail(err.errMsg || '页面重定向失败'),\n });\n break;\n\n case 'switchTab':\n Taro.switchTab({\n url,\n success: () => outputs.onSuccess({ type, path: url, params }),\n fail: (err) => outputs.onFail(err.errMsg || '切换Tab失败'),\n });\n break;\n\n case 'reLaunch':\n Taro.reLaunch({\n url,\n success: () => outputs.onSuccess({ type, path: url, params }),\n fail: (err) => outputs.onFail(err.errMsg || '重启应用失败'),\n });\n break;\n\n case 'navigateBack':\n Taro.navigateBack({\n delta,\n success: () => outputs.onSuccess({ type, delta }),\n fail: (err) => outputs.onFail(err.errMsg || '返回失败'),\n });\n break;\n\n default:\n outputs.onFail(`不支持的路由类型: ${type}`);\n }\n } catch (error: any) {\n console.error('路由跳转失败:', error);\n outputs.onFail(error?.message || '路由跳转失败');\n }\n });\n};\n","export type DataType = {\n latitude?: number;\n longitude?: number;\n scale?: number;\n markers?: Array<{\n id: string;\n latitude: number;\n longitude: number;\n title?: string;\n iconPath?: string;\n }>;\n showLocation?: boolean;\n};\n\nexport interface Inputs {\n openMap?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n inputs.openMap?.((val: DataType) => {\n try {\n const config = {\n latitude: val?.latitude || data.latitude || 39.9093,\n longitude: val?.longitude || data.longitude || 116.3974,\n scale: val?.scale || data.scale || 16,\n markers: val?.markers || data.markers || [],\n showLocation: val?.showLocation !== undefined ? val.showLocation : data.showLocation || true,\n };\n\n // 小程序环境下,使用Taro的地图组件\n // 这里可以导航到地图页面或直接显示地图\n outputs.onSuccess({\n type: 'map',\n config,\n message: '地图配置已准备就绪,请在页面中使用Map组件显示',\n });\n } catch (error: any) {\n console.error('打开地图失败:', error);\n outputs.onFail(error?.message || '打开地图失败');\n }\n });\n};\n","export type DataType = {\n text?: string;\n lang?: string; // 语言,如 'zh-CN', 'en-US'\n rate?: number; // 语速,0.1-10\n pitch?: number; // 音调,0-2\n volume?: number; // 音量,0-1\n};\n\nexport interface Inputs {\n speak?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n stop?: (fn: (config: {}, relOutputs?: any) => void) => void;\n pause?: (fn: (config: {}, relOutputs?: any) => void) => void;\n resume?: (fn: (config: {}, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onStart: (value?: any) => void;\n onEnd: (value?: any) => void;\n onError: (value?: any) => void;\n onSuccess: (value?: any) => void;\n onFail: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\n// 检查浏览器是否支持Web Speech API\nconst speechSupported = typeof window !== 'undefined' && 'speechSynthesis' in window;\nlet currentUtterance: SpeechSynthesisUtterance | null = null;\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n if (!speechSupported) {\n console.warn('当前环境不支持语音合成功能');\n }\n\n inputs.speak?.((val: DataType) => {\n try {\n const text = val?.text || data.text;\n const lang = val?.lang || data.lang || 'zh-CN';\n const rate = val?.rate || data.rate || 1;\n const pitch = val?.pitch || data.pitch || 1;\n const volume = val?.volume || data.volume || 1;\n\n if (!text) {\n outputs.onFail('待合成的文本不能为空');\n return;\n }\n\n if (!speechSupported) {\n outputs.onFail('当前环境不支持语音合成功能');\n return;\n }\n\n // 如果有正在播放的语音,先停止\n if (currentUtterance && window.speechSynthesis.speaking) {\n window.speechSynthesis.cancel();\n }\n\n currentUtterance = new SpeechSynthesisUtterance(text);\n currentUtterance.lang = lang;\n currentUtterance.rate = Math.max(0.1, Math.min(10, rate));\n currentUtterance.pitch = Math.max(0, Math.min(2, pitch));\n currentUtterance.volume = Math.max(0, Math.min(1, volume));\n\n currentUtterance.onstart = () => {\n outputs.onStart({ text, lang, rate, pitch, volume });\n };\n\n currentUtterance.onend = () => {\n outputs.onEnd({ text, lang, rate, pitch, volume });\n currentUtterance = null;\n };\n\n currentUtterance.onerror = (event) => {\n outputs.onError({\n error: event.error,\n text,\n message: '语音合成失败',\n });\n currentUtterance = null;\n };\n\n window.speechSynthesis.speak(currentUtterance);\n outputs.onSuccess({ text, lang, rate, pitch, volume });\n } catch (error: any) {\n console.error('语音合成失败:', error);\n outputs.onFail(error?.message || '语音合成失败');\n }\n });\n\n inputs.stop?.(() => {\n try {\n if (speechSupported && currentUtterance) {\n window.speechSynthesis.cancel();\n currentUtterance = null;\n outputs.onSuccess('已停止语音播放');\n } else {\n outputs.onFail('没有正在播放的语音');\n }\n } catch (error: any) {\n console.error('停止语音失败:', error);\n outputs.onFail(error?.message || '停止语音失败');\n }\n });\n\n inputs.pause?.(() => {\n try {\n if (speechSupported && window.speechSynthesis.pause) {\n window.speechSynthesis.pause();\n outputs.onSuccess('已暂停语音播放');\n } else {\n outputs.onFail('当前环境不支持暂停功能');\n }\n } catch (error: any) {\n console.error('暂停语音失败:', error);\n outputs.onFail(error?.message || '暂停语音失败');\n }\n });\n\n inputs.resume?.(() => {\n try {\n if (speechSupported && window.speechSynthesis.resume) {\n window.speechSynthesis.resume();\n outputs.onSuccess('已恢复语音播放');\n } else {\n outputs.onFail('当前环境不支持恢复功能');\n }\n } catch (error: any) {\n console.error('恢复语音失败:', error);\n outputs.onFail(error?.message || '恢复语音失败');\n }\n });\n};\n","export type DataType = {\n delay?: number; // 防抖延迟时间(毫秒)\n leading?: boolean; // 是否在开始时执行\n trailing?: boolean; // 是否在结束时执行\n};\n\nexport interface Inputs {\n debounce?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onExecute: (value?: any) => void;\n onComplete: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\n// 防抖函数实现\nfunction debounce(func: Function, delay: number, options: { leading?: boolean; trailing?: boolean } = {}) {\n let timeoutId: any = null;\n let lastExecTime = 0;\n const { leading = false, trailing = true } = options;\n\n return function (...args: any[]) {\n const currentTime = Date.now();\n\n if (!timeoutId && leading) {\n func.apply(null, args);\n lastExecTime = currentTime;\n }\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n timeoutId = setTimeout(() => {\n if (trailing && (!leading || currentTime - lastExecTime >= delay)) {\n func.apply(null, args);\n }\n timeoutId = null;\n }, delay);\n };\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n let debouncedFn: Function | null = null;\n\n inputs.debounce?.((val: DataType) => {\n try {\n const delay = val?.delay || data.delay || 300;\n const leading = val?.leading !== undefined ? val.leading : data.leading || false;\n const trailing = val?.trailing !== undefined ? val.trailing : data.trailing || true;\n\n if (!debouncedFn) {\n debouncedFn = debounce(\n () => {\n outputs.onExecute({ delay, leading, trailing, timestamp: Date.now() });\n },\n delay,\n { leading, trailing }\n );\n }\n\n // 执行防抖函数\n debouncedFn();\n\n outputs.onComplete({ delay, leading, trailing });\n } catch (error: any) {\n console.error('防抖执行失败:', error);\n }\n });\n};\n","export type DataType = {\n delay?: number; // 延迟时间(毫秒)\n};\n\nexport interface Inputs {\n delay?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n cancel?: (fn: (config: {}, relOutputs?: any) => void) => void;\n /**\n * 兼容老协议:直接传入任意 payload,延迟后从 outputs.trigger 原样输出\n *(生成器里常见 inputs:[\"trigger\"], outputs:[\"trigger\"])\n */\n trigger?: (fn: (payload: any, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onStart: (value?: any) => void;\n onExecute: (value?: any) => void;\n onCancel: (value?: any) => void;\n /** 兼容老协议 */\n trigger?: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n let timeoutId: any = null;\n const inputPins = new Set(Object.keys(inputs as any));\n const outputPins = new Set(Object.keys(outputs as any));\n const hasIn = (pin: string) => inputPins.has(pin);\n const hasOut = (pin: string) => outputPins.has(pin);\n\n const clear = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n // 兼容:inputs.trigger(payload) -> 延迟后 outputs.trigger(payload)\n if (hasIn(\"trigger\")) inputs.trigger?.((payload: any) => {\n try {\n // 允许 payload 自带 delay 覆盖;否则用 data.delay;再否则 1000\n const delay = payload?.delay || data.delay || 1000;\n\n clear();\n\n outputs.onStart?.({ delay, timestamp: Date.now() });\n\n timeoutId = setTimeout(() => {\n if (hasOut(\"trigger\")) outputs.trigger?.(payload);\n outputs.onExecute?.({ delay, timestamp: Date.now() });\n timeoutId = null;\n }, delay);\n } catch (error: any) {\n console.error('延迟执行失败:', error);\n clear();\n }\n });\n\n if (hasIn(\"delay\")) inputs.delay?.((val: DataType) => {\n try {\n const delay = val?.delay || data.delay || 1000;\n\n clear();\n\n outputs.onStart({ delay, timestamp: Date.now() });\n\n timeoutId = setTimeout(() => {\n outputs.onExecute({ delay, timestamp: Date.now() });\n timeoutId = null;\n }, delay);\n } catch (error: any) {\n console.error('延迟执行失败:', error);\n clear();\n }\n });\n\n if (hasIn(\"cancel\")) inputs.cancel?.(() => {\n try {\n if (timeoutId) {\n clear();\n outputs.onCancel('延迟任务已取消');\n } else {\n outputs.onCancel('没有正在执行的延迟任务');\n }\n } catch (error: any) {\n console.error('取消延迟失败:', error);\n }\n });\n};\n","export type DataType = {\n interval?: number; // 节流间隔时间(毫秒)\n leading?: boolean; // 是否在开始时执行\n trailing?: boolean; // 是否在结束时执行\n};\n\nexport interface Inputs {\n throttle?: (fn: (config: DataType, relOutputs?: any) => void) => void;\n}\n\nexport interface Outputs {\n onExecute: (value?: any) => void;\n onSkip: (value?: any) => void;\n onComplete: (value?: any) => void;\n}\n\ninterface IOContext {\n data: DataType;\n inputs: Inputs;\n outputs: Outputs;\n}\n\n// 节流函数实现\nfunction throttle(func: Function, delay: number, options: { leading?: boolean; trailing?: boolean } = {}) {\n let timeoutId: any = null;\n let lastExecTime = 0;\n const { leading = true, trailing = true } = options;\n\n return function (...args: any[]) {\n const currentTime = Date.now();\n\n if (currentTime - lastExecTime > delay) {\n if (leading) {\n func.apply(null, args);\n lastExecTime = currentTime;\n }\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n } else if (trailing && !timeoutId) {\n timeoutId = setTimeout(() => {\n func.apply(null, args);\n lastExecTime = Date.now();\n timeoutId = null;\n }, delay - (currentTime - lastExecTime));\n }\n };\n}\n\nexport default (context: IOContext) => {\n const data: DataType = context.data;\n const inputs: Inputs = context.inputs;\n const outputs: Outputs = context.outputs;\n\n let throttledFn: Function | null = null;\n\n inputs.throttle?.((val: DataType) => {\n try {\n const interval = val?.interval || data.interval || 1000;\n const leading = val?.leading !== undefined ? val.leading : data.leading || true;\n const trailing = val?.trailing !== undefined ? val.trailing : data.trailing || true;\n\n if (!throttledFn) {\n throttledFn = throttle(\n () => {\n outputs.onExecute({ interval, leading, trailing, timestamp: Date.now() });\n },\n interval,\n { leading, trailing }\n );\n }\n\n // 执行节流函数\n throttledFn();\n\n outputs.onComplete({ interval, leading, trailing });\n } catch (error: any) {\n console.error('节流执行失败:', error);\n }\n });\n};\n"],"names":["useState","useRef","useMemo","createContext","useContext","_jsx","View","useEffect","useTabItemTap"],"mappings":";;;;;;;;AAAO,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc;AACrC,MAAC,aAAa,GAAG,MAAM,CAAC,eAAe;AACvC,MAAC,iBAAiB,GAAG,MAAM,CAAC,mBAAmB;AACpD,MAAM,mBAAmB,GAAG,MAAM,CAAC,qBAAqB;AACxD,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe;AAC5C,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB;AAIlD,MAAM,aAAa,GAAG;AAC7B,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,KAAK,EAAE;AACT;;ACZO,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK;AAChC;AACA;;AAEO,MAAM,MAAM,GAAG;AACtB,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,KAAK,EAAE,GAAG;AACZ;;ACEA;AACO,MAAM,OAAO,CAAC;AACrB,EAAE,OAAO,GAAG;AACZ,EAAE,UAAU,GAAG,IAAI,GAAG;AACtB,EAAE,IAAI,GAAG;AACT,EAAE,MAAM,GAAG,IAAI;;AAEf,EAAE,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE;AAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AACvB,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;AAC3B,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE;AACxB,QAAQ,IAAI,IAAI,IAAI,MAAM,EAAE;AAC5B,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC;AAC7B,QAAQ;;AAER,QAAQ,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI;;AAEhD,QAAQ,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AACpD,UAAU,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,KAAK;AAChD,QAAQ,CAAC;;AAET,QAAQ,OAAO;AACf,MAAM;AACN,KAAK;AACL,EAAE;;AAEF,EAAE,KAAK,aAAa,CAAC,GAAG;AACxB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;AACzB,EAAE;;AAEF,EAAE,KAAK,aAAa,CAAC,GAAG;AACxB,IAAI,OAAO,IAAI,CAAC,MAAM;AACtB,EAAE;;AAEF,EAAE,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE;AAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;AAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK;AACvB,EAAE;;AAEF,EAAE,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE;AAC/B,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACxC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG;AAClB,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;AAChE,EAAE;;AAEF,EAAE,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;AAChC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC7B,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,IAAI;AACJ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ;AAChC,EAAE;;AAEF,EAAE,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE;AAClC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ;AACnC,EAAE;AACF;;AAEA,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACpC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG;AAC1B,EAAE,IAAI,OAAO,GAAG;AAChB,EAAE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC1B,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE;AACnD,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG;AACzB,EAAE;AACF,EAAE,OAAO;AACT;;AAEA,MAAM,WAAW,SAAS,OAAO,CAAC;AAClC,EAAE,KAAK,GAAG;;AAEV,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,KAAK;;AAET,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;;AAExB,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;AAC3B,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE;AACxB,QAAQ,IAAI,IAAI,IAAI,MAAM,EAAE;AAC5B,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC;AAC7B,QAAQ;;AAER,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;;AAE9B,QAAQ,OAAO,MAAM;AACrB,MAAM;AACN,KAAK;AACL,EAAE;;AAEF,EAAE,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE;AAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG;AAClB,IAAI,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;AACpE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;AACpE,EAAE;;AAEF,EAAE,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;AAChC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC7B,MAAM,QAAQ,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/E,IAAI;AACJ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ;AAChC,EAAE;AACF;;AC/GA;AACO,MAAM,0BAA0B,GAAG,CAAC,MAAM,KAAK;AACtD,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM;AAC9C,EAAE,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AAClC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AACxC,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE;AACjC,QAAQ,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;AACpB,UAAU,OAAO,CAAC,KAAK,KAAK;AAC5B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AACtB,eAAe,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,KAAK;AACrH,UAAU;AACV,QAAQ;AACR,OAAO,CAAC;AACR,IAAI,CAAC;AACL,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,EAAE;AAC7B,MAAM;AACN,QAAQ,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;AACpB,UAAU,OAAO,CAAC,KAAK,KAAK;AAC5B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AACtB,eAAe,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,KAAK;AACrH,UAAU;AACV,QAAQ;AACR;AACA,KAAK;AACL,EAAE;;AAEF,EAAE,OAAO,IAAI,KAAK,CAAC,EAAE;AACrB,IAAI;AACJ,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;AAClB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAC7G,MAAM;AACN;AACA;AACA;;AClCA;;AAEG;AACG,SAAU,SAAS,CAAC,MAAW,EAAE,KAAkB,EAAA;AACvD,IAAA,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;AACrE,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAA;YACX,IAAI,IAAI,KAAK,WAAW;AAAE,gBAAA,OAAO,IAAI;YACrC,IAAI,IAAI,KAAK,QAAQ;AAAE,gBAAA,OAAO,MAAM,GAAG;AAEvC,YAAA,IAAI,KAAK,GAAI,GAAW,CAAC,IAAI,CAAC;;;AAI9B,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBAClE,GAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;YAC9C;AAEA,YAAA,OAAQ,GAAW,CAAC,IAAI,CAAC;QAC3B,CAAC;AACD,QAAA,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAA;AAClB,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC;AAC5C,YAAA,IAAI,KAAK;AAAE,gBAAA,KAAK,EAAE;AAClB,YAAA,OAAO,MAAM;QACf;AACD,KAAA,CAAC;AACJ;AAEM,SAAU,QAAQ,CAAC,OAAY,EAAA;IACnC,MAAM,GAAG,WAAW,CAAC,GAAGA,cAAQ,CAAC,EAAE,CAAC;IACpC,MAAM,OAAO,GAAGC,YAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAErC,OAAOC,aAAO,CAAC,MAAK;AAClB,QAAA,OAAO,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,EAAE,EAAE,CAAC;AACR;SAEgB,aAAa,CAAC,KAAU,EAAE,EAAU,EAAE,eAAqC,EAAA;IACzF,MAAM,WAAW,GAAGD,YAAM,CAAsB,EAAE,GAAG,eAAe,EAAE,CAAC;;IAGvE,IAAI,eAAe,EAAE;QACnB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC;IACrD;IAEA,OAAOC,aAAO,CAAC,MAAK;AAClB,QAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;AAC1B,YAAA,GAAG,EAAE,CAAC,OAAO,EAAE,GAAW,KAAI;AAC5B,gBAAA,OAAO,CAAC,GAAQ,EAAE,GAAG,IAAW,KAAI;AAClC,oBAAA,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;;AAE7B,wBAAA,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;oBAChC;yBAAO;;wBAEL,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;AAExC,wBAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AACjC,4BAAA,IAAI,GAAG,KAAK,UAAU,EAAE;AACtB,gCAAA,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;4BAC9B;;AAEA,4BAAA,OAAO,0BAA0B,CAAC;AAChC,gCAAA,KAAK,EAAE,OAAO;AACd,gCAAA,KAAK,EAAE,GAAG;gCACV,IAAI,EAAE,EAAE;AACR,gCAAA,KAAK,EAAE;AACR,6BAAA,CAAC;wBACJ;oBACF;AACF,gBAAA,CAAC;YACH;AACD,SAAA,CAAC;;AAGF,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;AAC1B,YAAA,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK;QAC3B;AACA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACjB;AAEM,SAAU,aAAa,CAAC,KAAU,EAAE,OAAwD,EAAA;IAChG,OAAOA,aAAO,CAAC,MAAK;QAClB,MAAM,OAAO,GAAwB,EAAE;;QAGvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;;YAE/B,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE;AACpC,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;AAC1B,gBAAA,MAAM,OAAO,GAAG,CAAC,aAAkB,KAAI;;;;;;AAKrC,oBAAA,MAAM,KAAK,GAAG,CAAA,MAAA,CAAA,EAAA,GAAA,OAAO,aAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,0CAAE,QAAQ,IAAG;wBACpD,EAAE,EAAE,OAAO,CAAC,EAAE;wBACd,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,wBAAA,KAAK,EAAE;qBACR,GAAG,aAAa;AAEjB,oBAAA,OAAO,OAAO,CAAC,KAAK,CAAC;AACvB,gBAAA,CAAC;AACD,gBAAA,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;AAClD,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO;YACxB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;YACxB,GAAG,CAAC,MAAM,EAAE,GAAW,EAAA;;AAErB,gBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACnD,oBAAA,IAAK,MAAc,CAAC,GAAG,CAAC,EAAE;AACxB,wBAAA,OAAQ,MAAc,CAAC,GAAG,CAAC;oBAC7B;;AAEA,oBAAA,MAAM,OAAO,GAAQ,MAAK,EAAG,CAAC;AAC9B,oBAAA,OAAO,CAAC,cAAc,GAAG,MAAM,EAAE;AACjC,oBAAA,OAAO,OAAO;gBAChB;AACA,gBAAA,OAAQ,MAAc,CAAC,GAAG,CAAC;YAC7B;AACD,SAAA,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtB;;ACjHM,SAAU,mBAAmB,CAAC,EAAU,EAAA;;;;;;AAM5C,IAAA,MAAM,OAAO,GAAGD,YAAM,CAAM,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACrE,IAAA,MAAM,KAAK,GAAGA,YAAM,CAAM,EAAE,CAAC;AAC7B,IAAA,MAAM,IAAI,GAAGA,YAAM,CAAM,EAAE,CAAC;AAC5B,IAAA,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGD,cAAQ,CAAC;AAC3C,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,UAAU,EAAE;AACb,KAAA,CAAC;IAEF,MAAM,UAAU,GAAGC,YAAM,CAAC;AACxB,QAAA,MAAM,EAAE;AACN,YAAA,EAAE;AACH,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,KAAK,EAAE,KAAK;AACb,SAAA;AACD,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC,OAAO;AAEV,IAAA,OAAOC,aAAO,CAAC,OAAO;QACpB,OAAO;QACP,KAAK;QACL,IAAI;QACJ,UAAU;QACV,UAAU;QACV;AACD,KAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AACnB;;AC5DO,MAAM,aAAa,GAAG,CAAC,MAAM,KAAK;AACzC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM;AACtC,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AACnC,EAAE,IAAI,OAAO,GAAG,IAAI;AACpB,EAAE,IAAI,SAAS,GAAG,KAAK;AACvB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;AACtC,IAAI,IAAI;AACR,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,SAAS,GAAG,IAAI;AACtB,MAAM;AACN,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK;AACpC,EAAE;AACF;;AAEO,MAAM,aAAa,GAAG,CAAC,MAAM,KAAK;AACzC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM;AAC/B,EAAE,IAAI,OAAO,GAAG,IAAI;AACpB,EAAE,IAAI,SAAS,GAAG,KAAK;AACvB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,IAAI,IAAI;AACR,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,SAAS,GAAG,IAAI;AACtB,MAAM;AACN,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,OAAO,OAAO;AAClB,EAAE;;AAEF,EAAE,OAAO,SAAS;AAClB;;AChCA;AACA;AACA;AACA;AACO,MAAM,wBAAwB,GAAG,CAAC,KAAK,KAAK;AACnD,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B;;AAEA;AACY,MAAC,cAAc,GAAG,CAAC,EAAE,EAAE,OAAO,KAAK;AAC/C,EAAE,IAAI;;AAEN,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG;;AAEhC,EAAE,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;AAC/B,IAAI,wBAAwB,GAAG;AAC/B,MAAM,OAAO;AACb,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,YAAY,EAAE,IAAI;AAC1B;AACA,IAAI,CAAC;AACL,IAAI,OAAO,GAAG;AACd,MAAM,OAAO,KAAK,CAAC;AACnB,IAAI,CAAC;AACL,IAAI,GAAG,GAAG;AACV,MAAM,OAAO,CAAC,KAAK,KAAK;AACxB;AACA,QAAQ,UAAU,GAAG;AACrB,MAAM;AACN,IAAI;AACJ,GAAG;;AAEH,EAAE,MAAM,IAAI,GAAG;;AAEf,EAAE,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;AAChC,IAAI,wBAAwB,GAAG;AAC/B,MAAM,OAAO;AACb,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,YAAY,EAAE,IAAI;AAC1B;AACA,IAAI,CAAC;AACL,IAAI,OAAO,GAAG;AACd,MAAM,OAAO,KAAK,CAAC;AACnB,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,KAAK;AACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAClB,WAAW,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,KAAK;AACvH,MAAM;AACN,IAAI;AACJ,GAAG;;AAEH,EAAE,EAAE,CAAC;AACL,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI;AACpB,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,GAAG,EAAE,UAAU,EAAE;AACrB,GAAG;;AAEH,EAAE,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3C,MAAM,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,MAAM,KAAK;;AAEX,EAAE,MAAM,UAAU,GAAG,IAAI,KAAK;AAC9B,IAAI,EAAE;AACN,IAAI;AACJ,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;AAClB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AACnH,MAAM,CAAC;AACP,KAAK;AACL;;AAEA,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK;AAC3B,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB;AACA,MAAM,IAAI,kBAAkB,EAAE;AAC9B;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,IAAI,QAAQ,GAAG,EAAE;AACzB,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AACvC,UAAU,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AAC1C,YAAY,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AAChD,cAAc,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7G,cAAc,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG;AAC9C,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE;AAC3D,gBAAgB,0BAA0B,CAAC;AAC3C,kBAAkB,KAAK,EAAE,UAAU;AACnC,kBAAkB,KAAK,EAAE,QAAQ;AACjC,kBAAkB,IAAI;AACtB,kBAAkB,KAAK,EAAE,KAAK,CAAC;AAC/B,iBAAiB;AACjB;AACA,gBAAgB,QAAQ,GAAG;AAC3B,cAAc;AACd,YAAY,CAAC;AACb,UAAU,CAAC,MAAM;AACjB,YAAY,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3G,YAAY,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG;;AAE5C,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE;AACzD,cAAc,0BAA0B,CAAC;AACzC,gBAAgB,KAAK,EAAE,UAAU;AACjC,gBAAgB,KAAK,EAAE,QAAQ;AAC/B,gBAAgB,IAAI;AACpB,gBAAgB,KAAK,EAAE,KAAK,CAAC;AAC7B,eAAe;AACf;AACA,cAAc,QAAQ,GAAG;AACzB,YAAY;AACZ,UAAU;AACV,QAAQ,CAAC;AACT,MAAM,CAAC,MAAM;AACb;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC;AAC5B,QAAQ,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AACxC,UAAU,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AAC9C,YAAY,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACvG,YAAY,0BAA0B,CAAC;AACvC,cAAc,KAAK,EAAE,UAAU;AAC/B,cAAc,KAAK;AACnB,cAAc,IAAI;AAClB,cAAc,KAAK,EAAE,KAAK,CAAC;AAC3B,aAAa;AACb,UAAU,CAAC;AACX,QAAQ,CAAC,MAAM;AACf,UAAU,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACrG,UAAU,0BAA0B,CAAC;AACrC,YAAY,KAAK,EAAE,UAAU;AAC7B,YAAY,KAAK;AACjB,YAAY,IAAI;AAChB,YAAY,KAAK,EAAE,KAAK,CAAC;AACzB,WAAW;AACX,QAAQ;AACR,MAAM;AACN,IAAI;;AAEJ,IAAI,OAAO,UAAU;AACrB,EAAE;;AAEF,EAAE,OAAO,GAAG;AACZ;;AC7IA;AACY,MAAC,cAAc,GAAG,CAAC,GAAG,IAAI,KAAK;AAC3C,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,GAAG;AACxC,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC;AAC1B,EAAE,MAAM,KAAK,GAAG,IAAI,OAAO;AAC3B,EAAE,IAAI,eAAe,EAAE;AACvB,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS;AACjC,EAAE;AACF,EAAE,MAAM,GAAG,GAAG;AACd,IAAI,KAAK;AACT,IAAI,YAAY,EAAE,IAAI,GAAG,EAAE;;AAE3B;AACA,IAAI,YAAY,EAAE,IAAI,GAAG,EAAE;AAC3B;AACA,IAAI,eAAe,EAAE,IAAI,GAAG,EAAE;AAC9B;;AAEA,EAAE,MAAM,QAAQ,GAAG;AACnB;AACA,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE;AACrB,MAAM,MAAM,SAAS,GAAG,IAAI,OAAO;AACnC,MAAM,MAAM,IAAI,GAAG,MAAM;AACzB,QAAQ,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,GAAG,aAAa,CAAC;AACrD,UAAU,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;AACxC,UAAU,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;AAC9B,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;AACrC,MAAM;AACN,MAAM,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AACtC,QAAQ,KAAK,CAAC,iBAAiB,CAAC,CAAC,MAAM;AACvC,UAAU,IAAI;AACd,QAAQ,CAAC;AACT,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI;AACZ,MAAM;AACN,MAAM,OAAO;AACb,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE;AACrB,MAAM,MAAM,SAAS,GAAG,IAAI,OAAO;AACnC,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK;AACrC,QAAQ,IAAI,IAAI,EAAE;AAClB,UAAU,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa;AACjD,UAAU,IAAI,OAAO,EAAE;AACvB,YAAY,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE;AAC1C,UAAU;AACV,UAAU,aAAa,CAAC;AACxB,YAAY,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;AAC1C,YAAY,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,YAAY,KAAK,EAAE;AACnB,WAAW;;AAEX,UAAU,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa;AACzC,QAAQ;;AAER,QAAQ,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,KAAK;AAC5C,QAAQ,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK;AAClD,UAAU,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,KAAK;AAChD,QAAQ,CAAC;AACT,QAAQ,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,KAAK;AAC5C,MAAM;AACN,MAAM,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AACtC,QAAQ,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AACnD,UAAU,IAAI,CAAC,KAAK,EAAE,KAAK;AAC3B,QAAQ,CAAC;AACT,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,CAAC,KAAK;AAClB,MAAM;AACN,MAAM,OAAO;AACb,IAAI,CAAC;AACL;AACA,IAAI,KAAK,CAAC,KAAK,EAAE;AACjB,MAAM,MAAM,SAAS,GAAG,IAAI,OAAO;AACnC,MAAM,MAAM,IAAI,GAAG,MAAM;AACzB,QAAQ,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS;AACzC,QAAQ,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK;AAClD,UAAU,WAAW,CAAC,YAAY,CAAC,CAAC,SAAS;AAC7C,QAAQ,CAAC;AACT,QAAQ,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS;AACzC,MAAM;AACN,MAAM,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AACtC,QAAQ,KAAK,CAAC,iBAAiB,CAAC,CAAC,MAAM;AACvC,UAAU,IAAI;AACd,QAAQ,CAAC;AACT,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI;AACZ,MAAM;AACN,MAAM,OAAO;AACb,IAAI,CAAC;AACL;AACA,IAAI,OAAO,GAAG;AACd,MAAM,MAAM,WAAW,GAAG,IAAI,OAAO,EAAE;AACvC,MAAM,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;;AAEvC,MAAM,MAAM,MAAM,GAAG;AACrB,QAAQ,OAAO,GAAG;AAClB,UAAU,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW;AAC7C,QAAQ,CAAC;AACT,QAAQ,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE;AAClC,UAAU,WAAW,CAAC,iBAAiB,CAAC,CAAC,IAAI;AAC7C,QAAQ;AACR;;AAUA,MAAM,OAAO;AACb,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrC,QAAQ,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE;AAC1C,MAAM;AACN,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;AAC/C,MAAM,SAAS,CAAC,GAAG,CAAC,QAAQ;AAC5B;AACA,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;AACvC,IAAI,CAAC;AACL,IAAI,GAAG,GAAG;AACV,MAAM,OAAO;AACb,QAAQ,QAAQ,CAAC,KAAK,EAAE;AACxB,UAAU,QAAQ,CAAC,GAAG,CAAC,KAAK;AAC5B,QAAQ,CAAC;AACT,QAAQ,QAAQ,GAAG;AACnB,UAAU,OAAO,GAAG,CAAC,KAAK,CAAC,aAAa;AACxC,QAAQ;AACR;AACA,IAAI,CAAC;AACL,IAAI,cAAc,CAAC,MAAM,EAAE;AAC3B,MAAM,MAAM,WAAW,GAAG,IAAI,OAAO;AACrC;AACA,MAAM,MAAM,CAAC,WAAW;;AAExB,MAAM,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW;AACtC,MAAM,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW;;AAEjD,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AACrC;AACA,QAAQ,WAAW,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;AAC1D,MAAM;AACN,IAAI,CAAC;AACL,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC7B,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM;AACxD,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW;AACzC,MAAM,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM;AACvC,IAAI,CAAC;AACL;AACA,IAAI,OAAO,GAAG;AACd,MAAM,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI;AAC9B,IAAI,CAAC;AACL,IAAI,QAAQ,GAAG;AACf,MAAM,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK;AAC/B,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,MAAM,MAAM,SAAS,GAAG,IAAI,OAAO;;AAEnC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE;AACnD,QAAQ,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK;AAChC,UAAU,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK;AAClE,UAAU,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,UAAU;AAC5C,UAAU,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK;AACpD,YAAY,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK;AAC3C,UAAU,CAAC;AACX,UAAU,SAAS,CAAC,YAAY,CAAC,CAAC,UAAU;AAC5C,QAAQ;AACR,QAAQ,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AACxC,UAAU,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AAC9C,YAAY,IAAI,CAAC,KAAK;AACtB,UAAU,CAAC;AACX,QAAQ,CAAC,MAAM;AACf,UAAU,IAAI,CAAC,KAAK;AACpB,QAAQ;AACR,MAAM;;AAEN,MAAM,OAAO;AACb,IAAI;AACJ;;AAEA,EAAE,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;AACvB,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;AAChB,MAAM,OAAO,QAAQ,CAAC,GAAG;AACzB,IAAI;AACJ,GAAG;AACH;;AC/KA;AACY,MAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,KAAK;AACtC,EAAE,MAAM,KAAK,GAAG,IAAI,OAAO;;AAE3B,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AAChC,IAAI,IAAI,OAAO,GAAG,iBAAiB,CAAC,EAAE;AACtC,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AAC5C,QAAQ,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK;AACjC,MAAM,CAAC;AACP,IAAI,CAAC,MAAM;AACX,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO;AACjC,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,OAAO;AACT;;AAyRA;AACO,MAAM,cAAc,GAAG,MAAM;AACpC,EAAE,OAAO,IAAI,KAAK,CAAC;AACnB,IAAI,MAAM,EAAE,IAAI,OAAO,EAAE;AACzB,IAAI,MAAM,EAAE,IAAI,OAAO,EAAE;AACzB,IAAI,KAAK,EAAE,IAAI,OAAO,EAAE;AACxB,IAAI,KAAK,EAAE,IAAI,OAAO,EAAE;AACxB,GAAG,EAAE;AACL,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE;AACrB,MAAM,OAAO,MAAM,CAAC,GAAG;AACvB,IAAI;AACJ,GAAG;AACH;;AAEO,MAAM,IAAI,CAAC;AAClB,EAAE;;AAEF,EAAE,WAAW,CAAC,SAAS,EAAE;AACzB,IAAI,IAAI,CAAC,SAAS,GAAG;AACrB,EAAE;;AAEF;AACA,EAAE,SAAS,CAAC,IAAI,EAAE;AAClB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI;AAChD,IAAI,MAAM,OAAO,GAAG,IAAI,OAAO;AAC/B,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,KAAK;AACvC,IAAI,OAAO;AACX,EAAE;;AAEF;AACA,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AACpB,IAAI,MAAM,UAAU,GAAG,cAAc;;AAErC,IAAI,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AACpC,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AAC1C,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;AACvD,MAAM,CAAC;AACP,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;AACrD,IAAI;;AAEJ,IAAI,OAAO;AACX,EAAE;;AAEF;AACA,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;AACvB,IAAI,MAAM,UAAU,GAAG,cAAc;;AAErC,IAAI,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AACpC,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AAC1C,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;AAC1D,MAAM,CAAC;AACP,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;AACxD,IAAI;;AAEJ,IAAI,OAAO;AACX,EAAE;;AAEF;AACA,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AACtB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI;;AAEhD,IAAI,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AACpC,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AAC1C,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG;AAC1B,QAAQ,UAAU,CAAC,MAAM;AACzB,UAAU,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK;AACtD,QAAQ,CAAC,EAAE,GAAG;AACd,MAAM,CAAC;AACP,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG;AACxB,MAAM,UAAU,CAAC,MAAM;AACvB,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK;AACpD,MAAM,CAAC,EAAE,GAAG;AACZ,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AACtB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI;AAChD,IAAI,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AACpC,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AAC1C,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG;AAC1B,QAAQ,UAAU,CAAC,MAAM;AACzB,UAAU,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK;AACtD,QAAQ,CAAC,EAAE,GAAG;AACd,MAAM,CAAC;AACP,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG;AACxB,MAAM,UAAU,CAAC,MAAM;AACvB,QAAQ,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK;AACpD,MAAM,CAAC,EAAE,GAAG;AACZ,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;AACrB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI;AAChD,IAAI,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AACpC,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AAC1C,QAAQ,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK;AACnD,MAAM,CAAC;AACP,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK;AACjD,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;AACrB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI;AAChD,IAAI,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AACpC,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AAC1C,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG;AAC1B,QAAQ,UAAU,CAAC,MAAM;AACzB,UAAU,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK;AACrD,QAAQ,CAAC,EAAE,GAAG;AACd,MAAM,CAAC;AACP,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG;AACxB,MAAM,UAAU,CAAC,MAAM;AACvB,QAAQ,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK;AACnD,MAAM,CAAC,EAAE,GAAG;AACZ,IAAI;AACJ,EAAE;AACF;;AAqCA;AACY,MAAC,QAAQ,GAAG,CAAC,EAAE,KAAK;AAChC,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,KAAK;AAC7B,IAAI,MAAM,OAAO,GAAG;;AAEpB,IAAI,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;AAChC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE;AAClB,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,EAAE;AAC5D,MAAM;AACN,KAAK;;AAEL,IAAI,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK;AAC5B,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI;AACnC,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACtD,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC7B,YAAY,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO;AACtC,UAAU;AACV,UAAU,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AAC1C,YAAY,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AAChD,cAAc,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK;AAC9C,YAAY,CAAC;AACb,UAAU,CAAC,MAAM;AACjB,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK;AAC5C,UAAU;AACV,QAAQ,CAAC;AACT,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,KAAK,GAAG,iBAAiB,CAAC,EAAE;AACpC,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK;AAC1C,QAAQ,IAAI,CAAC,KAAK;AAClB,MAAM,CAAC;AACP,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,KAAK;AAChB,IAAI;;AAEJ,IAAI,OAAO;AACX,EAAE;AACF;;AClgBA;AAIA;;;AAGG;AACH,MAAM,UAAU,CAAA;AAAhB,IAAA,WAAA,GAAA;QACU,IAAA,CAAA,YAAY,GAAwB,EAAE;IA2ChD;AAzCE,IAAA,SAAS,CAAC,IAAY,EAAA;;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAC1C,IAAI,MAAM,GAAG,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,KAAI,EAAE;;AAG1C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YAC3C,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;QAC5C;AAEA,QAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;IAC1B;AAEA,IAAA,IAAI,CAAC,IAAY,EAAE,EAAE,KAAK,EAAO,EAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,CAAA,OAAA,EAAU,IAAI,QAAQ;AAClC,QAAA,MAAM,OAAO,GAAG,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;QAEtE,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO;QACnC;QAEA,IAAI,CAAC,UAAU,CAAC;AACd,YAAA,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,EAAG,OAAO,GAAG,CAAA,MAAA,EAAS,OAAO,CAAA,CAAE,GAAG,EAAE,CAAA;AAChD,SAAA,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,IAAY,EAAE,EAAE,KAAK,EAAO,EAAA;AAClC,QAAA,MAAM,GAAG,GAAG,CAAA,OAAA,EAAU,IAAI,QAAQ;AAClC,QAAA,MAAM,OAAO,GAAG,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;QAEtE,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO;QACnC;QAEA,IAAI,CAAC,UAAU,CAAC;AACd,YAAA,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,EAAG,OAAO,GAAG,CAAA,MAAA,EAAS,OAAO,CAAA,CAAE,GAAG,EAAE,CAAA;AAChD,SAAA,CAAC;IACJ;IAEA,GAAG,GAAA;QACD,IAAI,CAAC,YAAY,EAAE;IACrB;AACD;AAEM,MAAM,MAAM,GAAG,IAAI,UAAU;MACvB,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM;;ACnDzC,MAAM,UAAU,GAAGC,mBAAa,CAA8B,SAAS,CAAC;AACxE,MAAM,WAAW,GAAGA,mBAAa,CAAM,IAAI,CAAC;SAE5B,aAAa,GAAA;AAC3B,IAAA,MAAM,OAAO,GAAGC,gBAAU,CAAC,UAAU,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC;IAC5E;AACA,IAAA,OAAO,OAAO;AAChB;SAEgB,aAAa,GAAA;AAC3B,IAAA,OAAOA,gBAAU,CAAC,WAAW,CAAC;AAChC;AAEO,MAAM,YAAY,GAAG,WAAW,CAAC;;ACHxC,SAAS,gBAAgB,CAAC,KAKzB,EAAA;;AACC,IAAA,MAAM,UAAU,GAAG,aAAa,EAAO;IACvC,MAAM,YAAY,GAChB,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAW,MAAK,SAAS,KAAI,CAAA,EAAA,GAAA,UAAU,aAAV,UAAU,KAAA,MAAA,GAAA,MAAA,GAAV,UAAU,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAW;AACxE,UAAE,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW;AACvE,UAAE,KAAK,CAAC,MAAM;AAElB,IAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM;IAC7B,MAAM,OAAO,GAAG,QAAQ,GAAGC,cAAA,CAAC,QAAQ,EAAA,EAAA,IAAM,YAAY,IAAI,EAAE,CAAC,EAAA,CAAI,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;AAE1F,IAAA,OAAOA,eAAC,YAAY,EAAA,EAAC,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,EAAA,QAAA,EAAG,OAAO,GAAgB;AAChG;AAEA,SAAS,kBAAkB,CAAC,KAAa,EAAA;IACvC,MAAM,WAAW,GAAwB,EAAE;AAC3C,IAAA,OAAO,IAAI,KAAK,CACd,EAAE,EACF;AACE,QAAA,GAAG,EAAE,CAAC,EAAE,EAAE,GAAW,KAAI;YACvB,OAAO,CAAC,GAAQ,KAAI;AAClB,gBAAA,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AAC7B,oBAAA,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG;oBACtB;gBACF;AACA,gBAAA,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC;AAChC,gBAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AACjC,oBAAA,OAAO,0BAA0B,CAAC;AAChC,wBAAA,KAAK,EAAE,OAAO;AACd,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,IAAI,EAAE,EAAE;wBACR,KAAK;AACN,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC;QACH,CAAC;AACF,KAAA,CACF;AACH;AAEA;;;;AAIG;AACG,SAAU,gBAAgB,CAAC,QAAa,EAAE,EAAU,EAAA;AACxD,IAAA,MAAM,YAAY,GAAGJ,YAAM,CAA4B,EAAE,CAAC;IAE1D,OAAOC,aAAO,CAAC,MAAK;AAClB,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE;QACxB,MAAM,SAAS,GAAc,EAAE;AAE/B,QAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAM,KAAI;AAC3D,YAAA,MAAM,KAAK,GACT,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7B,iBAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG;oBAC/B,MAAM,EAAE,kBAAkB,CAAC,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,OAAO,SAAS,CAAC;oBACrD,OAAO,EAAE,kBAAkB,CAAC,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,OAAO,UAAU,CAAC;oBACvD,OAAO,EAAE,kBAAkB,CAAC,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,OAAO,UAAU,CAAC;AACvD,oBAAA,cAAc,EAAE,EAAE;AAClB,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,MAAM,EAAE,CAAC,MAAY,KAAI;;;AACvB,wBAAA,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO;;AAEvB,wBAAA,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,WAAW,0CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,EAAE;wBAE/F,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC/C,4BAAA,QACEG,cAAA,CAAC,gBAAgB,EAAA,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAA,CAAI;wBAEjE;AAEA,wBAAA,MAAM,OAAO,GAAG,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,OAAO,CAAA,EAAA,EAAK,MAAM,CAAC,QAAQ,CAAC,CAAA,CAAE;wBACvD,MAAM,aAAa,IACjB,CAAA,EAAA,GAAC,KAAK,CAAC,cAAe,EAAC,OAAO,CAAA,KAAA,EAAA,CAAP,OAAO,CAAA,GAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAA,CAAC;AACjF,wBAAA,QACEA,cAAA,CAAC,YAAY,IAAC,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,YACvCA,cAAA,CAAC,wBAAwB,IAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,YAChEA,cAAA,CAAC,gBAAgB,IAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAI,EAAA,CACpC,EAAA,CACd;oBAEnB,CAAC;AACF,iBAAA,CAAC;YAEJ,KAAK,CAAC,OAAO,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,MAAM;YAC/B,SAAS,CAAC,OAAO,CAAC,GAAG;AACnB,gBAAA,IAAI,OAAO,IAAI,EAAE,CAAC;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACpB;AAEM,SAAU,wBAAwB,CAAC,KAIxC,EAAA;AACC,IAAA,MAAM,MAAM,GAAG,aAAa,EAAE;AAC9B,IAAA,MAAM,KAAK,GAAGH,aAAO,CAAC,MAAK;;;QAGzB,OAAO;AACL,YAAA,GAAG,MAAM;AACT,YAAA,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO;YACxC,QAAQ,EAAE,KAAK,CAAC,OAAO;SACjB;AACV,IAAA,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAE1C,IAAA,OAAOG,cAAA,CAAC,UAAU,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,KAAK,EAAA,QAAA,EAAG,KAAK,CAAC,QAAQ,GAAuB;AAClF;AAEA;AACM,SAAU,qBAAqB,CAAC,cAAmB,EAAA;AACvD,IAAA,MAAM,iBAAiB,GAAG,aAAa,EAAE;AACzC,IAAA,OAAO,cAAc,KAAA,IAAA,IAAd,cAAc,cAAd,cAAc,GAAI,iBAAiB;AAC5C;;AC1HO,MAAM,OAAO,GAA2B,CAAC,KAAK,KAAI;;IACvD,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK;IAChF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE;AAC/C,IAAA,MAAM,GAAG,GAAG,UAAU,CAAC;AAEvB,IAAA,MAAM,OAAO,GAAI,SAAiB,CAAC,OAAO;IAC1C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAGL,cAAQ,CAAC,IAAI,CAAC;IACtC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGA,cAAQ,CAAC,EAAE,CAAC;;IAIpD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;;AAGlC,IAAA,MAAM,QAAQ,GAAG;AACf,QAAA,SAAS,EAAE,CAAC,KAAU,KAAI;AACxB,YAAA,eAAe,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;AACD,QAAA,QAAQ,EAAE,CAAC,IAAY,EAAE,KAAU,KAAI;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAC7B,IAAI,OAAO,GAAG,KAAK;AACnB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACzC,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;gBAC9C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B;AACA,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK;QAC1C;KACD;IAED,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AACtB,YAAA,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;AACzB,YAAA,IAAI,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC;AAC1B,YAAA,UAAU,EAAE,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;AAC3C,SAAA,CAAC;IACJ;;IAGA,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC;AAEvD,IAAA,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE,GAAG,IAAW;AACjF,IAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,cAAc,CAAC;;AAGxD,IAAA,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE;QAC1C,EAAE;AACF,QAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;QACtB;AACD,KAAA,CAAC;;IAGF,IAAI,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,EAAE;QAC9B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,UAAU;IAC3C;;AAGA,IAAA,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,UAAU;IAEhC,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC;AAEpD,IAAA,MAAM,GAAG,IACPK,eAAC,SAAS,EAAA,EAAA,GACJ,SAAS,EACb,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,KAAK,EACX,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,KAAK,EAAA,CACZ,CACH;;IAGD,IAAI,CAAA,EAAA,GAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,MAAA,GAAA,MAAA,GAAV,UAAU,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,EAAE;AAChC,QAAA,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;YAChC,EAAE;AACF,YAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YACtB,GAAG;YACH,GAAG,EAAG,SAAiB,CAAC,GAAG;AAC3B,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,OAAO,EAAE,UAAU;YACnB;AACD,SAAA,CAAC;IACJ;AAEA,IAAA,QACE,IAAI,IAAI,OAAO,IACbA,cAAA,CAACC,eAAI,EAAA,EAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,YAAY,EAAE,EAAA,QAAA,EAC7D,GAAG,EAAA,CACC,IACL,IAAI;AAEZ;MAEa,WAAW,GAAG,CAAC,EAAU,EAAE,SAAmC,KAAI;IAC7E,OAAO,SAAS,gBAAgB,CAAC,KAAU,EAAA;AACzC,QAAA,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,CAAC;AAC5C,QAAA,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY;AACtC,QAAA,MAAM,OAAO,GAAI,SAAiB,CAAC,OAAO;;QAG1CC,eAAS,CAAC,MAAK;AACb,YAAA,OAAO,oBAAoB,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9D,QAAA,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;;QAGnBC,kBAAa,CAAC,MAAK;AACjB,YAAA,IAAI,OAAO;gBAAE;AACb,YAAA,sBAAsB,EAAE;AAC1B,QAAA,CAAC,CAAC;AAEF,QAAA,QACEH,cAAA,CAAC,UAAU,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,EAAA,QAAA,EACtCA,eAAC,SAAS,EAAA,EAAA,GAAK,KAAK,EAAA,CAAI,EAAA,CACJ;AAE1B,IAAA,CAAC;AACH;;MCnIa,aAAa,GAAiC,CAAC,EAAE,QAAQ,EAAE,KAAI;AAC1E,IAAA,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE;IAEtC,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI;AAChE,UAAE,QAAQ,CAAC,UAAU,CAAC,IAAI;UACxB,IAAI;AAER,IAAA,IAAI,CAAC,WAAW;QAAE,OAAOA,cAAA,CAACC,eAAI,EAAA,EAAA,CAAQ;IAEtC,QACED,eAACC,eAAI,EAAA,EACH,SAAS,EAAC,wBAAwB,EAClC,KAAK,EAAE;AACL,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,aAAa,EAAE,MAAM;SACtB,EAAA,QAAA,EAEDD,cAAA,CAACC,eAAI,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,QAAA,EAC5CD,cAAA,CAAC,WAAW,EAAA,EAAA,CAAG,EAAA,CACV,EAAA,CACF;AAEX;;ACjCA;;;AAGG;AACH,MAAM,UAAU,CAAA;AAAhB,IAAA,WAAA,GAAA;QACU,IAAA,CAAA,WAAW,GAAQ,IAAI;AACvB,QAAA,IAAA,CAAA,SAAS,GAA8B,IAAI,GAAG,EAAE;IAwD1D;;AArDE,IAAA,SAAS,CAAC,QAA8B,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAE5B,QAAA,OAAO,MAAK;AACV,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,CAAC;IACH;IAEQ,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KACvB,CAAC,CACC,IAAI,CAAC,WAAW,IAAI;AAClB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CACF,CACF;IACH;;AAGA,IAAA,SAAS,CAAC,IAAY,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,EAAE;YACtD,OAAO;AACL,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;AAC7B,gBAAA,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU;aACxC;QACH;AACA,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;IACxB;;IAGA,aAAa,GAAA;;AACX,QAAA,OAAO,MAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI;IAC/B;;AAGA,IAAA,IAAI,CAAC,IAAY,EAAE,EAAE,KAAK,EAAE,UAAU,EAAO,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;QAC7D,IAAI,CAAC,MAAM,EAAE;IACf;;IAGA,OAAO,CAAC,IAAY,EAAE,MAAW,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;IACzB;;IAGA,GAAG,GAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,MAAM,EAAE;IACf;AACD;AAED,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE;AAEnC;;AAEG;AACI,MAAM,oBAAoB,GAAG,CAAC,QAA8B,KAAI;AACrE,IAAA,OAAO,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;AACvC;AAEA;MACa,WAAW,GAAG,IAAI,IAAI,CAAC,UAAU;AAE9C;;;AAGG;AACI,MAAM,sBAAsB,GAAG,MAAK;AACzC,IAAA,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,EAAE;AACvC,IAAA,IAAI,CAAC,IAAI;QAAE;;AAEX,IAAA,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;AACzB;;AC7DA,iBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,SAAS,uDAAG,CAAC,GAAsB,KAAI;AAC5C,QAAA,IAAI;;AAEF,YAAA,MAAM,WAAW,GAAQ;gBACvB,KAAK,EAAE,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,KAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AACrE,gBAAA,QAAQ,EAAE,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,KAAI,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,QAAQ,CAAA,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;AACjG,gBAAA,IAAI,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,MAAK,SAAS,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK;aACzF;;AAGD,YAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,KAAI,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,CAAA,EAAE;AACxC,gBAAA,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;YAC7B;AAAO,iBAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACpB,gBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;YAC9B;;AAGA,YAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,KAAI,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,CAAA,EAAE;AACzC,gBAAA,WAAW,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;YAC/B;AAAO,iBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACrB,gBAAA,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;YAChC;AAEA,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;;YAG3B,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC;AAEvD,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,QAAQ,CAAC;YACjD;iBAAO;AACL,gBAAA,aAAa,EAAE;YACjB;QACF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC;QACtC;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;AC9CD,kBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,uDAAG,CAAC,GAAmB,KAAI;;AACpC,QAAA,IAAI;AACF,YAAA,MAAM,UAAU,GAAG;AACjB,gBAAA,cAAc,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,cAAc,mCAAI,KAAK;AACnE,gBAAA,QAAQ,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,KAAA,IAAA,IAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;AACjE,gBAAA,OAAO,EAAE,CAAC,GAAQ,KAAI;oBACpB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;gBACtC,CAAC;AACD,gBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;oBACjB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;gBACtC,CAAC;aACF;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC3B;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;AAC7B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,MAAM,CAAC;QAC1C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACvBD,kBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,UAAU,uDAAG,CAAC,GAAa,KAAI;AACpC,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,GAAG,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,GAAG,KAAI,IAAI,CAAC,GAAG;YAChC,MAAM,KAAK,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,MAAK,SAAS,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;YAC/D,MAAM,OAAO,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,MAAK,SAAS,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK;YAEvE,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC7B;YACF;AAEA,YAAA,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;YAE7B,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/B,gBAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;YAC3B;iBAAO;gBACL,IAAI,CAAC,UAAU,CAAC;oBACd,GAAG;AACH,oBAAA,IAAI,EAAE,KAAK;oBACX,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;AACxC,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC;AACxD,iBAAA,CAAC;YACJ;QACF;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;AACjC,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,UAAU,CAAC;QAC9C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACnCD,kBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,UAAU,uDAAG,CAAC,GAAa,KAAI;AACpC,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,GAAG,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,GAAG,KAAI,IAAI,CAAC,GAAG;YAChC,MAAM,OAAO,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,MAAK,SAAS,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK;YAEvE,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC7B;YACF;YAEA,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI;oBACF,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;oBACtC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;gBACnC;gBAAE,OAAO,KAAU,EAAE;AACnB,oBAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,OAAO,KAAI,UAAU,CAAC;gBAC9C;YACF;iBAAO;gBACL,IAAI,CAAC,UAAU,CAAC;oBACd,GAAG;AACH,oBAAA,OAAO,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7D,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC;AACxD,iBAAA,CAAC;YACJ;QACF;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;AACjC,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,UAAU,CAAC;QAC9C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;AClCD,qBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,uDAAG,CAAC,GAAa,KAAI;AACvC,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,GAAG,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,GAAG,KAAI,IAAI,CAAC,GAAG;YAChC,MAAM,OAAO,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,MAAK,SAAS,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK;YAEvE,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC7B;YACF;YAEA,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI;AACF,oBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;AAC3B,oBAAA,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;gBAC5B;gBAAE,OAAO,KAAU,EAAE;AACnB,oBAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,OAAO,KAAI,UAAU,CAAC;gBAC9C;YACF;iBAAO;gBACL,IAAI,CAAC,aAAa,CAAC;oBACjB,GAAG;oBACH,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;AACzC,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC;AACxD,iBAAA,CAAC;YACJ;QACF;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;AACjC,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,UAAU,CAAC;QAC9C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACjCD,mBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,WAAW,uDAAG,CAAC,GAAa,KAAI;AACrC,QAAA,IAAI;AACF,YAAA,MAAM,cAAc,GAAG;AACrB,gBAAA,IAAI,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,KAAI,IAAI,CAAC,IAAI,IAAI,OAAO;gBACvC,QAAQ,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,MAAK,SAAS,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK;AAC7E,gBAAA,OAAO,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,KAAI,IAAI,CAAC,OAAO,IAAI,KAAK;AAC9C,gBAAA,OAAO,EAAE,CAAC,GAAQ,KAAI;AACpB,oBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;gBACxB,CAAC;AACD,gBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;oBACjB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC;gBAC1C,CAAC;aACF;AAED,YAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;QAClC;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;AACjC,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,UAAU,CAAC;QAC9C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;AC1BD,eAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,uDAAG,CAAC,GAAa,KAAI;AACjC,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,KAAI,IAAI,CAAC,IAAI,IAAI,OAAO;AAE9C,YAAA,IAAI,IAAI,KAAK,MAAM,EAAE;gBACnB,IAAI,CAAC,WAAW,CAAC;oBACf,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;AACzC,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC;AACrD,iBAAA,CAAC;YACJ;iBAAO;gBACL,IAAI,CAAC,YAAY,CAAC;oBAChB,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;AACzC,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC;AACrD,iBAAA,CAAC;YACJ;QACF;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;AC1BD,iBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,SAAS,uDAAG,CAAC,GAAsB,KAAI;AAC5C,QAAA,IAAI;YACF,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,KAAI,IAAI,CAAC,WAAW;YAExF,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC1B;YACF;YAEA,IAAI,CAAC,aAAa,CAAC;gBACjB,WAAW;gBACX,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;AACjD,gBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;AACtD,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACtBD,kBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,UAAU,uDAAG,CAAC,GAAa,KAAI;AACpC,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,MAAM,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,MAAM,KAAI,IAAI,CAAC,MAAM,IAAI,MAAM;AAC5C,gBAAA,KAAK,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,KAAI,IAAI,CAAC,KAAK,IAAI,MAAM;AACzC,gBAAA,OAAO,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,KAAI,IAAI,CAAC,OAAO,IAAI,QAAQ;aAClD;;;;YAMD,IAAI,CAAC,WAAW,CAAC;AACf,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,CAAC,QAAQ,CAAC;AACtB,gBAAA,OAAO,EAAE,CAAC,GAAG,KAAI;oBACf,OAAO,CAAC,SAAS,CAAC;AAChB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,YAAY,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;AAClC,wBAAA,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;wBAC1B,MAAM;AACP,qBAAA,CAAC;gBACJ,CAAC;AACD,gBAAA,IAAI,EAAE,CAAC,GAAG,KAAI;;oBACZ,IAAI,CAAA,EAAA,GAAA,GAAG,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAClC,wBAAA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;oBAC1B;yBAAO;wBACL,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;oBACxC;gBACF,CAAC;AACF,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;AC1CD,eAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,uDAAG,CAAC,GAAsB,KAAI;AAC1C,QAAA,IAAI;YACF,MAAM,GAAG,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,GAAG,KAAI,IAAI,CAAC,GAAG;YAEhE,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC5B;YACF;;YAGA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC7B,gBAAA,OAAO,CAAC,MAAM,CAAC,oCAAoC,CAAC;gBACpD;YACF;YAEA,IAAI,CAAC,UAAU,CAAC;AACd,gBAAA,GAAG,EAAE,CAAA,yBAAA,EAA4B,kBAAkB,CAAC,GAAG,CAAC,CAAA,CAAE;gBAC1D,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;AACzC,gBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;AACtD,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;AC5BD,aAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,uDAAG,CAAC,GAAa,KAAI;AAC/B,QAAA,IAAI;AACF,YAAA,MAAM,SAAS,GAAG;AAChB,gBAAA,KAAK,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,KAAI,IAAI,CAAC,KAAK,IAAI,IAAI;AACvC,gBAAA,IAAI,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,KAAI,IAAI,CAAC,IAAI,IAAI,oBAAoB;AACpD,gBAAA,QAAQ,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,QAAQ,KAAI,IAAI,CAAC,QAAQ;aACzC;YAED,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,eAAe,EAAE,IAAI;gBACrB,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;AAC3C,gBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;AACpD,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;AAC7B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,MAAM,CAAC;QAC1C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;AC1BD,qBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,uDAAG,CAAC,GAAa,KAAI;AACvC,QAAA,IAAI;YACF,MAAM,OAAO,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,MAAK,SAAS,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK;YAEvE,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI;AACF,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC3C,oBAAA,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;gBAC/B;gBAAE,OAAO,KAAU,EAAE;AACnB,oBAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,OAAO,KAAI,UAAU,CAAC;gBAC9C;YACF;iBAAO;gBACL,IAAI,CAAC,aAAa,CAAC;oBACjB,OAAO,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;AACxC,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC;AACxD,iBAAA,CAAC;YACJ;QACF;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;AACjC,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,UAAU,CAAC;QAC9C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACtBD,iBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;;AAGxC,IAAA,MAAM,OAAO,GAAwB;AACnC,QAAA,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG;AACtB,QAAA,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG;AACtB,QAAA,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG;AACtB,QAAA,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG;AACtB,QAAA,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG;KACvB;;AAGD,IAAA,MAAM,UAAU,GAAwB;AACtC,QAAA,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK;AACzB,QAAA,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ;AAC/B,QAAA,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ;AAC/B,QAAA,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ;AAC/B,QAAA,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW;AACrC,QAAA,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS;KAClC;AAED,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,uDAAG,CAAC,GAAgC,KAAI;AACpD,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE;YAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,4BAA4B;YAC/D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE;AAC5B,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;AACpD,YAAA,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;YAElE,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC3B;YACF;AAEA,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAC7C,MAAM,OAAO,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS;YAE5D,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE;gBACrD,IAAI;gBACJ,OAAO;AACP,gBAAA,EAAE,EAAE,OAAO;AACZ,aAAA,CAAC;YAEF,OAAO,CAAC,gBAAgB,CAAC;AACvB,gBAAA,aAAa,EAAE,SAAS,CAAC,QAAQ,EAAE;AACnC,gBAAA,YAAY,EAAE,IAAI;AACnB,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;AAChC,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,SAAS,CAAC;QAC7C;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,uDAAG,CAAC,GAAyC,KAAI;AAC7D,QAAA,IAAI;AACF,YAAA,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,IAAI,EAAE;YAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,4BAA4B;YAC/D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE;AAC5B,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;AACpD,YAAA,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;YAElE,IAAI,CAAC,aAAa,EAAE;AAClB,gBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC3B;YACF;AAEA,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAC7C,MAAM,OAAO,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS;YAE5D,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE;gBAC9D,IAAI;gBACJ,OAAO;AACP,gBAAA,EAAE,EAAE,OAAO;AACZ,aAAA,CAAC;AAEF,YAAA,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAE3D,IAAI,CAAC,aAAa,EAAE;AAClB,gBAAA,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;gBACjC;YACF;YAEA,OAAO,CAAC,gBAAgB,CAAC;gBACvB,aAAa;gBACb,aAAa;AACd,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;AAChC,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,SAAS,CAAC;QAC7C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACzFD,aAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;IAExC,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAG,OAAO,GAAuB,KAAI;;AAC9C,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,GACP,OAAO,GAAG,KAAK;AACb,kBAAE,EAAE,OAAO,EAAE,GAAG;AAChB,mBAAG,GAAG,IAAI,EAAE,CAAC;AAEjB,YAAA,MAAM,WAAW,GAAQ;gBACvB,KAAK,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE;gBACpC,OAAO,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE;gBAC1C,UAAU,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI;gBACrD,UAAU,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI;gBACrD,WAAW,EAAE,MAAA,GAAG,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,WAAW;gBAChD,WAAW,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI;gBACxD,YAAY,EAAE,MAAA,GAAG,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,YAAY;aACpD;;AAGD,YAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS;AAAE,gBAAA,WAAW,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ;AAC9D,iBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;AAAE,gBAAA,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;YAE1E,MAAM,GAAG,GAAQ,MAAO,IAAY,CAAC,SAAS,CAAC,WAAW,CAAC;AAC3D,YAAA,IAAI,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO;AAAE,gBAAA,CAAA,EAAA,GAAA,OAAO,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAG,GAAG,CAAC;;AACrC,gBAAA,CAAA,EAAA,GAAA,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAG,GAAG,CAAC;QAC9B;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC;AACpC,YAAA,CAAA,EAAA,GAAA,OAAO,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAG,KAAK,CAAC;QAC3B;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACxCD,cAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,uDAAG,CAAC,GAAa,KAAI;AAChC,QAAA,IAAI;YACF,MAAM,KAAK,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,MAAK,SAAS,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAC/D,YAAA,MAAM,MAAM,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,MAAM,KAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;AACrD,YAAA,MAAM,OAAO,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,KAAI,IAAI,CAAC,OAAO,IAAI,EAAE;YAElD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,gBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;gBACzB;YACF;AAEA,YAAA,IAAI,MAAW;YAEf,QAAQ,MAAM;AACZ,gBAAA,KAAK,MAAM;AACT,oBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,wBAAA,IAAI;AACF,4BAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;wBAC5B;wBAAE,OAAO,KAAK,EAAE;AACd,4BAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;4BAC1B;wBACF;oBACF;yBAAO;wBACL,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBACzC;oBACA;AAEF,gBAAA,KAAK,QAAQ;AACX,oBAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;oBACtB;AAEF,gBAAA,KAAK,QAAQ;AACX,oBAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,oBAAA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AACd,wBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;wBAC3B;oBACF;oBACA,MAAM,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG;oBACvF;AAEF,gBAAA,KAAK,SAAS;AACZ,oBAAA,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;oBACvB;AAEF,gBAAA,KAAK,MAAM;AACT,oBAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;oBAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACzB,wBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;wBACzB;oBACF;AACA,oBAAA,IAAI,OAAO,CAAC,UAAU,EAAE;;AAEtB,wBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,wBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1D,wBAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACnD,wBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACtD,wBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1D,wBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;wBAE1D,MAAM,GAAG,OAAO,CAAC;AACd,6BAAA,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC/B,6BAAA,OAAO,CAAC,IAAI,EAAE,KAAK;AACnB,6BAAA,OAAO,CAAC,IAAI,EAAE,GAAG;AACjB,6BAAA,OAAO,CAAC,IAAI,EAAE,KAAK;AACnB,6BAAA,OAAO,CAAC,IAAI,EAAE,OAAO;AACrB,6BAAA,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;oBAC3B;yBAAO;AACL,wBAAA,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;oBAC7B;oBACA;AAEF,gBAAA,KAAK,QAAQ;AACX,oBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,wBAAA,IAAI;;4BAEF,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;wBAClD;AAAE,wBAAA,MAAM;;4BAEN,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;wBACpD;oBACF;yBAAO;AACL,wBAAA,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;wBACjC;oBACF;oBACA;AAEF,gBAAA,KAAK,WAAW;oBACd,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC1C;AAEF,gBAAA,KAAK,WAAW;AACd,oBAAA,IAAI;wBACF,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5C;oBAAE,OAAO,KAAK,EAAE;AACd,wBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;wBACzB;oBACF;oBACA;AAEF,gBAAA;AACE,oBAAA,OAAO,CAAC,MAAM,CAAC,aAAa,MAAM,CAAA,CAAE,CAAC;oBACrC;;YAGJ,OAAO,CAAC,SAAS,CAAC;gBAChB,KAAK;AACL,gBAAA,MAAM,EAAE,MAAM;gBACd,MAAM;gBACN,OAAO;AACR,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC9B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,OAAO,CAAC;QAC3C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACvHD,kBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,UAAU,uDAAG,CAAC,GAAa,KAAI;;AACpC,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,MAAM,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,MAAM,KAAI,IAAI,CAAC,MAAM,IAAI,SAAS;gBAC/C,QAAQ,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,MAAK,SAAS,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK;AAC7E,gBAAA,OAAO,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,KAAI,IAAI,CAAC,OAAO;gBACrC,UAAU,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,UAAU,MAAK,SAAS,GAAG,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AAC5E,gBAAA,WAAW,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,KAAI,IAAI,CAAC,WAAW;AACjD,gBAAA,MAAM,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,MAAM,KAAI,IAAI,CAAC,MAAM;aACnC;;YAGD,IAAI,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC,QAAQ,CAAC,EAAE;;gBAEvC,IAAI,CAAC,WAAW,CAAC;oBACf,KAAK,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC;AAC9B,oBAAA,UAAU,EAAE,MAAM,CAAC,OAAO,KAAK,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,KAAK,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;AACnH,oBAAA,OAAO,EAAE,CAAC,GAAG,KAAI;wBACf,OAAO,CAAC,SAAS,CAAC;AAChB,4BAAA,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,GAAG,CAAC,SAAS;4BACpB,aAAa,EAAE,GAAG,CAAC,aAAa;AACjC,yBAAA,CAAC;oBACJ,CAAC;AACD,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;AACtD,iBAAA,CAAC;YACJ;iBAAO,IAAI,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC,QAAQ,CAAC,EAAE;;gBAE9C,IAAI,CAAC,WAAW,CAAC;AACf,oBAAA,UAAU,EAAE,MAAM,CAAC,OAAO,KAAK,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,KAAK,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACnH,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;AACrB,oBAAA,OAAO,EAAE,CAAC,GAAG,KAAI;wBACf,OAAO,CAAC,SAAS,CAAC;AAChB,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,IAAI,EAAE,GAAG;AACV,yBAAA,CAAC;oBACJ,CAAC;AACD,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;AACtD,iBAAA,CAAC;YACJ;iBAAO,IAAI,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC,QAAQ,CAAC,EAAE;;AAE9C,gBAAA,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACnC;iBAAO;;AAEL,gBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBAC1B,IAAI,CAAC,iBAAiB,CAAC;wBACrB,KAAK,EAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC;AAC/B,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,OAAO,EAAE,CAAC,GAAG,KAAI;4BACf,OAAO,CAAC,SAAS,CAAC;AAChB,gCAAA,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,GAAG,CAAC,SAAS;AACrB,6BAAA,CAAC;wBACJ,CAAC;AACD,wBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;AACtD,qBAAA,CAAC;gBACJ;qBAAO;AACL,oBAAA,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC/B;YACF;QACF;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACxED,mBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,WAAW,uDAAG,CAAC,GAAa,KAAI;AACrC,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,SAAS,EAAE,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,SAAS,KAAI,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AACjE,gBAAA,UAAU,EAAE,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,UAAU,KAAI,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;AACrE,gBAAA,KAAK,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,KAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AACpC,gBAAA,QAAQ,EAAE,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,QAAQ,KAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC;AACtE,gBAAA,WAAW,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,KAAI,IAAI,CAAC,WAAW,IAAI,EAAE;AACvD,gBAAA,MAAM,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,MAAM,KAAI,IAAI,CAAC,MAAM;aACnC;YAED,IAAI,CAAC,WAAW,CAAC;AACf,gBAAA,GAAG,MAAM;AACT,gBAAA,OAAO,EAAE,CAAC,GAAG,KAAI;;oBACf,OAAO,CAAC,SAAS,CAAC;wBAChB,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,aAAa,EAAE,GAAG,CAAC,aAAa,KAAI,CAAA,EAAA,GAAA,GAAG,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,CAAA;AAClF,qBAAA,CAAC;gBACJ,CAAC;AACD,gBAAA,IAAI,EAAE,CAAC,GAAG,KAAI;oBACZ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;gBACxC,CAAC;AACF,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACjCD,iBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,uDAAG,CAAC,GAAa,KAAI;AACjC,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,MAAM,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,MAAM,KAAI,IAAI,CAAC,MAAM,IAAI,KAAK;AAC3C,gBAAA,GAAG,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,GAAG,KAAI,IAAI,CAAC,GAAG;AACzB,gBAAA,MAAM,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,KAAI,IAAI,CAAC,OAAO,IAAI,EAAE;AAC1C,gBAAA,IAAI,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,KAAI,IAAI,CAAC,IAAI;AAC5B,gBAAA,OAAO,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,KAAI,IAAI,CAAC,OAAO;AACrC,gBAAA,QAAQ,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,QAAQ,KAAI,IAAI,CAAC,QAAQ,IAAI,MAAM;AAClD,gBAAA,YAAY,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,YAAY,KAAI,IAAI,CAAC,YAAY,IAAI,MAAM;aAC/D;AAED,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACf,gBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC3B;YACF;;YAGA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACpC,gBAAA,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAC;gBAC/C;YACF;YAEA,IAAI,CAAC,OAAO,CAAC;AACX,gBAAA,GAAG,MAAM;AACT,gBAAA,OAAO,EAAE,CAAC,GAAG,KAAI;AACf,oBAAA,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,EAAE;wBACjD,OAAO,CAAC,SAAS,CAAC;4BAChB,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,UAAU,EAAE,GAAG,CAAC,UAAU;4BAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;AACnB,yBAAA,CAAC;oBACJ;yBAAO;wBACL,OAAO,CAAC,MAAM,CAAC;AACb,4BAAA,OAAO,EAAE,CAAA,MAAA,EAAS,GAAG,CAAC,UAAU,CAAA,CAAE;4BAClC,UAAU,EAAE,GAAG,CAAC,UAAU;4BAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;AACf,yBAAA,CAAC;oBACJ;gBACF,CAAC;AACD,gBAAA,IAAI,EAAE,CAAC,GAAG,KAAI;oBACZ,OAAO,CAAC,MAAM,CAAC;AACb,wBAAA,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,QAAQ;AAC/B,wBAAA,KAAK,EAAE,GAAG;AACX,qBAAA,CAAC;gBACJ,CAAC;AACF,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC;gBACb,OAAO,EAAE,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,KAAI,QAAQ;gBACnC,KAAK;AACN,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;AClED;AACA,IAAI,aAAa,GAA2B,EAAE;AAE9C,8BAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,gBAAgB,uDAAG,CAAC,GAAa,KAAI;AAC1C,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,KAAI,IAAI,CAAC,OAAO,IAAI,EAAE;YAElD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,gBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;gBACzB;YACF;;YAGA,aAAa,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,EAAE;YAEhD,OAAO,CAAC,SAAS,CAAC;AAChB,gBAAA,aAAa,EAAE,EAAE,GAAG,aAAa,EAAE;AACnC,gBAAA,YAAY,EAAE,OAAO;AACtB,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC;AAClC,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,WAAW,CAAC;QAC/C;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAG,MAAK;AAC7B,QAAA,IAAI;YACF,OAAO,CAAC,SAAS,CAAC;AAChB,gBAAA,aAAa,EAAE,EAAE,GAAG,aAAa,EAAE;AACpC,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC;AAClC,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,WAAW,CAAC;QAC/C;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAG,MAAK;AAC/B,QAAA,IAAI;AACF,YAAA,MAAM,UAAU,GAAG,EAAE,GAAG,aAAa,EAAE;YACvC,aAAa,GAAG,EAAE;YAElB,OAAO,CAAC,SAAS,CAAC;AAChB,gBAAA,cAAc,EAAE,UAAU;AAC1B,gBAAA,aAAa,EAAE,EAAE;AAClB,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC;AAClC,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,WAAW,CAAC;QAC/C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACtDD,cAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,uDAAG,CAAC,GAAa,KAAI;;AAC9B,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC;YAC3C,MAAM,SAAS,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,SAAS,MAAK,SAAS,GAAG,GAAG,CAAC,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI;;AAGvF,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;AACpC,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;AAErC,YAAA,IAAI,YAAY,KAAK,CAAC,EAAE;;AAEtB,gBAAA,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC5B;YACF;AAEA,YAAA,IAAI,KAAK,GAAG,YAAY,EAAE;;AAExB,gBAAA,OAAO,CAAC,MAAM,CAAC,eAAe,KAAK,CAAA,CAAA,CAAG,CAAC;gBACvC;YACF;AAEA,YAAA,IAAI,KAAK,KAAK,CAAC,EAAE;;gBAEf,IAAI,CAAC,YAAY,CAAC;AAChB,oBAAA,KAAK,EAAE,CAAC;oBACR,SAAS;AACT,oBAAA,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC9C,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;AACpD,iBAAA,CAAC;YACJ;iBAAO;;gBAEL,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC9C,IAAI,UAAU,EAAE;oBACd,IAAI,CAAC,YAAY,CAAC;wBAChB,KAAK;wBACL,SAAS;AACT,wBAAA,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;AACzE,wBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;AACpD,qBAAA,CAAC;gBACJ;qBAAO;AACL,oBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC3B;YACF;QACF;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACnDD,cAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,uDAAG,CAAC,GAAa,KAAI;AAClC,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,KAAI,IAAI,CAAC,IAAI,IAAI,YAAY;AACnD,YAAA,MAAM,IAAI,GAAG,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,KAAI,IAAI,CAAC,IAAI;AACnC,YAAA,MAAM,MAAM,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,MAAM,KAAI,IAAI,CAAC,MAAM,IAAI,EAAE;AAC/C,YAAA,MAAM,KAAK,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,KAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AAE3C,YAAA,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,cAAc,EAAE;AACpC,gBAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC1B;YACF;;YAGA,IAAI,GAAG,GAAG,IAAI;AACd,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;qBACtC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,GAAG,CAAA,CAAA,EAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA,CAAE;qBACnE,IAAI,CAAC,GAAG,CAAC;AACZ,gBAAA,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,WAAW;YACtD;YAEA,QAAQ,IAAI;AACV,gBAAA,KAAK,YAAY;oBACf,IAAI,CAAC,UAAU,CAAC;wBACd,GAAG;AACH,wBAAA,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC7D,wBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;AACtD,qBAAA,CAAC;oBACF;AAEF,gBAAA,KAAK,YAAY;oBACf,IAAI,CAAC,UAAU,CAAC;wBACd,GAAG;AACH,wBAAA,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC7D,wBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC;AACvD,qBAAA,CAAC;oBACF;AAEF,gBAAA,KAAK,WAAW;oBACd,IAAI,CAAC,SAAS,CAAC;wBACb,GAAG;AACH,wBAAA,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC7D,wBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC;AACvD,qBAAA,CAAC;oBACF;AAEF,gBAAA,KAAK,UAAU;oBACb,IAAI,CAAC,QAAQ,CAAC;wBACZ,GAAG;AACH,wBAAA,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC7D,wBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;AACtD,qBAAA,CAAC;oBACF;AAEF,gBAAA,KAAK,cAAc;oBACjB,IAAI,CAAC,YAAY,CAAC;wBAChB,KAAK;AACL,wBAAA,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACjD,wBAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;AACpD,qBAAA,CAAC;oBACF;AAEF,gBAAA;AACE,oBAAA,OAAO,CAAC,MAAM,CAAC,aAAa,IAAI,CAAA,CAAE,CAAC;;QAEzC;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACtED,oBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;AAExC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,uDAAG,CAAC,GAAa,KAAI;AACjC,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,QAAQ,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,QAAQ,KAAI,IAAI,CAAC,QAAQ,IAAI,OAAO;AACnD,gBAAA,SAAS,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,SAAS,KAAI,IAAI,CAAC,SAAS,IAAI,QAAQ;AACvD,gBAAA,KAAK,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,KAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AACrC,gBAAA,OAAO,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,KAAI,IAAI,CAAC,OAAO,IAAI,EAAE;gBAC3C,YAAY,EAAE,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,MAAK,SAAS,GAAG,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI;aAC7F;;;YAID,OAAO,CAAC,SAAS,CAAC;AAChB,gBAAA,IAAI,EAAE,KAAK;gBACX,MAAM;AACN,gBAAA,OAAO,EAAE,0BAA0B;AACpC,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;AC3BD;AACA,MAAM,eAAe,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,iBAAiB,IAAI,MAAM;AACpF,IAAI,gBAAgB,GAAoC,IAAI;AAE5D,oBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;IAExC,IAAI,CAAC,eAAe,EAAE;AACpB,QAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;IAC/B;AAEA,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,uDAAG,CAAC,GAAa,KAAI;AAC/B,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,KAAI,IAAI,CAAC,IAAI;AACnC,YAAA,MAAM,IAAI,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,KAAI,IAAI,CAAC,IAAI,IAAI,OAAO;AAC9C,YAAA,MAAM,IAAI,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AACxC,YAAA,MAAM,KAAK,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,KAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AAC3C,YAAA,MAAM,MAAM,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,MAAM,KAAI,IAAI,CAAC,MAAM,IAAI,CAAC;YAE9C,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC5B;YACF;YAEA,IAAI,CAAC,eAAe,EAAE;AACpB,gBAAA,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC/B;YACF;;YAGA,IAAI,gBAAgB,IAAI,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE;AACvD,gBAAA,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE;YACjC;AAEA,YAAA,gBAAgB,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC;AACrD,YAAA,gBAAgB,CAAC,IAAI,GAAG,IAAI;AAC5B,YAAA,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACzD,YAAA,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxD,YAAA,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAE1D,YAAA,gBAAgB,CAAC,OAAO,GAAG,MAAK;AAC9B,gBAAA,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACtD,YAAA,CAAC;AAED,YAAA,gBAAgB,CAAC,KAAK,GAAG,MAAK;AAC5B,gBAAA,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;gBAClD,gBAAgB,GAAG,IAAI;AACzB,YAAA,CAAC;AAED,YAAA,gBAAgB,CAAC,OAAO,GAAG,CAAC,KAAK,KAAI;gBACnC,OAAO,CAAC,OAAO,CAAC;oBACd,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,IAAI;AACJ,oBAAA,OAAO,EAAE,QAAQ;AAClB,iBAAA,CAAC;gBACF,gBAAgB,GAAG,IAAI;AACzB,YAAA,CAAC;AAED,YAAA,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC;AAC9C,YAAA,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACxD;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAG,MAAK;AACjB,QAAA,IAAI;AACF,YAAA,IAAI,eAAe,IAAI,gBAAgB,EAAE;AACvC,gBAAA,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE;gBAC/B,gBAAgB,GAAG,IAAI;AACvB,gBAAA,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;YAC9B;iBAAO;AACL,gBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;YAC7B;QACF;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAG,MAAK;AAClB,QAAA,IAAI;YACF,IAAI,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE;AACnD,gBAAA,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE;AAC9B,gBAAA,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;YAC9B;iBAAO;AACL,gBAAA,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;YAC/B;QACF;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAG,MAAK;AACnB,QAAA,IAAI;YACF,IAAI,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE;AACpD,gBAAA,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE;AAC/B,gBAAA,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;YAC9B;iBAAO;AACL,gBAAA,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;YAC/B;QACF;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,OAAO,KAAI,QAAQ,CAAC;QAC5C;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACtHD;AACA,SAAS,QAAQ,CAAC,IAAc,EAAE,KAAa,EAAE,UAAqD,EAAE,EAAA;IACtG,IAAI,SAAS,GAAQ,IAAI;IACzB,IAAI,YAAY,GAAG,CAAC;IACpB,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO;IAEpD,OAAO,UAAU,GAAG,IAAW,EAAA;AAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE;AAE9B,QAAA,IAAI,CAAC,SAAS,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;YACtB,YAAY,GAAG,WAAW;QAC5B;QAEA,IAAI,SAAS,EAAE;YACb,YAAY,CAAC,SAAS,CAAC;QACzB;AAEA,QAAA,SAAS,GAAG,UAAU,CAAC,MAAK;AAC1B,YAAA,IAAI,QAAQ,KAAK,CAAC,OAAO,IAAI,WAAW,GAAG,YAAY,IAAI,KAAK,CAAC,EAAE;AACjE,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;YACxB;YACA,SAAS,GAAG,IAAI;QAClB,CAAC,EAAE,KAAK,CAAC;AACX,IAAA,CAAC;AACH;AAEA,qBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;IAExC,IAAI,WAAW,GAAoB,IAAI;AAEvC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,uDAAG,CAAC,GAAa,KAAI;AAClC,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,KAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAC7C,MAAM,OAAO,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,MAAK,SAAS,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK;YAChF,MAAM,QAAQ,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,QAAQ,MAAK,SAAS,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI;YAEnF,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,WAAW,GAAG,QAAQ,CACpB,MAAK;AACH,oBAAA,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBACxE,CAAC,EACD,KAAK,EACL,EAAE,OAAO,EAAE,QAAQ,EAAE,CACtB;YACH;;AAGA,YAAA,WAAW,EAAE;YAEb,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAClD;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;QACjC;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;ACnDD,kBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;IAExC,IAAI,SAAS,GAAQ,IAAI;AACzB,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAa,CAAC,CAAC;AACrD,IAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAc,CAAC,CAAC;AACvD,IAAA,MAAM,KAAK,GAAG,CAAC,GAAW,KAAK,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AACjD,IAAA,MAAM,MAAM,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;IAEnD,MAAM,KAAK,GAAG,MAAK;QACjB,IAAI,SAAS,EAAE;YACb,YAAY,CAAC,SAAS,CAAC;YACvB,SAAS,GAAG,IAAI;QAClB;AACF,IAAA,CAAC;;IAGD,IAAI,KAAK,CAAC,SAAS,CAAC;AAAE,QAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,uDAAG,CAAC,OAAY,KAAI;;AACtD,YAAA,IAAI;;AAEF,gBAAA,MAAM,KAAK,GAAG,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,KAAK,KAAI,IAAI,CAAC,KAAK,IAAI,IAAI;AAElD,gBAAA,KAAK,EAAE;AAEP,gBAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAEnD,gBAAA,SAAS,GAAG,UAAU,CAAC,MAAK;;oBAC1B,IAAI,MAAM,CAAC,SAAS,CAAC;AAAE,wBAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAG,OAAO,CAAC;AACjD,oBAAA,CAAA,EAAA,GAAA,OAAO,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;oBACrD,SAAS,GAAG,IAAI;gBAClB,CAAC,EAAE,KAAK,CAAC;YACX;YAAE,OAAO,KAAU,EAAE;AACnB,gBAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,gBAAA,KAAK,EAAE;YACT;AACF,QAAA,CAAC,CAAC;IAEF,IAAI,KAAK,CAAC,OAAO,CAAC;AAAE,QAAA,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,uDAAG,CAAC,GAAa,KAAI;AACnD,YAAA,IAAI;AACF,gBAAA,MAAM,KAAK,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,KAAI,IAAI,CAAC,KAAK,IAAI,IAAI;AAE9C,gBAAA,KAAK,EAAE;AAEP,gBAAA,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAEjD,gBAAA,SAAS,GAAG,UAAU,CAAC,MAAK;AAC1B,oBAAA,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;oBACnD,SAAS,GAAG,IAAI;gBAClB,CAAC,EAAE,KAAK,CAAC;YACX;YAAE,OAAO,KAAU,EAAE;AACnB,gBAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AAC/B,gBAAA,KAAK,EAAE;YACT;AACF,QAAA,CAAC,CAAC;IAEF,IAAI,KAAK,CAAC,QAAQ,CAAC;AAAE,QAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAG,MAAK;AACxC,YAAA,IAAI;gBACF,IAAI,SAAS,EAAE;AACb,oBAAA,KAAK,EAAE;AACP,oBAAA,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC7B;qBAAO;AACL,oBAAA,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;gBACjC;YACF;YAAE,OAAO,KAAU,EAAE;AACnB,gBAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;YACjC;AACF,QAAA,CAAC,CAAC;AACJ,CAAC;;AC3ED;AACA,SAAS,QAAQ,CAAC,IAAc,EAAE,KAAa,EAAE,UAAqD,EAAE,EAAA;IACtG,IAAI,SAAS,GAAQ,IAAI;IACzB,IAAI,YAAY,GAAG,CAAC;IACpB,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO;IAEnD,OAAO,UAAU,GAAG,IAAW,EAAA;AAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE;AAE9B,QAAA,IAAI,WAAW,GAAG,YAAY,GAAG,KAAK,EAAE;YACtC,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;gBACtB,YAAY,GAAG,WAAW;YAC5B;YACA,IAAI,SAAS,EAAE;gBACb,YAAY,CAAC,SAAS,CAAC;gBACvB,SAAS,GAAG,IAAI;YAClB;QACF;AAAO,aAAA,IAAI,QAAQ,IAAI,CAAC,SAAS,EAAE;AACjC,YAAA,SAAS,GAAG,UAAU,CAAC,MAAK;AAC1B,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AACtB,gBAAA,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE;gBACzB,SAAS,GAAG,IAAI;YAClB,CAAC,EAAE,KAAK,IAAI,WAAW,GAAG,YAAY,CAAC,CAAC;QAC1C;AACF,IAAA,CAAC;AACH;AAEA,qBAAe,CAAC,OAAkB,KAAI;;AACpC,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI;AACnC,IAAA,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM;AACrC,IAAA,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO;IAExC,IAAI,WAAW,GAAoB,IAAI;AAEvC,IAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,uDAAG,CAAC,GAAa,KAAI;AAClC,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,QAAQ,KAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;YACvD,MAAM,OAAO,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,MAAK,SAAS,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI;YAC/E,MAAM,QAAQ,GAAG,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,QAAQ,MAAK,SAAS,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI;YAEnF,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,WAAW,GAAG,QAAQ,CACpB,MAAK;AACH,oBAAA,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC3E,CAAC,EACD,QAAQ,EACR,EAAE,OAAO,EAAE,QAAQ,EAAE,CACtB;YACH;;AAGA,YAAA,WAAW,EAAE;YAEb,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QACrD;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;QACjC;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|