aoye 0.0.56 → 0.0.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/core/global.ts","../src/core/type.ts","../src/core/schedule.ts","../src/type.ts","../src/util.ts","../src/core/operate.ts","../src/core/line.ts","../src/core/computed.ts","../src/core/signal.ts","../src/core/effect.ts","../src/core/scope.ts","../src/global.ts","../src/map-set-handler.ts","../src/deep-signal.ts","../src/store.ts","../src/functional-api.ts"],"sourcesContent":["import { SignalNode } from './type';\n\nlet _execId = 0;\nlet currentExecId = 0;\n\nexport const execIdInc = () => ++_execId;\n/** effect、computed 回调执行的唯一 id\n * 用于判断重复依赖属于同一 effect、effect、computed\n */\nexport const execId = () => currentExecId;\nexport const setExecId = (v: number) => (currentExecId = v);\n\nlet pulling: SignalNode = null;\nexport const setPulling = (v: SignalNode) => (pulling = v);\nexport const getPulling = () => pulling as any;\n\nexport function runWithPulling<T extends (...args: any[]) => any>(fn: T, scope: any): ReturnType<T> {\n const oldPulling = pulling;\n pulling = scope;\n const ret = fn();\n pulling = oldPulling;\n return ret;\n}\n","import { Computed } from './computed';\nimport { Effect } from './effect';\nimport { Scope } from './scope';\nimport { Signal } from './signal';\n\nexport type OnClean = (isDestroy: boolean) => any;\n\nexport type SignalNode = Partial<\n Omit<Computed, 'callback'> & {\n dispose(): void;\n }\n>;\nexport type Link = {\n execId: number;\n up: SignalNode;\n down: SignalNode;\n nextEmitLine: Link;\n prevEmitLine: Link;\n nextRecLine: Link;\n prevRecLine: Link;\n};\n\nexport type OutLink = Link & {\n nextOutLink: OutLink;\n prevOutLink: OutLink;\n};\n\nexport type SideEffect = Effect | Computed;\n\nexport enum ScheduleType {\n /** signal 变化后 同步执行 Effect */\n Sync = 0b0000_0000_0000_0000_0000_0000_0000_0001,\n /** signal 变化后优先级最高的异步任务 */\n Pre = 0b0000_0000_0000_0000_0000_0000_0000_0010,\n /** signal 变化后优先级第二高的异步任务 */\n Render = 0b0000_0000_0000_0000_0000_0000_0000_0100,\n /** signal 变化后优先级第三高的异步任务 */\n Post = 0b0000_0000_0000_0000_0000_0000_0000_1000\n}\n\nexport const EffectStrType2Enum = {\n sync: ScheduleType.Sync,\n pre: ScheduleType.Pre,\n render: ScheduleType.Render,\n post: ScheduleType.Post\n};\n\nexport type ScheduleTypeStr = keyof typeof EffectStrType2Enum;\n\nexport enum ScheduleStatus {\n /** 空闲 */\n Idle = 0,\n /** 准备运行 */\n Ready,\n /** 运行中 */\n Running\n}\n","import { micro } from '#/util';\nimport { Effect } from './effect';\n\nexport type TaskNode<T> = {\n value: T;\n next: TaskNode<T> | null;\n};\n\nexport type TaskQueue<T> = {\n head: TaskNode<T> | null;\n tail: TaskNode<T> | null;\n};\n\n/** bobe 专用的调度器 */\nexport class MultiScheduler<T> {\n /** 二进制位表示某个队列中是否有任务 */\n hasTask = 0;\n taskMap: Record<number, TaskQueue<T>> = {};\n constructor(queueCount: number) {\n for (let i = 0; i < queueCount; i++) {\n this.taskMap[1 << i] = {\n head: null,\n tail: null\n };\n }\n }\n\n addTask(queueId: number, task: any) {\n const queue = this.taskMap[queueId];\n const { tail } = queue;\n const item = {\n value: task,\n next: null\n };\n if (tail) {\n tail.next = item;\n } else {\n queue.head = item;\n }\n queue.tail = item;\n this.hasTask |= queueId;\n }\n\n flushAllTask() {\n // TODO: 开发环境 考虑异步 effect 循环依赖的情况\n while (this.hasTask) {\n const { hasTask } = this;\n const highest = hasTask & (~hasTask + 1);\n const task: Effect = this.consumeTask(highest).value as any;\n task.get();\n }\n }\n\n consumeTask(queueId: number) {\n const queue = this.taskMap[queueId];\n const { head, tail } = queue;\n const next = head.next;\n head.next = null;\n if (head === tail) {\n queue.head = null;\n queue.tail = null;\n // 最后一项被消费,这个队列就没有任务了\n this.hasTask &= ~queueId;\n } else {\n head.next = null;\n queue.head = next;\n }\n return head;\n }\n}\n\n/** TODO: 考虑如何与 ScheduleType 对齐\n * TODO: 考虑异步 effect 循环依赖的情况\n */\nexport const multiScheduler = new MultiScheduler(4);\n","import type { Signal } from './core';\nexport { Signal };\n\nexport type SignalType = 'ref' | 'auto' | 'proxy';\n\nexport enum Keys {\n Iterator = '__AOYE_ITERATOR',\n Raw = '__AOYE_RAW',\n Meta = '__AOYE_META',\n /** 当一个值对象标记为 ShallowObject 时,它的所有属性都不需要代理 */\n ProxyFreeObject = '__AOYE_PROXY_FREE_OBJECT'\n}\nexport type Key = string | number | symbol;\n/** store 标识 */\nexport const IsStore = Symbol('__AOYE_IS_STORE'),\n StoreIgnoreKeys = Symbol('__AOYE_IGNORE_KEYS');\n\nexport type TaskControlReturn = {\n /** 当前任务已完成 */\n finished?: boolean;\n /** 启动一个新 定时器 | RAF | Idle | 微任务 ... 等 */\n startNewCallbackAble?: boolean;\n};\n\nexport type Task = {\n (): TaskControlReturn | void;\n [key: string]: any;\n};\n\nexport type CreateTaskProps = {\n callbackAble: (fn: Function) => any;\n aIsUrgent: (a: Task, b: Task) => boolean;\n};\nexport type Mix<T = any> = {\n (v: T): void;\n (): T;\n v: T;\n stop(): void;\n};\n\nexport type ValueDiff = {\n old: any;\n val: any;\n};\n\nexport type CreateScope = (customPull: () => void, scope?: Signal) => Dispose;\n\nexport type Dispose = {\n (): void;\n ins: Signal;\n};\n\n// 定义一个递减器,用来控制深度\ntype Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n\nexport type DeepPath<T, Depth extends number = 8> = [Depth] extends [never]\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: [K] | [K, ...DeepPath<T[K], Prev[Depth]>];\n }[keyof T]\n : never;\n\nexport type DeepOmitPath<T, K extends string> = DeepPath<Omit<T, K>, 8>;\nexport type PRecord<K extends string | symbol | number, V> = Partial<Record<K, V>>;\nexport type DeepValue<T, P> = P extends [infer Head, ...infer Tail]\n ? Head extends keyof T\n ? Tail extends []\n ? T[Head]\n : DeepValue<T[Head], Tail>\n : never\n : never;\n\nexport type MatchValue<V1, T2, P2> = (DeepValue<T2, P2> extends V1 ? P2 : never) ","import { Keys } from \"./type\";\n\nexport const ide =\n globalThis.requestIdleCallback ||\n (globalThis.requestAnimationFrame\n ? (fn: Function) =>\n globalThis.requestAnimationFrame(() => {\n setTimeout(() => {\n fn();\n });\n })\n : globalThis.setTimeout);\n\nexport const now = () => {\n const timer = globalThis.performance || globalThis.Date;\n return timer.now();\n};\nlet channel: MessageChannel = globalThis.MessageChannel ? new MessageChannel() : null;\nif (globalThis.MessageChannel) {\n channel = new MessageChannel();\n}\nlet msgId = 0;\nexport const macro = fn => {\n if (!channel) {\n setTimeout(fn);\n }\n const memoId = msgId;\n function onMessage(e) {\n if (memoId === e.data) {\n fn();\n channel.port2.removeEventListener('message', onMessage);\n }\n }\n channel.port2.addEventListener('message', onMessage);\n channel.port1.postMessage(msgId++);\n};\n\nconst p = Promise.resolve();\nexport const micro = (cb: () => any) => {\n p.then(cb)\n}\n\nexport const toRaw = <T>(a: T) => {\n if (typeof a === 'object' && a !== null && a[Keys.Raw]) {\n return toRaw(a[Keys.Raw]);\n }\n return a;\n};","import { setPulling, getPulling } from './global';\nimport { Effect } from './effect';\nimport { Signal } from './signal';\nimport { Link, SideEffect, OutLink, SignalNode, OnClean, ScheduleType, ScheduleStatus } from './type';\nimport { State, DirtyState, PullingOrScopeExecuted, ScopeAbort } from './macro' with { type: 'macro' };\nimport { multiScheduler } from './schedule';\nimport { micro } from '#/util';\n\nexport function mark(signal: Signal) {\n let line = signal.emitHead;\n while (line) {\n const down = line.down as Effect;\n const { scope, emitHead, state } = down;\n // if ((scope && scope.state & State.ScopeAbort) || down === up.scope || state & ScopeExecuted) {\n // }\n if (scope && scope.state & State.ScopeAbort) {\n } else {\n const notLocked = (state & State.PullLock) === 0;\n down.state |= notLocked ? State.NeedCompute : State.PullingNeedCompute;\n // window['mark'] = (window['mark'] || 0) + 1;\n if (state & State.IsScope) {\n if (notLocked && state & State.IsEffect) {\n if (down.type === ScheduleType.Sync) {\n addEffect(down);\n } else {\n multiScheduler.addTask(down.type, down);\n }\n }\n } else if (emitHead) {\n markUnknownDeep(emitHead);\n }\n }\n line = line.nextEmitLine;\n }\n}\n\nfunction markUnknownDeep(initialLine: Link) {\n const noPulling = !getPulling();\n // 初始节点入栈\n const stack: Link[] = [initialLine];\n let len = 1;\n\n while (len > 0) {\n // 手动出栈,不触发数组缩容\n let line: Link = stack[--len];\n stack[len] = null as any;\n\n while (line) {\n const down = line.down as Effect;\n const { state, scope } = down;\n // 判定逻辑\n // const noSkip = !(\n // (scope && scope.state & State.ScopeAbort) ||\n // down === up.scope ||\n // state & UnknownOrScopeExecuted\n // );\n // 1. 禁用,2. 已标记\n if ((scope && scope.state & State.ScopeAbort) || (noPulling && state & DirtyState)) {\n } else {\n const notLocked = (state & State.PullLock) === 0;\n down.state |= notLocked ? State.Unknown : State.PullingUnknown;\n // window['mark'] = (window['mark'] || 0) + 1;\n if (state & State.IsScope) {\n if (notLocked && state & State.IsEffect) {\n if (down.type === ScheduleType.Sync) {\n addEffect(down);\n } else {\n multiScheduler.addTask(down.type, down);\n }\n }\n } else if (down.emitHead) {\n // 手动入栈\n stack[len++] = down.emitHead;\n }\n }\n\n line = line.nextEmitLine;\n }\n }\n}\n\nexport function pullDeep(root: SideEffect): any {\n let node = root,\n top: Link = null,\n i = -1;\n const lineStack: Link[] = [];\n do {\n const { state, scope } = node;\n let noSkipSelf = !(\n state & PullingOrScopeExecuted ||\n (state & DirtyState) === 0 ||\n (scope && scope.state & State.ScopeAbort)\n );\n // begin\n const firstLine = node.recHead;\n // 1. 本节点不跳过则可进入子节点,\n // 2. 本节点需要计算,不需要进入子节点\n if (noSkipSelf) {\n node.state |= State.PullLock;\n if ((state & State.NeedCompute) === 0 && firstLine) {\n node = firstLine.up as SideEffect;\n lineStack[++i] = top;\n top = firstLine;\n continue;\n }\n }\n\n do {\n const { state } = node;\n let noGoSibling = false;\n if (noSkipSelf) {\n // 子节点计算完成后重新查看父节点的 NeedCompute\n if (state & State.NeedCompute) {\n // window['update'] = (window['update'] || 0) + 1;\n // @ts-ignore\n const prevValue = node.value;\n const prevPulling = getPulling();\n setPulling(node);\n const value = node.get(false, false);\n setPulling(prevPulling);\n // 将父标记为 NeedCompute\n if ((noGoSibling = value !== prevValue)) {\n let line = node.emitHead;\n while (line) {\n const { down } = line;\n down.state &= ~State.Unknown;\n down.state |= State.NeedCompute;\n line = line.nextEmitLine;\n }\n }\n }\n // 不需要计算时将,将 blocked 标记释放\n else {\n transferDirtyState(node, state);\n }\n node.state &= ~State.PullLock;\n }\n // complete\n // 递归出口\n if (node === root) {\n // @ts-ignore\n return node.value;\n }\n if (!noGoSibling && top.nextRecLine) {\n top = top.nextRecLine;\n node = top.up as SideEffect;\n break;\n }\n // 避免回溯时子节点 noSkipSelf 影响到父节点\n noSkipSelf = true;\n node = top.down as SideEffect;\n top = lineStack[i];\n lineStack[i--] = null;\n } while (true);\n } while (true);\n}\n/**\n * 将 PullingUnknown、PullingNeedCompute\n * 转为 Unknown、NeedCompute\n * TODO: 考虑加属性 blockedSate 进行优化\n */\nexport function transferDirtyState(node: SideEffect, state: State) {\n // 被处理的节点应该恢复\n if (state & State.PullingUnknown) {\n node.state = (state & ~State.PullingUnknown) | State.Unknown;\n } else {\n node.state &= ~State.Unknown;\n }\n // 被处理的节点应该恢复\n if (state & State.PullingNeedCompute) {\n node.state = (state & ~State.PullingNeedCompute) | State.NeedCompute;\n } else {\n node.state &= ~State.NeedCompute;\n }\n}\nconst effectQueue: Effect[] = [];\nlet consumeI = -1,\n produceI = -1;\nexport function addEffect(effect: Effect) {\n effectQueue[++produceI] = effect;\n}\nexport function flushSyncEffect() {\n // 正在消费\n if (consumeI !== -1) {\n return;\n }\n while (++consumeI <= produceI) {\n const effect = effectQueue[consumeI];\n if (effect.state | DirtyState) {\n effect.get();\n }\n effectQueue[consumeI] = null;\n }\n consumeI = -1;\n produceI = -1;\n}\nlet schedulerStatus = ScheduleStatus.Idle;\nexport function flushMicroEffect() {\n if (schedulerStatus === ScheduleStatus.Idle && multiScheduler.hasTask) {\n schedulerStatus = ScheduleStatus.Ready;\n micro(() => {\n schedulerStatus = ScheduleStatus.Running;\n multiScheduler.flushAllTask();\n schedulerStatus = ScheduleStatus.Idle;\n });\n }\n}\nexport function flushMicroEffectManual() {\n if (schedulerStatus !== ScheduleStatus.Running && multiScheduler.hasTask) {\n schedulerStatus = ScheduleStatus.Running;\n multiScheduler.flushAllTask();\n schedulerStatus = ScheduleStatus.Idle;\n }\n}\n\nlet _batchDeep = 0;\nexport const batchStart = () => _batchDeep++;\nexport const batchEnd = () => {\n _batchDeep--;\n if (_batchDeep === 0) {\n flushSyncEffect();\n flushMicroEffect();\n }\n};\n/** effect、computed 回调执行的唯一 id\n * 用于判断重复依赖属于同一 effect、effect、computed\n */\nexport const batchDeep = () => _batchDeep;\n\nexport function unlink(line: OutLink, deep: boolean) {\n // window['unlink'] = (window['unlink'] || 0) + 1;\n const { nextEmitLine, prevEmitLine, nextRecLine, prevRecLine, up, down, prevOutLink, nextOutLink } = line;\n const { scope } = down;\n // 1. 非唯一 emitLine, 直接释放即可\n /*----------------- 从 up 中移除 -----------------*/\n if (prevEmitLine) {\n prevEmitLine.nextEmitLine = nextEmitLine;\n } else {\n // 头移除\n up.emitHead = nextEmitLine;\n }\n if (nextEmitLine) {\n nextEmitLine.prevEmitLine = prevEmitLine;\n } else {\n // 尾移除\n up.emitTail = prevEmitLine;\n }\n /*----------------- 从 down 中移除 -----------------*/\n if (prevRecLine) {\n prevRecLine.nextRecLine = nextRecLine;\n } else {\n // 头移除\n down.recHead = nextRecLine;\n }\n if (nextRecLine) {\n nextRecLine.prevRecLine = prevRecLine;\n } else {\n // 尾移除\n down.recTail = prevRecLine;\n }\n /*----------------- 从 outLink 中移除 -----------------*/\n if (prevOutLink) {\n prevOutLink.nextOutLink = nextOutLink;\n }\n if (nextOutLink) {\n nextOutLink.prevOutLink = prevOutLink;\n }\n if (scope && scope.outLink === line) {\n scope.outLink = nextOutLink;\n }\n if (up.state & State.IsScope) {\n // @ts-ignore\n up.dispose();\n // dispose(up as Effect);\n }\n // 唯一 emitLine, 现在 up 是游离节点,递归删除 up 的上游依赖\n else if (deep && !prevEmitLine && !nextEmitLine) {\n let { recHead: line } = up as Effect;\n // 如果 up 节点上面也有 唯一 emitLine 继续释放\n while (line) {\n const next = line.nextRecLine;\n unlink(line as OutLink, true);\n line = next;\n }\n }\n}\n\nexport function dispose(this: SideEffect) {\n // window['dispose'] = (window['dispose'] || 0) + 1;\n let { recHead: toDel, emitHead } = this;\n while (toDel) {\n const { up, nextRecLine } = toDel;\n // 上游非 scope 直接 unlink\n if ((up.state & State.IsScope) === 0) {\n unlink(toDel as OutLink, true);\n toDel = nextRecLine;\n continue;\n }\n let node = up,\n top: Link = null,\n i = -1;\n const lineStack: Link[] = [];\n outer: do {\n let noSkipSelf = node.state & State.IsScope && (node.state & ScopeAbort) === 0;\n const firstLine = node.recHead;\n\n if (noSkipSelf && firstLine) {\n node = firstLine.up as SideEffect;\n lineStack[++i] = top;\n top = firstLine;\n continue;\n }\n do {\n if (noSkipSelf) {\n releaseScope(node as Effect);\n }\n // 递归出口\n if (node === up) {\n break outer;\n }\n if (top.nextRecLine) {\n top = top.nextRecLine;\n node = top.up as SideEffect;\n break;\n }\n noSkipSelf = true;\n node = top.down as SideEffect;\n top = lineStack[i];\n lineStack[i--] = null;\n } while (true);\n } while (true);\n toDel = nextRecLine;\n }\n releaseScope(this as Effect);\n if (emitHead) unlink(emitHead as OutLink, false);\n}\n\nexport function clean(onClean: OnClean) {\n const current = getPulling() as Effect;\n current.clean = onClean;\n}\n\nfunction releaseScope(scope: Effect) {\n let { outLink } = scope;\n while (outLink) {\n const next = outLink.nextOutLink;\n unlink(outLink, true);\n outLink = next;\n }\n scope.state |= State.ScopeAbort;\n // clean 在 scope 释放时执行\n scope.clean?.(true);\n scope.clean = null;\n}\n\n// export function pullDeep<T>(node: SideEffect, down: SignalNode): T {\n// let { scope, state, recHead: line, emitHead: downLine } = node;\n// // @ts-ignore\n// const prevValue = node.value;\n// if (state & State.Pulling || (scope && scope.state & State.ScopeAbort) || state & ScopeExecuted) {\n// return prevValue;\n// }\n// node.state |= State.Pulling;\n// setPulling(node);\n// try {\n// // 当前无需计算 先往下查询需计算的节点\n// if ((state & State.NeedCompute) === 0) {\n// while (line) {\n// pullDeep(line.up as any, node);\n// line = line.nextRecLine;\n// }\n// }\n\n// // 子节点完成后重新判断父节点是否需要计算\n// if (node.state & State.NeedCompute) {\n// const value = node.get(false, false);\n// if (value !== prevValue) {\n// while (downLine) {\n// const { down } = downLine;\n// down.state &= ~State.Unknown;\n// down.state |= State.NeedCompute;\n// downLine = downLine.nextEmitLine;\n// }\n// }\n// node.state &= ~State.NeedCompute;\n// return value;\n// }\n// return prevValue;\n// } finally {\n// node.state &= ~State.Pulling;\n// setPulling(down);\n// }\n// }\n\n// function markUnknownDeep(line: Link) {\n// while (line) {\n// const { down, up } = line;\n// if (\n// (down.scope &&\n// // 所属 scope 被取消\n// (down.scope.state & State.ScopeAbort ||\n// // 下游是上游的 scope\n// down === up.scope)) ||\n// // 是 scope 节点,且处于 ready 状态,不需要重复执行\n// down.state & ScopeExecuted\n// ) {\n// } else {\n// down.state |= State.Unknown;\n// markUnknownDeep(down.emitHead);\n// }\n// line = line.nextEmitLine;\n// }\n// }\n","import { execId } from './global';\nimport { Scope } from './scope';\nimport { Link, OutLink, SignalNode } from './type';\nimport { State } from './macro' with { type: 'macro' };\nimport { Effect } from './effect';\nexport function link(\n /** 上游顶点 */\n up: SignalNode = null,\n /** 下游顶点 */\n down: SignalNode = null\n) {\n const { emitTail: prevEmitLine, scope: scopeUp } = up;\n let { recHead, recTail, scope: scopeDown } = down;\n // 符合外链规则,使用 outLink 进行连接\n if (scopeDown && scopeDown !== scopeUp && (up.state & State.IsScope) === 0) {\n outLink(up, down);\n return;\n }\n const nextRec = recTail ? recTail.nextRecLine : recHead;\n const eid = execId();\n // 重复依赖 跳过\n if (prevEmitLine && prevEmitLine.down === down && prevEmitLine.execId === eid) {\n return;\n }\n\n // 1. down 无 nextRec 尾插\n if (!nextRec) {\n // window['link'] = (window['link'] || 0) + 1;\n // 是 1. 上游节点尾指针 2.下游节点的首尾指针\n const line: Link = {\n execId: eid,\n up,\n down,\n prevEmitLine,\n nextEmitLine: null,\n prevRecLine: recTail,\n nextRecLine: null\n };\n // 加入 up 的链表\n if (prevEmitLine) {\n prevEmitLine.nextEmitLine = line;\n } else {\n up.emitHead = line;\n }\n up.emitTail = line;\n\n // 加入 down 的链表\n if (recTail) {\n recTail.nextRecLine = line;\n } else {\n down.recHead = line;\n }\n down.recTail = line;\n return;\n }\n\n // 2. 如果下一个 rec 连接的就是 up,直接复用\n if (nextRec.up === up) {\n nextRec.execId = eid;\n down.recTail = nextRec;\n return;\n }\n // window['link'] = (window['link'] || 0) + 1;\n // 3. rec 指向不匹配, 在 tail 和 next 中间插入 line\n const line: Link = {\n execId: eid,\n up,\n down,\n prevEmitLine,\n nextEmitLine: null,\n prevRecLine: recTail,\n nextRecLine: nextRec\n };\n // 加入 up 的链表\n if (prevEmitLine) {\n prevEmitLine.nextEmitLine = line;\n } else {\n up.emitHead = line;\n }\n up.emitTail = line;\n\n // 加入 down 链表, 一定不是尾插,只考虑是否头插\n if (recHead) {\n if (recTail) {\n recTail.nextRecLine = line;\n } else {\n // recTail 已被重置为 null,说明这是 downstream 新增的第一个 link ,新 link 直接作为新链头\n down.recHead = line;\n }\n } else {\n down.recHead = line;\n }\n // 移动 recTail\n down.recTail = line;\n // tail <-> line <-> nextRec\n if (recTail) recTail.nextRecLine = line;\n nextRec.prevRecLine = line;\n}\n\nexport function outLink(\n /** 上游顶点 */\n up: SignalNode = null,\n /** 下游顶点 */\n down: SignalNode = null\n) {\n const { emitTail: prevEmitLine } = up;\n let { recHead, recTail, scope: scopeDown } = down;\n const nextRec = recTail ? recTail.nextRecLine : recHead;\n // 1. down 无 nextRec 尾插\n if (!nextRec) {\n // 是 1. 上游节点尾指针 2.下游节点的首尾指针\n const line: OutLink = {\n execId: execId(),\n up,\n down,\n prevEmitLine,\n nextEmitLine: null,\n prevRecLine: recTail,\n nextRecLine: null,\n nextOutLink: null,\n prevOutLink: null\n };\n\n // 加入 up 的链表\n if (prevEmitLine) {\n prevEmitLine.nextEmitLine = line;\n } else {\n up.emitHead = line;\n }\n up.emitTail = line;\n\n // 加入 down 的链表\n if (recTail) {\n recTail.nextRecLine = line;\n } else {\n down.recHead = line;\n }\n down.recTail = line;\n // if (scopeDown && scopeDown !== scopeUp && (up.state & State.IsScope) == 0)\n makeOutLink(scopeDown, line);\n return;\n }\n\n // 2. 如果下一个 rec 连接的就是 up,直接复用\n if (nextRec.up === up) {\n down.recTail = nextRec;\n return;\n }\n // 3. rec 指向不匹配, 在 tail 和 next 中间插入 line\n const line: OutLink = {\n execId: execId(),\n up,\n down,\n prevEmitLine,\n nextEmitLine: null,\n prevRecLine: recTail,\n nextRecLine: nextRec,\n nextOutLink: null,\n prevOutLink: null\n };\n // 加入 up 的链表\n if (prevEmitLine) {\n prevEmitLine.nextEmitLine = line;\n } else {\n up.emitHead = line;\n }\n up.emitTail = line;\n\n // 加入 down 链表, 一定不是尾插,只考虑是否头插\n if (recHead) {\n if (recTail) {\n recTail.nextRecLine = line;\n } else {\n down.recHead = line;\n }\n } else {\n down.recHead = line;\n }\n // 移动 recTail\n down.recTail = line;\n // tail <-> line <-> nextRec\n if (recTail) recTail.nextRecLine = line;\n nextRec.prevRecLine = line;\n // if (scopeDown && scopeDown !== scopeUp && (up.state & State.IsScope) == 0)\n makeOutLink(scopeDown, line);\n}\n\nfunction makeOutLink(scopeDown: Effect|Scope, line: OutLink) {\n const first = scopeDown.outLink;\n if (first) {\n first.prevOutLink = line;\n line.nextOutLink = first;\n }\n scopeDown.outLink = line;\n}\n\nexport function outLink2(\n /** 上游顶点 */\n up: SignalNode = null,\n /** 下游顶点 */\n down: SignalNode = null\n) {\n const { emitTail: prevEmitLine, emitHead } = up;\n const { emitTail: prevRecLine, recHead, scope } = down;\n const { outLink: first } = scope;\n\n const line: OutLink = {\n execId: execId(),\n up,\n down,\n prevEmitLine,\n prevRecLine,\n nextEmitLine: null,\n nextRecLine: null,\n nextOutLink: first,\n prevOutLink: null\n };\n\n scope.outLink = line;\n if (first) {\n first.nextOutLink = line;\n }\n\n // 处理节点上的双向链表\n up.emitTail = line;\n down.recTail = line;\n\n if (!emitHead) {\n up.emitHead = line;\n }\n if (!recHead) {\n down.recHead = line;\n }\n}\n","import { setPulling, getPulling, execIdInc, execId, setExecId } from './global';\nimport { Effect } from './effect';\nimport { Scope } from './scope';\nimport { Link, OutLink, SideEffect, SignalNode } from './type';\nimport { State, DirtyState } from './macro' with { type: 'macro' };\nimport { transferDirtyState, pullDeep, unlink } from './operate';\nimport { link } from './line';\n\nexport class Computed<T = any> {\n emitHead: Link = null;\n emitTail: Link = null;\n recHead: Link = null;\n recTail: Link = null;\n state = State.Clean;\n scope: Effect | Scope = getPulling() as any;\n value: T = null;\n constructor(public callback: (thisArgs: Computed) => T) {}\n get(shouldLink = true, notForceUpdate = true) {\n const { scope } = this;\n if (scope && scope.state & State.ScopeAbort) return this.value;\n const down = getPulling();\n if (this.recHead && notForceUpdate) {\n if (this.state & DirtyState) {\n this.value = pullDeep(this);\n }\n } else {\n this.state |= State.PullLock;\n\n const nextId = execIdInc();\n const prevId = execId();\n setExecId(nextId);\n\n setPulling(this);\n this.recTail = null;\n this.value = this.callback(this);\n this.state &= ~State.PullLock;\n setPulling(down);\n\n setExecId(prevId);\n // Unknown 转换\n transferDirtyState(this, this.state);\n let line = this.recTail?.nextRecLine;\n while (line) {\n const nextLine = line.nextRecLine;\n unlink(line as OutLink, true);\n line = nextLine;\n }\n }\n\n // link 连接\n if (shouldLink && down && (down.state & State.LinkScopeOnly) === 0) {\n link(this, down);\n }\n return this.value;\n }\n}\n","import { Effect } from './effect';\nimport { getPulling } from './global';\nimport { link } from './line';\nimport { mark, flushSyncEffect, batchDeep, flushMicroEffect } from './operate';\nimport { Scope } from './scope';\nimport { Link, SignalNode } from './type';\nimport { State } from './macro' with { type: 'macro' };\n\nexport class Signal<T = any> {\n scope: Effect | Scope = getPulling() as any;\n emitHead: Link = null;\n emitTail: Link = null;\n state = State.Clean;\n\n constructor(public value: T) {}\n // TODO: shouldLink 考虑 signal -> computed NeedComputed -> effect 时执行 get 不应该触发 shouldLink\n get(shouldLink = true) {\n if (shouldLink) {\n const down = getPulling();\n // 在 watcher 的 callback 中执行,不连接\n if (down && (down.state & State.LinkScopeOnly) === 0) {\n link(this, down);\n }\n }\n return this.value;\n }\n set(v: T) {\n if (this.value === v) return;\n this.value = v;\n if (this.emitHead) {\n mark(this);\n if (batchDeep() === 0) {\n flushSyncEffect();\n flushMicroEffect();\n }\n }\n }\n}\n","import { execId, execIdInc, getPulling, setExecId, setPulling } from './global';\nimport { link } from './line';\nimport { transferDirtyState, pullDeep, unlink, dispose } from './operate';\nimport { Scope } from './scope';\nimport { Link, OnClean, OutLink, ScheduleType, SideEffect, SignalNode } from './type';\nimport { State } from './macro' with { type: 'macro' };\n\nconst EffectState = State.IsEffect | State.IsScope;\nexport class Effect {\n emitHead: Link = null;\n emitTail: Link = null;\n recHead: Link = null;\n recTail: Link = null;\n\n state = EffectState;\n scope: Effect | Scope = getPulling() as any;\n outLink: OutLink = null;\n clean: OnClean = null;\n constructor(public callback: (thisArg: Effect) => OnClean | void, public type: ScheduleType = ScheduleType.Sync) {\n this.get();\n }\n get(shouldLink = true, notForceUpdate = true) {\n if (this.state & State.ScopeAbort) return;\n const down = getPulling();\n if (this.recHead && notForceUpdate) {\n pullDeep(this);\n } else {\n this.state |= State.PullLock;\n\n setPulling(null);\n this.clean?.(false);\n this.clean = null;\n\n const nextId = execIdInc();\n const prevId = execId();\n setExecId(nextId);\n\n setPulling(this);\n this.recTail = null;\n const res = this.callback(this);\n typeof res === 'function' && (this.clean = res);\n this.state &= ~State.PullLock;\n setPulling(down);\n\n setExecId(prevId);\n // Unknown 转换\n transferDirtyState(this, this.state);\n let line = this.recTail?.nextRecLine;\n while (line) {\n const nextLine = line.nextRecLine;\n unlink(line as OutLink, true);\n line = nextLine;\n }\n }\n // effect 可以嵌套管理,但是链接只建立一次\n if (!this.emitHead && shouldLink && down) {\n link(this, down);\n }\n }\n}\n\nexport interface Effect {\n dispose(): void;\n}\n\nEffect.prototype.dispose = dispose;\n","import { Effect } from './effect';\nimport { getPulling, setPulling } from './global';\nimport { link } from './line';\nimport { Link, OnClean, OutLink } from './type';\nimport { State } from './macro' with { type: 'macro' };\nimport { dispose } from './operate';\nconst ScopeAndLinkScopeOnly = State.IsScope | State.LinkScopeOnly;\nexport class Scope {\n emitHead: Link = null;\n emitTail: Link = null;\n recHead: Link = null;\n recTail: Link = null;\n\n state = ScopeAndLinkScopeOnly;\n scope: Effect | Scope = getPulling() as any;\n outLink: OutLink = null;\n clean: OnClean = null;\n constructor(public callback: () => OnClean | any) {}\n get(shouldLink = true) {\n const { scope } = this;\n this.state |= State.PullLock;\n setPulling(this);\n this.recTail = null;\n const res = this.callback();\n typeof res === 'function' && (this.clean = res);\n this.state &= ~State.PullLock;\n setPulling(scope);\n\n // effect 可以嵌套管理,但是链接只建立一次\n if (!this.emitHead && shouldLink && scope) {\n link(this, scope);\n }\n }\n}\n\nexport class NoopEffect {\n constructor(public callback: () => OnClean | any) {\n const scope = new Scope(callback);\n scope.get();\n return scope;\n }\n}\n\nexport const noopEffect = (callback: () => OnClean | any) => {\n const scope = new Scope(callback);\n scope.get();\n return scope;\n};\n\nexport interface Scope {\n dispose(): void;\n}\n\nScope.prototype.dispose = dispose;\n","export const rawToProxy = new WeakMap();\n\nexport enum State {\n Clean = 0,\n /** watch 节点执行 watcher 时只连接 scope */\n LinkScopeOnly = 0b0000_0000_0000_0000_0000_0001_0000_0000,\n /** 仅用于 scope 节点是否 abort */\n ScopeAbort = 0b0000_0000_0000_0000_0000_0000_1000_0000,\n /** 仅用于 scope 节点是否 ready */\n ScopeReady = 0b0000_0000_0000_0000_0000_0000_0100_0000,\n /** 当前节点是 scope 节点 */\n IsScope = 0b0000_0000_0000_0000_0000_0000_0010_0000,\n /** 当前节点正在 pull 递归中标记为 dirty, 保证 pulling 过程中不影响 dirty 传播 */\n PullingDirty = 0b0000_0000_0000_0000_0000_0000_0001_0000,\n /** 当前节点正在 pull 递归中标记为 unknown, 保证 pulling 过程中不影响 dirty 传播 */\n PullingUnknown = 0b0000_0000_0000_0000_0000_0000_0000_1000,\n /** 当前节点可能变化 */\n Unknown = 0b0000_0000_0000_0000_0000_0000_0000_0100,\n /** 当前节点有变化 */\n Dirty = 0b0000_0000_0000_0000_0000_0000_0000_0010,\n /** 当前节点正在进行 pull 预检处理 */\n Pulling = 0b0000_0000_0000_0000_0000_0000_0000_0001\n}\n\nexport const DirtyState = State.Unknown | State.Dirty;\nexport const ScopeExecuted = State.ScopeReady | State.ScopeAbort;\nexport const ScopeAbort = State.ScopeAbort;\n","import { Scope, Signal, batchEnd, batchStart } from './core';\nimport { Keys } from './type';\nimport { deepSignal } from './deep-signal';\n\n/*----------------- 辅助函数 -----------------*/\n\nexport const trackIterator = (cells: Map<any, Signal>, scope: Scope) => {\n let iter = cells.get(Keys.Iterator);\n if (!iter) {\n iter = new Signal(0);\n iter.scope = scope;\n cells.set(Keys.Iterator, iter);\n }\n iter.get();\n};\n\nconst triggerIterator = (cells: Map<any, Signal>) => {\n const iter = cells.get(Keys.Iterator);\n if (iter) {\n iter.set((iter.value || 0) + 1);\n }\n};\n\nconst trackKey = (cells: Map<any, Signal>, scope: Scope, key: any) => {\n let cell = cells.get(key);\n if (!cell) {\n cell = new Signal(undefined);\n cell.scope = scope;\n cells.set(key, cell);\n }\n cell.get();\n};\n\nconst triggerKey = (cells: Map<any, Signal>, key: any) => {\n const cell = cells.get(key);\n if (cell) {\n cell.set((cell.value === undefined ? 0 : cell.value) + 1);\n }\n};\n\n/*----------------- Map/Set 共享方法 -----------------*/\n/**\n * size, clear, delete, has, keys, values, entries, forEach, [Symbol.iterator]\n */\nexport const createSharedHandler = (cells: Map<any, Signal>, scope: Scope, deep: boolean, targetIsMap: boolean) => {\n const iterate = (rawTarget: Map<any, any> | Set<any>, iteratorFn: string) => {\n trackIterator(cells, scope);\n const rawIter = (rawTarget as any)[iteratorFn]();\n if (!deep) return rawIter;\n\n const rawNext = rawIter.next.bind(rawIter);\n rawIter.next = () => {\n const result = rawNext();\n if (!result.done) {\n // entries 返回 [k, v],key 也可能是对象需要包装;keys/values 包装值本身\n if (iteratorFn === 'entries') {\n result.value[0] = deepSignal(result.value[0], scope);\n result.value[1] = deepSignal(result.value[1], scope);\n } else {\n result.value = deepSignal(result.value, scope);\n }\n }\n return result;\n };\n return rawIter;\n };\n\n return {\n has(key: any) {\n const target = this[Keys.Raw];\n trackKey(cells, scope, key);\n return target.has(key);\n },\n\n delete(key: any) {\n const target = this[Keys.Raw];\n batchStart();\n const had = target.has(key);\n const result = target.delete(key);\n if (had) {\n triggerKey(cells, key);\n cells.delete(key);\n triggerIterator(cells);\n }\n batchEnd();\n return result;\n },\n\n clear() {\n const target = this[Keys.Raw];\n batchStart();\n const hadItems = target.size > 0;\n target.clear();\n // 清除 key cells(保留 Iterator)\n const iterCell = cells.get(Keys.Iterator);\n cells.clear();\n if (iterCell) cells.set(Keys.Iterator, iterCell);\n if (hadItems) {\n triggerIterator(cells);\n }\n batchEnd();\n },\n\n forEach(callback: Function, thisArg?: any) {\n const target = this[Keys.Raw];\n trackIterator(cells, scope);\n const wrap = (val: any) => (deep ? deepSignal(val, scope) : val);\n // Map callback: (value, key, map)\n // Set callback: (value, key, set) — key===value, rawToProxy 缓存保证不重复包装\n target.forEach((v: any, k: any) => {\n callback.call(thisArg, wrap(v), wrap(k), this);\n });\n },\n\n keys() {\n return iterate(this[Keys.Raw], 'keys');\n },\n\n values() {\n return iterate(this[Keys.Raw], 'values');\n },\n\n entries() {\n return iterate(this[Keys.Raw], 'entries');\n },\n\n [Symbol.iterator]() {\n // Map 同 entries,Set 同 values\n return iterate(this[Keys.Raw], targetIsMap ? 'entries' : 'values');\n }\n };\n};\n\n/*----------------- Map 专用方法 -----------------*/\n/**\n * get(key), set(key, value)\n */\nexport const createMapHandler = (cells: Map<any, Signal>, scope: Scope, deep: boolean) => ({\n get(key: any) {\n const target = this[Keys.Raw];\n trackKey(cells, scope, key);\n const value = target.get(key);\n return deep ? deepSignal(value, scope) : value;\n },\n\n set(key: any, value: any) {\n const target = this[Keys.Raw];\n batchStart();\n target.set(key, value);\n // 更新 key cell\n let cell = cells.get(key);\n if (!cell) {\n cell = new Signal(value);\n cell.scope = scope;\n cells.set(key, cell);\n } else {\n cell.set(value);\n }\n // 新增或修改已有 key 都触发 Iterator,因为迭代器(forEach/entries 等)依赖值变化\n triggerIterator(cells);\n batchEnd();\n return this;\n }\n});\n\n/*----------------- Set 专用方法 -----------------*/\n/**\n * add(value)\n */\nexport const createSetHandler = (cells: Map<any, Signal>, scope: Scope, _deep: boolean) => ({\n add(value: any) {\n const target = this[Keys.Raw];\n batchStart();\n const had = target.has(value);\n target.add(value);\n // 更新 value cell(Set 用 value 自身作为 key)\n let cell = cells.get(value);\n if (!cell) {\n cell = new Signal(value);\n cell.scope = scope;\n cells.set(value, cell);\n } else {\n cell.set(value);\n }\n if (!had) {\n triggerIterator(cells);\n }\n batchEnd();\n return this;\n }\n});\n\n/*----------------- 合并处理器的辅助函数 -----------------*/\n\nexport const mergeHandlers = (...handlers: Record<string | symbol, any>[]) =>\n Object.assign({}, ...handlers);\n","import { isNatureNumStr } from 'bobe-shared';\nimport { rawToProxy } from './global';\nimport { Computed, Scope, Signal, batchEnd, batchStart, runWithPulling } from './core';\nimport { IsStore, Key, Keys, StoreIgnoreKeys } from './type';\nimport { toRaw } from './util';\nimport {\n createSharedHandler,\n createMapHandler,\n createSetHandler,\n mergeHandlers,\n trackIterator\n} from './map-set-handler';\n\nexport const deepSignal = <T>(target: T, scope: Scope, deep = true) => {\n const isObj = typeof target === 'object' && target !== null;\n // 1. 不是对象则返回原始值\n // 2. 返回已有代理\n // 3. 对象不需要代理\n if (!isObj || target[Keys.Raw] || target[Keys.ProxyFreeObject]) return target;\n // 2. 返回已有代理\n const p = rawToProxy.get(target);\n if (p) return p;\n\n const targetIsMap = target instanceof Map;\n const targetIsSet = target instanceof Set;\n\n // Map/Set 特殊代理\n if (targetIsMap || targetIsSet) {\n const cells = new Map<any, Signal>();\n const meta = { deep, scope, cells };\n const shared = createSharedHandler(cells, scope, deep, targetIsMap);\n const specific = targetIsMap\n ? createMapHandler(cells, scope, deep)\n : createSetHandler(cells, scope, deep);\n const instrumentations = mergeHandlers(shared, specific);\n\n const proxy = new Proxy(target, {\n get(_obj, prop, receiver) {\n if (prop === Keys.Raw) return target;\n if (prop === Keys.Meta) return meta;\n if (prop === Symbol.toStringTag) return targetIsMap ? 'Map' : 'Set';\n\n // size getter — 依赖 Iterator,读取原始 target\n if (prop === 'size') {\n trackIterator(cells, scope);\n return Reflect.get(target, 'size', target);\n }\n\n // 拦截已知方法\n if (prop in instrumentations) {\n const fn = instrumentations[prop];\n return typeof fn === 'function' ? fn.bind(receiver) : fn;\n }\n\n // 其他自定义属性\n const value = Reflect.get(target, prop, receiver);\n if (typeof value === 'function') return value;\n return deep ? deepSignal(value, scope) : value;\n }\n });\n\n rawToProxy.set(target, proxy);\n return proxy;\n }\n\n // 每个对象维护自己的 cells 闭包\n const cells = new Map<any, Signal>();\n const targetIsArray = Array.isArray(target);\n const targetIsStore = Boolean(target.constructor?.[IsStore]);\n const meta = {\n deep,\n scope,\n cells\n };\n const proxy = new Proxy(target, {\n get(obj, prop, receiver) {\n switch (prop) {\n case Keys.Raw:\n return target;\n case Keys.Meta:\n return meta;\n default:\n break;\n }\n\n if (prop === Symbol.unscopables) return Reflect.get(obj, prop, receiver);\n\n if (targetIsStore && isIgnoreKey(obj.constructor[StoreIgnoreKeys], prop)) {\n return Reflect.get(obj, prop, receiver);\n }\n\n const desc = Reflect.getOwnPropertyDescriptor(obj, prop);\n\n const isGetter = desc && typeof desc.get === 'function';\n\n if (isGetter) {\n return handleGetterAsComputed(obj, prop, receiver, cells as any, scope);\n }\n\n // 创建 Signal\n const value = Reflect.get(obj, prop, receiver);\n\n const valueIsFn = typeof value === 'function';\n if (valueIsFn) {\n if (targetIsArray) {\n return arrayMethodReWrites[prop] || value;\n } else {\n return value;\n }\n }\n\n // 已有对应 Signal\n let s: Signal = cells.get(prop);\n if (s) {\n return s.get();\n }\n\n const wrappedValue = deep ? deepSignal(value, scope) : value;\n s = new Signal(wrappedValue);\n s.scope = scope;\n cells.set(prop, s);\n return s.get();\n },\n\n set(obj, prop, value, receiver) {\n if ((targetIsStore && isIgnoreKey(obj.constructor[StoreIgnoreKeys], prop)) || typeof value === 'function') {\n return Reflect.set(obj, prop, value, receiver);\n }\n // 在 Reflect.set 之前检查是否为新增属性,避免设置后检查失效\n const isNewKey = !Reflect.has(obj, prop);\n // 数组项 set 可能出现 Iterator 设置,用 batch 避免 effect 多次执行\n batchStart();\n const success = Reflect.set(obj, prop, value, receiver);\n // 已有对应 Signal,更新 signal 值\n const cell = cells.get(prop);\n if (cell) {\n cell.set(deep ? deepSignal(value, scope) : value);\n }\n\n if (targetIsArray) {\n handleArraySet(obj, prop, value, receiver);\n } else if (isNewKey) {\n receiver[Keys.Iterator] = (receiver[Keys.Raw][Keys.Iterator] || 0) + 1;\n }\n batchEnd();\n // 保持原始对象干净\n return success;\n },\n\n // 【核心修改】拦截 delete 操作\n deleteProperty(obj, prop) {\n if ((targetIsStore && isIgnoreKey(obj.constructor[StoreIgnoreKeys], prop)) || typeof obj[prop] === 'function') {\n return Reflect.deleteProperty(obj, prop);\n }\n // 从 Map 中移除,切断引用,允许 GC 回收这个 $() 实例\n cells.delete(prop);\n const result = Reflect.deleteProperty(obj, prop);\n // 普通对象:删除总是改变键集合\n // 数组数字索引:仅在非批量操作时触发(用户直接 delete arr[0]),批量操作由方法重写统一管理 Iterator\n if (!targetIsArray) {\n proxy[Keys.Iterator] = (obj[Keys.Iterator] || 0) + 1;\n }\n return result;\n },\n\n ownKeys(obj) {\n if (targetIsArray) {\n // @ts-ignore\n proxy.length;\n } else {\n proxy[Keys.Iterator];\n }\n // 过滤内部属性 __AOYE_ITERATOR\n return Reflect.ownKeys(obj).filter(key => key !== Keys.Iterator);\n }\n });\n\n rawToProxy.set(target, proxy);\n return proxy;\n};\n\n/**\n * 将 from 响应式对象中 fromKey 对应的 Signal\n * 共享给 to 响应式对象的 toKey\n */\nexport const shareSignal = (from: any, fromPath: string, to: any, toPath: string) => {\n try {\n const toPaths = toPath.split('.');\n const formPaths = Array.isArray(fromPath) ? fromPath : fromPath.split('.');\n runWithPulling(() => {\n const { target: fromTarget, key: fromKey } = getTargetAndKey(from, formPaths);\n // 通过 get 陷阱确保 signal 已生成\n const val = fromTarget[fromKey];\n // 获取 signal\n const fromSignal = fromTarget[Keys.Meta].cells.get(fromKey)!;\n\n // 将 signal 共享给 to 代理对象\n const { target: toTarget, key: toKey } = getTargetAndKey(to, toPaths);\n toTarget[Keys.Meta].cells.set(toKey, fromSignal);\n toTarget[Keys.Raw][toKey] = val;\n }, null);\n } catch (error) {\n console.error('映射了不存在的Key!');\n throw error;\n }\n};\n\nfunction getTargetAndKey(obj: any, paths: string[]) {\n let target = obj;\n let key = '';\n const len = paths.length;\n for (let i = 0; i < len; i++) {\n key = paths[i];\n // 通过倒数第二个 key,可以找到代理对象\n if (i < len - 1) {\n target = target[key];\n }\n }\n return { target, key };\n}\n\nfunction isIgnoreKey(ignores: Key[], key: Key) {\n if (typeof key !== 'string') {\n return ignores.includes(key);\n }\n return ignores.some(it => typeof it === 'string' && key.startsWith(it));\n}\n\nfunction handleGetterAsComputed(\n obj: object,\n prop: string | symbol,\n receiver: any,\n cells: Map<any, Computed>,\n scope: Scope\n) {\n let s = cells.get(prop);\n if (s) {\n return s.get();\n }\n\n s = new Computed(() => Reflect.get(obj, prop, receiver));\n s.scope = scope;\n cells.set(prop, s);\n return s.get();\n}\n\nfunction handleArraySet(arr: object, prop: string | symbol, value: any, receiver: any) {\n // 设置 length\n if (prop === 'length') {\n }\n // 设置 index,由于 includes 等方法不对 index 再做监听,通过 Keys.Iterator 来保证副作用正确执行\n else if (isNatureNumStr(prop)) {\n receiver[Keys.Iterator] = (arr[Keys.Iterator] || 0) + 1;\n }\n // 其他\n else {\n triggerIter(arr, prop, value, receiver);\n }\n}\n\nfunction triggerIter(obj: object, prop: string | symbol, value: any, receiver: any) {\n if (!Reflect.has(obj, prop)) {\n receiver[Keys.Iterator] = (receiver[Keys.Raw][Keys.Iterator] || 0) + 1;\n }\n}\n\nconst arrayMethodReWrites: any = {};\n/*----------------- 增删移 增加 __Iterator Set ✅ -----------------*/\n['pop', 'push', 'shift', 'splice', 'unshift', 'copyWithin', 'reverse', 'fill'].forEach(key => {\n arrayMethodReWrites[key] = function (...args: any[]) {\n batchStart();\n const fn = Array.prototype[key];\n // 不会进行依赖收集,但是会触发 set\n const res = runWithPulling(() => fn.call(this, ...args), null);\n this[Keys.Iterator] = (this[Keys.Raw][Keys.Iterator] || 0) + 1;\n batchEnd();\n return res;\n };\n});\n\n/*----------------- 全等匹配 仅收集 __Iterator Get, 尝试使用原始或代理值再找一遍 ✅ -----------------*/\n['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\n arrayMethodReWrites[key] = function (...args: any[]) {\n const fn = Array.prototype[key];\n const that = toRaw(this);\n let result = fn.call(that, ...args);\n const value = args[0];\n // 使用传入的值但是未找到,尝试使用代理值,或原始值查询\n if ((result === false || result === -1) && typeof value === 'object' && value !== null) {\n if (value[Keys.Raw]) {\n args[0] = value[Keys.Raw];\n result = fn.call(that, ...args);\n }\n const p = rawToProxy.get(value);\n if (p) {\n args[0] = p;\n result = fn.call(that, ...args);\n }\n }\n // 增加 __Iterator Get\n this[Keys.Iterator];\n return result;\n };\n});\n\n/*----------------- 重写迭代器获取 仅收集 __Iterator Get, ✅ -----------------*/\n// keys 不重写因为 array 的 keys 和 length 对等, length 不变 keys 也不变\n[Symbol.iterator, 'values', 'entries'].forEach(key => {\n const isEntries = key === 'entries';\n arrayMethodReWrites[key] = function (...args: any[]) {\n const fn = Array.prototype[key];\n const rawArray = toRaw(this);\n const iter = fn.call(rawArray, ...args);\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n // 深度代理需要将 iter.next 返回值转 proxy\n if (isDeep) {\n const rawNext = iter.next.bind(iter);\n iter.next = () => {\n const result = rawNext();\n if (!result.done) {\n if (isEntries) {\n result.value[1] = deepSignal(result.value[1], scope);\n } else {\n result.value = deepSignal(result.value, scope);\n }\n }\n return result;\n };\n }\n\n this[Keys.Iterator];\n\n return iter;\n };\n});\n\n/**\n * filter 函数的实现\n */\narrayMethodReWrites.filter = function (callback, thisArg) {\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n const result = [];\n let resultIndex = 0;\n\n const userThis = thisArg || that;\n\n const len = that.length;\n for (let i = 0; i < len; i++) {\n // 使用 in 操作符检查索引是否存在\n // 原生 filter 会跳过空洞(比如 [1, , 3] 中的 index 1)\n if (i in that) {\n const value = isDeep ? deepSignal(that[i], scope) : that[i];\n // 性能点 3:直接调用回调,避免使用多余的包装\n if (callback.call(userThis, value, i, userThis)) {\n // 性能点 4:直接通过索引赋值,通常比 push() 略快\n result[resultIndex++] = value;\n }\n }\n }\n this[Keys.Iterator];\n return result;\n};\n\narrayMethodReWrites.slice = function (start, end) {\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n\n const that = toRaw(this);\n const len = that.length;\n\n // 1. 处理 start 参数\n let k = start || 0;\n if (k < 0) {\n k = Math.max(len + k, 0);\n } else {\n k = Math.min(k, len);\n }\n\n // 2. 处理 end 参数\n let final = end === undefined ? len : end;\n if (final < 0) {\n final = Math.max(len + final, 0);\n } else {\n final = Math.min(final, len);\n }\n\n // 3. 计算实际需要抽取的长度\n const count = Math.max(final - k, 0);\n\n // 4. 预分配数组空间以提升性能(针对大数组非常有效)\n // 现代引擎对于已知长度的数组初始化会有优化\n const result = new Array(count);\n\n // 5. 循环赋值\n for (let i = 0; i < count; i++) {\n // 确保处理稀疏数组的情况,保持与原生行为一致\n if (i + k in that) {\n result[i] = isDeep ? deepSignal(that[i + k], scope) : that[i + k];\n }\n }\n this[Keys.Iterator];\n return result;\n};\n\narrayMethodReWrites.toReversed = function () {\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n\n // 2. 获取数组长度(使用无符号右移保证为正整数,模拟规范中的 ToLength/ToUint32)\n const len = that.length;\n\n // 3. 创建等长的新数组\n // 预先分配内存空间比不断 push 性能更好\n const result = new Array(len);\n\n // 4. 填充新数组\n // 使用双指针或简单减法遍历。由于 O[i] 可能触发 getter,\n // 且我们需要处理稀疏数组,直接赋值 A[k] = O[j] 即可。\n let k = 0;\n while (k < len) {\n // 根据规范,toReversed 会读取索引值,如果索引不存在则为 undefined\n // 这会自动将稀疏数组的 hole 转为 undefined\n result[k] = isDeep ? deepSignal(that[len - 1 - k], scope) : that[len - 1 - k];\n k++;\n }\n\n this[Keys.Iterator];\n // 5. 返回结果\n return result;\n};\n\narrayMethodReWrites.toSpliced = function (start, deleteCount, ...items) {\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n\n const len = that.length;\n\n // 1. 确定实际的相对起始索引 (处理负数和越界)\n let relativeStart = start >> 0; // 快速取整\n let actualStart = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len);\n\n // 2. 确定实际删除的数量\n let actualDeleteCount;\n if (arguments.length === 0) {\n actualDeleteCount = 0;\n } else if (arguments.length === 1) {\n actualDeleteCount = len - actualStart;\n } else {\n let dc = deleteCount >> 0;\n actualDeleteCount = Math.min(Math.max(dc, 0), len - actualStart);\n }\n\n // 3. 计算新数组长度\n const insertCount = items.length;\n const newLen = len - actualDeleteCount + insertCount;\n const result = new Array(newLen);\n\n // 4. 填充新数组(分段式操作,性能最优)\n\n // 第一段:保留起始点之前的元素\n for (let i = 0; i < actualStart; i++) {\n result[i] = isDeep ? deepSignal(that[i], scope) : that[i];\n }\n\n // 第二段:插入新元素\n for (let i = 0; i < insertCount; i++) {\n result[actualStart + i] = isDeep ? deepSignal(items[i], scope) : items[i];\n }\n\n // 第三段:保留被删除部分之后的剩余元素\n const remainingStart = actualStart + actualDeleteCount;\n const resultOffset = actualStart + insertCount;\n for (let i = 0; i < len - remainingStart; i++) {\n result[resultOffset + i] = isDeep ? deepSignal(that[remainingStart + i], scope) : that[remainingStart + i];\n }\n\n this[Keys.Iterator];\n return result;\n};\n\narrayMethodReWrites.with = function (index, value) {\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n\n // 1. 获取数组长度(确保处理类数组对象)\n const len = that.length;\n\n // 2. 转换索引为整数(处理 undefined/NaN 等情况)\n let relativeIndex = Number(index) || 0;\n\n // 3. 处理负数索引逻辑\n let actualIndex = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n\n // 4. 边界检查:如果索引越界,抛出 RangeError\n if (actualIndex >= len || actualIndex < 0) {\n throw new RangeError(`Invalid index: ${index}`);\n }\n\n // 5. 性能优化点:预分配数组空间\n // 使用 new Array(len) 配合循环在处理大数组且包含空位时,\n // 比 [...that] 或 slice() 更加符合规范对“稀疏转密集”的要求。\n const result = new Array(len);\n\n for (let i = 0; i < len; i++) {\n if (i === actualIndex) {\n result[i] = isDeep ? deepSignal(value, scope) : value;\n } else {\n result[i] = isDeep ? deepSignal(that[i], scope) : that[i];\n }\n }\n this[Keys.Iterator];\n return result;\n};\n\narrayMethodReWrites.concat = function (...items) {\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n const selfLen = that.length; // 确保长度为正整数\n\n // 2. 预计算总长度以优化性能\n let totalLength = selfLen;\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n // 模拟原生 concat 的展开逻辑:只有数组会被展开\n if (Array.isArray(item)) {\n totalLength += item.length;\n } else {\n totalLength += 1;\n }\n }\n\n // 3. 创建结果数组(预设长度)\n const result = new Array(totalLength);\n let k = 0;\n\n // 4. 填充原数组数据\n for (; k < selfLen; k++) {\n if (k in that) {\n result[k] = isDeep ? deepSignal(that[k], scope) : that[k];\n }\n }\n\n // 5. 填充参数数据\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (Array.isArray(item)) {\n for (let j = 0; j < item.length; j++) {\n if (j in item) {\n result[k] = isDeep ? deepSignal(item[j], scope) : item[j];\n }\n k++;\n }\n } else {\n result[k] = isDeep ? deepSignal(item, scope) : item;\n k++;\n }\n }\n this[Keys.Iterator];\n return result;\n};\n\n/*----------------- 回调函数 仅收集 __Iterator Get,回调中收集用户 get -----------------*/\nconst GetMethodConf = {\n wrapReturn: false,\n wrapArgs: 0b01\n};\n[\n {\n key: 'every',\n ...GetMethodConf\n },\n {\n key: 'find',\n wrapReturn: true,\n ...GetMethodConf\n },\n {\n key: 'findLast',\n ...GetMethodConf,\n wrapReturn: true\n },\n {\n key: 'findIndex',\n ...GetMethodConf\n },\n {\n key: 'findLastIndex',\n ...GetMethodConf\n },\n {\n key: 'forEach',\n ...GetMethodConf\n },\n {\n key: 'map',\n ...GetMethodConf\n },\n {\n key: 'some',\n ...GetMethodConf\n },\n {\n key: 'reduce',\n ...GetMethodConf,\n wrapArgs: 0b10\n },\n {\n key: 'reduceRight',\n ...GetMethodConf,\n wrapArgs: 0b10\n }\n].forEach(({ key, wrapReturn, wrapArgs }) => {\n arrayMethodReWrites[key] = function (...args: any[]) {\n const meta = this[Keys.Meta];\n const fn = Array.prototype[key];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n warpCallbackArgs(isDeep, args, scope, wrapArgs);\n // 遍历函数不收集数组属性\n let result = fn.call(that, ...args);\n if (wrapReturn && isDeep) {\n result = deepSignal(result, scope);\n }\n this[Keys.Iterator];\n return result;\n };\n});\n\n// TODO: 考虑是否基于 js 实现以提高性能\narrayMethodReWrites.toSorted = function (...args: any[]) {\n const fn = Array.prototype['toSorted'];\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n warpCallbackArgs(isDeep, args, scope, 0b11);\n let result = fn.call(that, ...args);\n this[Keys.Iterator];\n return isDeep ? result.map(it => deepSignal(it, scope)) : result;\n};\n\n/*----------------- 转换方法 仅收集 仅收集 __Iterator Get -----------------*/\n['join', 'toString', 'toLocaleString'].forEach(key => {\n arrayMethodReWrites[key] = function (...args: any[]) {\n const fn = Array.prototype[key];\n const that = toRaw(this);\n const result = fn.call(that, ...args);\n this[Keys.Iterator];\n return result;\n };\n});\n\nfunction warpCallbackArgs(isDeep: boolean, args: any[], scope: Scope, wrapArgs: number = 0b01) {\n const callback = args[0];\n const wrapCb = function (this: any, ...cbArgs: any[]) {\n if (isDeep) {\n if (wrapArgs & 0b01) cbArgs[0] = deepSignal(cbArgs[0], scope);\n if (wrapArgs & 0b10) cbArgs[1] = deepSignal(cbArgs[1], scope);\n }\n // 遍历函数不收集数组属性,但是回调函数需要收集用户的 get\n return callback.call(this, ...cbArgs);\n };\n args[0] = wrapCb;\n}\n\n// TODO: flat flatMap sort\n\n/**\n * 无需重写:\n * 1. at\n * 2. keys\n */\n","import { Computed } from './core/computed';\nimport { getPulling } from './core';\nimport { deepSignal, shareSignal } from './deep-signal';\nimport { DeepOmitPath, IsStore, Key, Keys, PRecord, StoreIgnoreKeys } from './type';\n\n/** 判断 expr 是否是 parentStore 上的一个 key(仅浅层,不涉及深度路径) */\nconst isParentKey = (parentStore: any, expr: string) => expr in parentStore[Keys.Raw];\n\nexport class Store {\n static [IsStore] = true;\n static [StoreIgnoreKeys]: Key[] = ['ui', 'raw'];\n static Current: Store = null;\n constructor() {\n const proxy = deepSignal(this, getPulling(), true);\n Store.Current = proxy;\n return proxy;\n }\n parent: () => Store | null = () => null;\n\n /**\n * 创建子 Store 实例并传递属性:\n * Store.new({ prop1: `v1+v2`, prop2: (p) => p.v3 * p.v4 }, { prop3: 123 })\n *\n * keyMap:childKey → 表达式\n * - string:解析为 with(parentStore) { ... } 表达式,结果包装为 Computed\n * - Function:直接包装为 Computed(() => fn(parentStore))\n *\n * staticMap:childKey → 静态值,直接赋值\n */\n static new<T extends Store = any, P extends Store = any, O extends string = ''>(\n this: new (...args: any[]) => T,\n keyMap?: PRecord<keyof T, keyof Omit<P, O> | DeepOmitPath<P, O>> | Record<string, string | Function>,\n staticMap?: PRecord<keyof T, any>\n ): T {\n const parentStore = Store.Current;\n const child = new (this as any)();\n if (parentStore && keyMap) {\n const cells: Map<string, any> = child[Keys.Meta].cells;\n for (const childKey in keyMap) {\n const expr = (keyMap as Record<string, any>)[childKey];\n\n if (typeof expr === 'function') {\n // 函数表达式 → Computed\n cells.set(childKey, new Computed(() => expr(parentStore)));\n child[Keys.Raw][childKey] = undefined;\n } else if (typeof expr === 'string') {\n // 字符串:若 parentStore 上存在同名 key → shareSignal 双向共享;\n // 否则视为 JS 表达式 → Computed 单向传递\n if (isParentKey(parentStore, expr)) {\n shareSignal(parentStore, expr, child, childKey);\n } else {\n const fn = new Function('data', `let v;with(data){v=${expr};}return v;`);\n cells.set(childKey, new Computed(() => fn(parentStore)));\n child[Keys.Raw][childKey] = undefined;\n }\n } else {\n // 数组:旧版 deep path,走 shareSignal 双向共享\n shareSignal(parentStore, expr as string, child, childKey);\n }\n }\n }\n for (const key in staticMap) {\n child[key] = staticMap[key];\n }\n child.parent = () => parentStore;\n Store.Current = parentStore;\n return child;\n }\n\n map<P extends Store = any, O extends string = ''>(\n keyMap: PRecord<keyof this, keyof Omit<P, O> | DeepOmitPath<P, O>> = {}\n ) {\n const parentStore = this.parent();\n if (parentStore) {\n for (const childKey in keyMap) {\n const parentKey: string = keyMap[childKey] as any;\n shareSignal(parentStore, parentKey, this, childKey);\n }\n }\n this.parent = null;\n }\n}\n","import { Computed, Effect, EffectStrType2Enum, getPulling, ScheduleType, ScheduleTypeStr, Scope, Signal } from './core';\nimport { State } from './core/macro' with { type: 'macro' };\nimport { ValueDiff } from './type';\nimport { deepSignal } from './deep-signal';\n\nexport function $(data: any) {\n if (typeof data === 'object' && data !== null) {\n return deepSignal(data, getPulling());\n }\n if (typeof data === 'function') {\n const s = new Computed(data),\n get = s.get.bind(s);\n return {\n ins: s,\n get v() {\n return get();\n }\n };\n } else {\n const s = new Signal(data),\n set = s.set.bind(s),\n get = s.get.bind(s);\n return {\n ins: s,\n get v() {\n return get();\n },\n set v(v) {\n set(v);\n }\n };\n }\n}\n\nconst DefaultCustomEffectOpt = {\n immediate: true,\n type: 'sync' as ScheduleTypeStr\n};\n\nexport type CustomEffectOpt = Partial<typeof DefaultCustomEffectOpt>;\n\nexport function effectUt(\n callback: (...args: ValueDiff[]) => void,\n depOrOpt?: any[] | CustomEffectOpt,\n opt?: CustomEffectOpt\n) {\n /*----------------- 自动收集 -----------------*/\n const hasDep = Array.isArray(depOrOpt);\n opt = hasDep ? opt || {} : depOrOpt || {};\n const scheduleType = EffectStrType2Enum[opt.type];\n if (!hasDep) {\n // @ts-ignore\n const ef = new Effect(callback, scheduleType);\n const run = ef.dispose.bind(ef);\n run.ins = ef;\n return run;\n }\n /*----------------- 指定依赖, watcher -----------------*/\n let mounted = false;\n const deps = depOrOpt as any[];\n const immediate = deps.length === 0 ? true : (opt.immediate ?? true);\n const vs: ValueDiff[] = Array.from({ length: deps.length }, () => ({ old: null, val: null }));\n\n const ef = new Effect(eff => {\n for (let i = 0; i < deps.length; i++) {\n const value = deps[i].v;\n vs[i].old = vs[i].val;\n vs[i].val = value;\n }\n\n if (mounted || immediate) {\n eff.state |= State.LinkScopeOnly;\n callback(...vs);\n eff.state &= ~State.LinkScopeOnly;\n }\n mounted = true;\n }, scheduleType);\n const run = ef.dispose.bind(ef);\n run.ins = ef;\n return run;\n}\n\nexport function effect(\n callback: (...args: ValueDiff[]) => void,\n depOrOpt?: any[] | CustomEffectOpt,\n opt?: CustomEffectOpt\n) {\n /*----------------- 自动收集 -----------------*/\n const hasDep = Array.isArray(depOrOpt);\n opt = hasDep ? opt || {} : depOrOpt || {};\n opt = { ...DefaultCustomEffectOpt, ...opt };\n const scheduleType = EffectStrType2Enum[opt.type];\n if (!hasDep) {\n // @ts-ignore\n const ef = new Effect(callback, scheduleType);\n return ef;\n }\n /*----------------- 指定依赖, watcher -----------------*/\n let mounted = false;\n const deps = depOrOpt as any[];\n const immediate = deps.length === 0 ? true : (opt.immediate ?? true);\n const vs: ValueDiff[] = Array.from({ length: deps.length }, () => ({ old: null, val: null }));\n\n const ef = new Effect(eff => {\n for (let i = 0; i < deps.length; i++) {\n const dep = deps[i];\n const value = typeof dep === 'function' ? dep() : dep.get();\n vs[i].old = vs[i].val;\n vs[i].val = value;\n }\n\n if (mounted || immediate) {\n eff.state |= State.LinkScopeOnly;\n callback(...vs);\n eff.state &= ~State.LinkScopeOnly;\n }\n mounted = true;\n }, scheduleType);\n return ef;\n}\n\nexport function scope(...args) {\n const ins = new Scope(args[0]);\n if (args.length === 2) {\n ins.scope = args[1];\n }\n ins.get();\n const run = ins.dispose.bind(ins);\n run.ins = ins;\n return run;\n}\n"],"names":["_execId","currentExecId","execIdInc","execId","setExecId","v","pulling","setPulling","getPulling","runWithPulling","fn","scope","oldPulling","ret","ScheduleType","EffectStrType2Enum","sync","Sync","pre","Pre","render","Render","post","Post","ScheduleStatus","MultiScheduler","hasTask","taskMap","constructor","queueCount","i","head","tail","addTask","queueId","task","queue","item","value","next","flushAllTask","highest","consumeTask","get","multiScheduler","Keys","IsStore","Symbol","StoreIgnoreKeys","ide","globalThis","requestIdleCallback","requestAnimationFrame","setTimeout","now","timer","performance","Date","channel","MessageChannel","msgId","macro","memoId","onMessage","e","data","port2","removeEventListener","addEventListener","port1","postMessage","p","Promise","resolve","micro","cb","then","toRaw","a","Raw","mark","signal","line","emitHead","down","state","State","notLocked","type","addEffect","markUnknownDeep","nextEmitLine","initialLine","noPulling","stack","len","DirtyState","pullDeep","root","node","top","lineStack","_node","noSkipSelf","PullingOrScopeExecuted","firstLine","recHead","up","_node2","noGoSibling","prevValue","prevPulling","_line","transferDirtyState","nextRecLine","effectQueue","consumeI","produceI","effect","flushSyncEffect","schedulerStatus","Idle","flushMicroEffect","Ready","Running","flushMicroEffectManual","_batchDeep","batchStart","batchEnd","batchDeep","unlink","deep","prevEmitLine","prevRecLine","prevOutLink","nextOutLink","emitTail","recTail","outLink","dispose","_ref","toDel","_toDel","outer","ScopeAbort","releaseScope","clean","onClean","current","link","scopeUp","scopeDown","nextRec","eid","makeOutLink","first","Computed","callback","shouldLink","notForceUpdate","nextId","prevId","nextLine","Signal","set","EffectState","Effect","res","prototype","ScopeAndLinkScopeOnly","Scope","NoopEffect","noopEffect","rawToProxy","WeakMap","Unknown","Dirty","ScopeReady","trackIterator","cells","iter","Iterator","triggerIterator","trackKey","key","cell","undefined","triggerKey","createSharedHandler","targetIsMap","iterate","rawTarget","iteratorFn","rawIter","rawNext","bind","result","done","deepSignal","has","target","delete","had","clear","hadItems","size","iterCell","forEach","thisArg","wrap","val","k","call","keys","values","entries","iterator","createMapHandler","createSetHandler","_deep","add","mergeHandlers","handlers","Object","assign","isObj","ProxyFreeObject","Map","targetIsSet","Set","meta","shared","specific","instrumentations","proxy","Proxy","_obj","prop","receiver","Meta","toStringTag","Reflect","targetIsArray","Array","isArray","targetIsStore","Boolean","obj","unscopables","isIgnoreKey","desc","getOwnPropertyDescriptor","isGetter","handleGetterAsComputed","valueIsFn","arrayMethodReWrites","s","wrappedValue","isNewKey","success","handleArraySet","deleteProperty","ownKeys","length","filter","shareSignal","from","fromPath","to","toPath","toPaths","split","formPaths","_getTargetAndKey","getTargetAndKey","fromTarget","fromKey","fromSignal","_getTargetAndKey2","toTarget","toKey","error","console","paths","ignores","includes","some","it","startsWith","arr","isNatureNumStr","triggerIter","args","that","isEntries","rawArray","isDeep","resultIndex","userThis","slice","start","end","Math","max","min","final","count","toReversed","toSpliced","deleteCount","items","relativeStart","actualStart","actualDeleteCount","arguments","dc","insertCount","newLen","remainingStart","resultOffset","with","index","relativeIndex","Number","actualIndex","RangeError","concat","selfLen","totalLength","j","GetMethodConf","wrapReturn","wrapArgs","warpCallbackArgs","toSorted","map","wrapCb","cbArgs","isParentKey","parentStore","expr","Store","Current","parent","new","keyMap","staticMap","child","childKey","Function","parentKey","$","ins","DefaultCustomEffectOpt","immediate","effectUt","depOrOpt","opt","hasDep","scheduleType","ef","run","mounted","deps","vs","old","eff","dep"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/core/global.ts","../src/core/type.ts","../src/core/schedule.ts","../src/type.ts","../src/util.ts","../src/core/operate.ts","../src/core/line.ts","../src/core/computed.ts","../src/core/signal.ts","../src/core/effect.ts","../src/core/scope.ts","../src/global.ts","../src/map-set-handler.ts","../src/deep-signal.ts","../src/store.ts","../src/functional-api.ts"],"sourcesContent":["import { SignalNode } from './type';\n\nlet _execId = 0;\nlet currentExecId = 0;\n\nexport const execIdInc = () => ++_execId;\n/** effect、computed 回调执行的唯一 id\n * 用于判断重复依赖属于同一 effect、effect、computed\n */\nexport const execId = () => currentExecId;\nexport const setExecId = (v: number) => (currentExecId = v);\n\nlet pulling: SignalNode = null;\nexport const setPulling = (v: SignalNode) => (pulling = v);\nexport const getPulling = () => pulling as any;\n\nexport function runWithPulling<T extends (...args: any[]) => any>(fn: T, scope: any): ReturnType<T> {\n const oldPulling = pulling;\n pulling = scope;\n const ret = fn();\n pulling = oldPulling;\n return ret;\n}\n","import { Computed } from './computed';\nimport { Effect } from './effect';\nimport { Scope } from './scope';\nimport { Signal } from './signal';\n\nexport type OnClean = (isDestroy: boolean) => any;\n\nexport type SignalNode = Partial<\n Omit<Computed, 'callback'> & {\n dispose(): void;\n }\n>;\nexport type Link = {\n execId: number;\n up: SignalNode;\n down: SignalNode;\n nextEmitLine: Link;\n prevEmitLine: Link;\n nextRecLine: Link;\n prevRecLine: Link;\n};\n\nexport type OutLink = Link & {\n nextOutLink: OutLink;\n prevOutLink: OutLink;\n};\n\nexport type SideEffect = Effect | Computed;\n\nexport enum ScheduleType {\n /** signal 变化后 同步执行 Effect */\n Sync = 0b0000_0000_0000_0000_0000_0000_0000_0001,\n /** signal 变化后优先级最高的异步任务 */\n Pre = 0b0000_0000_0000_0000_0000_0000_0000_0010,\n /** signal 变化后优先级第二高的异步任务 */\n Render = 0b0000_0000_0000_0000_0000_0000_0000_0100,\n /** signal 变化后优先级第三高的异步任务 */\n Post = 0b0000_0000_0000_0000_0000_0000_0000_1000\n}\n\nexport const EffectStrType2Enum = {\n sync: ScheduleType.Sync,\n pre: ScheduleType.Pre,\n render: ScheduleType.Render,\n post: ScheduleType.Post\n};\n\nexport type ScheduleTypeStr = keyof typeof EffectStrType2Enum;\n\nexport enum ScheduleStatus {\n /** 空闲 */\n Idle = 0,\n /** 准备运行 */\n Ready,\n /** 运行中 */\n Running\n}\n","import { micro } from '#/util';\nimport { Effect } from './effect';\n\nexport type TaskNode<T> = {\n value: T;\n next: TaskNode<T> | null;\n};\n\nexport type TaskQueue<T> = {\n head: TaskNode<T> | null;\n tail: TaskNode<T> | null;\n};\n\n/** bobe 专用的调度器 */\nexport class MultiScheduler<T> {\n /** 二进制位表示某个队列中是否有任务 */\n hasTask = 0;\n taskMap: Record<number, TaskQueue<T>> = {};\n constructor(queueCount: number) {\n for (let i = 0; i < queueCount; i++) {\n this.taskMap[1 << i] = {\n head: null,\n tail: null\n };\n }\n }\n\n addTask(queueId: number, task: any) {\n const queue = this.taskMap[queueId];\n const { tail } = queue;\n const item = {\n value: task,\n next: null\n };\n if (tail) {\n tail.next = item;\n } else {\n queue.head = item;\n }\n queue.tail = item;\n this.hasTask |= queueId;\n }\n\n flushAllTask() {\n // TODO: 开发环境 考虑异步 effect 循环依赖的情况\n while (this.hasTask) {\n const { hasTask } = this;\n const highest = hasTask & (~hasTask + 1);\n const task: Effect = this.consumeTask(highest).value as any;\n task.get();\n }\n }\n\n consumeTask(queueId: number) {\n const queue = this.taskMap[queueId];\n const { head, tail } = queue;\n const next = head.next;\n head.next = null;\n if (head === tail) {\n queue.head = null;\n queue.tail = null;\n // 最后一项被消费,这个队列就没有任务了\n this.hasTask &= ~queueId;\n } else {\n head.next = null;\n queue.head = next;\n }\n return head;\n }\n}\n\n/** TODO: 考虑如何与 ScheduleType 对齐\n * TODO: 考虑异步 effect 循环依赖的情况\n */\nexport const multiScheduler = new MultiScheduler(4);\n","import type { Signal } from './core';\nexport { Signal };\n\nexport type SignalType = 'ref' | 'auto' | 'proxy';\n\nexport enum Keys {\n Iterator = '__AOYE_ITERATOR',\n Raw = '__AOYE_RAW',\n Meta = '__AOYE_META',\n /** 当一个值对象标记为 ShallowObject 时,它的所有属性都不需要代理 */\n ProxyFreeObject = '__AOYE_PROXY_FREE_OBJECT'\n}\nexport type Key = string | number | symbol;\n/** store 标识 */\nexport const IsStore = Symbol('__AOYE_IS_STORE'),\n StoreIgnoreKeys = Symbol('__AOYE_IGNORE_KEYS');\n\nexport type TaskControlReturn = {\n /** 当前任务已完成 */\n finished?: boolean;\n /** 启动一个新 定时器 | RAF | Idle | 微任务 ... 等 */\n startNewCallbackAble?: boolean;\n};\n\nexport type Task = {\n (): TaskControlReturn | void;\n [key: string]: any;\n};\n\nexport type CreateTaskProps = {\n callbackAble: (fn: Function) => any;\n aIsUrgent: (a: Task, b: Task) => boolean;\n};\nexport type Mix<T = any> = {\n (v: T): void;\n (): T;\n v: T;\n stop(): void;\n};\n\nexport type ValueDiff = {\n old: any;\n val: any;\n};\n\nexport type CreateScope = (customPull: () => void, scope?: Signal) => Dispose;\n\nexport type Dispose = {\n (): void;\n ins: Signal;\n};\n\n// 定义一个递减器,用来控制深度\ntype Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n\nexport type DeepPath<T, Depth extends number = 8> = [Depth] extends [never]\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: [K] | [K, ...DeepPath<T[K], Prev[Depth]>];\n }[keyof T]\n : never;\n\nexport type DeepOmitPath<T, K extends string> = DeepPath<Omit<T, K>, 8>;\nexport type PRecord<K extends string | symbol | number, V> = Partial<Record<K, V>>;\nexport type DeepValue<T, P> = P extends [infer Head, ...infer Tail]\n ? Head extends keyof T\n ? Tail extends []\n ? T[Head]\n : DeepValue<T[Head], Tail>\n : never\n : never;\n\nexport type MatchValue<V1, T2, P2> = (DeepValue<T2, P2> extends V1 ? P2 : never) ","import { Keys } from \"./type\";\n\nexport const ide =\n globalThis.requestIdleCallback ||\n (globalThis.requestAnimationFrame\n ? (fn: Function) =>\n globalThis.requestAnimationFrame(() => {\n setTimeout(() => {\n fn();\n });\n })\n : globalThis.setTimeout);\n\nexport const now = () => {\n const timer = globalThis.performance || globalThis.Date;\n return timer.now();\n};\nlet channel: MessageChannel = globalThis.MessageChannel ? new MessageChannel() : null;\nif (globalThis.MessageChannel) {\n channel = new MessageChannel();\n}\nlet msgId = 0;\nexport const macro = fn => {\n if (!channel) {\n setTimeout(fn);\n }\n const memoId = msgId;\n function onMessage(e) {\n if (memoId === e.data) {\n fn();\n channel.port2.removeEventListener('message', onMessage);\n }\n }\n channel.port2.addEventListener('message', onMessage);\n channel.port1.postMessage(msgId++);\n};\n\nconst p = Promise.resolve();\nexport const micro = (cb: () => any) => {\n p.then(cb)\n}\n\nexport const toRaw = <T>(a: T) => {\n if (typeof a === 'object' && a !== null && a[Keys.Raw]) {\n return toRaw(a[Keys.Raw]);\n }\n return a;\n};","import { setPulling, getPulling } from './global';\nimport { Effect } from './effect';\nimport { Signal } from './signal';\nimport { Link, SideEffect, OutLink, SignalNode, OnClean, ScheduleType, ScheduleStatus } from './type';\nimport { State, DirtyState, PullingOrScopeExecuted, ScopeAbort } from './macro' with { type: 'macro' };\nimport { multiScheduler } from './schedule';\nimport { micro } from '#/util';\n\nexport function mark(signal: Signal) {\n let line = signal.emitHead;\n while (line) {\n const down = line.down as Effect;\n const { scope, emitHead, state } = down;\n // if ((scope && scope.state & State.ScopeAbort) || down === up.scope || state & ScopeExecuted) {\n // }\n if (scope && scope.state & State.ScopeAbort) {\n } else {\n const notLocked = (state & State.PullLock) === 0;\n down.state |= notLocked ? State.NeedCompute : State.PullingNeedCompute;\n // window['mark'] = (window['mark'] || 0) + 1;\n if (state & State.IsScope) {\n if (notLocked && state & State.IsEffect) {\n if (down.type === ScheduleType.Sync) {\n addEffect(down);\n } else {\n multiScheduler.addTask(down.type, down);\n }\n }\n } else if (emitHead) {\n markUnknownDeep(emitHead);\n }\n }\n line = line.nextEmitLine;\n }\n}\n\nfunction markUnknownDeep(initialLine: Link) {\n const noPulling = !getPulling();\n // 初始节点入栈\n const stack: Link[] = [initialLine];\n let len = 1;\n\n while (len > 0) {\n // 手动出栈,不触发数组缩容\n let line: Link = stack[--len];\n stack[len] = null as any;\n\n while (line) {\n const down = line.down as Effect;\n const { state, scope } = down;\n // 判定逻辑\n // const noSkip = !(\n // (scope && scope.state & State.ScopeAbort) ||\n // down === up.scope ||\n // state & UnknownOrScopeExecuted\n // );\n // 1. 禁用,2. 已标记\n if ((scope && scope.state & State.ScopeAbort) || (noPulling && state & DirtyState)) {\n } else {\n const notLocked = (state & State.PullLock) === 0;\n down.state |= notLocked ? State.Unknown : State.PullingUnknown;\n // window['mark'] = (window['mark'] || 0) + 1;\n if (state & State.IsScope) {\n if (notLocked && state & State.IsEffect) {\n if (down.type === ScheduleType.Sync) {\n addEffect(down);\n } else {\n multiScheduler.addTask(down.type, down);\n }\n }\n } else if (down.emitHead) {\n // 手动入栈\n stack[len++] = down.emitHead;\n }\n }\n\n line = line.nextEmitLine;\n }\n }\n}\n\nexport function pullDeep(root: SideEffect): any {\n let node = root,\n top: Link = null,\n i = -1;\n const lineStack: Link[] = [];\n do {\n const { state, scope } = node;\n let noSkipSelf = !(\n state & PullingOrScopeExecuted ||\n (state & DirtyState) === 0 ||\n (scope && scope.state & State.ScopeAbort)\n );\n // begin\n const firstLine = node.recHead;\n // 1. 本节点不跳过则可进入子节点,\n // 2. 本节点需要计算,不需要进入子节点\n if (noSkipSelf) {\n node.state |= State.PullLock;\n if ((state & State.NeedCompute) === 0 && firstLine) {\n node = firstLine.up as SideEffect;\n lineStack[++i] = top;\n top = firstLine;\n continue;\n }\n }\n\n do {\n const { state } = node;\n let noGoSibling = false;\n if (noSkipSelf) {\n // 子节点计算完成后重新查看父节点的 NeedCompute\n if (state & State.NeedCompute) {\n // window['update'] = (window['update'] || 0) + 1;\n // @ts-ignore\n const prevValue = node.value;\n const prevPulling = getPulling();\n setPulling(node);\n const value = node.get(false, false);\n setPulling(prevPulling);\n // 将父标记为 NeedCompute\n if ((noGoSibling = value !== prevValue)) {\n let line = node.emitHead;\n while (line) {\n const { down } = line;\n down.state &= ~State.Unknown;\n down.state |= State.NeedCompute;\n line = line.nextEmitLine;\n }\n }\n }\n // 不需要计算时将,将 blocked 标记释放\n else {\n transferDirtyState(node, state);\n }\n node.state &= ~State.PullLock;\n }\n // complete\n // 递归出口\n if (node === root) {\n // @ts-ignore\n return node.value;\n }\n if (!noGoSibling && top.nextRecLine) {\n top = top.nextRecLine;\n node = top.up as SideEffect;\n break;\n }\n // 避免回溯时子节点 noSkipSelf 影响到父节点\n noSkipSelf = true;\n node = top.down as SideEffect;\n top = lineStack[i];\n lineStack[i--] = null;\n } while (true);\n } while (true);\n}\n/**\n * 将 PullingUnknown、PullingNeedCompute\n * 转为 Unknown、NeedCompute\n * TODO: 考虑加属性 blockedSate 进行优化\n */\nexport function transferDirtyState(node: SideEffect, state: State) {\n // 被处理的节点应该恢复\n if (state & State.PullingUnknown) {\n node.state = (state & ~State.PullingUnknown) | State.Unknown;\n } else {\n node.state &= ~State.Unknown;\n }\n // 被处理的节点应该恢复\n if (state & State.PullingNeedCompute) {\n node.state = (state & ~State.PullingNeedCompute) | State.NeedCompute;\n } else {\n node.state &= ~State.NeedCompute;\n }\n}\nconst effectQueue: Effect[] = [];\nlet consumeI = -1,\n produceI = -1;\nexport function addEffect(effect: Effect) {\n effectQueue[++produceI] = effect;\n}\nexport function flushSyncEffect() {\n // 正在消费\n if (consumeI !== -1) {\n return;\n }\n while (++consumeI <= produceI) {\n const effect = effectQueue[consumeI];\n if (effect.state | DirtyState) {\n effect.get();\n }\n effectQueue[consumeI] = null;\n }\n consumeI = -1;\n produceI = -1;\n}\nlet schedulerStatus = ScheduleStatus.Idle;\nexport function flushMicroEffect() {\n if (schedulerStatus === ScheduleStatus.Idle && multiScheduler.hasTask) {\n schedulerStatus = ScheduleStatus.Ready;\n micro(() => {\n schedulerStatus = ScheduleStatus.Running;\n multiScheduler.flushAllTask();\n schedulerStatus = ScheduleStatus.Idle;\n });\n }\n}\nexport function flushMicroEffectManual() {\n if (schedulerStatus !== ScheduleStatus.Running && multiScheduler.hasTask) {\n schedulerStatus = ScheduleStatus.Running;\n multiScheduler.flushAllTask();\n schedulerStatus = ScheduleStatus.Idle;\n }\n}\n\nlet _batchDeep = 0;\nexport const batchStart = () => _batchDeep++;\nexport const batchEnd = () => {\n _batchDeep--;\n if (_batchDeep === 0) {\n flushSyncEffect();\n flushMicroEffect();\n }\n};\n/** effect、computed 回调执行的唯一 id\n * 用于判断重复依赖属于同一 effect、effect、computed\n */\nexport const batchDeep = () => _batchDeep;\n\nexport function unlink(line: OutLink, deep: boolean) {\n // window['unlink'] = (window['unlink'] || 0) + 1;\n const { nextEmitLine, prevEmitLine, nextRecLine, prevRecLine, up, down, prevOutLink, nextOutLink } = line;\n const { scope } = down;\n // 1. 非唯一 emitLine, 直接释放即可\n /*----------------- 从 up 中移除 -----------------*/\n if (prevEmitLine) {\n prevEmitLine.nextEmitLine = nextEmitLine;\n } else {\n // 头移除\n up.emitHead = nextEmitLine;\n }\n if (nextEmitLine) {\n nextEmitLine.prevEmitLine = prevEmitLine;\n } else {\n // 尾移除\n up.emitTail = prevEmitLine;\n }\n /*----------------- 从 down 中移除 -----------------*/\n if (prevRecLine) {\n prevRecLine.nextRecLine = nextRecLine;\n } else {\n // 头移除\n down.recHead = nextRecLine;\n }\n if (nextRecLine) {\n nextRecLine.prevRecLine = prevRecLine;\n } else {\n // 尾移除\n down.recTail = prevRecLine;\n }\n /*----------------- 从 outLink 中移除 -----------------*/\n if (prevOutLink) {\n prevOutLink.nextOutLink = nextOutLink;\n }\n if (nextOutLink) {\n nextOutLink.prevOutLink = prevOutLink;\n }\n if (scope && scope.outLink === line) {\n scope.outLink = nextOutLink;\n }\n if (up.state & State.IsScope) {\n // @ts-ignore\n up.dispose();\n // dispose(up as Effect);\n }\n // 唯一 emitLine, 现在 up 是游离节点,递归删除 up 的上游依赖\n else if (deep && !prevEmitLine && !nextEmitLine) {\n let { recHead: line } = up as Effect;\n // 如果 up 节点上面也有 唯一 emitLine 继续释放\n while (line) {\n const next = line.nextRecLine;\n unlink(line as OutLink, true);\n line = next;\n }\n }\n}\n\nexport function dispose(this: SideEffect) {\n // window['dispose'] = (window['dispose'] || 0) + 1;\n let { recHead: toDel, emitHead } = this;\n while (toDel) {\n const { up, nextRecLine } = toDel;\n // 上游非 scope 直接 unlink\n if ((up.state & State.IsScope) === 0) {\n unlink(toDel as OutLink, true);\n toDel = nextRecLine;\n continue;\n }\n let node = up,\n top: Link = null,\n i = -1;\n const lineStack: Link[] = [];\n outer: do {\n let noSkipSelf = node.state & State.IsScope && (node.state & ScopeAbort) === 0;\n const firstLine = node.recHead;\n\n if (noSkipSelf && firstLine) {\n node = firstLine.up as SideEffect;\n lineStack[++i] = top;\n top = firstLine;\n continue;\n }\n do {\n if (noSkipSelf) {\n releaseScope(node as Effect);\n }\n // 递归出口\n if (node === up) {\n break outer;\n }\n if (top.nextRecLine) {\n top = top.nextRecLine;\n node = top.up as SideEffect;\n break;\n }\n noSkipSelf = true;\n node = top.down as SideEffect;\n top = lineStack[i];\n lineStack[i--] = null;\n } while (true);\n } while (true);\n toDel = nextRecLine;\n }\n releaseScope(this as Effect);\n if (emitHead) unlink(emitHead as OutLink, false);\n}\n\nexport function clean(onClean: OnClean) {\n const current = getPulling() as Effect;\n current.clean = onClean;\n}\n\nfunction releaseScope(scope: Effect) {\n let { outLink } = scope;\n while (outLink) {\n const next = outLink.nextOutLink;\n unlink(outLink, true);\n outLink = next;\n }\n scope.state |= State.ScopeAbort;\n // clean 在 scope 释放时执行\n scope.clean?.(true);\n scope.clean = null;\n}\n\n// export function pullDeep<T>(node: SideEffect, down: SignalNode): T {\n// let { scope, state, recHead: line, emitHead: downLine } = node;\n// // @ts-ignore\n// const prevValue = node.value;\n// if (state & State.Pulling || (scope && scope.state & State.ScopeAbort) || state & ScopeExecuted) {\n// return prevValue;\n// }\n// node.state |= State.Pulling;\n// setPulling(node);\n// try {\n// // 当前无需计算 先往下查询需计算的节点\n// if ((state & State.NeedCompute) === 0) {\n// while (line) {\n// pullDeep(line.up as any, node);\n// line = line.nextRecLine;\n// }\n// }\n\n// // 子节点完成后重新判断父节点是否需要计算\n// if (node.state & State.NeedCompute) {\n// const value = node.get(false, false);\n// if (value !== prevValue) {\n// while (downLine) {\n// const { down } = downLine;\n// down.state &= ~State.Unknown;\n// down.state |= State.NeedCompute;\n// downLine = downLine.nextEmitLine;\n// }\n// }\n// node.state &= ~State.NeedCompute;\n// return value;\n// }\n// return prevValue;\n// } finally {\n// node.state &= ~State.Pulling;\n// setPulling(down);\n// }\n// }\n\n// function markUnknownDeep(line: Link) {\n// while (line) {\n// const { down, up } = line;\n// if (\n// (down.scope &&\n// // 所属 scope 被取消\n// (down.scope.state & State.ScopeAbort ||\n// // 下游是上游的 scope\n// down === up.scope)) ||\n// // 是 scope 节点,且处于 ready 状态,不需要重复执行\n// down.state & ScopeExecuted\n// ) {\n// } else {\n// down.state |= State.Unknown;\n// markUnknownDeep(down.emitHead);\n// }\n// line = line.nextEmitLine;\n// }\n// }\n","import { execId } from './global';\nimport { Scope } from './scope';\nimport { Link, OutLink, SignalNode } from './type';\nimport { State } from './macro' with { type: 'macro' };\nimport { Effect } from './effect';\nexport function link(\n /** 上游顶点 */\n up: SignalNode = null,\n /** 下游顶点 */\n down: SignalNode = null\n) {\n const { emitTail: prevEmitLine, scope: scopeUp } = up;\n let { recHead, recTail, scope: scopeDown } = down;\n // 符合外链规则,使用 outLink 进行连接\n if (scopeDown && scopeDown !== scopeUp && (up.state & State.IsScope) === 0) {\n outLink(up, down);\n return;\n }\n const nextRec = recTail ? recTail.nextRecLine : recHead;\n const eid = execId();\n // 重复依赖 跳过\n if (prevEmitLine && prevEmitLine.down === down && prevEmitLine.execId === eid) {\n return;\n }\n\n // 1. down 无 nextRec 尾插\n if (!nextRec) {\n // window['link'] = (window['link'] || 0) + 1;\n // 是 1. 上游节点尾指针 2.下游节点的首尾指针\n const line: Link = {\n execId: eid,\n up,\n down,\n prevEmitLine,\n nextEmitLine: null,\n prevRecLine: recTail,\n nextRecLine: null\n };\n // 加入 up 的链表\n if (prevEmitLine) {\n prevEmitLine.nextEmitLine = line;\n } else {\n up.emitHead = line;\n }\n up.emitTail = line;\n\n // 加入 down 的链表\n if (recTail) {\n recTail.nextRecLine = line;\n } else {\n down.recHead = line;\n }\n down.recTail = line;\n return;\n }\n\n // 2. 如果下一个 rec 连接的就是 up,直接复用\n if (nextRec.up === up) {\n nextRec.execId = eid;\n down.recTail = nextRec;\n return;\n }\n // window['link'] = (window['link'] || 0) + 1;\n // 3. rec 指向不匹配, 在 tail 和 next 中间插入 line\n const line: Link = {\n execId: eid,\n up,\n down,\n prevEmitLine,\n nextEmitLine: null,\n prevRecLine: recTail,\n nextRecLine: nextRec\n };\n // 加入 up 的链表\n if (prevEmitLine) {\n prevEmitLine.nextEmitLine = line;\n } else {\n up.emitHead = line;\n }\n up.emitTail = line;\n\n // 加入 down 链表, 一定不是尾插,只考虑是否头插\n if (recHead) {\n if (recTail) {\n recTail.nextRecLine = line;\n } else {\n // recTail 已被重置为 null,说明这是 downstream 新增的第一个 link ,新 link 直接作为新链头\n down.recHead = line;\n }\n } else {\n down.recHead = line;\n }\n // 移动 recTail\n down.recTail = line;\n // tail <-> line <-> nextRec\n if (recTail) recTail.nextRecLine = line;\n nextRec.prevRecLine = line;\n}\n\nexport function outLink(\n /** 上游顶点 */\n up: SignalNode = null,\n /** 下游顶点 */\n down: SignalNode = null\n) {\n const { emitTail: prevEmitLine } = up;\n let { recHead, recTail, scope: scopeDown } = down;\n const nextRec = recTail ? recTail.nextRecLine : recHead;\n // 1. down 无 nextRec 尾插\n if (!nextRec) {\n // 是 1. 上游节点尾指针 2.下游节点的首尾指针\n const line: OutLink = {\n execId: execId(),\n up,\n down,\n prevEmitLine,\n nextEmitLine: null,\n prevRecLine: recTail,\n nextRecLine: null,\n nextOutLink: null,\n prevOutLink: null\n };\n\n // 加入 up 的链表\n if (prevEmitLine) {\n prevEmitLine.nextEmitLine = line;\n } else {\n up.emitHead = line;\n }\n up.emitTail = line;\n\n // 加入 down 的链表\n if (recTail) {\n recTail.nextRecLine = line;\n } else {\n down.recHead = line;\n }\n down.recTail = line;\n // if (scopeDown && scopeDown !== scopeUp && (up.state & State.IsScope) == 0)\n makeOutLink(scopeDown, line);\n return;\n }\n\n // 2. 如果下一个 rec 连接的就是 up,直接复用\n if (nextRec.up === up) {\n down.recTail = nextRec;\n return;\n }\n // 3. rec 指向不匹配, 在 tail 和 next 中间插入 line\n const line: OutLink = {\n execId: execId(),\n up,\n down,\n prevEmitLine,\n nextEmitLine: null,\n prevRecLine: recTail,\n nextRecLine: nextRec,\n nextOutLink: null,\n prevOutLink: null\n };\n // 加入 up 的链表\n if (prevEmitLine) {\n prevEmitLine.nextEmitLine = line;\n } else {\n up.emitHead = line;\n }\n up.emitTail = line;\n\n // 加入 down 链表, 一定不是尾插,只考虑是否头插\n if (recHead) {\n if (recTail) {\n recTail.nextRecLine = line;\n } else {\n down.recHead = line;\n }\n } else {\n down.recHead = line;\n }\n // 移动 recTail\n down.recTail = line;\n // tail <-> line <-> nextRec\n if (recTail) recTail.nextRecLine = line;\n nextRec.prevRecLine = line;\n // if (scopeDown && scopeDown !== scopeUp && (up.state & State.IsScope) == 0)\n makeOutLink(scopeDown, line);\n}\n\nfunction makeOutLink(scopeDown: Effect|Scope, line: OutLink) {\n const first = scopeDown.outLink;\n if (first) {\n first.prevOutLink = line;\n line.nextOutLink = first;\n }\n scopeDown.outLink = line;\n}\n\nexport function outLink2(\n /** 上游顶点 */\n up: SignalNode = null,\n /** 下游顶点 */\n down: SignalNode = null\n) {\n const { emitTail: prevEmitLine, emitHead } = up;\n const { emitTail: prevRecLine, recHead, scope } = down;\n const { outLink: first } = scope;\n\n const line: OutLink = {\n execId: execId(),\n up,\n down,\n prevEmitLine,\n prevRecLine,\n nextEmitLine: null,\n nextRecLine: null,\n nextOutLink: first,\n prevOutLink: null\n };\n\n scope.outLink = line;\n if (first) {\n first.nextOutLink = line;\n }\n\n // 处理节点上的双向链表\n up.emitTail = line;\n down.recTail = line;\n\n if (!emitHead) {\n up.emitHead = line;\n }\n if (!recHead) {\n down.recHead = line;\n }\n}\n","import { setPulling, getPulling, execIdInc, execId, setExecId } from './global';\nimport { Effect } from './effect';\nimport { Scope } from './scope';\nimport { Link, OutLink, SideEffect, SignalNode } from './type';\nimport { State, DirtyState } from './macro' with { type: 'macro' };\nimport { transferDirtyState, pullDeep, unlink } from './operate';\nimport { link } from './line';\n\nexport class Computed<T = any> {\n emitHead: Link = null;\n emitTail: Link = null;\n recHead: Link = null;\n recTail: Link = null;\n state = State.Clean;\n scope: Effect | Scope = getPulling() as any;\n value: T = null;\n constructor(public callback: (thisArgs: Computed) => T) {}\n get(shouldLink = true, notForceUpdate = true) {\n const { scope } = this;\n if (scope && scope.state & State.ScopeAbort) return this.value;\n const down = getPulling();\n if (this.recHead && notForceUpdate) {\n if (this.state & DirtyState) {\n this.value = pullDeep(this);\n }\n } else {\n this.state |= State.PullLock;\n\n const nextId = execIdInc();\n const prevId = execId();\n setExecId(nextId);\n\n setPulling(this);\n this.recTail = null;\n this.value = this.callback(this);\n this.state &= ~State.PullLock;\n setPulling(down);\n\n setExecId(prevId);\n // Unknown 转换\n transferDirtyState(this, this.state);\n let line = this.recTail?.nextRecLine;\n while (line) {\n const nextLine = line.nextRecLine;\n unlink(line as OutLink, true);\n line = nextLine;\n }\n }\n\n // link 连接\n if (shouldLink && down && (down.state & State.LinkScopeOnly) === 0) {\n link(this, down);\n }\n return this.value;\n }\n}\n","import { Effect } from './effect';\nimport { getPulling } from './global';\nimport { link } from './line';\nimport { mark, flushSyncEffect, batchDeep, flushMicroEffect } from './operate';\nimport { Scope } from './scope';\nimport { Link, SignalNode } from './type';\nimport { State } from './macro' with { type: 'macro' };\n\nexport class Signal<T = any> {\n scope: Effect | Scope = getPulling() as any;\n emitHead: Link = null;\n emitTail: Link = null;\n state = State.Clean;\n\n constructor(public value: T) {}\n // TODO: shouldLink 考虑 signal -> computed NeedComputed -> effect 时执行 get 不应该触发 shouldLink\n get(shouldLink = true) {\n if (shouldLink) {\n const down = getPulling();\n // 在 watcher 的 callback 中执行,不连接\n if (down && (down.state & State.LinkScopeOnly) === 0) {\n link(this, down);\n }\n }\n return this.value;\n }\n set(v: T) {\n if (this.value === v) return;\n this.value = v;\n if (this.emitHead) {\n mark(this);\n if (batchDeep() === 0) {\n flushSyncEffect();\n flushMicroEffect();\n }\n }\n }\n}\n","import { execId, execIdInc, getPulling, setExecId, setPulling } from './global';\nimport { link } from './line';\nimport { transferDirtyState, pullDeep, unlink, dispose } from './operate';\nimport { Scope } from './scope';\nimport { Link, OnClean, OutLink, ScheduleType, SideEffect, SignalNode } from './type';\nimport { State } from './macro' with { type: 'macro' };\n\nconst EffectState = State.IsEffect | State.IsScope;\nexport class Effect {\n emitHead: Link = null;\n emitTail: Link = null;\n recHead: Link = null;\n recTail: Link = null;\n\n state = EffectState;\n scope: Effect | Scope = getPulling() as any;\n outLink: OutLink = null;\n clean: OnClean = null;\n constructor(public callback: (thisArg: Effect) => OnClean | void, public type: ScheduleType = ScheduleType.Sync) {\n this.get();\n }\n get(shouldLink = true, notForceUpdate = true) {\n if (this.state & State.ScopeAbort) return;\n const down = getPulling();\n if (this.recHead && notForceUpdate) {\n pullDeep(this);\n } else {\n this.state |= State.PullLock;\n\n setPulling(null);\n this.clean?.(false);\n this.clean = null;\n\n const nextId = execIdInc();\n const prevId = execId();\n setExecId(nextId);\n\n setPulling(this);\n this.recTail = null;\n const res = this.callback(this);\n typeof res === 'function' && (this.clean = res);\n this.state &= ~State.PullLock;\n setPulling(down);\n\n setExecId(prevId);\n // Unknown 转换\n transferDirtyState(this, this.state);\n let line = this.recTail?.nextRecLine;\n while (line) {\n const nextLine = line.nextRecLine;\n unlink(line as OutLink, true);\n line = nextLine;\n }\n }\n // effect 可以嵌套管理,但是链接只建立一次\n if (!this.emitHead && shouldLink && down) {\n link(this, down);\n }\n }\n}\n\nexport interface Effect {\n dispose(): void;\n}\n\nEffect.prototype.dispose = dispose;\n","import { Effect } from './effect';\nimport { getPulling, setPulling } from './global';\nimport { link } from './line';\nimport { Link, OnClean, OutLink } from './type';\nimport { State } from './macro' with { type: 'macro' };\nimport { dispose } from './operate';\nconst ScopeAndLinkScopeOnly = State.IsScope | State.LinkScopeOnly;\nexport class Scope {\n emitHead: Link = null;\n emitTail: Link = null;\n recHead: Link = null;\n recTail: Link = null;\n\n state = ScopeAndLinkScopeOnly;\n scope: Effect | Scope = getPulling() as any;\n outLink: OutLink = null;\n clean: OnClean = null;\n constructor(public callback: () => OnClean | any) {}\n get(shouldLink = true) {\n const { scope } = this;\n this.state |= State.PullLock;\n setPulling(this);\n this.recTail = null;\n const res = this.callback();\n typeof res === 'function' && (this.clean = res);\n this.state &= ~State.PullLock;\n setPulling(scope);\n\n // effect 可以嵌套管理,但是链接只建立一次\n if (!this.emitHead && shouldLink && scope) {\n link(this, scope);\n }\n }\n}\n\nexport class NoopEffect {\n constructor(public callback: () => OnClean | any) {\n const scope = new Scope(callback);\n scope.get();\n return scope;\n }\n}\n\nexport const noopEffect = (callback: () => OnClean | any) => {\n const scope = new Scope(callback);\n scope.get();\n return scope;\n};\n\nexport interface Scope {\n dispose(): void;\n}\n\nScope.prototype.dispose = dispose;\n","export const rawToProxy = new WeakMap();\n\nexport enum State {\n Clean = 0,\n /** watch 节点执行 watcher 时只连接 scope */\n LinkScopeOnly = 0b0000_0000_0000_0000_0000_0001_0000_0000,\n /** 仅用于 scope 节点是否 abort */\n ScopeAbort = 0b0000_0000_0000_0000_0000_0000_1000_0000,\n /** 仅用于 scope 节点是否 ready */\n ScopeReady = 0b0000_0000_0000_0000_0000_0000_0100_0000,\n /** 当前节点是 scope 节点 */\n IsScope = 0b0000_0000_0000_0000_0000_0000_0010_0000,\n /** 当前节点正在 pull 递归中标记为 dirty, 保证 pulling 过程中不影响 dirty 传播 */\n PullingDirty = 0b0000_0000_0000_0000_0000_0000_0001_0000,\n /** 当前节点正在 pull 递归中标记为 unknown, 保证 pulling 过程中不影响 dirty 传播 */\n PullingUnknown = 0b0000_0000_0000_0000_0000_0000_0000_1000,\n /** 当前节点可能变化 */\n Unknown = 0b0000_0000_0000_0000_0000_0000_0000_0100,\n /** 当前节点有变化 */\n Dirty = 0b0000_0000_0000_0000_0000_0000_0000_0010,\n /** 当前节点正在进行 pull 预检处理 */\n Pulling = 0b0000_0000_0000_0000_0000_0000_0000_0001\n}\n\nexport const DirtyState = State.Unknown | State.Dirty;\nexport const ScopeExecuted = State.ScopeReady | State.ScopeAbort;\nexport const ScopeAbort = State.ScopeAbort;\n","import { Scope, Signal, batchEnd, batchStart } from './core';\nimport { Keys } from './type';\nimport { deepSignal } from './deep-signal';\n\n/*----------------- 辅助函数 -----------------*/\n\nexport const trackIterator = (cells: Map<any, Signal>, scope: Scope) => {\n let iter = cells.get(Keys.Iterator);\n if (!iter) {\n iter = new Signal(0);\n iter.scope = scope;\n cells.set(Keys.Iterator, iter);\n }\n iter.get();\n};\n\nconst triggerIterator = (cells: Map<any, Signal>) => {\n const iter = cells.get(Keys.Iterator);\n if (iter) {\n iter.set((iter.value || 0) + 1);\n }\n};\n\nconst trackKey = (cells: Map<any, Signal>, scope: Scope, key: any) => {\n let cell = cells.get(key);\n if (!cell) {\n cell = new Signal(undefined);\n cell.scope = scope;\n cells.set(key, cell);\n }\n cell.get();\n};\n\nconst triggerKey = (cells: Map<any, Signal>, key: any) => {\n const cell = cells.get(key);\n if (cell) {\n cell.set((cell.value === undefined ? 0 : cell.value) + 1);\n }\n};\n\n/*----------------- Map/Set 共享方法 -----------------*/\n/**\n * size, clear, delete, has, keys, values, entries, forEach, [Symbol.iterator]\n */\nexport const createSharedHandler = (cells: Map<any, Signal>, scope: Scope, deep: boolean, targetIsMap: boolean) => {\n const iterate = (rawTarget: Map<any, any> | Set<any>, iteratorFn: string) => {\n trackIterator(cells, scope);\n const rawIter = (rawTarget as any)[iteratorFn]();\n if (!deep) return rawIter;\n\n const rawNext = rawIter.next.bind(rawIter);\n rawIter.next = () => {\n const result = rawNext();\n if (!result.done) {\n // entries 返回 [k, v],key 也可能是对象需要包装;keys/values 包装值本身\n if (iteratorFn === 'entries') {\n result.value[0] = deepSignal(result.value[0], scope);\n result.value[1] = deepSignal(result.value[1], scope);\n } else {\n result.value = deepSignal(result.value, scope);\n }\n }\n return result;\n };\n return rawIter;\n };\n\n return {\n has(key: any) {\n const target = this[Keys.Raw];\n trackKey(cells, scope, key);\n return target.has(key);\n },\n\n delete(key: any) {\n const target = this[Keys.Raw];\n batchStart();\n const had = target.has(key);\n const result = target.delete(key);\n if (had) {\n triggerKey(cells, key);\n cells.delete(key);\n triggerIterator(cells);\n }\n batchEnd();\n return result;\n },\n\n clear() {\n const target = this[Keys.Raw];\n batchStart();\n const hadItems = target.size > 0;\n target.clear();\n // 清除 key cells(保留 Iterator)\n const iterCell = cells.get(Keys.Iterator);\n cells.clear();\n if (iterCell) cells.set(Keys.Iterator, iterCell);\n if (hadItems) {\n triggerIterator(cells);\n }\n batchEnd();\n },\n\n forEach(callback: Function, thisArg?: any) {\n const target = this[Keys.Raw];\n trackIterator(cells, scope);\n const wrap = (val: any) => (deep ? deepSignal(val, scope) : val);\n // Map callback: (value, key, map)\n // Set callback: (value, key, set) — key===value, rawToProxy 缓存保证不重复包装\n target.forEach((v: any, k: any) => {\n callback.call(thisArg, wrap(v), wrap(k), this);\n });\n },\n\n keys() {\n return iterate(this[Keys.Raw], 'keys');\n },\n\n values() {\n return iterate(this[Keys.Raw], 'values');\n },\n\n entries() {\n return iterate(this[Keys.Raw], 'entries');\n },\n\n [Symbol.iterator]() {\n // Map 同 entries,Set 同 values\n return iterate(this[Keys.Raw], targetIsMap ? 'entries' : 'values');\n }\n };\n};\n\n/*----------------- Map 专用方法 -----------------*/\n/**\n * get(key), set(key, value)\n */\nexport const createMapHandler = (cells: Map<any, Signal>, scope: Scope, deep: boolean) => ({\n get(key: any) {\n const target = this[Keys.Raw];\n trackKey(cells, scope, key);\n const value = target.get(key);\n return deep ? deepSignal(value, scope) : value;\n },\n\n set(key: any, value: any) {\n const target = this[Keys.Raw];\n batchStart();\n target.set(key, value);\n // 更新 key cell\n let cell = cells.get(key);\n if (!cell) {\n cell = new Signal(value);\n cell.scope = scope;\n cells.set(key, cell);\n } else {\n cell.set(value);\n }\n // 新增或修改已有 key 都触发 Iterator,因为迭代器(forEach/entries 等)依赖值变化\n triggerIterator(cells);\n batchEnd();\n return this;\n }\n});\n\n/*----------------- Set 专用方法 -----------------*/\n/**\n * add(value)\n */\nexport const createSetHandler = (cells: Map<any, Signal>, scope: Scope, _deep: boolean) => ({\n add(value: any) {\n const target = this[Keys.Raw];\n batchStart();\n const had = target.has(value);\n target.add(value);\n // 更新 value cell(Set 用 value 自身作为 key)\n let cell = cells.get(value);\n if (!cell) {\n cell = new Signal(value);\n cell.scope = scope;\n cells.set(value, cell);\n } else {\n cell.set(value);\n }\n if (!had) {\n triggerIterator(cells);\n }\n batchEnd();\n return this;\n }\n});\n\n/*----------------- 合并处理器的辅助函数 -----------------*/\n\nexport const mergeHandlers = (...handlers: Record<string | symbol, any>[]) =>\n Object.assign({}, ...handlers);\n","import { isNatureNumStr } from 'bobe-shared';\nimport { rawToProxy } from './global';\nimport { Computed, Scope, Signal, batchEnd, batchStart, runWithPulling } from './core';\nimport { IsStore, Key, Keys, StoreIgnoreKeys } from './type';\nimport { toRaw } from './util';\nimport {\n createSharedHandler,\n createMapHandler,\n createSetHandler,\n mergeHandlers,\n trackIterator\n} from './map-set-handler';\n\nexport const deepSignal = <T>(target: T, scope: Scope, deep = true) => {\n const isObj = typeof target === 'object' && target !== null;\n // 1. 不是对象则返回原始值\n // 2. 返回已有代理\n // 3. 对象不需要代理\n if (!isObj || target[Keys.Raw] || target[Keys.ProxyFreeObject]) return target;\n // 2. 返回已有代理\n const p = rawToProxy.get(target);\n if (p) return p;\n\n const targetIsMap = target instanceof Map;\n const targetIsSet = target instanceof Set;\n\n // Map/Set 特殊代理\n if (targetIsMap || targetIsSet) {\n const cells = new Map<any, Signal>();\n const meta = { deep, scope, cells };\n const shared = createSharedHandler(cells, scope, deep, targetIsMap);\n const specific = targetIsMap\n ? createMapHandler(cells, scope, deep)\n : createSetHandler(cells, scope, deep);\n const instrumentations = mergeHandlers(shared, specific);\n\n const proxy = new Proxy(target, {\n get(_obj, prop, receiver) {\n if (prop === Keys.Raw) return target;\n if (prop === Keys.Meta) return meta;\n if (prop === Symbol.toStringTag) return targetIsMap ? 'Map' : 'Set';\n\n // size getter — 依赖 Iterator,读取原始 target\n if (prop === 'size') {\n trackIterator(cells, scope);\n return Reflect.get(target, 'size', target);\n }\n\n // 拦截已知方法\n if (prop in instrumentations) {\n const fn = instrumentations[prop];\n return typeof fn === 'function' ? fn.bind(receiver) : fn;\n }\n\n // 其他自定义属性\n const value = Reflect.get(target, prop, receiver);\n if (typeof value === 'function') return value;\n return deep ? deepSignal(value, scope) : value;\n }\n });\n\n rawToProxy.set(target, proxy);\n return proxy;\n }\n\n // 每个对象维护自己的 cells 闭包\n const cells = new Map<any, Signal>();\n const targetIsArray = Array.isArray(target);\n const targetIsStore = Boolean(target.constructor?.[IsStore]);\n const meta = {\n deep,\n scope,\n cells\n };\n const proxy = new Proxy(target, {\n get(obj, prop, receiver) {\n switch (prop) {\n case Keys.Raw:\n return target;\n case Keys.Meta:\n return meta;\n default:\n break;\n }\n\n if (prop === Symbol.unscopables) return Reflect.get(obj, prop, receiver);\n\n if (targetIsStore && isIgnoreKey(obj.constructor[StoreIgnoreKeys], prop)) {\n return Reflect.get(obj, prop, receiver);\n }\n\n const desc = Reflect.getOwnPropertyDescriptor(obj, prop);\n\n const isGetter = desc && typeof desc.get === 'function';\n\n if (isGetter) {\n return handleGetterAsComputed(obj, prop, receiver, cells as any, scope);\n }\n\n // 创建 Signal\n const value = Reflect.get(obj, prop, receiver);\n\n const valueIsFn = typeof value === 'function';\n if (valueIsFn) {\n if (targetIsArray) {\n return arrayMethodReWrites[prop] || value;\n } else {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n return value;\n }\n let s = cells.get(prop);\n if (s) {\n return s.get();\n }\n s = new Signal(value);\n s.scope = scope;\n cells.set(prop, s);\n return s.get();\n }\n }\n\n // 已有对应 Signal\n let s: Signal = cells.get(prop);\n if (s) {\n return s.get();\n }\n\n const wrappedValue = deep ? deepSignal(value, scope) : value;\n s = new Signal(wrappedValue);\n s.scope = scope;\n cells.set(prop, s);\n return s.get();\n },\n\n set(obj, prop, value, receiver) {\n if (targetIsStore && isIgnoreKey(obj.constructor[StoreIgnoreKeys], prop)) {\n return Reflect.set(obj, prop, value, receiver);\n }\n // 在 Reflect.set 之前检查是否为新增属性,避免设置后检查失效\n const isNewKey = !Reflect.has(obj, prop);\n // 数组项 set 可能出现 Iterator 设置,用 batch 避免 effect 多次执行\n batchStart();\n const success = Reflect.set(obj, prop, value, receiver);\n const cell = cells.get(prop);\n if (cell) {\n cell.set((typeof value === 'function' || !deep) ? value : deepSignal(value, scope));\n }\n\n if (targetIsArray) {\n handleArraySet(obj, prop, value, receiver);\n } else if (isNewKey) {\n receiver[Keys.Iterator] = (receiver[Keys.Raw][Keys.Iterator] || 0) + 1;\n }\n batchEnd();\n // 保持原始对象干净\n return success;\n },\n\n // 【核心修改】拦截 delete 操作\n deleteProperty(obj, prop) {\n if (targetIsStore && isIgnoreKey(obj.constructor[StoreIgnoreKeys], prop)) {\n return Reflect.deleteProperty(obj, prop);\n }\n if (typeof obj[prop] === 'function' && !Object.prototype.hasOwnProperty.call(obj, prop)) {\n return Reflect.deleteProperty(obj, prop);\n }\n // 从 Map 中移除,切断引用,允许 GC 回收这个 $() 实例\n cells.delete(prop);\n const result = Reflect.deleteProperty(obj, prop);\n // 普通对象:删除总是改变键集合\n // 数组数字索引:仅在非批量操作时触发(用户直接 delete arr[0]),批量操作由方法重写统一管理 Iterator\n if (!targetIsArray) {\n proxy[Keys.Iterator] = (obj[Keys.Iterator] || 0) + 1;\n }\n return result;\n },\n\n ownKeys(obj) {\n if (targetIsArray) {\n // @ts-ignore\n proxy.length;\n } else {\n proxy[Keys.Iterator];\n }\n // 过滤内部属性 __AOYE_ITERATOR\n return Reflect.ownKeys(obj).filter(key => key !== Keys.Iterator);\n }\n });\n\n rawToProxy.set(target, proxy);\n return proxy;\n};\n\n/**\n * 将 from 响应式对象中 fromKey 对应的 Signal\n * 共享给 to 响应式对象的 toKey\n */\nexport const shareSignal = (from: any, fromPath: string, to: any, toPath: string) => {\n try {\n const toPaths = toPath.split('.');\n const formPaths = Array.isArray(fromPath) ? fromPath : fromPath.split('.');\n runWithPulling(() => {\n const { target: fromTarget, key: fromKey } = getTargetAndKey(from, formPaths);\n // 通过 get 陷阱确保 signal 已生成\n const val = fromTarget[fromKey];\n // 获取 signal\n const fromSignal = fromTarget[Keys.Meta].cells.get(fromKey)!;\n\n // 将 signal 共享给 to 代理对象\n const { target: toTarget, key: toKey } = getTargetAndKey(to, toPaths);\n toTarget[Keys.Meta].cells.set(toKey, fromSignal);\n toTarget[Keys.Raw][toKey] = val;\n }, null);\n } catch (error) {\n console.error('映射了不存在的Key!');\n throw error;\n }\n};\n\nfunction getTargetAndKey(obj: any, paths: string[]) {\n let target = obj;\n let key = '';\n const len = paths.length;\n for (let i = 0; i < len; i++) {\n key = paths[i];\n // 通过倒数第二个 key,可以找到代理对象\n if (i < len - 1) {\n target = target[key];\n }\n }\n return { target, key };\n}\n\nfunction isIgnoreKey(ignores: Key[], key: Key) {\n if (typeof key !== 'string') {\n return ignores.includes(key);\n }\n return ignores.some(it => typeof it === 'string' && key.startsWith(it));\n}\n\nfunction handleGetterAsComputed(\n obj: object,\n prop: string | symbol,\n receiver: any,\n cells: Map<any, Computed>,\n scope: Scope\n) {\n let s = cells.get(prop);\n if (s) {\n return s.get();\n }\n\n s = new Computed(() => Reflect.get(obj, prop, receiver));\n s.scope = scope;\n cells.set(prop, s);\n return s.get();\n}\n\nfunction handleArraySet(arr: object, prop: string | symbol, value: any, receiver: any) {\n // 设置 length\n if (prop === 'length') {\n }\n // 设置 index,由于 includes 等方法不对 index 再做监听,通过 Keys.Iterator 来保证副作用正确执行\n else if (isNatureNumStr(prop)) {\n receiver[Keys.Iterator] = (arr[Keys.Iterator] || 0) + 1;\n }\n // 其他\n else {\n triggerIter(arr, prop, value, receiver);\n }\n}\n\nfunction triggerIter(obj: object, prop: string | symbol, value: any, receiver: any) {\n if (!Reflect.has(obj, prop)) {\n receiver[Keys.Iterator] = (receiver[Keys.Raw][Keys.Iterator] || 0) + 1;\n }\n}\n\nconst arrayMethodReWrites: any = {};\n/*----------------- 增删移 增加 __Iterator Set ✅ -----------------*/\n['pop', 'push', 'shift', 'splice', 'unshift', 'copyWithin', 'reverse', 'fill'].forEach(key => {\n arrayMethodReWrites[key] = function (...args: any[]) {\n batchStart();\n const fn = Array.prototype[key];\n // 不会进行依赖收集,但是会触发 set\n const res = runWithPulling(() => fn.call(this, ...args), null);\n this[Keys.Iterator] = (this[Keys.Raw][Keys.Iterator] || 0) + 1;\n batchEnd();\n return res;\n };\n});\n\n/*----------------- 全等匹配 仅收集 __Iterator Get, 尝试使用原始或代理值再找一遍 ✅ -----------------*/\n['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\n arrayMethodReWrites[key] = function (...args: any[]) {\n const fn = Array.prototype[key];\n const that = toRaw(this);\n let result = fn.call(that, ...args);\n const value = args[0];\n // 使用传入的值但是未找到,尝试使用代理值,或原始值查询\n if ((result === false || result === -1) && typeof value === 'object' && value !== null) {\n if (value[Keys.Raw]) {\n args[0] = value[Keys.Raw];\n result = fn.call(that, ...args);\n }\n const p = rawToProxy.get(value);\n if (p) {\n args[0] = p;\n result = fn.call(that, ...args);\n }\n }\n // 增加 __Iterator Get\n this[Keys.Iterator];\n return result;\n };\n});\n\n/*----------------- 重写迭代器获取 仅收集 __Iterator Get, ✅ -----------------*/\n// keys 不重写因为 array 的 keys 和 length 对等, length 不变 keys 也不变\n[Symbol.iterator, 'values', 'entries'].forEach(key => {\n const isEntries = key === 'entries';\n arrayMethodReWrites[key] = function (...args: any[]) {\n const fn = Array.prototype[key];\n const rawArray = toRaw(this);\n const iter = fn.call(rawArray, ...args);\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n // 深度代理需要将 iter.next 返回值转 proxy\n if (isDeep) {\n const rawNext = iter.next.bind(iter);\n iter.next = () => {\n const result = rawNext();\n if (!result.done) {\n if (isEntries) {\n result.value[1] = deepSignal(result.value[1], scope);\n } else {\n result.value = deepSignal(result.value, scope);\n }\n }\n return result;\n };\n }\n\n this[Keys.Iterator];\n\n return iter;\n };\n});\n\n/**\n * filter 函数的实现\n */\narrayMethodReWrites.filter = function (callback, thisArg) {\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n const result = [];\n let resultIndex = 0;\n\n const userThis = thisArg || that;\n\n const len = that.length;\n for (let i = 0; i < len; i++) {\n // 使用 in 操作符检查索引是否存在\n // 原生 filter 会跳过空洞(比如 [1, , 3] 中的 index 1)\n if (i in that) {\n const value = isDeep ? deepSignal(that[i], scope) : that[i];\n // 性能点 3:直接调用回调,避免使用多余的包装\n if (callback.call(userThis, value, i, userThis)) {\n // 性能点 4:直接通过索引赋值,通常比 push() 略快\n result[resultIndex++] = value;\n }\n }\n }\n this[Keys.Iterator];\n return result;\n};\n\narrayMethodReWrites.slice = function (start, end) {\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n\n const that = toRaw(this);\n const len = that.length;\n\n // 1. 处理 start 参数\n let k = start || 0;\n if (k < 0) {\n k = Math.max(len + k, 0);\n } else {\n k = Math.min(k, len);\n }\n\n // 2. 处理 end 参数\n let final = end === undefined ? len : end;\n if (final < 0) {\n final = Math.max(len + final, 0);\n } else {\n final = Math.min(final, len);\n }\n\n // 3. 计算实际需要抽取的长度\n const count = Math.max(final - k, 0);\n\n // 4. 预分配数组空间以提升性能(针对大数组非常有效)\n // 现代引擎对于已知长度的数组初始化会有优化\n const result = new Array(count);\n\n // 5. 循环赋值\n for (let i = 0; i < count; i++) {\n // 确保处理稀疏数组的情况,保持与原生行为一致\n if (i + k in that) {\n result[i] = isDeep ? deepSignal(that[i + k], scope) : that[i + k];\n }\n }\n this[Keys.Iterator];\n return result;\n};\n\narrayMethodReWrites.toReversed = function () {\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n\n // 2. 获取数组长度(使用无符号右移保证为正整数,模拟规范中的 ToLength/ToUint32)\n const len = that.length;\n\n // 3. 创建等长的新数组\n // 预先分配内存空间比不断 push 性能更好\n const result = new Array(len);\n\n // 4. 填充新数组\n // 使用双指针或简单减法遍历。由于 O[i] 可能触发 getter,\n // 且我们需要处理稀疏数组,直接赋值 A[k] = O[j] 即可。\n let k = 0;\n while (k < len) {\n // 根据规范,toReversed 会读取索引值,如果索引不存在则为 undefined\n // 这会自动将稀疏数组的 hole 转为 undefined\n result[k] = isDeep ? deepSignal(that[len - 1 - k], scope) : that[len - 1 - k];\n k++;\n }\n\n this[Keys.Iterator];\n // 5. 返回结果\n return result;\n};\n\narrayMethodReWrites.toSpliced = function (start, deleteCount, ...items) {\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n\n const len = that.length;\n\n // 1. 确定实际的相对起始索引 (处理负数和越界)\n let relativeStart = start >> 0; // 快速取整\n let actualStart = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len);\n\n // 2. 确定实际删除的数量\n let actualDeleteCount;\n if (arguments.length === 0) {\n actualDeleteCount = 0;\n } else if (arguments.length === 1) {\n actualDeleteCount = len - actualStart;\n } else {\n let dc = deleteCount >> 0;\n actualDeleteCount = Math.min(Math.max(dc, 0), len - actualStart);\n }\n\n // 3. 计算新数组长度\n const insertCount = items.length;\n const newLen = len - actualDeleteCount + insertCount;\n const result = new Array(newLen);\n\n // 4. 填充新数组(分段式操作,性能最优)\n\n // 第一段:保留起始点之前的元素\n for (let i = 0; i < actualStart; i++) {\n result[i] = isDeep ? deepSignal(that[i], scope) : that[i];\n }\n\n // 第二段:插入新元素\n for (let i = 0; i < insertCount; i++) {\n result[actualStart + i] = isDeep ? deepSignal(items[i], scope) : items[i];\n }\n\n // 第三段:保留被删除部分之后的剩余元素\n const remainingStart = actualStart + actualDeleteCount;\n const resultOffset = actualStart + insertCount;\n for (let i = 0; i < len - remainingStart; i++) {\n result[resultOffset + i] = isDeep ? deepSignal(that[remainingStart + i], scope) : that[remainingStart + i];\n }\n\n this[Keys.Iterator];\n return result;\n};\n\narrayMethodReWrites.with = function (index, value) {\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n\n // 1. 获取数组长度(确保处理类数组对象)\n const len = that.length;\n\n // 2. 转换索引为整数(处理 undefined/NaN 等情况)\n let relativeIndex = Number(index) || 0;\n\n // 3. 处理负数索引逻辑\n let actualIndex = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n\n // 4. 边界检查:如果索引越界,抛出 RangeError\n if (actualIndex >= len || actualIndex < 0) {\n throw new RangeError(`Invalid index: ${index}`);\n }\n\n // 5. 性能优化点:预分配数组空间\n // 使用 new Array(len) 配合循环在处理大数组且包含空位时,\n // 比 [...that] 或 slice() 更加符合规范对“稀疏转密集”的要求。\n const result = new Array(len);\n\n for (let i = 0; i < len; i++) {\n if (i === actualIndex) {\n result[i] = isDeep ? deepSignal(value, scope) : value;\n } else {\n result[i] = isDeep ? deepSignal(that[i], scope) : that[i];\n }\n }\n this[Keys.Iterator];\n return result;\n};\n\narrayMethodReWrites.concat = function (...items) {\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n const selfLen = that.length; // 确保长度为正整数\n\n // 2. 预计算总长度以优化性能\n let totalLength = selfLen;\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n // 模拟原生 concat 的展开逻辑:只有数组会被展开\n if (Array.isArray(item)) {\n totalLength += item.length;\n } else {\n totalLength += 1;\n }\n }\n\n // 3. 创建结果数组(预设长度)\n const result = new Array(totalLength);\n let k = 0;\n\n // 4. 填充原数组数据\n for (; k < selfLen; k++) {\n if (k in that) {\n result[k] = isDeep ? deepSignal(that[k], scope) : that[k];\n }\n }\n\n // 5. 填充参数数据\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (Array.isArray(item)) {\n for (let j = 0; j < item.length; j++) {\n if (j in item) {\n result[k] = isDeep ? deepSignal(item[j], scope) : item[j];\n }\n k++;\n }\n } else {\n result[k] = isDeep ? deepSignal(item, scope) : item;\n k++;\n }\n }\n this[Keys.Iterator];\n return result;\n};\n\n/*----------------- 回调函数 仅收集 __Iterator Get,回调中收集用户 get -----------------*/\nconst GetMethodConf = {\n wrapReturn: false,\n wrapArgs: 0b01\n};\n[\n {\n key: 'every',\n ...GetMethodConf\n },\n {\n key: 'find',\n wrapReturn: true,\n ...GetMethodConf\n },\n {\n key: 'findLast',\n ...GetMethodConf,\n wrapReturn: true\n },\n {\n key: 'findIndex',\n ...GetMethodConf\n },\n {\n key: 'findLastIndex',\n ...GetMethodConf\n },\n {\n key: 'forEach',\n ...GetMethodConf\n },\n {\n key: 'map',\n ...GetMethodConf\n },\n {\n key: 'some',\n ...GetMethodConf\n },\n {\n key: 'reduce',\n ...GetMethodConf,\n wrapArgs: 0b10\n },\n {\n key: 'reduceRight',\n ...GetMethodConf,\n wrapArgs: 0b10\n }\n].forEach(({ key, wrapReturn, wrapArgs }) => {\n arrayMethodReWrites[key] = function (...args: any[]) {\n const meta = this[Keys.Meta];\n const fn = Array.prototype[key];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n warpCallbackArgs(isDeep, args, scope, wrapArgs);\n // 遍历函数不收集数组属性\n let result = fn.call(that, ...args);\n if (wrapReturn && isDeep) {\n result = deepSignal(result, scope);\n }\n this[Keys.Iterator];\n return result;\n };\n});\n\n// TODO: 考虑是否基于 js 实现以提高性能\narrayMethodReWrites.toSorted = function (...args: any[]) {\n const fn = Array.prototype['toSorted'];\n const meta = this[Keys.Meta];\n const { deep: isDeep, scope } = meta;\n const that = toRaw(this);\n warpCallbackArgs(isDeep, args, scope, 0b11);\n let result = fn.call(that, ...args);\n this[Keys.Iterator];\n return isDeep ? result.map(it => deepSignal(it, scope)) : result;\n};\n\n/*----------------- 转换方法 仅收集 仅收集 __Iterator Get -----------------*/\n['join', 'toString', 'toLocaleString'].forEach(key => {\n arrayMethodReWrites[key] = function (...args: any[]) {\n const fn = Array.prototype[key];\n const that = toRaw(this);\n const result = fn.call(that, ...args);\n this[Keys.Iterator];\n return result;\n };\n});\n\nfunction warpCallbackArgs(isDeep: boolean, args: any[], scope: Scope, wrapArgs: number = 0b01) {\n const callback = args[0];\n const wrapCb = function (this: any, ...cbArgs: any[]) {\n if (isDeep) {\n if (wrapArgs & 0b01) cbArgs[0] = deepSignal(cbArgs[0], scope);\n if (wrapArgs & 0b10) cbArgs[1] = deepSignal(cbArgs[1], scope);\n }\n // 遍历函数不收集数组属性,但是回调函数需要收集用户的 get\n return callback.call(this, ...cbArgs);\n };\n args[0] = wrapCb;\n}\n\n// TODO: flat flatMap sort\n\n/**\n * 无需重写:\n * 1. at\n * 2. keys\n */\n","import { Computed } from './core/computed';\nimport { getPulling } from './core';\nimport { deepSignal, shareSignal } from './deep-signal';\nimport { DeepOmitPath, IsStore, Key, Keys, PRecord, StoreIgnoreKeys } from './type';\n\n/** 判断 expr 是否是 parentStore 上的一个 key(仅浅层,不涉及深度路径) */\nconst isParentKey = (parentStore: any, expr: string) => expr in parentStore[Keys.Raw];\n\nexport class Store {\n static [IsStore] = true;\n static [StoreIgnoreKeys]: Key[] = ['ui', 'raw'];\n static Current: Store = null;\n constructor() {\n const proxy = deepSignal(this, getPulling(), true);\n Store.Current = proxy;\n return proxy;\n }\n parent: () => Store | null = () => null;\n\n /**\n * 创建子 Store 实例并传递属性:\n * Store.new({ prop1: `v1+v2`, prop2: (p) => p.v3 * p.v4 }, { prop3: 123 })\n *\n * keyMap:childKey → 表达式\n * - string:解析为 with(parentStore) { ... } 表达式,结果包装为 Computed\n * - Function:直接包装为 Computed(() => fn(parentStore))\n *\n * staticMap:childKey → 静态值,直接赋值\n */\n static new<T extends Store = any, P extends Store = any, O extends string = ''>(\n this: new (...args: any[]) => T,\n keyMap?: PRecord<keyof T, keyof Omit<P, O> | DeepOmitPath<P, O>> | Record<string, string | Function>,\n staticMap?: PRecord<keyof T, any>\n ): T {\n const parentStore = Store.Current;\n const child = new (this as any)();\n if (parentStore && keyMap) {\n const cells: Map<string, any> = child[Keys.Meta].cells;\n for (const childKey in keyMap) {\n const expr = (keyMap as Record<string, any>)[childKey];\n\n if (typeof expr === 'function') {\n // 函数表达式 → Computed\n cells.set(childKey, new Computed(() => expr(parentStore)));\n child[Keys.Raw][childKey] = undefined;\n } else if (typeof expr === 'string') {\n // 字符串:若 parentStore 上存在同名 key → shareSignal 双向共享;\n // 否则视为 JS 表达式 → Computed 单向传递\n if (isParentKey(parentStore, expr)) {\n shareSignal(parentStore, expr, child, childKey);\n } else {\n const fn = new Function('data', `let v;with(data){v=${expr};}return v;`);\n cells.set(childKey, new Computed(() => fn(parentStore)));\n child[Keys.Raw][childKey] = undefined;\n }\n } else {\n // 数组:旧版 deep path,走 shareSignal 双向共享\n shareSignal(parentStore, expr as string, child, childKey);\n }\n }\n }\n for (const key in staticMap) {\n child[key] = staticMap[key];\n }\n child.parent = () => parentStore;\n Store.Current = parentStore;\n return child;\n }\n\n map<P extends Store = any, O extends string = ''>(\n keyMap: PRecord<keyof this, keyof Omit<P, O> | DeepOmitPath<P, O>> = {}\n ) {\n const parentStore = this.parent();\n if (parentStore) {\n for (const childKey in keyMap) {\n const parentKey: string = keyMap[childKey] as any;\n shareSignal(parentStore, parentKey, this, childKey);\n }\n }\n this.parent = null;\n }\n}\n\nexport const isStore = (s: any): s is typeof Store => typeof s === 'function' && s[IsStore];\n","import { Computed, Effect, EffectStrType2Enum, getPulling, ScheduleType, ScheduleTypeStr, Scope, Signal } from './core';\nimport { State } from './core/macro' with { type: 'macro' };\nimport { ValueDiff } from './type';\nimport { deepSignal } from './deep-signal';\n\nexport function $(data: any) {\n if (typeof data === 'object' && data !== null) {\n return deepSignal(data, getPulling());\n }\n if (typeof data === 'function') {\n const s = new Computed(data),\n get = s.get.bind(s);\n return {\n ins: s,\n get v() {\n return get();\n }\n };\n } else {\n const s = new Signal(data),\n set = s.set.bind(s),\n get = s.get.bind(s);\n return {\n ins: s,\n get v() {\n return get();\n },\n set v(v) {\n set(v);\n }\n };\n }\n}\n\nconst DefaultCustomEffectOpt = {\n immediate: true,\n type: 'sync' as ScheduleTypeStr\n};\n\nexport type CustomEffectOpt = Partial<typeof DefaultCustomEffectOpt>;\n\nexport function effectUt(\n callback: (...args: ValueDiff[]) => void,\n depOrOpt?: any[] | CustomEffectOpt,\n opt?: CustomEffectOpt\n) {\n /*----------------- 自动收集 -----------------*/\n const hasDep = Array.isArray(depOrOpt);\n opt = hasDep ? opt || {} : depOrOpt || {};\n const scheduleType = EffectStrType2Enum[opt.type];\n if (!hasDep) {\n // @ts-ignore\n const ef = new Effect(callback, scheduleType);\n const run = ef.dispose.bind(ef);\n run.ins = ef;\n return run;\n }\n /*----------------- 指定依赖, watcher -----------------*/\n let mounted = false;\n const deps = depOrOpt as any[];\n const immediate = deps.length === 0 ? true : (opt.immediate ?? true);\n const vs: ValueDiff[] = Array.from({ length: deps.length }, () => ({ old: null, val: null }));\n\n const ef = new Effect(eff => {\n for (let i = 0; i < deps.length; i++) {\n const value = deps[i].v;\n vs[i].old = vs[i].val;\n vs[i].val = value;\n }\n\n if (mounted || immediate) {\n eff.state |= State.LinkScopeOnly;\n callback(...vs);\n eff.state &= ~State.LinkScopeOnly;\n }\n mounted = true;\n }, scheduleType);\n const run = ef.dispose.bind(ef);\n run.ins = ef;\n return run;\n}\n\nexport function effect(\n callback: (...args: ValueDiff[]) => void,\n depOrOpt?: any[] | CustomEffectOpt,\n opt?: CustomEffectOpt\n) {\n /*----------------- 自动收集 -----------------*/\n const hasDep = Array.isArray(depOrOpt);\n opt = hasDep ? opt || {} : depOrOpt || {};\n opt = { ...DefaultCustomEffectOpt, ...opt };\n const scheduleType = EffectStrType2Enum[opt.type];\n if (!hasDep) {\n // @ts-ignore\n const ef = new Effect(callback, scheduleType);\n return ef;\n }\n /*----------------- 指定依赖, watcher -----------------*/\n let mounted = false;\n const deps = depOrOpt as any[];\n const immediate = deps.length === 0 ? true : (opt.immediate ?? true);\n const vs: ValueDiff[] = Array.from({ length: deps.length }, () => ({ old: null, val: null }));\n\n const ef = new Effect(eff => {\n for (let i = 0; i < deps.length; i++) {\n const dep = deps[i];\n const value = typeof dep === 'function' ? dep() : dep.get();\n vs[i].old = vs[i].val;\n vs[i].val = value;\n }\n\n if (mounted || immediate) {\n eff.state |= State.LinkScopeOnly;\n callback(...vs);\n eff.state &= ~State.LinkScopeOnly;\n }\n mounted = true;\n }, scheduleType);\n return ef;\n}\n\nexport function scope(...args) {\n const ins = new Scope(args[0]);\n if (args.length === 2) {\n ins.scope = args[1];\n }\n ins.get();\n const run = ins.dispose.bind(ins);\n run.ins = ins;\n return run;\n}\n"],"names":["_execId","currentExecId","execIdInc","execId","setExecId","v","pulling","setPulling","getPulling","runWithPulling","fn","scope","oldPulling","ret","ScheduleType","EffectStrType2Enum","sync","Sync","pre","Pre","render","Render","post","Post","ScheduleStatus","MultiScheduler","hasTask","taskMap","constructor","queueCount","i","head","tail","addTask","queueId","task","queue","item","value","next","flushAllTask","highest","consumeTask","get","multiScheduler","Keys","IsStore","Symbol","StoreIgnoreKeys","ide","globalThis","requestIdleCallback","requestAnimationFrame","setTimeout","now","timer","performance","Date","channel","MessageChannel","msgId","macro","memoId","onMessage","e","data","port2","removeEventListener","addEventListener","port1","postMessage","p","Promise","resolve","micro","cb","then","toRaw","a","Raw","mark","signal","line","emitHead","down","state","State","notLocked","type","addEffect","markUnknownDeep","nextEmitLine","initialLine","noPulling","stack","len","DirtyState","pullDeep","root","node","top","lineStack","_node","noSkipSelf","PullingOrScopeExecuted","firstLine","recHead","up","_node2","noGoSibling","prevValue","prevPulling","_line","transferDirtyState","nextRecLine","effectQueue","consumeI","produceI","effect","flushSyncEffect","schedulerStatus","Idle","flushMicroEffect","Ready","Running","flushMicroEffectManual","_batchDeep","batchStart","batchEnd","batchDeep","unlink","deep","prevEmitLine","prevRecLine","prevOutLink","nextOutLink","emitTail","recTail","outLink","dispose","_ref","toDel","_toDel","outer","ScopeAbort","releaseScope","clean","onClean","current","link","scopeUp","scopeDown","nextRec","eid","makeOutLink","first","Computed","callback","shouldLink","notForceUpdate","nextId","prevId","nextLine","Signal","set","EffectState","Effect","res","prototype","ScopeAndLinkScopeOnly","Scope","NoopEffect","noopEffect","rawToProxy","WeakMap","Unknown","Dirty","ScopeReady","trackIterator","cells","iter","Iterator","triggerIterator","trackKey","key","cell","undefined","triggerKey","createSharedHandler","targetIsMap","iterate","rawTarget","iteratorFn","rawIter","rawNext","bind","result","done","deepSignal","has","target","delete","had","clear","hadItems","size","iterCell","forEach","thisArg","wrap","val","k","call","keys","values","entries","iterator","createMapHandler","createSetHandler","_deep","add","mergeHandlers","handlers","Object","assign","isObj","ProxyFreeObject","Map","targetIsSet","Set","meta","shared","specific","instrumentations","proxy","Proxy","_obj","prop","receiver","Meta","toStringTag","Reflect","targetIsArray","Array","isArray","targetIsStore","Boolean","obj","unscopables","isIgnoreKey","desc","getOwnPropertyDescriptor","isGetter","handleGetterAsComputed","valueIsFn","arrayMethodReWrites","hasOwnProperty","s","wrappedValue","isNewKey","success","handleArraySet","deleteProperty","ownKeys","length","filter","shareSignal","from","fromPath","to","toPath","toPaths","split","formPaths","_getTargetAndKey","getTargetAndKey","fromTarget","fromKey","fromSignal","_getTargetAndKey2","toTarget","toKey","error","console","paths","ignores","includes","some","it","startsWith","arr","isNatureNumStr","triggerIter","args","that","isEntries","rawArray","isDeep","resultIndex","userThis","slice","start","end","Math","max","min","final","count","toReversed","toSpliced","deleteCount","items","relativeStart","actualStart","actualDeleteCount","arguments","dc","insertCount","newLen","remainingStart","resultOffset","with","index","relativeIndex","Number","actualIndex","RangeError","concat","selfLen","totalLength","j","GetMethodConf","wrapReturn","wrapArgs","warpCallbackArgs","toSorted","map","wrapCb","cbArgs","isParentKey","parentStore","expr","Store","Current","parent","new","keyMap","staticMap","child","childKey","Function","parentKey","isStore","$","ins","DefaultCustomEffectOpt","immediate","effectUt","depOrOpt","opt","hasDep","scheduleType","ef","run","mounted","deps","vs","old","eff","dep"],"mappings":";;;;;;EAEA,IAAIA,OAAO,GAAG,CAAC;EACf,IAAIC,aAAa,GAAG,CAAC;QAERC,SAAS,GAAGA,MAAM,EAAEF;AAI1B,QAAMG,MAAM,GAAGA,MAAMF;QACfG,SAAS,GAAIC,CAAS,IAAMJ,aAAa,GAAGI;EAEzD,IAAIC,OAAmB,GAAG,IAAI;QACjBC,UAAU,GAAIF,CAAa,IAAMC,OAAO,GAAGD;AACjD,QAAMG,UAAU,GAAGA,MAAMF;EAEzB,SAASG,cAAcA,CAAoCC,EAAK,EAAEC,KAAU,EAAiB;IAClG,MAAMC,UAAU,GAAGN,OAAO;EAC1BA,EAAAA,OAAO,GAAGK,KAAK;EACf,EAAA,MAAME,GAAG,GAAGH,EAAE,EAAE;EAChBJ,EAAAA,OAAO,GAAGM,UAAU;EACpB,EAAA,OAAOC,GAAG;EACZ;;ACOA,MAAYC,YAAY,aAAZA,YAAY,EAAA;EAAZA,EAAAA,YAAY,CAAZA,YAAY,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;EAAZA,EAAAA,YAAY,CAAZA,YAAY,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;EAAZA,EAAAA,YAAY,CAAZA,YAAY,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;EAAZA,EAAAA,YAAY,CAAZA,YAAY,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;EAAA,EAAA,OAAZA,YAAY;EAAA,CAAA,CAAA,EAAA;AAWjB,QAAMC,kBAAkB,GAAG;IAChCC,IAAI,EAAEF,YAAY,CAACG,IAAI;IACvBC,GAAG,EAAEJ,YAAY,CAACK,GAAG;IACrBC,MAAM,EAAEN,YAAY,CAACO,MAAM;IAC3BC,IAAI,EAAER,YAAY,CAACS;EACrB;AAIA,MAAYC,cAAc,aAAdA,cAAc,EAAA;EAAdA,EAAAA,cAAc,CAAdA,cAAc,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;EAAdA,EAAAA,cAAc,CAAdA,cAAc,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;EAAdA,EAAAA,cAAc,CAAdA,cAAc,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;EAAA,EAAA,OAAdA,cAAc;EAAA,CAAA,CAAA,EAAA;;ECnCnB,MAAMC,cAAc,CAAI;EAE7BC,EAAAA,OAAO,GAAG,CAAC;IACXC,OAAO,GAAiC,EAAE;IAC1CC,WAAWA,CAACC,UAAkB,EAAE;MAC9B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,UAAU,EAAEC,CAAC,EAAE,EAAE;EACnC,MAAA,IAAI,CAACH,OAAO,CAAC,CAAC,IAAIG,CAAC,CAAC,GAAG;EACrBC,QAAAA,IAAI,EAAE,IAAI;EACVC,QAAAA,IAAI,EAAE;SACP;EACH,IAAA;EACF,EAAA;EAEAC,EAAAA,OAAOA,CAACC,OAAe,EAAEC,IAAS,EAAE;EAClC,IAAA,MAAMC,KAAK,GAAG,IAAI,CAACT,OAAO,CAACO,OAAO,CAAC;EACnC,IAAA,MAAQF,IAAI,GAAKI,KAAK,CAAdJ,IAAI;EACZ,IAAA,MAAMK,IAAI,GAAG;EACXC,MAAAA,KAAK,EAAEH,IAAI;EACXI,MAAAA,IAAI,EAAE;OACP;EACD,IAAA,IAAIP,IAAI,EAAE;QACRA,IAAI,CAACO,IAAI,GAAGF,IAAI;EAClB,IAAA,CAAC,MAAM;QACLD,KAAK,CAACL,IAAI,GAAGM,IAAI;EACnB,IAAA;MACAD,KAAK,CAACJ,IAAI,GAAGK,IAAI;MACjB,IAAI,CAACX,OAAO,IAAIQ,OAAO;EACzB,EAAA;EAEAM,EAAAA,YAAYA,GAAG;MAEb,OAAO,IAAI,CAACd,OAAO,EAAE;EACnB,MAAA,MAAQA,OAAO,GAAK,IAAI,CAAhBA,OAAO;EACf,MAAA,MAAMe,OAAO,GAAGf,OAAO,GAAI,CAACA,OAAO,GAAG,CAAE;QACxC,MAAMS,IAAY,GAAG,IAAI,CAACO,WAAW,CAACD,OAAO,CAAC,CAACH,KAAY;QAC3DH,IAAI,CAACQ,GAAG,EAAE;EACZ,IAAA;EACF,EAAA;IAEAD,WAAWA,CAACR,OAAe,EAAE;EAC3B,IAAA,MAAME,KAAK,GAAG,IAAI,CAACT,OAAO,CAACO,OAAO,CAAC;EACnC,IAAA,MAAQH,IAAI,GAAWK,KAAK,CAApBL,IAAI;QAAEC,IAAI,GAAKI,KAAK,CAAdJ,IAAI;EAClB,IAAA,MAAMO,IAAI,GAAGR,IAAI,CAACQ,IAAI;MACtBR,IAAI,CAACQ,IAAI,GAAG,IAAI;MAChB,IAAIR,IAAI,KAAKC,IAAI,EAAE;QACjBI,KAAK,CAACL,IAAI,GAAG,IAAI;QACjBK,KAAK,CAACJ,IAAI,GAAG,IAAI;EAEjB,MAAA,IAAI,CAACN,OAAO,IAAI,CAACQ,OAAO;EAC1B,IAAA,CAAC,MAAM;QACLH,IAAI,CAACQ,IAAI,GAAG,IAAI;QAChBH,KAAK,CAACL,IAAI,GAAGQ,IAAI;EACnB,IAAA;EACA,IAAA,OAAOR,IAAI;EACb,EAAA;EACF;EAKO,MAAMa,cAAc,GAAG,IAAInB,cAAc,CAAC,CAAC,CAAC;;ACrEnD,MAAYoB,IAAI,aAAJA,IAAI,EAAA;IAAJA,IAAI,CAAA,UAAA,CAAA,GAAA,iBAAA;IAAJA,IAAI,CAAA,KAAA,CAAA,GAAA,YAAA;IAAJA,IAAI,CAAA,MAAA,CAAA,GAAA,aAAA;IAAJA,IAAI,CAAA,iBAAA,CAAA,GAAA,0BAAA;EAAA,EAAA,OAAJA,IAAI;EAAA,CAAA,CAAA,EAAA;QASHC,OAAO,GAAGC,MAAM,CAAC,iBAAiB,CAAC;EAC9CC,EAAAA,eAAe,GAAGD,MAAM,CAAC,oBAAoB;;QCblCE,GAAG,GACdC,UAAU,CAACC,mBAAmB,KAC7BD,UAAU,CAACE,qBAAqB,GAC5B1C,EAAY,IACXwC,UAAU,CAACE,qBAAqB,CAAC,MAAM;EACrCC,EAAAA,UAAU,CAAC,MAAM;EACf3C,IAAAA,EAAE,EAAE;EACN,EAAA,CAAC,CAAC;EACJ,CAAC,CAAC,GACJwC,UAAU,CAACG,UAAU;AAEpB,QAAMC,GAAG,GAAGA,MAAM;IACvB,MAAMC,KAAK,GAAGL,UAAU,CAACM,WAAW,IAAIN,UAAU,CAACO,IAAI;EACvD,EAAA,OAAOF,KAAK,CAACD,GAAG,EAAE;EACpB;EACA,IAAII,OAAuB,GAAGR,UAAU,CAACS,cAAc,GAAG,IAAIA,cAAc,EAAE,GAAG,IAAI;EACrF,IAAIT,UAAU,CAACS,cAAc,EAAE;EAC7BD,EAAAA,OAAO,GAAG,IAAIC,cAAc,EAAE;EAChC;EACA,IAAIC,KAAK,GAAG,CAAC;AACN,QAAMC,KAAK,GAAGnD,EAAE,IAAI;IACzB,IAAI,CAACgD,OAAO,EAAE;MACZL,UAAU,CAAC3C,EAAE,CAAC;EAChB,EAAA;IACA,MAAMoD,MAAM,GAAGF,KAAK;IACpB,SAASG,SAASA,CAACC,CAAC,EAAE;EACpB,IAAA,IAAIF,MAAM,KAAKE,CAAC,CAACC,IAAI,EAAE;EACrBvD,MAAAA,EAAE,EAAE;QACJgD,OAAO,CAACQ,KAAK,CAACC,mBAAmB,CAAC,SAAS,EAAEJ,SAAS,CAAC;EACzD,IAAA;EACF,EAAA;IACAL,OAAO,CAACQ,KAAK,CAACE,gBAAgB,CAAC,SAAS,EAAEL,SAAS,CAAC;EACpDL,EAAAA,OAAO,CAACW,KAAK,CAACC,WAAW,CAACV,KAAK,EAAE,CAAC;EACpC;EAEA,MAAMW,CAAC,GAAGC,OAAO,CAACC,OAAO,EAAE;AACpB,QAAMC,KAAK,GAAIC,EAAa,IAAK;EACtCJ,EAAAA,CAAC,CAACK,IAAI,CAACD,EAAE,CAAC;EACZ;AAEO,QAAME,KAAK,GAAOC,CAAI,IAAK;EAChC,EAAA,IAAI,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,KAAK,IAAI,IAAIA,CAAC,CAACjC,IAAI,CAACkC,GAAG,CAAC,EAAE;MACtD,OAAOF,KAAK,CAACC,CAAC,CAACjC,IAAI,CAACkC,GAAG,CAAC,CAAC;EAC3B,EAAA;EACA,EAAA,OAAOD,CAAC;EACV;;ECvCO,SAASE,IAAIA,CAACC,MAAc,EAAE;EACnC,EAAA,IAAIC,IAAI,GAAGD,MAAM,CAACE,QAAQ;EAC1B,EAAA,OAAOD,IAAI,EAAE;EACX,IAAA,MAAME,IAAI,GAAGF,IAAI,CAACE,IAAc;EAChC,IAAA,MAAQzE,KAAK,GAAsByE,IAAI,CAA/BzE,KAAK;QAAEwE,QAAQ,GAAYC,IAAI,CAAxBD,QAAQ;QAAEE,KAAK,GAAKD,IAAI,CAAdC,KAAK;EAG9B,IAAA,IAAI1E,KAAK,IAAIA,KAAK,CAAC0E,KAAK,GAAGC,GAAgB,EAAE,CAC5C,MAAM;QACL,MAAMC,SAAS,GAAG,CAACF,KAAK,GAAGC,CAAc,MAAM,CAAC;QAChDF,IAAI,CAACC,KAAK,IAAIE,SAAS,GAAGD,CAAiB,GAAGA,EAAwB;EAEtE,MAAA,IAAID,KAAK,GAAGC,EAAa,EAAE;EACzB,QAAA,IAAIC,SAAS,IAAIF,KAAK,GAAGC,GAAc,EAAE;EACvC,UAAA,IAAIF,IAAI,CAACI,IAAI,KAAK1E,YAAY,CAACG,IAAI,EAAE;cACnCwE,SAAS,CAACL,IAAI,CAAC;EACjB,UAAA,CAAC,MAAM;cACLxC,cAAc,CAACX,OAAO,CAACmD,IAAI,CAACI,IAAI,EAAEJ,IAAI,CAAC;EACzC,UAAA;EACF,QAAA;QACF,CAAC,MAAM,IAAID,QAAQ,EAAE;UACnBO,eAAe,CAACP,QAAQ,CAAC;EAC3B,MAAA;EACF,IAAA;MACAD,IAAI,GAAGA,IAAI,CAACS,YAAY;EAC1B,EAAA;EACF;EAEA,SAASD,eAAeA,CAACE,WAAiB,EAAE;EAC1C,EAAA,MAAMC,SAAS,GAAG,CAACrF,UAAU,EAAE;EAE/B,EAAA,MAAMsF,KAAa,GAAG,CAACF,WAAW,CAAC;IACnC,IAAIG,GAAG,GAAG,CAAC;IAEX,OAAOA,GAAG,GAAG,CAAC,EAAE;EAEd,IAAA,IAAIb,IAAU,GAAGY,KAAK,CAAC,EAAEC,GAAG,CAAC;EAC7BD,IAAAA,KAAK,CAACC,GAAG,CAAC,GAAG,IAAW;EAExB,IAAA,OAAOb,IAAI,EAAE;EACX,MAAA,MAAME,IAAI,GAAGF,IAAI,CAACE,IAAc;EAChC,MAAA,MAAQC,KAAK,GAAYD,IAAI,CAArBC,KAAK;UAAE1E,KAAK,GAAKyE,IAAI,CAAdzE,KAAK;EAQpB,MAAA,IAAKA,KAAK,IAAIA,KAAK,CAAC0E,KAAK,GAAGC,GAAgB,IAAMO,SAAS,IAAIR,KAAK,GAAGW,CAAW,EAAE,CACnF,MAAM;UACL,MAAMT,SAAS,GAAG,CAACF,KAAK,GAAGC,CAAc,MAAM,CAAC;UAChDF,IAAI,CAACC,KAAK,IAAIE,SAAS,GAAGD,CAAa,GAAGA,CAAoB;EAE9D,QAAA,IAAID,KAAK,GAAGC,EAAa,EAAE;EACzB,UAAA,IAAIC,SAAS,IAAIF,KAAK,GAAGC,GAAc,EAAE;EACvC,YAAA,IAAIF,IAAI,CAACI,IAAI,KAAK1E,YAAY,CAACG,IAAI,EAAE;gBACnCwE,SAAS,CAACL,IAAI,CAAC;EACjB,YAAA,CAAC,MAAM;gBACLxC,cAAc,CAACX,OAAO,CAACmD,IAAI,CAACI,IAAI,EAAEJ,IAAI,CAAC;EACzC,YAAA;EACF,UAAA;EACF,QAAA,CAAC,MAAM,IAAIA,IAAI,CAACD,QAAQ,EAAE;EAExBW,UAAAA,KAAK,CAACC,GAAG,EAAE,CAAC,GAAGX,IAAI,CAACD,QAAQ;EAC9B,QAAA;EACF,MAAA;QAEAD,IAAI,GAAGA,IAAI,CAACS,YAAY;EAC1B,IAAA;EACF,EAAA;EACF;EAEO,SAASM,QAAQA,CAACC,IAAgB,EAAO;IAC9C,IAAIC,IAAI,GAAGD,IAAI;EACbE,IAAAA,GAAS,GAAG,IAAI;MAChBtE,CAAC,GAAG,EAAE;IACR,MAAMuE,SAAiB,GAAG,EAAE;IAC5B,GAAG;MACD,MAAAC,KAAA,GAAyBH,IAAI;QAArBd,KAAK,GAAAiB,KAAA,CAALjB,KAAK;QAAE1E,KAAK,GAAA2F,KAAA,CAAL3F,KAAK;MACpB,IAAI4F,UAAU,GAAG,EACflB,KAAK,GAAGmB,GAAsB,IAC9B,CAACnB,KAAK,GAAGW,CAAU,MAAM,CAAC,IACzBrF,KAAK,IAAIA,KAAK,CAAC0E,KAAK,GAAGC,GAAiB,CAC1C;EAED,IAAA,MAAMmB,SAAS,GAAGN,IAAI,CAACO,OAAO;EAG9B,IAAA,IAAIH,UAAU,EAAE;EACdJ,MAAAA,IAAI,CAACd,KAAK,IAAIC,CAAc;QAC5B,IAAI,CAACD,KAAK,GAAGC,CAAiB,MAAM,CAAC,IAAImB,SAAS,EAAE;UAClDN,IAAI,GAAGM,SAAS,CAACE,EAAgB;EACjCN,QAAAA,SAAS,CAAC,EAAEvE,CAAC,CAAC,GAAGsE,GAAG;EACpBA,QAAAA,GAAG,GAAGK,SAAS;EACf,QAAA;EACF,MAAA;EACF,IAAA;MAEA,GAAG;QACD,MAAAG,MAAA,GAAkBT,IAAI;UAAdd,KAAK,GAAAuB,MAAA,CAALvB,KAAK;QACb,IAAIwB,WAAW,GAAG,KAAK;EACvB,MAAA,IAAIN,UAAU,EAAE;EAEd,QAAA,IAAIlB,KAAK,GAAGC,CAAiB,EAAE;EAG7B,UAAA,MAAMwB,SAAS,GAAGX,IAAI,CAAC7D,KAAK;EAC5B,UAAA,MAAMyE,WAAW,GAAGvG,UAAU,EAAE;YAChCD,UAAU,CAAC4F,IAAI,CAAC;YAChB,MAAM7D,KAAK,GAAG6D,IAAI,CAACxD,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;YACpCpC,UAAU,CAACwG,WAAW,CAAC;EAEvB,UAAA,IAAKF,WAAW,GAAGvE,KAAK,KAAKwE,SAAS,EAAG;EACvC,YAAA,IAAI5B,IAAI,GAAGiB,IAAI,CAAChB,QAAQ;EACxB,YAAA,OAAOD,IAAI,EAAE;gBACX,MAAA8B,KAAA,GAAiB9B,IAAI;kBAAbE,IAAI,GAAA4B,KAAA,CAAJ5B,IAAI;EACZA,cAAAA,IAAI,CAACC,KAAK,IAAI,EAAc;EAC5BD,cAAAA,IAAI,CAACC,KAAK,IAAIC,CAAiB;gBAC/BJ,IAAI,GAAGA,IAAI,CAACS,YAAY;EAC1B,YAAA;EACF,UAAA;EACF,QAAA,CAAC,MAEI;EACHsB,UAAAA,kBAAkB,CAACd,IAAI,EAAEd,KAAK,CAAC;EACjC,QAAA;EACAc,QAAAA,IAAI,CAACd,KAAK,IAAI,EAAe;EAC/B,MAAA;QAGA,IAAIc,IAAI,KAAKD,IAAI,EAAE;UAEjB,OAAOC,IAAI,CAAC7D,KAAK;EACnB,MAAA;EACA,MAAA,IAAI,CAACuE,WAAW,IAAIT,GAAG,CAACc,WAAW,EAAE;UACnCd,GAAG,GAAGA,GAAG,CAACc,WAAW;UACrBf,IAAI,GAAGC,GAAG,CAACO,EAAgB;EAC3B,QAAA;EACF,MAAA;EAEAJ,MAAAA,UAAU,GAAG,IAAI;QACjBJ,IAAI,GAAGC,GAAG,CAAChB,IAAkB;EAC7BgB,MAAAA,GAAG,GAAGC,SAAS,CAACvE,CAAC,CAAC;EAClBuE,MAAAA,SAAS,CAACvE,CAAC,EAAE,CAAC,GAAG,IAAI;EACvB,IAAA,CAAC,QAAQ,IAAI;EACf,EAAA,CAAC,QAAQ,IAAI;EACf;EAMO,SAASmF,kBAAkBA,CAACd,IAAgB,EAAEd,KAAY,EAAE;EAEjE,EAAA,IAAIA,KAAK,GAAGC,CAAoB,EAAE;EAChCa,IAAAA,IAAI,CAACd,KAAK,GAAIA,KAAK,GAAG,EAAqB,GAAIC,CAAa;EAC9D,EAAA,CAAC,MAAM;EACLa,IAAAA,IAAI,CAACd,KAAK,IAAI,EAAc;EAC9B,EAAA;EAEA,EAAA,IAAIA,KAAK,GAAGC,EAAwB,EAAE;EACpCa,IAAAA,IAAI,CAACd,KAAK,GAAIA,KAAK,GAAG,GAAyB,GAAIC,CAAiB;EACtE,EAAA,CAAC,MAAM;EACLa,IAAAA,IAAI,CAACd,KAAK,IAAI,EAAkB;EAClC,EAAA;EACF;EACA,MAAM8B,WAAqB,GAAG,EAAE;EAChC,IAAIC,QAAQ,GAAG,EAAE;IACfC,QAAQ,GAAG,EAAE;EACR,SAAS5B,SAASA,CAAC6B,MAAc,EAAE;EACxCH,EAAAA,WAAW,CAAC,EAAEE,QAAQ,CAAC,GAAGC,MAAM;EAClC;EACO,SAASC,eAAeA,GAAG;EAEhC,EAAA,IAAIH,QAAQ,KAAK,EAAE,EAAE;EACnB,IAAA;EACF,EAAA;EACA,EAAA,OAAO,EAAEA,QAAQ,IAAIC,QAAQ,EAAE;EAC7B,IAAA,MAAMC,MAAM,GAAGH,WAAW,CAACC,QAAQ,CAAC;EACpC,IAAA,IAAIE,MAAM,CAACjC,KAAK,GAAGW,CAAU,EAAE;QAC7BsB,MAAM,CAAC3E,GAAG,EAAE;EACd,IAAA;EACAwE,IAAAA,WAAW,CAACC,QAAQ,CAAC,GAAG,IAAI;EAC9B,EAAA;IACAA,QAAQ,GAAG,EAAE;IACbC,QAAQ,GAAG,EAAE;EACf;EACA,IAAIG,eAAe,GAAGhG,cAAc,CAACiG,IAAI;EAClC,SAASC,gBAAgBA,GAAG;IACjC,IAAIF,eAAe,KAAKhG,cAAc,CAACiG,IAAI,IAAI7E,cAAc,CAAClB,OAAO,EAAE;MACrE8F,eAAe,GAAGhG,cAAc,CAACmG,KAAK;EACtCjD,IAAAA,KAAK,CAAC,MAAM;QACV8C,eAAe,GAAGhG,cAAc,CAACoG,OAAO;QACxChF,cAAc,CAACJ,YAAY,EAAE;QAC7BgF,eAAe,GAAGhG,cAAc,CAACiG,IAAI;EACvC,IAAA,CAAC,CAAC;EACJ,EAAA;EACF;EACO,SAASI,sBAAsBA,GAAG;IACvC,IAAIL,eAAe,KAAKhG,cAAc,CAACoG,OAAO,IAAIhF,cAAc,CAAClB,OAAO,EAAE;MACxE8F,eAAe,GAAGhG,cAAc,CAACoG,OAAO;MACxChF,cAAc,CAACJ,YAAY,EAAE;MAC7BgF,eAAe,GAAGhG,cAAc,CAACiG,IAAI;EACvC,EAAA;EACF;EAEA,IAAIK,UAAU,GAAG,CAAC;QACLC,UAAU,GAAGA,MAAMD,UAAU;AACnC,QAAME,QAAQ,GAAGA,MAAM;EAC5BF,EAAAA,UAAU,EAAE;IACZ,IAAIA,UAAU,KAAK,CAAC,EAAE;EACpBP,IAAAA,eAAe,EAAE;EACjBG,IAAAA,gBAAgB,EAAE;EACpB,EAAA;EACF;AAIO,QAAMO,SAAS,GAAGA,MAAMH;EAExB,SAASI,MAAMA,CAAChD,IAAa,EAAEiD,IAAa,EAAE;EAEnD,EAAA,MAAQxC,YAAY,GAAiFT,IAAI,CAAjGS,YAAY;MAAEyC,YAAY,GAAmElD,IAAI,CAAnFkD,YAAY;MAAElB,WAAW,GAAsDhC,IAAI,CAArEgC,WAAW;MAAEmB,WAAW,GAAyCnD,IAAI,CAAxDmD,WAAW;MAAE1B,EAAE,GAAqCzB,IAAI,CAA3CyB,EAAE;MAAEvB,IAAI,GAA+BF,IAAI,CAAvCE,IAAI;MAAEkD,WAAW,GAAkBpD,IAAI,CAAjCoD,WAAW;MAAEC,WAAW,GAAKrD,IAAI,CAApBqD,WAAW;EAChG,EAAA,MAAQ5H,KAAK,GAAKyE,IAAI,CAAdzE,KAAK;EAGb,EAAA,IAAIyH,YAAY,EAAE;MAChBA,YAAY,CAACzC,YAAY,GAAGA,YAAY;EAC1C,EAAA,CAAC,MAAM;MAELgB,EAAE,CAACxB,QAAQ,GAAGQ,YAAY;EAC5B,EAAA;EACA,EAAA,IAAIA,YAAY,EAAE;MAChBA,YAAY,CAACyC,YAAY,GAAGA,YAAY;EAC1C,EAAA,CAAC,MAAM;MAELzB,EAAE,CAAC6B,QAAQ,GAAGJ,YAAY;EAC5B,EAAA;EAEA,EAAA,IAAIC,WAAW,EAAE;MACfA,WAAW,CAACnB,WAAW,GAAGA,WAAW;EACvC,EAAA,CAAC,MAAM;MAEL9B,IAAI,CAACsB,OAAO,GAAGQ,WAAW;EAC5B,EAAA;EACA,EAAA,IAAIA,WAAW,EAAE;MACfA,WAAW,CAACmB,WAAW,GAAGA,WAAW;EACvC,EAAA,CAAC,MAAM;MAELjD,IAAI,CAACqD,OAAO,GAAGJ,WAAW;EAC5B,EAAA;EAEA,EAAA,IAAIC,WAAW,EAAE;MACfA,WAAW,CAACC,WAAW,GAAGA,WAAW;EACvC,EAAA;EACA,EAAA,IAAIA,WAAW,EAAE;MACfA,WAAW,CAACD,WAAW,GAAGA,WAAW;EACvC,EAAA;EACA,EAAA,IAAI3H,KAAK,IAAIA,KAAK,CAAC+H,OAAO,KAAKxD,IAAI,EAAE;MACnCvE,KAAK,CAAC+H,OAAO,GAAGH,WAAW;EAC7B,EAAA;EACA,EAAA,IAAI5B,EAAE,CAACtB,KAAK,GAAGC,EAAa,EAAE;MAE5BqB,EAAE,CAACgC,OAAO,EAAE;IAEd,CAAC,MAEI,IAAIR,IAAI,IAAI,CAACC,YAAY,IAAI,CAACzC,YAAY,EAAE;MAC/C,IAAAiD,IAAA,GAAwBjC,EAAE;QAAXzB,IAAI,GAAA0D,IAAA,CAAblC,OAAO;EAEb,IAAA,OAAOxB,IAAI,EAAE;EACX,MAAA,MAAM3C,IAAI,GAAG2C,IAAI,CAACgC,WAAW;EAC7BgB,MAAAA,MAAM,CAAChD,IAAI,EAAa,IAAI,CAAC;EAC7BA,MAAAA,IAAI,GAAG3C,IAAI;EACb,IAAA;EACF,EAAA;EACF;EAEO,SAASoG,OAAOA,GAAmB;EAExC,EAAA,IAAeE,KAAK,GAAe,IAAI,CAAjCnC,OAAO;MAASvB,QAAQ,GAAK,IAAI,CAAjBA,QAAQ;EAC9B,EAAA,OAAO0D,KAAK,EAAE;MACZ,MAAAC,MAAA,GAA4BD,KAAK;QAAzBlC,EAAE,GAAAmC,MAAA,CAAFnC,EAAE;QAAEO,WAAW,GAAA4B,MAAA,CAAX5B,WAAW;MAEvB,IAAI,CAACP,EAAE,CAACtB,KAAK,GAAGC,EAAa,MAAM,CAAC,EAAE;EACpC4C,MAAAA,MAAM,CAACW,KAAK,EAAa,IAAI,CAAC;EAC9BA,MAAAA,KAAK,GAAG3B,WAAW;EACnB,MAAA;EACF,IAAA;MACA,IAAIf,IAAI,GAAGQ,EAAE;EACXP,MAAAA,GAAS,GAAG,IAAI;QAChBtE,CAAC,GAAG,EAAE;MACR,MAAMuE,SAAiB,GAAG,EAAE;EAC5B0C,IAAAA,KAAK,EAAE,GAAG;EACR,MAAA,IAAIxC,UAAU,GAAGJ,IAAI,CAACd,KAAK,GAAGC,EAAa,IAAI,CAACa,IAAI,CAACd,KAAK,GAAG2D,GAAU,MAAM,CAAC;EAC9E,MAAA,MAAMvC,SAAS,GAAGN,IAAI,CAACO,OAAO;QAE9B,IAAIH,UAAU,IAAIE,SAAS,EAAE;UAC3BN,IAAI,GAAGM,SAAS,CAACE,EAAgB;EACjCN,QAAAA,SAAS,CAAC,EAAEvE,CAAC,CAAC,GAAGsE,GAAG;EACpBA,QAAAA,GAAG,GAAGK,SAAS;EACf,QAAA;EACF,MAAA;QACA,GAAG;EACD,QAAA,IAAIF,UAAU,EAAE;YACd0C,YAAY,CAAC9C,IAAc,CAAC;EAC9B,QAAA;UAEA,IAAIA,IAAI,KAAKQ,EAAE,EAAE;EACf,UAAA,MAAMoC,KAAK;EACb,QAAA;UACA,IAAI3C,GAAG,CAACc,WAAW,EAAE;YACnBd,GAAG,GAAGA,GAAG,CAACc,WAAW;YACrBf,IAAI,GAAGC,GAAG,CAACO,EAAgB;EAC3B,UAAA;EACF,QAAA;EACAJ,QAAAA,UAAU,GAAG,IAAI;UACjBJ,IAAI,GAAGC,GAAG,CAAChB,IAAkB;EAC7BgB,QAAAA,GAAG,GAAGC,SAAS,CAACvE,CAAC,CAAC;EAClBuE,QAAAA,SAAS,CAACvE,CAAC,EAAE,CAAC,GAAG,IAAI;EACvB,MAAA,CAAC,QAAQ,IAAI;EACf,IAAA,CAAC,QAAQ,IAAI;EACb+G,IAAAA,KAAK,GAAG3B,WAAW;EACrB,EAAA;IACA+B,YAAY,CAAC,IAAc,CAAC;EAC5B,EAAA,IAAI9D,QAAQ,EAAE+C,MAAM,CAAC/C,QAAQ,EAAa,KAAK,CAAC;EAClD;EAEO,SAAS+D,KAAKA,CAACC,OAAgB,EAAE;EACtC,EAAA,MAAMC,OAAO,GAAG5I,UAAU,EAAY;IACtC4I,OAAO,CAACF,KAAK,GAAGC,OAAO;EACzB;EAEA,SAASF,YAAYA,CAACtI,KAAa,EAAE;EACnC,EAAA,IAAM+H,OAAO,GAAK/H,KAAK,CAAjB+H,OAAO;EACb,EAAA,OAAOA,OAAO,EAAE;EACd,IAAA,MAAMnG,IAAI,GAAGmG,OAAO,CAACH,WAAW;EAChCL,IAAAA,MAAM,CAACQ,OAAO,EAAE,IAAI,CAAC;EACrBA,IAAAA,OAAO,GAAGnG,IAAI;EAChB,EAAA;EACA5B,EAAAA,KAAK,CAAC0E,KAAK,IAAIC,GAAgB;EAE/B3E,EAAAA,KAAK,CAACuI,KAAK,GAAG,IAAI,CAAC;IACnBvI,KAAK,CAACuI,KAAK,GAAG,IAAI;EACpB;;EC5VO,SAASG,IAAIA,CAElB1C,EAAc,GAAG,IAAI,EAErBvB,IAAgB,GAAG,IAAI,EACvB;EACA,EAAA,MAAkBgD,YAAY,GAAqBzB,EAAE,CAA7C6B,QAAQ;MAAuBc,OAAO,GAAK3C,EAAE,CAArBhG,KAAK;EACrC,EAAA,IAAM+F,OAAO,GAAgCtB,IAAI,CAA3CsB,OAAO;MAAE+B,OAAO,GAAuBrD,IAAI,CAAlCqD,OAAO;MAASc,SAAS,GAAKnE,IAAI,CAAzBzE,KAAK;EAE7B,EAAA,IAAI4I,SAAS,IAAIA,SAAS,KAAKD,OAAO,IAAI,CAAC3C,EAAE,CAACtB,KAAK,GAAGC,EAAa,MAAM,CAAC,EAAE;EAC1EoD,IAAAA,OAAO,CAAC/B,EAAE,EAAEvB,IAAI,CAAC;EACjB,IAAA;EACF,EAAA;IACA,MAAMoE,OAAO,GAAGf,OAAO,GAAGA,OAAO,CAACvB,WAAW,GAAGR,OAAO;EACvD,EAAA,MAAM+C,GAAG,GAAGtJ,MAAM,EAAE;EAEpB,EAAA,IAAIiI,YAAY,IAAIA,YAAY,CAAChD,IAAI,KAAKA,IAAI,IAAIgD,YAAY,CAACjI,MAAM,KAAKsJ,GAAG,EAAE;EAC7E,IAAA;EACF,EAAA;IAGA,IAAI,CAACD,OAAO,EAAE;EAGZ,IAAA,MAAMtE,IAAU,GAAG;EACjB/E,MAAAA,MAAM,EAAEsJ,GAAG;QACX9C,EAAE;QACFvB,IAAI;QACJgD,YAAY;EACZzC,MAAAA,YAAY,EAAE,IAAI;EAClB0C,MAAAA,WAAW,EAAEI,OAAO;EACpBvB,MAAAA,WAAW,EAAE;OACd;EAED,IAAA,IAAIkB,YAAY,EAAE;QAChBA,YAAY,CAACzC,YAAY,GAAGT,IAAI;EAClC,IAAA,CAAC,MAAM;QACLyB,EAAE,CAACxB,QAAQ,GAAGD,IAAI;EACpB,IAAA;MACAyB,EAAE,CAAC6B,QAAQ,GAAGtD,IAAI;EAGlB,IAAA,IAAIuD,OAAO,EAAE;QACXA,OAAO,CAACvB,WAAW,GAAGhC,IAAI;EAC5B,IAAA,CAAC,MAAM;QACLE,IAAI,CAACsB,OAAO,GAAGxB,IAAI;EACrB,IAAA;MACAE,IAAI,CAACqD,OAAO,GAAGvD,IAAI;EACnB,IAAA;EACF,EAAA;EAGA,EAAA,IAAIsE,OAAO,CAAC7C,EAAE,KAAKA,EAAE,EAAE;MACrB6C,OAAO,CAACrJ,MAAM,GAAGsJ,GAAG;MACpBrE,IAAI,CAACqD,OAAO,GAAGe,OAAO;EACtB,IAAA;EACF,EAAA;EAGA,EAAA,MAAMtE,IAAU,GAAG;EACjB/E,IAAAA,MAAM,EAAEsJ,GAAG;MACX9C,EAAE;MACFvB,IAAI;MACJgD,YAAY;EACZzC,IAAAA,YAAY,EAAE,IAAI;EAClB0C,IAAAA,WAAW,EAAEI,OAAO;EACpBvB,IAAAA,WAAW,EAAEsC;KACd;EAED,EAAA,IAAIpB,YAAY,EAAE;MAChBA,YAAY,CAACzC,YAAY,GAAGT,IAAI;EAClC,EAAA,CAAC,MAAM;MACLyB,EAAE,CAACxB,QAAQ,GAAGD,IAAI;EACpB,EAAA;IACAyB,EAAE,CAAC6B,QAAQ,GAAGtD,IAAI;EAGlB,EAAA,IAAIwB,OAAO,EAAE;EACX,IAAA,IAAI+B,OAAO,EAAE;QACXA,OAAO,CAACvB,WAAW,GAAGhC,IAAI;EAC5B,IAAA,CAAC,MAAM;QAELE,IAAI,CAACsB,OAAO,GAAGxB,IAAI;EACrB,IAAA;EACF,EAAA,CAAC,MAAM;MACLE,IAAI,CAACsB,OAAO,GAAGxB,IAAI;EACrB,EAAA;IAEAE,IAAI,CAACqD,OAAO,GAAGvD,IAAI;EAEnB,EAAA,IAAIuD,OAAO,EAAEA,OAAO,CAACvB,WAAW,GAAGhC,IAAI;IACvCsE,OAAO,CAACnB,WAAW,GAAGnD,IAAI;EAC5B;EAEO,SAASwD,OAAOA,CAErB/B,EAAc,GAAG,IAAI,EAErBvB,IAAgB,GAAG,IAAI,EACvB;EACA,EAAA,MAAkBgD,YAAY,GAAKzB,EAAE,CAA7B6B,QAAQ;EAChB,EAAA,IAAM9B,OAAO,GAAgCtB,IAAI,CAA3CsB,OAAO;MAAE+B,OAAO,GAAuBrD,IAAI,CAAlCqD,OAAO;MAASc,SAAS,GAAKnE,IAAI,CAAzBzE,KAAK;IAC7B,MAAM6I,OAAO,GAAGf,OAAO,GAAGA,OAAO,CAACvB,WAAW,GAAGR,OAAO;IAEvD,IAAI,CAAC8C,OAAO,EAAE;EAEZ,IAAA,MAAMtE,IAAa,GAAG;QACpB/E,MAAM,EAAEA,MAAM,EAAE;QAChBwG,EAAE;QACFvB,IAAI;QACJgD,YAAY;EACZzC,MAAAA,YAAY,EAAE,IAAI;EAClB0C,MAAAA,WAAW,EAAEI,OAAO;EACpBvB,MAAAA,WAAW,EAAE,IAAI;EACjBqB,MAAAA,WAAW,EAAE,IAAI;EACjBD,MAAAA,WAAW,EAAE;OACd;EAGD,IAAA,IAAIF,YAAY,EAAE;QAChBA,YAAY,CAACzC,YAAY,GAAGT,IAAI;EAClC,IAAA,CAAC,MAAM;QACLyB,EAAE,CAACxB,QAAQ,GAAGD,IAAI;EACpB,IAAA;MACAyB,EAAE,CAAC6B,QAAQ,GAAGtD,IAAI;EAGlB,IAAA,IAAIuD,OAAO,EAAE;QACXA,OAAO,CAACvB,WAAW,GAAGhC,IAAI;EAC5B,IAAA,CAAC,MAAM;QACLE,IAAI,CAACsB,OAAO,GAAGxB,IAAI;EACrB,IAAA;MACAE,IAAI,CAACqD,OAAO,GAAGvD,IAAI;EAEnBwE,IAAAA,WAAW,CAACH,SAAS,EAAErE,IAAI,CAAC;EAC5B,IAAA;EACF,EAAA;EAGA,EAAA,IAAIsE,OAAO,CAAC7C,EAAE,KAAKA,EAAE,EAAE;MACrBvB,IAAI,CAACqD,OAAO,GAAGe,OAAO;EACtB,IAAA;EACF,EAAA;EAEA,EAAA,MAAMtE,IAAa,GAAG;MACpB/E,MAAM,EAAEA,MAAM,EAAE;MAChBwG,EAAE;MACFvB,IAAI;MACJgD,YAAY;EACZzC,IAAAA,YAAY,EAAE,IAAI;EAClB0C,IAAAA,WAAW,EAAEI,OAAO;EACpBvB,IAAAA,WAAW,EAAEsC,OAAO;EACpBjB,IAAAA,WAAW,EAAE,IAAI;EACjBD,IAAAA,WAAW,EAAE;KACd;EAED,EAAA,IAAIF,YAAY,EAAE;MAChBA,YAAY,CAACzC,YAAY,GAAGT,IAAI;EAClC,EAAA,CAAC,MAAM;MACLyB,EAAE,CAACxB,QAAQ,GAAGD,IAAI;EACpB,EAAA;IACAyB,EAAE,CAAC6B,QAAQ,GAAGtD,IAAI;EAGlB,EAAA,IAAIwB,OAAO,EAAE;EACX,IAAA,IAAI+B,OAAO,EAAE;QACXA,OAAO,CAACvB,WAAW,GAAGhC,IAAI;EAC5B,IAAA,CAAC,MAAM;QACLE,IAAI,CAACsB,OAAO,GAAGxB,IAAI;EACrB,IAAA;EACF,EAAA,CAAC,MAAM;MACLE,IAAI,CAACsB,OAAO,GAAGxB,IAAI;EACrB,EAAA;IAEAE,IAAI,CAACqD,OAAO,GAAGvD,IAAI;EAEnB,EAAA,IAAIuD,OAAO,EAAEA,OAAO,CAACvB,WAAW,GAAGhC,IAAI;IACvCsE,OAAO,CAACnB,WAAW,GAAGnD,IAAI;EAE1BwE,EAAAA,WAAW,CAACH,SAAS,EAAErE,IAAI,CAAC;EAC9B;EAEA,SAASwE,WAAWA,CAACH,SAAuB,EAAErE,IAAa,EAAE;EAC3D,EAAA,MAAMyE,KAAK,GAAGJ,SAAS,CAACb,OAAO;EAC/B,EAAA,IAAIiB,KAAK,EAAE;MACTA,KAAK,CAACrB,WAAW,GAAGpD,IAAI;MACxBA,IAAI,CAACqD,WAAW,GAAGoB,KAAK;EAC1B,EAAA;IACAJ,SAAS,CAACb,OAAO,GAAGxD,IAAI;EAC1B;;EC1LO,MAAM0E,QAAQ,CAAU;EAC7BzE,EAAAA,QAAQ,GAAS,IAAI;EACrBqD,EAAAA,QAAQ,GAAS,IAAI;EACrB9B,EAAAA,OAAO,GAAS,IAAI;EACpB+B,EAAAA,OAAO,GAAS,IAAI;IACpBpD,KAAK,GAAGC,CAAW;IACnB3E,KAAK,GAAmBH,UAAU,EAAE;EACpC8B,EAAAA,KAAK,GAAM,IAAI;IACfV,WAAWA,CAAQiI,QAAmC,EAAE;MAAA,IAAA,CAArCA,QAAmC,GAAnCA,QAAmC;EAAG,EAAA;IACzDlH,GAAGA,CAACmH,UAAU,GAAG,IAAI,EAAEC,cAAc,GAAG,IAAI,EAAE;EAC5C,IAAA,MAAQpJ,KAAK,GAAK,IAAI,CAAdA,KAAK;EACb,IAAA,IAAIA,KAAK,IAAIA,KAAK,CAAC0E,KAAK,GAAGC,GAAgB,EAAE,OAAO,IAAI,CAAChD,KAAK;EAC9D,IAAA,MAAM8C,IAAI,GAAG5E,UAAU,EAAE;EACzB,IAAA,IAAI,IAAI,CAACkG,OAAO,IAAIqD,cAAc,EAAE;EAClC,MAAA,IAAI,IAAI,CAAC1E,KAAK,GAAGW,CAAU,EAAE;EAC3B,QAAA,IAAI,CAAC1D,KAAK,GAAG2D,QAAQ,CAAC,IAAI,CAAC;EAC7B,MAAA;EACF,IAAA,CAAC,MAAM;EACL,MAAA,IAAI,CAACZ,KAAK,IAAIC,CAAc;EAE5B,MAAA,MAAM0E,MAAM,GAAG9J,SAAS,EAAE;EAC1B,MAAA,MAAM+J,MAAM,GAAG9J,MAAM,EAAE;QACvBC,SAAS,CAAC4J,MAAM,CAAC;QAEjBzJ,UAAU,CAAC,IAAI,CAAC;QAChB,IAAI,CAACkI,OAAO,GAAG,IAAI;QACnB,IAAI,CAACnG,KAAK,GAAG,IAAI,CAACuH,QAAQ,CAAC,IAAI,CAAC;EAChC,MAAA,IAAI,CAACxE,KAAK,IAAI,EAAe;QAC7B9E,UAAU,CAAC6E,IAAI,CAAC;QAEhBhF,SAAS,CAAC6J,MAAM,CAAC;EAEjBhD,MAAAA,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC5B,KAAK,CAAC;EACpC,MAAA,IAAIH,IAAI,GAAG,IAAI,CAACuD,OAAO,EAAEvB,WAAW;EACpC,MAAA,OAAOhC,IAAI,EAAE;EACX,QAAA,MAAMgF,QAAQ,GAAGhF,IAAI,CAACgC,WAAW;EACjCgB,QAAAA,MAAM,CAAChD,IAAI,EAAa,IAAI,CAAC;EAC7BA,QAAAA,IAAI,GAAGgF,QAAQ;EACjB,MAAA;EACF,IAAA;EAGA,IAAA,IAAIJ,UAAU,IAAI1E,IAAI,IAAI,CAACA,IAAI,CAACC,KAAK,GAAGC,GAAmB,MAAM,CAAC,EAAE;EAClE+D,MAAAA,IAAI,CAAC,IAAI,EAAEjE,IAAI,CAAC;EAClB,IAAA;MACA,OAAO,IAAI,CAAC9C,KAAK;EACnB,EAAA;EACF;;EC/CO,MAAM6H,MAAM,CAAU;IAC3BxJ,KAAK,GAAmBH,UAAU,EAAE;EACpC2E,EAAAA,QAAQ,GAAS,IAAI;EACrBqD,EAAAA,QAAQ,GAAS,IAAI;IACrBnD,KAAK,GAAGC,CAAW;IAEnB1D,WAAWA,CAAQU,KAAQ,EAAE;MAAA,IAAA,CAAVA,KAAQ,GAARA,KAAQ;EAAG,EAAA;EAE9BK,EAAAA,GAAGA,CAACmH,UAAU,GAAG,IAAI,EAAE;EACrB,IAAA,IAAIA,UAAU,EAAE;EACd,MAAA,MAAM1E,IAAI,GAAG5E,UAAU,EAAE;EAEzB,MAAA,IAAI4E,IAAI,IAAI,CAACA,IAAI,CAACC,KAAK,GAAGC,GAAmB,MAAM,CAAC,EAAE;EACpD+D,QAAAA,IAAI,CAAC,IAAI,EAAEjE,IAAI,CAAC;EAClB,MAAA;EACF,IAAA;MACA,OAAO,IAAI,CAAC9C,KAAK;EACnB,EAAA;IACA8H,GAAGA,CAAC/J,CAAI,EAAE;EACR,IAAA,IAAI,IAAI,CAACiC,KAAK,KAAKjC,CAAC,EAAE;MACtB,IAAI,CAACiC,KAAK,GAAGjC,CAAC;MACd,IAAI,IAAI,CAAC8E,QAAQ,EAAE;QACjBH,IAAI,CAAC,IAAI,CAAC;EACV,MAAA,IAAIiD,SAAS,EAAE,KAAK,CAAC,EAAE;EACrBV,QAAAA,eAAe,EAAE;EACjBG,QAAAA,gBAAgB,EAAE;EACpB,MAAA;EACF,IAAA;EACF,EAAA;EACF;;EC9BA,MAAM2C,WAAW,GAAG/E,GAAc,GAAGA,EAAa;EAC3C,MAAMgF,MAAM,CAAC;EAClBnF,EAAAA,QAAQ,GAAS,IAAI;EACrBqD,EAAAA,QAAQ,GAAS,IAAI;EACrB9B,EAAAA,OAAO,GAAS,IAAI;EACpB+B,EAAAA,OAAO,GAAS,IAAI;EAEpBpD,EAAAA,KAAK,GAAGgF,WAAW;IACnB1J,KAAK,GAAmBH,UAAU,EAAE;EACpCkI,EAAAA,OAAO,GAAY,IAAI;EACvBQ,EAAAA,KAAK,GAAY,IAAI;IACrBtH,WAAWA,CAAQiI,QAA6C,EAASrE,IAAkB,GAAG1E,YAAY,CAACG,IAAI,EAAE;MAAA,IAAA,CAA9F4I,QAA6C,GAA7CA,QAA6C;MAAA,IAAA,CAASrE,IAAkB,GAAlBA,IAAkB;MACzF,IAAI,CAAC7C,GAAG,EAAE;EACZ,EAAA;IACAA,GAAGA,CAACmH,UAAU,GAAG,IAAI,EAAEC,cAAc,GAAG,IAAI,EAAE;EAC5C,IAAA,IAAI,IAAI,CAAC1E,KAAK,GAAGC,GAAgB,EAAE;EACnC,IAAA,MAAMF,IAAI,GAAG5E,UAAU,EAAE;EACzB,IAAA,IAAI,IAAI,CAACkG,OAAO,IAAIqD,cAAc,EAAE;QAClC9D,QAAQ,CAAC,IAAI,CAAC;EAChB,IAAA,CAAC,MAAM;EACL,MAAA,IAAI,CAACZ,KAAK,IAAIC,CAAc;QAE5B/E,UAAU,CAAC,IAAI,CAAC;EAChB,MAAA,IAAI,CAAC2I,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAACA,KAAK,GAAG,IAAI;EAEjB,MAAA,MAAMc,MAAM,GAAG9J,SAAS,EAAE;EAC1B,MAAA,MAAM+J,MAAM,GAAG9J,MAAM,EAAE;QACvBC,SAAS,CAAC4J,MAAM,CAAC;QAEjBzJ,UAAU,CAAC,IAAI,CAAC;QAChB,IAAI,CAACkI,OAAO,GAAG,IAAI;EACnB,MAAA,MAAM8B,GAAG,GAAG,IAAI,CAACV,QAAQ,CAAC,IAAI,CAAC;QAC/B,OAAOU,GAAG,KAAK,UAAU,KAAK,IAAI,CAACrB,KAAK,GAAGqB,GAAG,CAAC;EAC/C,MAAA,IAAI,CAAClF,KAAK,IAAI,EAAe;QAC7B9E,UAAU,CAAC6E,IAAI,CAAC;QAEhBhF,SAAS,CAAC6J,MAAM,CAAC;EAEjBhD,MAAAA,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC5B,KAAK,CAAC;EACpC,MAAA,IAAIH,IAAI,GAAG,IAAI,CAACuD,OAAO,EAAEvB,WAAW;EACpC,MAAA,OAAOhC,IAAI,EAAE;EACX,QAAA,MAAMgF,QAAQ,GAAGhF,IAAI,CAACgC,WAAW;EACjCgB,QAAAA,MAAM,CAAChD,IAAI,EAAa,IAAI,CAAC;EAC7BA,QAAAA,IAAI,GAAGgF,QAAQ;EACjB,MAAA;EACF,IAAA;MAEA,IAAI,CAAC,IAAI,CAAC/E,QAAQ,IAAI2E,UAAU,IAAI1E,IAAI,EAAE;EACxCiE,MAAAA,IAAI,CAAC,IAAI,EAAEjE,IAAI,CAAC;EAClB,IAAA;EACF,EAAA;EACF;EAMAkF,MAAM,CAACE,SAAS,CAAC7B,OAAO,GAAGA,OAAO;;EC3DlC,MAAM8B,qBAAqB,GAAGnF,EAAa,GAAGA,GAAmB;EAC1D,MAAMoF,KAAK,CAAC;EACjBvF,EAAAA,QAAQ,GAAS,IAAI;EACrBqD,EAAAA,QAAQ,GAAS,IAAI;EACrB9B,EAAAA,OAAO,GAAS,IAAI;EACpB+B,EAAAA,OAAO,GAAS,IAAI;EAEpBpD,EAAAA,KAAK,GAAGoF,qBAAqB;IAC7B9J,KAAK,GAAmBH,UAAU,EAAE;EACpCkI,EAAAA,OAAO,GAAY,IAAI;EACvBQ,EAAAA,KAAK,GAAY,IAAI;IACrBtH,WAAWA,CAAQiI,QAA6B,EAAE;MAAA,IAAA,CAA/BA,QAA6B,GAA7BA,QAA6B;EAAG,EAAA;EACnDlH,EAAAA,GAAGA,CAACmH,UAAU,GAAG,IAAI,EAAE;EACrB,IAAA,MAAQnJ,KAAK,GAAK,IAAI,CAAdA,KAAK;EACb,IAAA,IAAI,CAAC0E,KAAK,IAAIC,CAAc;MAC5B/E,UAAU,CAAC,IAAI,CAAC;MAChB,IAAI,CAACkI,OAAO,GAAG,IAAI;EACnB,IAAA,MAAM8B,GAAG,GAAG,IAAI,CAACV,QAAQ,EAAE;MAC3B,OAAOU,GAAG,KAAK,UAAU,KAAK,IAAI,CAACrB,KAAK,GAAGqB,GAAG,CAAC;EAC/C,IAAA,IAAI,CAAClF,KAAK,IAAI,EAAe;MAC7B9E,UAAU,CAACI,KAAK,CAAC;MAGjB,IAAI,CAAC,IAAI,CAACwE,QAAQ,IAAI2E,UAAU,IAAInJ,KAAK,EAAE;EACzC0I,MAAAA,IAAI,CAAC,IAAI,EAAE1I,KAAK,CAAC;EACnB,IAAA;EACF,EAAA;EACF;EAEO,MAAMgK,UAAU,CAAC;IACtB/I,WAAWA,CAAQiI,QAA6B,EAAE;MAAA,IAAA,CAA/BA,QAA6B,GAA7BA,QAA6B;EAC9C,IAAA,MAAMlJ,KAAK,GAAG,IAAI+J,KAAK,CAACb,QAAQ,CAAC;MACjClJ,KAAK,CAACgC,GAAG,EAAE;EACX,IAAA,OAAOhC,KAAK;EACd,EAAA;EACF;AAEO,QAAMiK,UAAU,GAAIf,QAA6B,IAAK;EAC3D,EAAA,MAAMlJ,KAAK,GAAG,IAAI+J,KAAK,CAACb,QAAQ,CAAC;IACjClJ,KAAK,CAACgC,GAAG,EAAE;EACX,EAAA,OAAOhC,KAAK;EACd;EAMA+J,KAAK,CAACF,SAAS,CAAC7B,OAAO,GAAGA,OAAO;;ECrD1B,MAAMkC,UAAU,GAAG,IAAIC,OAAO,EAAE;EAEvC,IAAYxF,KAAK,aAALA,KAAK,EAAA;EAALA,EAAAA,KAAK,CAALA,KAAK,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;EAALA,EAAAA,KAAK,CAALA,KAAK,CAAA,eAAA,CAAA,GAAA,GAAA,CAAA,GAAA,eAAA;EAALA,EAAAA,KAAK,CAALA,KAAK,CAAA,YAAA,CAAA,GAAA,GAAA,CAAA,GAAA,YAAA;EAALA,EAAAA,KAAK,CAALA,KAAK,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;EAALA,EAAAA,KAAK,CAALA,KAAK,CAAA,SAAA,CAAA,GAAA,EAAA,CAAA,GAAA,SAAA;EAALA,EAAAA,KAAK,CAALA,KAAK,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;EAALA,EAAAA,KAAK,CAALA,KAAK,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA;EAALA,EAAAA,KAAK,CAALA,KAAK,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;EAALA,EAAAA,KAAK,CAALA,KAAK,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;EAALA,EAAAA,KAAK,CAALA,KAAK,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;EAAA,EAAA,OAALA,KAAK;EAAA,CAAA,CAAA,EAAA,CAAA;EAsBSA,KAAK,CAACyF,OAAO,GAAGzF,KAAK,CAAC0F;EACnB1F,KAAK,CAAC2F,UAAU,GAAG3F,KAAK,CAAC0D;EAC5B1D,KAAK,CAAC0D;;ECpBzB,MAAMkC,aAAa,GAAGA,CAACC,KAAuB,EAAExK,KAAY,KAAK;IACtE,IAAIyK,IAAI,GAAGD,KAAK,CAACxI,GAAG,CAACE,IAAI,CAACwI,QAAQ,CAAC;IACnC,IAAI,CAACD,IAAI,EAAE;EACTA,IAAAA,IAAI,GAAG,IAAIjB,MAAM,CAAC,CAAC,CAAC;MACpBiB,IAAI,CAACzK,KAAK,GAAGA,KAAK;MAClBwK,KAAK,CAACf,GAAG,CAACvH,IAAI,CAACwI,QAAQ,EAAED,IAAI,CAAC;EAChC,EAAA;IACAA,IAAI,CAACzI,GAAG,EAAE;EACZ,CAAC;EAED,MAAM2I,eAAe,GAAIH,KAAuB,IAAK;IACnD,MAAMC,IAAI,GAAGD,KAAK,CAACxI,GAAG,CAACE,IAAI,CAACwI,QAAQ,CAAC;EACrC,EAAA,IAAID,IAAI,EAAE;MACRA,IAAI,CAAChB,GAAG,CAAC,CAACgB,IAAI,CAAC9I,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;EACjC,EAAA;EACF,CAAC;EAED,MAAMiJ,QAAQ,GAAGA,CAACJ,KAAuB,EAAExK,KAAY,EAAE6K,GAAQ,KAAK;EACpE,EAAA,IAAIC,IAAI,GAAGN,KAAK,CAACxI,GAAG,CAAC6I,GAAG,CAAC;IACzB,IAAI,CAACC,IAAI,EAAE;EACTA,IAAAA,IAAI,GAAG,IAAItB,MAAM,CAACuB,SAAS,CAAC;MAC5BD,IAAI,CAAC9K,KAAK,GAAGA,KAAK;EAClBwK,IAAAA,KAAK,CAACf,GAAG,CAACoB,GAAG,EAAEC,IAAI,CAAC;EACtB,EAAA;IACAA,IAAI,CAAC9I,GAAG,EAAE;EACZ,CAAC;EAED,MAAMgJ,UAAU,GAAGA,CAACR,KAAuB,EAAEK,GAAQ,KAAK;EACxD,EAAA,MAAMC,IAAI,GAAGN,KAAK,CAACxI,GAAG,CAAC6I,GAAG,CAAC;EAC3B,EAAA,IAAIC,IAAI,EAAE;EACRA,IAAAA,IAAI,CAACrB,GAAG,CAAC,CAACqB,IAAI,CAACnJ,KAAK,KAAKoJ,SAAS,GAAG,CAAC,GAAGD,IAAI,CAACnJ,KAAK,IAAI,CAAC,CAAC;EAC3D,EAAA;EACF,CAAC;EAMM,MAAMsJ,mBAAmB,GAAGA,CAACT,KAAuB,EAAExK,KAAY,EAAEwH,IAAa,EAAE0D,WAAoB,KAAK;EACjH,EAAA,MAAMC,OAAO,GAAGA,CAACC,SAAmC,EAAEC,UAAkB,KAAK;EAC3Ed,IAAAA,aAAa,CAACC,KAAK,EAAExK,KAAK,CAAC;EAC3B,IAAA,MAAMsL,OAAO,GAAIF,SAAS,CAASC,UAAU,CAAC,EAAE;EAChD,IAAA,IAAI,CAAC7D,IAAI,EAAE,OAAO8D,OAAO;MAEzB,MAAMC,OAAO,GAAGD,OAAO,CAAC1J,IAAI,CAAC4J,IAAI,CAACF,OAAO,CAAC;MAC1CA,OAAO,CAAC1J,IAAI,GAAG,MAAM;EACnB,MAAA,MAAM6J,MAAM,GAAGF,OAAO,EAAE;EACxB,MAAA,IAAI,CAACE,MAAM,CAACC,IAAI,EAAE;UAEhB,IAAIL,UAAU,KAAK,SAAS,EAAE;EAC5BI,UAAAA,MAAM,CAAC9J,KAAK,CAAC,CAAC,CAAC,GAAGgK,UAAU,CAACF,MAAM,CAAC9J,KAAK,CAAC,CAAC,CAAC,EAAE3B,KAAK,CAAC;EACpDyL,UAAAA,MAAM,CAAC9J,KAAK,CAAC,CAAC,CAAC,GAAGgK,UAAU,CAACF,MAAM,CAAC9J,KAAK,CAAC,CAAC,CAAC,EAAE3B,KAAK,CAAC;EACtD,QAAA,CAAC,MAAM;YACLyL,MAAM,CAAC9J,KAAK,GAAGgK,UAAU,CAACF,MAAM,CAAC9J,KAAK,EAAE3B,KAAK,CAAC;EAChD,QAAA;EACF,MAAA;EACA,MAAA,OAAOyL,MAAM;MACf,CAAC;EACD,IAAA,OAAOH,OAAO;IAChB,CAAC;IAED,OAAO;MACLM,GAAGA,CAACf,GAAQ,EAAE;EACZ,MAAA,MAAMgB,MAAM,GAAG,IAAI,CAAC3J,IAAI,CAACkC,GAAG,CAAC;EAC7BwG,MAAAA,QAAQ,CAACJ,KAAK,EAAExK,KAAK,EAAE6K,GAAG,CAAC;EAC3B,MAAA,OAAOgB,MAAM,CAACD,GAAG,CAACf,GAAG,CAAC;MACxB,CAAC;MAEDiB,MAAMA,CAACjB,GAAQ,EAAE;EACf,MAAA,MAAMgB,MAAM,GAAG,IAAI,CAAC3J,IAAI,CAACkC,GAAG,CAAC;EAC7BgD,MAAAA,UAAU,EAAE;EACZ,MAAA,MAAM2E,GAAG,GAAGF,MAAM,CAACD,GAAG,CAACf,GAAG,CAAC;EAC3B,MAAA,MAAMY,MAAM,GAAGI,MAAM,CAACC,MAAM,CAACjB,GAAG,CAAC;EACjC,MAAA,IAAIkB,GAAG,EAAE;EACPf,QAAAA,UAAU,CAACR,KAAK,EAAEK,GAAG,CAAC;EACtBL,QAAAA,KAAK,CAACsB,MAAM,CAACjB,GAAG,CAAC;UACjBF,eAAe,CAACH,KAAK,CAAC;EACxB,MAAA;EACAnD,MAAAA,QAAQ,EAAE;EACV,MAAA,OAAOoE,MAAM;MACf,CAAC;EAEDO,IAAAA,KAAKA,GAAG;EACN,MAAA,MAAMH,MAAM,GAAG,IAAI,CAAC3J,IAAI,CAACkC,GAAG,CAAC;EAC7BgD,MAAAA,UAAU,EAAE;EACZ,MAAA,MAAM6E,QAAQ,GAAGJ,MAAM,CAACK,IAAI,GAAG,CAAC;QAChCL,MAAM,CAACG,KAAK,EAAE;QAEd,MAAMG,QAAQ,GAAG3B,KAAK,CAACxI,GAAG,CAACE,IAAI,CAACwI,QAAQ,CAAC;QACzCF,KAAK,CAACwB,KAAK,EAAE;QACb,IAAIG,QAAQ,EAAE3B,KAAK,CAACf,GAAG,CAACvH,IAAI,CAACwI,QAAQ,EAAEyB,QAAQ,CAAC;EAChD,MAAA,IAAIF,QAAQ,EAAE;UACZtB,eAAe,CAACH,KAAK,CAAC;EACxB,MAAA;EACAnD,MAAAA,QAAQ,EAAE;MACZ,CAAC;EAED+E,IAAAA,OAAOA,CAAClD,QAAkB,EAAEmD,OAAa,EAAE;EACzC,MAAA,MAAMR,MAAM,GAAG,IAAI,CAAC3J,IAAI,CAACkC,GAAG,CAAC;EAC7BmG,MAAAA,aAAa,CAACC,KAAK,EAAExK,KAAK,CAAC;EAC3B,MAAA,MAAMsM,IAAI,GAAIC,GAAQ,IAAM/E,IAAI,GAAGmE,UAAU,CAACY,GAAG,EAAEvM,KAAK,CAAC,GAAGuM,GAAI;EAGhEV,MAAAA,MAAM,CAACO,OAAO,CAAC,CAAC1M,CAAM,EAAE8M,CAAM,KAAK;EACjCtD,QAAAA,QAAQ,CAACuD,IAAI,CAACJ,OAAO,EAAEC,IAAI,CAAC5M,CAAC,CAAC,EAAE4M,IAAI,CAACE,CAAC,CAAC,EAAE,IAAI,CAAC;EAChD,MAAA,CAAC,CAAC;MACJ,CAAC;EAEDE,IAAAA,IAAIA,GAAG;QACL,OAAOvB,OAAO,CAAC,IAAI,CAACjJ,IAAI,CAACkC,GAAG,CAAC,EAAE,MAAM,CAAC;MACxC,CAAC;EAEDuI,IAAAA,MAAMA,GAAG;QACP,OAAOxB,OAAO,CAAC,IAAI,CAACjJ,IAAI,CAACkC,GAAG,CAAC,EAAE,QAAQ,CAAC;MAC1C,CAAC;EAEDwI,IAAAA,OAAOA,GAAG;QACR,OAAOzB,OAAO,CAAC,IAAI,CAACjJ,IAAI,CAACkC,GAAG,CAAC,EAAE,SAAS,CAAC;MAC3C,CAAC;MAED,CAAChC,MAAM,CAACyK,QAAQ,CAAA,GAAI;EAElB,MAAA,OAAO1B,OAAO,CAAC,IAAI,CAACjJ,IAAI,CAACkC,GAAG,CAAC,EAAE8G,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;EACpE,IAAA;KACD;EACH,CAAC;EAMM,MAAM4B,gBAAgB,GAAGA,CAACtC,KAAuB,EAAExK,KAAY,EAAEwH,IAAa,MAAM;IACzFxF,GAAGA,CAAC6I,GAAQ,EAAE;EACZ,IAAA,MAAMgB,MAAM,GAAG,IAAI,CAAC3J,IAAI,CAACkC,GAAG,CAAC;EAC7BwG,IAAAA,QAAQ,CAACJ,KAAK,EAAExK,KAAK,EAAE6K,GAAG,CAAC;EAC3B,IAAA,MAAMlJ,KAAK,GAAGkK,MAAM,CAAC7J,GAAG,CAAC6I,GAAG,CAAC;MAC7B,OAAOrD,IAAI,GAAGmE,UAAU,CAAChK,KAAK,EAAE3B,KAAK,CAAC,GAAG2B,KAAK;IAChD,CAAC;EAED8H,EAAAA,GAAGA,CAACoB,GAAQ,EAAElJ,KAAU,EAAE;EACxB,IAAA,MAAMkK,MAAM,GAAG,IAAI,CAAC3J,IAAI,CAACkC,GAAG,CAAC;EAC7BgD,IAAAA,UAAU,EAAE;EACZyE,IAAAA,MAAM,CAACpC,GAAG,CAACoB,GAAG,EAAElJ,KAAK,CAAC;EAEtB,IAAA,IAAImJ,IAAI,GAAGN,KAAK,CAACxI,GAAG,CAAC6I,GAAG,CAAC;MACzB,IAAI,CAACC,IAAI,EAAE;EACTA,MAAAA,IAAI,GAAG,IAAItB,MAAM,CAAC7H,KAAK,CAAC;QACxBmJ,IAAI,CAAC9K,KAAK,GAAGA,KAAK;EAClBwK,MAAAA,KAAK,CAACf,GAAG,CAACoB,GAAG,EAAEC,IAAI,CAAC;EACtB,IAAA,CAAC,MAAM;EACLA,MAAAA,IAAI,CAACrB,GAAG,CAAC9H,KAAK,CAAC;EACjB,IAAA;MAEAgJ,eAAe,CAACH,KAAK,CAAC;EACtBnD,IAAAA,QAAQ,EAAE;EACV,IAAA,OAAO,IAAI;EACb,EAAA;EACF,CAAC,CAAC;EAMK,MAAM0F,gBAAgB,GAAGA,CAACvC,KAAuB,EAAExK,KAAY,EAAEgN,KAAc,MAAM;IAC1FC,GAAGA,CAACtL,KAAU,EAAE;EACd,IAAA,MAAMkK,MAAM,GAAG,IAAI,CAAC3J,IAAI,CAACkC,GAAG,CAAC;EAC7BgD,IAAAA,UAAU,EAAE;EACZ,IAAA,MAAM2E,GAAG,GAAGF,MAAM,CAACD,GAAG,CAACjK,KAAK,CAAC;EAC7BkK,IAAAA,MAAM,CAACoB,GAAG,CAACtL,KAAK,CAAC;EAEjB,IAAA,IAAImJ,IAAI,GAAGN,KAAK,CAACxI,GAAG,CAACL,KAAK,CAAC;MAC3B,IAAI,CAACmJ,IAAI,EAAE;EACTA,MAAAA,IAAI,GAAG,IAAItB,MAAM,CAAC7H,KAAK,CAAC;QACxBmJ,IAAI,CAAC9K,KAAK,GAAGA,KAAK;EAClBwK,MAAAA,KAAK,CAACf,GAAG,CAAC9H,KAAK,EAAEmJ,IAAI,CAAC;EACxB,IAAA,CAAC,MAAM;EACLA,MAAAA,IAAI,CAACrB,GAAG,CAAC9H,KAAK,CAAC;EACjB,IAAA;MACA,IAAI,CAACoK,GAAG,EAAE;QACRpB,eAAe,CAACH,KAAK,CAAC;EACxB,IAAA;EACAnD,IAAAA,QAAQ,EAAE;EACV,IAAA,OAAO,IAAI;EACb,EAAA;EACF,CAAC,CAAC;EAIK,MAAM6F,aAAa,GAAGA,CAAC,GAAGC,QAAwC,KACvEC,MAAM,CAACC,MAAM,CAAC,EAAE,EAAE,GAAGF,QAAQ,CAAC;;ACtLzB,QAAMxB,UAAU,GAAGA,CAAIE,MAAS,EAAE7L,KAAY,EAAEwH,IAAI,GAAG,IAAI,KAAK;IACrE,MAAM8F,KAAK,GAAG,OAAOzB,MAAM,KAAK,QAAQ,IAAIA,MAAM,KAAK,IAAI;EAI3D,EAAA,IAAI,CAACyB,KAAK,IAAIzB,MAAM,CAAC3J,IAAI,CAACkC,GAAG,CAAC,IAAIyH,MAAM,CAAC3J,IAAI,CAACqL,eAAe,CAAC,EAAE,OAAO1B,MAAM;EAE7E,EAAA,MAAMjI,CAAC,GAAGsG,UAAU,CAAClI,GAAG,CAAC6J,MAAM,CAAC;IAChC,IAAIjI,CAAC,EAAE,OAAOA,CAAC;EAEf,EAAA,MAAMsH,WAAW,GAAGW,MAAM,YAAY2B,GAAG;EACzC,EAAA,MAAMC,WAAW,GAAG5B,MAAM,YAAY6B,GAAG;IAGzC,IAAIxC,WAAW,IAAIuC,WAAW,EAAE;EAC9B,IAAA,MAAMjD,KAAK,GAAG,IAAIgD,GAAG,EAAe;EACpC,IAAA,MAAMG,IAAI,GAAG;QAAEnG,IAAI;QAAExH,KAAK;EAAEwK,MAAAA;OAAO;MACnC,MAAMoD,MAAM,GAAG3C,mBAAmB,CAACT,KAAK,EAAExK,KAAK,EAAEwH,IAAI,EAAE0D,WAAW,CAAC;MACnE,MAAM2C,QAAQ,GAAG3C,WAAW,GACxB4B,gBAAgB,CAACtC,KAAK,EAAExK,KAAK,EAAEwH,IAAI,CAAC,GACpCuF,gBAAgB,CAACvC,KAAK,EAAExK,KAAW,CAAC;EACxC,IAAA,MAAM8N,gBAAgB,GAAGZ,aAAa,CAACU,MAAM,EAAEC,QAAQ,CAAC;EAExD,IAAA,MAAME,KAAK,GAAG,IAAIC,KAAK,CAACnC,MAAM,EAAE;EAC9B7J,MAAAA,GAAGA,CAACiM,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAE;EACxB,QAAA,IAAID,IAAI,KAAKhM,IAAI,CAACkC,GAAG,EAAE,OAAOyH,MAAM;EACpC,QAAA,IAAIqC,IAAI,KAAKhM,IAAI,CAACkM,IAAI,EAAE,OAAOT,IAAI;UACnC,IAAIO,IAAI,KAAK9L,MAAM,CAACiM,WAAW,EAAE,OAAOnD,WAAW,GAAG,KAAK,GAAG,KAAK;UAGnE,IAAIgD,IAAI,KAAK,MAAM,EAAE;EACnB3D,UAAAA,aAAa,CAACC,KAAK,EAAExK,KAAK,CAAC;YAC3B,OAAOsO,OAAO,CAACtM,GAAG,CAAC6J,MAAM,EAAE,MAAM,EAAEA,MAAM,CAAC;EAC5C,QAAA;UAGA,IAAIqC,IAAI,IAAIJ,gBAAgB,EAAE;EAC5B,UAAA,MAAM/N,EAAE,GAAG+N,gBAAgB,CAACI,IAAI,CAAC;EACjC,UAAA,OAAO,OAAOnO,EAAE,KAAK,UAAU,GAAGA,EAAE,CAACyL,IAAI,CAAC2C,QAAQ,CAAC,GAAGpO,EAAE;EAC1D,QAAA;UAGA,MAAM4B,KAAK,GAAG2M,OAAO,CAACtM,GAAG,CAAC6J,MAAM,EAAEqC,IAAI,EAAEC,QAAQ,CAAC;EACjD,QAAA,IAAI,OAAOxM,KAAK,KAAK,UAAU,EAAE,OAAOA,KAAK;UAC7C,OAAO6F,IAAI,GAAGmE,UAAU,CAAChK,KAAK,EAAE3B,KAAK,CAAC,GAAG2B,KAAK;EAChD,MAAA;EACF,KAAC,CAAC;EAEFuI,IAAAA,UAAU,CAACT,GAAG,CAACoC,MAAM,EAAEkC,KAAK,CAAC;EAC7B,IAAA,OAAOA,KAAK;EACd,EAAA;EAGA,EAAA,MAAMvD,KAAK,GAAG,IAAIgD,GAAG,EAAe;EACpC,EAAA,MAAMe,aAAa,GAAGC,KAAK,CAACC,OAAO,CAAC5C,MAAM,CAAC;IAC3C,MAAM6C,aAAa,GAAGC,OAAO,CAAC9C,MAAM,CAAC5K,WAAW,GAAGkB,OAAO,CAAC,CAAC;EAC5D,EAAA,MAAMwL,IAAI,GAAG;MACXnG,IAAI;MACJxH,KAAK;EACLwK,IAAAA;KACD;EACD,EAAA,MAAMuD,KAAK,GAAG,IAAIC,KAAK,CAACnC,MAAM,EAAE;EAC9B7J,IAAAA,GAAGA,CAAC4M,GAAG,EAAEV,IAAI,EAAEC,QAAQ,EAAE;EACvB,MAAA,QAAQD,IAAI;UACV,KAAKhM,IAAI,CAACkC,GAAG;EACX,UAAA,OAAOyH,MAAM;UACf,KAAK3J,IAAI,CAACkM,IAAI;EACZ,UAAA,OAAOT,IAAI;EAGf;EAEA,MAAA,IAAIO,IAAI,KAAK9L,MAAM,CAACyM,WAAW,EAAE,OAAOP,OAAO,CAACtM,GAAG,CAAC4M,GAAG,EAAEV,IAAI,EAAEC,QAAQ,CAAC;EAExE,MAAA,IAAIO,aAAa,IAAII,WAAW,CAACF,GAAG,CAAC3N,WAAW,CAACoB,eAAe,CAAC,EAAE6L,IAAI,CAAC,EAAE;UACxE,OAAOI,OAAO,CAACtM,GAAG,CAAC4M,GAAG,EAAEV,IAAI,EAAEC,QAAQ,CAAC;EACzC,MAAA;QAEA,MAAMY,IAAI,GAAGT,OAAO,CAACU,wBAAwB,CAACJ,GAAG,EAAEV,IAAI,CAAC;QAExD,MAAMe,QAAQ,GAAGF,IAAI,IAAI,OAAOA,IAAI,CAAC/M,GAAG,KAAK,UAAU;EAEvD,MAAA,IAAIiN,QAAQ,EAAE;UACZ,OAAOC,sBAAsB,CAACN,GAAG,EAAEV,IAAI,EAAEC,QAAQ,EAAE3D,KAAK,EAASxK,KAAK,CAAC;EACzE,MAAA;QAGA,MAAM2B,KAAK,GAAG2M,OAAO,CAACtM,GAAG,CAAC4M,GAAG,EAAEV,IAAI,EAAEC,QAAQ,CAAC;EAE9C,MAAA,MAAMgB,SAAS,GAAG,OAAOxN,KAAK,KAAK,UAAU;EAC7C,MAAA,IAAIwN,SAAS,EAAE;EACb,QAAA,IAAIZ,aAAa,EAAE;EACjB,UAAA,OAAOa,mBAAmB,CAAClB,IAAI,CAAC,IAAIvM,KAAK;EAC3C,QAAA,CAAC,MAAM;EACL,UAAA,IAAI,CAACyL,MAAM,CAACvD,SAAS,CAACwF,cAAc,CAAC5C,IAAI,CAACmC,GAAG,EAAEV,IAAI,CAAC,EAAE;EACpD,YAAA,OAAOvM,KAAK;EACd,UAAA;EACA,UAAA,IAAI2N,CAAC,GAAG9E,KAAK,CAACxI,GAAG,CAACkM,IAAI,CAAC;EACvB,UAAA,IAAIoB,CAAC,EAAE;EACL,YAAA,OAAOA,CAAC,CAACtN,GAAG,EAAE;EAChB,UAAA;EACAsN,UAAAA,CAAC,GAAG,IAAI9F,MAAM,CAAC7H,KAAK,CAAC;YACrB2N,CAAC,CAACtP,KAAK,GAAGA,KAAK;EACfwK,UAAAA,KAAK,CAACf,GAAG,CAACyE,IAAI,EAAEoB,CAAC,CAAC;EAClB,UAAA,OAAOA,CAAC,CAACtN,GAAG,EAAE;EAChB,QAAA;EACF,MAAA;EAGA,MAAA,IAAIsN,CAAS,GAAG9E,KAAK,CAACxI,GAAG,CAACkM,IAAI,CAAC;EAC/B,MAAA,IAAIoB,CAAC,EAAE;EACL,QAAA,OAAOA,CAAC,CAACtN,GAAG,EAAE;EAChB,MAAA;QAEA,MAAMuN,YAAY,GAAG/H,IAAI,GAAGmE,UAAU,CAAChK,KAAK,EAAE3B,KAAK,CAAC,GAAG2B,KAAK;EAC5D2N,MAAAA,CAAC,GAAG,IAAI9F,MAAM,CAAC+F,YAAY,CAAC;QAC5BD,CAAC,CAACtP,KAAK,GAAGA,KAAK;EACfwK,MAAAA,KAAK,CAACf,GAAG,CAACyE,IAAI,EAAEoB,CAAC,CAAC;EAClB,MAAA,OAAOA,CAAC,CAACtN,GAAG,EAAE;MAChB,CAAC;MAEDyH,GAAGA,CAACmF,GAAG,EAAEV,IAAI,EAAEvM,KAAK,EAAEwM,QAAQ,EAAE;EAC9B,MAAA,IAAIO,aAAa,IAAII,WAAW,CAACF,GAAG,CAAC3N,WAAW,CAACoB,eAAe,CAAC,EAAE6L,IAAI,CAAC,EAAE;UACxE,OAAOI,OAAO,CAAC7E,GAAG,CAACmF,GAAG,EAAEV,IAAI,EAAEvM,KAAK,EAAEwM,QAAQ,CAAC;EAChD,MAAA;QAEA,MAAMqB,QAAQ,GAAG,CAAClB,OAAO,CAAC1C,GAAG,CAACgD,GAAG,EAAEV,IAAI,CAAC;EAExC9G,MAAAA,UAAU,EAAE;EACZ,MAAA,MAAMqI,OAAO,GAAGnB,OAAO,CAAC7E,GAAG,CAACmF,GAAG,EAAEV,IAAI,EAAEvM,KAAK,EAAEwM,QAAQ,CAAC;EACvD,MAAA,MAAMrD,IAAI,GAAGN,KAAK,CAACxI,GAAG,CAACkM,IAAI,CAAC;EAC5B,MAAA,IAAIpD,IAAI,EAAE;EACRA,QAAAA,IAAI,CAACrB,GAAG,CAAE,OAAO9H,KAAK,KAAK,UAAU,IAAI,CAAC6F,IAAI,GAAI7F,KAAK,GAAGgK,UAAU,CAAChK,KAAK,EAAE3B,KAAK,CAAC,CAAC;EACrF,MAAA;EAEA,MAAA,IAAIuO,aAAa,EAAE;UACjBmB,cAAc,CAACd,GAAG,EAAEV,IAAI,EAAEvM,KAAK,EAAEwM,QAAQ,CAAC;QAC5C,CAAC,MAAM,IAAIqB,QAAQ,EAAE;UACnBrB,QAAQ,CAACjM,IAAI,CAACwI,QAAQ,CAAC,GAAG,CAACyD,QAAQ,CAACjM,IAAI,CAACkC,GAAG,CAAC,CAAClC,IAAI,CAACwI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;EACxE,MAAA;EACArD,MAAAA,QAAQ,EAAE;EAEV,MAAA,OAAOoI,OAAO;MAChB,CAAC;EAGDE,IAAAA,cAAcA,CAACf,GAAG,EAAEV,IAAI,EAAE;EACxB,MAAA,IAAIQ,aAAa,IAAII,WAAW,CAACF,GAAG,CAAC3N,WAAW,CAACoB,eAAe,CAAC,EAAE6L,IAAI,CAAC,EAAE;EACxE,QAAA,OAAOI,OAAO,CAACqB,cAAc,CAACf,GAAG,EAAEV,IAAI,CAAC;EAC1C,MAAA;QACA,IAAI,OAAOU,GAAG,CAACV,IAAI,CAAC,KAAK,UAAU,IAAI,CAACd,MAAM,CAACvD,SAAS,CAACwF,cAAc,CAAC5C,IAAI,CAACmC,GAAG,EAAEV,IAAI,CAAC,EAAE;EACvF,QAAA,OAAOI,OAAO,CAACqB,cAAc,CAACf,GAAG,EAAEV,IAAI,CAAC;EAC1C,MAAA;EAEA1D,MAAAA,KAAK,CAACsB,MAAM,CAACoC,IAAI,CAAC;QAClB,MAAMzC,MAAM,GAAG6C,OAAO,CAACqB,cAAc,CAACf,GAAG,EAAEV,IAAI,CAAC;QAGhD,IAAI,CAACK,aAAa,EAAE;EAClBR,QAAAA,KAAK,CAAC7L,IAAI,CAACwI,QAAQ,CAAC,GAAG,CAACkE,GAAG,CAAC1M,IAAI,CAACwI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;EACtD,MAAA;EACA,MAAA,OAAOe,MAAM;MACf,CAAC;MAEDmE,OAAOA,CAAChB,GAAG,EAAE;EACX,MAAA,IAAIL,aAAa,EAAE;EAEjBR,QAAAA,KAAK,CAAC8B,MAAM;EACd,MAAA,CAAC,MAAM;EACL9B,QAAAA,KAAK,CAAC7L,IAAI,CAACwI,QAAQ,CAAC;EACtB,MAAA;EAEA,MAAA,OAAO4D,OAAO,CAACsB,OAAO,CAAChB,GAAG,CAAC,CAACkB,MAAM,CAACjF,GAAG,IAAIA,GAAG,KAAK3I,IAAI,CAACwI,QAAQ,CAAC;EAClE,IAAA;EACF,GAAC,CAAC;EAEFR,EAAAA,UAAU,CAACT,GAAG,CAACoC,MAAM,EAAEkC,KAAK,CAAC;EAC7B,EAAA,OAAOA,KAAK;EACd;AAMO,QAAMgC,WAAW,GAAGA,CAACC,IAAS,EAAEC,QAAgB,EAAEC,EAAO,EAAEC,MAAc,KAAK;IACnF,IAAI;EACF,IAAA,MAAMC,OAAO,GAAGD,MAAM,CAACE,KAAK,CAAC,GAAG,CAAC;EACjC,IAAA,MAAMC,SAAS,GAAG9B,KAAK,CAACC,OAAO,CAACwB,QAAQ,CAAC,GAAGA,QAAQ,GAAGA,QAAQ,CAACI,KAAK,CAAC,GAAG,CAAC;EAC1EvQ,IAAAA,cAAc,CAAC,MAAM;EACnB,MAAA,MAAAyQ,gBAAA,GAA6CC,eAAe,CAACR,IAAI,EAAEM,SAAS,CAAC;UAA7DG,UAAU,GAAAF,gBAAA,CAAlB1E,MAAM;UAAmB6E,OAAO,GAAAH,gBAAA,CAAZ1F,GAAG;EAE/B,MAAA,MAAM0B,GAAG,GAAGkE,UAAU,CAACC,OAAO,CAAC;EAE/B,MAAA,MAAMC,UAAU,GAAGF,UAAU,CAACvO,IAAI,CAACkM,IAAI,CAAC,CAAC5D,KAAK,CAACxI,GAAG,CAAC0O,OAAO,CAAE;EAG5D,MAAA,MAAAE,iBAAA,GAAyCJ,eAAe,CAACN,EAAE,EAAEE,OAAO,CAAC;UAArDS,QAAQ,GAAAD,iBAAA,CAAhB/E,MAAM;UAAiBiF,KAAK,GAAAF,iBAAA,CAAV/F,GAAG;EAC7BgG,MAAAA,QAAQ,CAAC3O,IAAI,CAACkM,IAAI,CAAC,CAAC5D,KAAK,CAACf,GAAG,CAACqH,KAAK,EAAEH,UAAU,CAAC;QAChDE,QAAQ,CAAC3O,IAAI,CAACkC,GAAG,CAAC,CAAC0M,KAAK,CAAC,GAAGvE,GAAG;MACjC,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC,OAAOwE,KAAK,EAAE;EACdC,IAAAA,OAAO,CAACD,KAAK,CAAC,aAAa,CAAC;EAC5B,IAAA,MAAMA,KAAK;EACb,EAAA;EACF;EAEA,SAASP,eAAeA,CAAC5B,GAAQ,EAAEqC,KAAe,EAAE;IAClD,IAAIpF,MAAM,GAAG+C,GAAG;IAChB,IAAI/D,GAAG,GAAG,EAAE;EACZ,EAAA,MAAMzF,GAAG,GAAG6L,KAAK,CAACpB,MAAM;IACxB,KAAK,IAAI1O,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiE,GAAG,EAAEjE,CAAC,EAAE,EAAE;EAC5B0J,IAAAA,GAAG,GAAGoG,KAAK,CAAC9P,CAAC,CAAC;EAEd,IAAA,IAAIA,CAAC,GAAGiE,GAAG,GAAG,CAAC,EAAE;EACfyG,MAAAA,MAAM,GAAGA,MAAM,CAAChB,GAAG,CAAC;EACtB,IAAA;EACF,EAAA;IACA,OAAO;MAAEgB,MAAM;EAAEhB,IAAAA;KAAK;EACxB;EAEA,SAASiE,WAAWA,CAACoC,OAAc,EAAErG,GAAQ,EAAE;EAC7C,EAAA,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;EAC3B,IAAA,OAAOqG,OAAO,CAACC,QAAQ,CAACtG,GAAG,CAAC;EAC9B,EAAA;EACA,EAAA,OAAOqG,OAAO,CAACE,IAAI,CAACC,EAAE,IAAI,OAAOA,EAAE,KAAK,QAAQ,IAAIxG,GAAG,CAACyG,UAAU,CAACD,EAAE,CAAC,CAAC;EACzE;EAEA,SAASnC,sBAAsBA,CAC7BN,GAAW,EACXV,IAAqB,EACrBC,QAAa,EACb3D,KAAyB,EACzBxK,KAAY,EACZ;EACA,EAAA,IAAIsP,CAAC,GAAG9E,KAAK,CAACxI,GAAG,CAACkM,IAAI,CAAC;EACvB,EAAA,IAAIoB,CAAC,EAAE;EACL,IAAA,OAAOA,CAAC,CAACtN,GAAG,EAAE;EAChB,EAAA;EAEAsN,EAAAA,CAAC,GAAG,IAAIrG,QAAQ,CAAC,MAAMqF,OAAO,CAACtM,GAAG,CAAC4M,GAAG,EAAEV,IAAI,EAAEC,QAAQ,CAAC,CAAC;IACxDmB,CAAC,CAACtP,KAAK,GAAGA,KAAK;EACfwK,EAAAA,KAAK,CAACf,GAAG,CAACyE,IAAI,EAAEoB,CAAC,CAAC;EAClB,EAAA,OAAOA,CAAC,CAACtN,GAAG,EAAE;EAChB;EAEA,SAAS0N,cAAcA,CAAC6B,GAAW,EAAErD,IAAqB,EAAEvM,KAAU,EAAEwM,QAAa,EAAE;EAErF,EAAA,IAAID,IAAI,KAAK,QAAQ,EAAE,CACtB,MAEI,IAAIsD,yBAAc,CAACtD,IAAI,CAAC,EAAE;EAC7BC,IAAAA,QAAQ,CAACjM,IAAI,CAACwI,QAAQ,CAAC,GAAG,CAAC6G,GAAG,CAACrP,IAAI,CAACwI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;EACzD,EAAA,CAAC,MAEI;MACH+G,WAAW,CAACF,GAAG,EAAErD,IAAI,EAAEvM,KAAK,EAAEwM,QAAQ,CAAC;EACzC,EAAA;EACF;EAEA,SAASsD,WAAWA,CAAC7C,GAAW,EAAEV,IAAqB,EAAEvM,KAAU,EAAEwM,QAAa,EAAE;IAClF,IAAI,CAACG,OAAO,CAAC1C,GAAG,CAACgD,GAAG,EAAEV,IAAI,CAAC,EAAE;MAC3BC,QAAQ,CAACjM,IAAI,CAACwI,QAAQ,CAAC,GAAG,CAACyD,QAAQ,CAACjM,IAAI,CAACkC,GAAG,CAAC,CAAClC,IAAI,CAACwI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;EACxE,EAAA;EACF;EAEA,MAAM0E,mBAAwB,GAAG,EAAE;EAEnC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAChD,OAAO,CAACvB,GAAG,IAAI;EAC5FuE,EAAAA,mBAAmB,CAACvE,GAAG,CAAC,GAAG,UAAU,GAAG6G,IAAW,EAAE;EACnDtK,IAAAA,UAAU,EAAE;EACZ,IAAA,MAAMrH,EAAE,GAAGyO,KAAK,CAAC3E,SAAS,CAACgB,GAAG,CAAC;EAE/B,IAAA,MAAMjB,GAAG,GAAG9J,cAAc,CAAC,MAAMC,EAAE,CAAC0M,IAAI,CAAC,IAAI,EAAE,GAAGiF,IAAI,CAAC,EAAE,IAAI,CAAC;MAC9D,IAAI,CAACxP,IAAI,CAACwI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACxI,IAAI,CAACkC,GAAG,CAAC,CAAClC,IAAI,CAACwI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;EAC9DrD,IAAAA,QAAQ,EAAE;EACV,IAAA,OAAOuC,GAAG;IACZ,CAAC;EACH,CAAC,CAAC;EAGF,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,CAACwC,OAAO,CAACvB,GAAG,IAAI;EACpDuE,EAAAA,mBAAmB,CAACvE,GAAG,CAAC,GAAG,UAAU,GAAG6G,IAAW,EAAE;EACnD,IAAA,MAAM3R,EAAE,GAAGyO,KAAK,CAAC3E,SAAS,CAACgB,GAAG,CAAC;EAC/B,IAAA,MAAM8G,IAAI,GAAGzN,KAAK,CAAC,IAAI,CAAC;MACxB,IAAIuH,MAAM,GAAG1L,EAAE,CAAC0M,IAAI,CAACkF,IAAI,EAAE,GAAGD,IAAI,CAAC;EACnC,IAAA,MAAM/P,KAAK,GAAG+P,IAAI,CAAC,CAAC,CAAC;EAErB,IAAA,IAAI,CAACjG,MAAM,KAAK,KAAK,IAAIA,MAAM,KAAK,EAAE,KAAK,OAAO9J,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;EACtF,MAAA,IAAIA,KAAK,CAACO,IAAI,CAACkC,GAAG,CAAC,EAAE;UACnBsN,IAAI,CAAC,CAAC,CAAC,GAAG/P,KAAK,CAACO,IAAI,CAACkC,GAAG,CAAC;UACzBqH,MAAM,GAAG1L,EAAE,CAAC0M,IAAI,CAACkF,IAAI,EAAE,GAAGD,IAAI,CAAC;EACjC,MAAA;EACA,MAAA,MAAM9N,CAAC,GAAGsG,UAAU,CAAClI,GAAG,CAACL,KAAK,CAAC;EAC/B,MAAA,IAAIiC,CAAC,EAAE;EACL8N,QAAAA,IAAI,CAAC,CAAC,CAAC,GAAG9N,CAAC;UACX6H,MAAM,GAAG1L,EAAE,CAAC0M,IAAI,CAACkF,IAAI,EAAE,GAAGD,IAAI,CAAC;EACjC,MAAA;EACF,IAAA;EAEA,IAAA,IAAI,CAACxP,IAAI,CAACwI,QAAQ,CAAC;EACnB,IAAA,OAAOe,MAAM;IACf,CAAC;EACH,CAAC,CAAC;EAIF,CAACrJ,MAAM,CAACyK,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAACT,OAAO,CAACvB,GAAG,IAAI;EACpD,EAAA,MAAM+G,SAAS,GAAG/G,GAAG,KAAK,SAAS;EACnCuE,EAAAA,mBAAmB,CAACvE,GAAG,CAAC,GAAG,UAAU,GAAG6G,IAAW,EAAE;EACnD,IAAA,MAAM3R,EAAE,GAAGyO,KAAK,CAAC3E,SAAS,CAACgB,GAAG,CAAC;EAC/B,IAAA,MAAMgH,QAAQ,GAAG3N,KAAK,CAAC,IAAI,CAAC;MAC5B,MAAMuG,IAAI,GAAG1K,EAAE,CAAC0M,IAAI,CAACoF,QAAQ,EAAE,GAAGH,IAAI,CAAC;EACvC,IAAA,MAAM/D,IAAI,GAAG,IAAI,CAACzL,IAAI,CAACkM,IAAI,CAAC;EAC5B,IAAA,MAAc0D,MAAM,GAAYnE,IAAI,CAA5BnG,IAAI;QAAUxH,KAAK,GAAK2N,IAAI,CAAd3N,KAAK;EAE3B,IAAA,IAAI8R,MAAM,EAAE;QACV,MAAMvG,OAAO,GAAGd,IAAI,CAAC7I,IAAI,CAAC4J,IAAI,CAACf,IAAI,CAAC;QACpCA,IAAI,CAAC7I,IAAI,GAAG,MAAM;EAChB,QAAA,MAAM6J,MAAM,GAAGF,OAAO,EAAE;EACxB,QAAA,IAAI,CAACE,MAAM,CAACC,IAAI,EAAE;EAChB,UAAA,IAAIkG,SAAS,EAAE;EACbnG,YAAAA,MAAM,CAAC9J,KAAK,CAAC,CAAC,CAAC,GAAGgK,UAAU,CAACF,MAAM,CAAC9J,KAAK,CAAC,CAAC,CAAC,EAAE3B,KAAK,CAAC;EACtD,UAAA,CAAC,MAAM;cACLyL,MAAM,CAAC9J,KAAK,GAAGgK,UAAU,CAACF,MAAM,CAAC9J,KAAK,EAAE3B,KAAK,CAAC;EAChD,UAAA;EACF,QAAA;EACA,QAAA,OAAOyL,MAAM;QACf,CAAC;EACH,IAAA;EAEA,IAAA,IAAI,CAACvJ,IAAI,CAACwI,QAAQ,CAAC;EAEnB,IAAA,OAAOD,IAAI;IACb,CAAC;EACH,CAAC,CAAC;EAKF2E,mBAAmB,CAACU,MAAM,GAAG,UAAU5G,QAAQ,EAAEmD,OAAO,EAAE;EACxD,EAAA,MAAMsB,IAAI,GAAG,IAAI,CAACzL,IAAI,CAACkM,IAAI,CAAC;EAC5B,EAAA,MAAc0D,MAAM,GAAYnE,IAAI,CAA5BnG,IAAI;MAAUxH,KAAK,GAAK2N,IAAI,CAAd3N,KAAK;EAC3B,EAAA,MAAM2R,IAAI,GAAGzN,KAAK,CAAC,IAAI,CAAC;IACxB,MAAMuH,MAAM,GAAG,EAAE;IACjB,IAAIsG,WAAW,GAAG,CAAC;EAEnB,EAAA,MAAMC,QAAQ,GAAG3F,OAAO,IAAIsF,IAAI;EAEhC,EAAA,MAAMvM,GAAG,GAAGuM,IAAI,CAAC9B,MAAM;IACvB,KAAK,IAAI1O,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiE,GAAG,EAAEjE,CAAC,EAAE,EAAE;MAG5B,IAAIA,CAAC,IAAIwQ,IAAI,EAAE;EACb,MAAA,MAAMhQ,KAAK,GAAGmQ,MAAM,GAAGnG,UAAU,CAACgG,IAAI,CAACxQ,CAAC,CAAC,EAAEnB,KAAK,CAAC,GAAG2R,IAAI,CAACxQ,CAAC,CAAC;EAE3D,MAAA,IAAI+H,QAAQ,CAACuD,IAAI,CAACuF,QAAQ,EAAErQ,KAAK,EAAER,CAAC,EAAE6Q,QAAQ,CAAC,EAAE;EAE/CvG,QAAAA,MAAM,CAACsG,WAAW,EAAE,CAAC,GAAGpQ,KAAK;EAC/B,MAAA;EACF,IAAA;EACF,EAAA;EACA,EAAA,IAAI,CAACO,IAAI,CAACwI,QAAQ,CAAC;EACnB,EAAA,OAAOe,MAAM;EACf,CAAC;EAED2D,mBAAmB,CAAC6C,KAAK,GAAG,UAAUC,KAAK,EAAEC,GAAG,EAAE;EAChD,EAAA,MAAMxE,IAAI,GAAG,IAAI,CAACzL,IAAI,CAACkM,IAAI,CAAC;EAC5B,EAAA,MAAc0D,MAAM,GAAYnE,IAAI,CAA5BnG,IAAI;MAAUxH,KAAK,GAAK2N,IAAI,CAAd3N,KAAK;EAE3B,EAAA,MAAM2R,IAAI,GAAGzN,KAAK,CAAC,IAAI,CAAC;EACxB,EAAA,MAAMkB,GAAG,GAAGuM,IAAI,CAAC9B,MAAM;EAGvB,EAAA,IAAIrD,CAAC,GAAG0F,KAAK,IAAI,CAAC;IAClB,IAAI1F,CAAC,GAAG,CAAC,EAAE;MACTA,CAAC,GAAG4F,IAAI,CAACC,GAAG,CAACjN,GAAG,GAAGoH,CAAC,EAAE,CAAC,CAAC;EAC1B,EAAA,CAAC,MAAM;MACLA,CAAC,GAAG4F,IAAI,CAACE,GAAG,CAAC9F,CAAC,EAAEpH,GAAG,CAAC;EACtB,EAAA;IAGA,IAAImN,KAAK,GAAGJ,GAAG,KAAKpH,SAAS,GAAG3F,GAAG,GAAG+M,GAAG;IACzC,IAAII,KAAK,GAAG,CAAC,EAAE;MACbA,KAAK,GAAGH,IAAI,CAACC,GAAG,CAACjN,GAAG,GAAGmN,KAAK,EAAE,CAAC,CAAC;EAClC,EAAA,CAAC,MAAM;MACLA,KAAK,GAAGH,IAAI,CAACE,GAAG,CAACC,KAAK,EAAEnN,GAAG,CAAC;EAC9B,EAAA;IAGA,MAAMoN,KAAK,GAAGJ,IAAI,CAACC,GAAG,CAACE,KAAK,GAAG/F,CAAC,EAAE,CAAC,CAAC;EAIpC,EAAA,MAAMf,MAAM,GAAG,IAAI+C,KAAK,CAACgE,KAAK,CAAC;IAG/B,KAAK,IAAIrR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqR,KAAK,EAAErR,CAAC,EAAE,EAAE;EAE9B,IAAA,IAAIA,CAAC,GAAGqL,CAAC,IAAImF,IAAI,EAAE;QACjBlG,MAAM,CAACtK,CAAC,CAAC,GAAG2Q,MAAM,GAAGnG,UAAU,CAACgG,IAAI,CAACxQ,CAAC,GAAGqL,CAAC,CAAC,EAAExM,KAAK,CAAC,GAAG2R,IAAI,CAACxQ,CAAC,GAAGqL,CAAC,CAAC;EACnE,IAAA;EACF,EAAA;EACA,EAAA,IAAI,CAACtK,IAAI,CAACwI,QAAQ,CAAC;EACnB,EAAA,OAAOe,MAAM;EACf,CAAC;EAED2D,mBAAmB,CAACqD,UAAU,GAAG,YAAY;EAC3C,EAAA,MAAM9E,IAAI,GAAG,IAAI,CAACzL,IAAI,CAACkM,IAAI,CAAC;EAC5B,EAAA,MAAc0D,MAAM,GAAYnE,IAAI,CAA5BnG,IAAI;MAAUxH,KAAK,GAAK2N,IAAI,CAAd3N,KAAK;EAC3B,EAAA,MAAM2R,IAAI,GAAGzN,KAAK,CAAC,IAAI,CAAC;EAGxB,EAAA,MAAMkB,GAAG,GAAGuM,IAAI,CAAC9B,MAAM;EAIvB,EAAA,MAAMpE,MAAM,GAAG,IAAI+C,KAAK,CAACpJ,GAAG,CAAC;IAK7B,IAAIoH,CAAC,GAAG,CAAC;IACT,OAAOA,CAAC,GAAGpH,GAAG,EAAE;MAGdqG,MAAM,CAACe,CAAC,CAAC,GAAGsF,MAAM,GAAGnG,UAAU,CAACgG,IAAI,CAACvM,GAAG,GAAG,CAAC,GAAGoH,CAAC,CAAC,EAAExM,KAAK,CAAC,GAAG2R,IAAI,CAACvM,GAAG,GAAG,CAAC,GAAGoH,CAAC,CAAC;EAC7EA,IAAAA,CAAC,EAAE;EACL,EAAA;EAEA,EAAA,IAAI,CAACtK,IAAI,CAACwI,QAAQ,CAAC;EAEnB,EAAA,OAAOe,MAAM;EACf,CAAC;EAED2D,mBAAmB,CAACsD,SAAS,GAAG,UAAUR,KAAK,EAAES,WAAW,EAAE,GAAGC,KAAK,EAAE;EACtE,EAAA,MAAMjF,IAAI,GAAG,IAAI,CAACzL,IAAI,CAACkM,IAAI,CAAC;EAC5B,EAAA,MAAc0D,MAAM,GAAYnE,IAAI,CAA5BnG,IAAI;MAAUxH,KAAK,GAAK2N,IAAI,CAAd3N,KAAK;EAC3B,EAAA,MAAM2R,IAAI,GAAGzN,KAAK,CAAC,IAAI,CAAC;EAExB,EAAA,MAAMkB,GAAG,GAAGuM,IAAI,CAAC9B,MAAM;EAGvB,EAAA,IAAIgD,aAAa,GAAGX,KAAK,IAAI,CAAC;IAC9B,IAAIY,WAAW,GAAGD,aAAa,GAAG,CAAC,GAAGT,IAAI,CAACC,GAAG,CAACjN,GAAG,GAAGyN,aAAa,EAAE,CAAC,CAAC,GAAGT,IAAI,CAACE,GAAG,CAACO,aAAa,EAAEzN,GAAG,CAAC;EAGrG,EAAA,IAAI2N,iBAAiB;EACrB,EAAA,IAAIC,SAAS,CAACnD,MAAM,KAAK,CAAC,EAAE;EAC1BkD,IAAAA,iBAAiB,GAAG,CAAC;EACvB,EAAA,CAAC,MAAM,IAAIC,SAAS,CAACnD,MAAM,KAAK,CAAC,EAAE;MACjCkD,iBAAiB,GAAG3N,GAAG,GAAG0N,WAAW;EACvC,EAAA,CAAC,MAAM;EACL,IAAA,IAAIG,EAAE,GAAGN,WAAW,IAAI,CAAC;EACzBI,IAAAA,iBAAiB,GAAGX,IAAI,CAACE,GAAG,CAACF,IAAI,CAACC,GAAG,CAACY,EAAE,EAAE,CAAC,CAAC,EAAE7N,GAAG,GAAG0N,WAAW,CAAC;EAClE,EAAA;EAGA,EAAA,MAAMI,WAAW,GAAGN,KAAK,CAAC/C,MAAM;EAChC,EAAA,MAAMsD,MAAM,GAAG/N,GAAG,GAAG2N,iBAAiB,GAAGG,WAAW;EACpD,EAAA,MAAMzH,MAAM,GAAG,IAAI+C,KAAK,CAAC2E,MAAM,CAAC;IAKhC,KAAK,IAAIhS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2R,WAAW,EAAE3R,CAAC,EAAE,EAAE;EACpCsK,IAAAA,MAAM,CAACtK,CAAC,CAAC,GAAG2Q,MAAM,GAAGnG,UAAU,CAACgG,IAAI,CAACxQ,CAAC,CAAC,EAAEnB,KAAK,CAAC,GAAG2R,IAAI,CAACxQ,CAAC,CAAC;EAC3D,EAAA;IAGA,KAAK,IAAIA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+R,WAAW,EAAE/R,CAAC,EAAE,EAAE;MACpCsK,MAAM,CAACqH,WAAW,GAAG3R,CAAC,CAAC,GAAG2Q,MAAM,GAAGnG,UAAU,CAACiH,KAAK,CAACzR,CAAC,CAAC,EAAEnB,KAAK,CAAC,GAAG4S,KAAK,CAACzR,CAAC,CAAC;EAC3E,EAAA;EAGA,EAAA,MAAMiS,cAAc,GAAGN,WAAW,GAAGC,iBAAiB;EACtD,EAAA,MAAMM,YAAY,GAAGP,WAAW,GAAGI,WAAW;EAC9C,EAAA,KAAK,IAAI/R,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiE,GAAG,GAAGgO,cAAc,EAAEjS,CAAC,EAAE,EAAE;MAC7CsK,MAAM,CAAC4H,YAAY,GAAGlS,CAAC,CAAC,GAAG2Q,MAAM,GAAGnG,UAAU,CAACgG,IAAI,CAACyB,cAAc,GAAGjS,CAAC,CAAC,EAAEnB,KAAK,CAAC,GAAG2R,IAAI,CAACyB,cAAc,GAAGjS,CAAC,CAAC;EAC5G,EAAA;EAEA,EAAA,IAAI,CAACe,IAAI,CAACwI,QAAQ,CAAC;EACnB,EAAA,OAAOe,MAAM;EACf,CAAC;EAED2D,mBAAmB,CAACkE,IAAI,GAAG,UAAUC,KAAK,EAAE5R,KAAK,EAAE;EACjD,EAAA,MAAMgM,IAAI,GAAG,IAAI,CAACzL,IAAI,CAACkM,IAAI,CAAC;EAC5B,EAAA,MAAc0D,MAAM,GAAYnE,IAAI,CAA5BnG,IAAI;MAAUxH,KAAK,GAAK2N,IAAI,CAAd3N,KAAK;EAC3B,EAAA,MAAM2R,IAAI,GAAGzN,KAAK,CAAC,IAAI,CAAC;EAGxB,EAAA,MAAMkB,GAAG,GAAGuM,IAAI,CAAC9B,MAAM;EAGvB,EAAA,IAAI2D,aAAa,GAAGC,MAAM,CAACF,KAAK,CAAC,IAAI,CAAC;IAGtC,IAAIG,WAAW,GAAGF,aAAa,IAAI,CAAC,GAAGA,aAAa,GAAGpO,GAAG,GAAGoO,aAAa;EAG1E,EAAA,IAAIE,WAAW,IAAItO,GAAG,IAAIsO,WAAW,GAAG,CAAC,EAAE;EACzC,IAAA,MAAM,IAAIC,UAAU,CAAC,CAAA,eAAA,EAAkBJ,KAAK,EAAE,CAAC;EACjD,EAAA;EAKA,EAAA,MAAM9H,MAAM,GAAG,IAAI+C,KAAK,CAACpJ,GAAG,CAAC;IAE7B,KAAK,IAAIjE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiE,GAAG,EAAEjE,CAAC,EAAE,EAAE;MAC5B,IAAIA,CAAC,KAAKuS,WAAW,EAAE;EACrBjI,MAAAA,MAAM,CAACtK,CAAC,CAAC,GAAG2Q,MAAM,GAAGnG,UAAU,CAAChK,KAAK,EAAE3B,KAAK,CAAC,GAAG2B,KAAK;EACvD,IAAA,CAAC,MAAM;EACL8J,MAAAA,MAAM,CAACtK,CAAC,CAAC,GAAG2Q,MAAM,GAAGnG,UAAU,CAACgG,IAAI,CAACxQ,CAAC,CAAC,EAAEnB,KAAK,CAAC,GAAG2R,IAAI,CAACxQ,CAAC,CAAC;EAC3D,IAAA;EACF,EAAA;EACA,EAAA,IAAI,CAACe,IAAI,CAACwI,QAAQ,CAAC;EACnB,EAAA,OAAOe,MAAM;EACf,CAAC;EAED2D,mBAAmB,CAACwE,MAAM,GAAG,UAAU,GAAGhB,KAAK,EAAE;EAC/C,EAAA,MAAMjF,IAAI,GAAG,IAAI,CAACzL,IAAI,CAACkM,IAAI,CAAC;EAC5B,EAAA,MAAc0D,MAAM,GAAYnE,IAAI,CAA5BnG,IAAI;MAAUxH,KAAK,GAAK2N,IAAI,CAAd3N,KAAK;EAC3B,EAAA,MAAM2R,IAAI,GAAGzN,KAAK,CAAC,IAAI,CAAC;EACxB,EAAA,MAAM2P,OAAO,GAAGlC,IAAI,CAAC9B,MAAM;IAG3B,IAAIiE,WAAW,GAAGD,OAAO;EACzB,EAAA,KAAK,IAAI1S,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyR,KAAK,CAAC/C,MAAM,EAAE1O,CAAC,EAAE,EAAE;EACrC,IAAA,MAAMO,IAAI,GAAGkR,KAAK,CAACzR,CAAC,CAAC;EAErB,IAAA,IAAIqN,KAAK,CAACC,OAAO,CAAC/M,IAAI,CAAC,EAAE;QACvBoS,WAAW,IAAIpS,IAAI,CAACmO,MAAM;EAC5B,IAAA,CAAC,MAAM;EACLiE,MAAAA,WAAW,IAAI,CAAC;EAClB,IAAA;EACF,EAAA;EAGA,EAAA,MAAMrI,MAAM,GAAG,IAAI+C,KAAK,CAACsF,WAAW,CAAC;IACrC,IAAItH,CAAC,GAAG,CAAC;EAGT,EAAA,OAAOA,CAAC,GAAGqH,OAAO,EAAErH,CAAC,EAAE,EAAE;MACvB,IAAIA,CAAC,IAAImF,IAAI,EAAE;EACblG,MAAAA,MAAM,CAACe,CAAC,CAAC,GAAGsF,MAAM,GAAGnG,UAAU,CAACgG,IAAI,CAACnF,CAAC,CAAC,EAAExM,KAAK,CAAC,GAAG2R,IAAI,CAACnF,CAAC,CAAC;EAC3D,IAAA;EACF,EAAA;EAGA,EAAA,KAAK,IAAIrL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyR,KAAK,CAAC/C,MAAM,EAAE1O,CAAC,EAAE,EAAE;EACrC,IAAA,MAAMO,IAAI,GAAGkR,KAAK,CAACzR,CAAC,CAAC;EACrB,IAAA,IAAIqN,KAAK,CAACC,OAAO,CAAC/M,IAAI,CAAC,EAAE;EACvB,MAAA,KAAK,IAAIqS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGrS,IAAI,CAACmO,MAAM,EAAEkE,CAAC,EAAE,EAAE;UACpC,IAAIA,CAAC,IAAIrS,IAAI,EAAE;EACb+J,UAAAA,MAAM,CAACe,CAAC,CAAC,GAAGsF,MAAM,GAAGnG,UAAU,CAACjK,IAAI,CAACqS,CAAC,CAAC,EAAE/T,KAAK,CAAC,GAAG0B,IAAI,CAACqS,CAAC,CAAC;EAC3D,QAAA;EACAvH,QAAAA,CAAC,EAAE;EACL,MAAA;EACF,IAAA,CAAC,MAAM;EACLf,MAAAA,MAAM,CAACe,CAAC,CAAC,GAAGsF,MAAM,GAAGnG,UAAU,CAACjK,IAAI,EAAE1B,KAAK,CAAC,GAAG0B,IAAI;EACnD8K,MAAAA,CAAC,EAAE;EACL,IAAA;EACF,EAAA;EACA,EAAA,IAAI,CAACtK,IAAI,CAACwI,QAAQ,CAAC;EACnB,EAAA,OAAOe,MAAM;EACf,CAAC;EAGD,MAAMuI,aAAa,GAAG;EACpBC,EAAAA,UAAU,EAAE,KAAK;EACjBC,EAAAA,QAAQ,EAAE;EACZ,CAAC;EACD,CACE;EACErJ,EAAAA,GAAG,EAAE,OAAO;IACZ,GAAGmJ;EACL,CAAC,EACD;EACEnJ,EAAAA,GAAG,EAAE,MAAM;EACXoJ,EAAAA,UAAU,EAAE,IAAI;IAChB,GAAGD;EACL,CAAC,EACD;EACEnJ,EAAAA,GAAG,EAAE,UAAU;EACf,EAAA,GAAGmJ,aAAa;EAChBC,EAAAA,UAAU,EAAE;EACd,CAAC,EACD;EACEpJ,EAAAA,GAAG,EAAE,WAAW;IAChB,GAAGmJ;EACL,CAAC,EACD;EACEnJ,EAAAA,GAAG,EAAE,eAAe;IACpB,GAAGmJ;EACL,CAAC,EACD;EACEnJ,EAAAA,GAAG,EAAE,SAAS;IACd,GAAGmJ;EACL,CAAC,EACD;EACEnJ,EAAAA,GAAG,EAAE,KAAK;IACV,GAAGmJ;EACL,CAAC,EACD;EACEnJ,EAAAA,GAAG,EAAE,MAAM;IACX,GAAGmJ;EACL,CAAC,EACD;EACEnJ,EAAAA,GAAG,EAAE,QAAQ;EACb,EAAA,GAAGmJ,aAAa;EAChBE,EAAAA,QAAQ,EAAE;EACZ,CAAC,EACD;EACErJ,EAAAA,GAAG,EAAE,aAAa;EAClB,EAAA,GAAGmJ,aAAa;EAChBE,EAAAA,QAAQ,EAAE;EACZ,CAAC,CACF,CAAC9H,OAAO,CAAC,CAAC;IAAEvB,GAAG;IAAEoJ,UAAU;EAAEC,EAAAA;EAAS,CAAC,KAAK;EAC3C9E,EAAAA,mBAAmB,CAACvE,GAAG,CAAC,GAAG,UAAU,GAAG6G,IAAW,EAAE;EACnD,IAAA,MAAM/D,IAAI,GAAG,IAAI,CAACzL,IAAI,CAACkM,IAAI,CAAC;EAC5B,IAAA,MAAMrO,EAAE,GAAGyO,KAAK,CAAC3E,SAAS,CAACgB,GAAG,CAAC;EAC/B,IAAA,MAAciH,MAAM,GAAYnE,IAAI,CAA5BnG,IAAI;QAAUxH,KAAK,GAAK2N,IAAI,CAAd3N,KAAK;EAC3B,IAAA,MAAM2R,IAAI,GAAGzN,KAAK,CAAC,IAAI,CAAC;MACxBiQ,gBAAgB,CAACrC,MAAM,EAAEJ,IAAI,EAAE1R,KAAK,EAAEkU,QAAQ,CAAC;MAE/C,IAAIzI,MAAM,GAAG1L,EAAE,CAAC0M,IAAI,CAACkF,IAAI,EAAE,GAAGD,IAAI,CAAC;MACnC,IAAIuC,UAAU,IAAInC,MAAM,EAAE;EACxBrG,MAAAA,MAAM,GAAGE,UAAU,CAACF,MAAM,EAAEzL,KAAK,CAAC;EACpC,IAAA;EACA,IAAA,IAAI,CAACkC,IAAI,CAACwI,QAAQ,CAAC;EACnB,IAAA,OAAOe,MAAM;IACf,CAAC;EACH,CAAC,CAAC;EAGF2D,mBAAmB,CAACgF,QAAQ,GAAG,UAAU,GAAG1C,IAAW,EAAE;EACvD,EAAA,MAAM3R,EAAE,GAAGyO,KAAK,CAAC3E,SAAS,CAAC,UAAU,CAAC;EACtC,EAAA,MAAM8D,IAAI,GAAG,IAAI,CAACzL,IAAI,CAACkM,IAAI,CAAC;EAC5B,EAAA,MAAc0D,MAAM,GAAYnE,IAAI,CAA5BnG,IAAI;MAAUxH,KAAK,GAAK2N,IAAI,CAAd3N,KAAK;EAC3B,EAAA,MAAM2R,IAAI,GAAGzN,KAAK,CAAC,IAAI,CAAC;IACxBiQ,gBAAgB,CAACrC,MAAM,EAAEJ,IAAI,EAAE1R,KAAK,EAAE,IAAI,CAAC;IAC3C,IAAIyL,MAAM,GAAG1L,EAAE,CAAC0M,IAAI,CAACkF,IAAI,EAAE,GAAGD,IAAI,CAAC;EACnC,EAAA,IAAI,CAACxP,IAAI,CAACwI,QAAQ,CAAC;EACnB,EAAA,OAAOoH,MAAM,GAAGrG,MAAM,CAAC4I,GAAG,CAAChD,EAAE,IAAI1F,UAAU,CAAC0F,EAAE,EAAErR,KAAK,CAAC,CAAC,GAAGyL,MAAM;EAClE,CAAC;EAGD,CAAC,MAAM,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAACW,OAAO,CAACvB,GAAG,IAAI;EACpDuE,EAAAA,mBAAmB,CAACvE,GAAG,CAAC,GAAG,UAAU,GAAG6G,IAAW,EAAE;EACnD,IAAA,MAAM3R,EAAE,GAAGyO,KAAK,CAAC3E,SAAS,CAACgB,GAAG,CAAC;EAC/B,IAAA,MAAM8G,IAAI,GAAGzN,KAAK,CAAC,IAAI,CAAC;MACxB,MAAMuH,MAAM,GAAG1L,EAAE,CAAC0M,IAAI,CAACkF,IAAI,EAAE,GAAGD,IAAI,CAAC;EACrC,IAAA,IAAI,CAACxP,IAAI,CAACwI,QAAQ,CAAC;EACnB,IAAA,OAAOe,MAAM;IACf,CAAC;EACH,CAAC,CAAC;EAEF,SAAS0I,gBAAgBA,CAACrC,MAAe,EAAEJ,IAAW,EAAE1R,KAAY,EAAEkU,QAAgB,GAAG,IAAI,EAAE;EAC7F,EAAA,MAAMhL,QAAQ,GAAGwI,IAAI,CAAC,CAAC,CAAC;EACxB,EAAA,MAAM4C,MAAM,GAAG,UAAqB,GAAGC,MAAa,EAAE;EACpD,IAAA,IAAIzC,MAAM,EAAE;EACV,MAAA,IAAIoC,QAAQ,GAAG,IAAI,EAAEK,MAAM,CAAC,CAAC,CAAC,GAAG5I,UAAU,CAAC4I,MAAM,CAAC,CAAC,CAAC,EAAEvU,KAAK,CAAC;EAC7D,MAAA,IAAIkU,QAAQ,GAAG,IAAI,EAAEK,MAAM,CAAC,CAAC,CAAC,GAAG5I,UAAU,CAAC4I,MAAM,CAAC,CAAC,CAAC,EAAEvU,KAAK,CAAC;EAC/D,IAAA;MAEA,OAAOkJ,QAAQ,CAACuD,IAAI,CAAC,IAAI,EAAE,GAAG8H,MAAM,CAAC;IACvC,CAAC;EACD7C,EAAAA,IAAI,CAAC,CAAC,CAAC,GAAG4C,MAAM;EAClB;;ECnqBA,MAAME,WAAW,GAAGA,CAACC,WAAgB,EAAEC,IAAY,KAAKA,IAAI,IAAID,WAAW,CAACvS,IAAI,CAACkC,GAAG,CAAC;EAE9E,MAAMuQ,KAAK,CAAC;IACjB,QAAQxS,OAAO,IAAI,IAAI;EACvB,EAAA,QAAQE,eAAe,IAAW,CAAC,IAAI,EAAE,KAAK,CAAC;IAC/C,OAAOuS,OAAO,GAAU,IAAI;EAC5B3T,EAAAA,WAAWA,GAAG;MACZ,MAAM8M,KAAK,GAAGpC,UAAU,CAAC,IAAI,EAAE9L,UAAU,EAAE,EAAE,IAAI,CAAC;MAClD8U,KAAK,CAACC,OAAO,GAAG7G,KAAK;EACrB,IAAA,OAAOA,KAAK;EACd,EAAA;IACA8G,MAAM,GAAuBA,MAAM,IAAI;EAYvC,EAAA,OAAOC,GAAGA,CAERC,MAAoG,EACpGC,SAAiC,EAC9B;EACH,IAAA,MAAMP,WAAW,GAAGE,KAAK,CAACC,OAAO;EACjC,IAAA,MAAMK,KAAK,GAAG,IAAK,IAAI,EAAU;MACjC,IAAIR,WAAW,IAAIM,MAAM,EAAE;QACzB,MAAMvK,KAAuB,GAAGyK,KAAK,CAAC/S,IAAI,CAACkM,IAAI,CAAC,CAAC5D,KAAK;EACtD,MAAA,KAAK,MAAM0K,QAAQ,IAAIH,MAAM,EAAE;EAC7B,QAAA,MAAML,IAAI,GAAIK,MAAM,CAAyBG,QAAQ,CAAC;EAEtD,QAAA,IAAI,OAAOR,IAAI,KAAK,UAAU,EAAE;EAE9BlK,UAAAA,KAAK,CAACf,GAAG,CAACyL,QAAQ,EAAE,IAAIjM,QAAQ,CAAC,MAAMyL,IAAI,CAACD,WAAW,CAAC,CAAC,CAAC;YAC1DQ,KAAK,CAAC/S,IAAI,CAACkC,GAAG,CAAC,CAAC8Q,QAAQ,CAAC,GAAGnK,SAAS;EACvC,QAAA,CAAC,MAAM,IAAI,OAAO2J,IAAI,KAAK,QAAQ,EAAE;EAGnC,UAAA,IAAIF,WAAW,CAACC,WAAW,EAAEC,IAAI,CAAC,EAAE;cAClC3E,WAAW,CAAC0E,WAAW,EAAEC,IAAI,EAAEO,KAAK,EAAEC,QAAQ,CAAC;EACjD,UAAA,CAAC,MAAM;cACL,MAAMnV,EAAE,GAAG,IAAIoV,QAAQ,CAAC,MAAM,EAAE,CAAA,mBAAA,EAAsBT,IAAI,CAAA,WAAA,CAAa,CAAC;EACxElK,YAAAA,KAAK,CAACf,GAAG,CAACyL,QAAQ,EAAE,IAAIjM,QAAQ,CAAC,MAAMlJ,EAAE,CAAC0U,WAAW,CAAC,CAAC,CAAC;cACxDQ,KAAK,CAAC/S,IAAI,CAACkC,GAAG,CAAC,CAAC8Q,QAAQ,CAAC,GAAGnK,SAAS;EACvC,UAAA;EACF,QAAA,CAAC,MAAM;YAELgF,WAAW,CAAC0E,WAAW,EAAEC,IAAI,EAAYO,KAAK,EAAEC,QAAQ,CAAC;EAC3D,QAAA;EACF,MAAA;EACF,IAAA;EACA,IAAA,KAAK,MAAMrK,GAAG,IAAImK,SAAS,EAAE;EAC3BC,MAAAA,KAAK,CAACpK,GAAG,CAAC,GAAGmK,SAAS,CAACnK,GAAG,CAAC;EAC7B,IAAA;EACAoK,IAAAA,KAAK,CAACJ,MAAM,GAAG,MAAMJ,WAAW;MAChCE,KAAK,CAACC,OAAO,GAAGH,WAAW;EAC3B,IAAA,OAAOQ,KAAK;EACd,EAAA;EAEAZ,EAAAA,GAAGA,CACDU,MAAkE,GAAG,EAAE,EACvE;EACA,IAAA,MAAMN,WAAW,GAAG,IAAI,CAACI,MAAM,EAAE;EACjC,IAAA,IAAIJ,WAAW,EAAE;EACf,MAAA,KAAK,MAAMS,QAAQ,IAAIH,MAAM,EAAE;EAC7B,QAAA,MAAMK,SAAiB,GAAGL,MAAM,CAACG,QAAQ,CAAQ;UACjDnF,WAAW,CAAC0E,WAAW,EAAEW,SAAS,EAAE,IAAI,EAAEF,QAAQ,CAAC;EACrD,MAAA;EACF,IAAA;MACA,IAAI,CAACL,MAAM,GAAG,IAAI;EACpB,EAAA;EACF;AAEO,QAAMQ,OAAO,GAAI/F,CAAM,IAAwB,OAAOA,CAAC,KAAK,UAAU,IAAIA,CAAC,CAACnN,OAAO;;EC9EnF,SAASmT,CAACA,CAAChS,IAAS,EAAE;IAC3B,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,IAAI,EAAE;EAC7C,IAAA,OAAOqI,UAAU,CAACrI,IAAI,EAAEzD,UAAU,EAAE,CAAC;EACvC,EAAA;EACA,EAAA,IAAI,OAAOyD,IAAI,KAAK,UAAU,EAAE;EAC9B,IAAA,MAAMgM,CAAC,GAAG,IAAIrG,QAAQ,CAAC3F,IAAI,CAAC;QAC1BtB,GAAG,GAAGsN,CAAC,CAACtN,GAAG,CAACwJ,IAAI,CAAC8D,CAAC,CAAC;MACrB,OAAO;EACLiG,MAAAA,GAAG,EAAEjG,CAAC;QACN,IAAI5P,CAACA,GAAG;UACN,OAAOsC,GAAG,EAAE;EACd,MAAA;OACD;EACH,EAAA,CAAC,MAAM;EACL,IAAA,MAAMsN,CAAC,GAAG,IAAI9F,MAAM,CAAClG,IAAI,CAAC;QACxBmG,GAAG,GAAG6F,CAAC,CAAC7F,GAAG,CAAC+B,IAAI,CAAC8D,CAAC,CAAC;QACnBtN,GAAG,GAAGsN,CAAC,CAACtN,GAAG,CAACwJ,IAAI,CAAC8D,CAAC,CAAC;MACrB,OAAO;EACLiG,MAAAA,GAAG,EAAEjG,CAAC;QACN,IAAI5P,CAACA,GAAG;UACN,OAAOsC,GAAG,EAAE;QACd,CAAC;QACD,IAAItC,CAACA,CAACA,CAAC,EAAE;UACP+J,GAAG,CAAC/J,CAAC,CAAC;EACR,MAAA;OACD;EACH,EAAA;EACF;EAEA,MAAM8V,sBAAsB,GAAG;EAC7BC,EAAAA,SAAS,EAAE,IAAI;EACf5Q,EAAAA,IAAI,EAAE;EACR,CAAC;EAIM,SAAS6Q,QAAQA,CACtBxM,QAAwC,EACxCyM,QAAkC,EAClCC,GAAqB,EACrB;EAEA,EAAA,MAAMC,MAAM,GAAGrH,KAAK,CAACC,OAAO,CAACkH,QAAQ,CAAC;IACtCC,GAAG,GAAGC,MAAM,GAAGD,GAAG,IAAI,EAAE,GAAGD,QAAQ,IAAI,EAAE;EACzC,EAAA,MAAMG,YAAY,GAAG1V,kBAAkB,CAACwV,GAAG,CAAC/Q,IAAI,CAAC;IACjD,IAAI,CAACgR,MAAM,EAAE;MAEX,MAAME,EAAE,GAAG,IAAIpM,MAAM,CAACT,QAAQ,EAAE4M,YAAY,CAAC;MAC7C,MAAME,GAAG,GAAGD,EAAE,CAAC/N,OAAO,CAACwD,IAAI,CAACuK,EAAE,CAAC;MAC/BC,GAAG,CAACT,GAAG,GAAGQ,EAAE;EACZ,IAAA,OAAOC,GAAG;EACZ,EAAA;IAEA,IAAIC,OAAO,GAAG,KAAK;IACnB,MAAMC,IAAI,GAAGP,QAAiB;EAC9B,EAAA,MAAMF,SAAS,GAAGS,IAAI,CAACrG,MAAM,KAAK,CAAC,GAAG,IAAI,GAAI+F,GAAG,CAACH,SAAS,IAAI,IAAK;EACpE,EAAA,MAAMU,EAAe,GAAG3H,KAAK,CAACwB,IAAI,CAAC;MAAEH,MAAM,EAAEqG,IAAI,CAACrG;EAAO,GAAC,EAAE,OAAO;EAAEuG,IAAAA,GAAG,EAAE,IAAI;EAAE7J,IAAAA,GAAG,EAAE;EAAK,GAAC,CAAC,CAAC;EAE7F,EAAA,MAAMwJ,EAAE,GAAG,IAAIpM,MAAM,CAAC0M,GAAG,IAAI;EAC3B,IAAA,KAAK,IAAIlV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+U,IAAI,CAACrG,MAAM,EAAE1O,CAAC,EAAE,EAAE;EACpC,MAAA,MAAMQ,KAAK,GAAGuU,IAAI,CAAC/U,CAAC,CAAC,CAACzB,CAAC;QACvByW,EAAE,CAAChV,CAAC,CAAC,CAACiV,GAAG,GAAGD,EAAE,CAAChV,CAAC,CAAC,CAACoL,GAAG;EACrB4J,MAAAA,EAAE,CAAChV,CAAC,CAAC,CAACoL,GAAG,GAAG5K,KAAK;EACnB,IAAA;MAEA,IAAIsU,OAAO,IAAIR,SAAS,EAAE;EACxBY,MAAAA,GAAG,CAAC3R,KAAK,IAAIC,GAAmB;QAChCuE,QAAQ,CAAC,GAAGiN,EAAE,CAAC;EACfE,MAAAA,GAAG,CAAC3R,KAAK,IAAI,IAAoB;EACnC,IAAA;EACAuR,IAAAA,OAAO,GAAG,IAAI;IAChB,CAAC,EAAEH,YAAY,CAAC;IAChB,MAAME,GAAG,GAAGD,EAAE,CAAC/N,OAAO,CAACwD,IAAI,CAACuK,EAAE,CAAC;IAC/BC,GAAG,CAACT,GAAG,GAAGQ,EAAE;EACZ,EAAA,OAAOC,GAAG;EACZ;EAEO,SAASrP,MAAMA,CACpBuC,QAAwC,EACxCyM,QAAkC,EAClCC,GAAqB,EACrB;EAEA,EAAA,MAAMC,MAAM,GAAGrH,KAAK,CAACC,OAAO,CAACkH,QAAQ,CAAC;IACtCC,GAAG,GAAGC,MAAM,GAAGD,GAAG,IAAI,EAAE,GAAGD,QAAQ,IAAI,EAAE;EACzCC,EAAAA,GAAG,GAAG;EAAE,IAAA,GAAGJ,sBAAsB;MAAE,GAAGI;KAAK;EAC3C,EAAA,MAAME,YAAY,GAAG1V,kBAAkB,CAACwV,GAAG,CAAC/Q,IAAI,CAAC;IACjD,IAAI,CAACgR,MAAM,EAAE;MAEX,MAAME,EAAE,GAAG,IAAIpM,MAAM,CAACT,QAAQ,EAAE4M,YAAY,CAAC;EAC7C,IAAA,OAAOC,EAAE;EACX,EAAA;IAEA,IAAIE,OAAO,GAAG,KAAK;IACnB,MAAMC,IAAI,GAAGP,QAAiB;EAC9B,EAAA,MAAMF,SAAS,GAAGS,IAAI,CAACrG,MAAM,KAAK,CAAC,GAAG,IAAI,GAAI+F,GAAG,CAACH,SAAS,IAAI,IAAK;EACpE,EAAA,MAAMU,EAAe,GAAG3H,KAAK,CAACwB,IAAI,CAAC;MAAEH,MAAM,EAAEqG,IAAI,CAACrG;EAAO,GAAC,EAAE,OAAO;EAAEuG,IAAAA,GAAG,EAAE,IAAI;EAAE7J,IAAAA,GAAG,EAAE;EAAK,GAAC,CAAC,CAAC;EAE7F,EAAA,MAAMwJ,EAAE,GAAG,IAAIpM,MAAM,CAAC0M,GAAG,IAAI;EAC3B,IAAA,KAAK,IAAIlV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+U,IAAI,CAACrG,MAAM,EAAE1O,CAAC,EAAE,EAAE;EACpC,MAAA,MAAMmV,GAAG,GAAGJ,IAAI,CAAC/U,CAAC,CAAC;EACnB,MAAA,MAAMQ,KAAK,GAAG,OAAO2U,GAAG,KAAK,UAAU,GAAGA,GAAG,EAAE,GAAGA,GAAG,CAACtU,GAAG,EAAE;QAC3DmU,EAAE,CAAChV,CAAC,CAAC,CAACiV,GAAG,GAAGD,EAAE,CAAChV,CAAC,CAAC,CAACoL,GAAG;EACrB4J,MAAAA,EAAE,CAAChV,CAAC,CAAC,CAACoL,GAAG,GAAG5K,KAAK;EACnB,IAAA;MAEA,IAAIsU,OAAO,IAAIR,SAAS,EAAE;EACxBY,MAAAA,GAAG,CAAC3R,KAAK,IAAIC,GAAmB;QAChCuE,QAAQ,CAAC,GAAGiN,EAAE,CAAC;EACfE,MAAAA,GAAG,CAAC3R,KAAK,IAAI,IAAoB;EACnC,IAAA;EACAuR,IAAAA,OAAO,GAAG,IAAI;IAChB,CAAC,EAAEH,YAAY,CAAC;EAChB,EAAA,OAAOC,EAAE;EACX;EAEO,SAAS/V,KAAKA,CAAC,GAAG0R,IAAI,EAAE;IAC7B,MAAM6D,GAAG,GAAG,IAAIxL,KAAK,CAAC2H,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9B,EAAA,IAAIA,IAAI,CAAC7B,MAAM,KAAK,CAAC,EAAE;EACrB0F,IAAAA,GAAG,CAACvV,KAAK,GAAG0R,IAAI,CAAC,CAAC,CAAC;EACrB,EAAA;IACA6D,GAAG,CAACvT,GAAG,EAAE;IACT,MAAMgU,GAAG,GAAGT,GAAG,CAACvN,OAAO,CAACwD,IAAI,CAAC+J,GAAG,CAAC;IACjCS,GAAG,CAACT,GAAG,GAAGA,GAAG;EACb,EAAA,OAAOS,GAAG;EACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}