@ai-ecoverse/slicc-kernel 1.147.9 → 1.147.10

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.
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/process/js/lockdown.ts", "../src/kernel/protocol.ts", "../src/process/wasi/wasi-abi.ts", "../src/fs/changes.ts", "../src/fs/pages.ts", "../src/fs/ranged.ts", "../src/realm/sync-fs-wire.ts", "../src/process/wasi/wasi-files.ts", "../src/realm/sync-sab-wire.ts", "../src/process/wasi/wasi-threads.ts", "../src/fs/physical-path.ts", "../src/fs/dev-removal.ts", "../src/kernel/cpu-clock.ts", "../src/fs/types.ts", "../src/kernel/cred.ts", "../src/kernel/signals.ts", "../src/realm/sync-sab-bridge.ts", "../src/process/js/async-sab.ts", "../src/process/js/js-kernel.ts", "../src/process/js/js-io.ts", "../src/process/js/js-dev.ts", "../src/process/wasi/slicc-lock.ts", "../src/process/wasi/slicc-sem.ts", "../src/process/wasi/wasi-cred.ts", "../src/kernel/pipe.ts", "../src/kernel/fd-table.ts", "../src/process/wasi/wasi-fds.ts", "../src/process/wasi/wasi-memory.ts", "../src/process/wasi/wasi-poll.ts", "../src/process/wasi/wasi-sigmask.ts", "../src/process/wasi/wasi-termios.ts", "../src/process/wasi/wasix-epoll.ts", "../src/kernel/net/datagram-wire.ts", "../src/kernel/net/loopback-names.ts", "../src/kernel/net/routes.ts", "../src/process/wasi/wasix-sockets.ts", "../src/process/wasi/wasi-host.ts", "../src/process/wasi/wasix-process.ts", "../src/process/wasi/wasi-imports.ts", "../src/kernel/held-cwd.ts", "../src/realm/emscripten-held-cwd.ts", "../src/version.ts", "../src/process/js/js-children.ts", "../src/process/js/js-exit.ts", "../src/process/js/js-fetch.ts", "../src/process/js/js-net.ts", "../src/kernel/proc-info.ts", "../src/fs/owners.ts", "../src/fs/walk.ts", "../src/fs/access.ts", "../src/process/wasi-errno.ts", "../src/realm/live-vfs-fs.ts", "../src/process/process-locks.ts", "../src/process/process-pty.ts", "../src/process/process-fds.ts", "../src/process/procfs.ts", "../src/process/wasi/wasi-procfs.ts", "../src/process/js/js-proc.ts", "../src/process/js/js-run.ts", "../src/process/js/js-sync.ts", "../src/process/js/js-tty.ts", "../src/realm/emscripten-vfs-hook.ts", "../src/process/fd-metadata.ts", "../src/process/kernel-streams.ts", "../src/process/process-fork.ts", "../src/process/process-children.ts", "../src/process/process-http.ts", "../src/process/process-signals.ts", "../src/process/process-sockets.ts", "../src/process/realm-user.ts", "../src/process/process-runtime.ts", "../src/process/js/js-wasi.ts", "../src/process/js/js-watch.ts", "../src/process/js/js-websocket.ts", "../src/process/js/js-context.ts", "../src/process/js/js-thread.ts", "../src/process/js/js-runtime.ts", "../src/process/wasi/dylink.ts", "../src/process/wasi/wasi-module.ts", "../src/process/wasi/wasi-ptsfs.ts", "../src/process/wasi/wasi-signals.ts", "../src/process/wasi/wasi-stats.ts", "../src/process/wasi/wasix-fork.ts", "../src/process/wasi/wasix-ffi.ts", "../src/process/wasi/wasix-trampoline.ts", "../src/process/wasi/wasm-functypes.ts", "../src/process/wasi/wasix-linker.ts", "../src/process/wasi/wasix-host.ts", "../src/process/wasi/wasm-names.ts", "../src/process/wasi/wasi-runtime.ts", "../src/node-process-worker.ts", "../src/node-lockdown.ts", "../src/process/process-entry.ts"],
4
4
  "sourcesContent": ["export const BLOCKED_GLOBALS: readonly string[] = [\n 'XMLHttpRequest',\n 'WebSocketStream',\n 'WebTransport',\n 'EventSource',\n 'indexedDB',\n 'caches',\n 'cookieStore',\n 'SharedWorker',\n 'close',\n 'webkitRequestFileSystem',\n 'webkitRequestFileSystemSync',\n 'webkitResolveLocalFileSystemURL',\n 'webkitResolveLocalFileSystemSyncURL',\n];\n\nexport const BLOCKED_NAVIGATOR: readonly string[] = [\n 'storage',\n 'storageBuckets',\n 'locks',\n 'serviceWorker',\n 'usb',\n 'hid',\n 'serial',\n];\n\nexport const OPEN_SLOTS: readonly string[] = [\n 'fetch',\n 'WebSocket',\n 'BroadcastChannel',\n 'importScripts',\n 'Worker',\n 'postMessage',\n];\n\nfunction chain(target: object): object[] {\n const out: object[] = [];\n for (let at: object | null = target; at && at !== Object.prototype; ) {\n out.push(at);\n at = Object.getPrototypeOf(at);\n }\n return out;\n}\n\nexport function hide(target: object, names: readonly string[]): void {\n for (const name of names) {\n const holders = chain(target);\n for (const holder of holders) Reflect.deleteProperty(holder, name);\n const kept = holders.slice(1).some((holder) => Object.hasOwn(holder, name));\n const defined = Reflect.defineProperty(target, name, {\n value: undefined,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n if (kept || (!defined && Reflect.get(target, name) !== undefined)) {\n throw new Error(`slicc-kernel: cannot withhold ${name} from a JS program`);\n }\n }\n}\n\nexport function vacate(target: object, names: readonly string[]): void {\n for (const name of names) {\n const holders = chain(target);\n for (const holder of holders) Reflect.deleteProperty(holder, name);\n const kept = holders.slice(1).some((holder) => Object.hasOwn(holder, name));\n const opened = Reflect.defineProperty(target, name, {\n value: undefined,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n if (kept || !opened || Reflect.get(target, name) !== undefined) {\n throw new Error(`slicc-kernel: cannot withhold ${name} from a JS program`);\n }\n }\n}\n\nexport function lockdown(scope: object = globalThis): void {\n hide(scope, BLOCKED_GLOBALS);\n vacate(scope, OPEN_SLOTS);\n if ('self' in scope) {\n Reflect.defineProperty(scope, 'self', {\n value: scope,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n }\n const navigator = (scope as { navigator?: unknown }).navigator;\n if (navigator && typeof navigator === 'object') hide(navigator, BLOCKED_NAVIGATOR);\n}\n", "import type { ForeignResults, ImportedMemory } from '../process/wasi/wasi-module.ts';\nimport type { WasiForkState } from '../process/wasi/wasix-fork.ts';\nimport type { LinkRecord } from '../process/wasi/wasix-linker.ts';\nimport type { BlockedMask } from '../realm/sync-sab-wire.ts';\nimport type { Cred } from './cred.ts';\nimport type { DeviceMeta, KernelFdKind } from './fd-table.ts';\n\nexport const WASM_PROCESS_INIT = 'wasm-process-init';\nexport const WASM_PROCESS_EXIT = 'wasm-process-exit';\nexport const WASM_PROCESS_ERROR = 'wasm-process-error';\nexport const WASM_PROCESS_READY = 'wasm-process-ready';\nexport const WASM_THREAD_SPAWN = 'wasm-thread-spawn';\nexport const WASM_THREAD_INIT = 'wasm-thread-init';\nexport const WASM_THREAD_EXIT = 'wasm-thread-exit';\nexport const WASM_MAX_THREADS = 256;\nexport const WASM_DEFAULT_THREADS = 64;\nexport const JS_THREAD_SPAWN = 'js-thread-spawn';\nexport const JS_THREAD_INIT = 'js-thread-init';\nexport const JS_THREAD_EXIT = 'js-thread-exit';\nexport const JS_MAX_THREADS = 256;\nexport const JS_DEFAULT_THREADS = 16;\nexport const JS_THREAD_NO_MEMORY = 256;\nexport const JS_THREAD_CRASHED = 257;\nexport const JS_THREAD_OWNED_FDS = 1024;\n\nexport interface WasmProgram {\n abi?: 'emscripten' | 'wasi';\n glue: string;\n module: WebAssembly.Module;\n memory?: ImportedMemory;\n foreign?: ForeignResults | undefined;\n path?: string;\n names?: string;\n imports?: string;\n preopenRoot?: boolean;\n}\n\nexport interface JsProgram {\n abi: 'js';\n glue: string;\n path: string;\n url?: string;\n}\n\nexport type Program = WasmProgram | JsProgram;\n\nexport interface ForkState {\n memory: Uint8Array;\n currData: number;\n forkSp: number;\n callStackNames: Array<[number, string]>;\n ppid: number;\n streams?: ForkStream[];\n cwd?: string;\n wasi?: WasiForkState;\n dl?: DlState;\n}\n\nexport interface DlState {\n log: LinkRecord[];\n next: number;\n handle: number;\n free: number[];\n live: number[];\n}\n\nexport interface KernelStreamEntry {\n fd: number;\n kernel: number;\n kind: KernelFdKind;\n flags?: number;\n cloexec?: boolean;\n desc?: number;\n fifo?: string;\n}\n\nexport type ForkStream = KernelStreamEntry | { fd: number; path: string; flags: number };\n\nexport interface InheritedFd {\n fd: number;\n kind: KernelFdKind;\n device?: DeviceMeta;\n flags?: number;\n cloexec?: boolean;\n desc?: number;\n fifo?: string;\n}\n\nexport interface HeldCwdInit {\n sab: SharedArrayBuffer;\n slot: number;\n seen: number;\n dead: boolean;\n}\n\nexport interface WasmProcessInitMsg {\n type: typeof WASM_PROCESS_INIT;\n pid: number;\n program: WasmProgram;\n argv0: string;\n args: string[];\n env: Record<string, string>;\n cwd: string;\n sab: SharedArrayBuffer;\n changes?: SharedArrayBuffer;\n held?: HeldCwdInit;\n hostname?: string | undefined;\n ppid?: number;\n umask?: number;\n cred?: Cred;\n owners?: boolean;\n links?: boolean;\n fork?: ForkState;\n fds?: InheritedFd[];\n}\n\nexport interface JsLane {\n sab: SharedArrayBuffer;\n port: MessagePort;\n}\n\nexport type JsProcessInitMsg = Omit<WasmProcessInitMsg, 'program' | 'fork'> & {\n program: JsProgram;\n lane?: JsLane;\n};\n\nexport type ProcessInitMsg = WasmProcessInitMsg | JsProcessInitMsg;\n\nexport interface JsThreadSpawnMsg {\n type: typeof JS_THREAD_SPAWN;\n data: unknown;\n port: MessagePort;\n control: MessagePort;\n transfer: Transferable[];\n}\n\nexport interface JsThreadStart {\n tid: number;\n port: MessagePort;\n data: unknown;\n owned?: SharedArrayBuffer;\n}\n\nexport type JsThreadInitMsg = Omit<JsProcessInitMsg, 'type'> & {\n type: typeof JS_THREAD_INIT;\n thread: JsThreadStart;\n};\n\nexport interface JsThreadExitMsg {\n type: typeof JS_THREAD_EXIT;\n code: number;\n}\n\nexport type JsThreadControl =\n | { tid: number }\n | { errno: 'EAGAIN' | 'ESRCH'; message: string }\n | { exited: number };\n\nexport interface WasmProcessExitMsg {\n type: typeof WASM_PROCESS_EXIT;\n code: number;\n}\n\nexport interface WasmProcessErrorMsg {\n type: typeof WASM_PROCESS_ERROR;\n message: string;\n code?: number;\n}\n\nexport interface WasmThread {\n tid: number;\n arg: number;\n memory: WebAssembly.Memory;\n ids: SharedArrayBuffer;\n modules?: Record<string, WebAssembly.Module>;\n blocked?: BlockedMask;\n}\n\nexport interface WasmThreadSpawnMsg {\n type: typeof WASM_THREAD_SPAWN;\n thread: WasmThread;\n}\n\nexport interface WasmThreadInitMsg extends Omit<WasmProcessInitMsg, 'type' | 'fork' | 'fds'> {\n type: typeof WASM_THREAD_INIT;\n thread: WasmThread;\n signals?: SharedArrayBuffer;\n}\n\nexport interface WasmThreadExitMsg {\n type: typeof WASM_THREAD_EXIT;\n}\n", "export const E = {\n SUCCESS: 0,\n '2BIG': 1,\n ACCES: 2,\n ADDRINUSE: 3,\n ADDRNOTAVAIL: 4,\n AFNOSUPPORT: 5,\n AGAIN: 6,\n ALREADY: 7,\n BADF: 8,\n BADMSG: 9,\n BUSY: 10,\n CANCELED: 11,\n CHILD: 12,\n CONNABORTED: 13,\n CONNREFUSED: 14,\n CONNRESET: 15,\n DEADLK: 16,\n DESTADDRREQ: 17,\n DOM: 18,\n DQUOT: 19,\n EXIST: 20,\n FAULT: 21,\n FBIG: 22,\n HOSTUNREACH: 23,\n IDRM: 24,\n ILSEQ: 25,\n INPROGRESS: 26,\n INTR: 27,\n INVAL: 28,\n IO: 29,\n ISCONN: 30,\n ISDIR: 31,\n LOOP: 32,\n MFILE: 33,\n MLINK: 34,\n MSGSIZE: 35,\n MULTIHOP: 36,\n NAMETOOLONG: 37,\n NETDOWN: 38,\n NETRESET: 39,\n NETUNREACH: 40,\n NFILE: 41,\n NOBUFS: 42,\n NODEV: 43,\n NOENT: 44,\n NOEXEC: 45,\n NOLCK: 46,\n NOLINK: 47,\n NOMEM: 48,\n NOMSG: 49,\n NOPROTOOPT: 50,\n NOSPC: 51,\n NOSYS: 52,\n NOTCONN: 53,\n NOTDIR: 54,\n NOTEMPTY: 55,\n NOTRECOVERABLE: 56,\n NOTSOCK: 57,\n NOTSUP: 58,\n NOTTY: 59,\n NXIO: 60,\n OVERFLOW: 61,\n OWNERDEAD: 62,\n PERM: 63,\n PIPE: 64,\n PROTO: 65,\n PROTONOSUPPORT: 66,\n PROTOTYPE: 67,\n RANGE: 68,\n ROFS: 69,\n SPIPE: 70,\n SRCH: 71,\n STALE: 72,\n TIMEDOUT: 73,\n TXTBSY: 74,\n XDEV: 75,\n NOTCAPABLE: 76,\n} as const;\n\nexport function wasiErrnoOf(code: string | undefined): number {\n if (!code) return E.IO;\n const name = code.startsWith('E') ? code.slice(1) : code;\n if (name === 'OPNOTSUPP') return E.NOTSUP;\n if (name === 'WOULDBLOCK') return E.AGAIN;\n if (name === 'NOMEDIUM') return E.NODEV;\n return (E as Record<string, number>)[name] ?? E.IO;\n}\n\nexport const FILETYPE = {\n UNKNOWN: 0,\n BLOCK_DEVICE: 1,\n CHARACTER_DEVICE: 2,\n DIRECTORY: 3,\n REGULAR_FILE: 4,\n SOCKET_DGRAM: 5,\n SOCKET_STREAM: 6,\n SYMBOLIC_LINK: 7,\n} as const;\n\nexport const RIGHTS = {\n FD_DATASYNC: 1n << 0n,\n FD_READ: 1n << 1n,\n FD_SEEK: 1n << 2n,\n FD_FDSTAT_SET_FLAGS: 1n << 3n,\n FD_SYNC: 1n << 4n,\n FD_TELL: 1n << 5n,\n FD_WRITE: 1n << 6n,\n\n ALL: (1n << 30n) - 1n,\n} as const;\n\nexport const OFLAGS = { CREAT: 1, DIRECTORY: 2, EXCL: 4, TRUNC: 8 } as const;\nexport const FDFLAGS = { APPEND: 1, DSYNC: 2, NONBLOCK: 4, RSYNC: 8, SYNC: 16 } as const;\nexport const LOOKUP_SYMLINK_FOLLOW = 1;\nexport const WHENCE = { SET: 0, CUR: 1, END: 2 } as const;\nexport const CLOCK = { REALTIME: 0, MONOTONIC: 1, PROCESS_CPUTIME: 2, THREAD_CPUTIME: 3 } as const;\nexport const FSTFLAGS = { ATIM: 1, ATIM_NOW: 2, MTIM: 4, MTIM_NOW: 8 } as const;\nexport const EVENTTYPE = { CLOCK: 0, FD_READ: 1, FD_WRITE: 2 } as const;\nexport const SUBCLOCK_ABSTIME = 1;\n\nexport const EVENT_FD_READWRITE_HANGUP = 1;\n\nexport const RIFLAGS = { PEEK: 1, WAITALL: 2 } as const;\n\nexport const SDFLAGS = { RD: 1, WR: 2 } as const;\nexport const PREOPENTYPE_DIR = 0;\n\nexport const SIZE = {\n FILESTAT: 64,\n FDSTAT: 24,\n DIRENT: 24,\n SUBSCRIPTION: 48,\n EVENT: 32,\n} as const;\n\nexport const WASI_SIGNAL_TO_POSIX: Readonly<Record<number, number>> = Object.fromEntries(\n Array.from({ length: 30 }, (_, i) => [i + 1, i + 1 < 16 ? i + 1 : i + 2])\n);\n\nexport function wasixSignal(sig: number): number | undefined {\n return Number.isInteger(sig) && sig >= 1 && sig <= 31 ? sig : undefined;\n}\n", "const GEN = 0;\nconst RING = 1;\nconst RING_SIZE = 4096;\nconst SLOT = 2;\nexport const SHARED_TTL_MS = 100;\nexport const RENAME_WAIT_MS = 100;\n\nconst DIRTY = RING + RING_SIZE * SLOT;\nconst FOREIGN = DIRTY + 1;\nconst RENAMES = FOREIGN + 1;\n\nexport const CHANGES_BYTES = (RENAMES + 1) * 4;\n\nexport function changeHash(path: string): number {\n let h = 0x811c9dc5;\n for (let i = 0; i < path.length; i++) {\n h ^= path.charCodeAt(i);\n h = Math.imul(h, 0x01000193);\n }\n return h === 0 ? 1 : h;\n}\n\nfunction normal(path: string): string {\n const parts: string[] = [];\n for (const part of path.split('/')) {\n if (part === '' || part === '.') continue;\n if (part === '..') parts.pop();\n else parts.push(part);\n }\n return `/${parts.join('/')}`;\n}\n\nexport class FileChanges {\n readonly sab: SharedArrayBuffer;\n private readonly view: Int32Array;\n\n constructor(sab: SharedArrayBuffer = new SharedArrayBuffer(CHANGES_BYTES)) {\n this.sab = sab;\n this.view = new Int32Array(sab);\n }\n\n dirtied(delta: number): void {\n Atomics.add(this.view, DIRTY, delta);\n }\n\n foreign(on: boolean): void {\n Atomics.store(this.view, FOREIGN, on ? 1 : 0);\n }\n\n flush(): void {\n Atomics.add(this.view, GEN, RING_SIZE + 1);\n }\n\n renamed(): number {\n const seq = (Atomics.add(this.view, RENAMES, 1) + 1) | 0;\n Atomics.notify(this.view, RENAMES);\n return seq;\n }\n\n publish(...paths: string[]): void {\n for (const path of paths) {\n const g = (Atomics.add(this.view, GEN, 1) + 1) | 0;\n const at = RING + (g & (RING_SIZE - 1)) * SLOT;\n Atomics.store(this.view, at, 0);\n Atomics.store(this.view, at + 1, changeHash(normal(path)));\n Atomics.store(this.view, at, g);\n }\n }\n}\n\nexport class ChangeView {\n private readonly view: Int32Array;\n\n constructor(sab: SharedArrayBuffer) {\n this.view = new Int32Array(sab);\n }\n\n now(): number {\n return Atomics.load(this.view, GEN);\n }\n\n clean(): boolean {\n return this.view.length > DIRTY && Atomics.load(this.view, DIRTY) === 0;\n }\n\n foreign(): boolean {\n return this.view.length > FOREIGN && Atomics.load(this.view, FOREIGN) === 1;\n }\n\n renames(): number {\n return this.view.length > RENAMES ? Atomics.load(this.view, RENAMES) : 0;\n }\n\n awaitRename(seen: number, ms: number): number {\n if (this.view.length > RENAMES) Atomics.wait(this.view, RENAMES, seen, ms);\n return this.renames();\n }\n\n changedSince(seen: number, path: string): { now: number; changed: boolean } {\n const now = Atomics.load(this.view, GEN);\n const distance = (now - seen) >>> 0;\n if (distance === 0) return { now, changed: false };\n if (distance > RING_SIZE) return { now, changed: true };\n const hash = changeHash(normal(path));\n for (let i = 1; i <= distance; i++) {\n const g = (seen + i) | 0;\n const at = RING + (g & (RING_SIZE - 1)) * SLOT;\n if (Atomics.load(this.view, at) !== g) return { now, changed: true };\n const hit = Atomics.load(this.view, at + 1) === hash;\n if (Atomics.load(this.view, at) !== g) return { now, changed: true };\n if (hit) return { now, changed: true };\n }\n return { now, changed: false };\n }\n}\n", "export const PAGE = 64 * 1024;\nexport const READAHEAD = 1024 * 1024;\nexport const CLEAN_LIMIT = 4 * 1024 * 1024;\nexport const WRITEBACK = 8 * 1024 * 1024;\nexport const RUN = 1024 * 1024;\n\nexport interface Run {\n offset: number;\n bytes: Uint8Array;\n}\n\nexport interface FlushPlan {\n shrink?: number;\n runs: Run[];\n extend?: number;\n}\n\nexport class Pages {\n length: number;\n private stored: number;\n private shrink: number | undefined;\n private readonly pages = new Map<number, Uint8Array>();\n private readonly dirty = new Set<number>();\n private readonly free: Uint8Array[] = [];\n private pinned = false;\n\n constructor(size: number) {\n this.length = size;\n this.stored = size;\n }\n\n get dirtyBytes(): number {\n return this.dirty.size * PAGE;\n }\n\n get changed(): boolean {\n return this.dirty.size > 0 || this.shrink !== undefined || this.length !== this.stored;\n }\n\n missing(at: number, length: number): Array<[number, number]> {\n this.evict();\n const end = Math.min(this.stored, at + length, this.length);\n const runs: Array<[number, number]> = [];\n for (let page = Math.floor(at / PAGE); page * PAGE < end; page++) {\n if (this.pages.has(page)) continue;\n const last = runs[runs.length - 1];\n if (last && last[0] + last[1] === page * PAGE) last[1] += PAGE;\n else runs.push([page * PAGE, PAGE]);\n }\n const last = runs[runs.length - 1];\n if (last) last[1] = Math.max(last[1], Math.min(READAHEAD, this.stored - last[0]));\n return runs.map(([start, n]) => [start, Math.min(n, this.stored - start)]);\n }\n\n partial(at: number, length: number): Array<[number, number]> {\n if (length === 0) return [];\n this.evict();\n const edges = new Set([Math.floor(at / PAGE), Math.floor((at + length - 1) / PAGE)]);\n const runs: Array<[number, number]> = [];\n for (const page of edges) {\n const start = page * PAGE;\n const covered = at <= start && at + length >= start + PAGE;\n if (covered || this.pages.has(page) || start >= this.stored) continue;\n runs.push([start, Math.min(PAGE, this.stored - start)]);\n }\n return runs;\n }\n\n fill(start: number, bytes: Uint8Array): void {\n for (let at = 0; at < bytes.length; at += PAGE) {\n const page = (start + at) / PAGE;\n if (this.pages.has(page)) continue;\n const part = bytes.subarray(at, Math.min(at + PAGE, bytes.length));\n const fresh = this.take(part.length);\n fresh.set(part);\n this.pages.set(page, fresh);\n }\n }\n\n read(at: number, length: number): Uint8Array {\n const out = new Uint8Array(Math.max(0, Math.min(this.length, at + length) - at));\n this.readInto(at, out);\n return out;\n }\n\n readInto(at: number, out: Uint8Array): number {\n const end = Math.min(this.length, at + out.length);\n for (let pos = at; pos < end; ) {\n const page = Math.floor(pos / PAGE);\n const from = pos - page * PAGE;\n const n = Math.min(PAGE - from, end - pos);\n const bytes = this.pages.get(page);\n if (bytes) out.set(bytes.subarray(from, from + n), pos - at);\n else out.fill(0, pos - at, pos - at + n);\n pos += n;\n }\n return Math.max(0, end - at);\n }\n\n write(at: number, bytes: Uint8Array): void {\n for (let done = 0; done < bytes.length; ) {\n const pos = at + done;\n const page = Math.floor(pos / PAGE);\n const from = pos - page * PAGE;\n const n = Math.min(PAGE - from, bytes.length - done);\n let target = this.pages.get(page);\n if (!target) {\n target = this.take(0);\n this.pages.set(page, target);\n }\n target.set(bytes.subarray(done, done + n), from);\n this.dirty.add(page);\n done += n;\n }\n this.length = Math.max(this.length, at + bytes.length);\n }\n\n truncate(size: number): void {\n if (size < this.stored) {\n this.stored = size;\n this.shrink = Math.min(this.shrink ?? size, size);\n }\n if (size < this.length) {\n const edge = Math.floor(size / PAGE);\n for (const page of [...this.pages.keys()]) {\n if (page > edge || (page === edge && size === edge * PAGE)) this.drop(page);\n }\n this.pages.get(edge)?.fill(0, size - edge * PAGE);\n }\n this.length = size;\n }\n\n plan(): FlushPlan {\n const runs: Run[] = [];\n const sorted = [...this.dirty].sort((a, b) => a - b);\n for (let i = 0; i < sorted.length; ) {\n let j = i + 1;\n const first = sorted[i] as number;\n while (\n j < sorted.length &&\n sorted[j] === first + (j - i) &&\n ((sorted[j] as number) * PAGE) % RUN !== 0\n ) {\n j++;\n }\n const start = first * PAGE;\n const end = Math.min(this.length, (first + (j - i)) * PAGE);\n const bytes = new Uint8Array(end - start);\n for (let k = i; k < j; k++) {\n const page = this.pages.get(sorted[k] as number) as Uint8Array;\n bytes.set(page.subarray(0, Math.min(PAGE, end - (k - i) * PAGE - start)), (k - i) * PAGE);\n }\n runs.push({ offset: start, bytes });\n i = j;\n }\n const written = Math.max(this.stored, ...runs.map((r) => r.offset + r.bytes.length));\n return {\n ...(this.shrink !== undefined ? { shrink: this.shrink } : {}),\n runs,\n ...(this.length > written ? { extend: this.length } : {}),\n };\n }\n\n flushed(): void {\n this.dirty.clear();\n this.shrink = undefined;\n this.stored = this.length;\n this.evict();\n }\n\n pin(): void {\n this.pinned = true;\n }\n\n reset(size: number): void {\n if (this.pinned) return;\n for (const page of [...this.pages.keys()]) if (!this.dirty.has(page)) this.drop(page);\n if (this.changed) return;\n this.length = size;\n this.stored = size;\n }\n\n refresh(size: number): void {\n if (this.pinned) return;\n for (const page of [...this.pages.keys()]) if (!this.dirty.has(page)) this.drop(page);\n const resized = this.length !== this.stored || this.shrink !== undefined;\n if (this.shrink === undefined) this.stored = size;\n this.length = resized ? Math.max(this.length, this.stored) : size;\n }\n\n private evict(): void {\n if (this.pinned) return;\n let clean = (this.pages.size - this.dirty.size) * PAGE;\n for (const page of this.pages.keys()) {\n if (clean <= CLEAN_LIMIT) return;\n if (this.dirty.has(page)) continue;\n this.drop(page);\n clean -= PAGE;\n }\n }\n\n private take(used: number): Uint8Array {\n const page = this.free.pop();\n if (!page) return new Uint8Array(PAGE);\n page.fill(0, used);\n return page;\n }\n\n private drop(page: number): void {\n const bytes = this.pages.get(page) as Uint8Array;\n this.pages.delete(page);\n this.dirty.delete(page);\n if (this.free.length < CLEAN_LIMIT / PAGE) this.free.push(bytes);\n }\n}\n", "import type { ChangeView } from './changes.ts';\nimport { Pages, WRITEBACK } from './pages.ts';\n\ntype WatchStat = {\n size: number;\n version?: string | undefined;\n ino?: number | undefined;\n mtimeMs?: number | undefined;\n nlink?: number | undefined;\n};\n\nexport interface RangedWatch {\n view: ChangeView;\n ino?: number | undefined;\n seen?: number | undefined;\n stat(path: string): WatchStat;\n real?: () => string | undefined;\n linked?: boolean;\n resolved?: string | null;\n sig?: string;\n}\n\nexport const signatureOf = (st: WatchStat): string =>\n `${st.version ?? ''}:${st.size}:${st.mtimeMs ?? ''}`;\n\nexport function linkedWatch<T extends RangedWatch>(watch: T, st: WatchStat): T {\n if ((st.nlink ?? 1) < 2) return watch;\n watch.linked = true;\n watch.sig = signatureOf(st);\n return watch;\n}\n\nfunction viaAlias(watch: RangedWatch, seen: number, path: string): boolean {\n if (watch.resolved === undefined) {\n let real: string | undefined;\n try {\n real = watch.real?.();\n } catch {}\n watch.resolved = real && real !== path ? real : null;\n }\n return watch.resolved !== null && watch.view.changedSince(seen, watch.resolved).changed;\n}\n\nfunction viaLink(watch: RangedWatch, path: string): boolean {\n if (!watch.linked) return false;\n let sig: string;\n try {\n sig = signatureOf(watch.stat(path));\n } catch {\n return false;\n }\n if (sig === watch.sig) return false;\n watch.sig = sig;\n return true;\n}\n\nexport function watchedChange(\n watch: RangedWatch,\n seen: number,\n path: string\n): { now: number; changed: boolean } {\n const said = watch.view.changedSince(seen, path);\n if (said.changed || said.now === seen) return said;\n return { now: said.now, changed: viaAlias(watch, seen, path) || viaLink(watch, path) };\n}\n\nexport interface RangedIo {\n pread(path: string, offset: number, length: number, version?: string): Uint8Array;\n pwrite(path: string, offset: number, bytes: Uint8Array, transfer?: boolean): void;\n truncate(path: string, size: number): void;\n}\n\nexport interface AsyncRangedIo {\n pread(path: string, offset: number, length: number, version?: string): Promise<Uint8Array>;\n pwrite(path: string, offset: number, bytes: Uint8Array, transfer?: boolean): Promise<void>;\n truncate(path: string, size: number): Promise<void>;\n}\n\nexport class RangedFile {\n private readonly pages: Pages;\n private readonly io: RangedIo;\n private pinned = false;\n private version: string | undefined;\n private readonly watch: RangedWatch | undefined;\n private seen = 0;\n path: string;\n\n constructor(io: RangedIo, path: string, size: number, version?: string, watch?: RangedWatch) {\n this.io = io;\n this.path = path;\n this.version = version;\n this.pages = new Pages(size);\n this.watch = watch;\n if (watch) this.seen = watch.seen ?? watch.view.now();\n }\n\n private fresh(): void {\n const watch = this.watch;\n if (!watch || this.pinned) return;\n const { now, changed } = watchedChange(watch, this.seen, this.path);\n this.seen = now;\n if (changed) this.reread();\n }\n\n reread(): void {\n const watch = this.watch;\n if (!watch || this.pinned || this.pages.changed) return;\n let st: ReturnType<RangedWatch['stat']>;\n try {\n st = watch.stat(this.path);\n } catch {\n return;\n }\n if (watch.ino !== undefined && st.ino !== watch.ino) return;\n this.version = st.version;\n this.pages.refresh(st.size);\n }\n\n get changed(): boolean {\n return this.pages.changed;\n }\n\n get pinnedVersion(): string | undefined {\n return this.version;\n }\n\n forget(): void {\n this.pages.reset(this.pages.length);\n }\n\n size(): number {\n this.fresh();\n return this.pages.length;\n }\n\n private fetch(runs: Array<[number, number]>): void {\n for (const [start, n] of runs) {\n this.pages.fill(start, this.io.pread(this.path, start, n, this.version));\n }\n }\n\n read(at: number, length: number): Uint8Array {\n this.fresh();\n this.fetch(this.pages.missing(at, length));\n return this.pages.read(at, length);\n }\n\n readInto(at: number, out: Uint8Array): number {\n this.fresh();\n this.fetch(this.pages.missing(at, out.length));\n return this.pages.readInto(at, out);\n }\n\n write(at: number, bytes: Uint8Array): void {\n this.fresh();\n this.fetch(this.pages.partial(at, bytes.length));\n this.pages.write(at, bytes);\n if (!this.pinned && this.pages.dirtyBytes >= WRITEBACK) this.flush();\n }\n\n truncate(size: number): void {\n this.pages.truncate(size);\n }\n\n flush(): void {\n if (this.pinned || !this.pages.changed) return;\n const plan = this.pages.plan();\n if (plan.shrink !== undefined) this.io.truncate(this.path, plan.shrink);\n for (const run of plan.runs) this.io.pwrite(this.path, run.offset, run.bytes, true);\n if (plan.extend !== undefined) this.io.truncate(this.path, plan.extend);\n this.version = undefined;\n this.pages.flushed();\n }\n\n pin(): void {\n this.pinned = true;\n this.pages.pin();\n this.prefetch();\n }\n\n prefetch(): void {\n this.fresh();\n this.fetch(this.pages.missing(0, this.pages.length));\n }\n\n reset(size: number): void {\n this.pages.reset(size);\n }\n}\n\nexport class AsyncRangedFile {\n private readonly pages: Pages;\n private readonly io: AsyncRangedIo;\n private pinned = false;\n private version: string | undefined;\n path: string;\n\n constructor(io: AsyncRangedIo, path: string, size: number, version?: string) {\n this.io = io;\n this.path = path;\n this.version = version;\n this.pages = new Pages(size);\n }\n\n size(): number {\n return this.pages.length;\n }\n\n private async fetch(runs: Array<[number, number]>): Promise<void> {\n for (const [start, n] of runs) {\n this.pages.fill(start, await this.io.pread(this.path, start, n, this.version));\n }\n }\n\n async read(at: number, length: number): Promise<Uint8Array> {\n await this.fetch(this.pages.missing(at, length));\n return this.pages.read(at, length);\n }\n\n async write(at: number, bytes: Uint8Array): Promise<void> {\n await this.fetch(this.pages.partial(at, bytes.length));\n this.pages.write(at, bytes);\n if (!this.pinned && this.pages.dirtyBytes >= WRITEBACK) await this.flush();\n }\n\n truncate(size: number): void {\n this.pages.truncate(size);\n }\n\n async flush(): Promise<void> {\n if (this.pinned || !this.pages.changed) return;\n const plan = this.pages.plan();\n if (plan.shrink !== undefined) await this.io.truncate(this.path, plan.shrink);\n for (const run of plan.runs) await this.io.pwrite(this.path, run.offset, run.bytes, true);\n if (plan.extend !== undefined) await this.io.truncate(this.path, plan.extend);\n this.version = undefined;\n this.pages.flushed();\n }\n\n async pin(): Promise<void> {\n this.pinned = true;\n this.pages.pin();\n await this.fetch(this.pages.missing(0, this.pages.length));\n }\n}\n", "import type { ChangeView } from '../fs/changes.ts';\nexport const SYNC_FS_OPS = [\n 'read',\n 'write',\n 'exists',\n 'stat',\n 'lstat',\n 'readdir',\n 'readdir-stat',\n 'mkdir',\n 'rm',\n 'rename',\n 'link',\n 'copy',\n 'unlink',\n 'rmdir',\n 'symlink',\n 'readlink',\n 'chmod',\n 'utimes',\n 'lutimes',\n 'statfs',\n 'hold',\n 'create',\n 'mkfifo',\n 'kept',\n 'pread',\n 'pwrite',\n 'append',\n 'truncate',\n 'chown',\n 'lchown',\n 'access',\n 'renames',\n] as const;\n\nexport type AccessKind = 'open' | 'access' | 'eaccess' | 'follow';\n\nexport const HOLD_READ = 4;\nexport const HOLD_WRITE = 8;\nexport const HOLD_CREATED = 16;\n\nexport type SyncFsOp = (typeof SYNC_FS_OPS)[number];\n\nexport interface SyncFsRequest {\n token: string;\n op: SyncFsOp;\n path: string;\n body?: Uint8Array;\n arg2?: string;\n mode?: number;\n atimeMs?: number;\n mtimeMs?: number;\n offset?: number;\n length?: number;\n version?: string;\n handle?: number;\n gen?: number;\n ino?: number;\n uid?: number;\n gid?: number;\n exclusive?: boolean;\n identity?: boolean;\n now?: boolean;\n nofollow?: boolean;\n direct?: boolean;\n opening?: boolean;\n}\n\nexport type SyncFsResult =\n | { ok: true; kind: 'bytes'; bytes: Uint8Array }\n | { ok: true; kind: 'json'; json: unknown }\n | { ok: true; kind: 'void' }\n | { ok: false; errno: string; message: string; direct?: true };\n\nexport const SYNC_FS_REQUEST_TIMEOUT_MS = 25_000;\n\nexport const SYNC_FS_READ_ONLY: ReadonlySet<string> = new Set([\n 'read',\n 'pread',\n 'exists',\n 'stat',\n 'lstat',\n 'readdir',\n 'readdir-stat',\n 'readlink',\n 'statfs',\n 'kept',\n 'access',\n 'renames',\n]);\n\nexport interface SyncFsBridgeStat {\n isFile: boolean;\n isDirectory: boolean;\n isSymbolicLink?: boolean;\n isSocket?: boolean;\n isFifo?: boolean;\n size: number;\n mode?: number;\n mtimeMs?: number;\n atimeMs?: number;\n ctimeMs?: number;\n ino?: number;\n escape?: string;\n nlink?: number;\n dev?: number;\n readonly?: boolean;\n maxFile?: number;\n ranged?: boolean;\n linkable?: boolean;\n version?: string;\n uid?: number;\n gid?: number;\n gen?: number;\n}\n\nexport type SyncFsCreated = SyncFsBridgeStat & { seen?: number };\n\nexport interface SyncFsUsage {\n quota: number;\n usage: number;\n}\n\nexport function parseSyncFsUsage(json: unknown): SyncFsUsage | null {\n const u = json as Partial<SyncFsUsage> | null;\n if (!u || typeof u.quota !== 'number' || typeof u.usage !== 'number') return null;\n return { quota: u.quota, usage: u.usage };\n}\n\nexport type SyncFsFileIo = Pick<\n SyncFsPosixBridge,\n 'readFile' | 'writeFile' | 'pread' | 'pwrite' | 'truncate' | 'append'\n>;\n\nexport type ChownArgs = [\n uid: number | undefined,\n gid: number | undefined,\n follow?: boolean,\n handle?: number,\n];\n\nexport interface SyncFsPosixBridge {\n changes?: ChangeView;\n pinned?(handle: number): SyncFsFileIo;\n kept?(handle: number): boolean;\n keptStat?(handle: number): SyncFsBridgeStat;\n readFile(path: string): Uint8Array;\n writeFile(path: string, bytes: Uint8Array, open?: boolean): void;\n stat(path: string): SyncFsBridgeStat;\n lstat(path: string): SyncFsBridgeStat;\n readdir(path: string): string[];\n exists(path: string): boolean;\n mkdir(path: string, mode?: number): void;\n rm(path: string): void;\n rename(from: string, to: string): number | undefined | void;\n link(from: string, to: string, follow?: boolean): void;\n unlink(path: string): void;\n rmdir(path: string): void;\n symlink(target: string, linkPath: string): void;\n readlink(path: string): string;\n escape?(path: string): string | undefined;\n chmod(path: string, mode: number): void;\n utimes(path: string, atimeMs: number, mtimeMs: number, now?: boolean): void;\n lutimes(path: string, atimeMs: number, mtimeMs: number, now?: boolean): void;\n hold?(\n path: string,\n held: boolean,\n open?: boolean,\n handle?: number,\n want?: number,\n seen?: { gen?: number; nofollow?: boolean; ino?: number }\n ): number | undefined;\n access?(path: string, mode: number, kind?: AccessKind, nofollow?: boolean): void;\n create?(path: string, mode?: number, opening?: boolean): SyncFsCreated | undefined | void;\n mkfifo?(path: string, mode: number): void;\n copy?(from: string, to: string, mode: number, exclusive: boolean): void;\n chown?(path: string, ...rest: ChownArgs): void;\n owners?: boolean;\n links?: boolean;\n readdirStat(path: string): Array<[string, SyncFsBridgeStat | null]>;\n statfs?(path?: string): SyncFsUsage | null;\n pread?(path: string, offset: number, length: number, version?: string): Uint8Array;\n pwrite?(path: string, offset: number, bytes: Uint8Array, transfer?: boolean): void;\n truncate?(path: string, size: number): void;\n append?(path: string, bytes: Uint8Array): number;\n identify?(): void;\n identifyNext?(): void;\n identified?(): SyncFsBridgeStat | null;\n renames?(since: number, held: readonly string[]): SyncFsRenames;\n}\n\nexport interface SyncFsRenames {\n now: number;\n renames: Array<[string, string]>;\n}\n\nexport function syncError(code: string, label: string): Error & { code: string } {\n return Object.assign(new Error(`${code}: ${label}`), { code });\n}\n\nexport function parseSyncFsStat(json: unknown): SyncFsBridgeStat | null {\n const s = json as Partial<SyncFsBridgeStat> | null;\n if (\n !s ||\n typeof s.isFile !== 'boolean' ||\n typeof s.isDirectory !== 'boolean' ||\n typeof s.size !== 'number'\n ) {\n return null;\n }\n return {\n isFile: s.isFile,\n isDirectory: s.isDirectory,\n isSymbolicLink: s.isSymbolicLink,\n ...(s.isSocket === true ? { isSocket: true } : {}),\n ...(s.isFifo === true ? { isFifo: true } : {}),\n size: s.size,\n ...(typeof s.mode === 'number' ? { mode: s.mode } : {}),\n ...(typeof s.mtimeMs === 'number' ? { mtimeMs: s.mtimeMs } : {}),\n ...(typeof s.atimeMs === 'number' ? { atimeMs: s.atimeMs } : {}),\n ...(typeof s.ctimeMs === 'number' ? { ctimeMs: s.ctimeMs } : {}),\n ...(typeof s.ino === 'number' ? { ino: s.ino } : {}),\n ...(typeof s.nlink === 'number' ? { nlink: s.nlink } : {}),\n ...(typeof s.dev === 'number' ? { dev: s.dev } : {}),\n ...(s.readonly === true ? { readonly: true } : {}),\n ...(typeof s.maxFile === 'number' ? { maxFile: s.maxFile } : {}),\n ...(s.ranged === true ? { ranged: true } : {}),\n ...(s.linkable === true ? { linkable: true } : {}),\n ...(typeof s.version === 'string' ? { version: s.version } : {}),\n ...(typeof s.gen === 'number' ? { gen: s.gen } : {}),\n ...(typeof s.uid === 'number' ? { uid: s.uid } : {}),\n ...(typeof s.gid === 'number' ? { gid: s.gid } : {}),\n };\n}\n", "import { type ChangeView, SHARED_TTL_MS } from '../../fs/changes.ts';\n\nexport { SHARED_TTL_MS };\n\nimport { RangedFile, type RangedWatch, watchedChange } from '../../fs/ranged.ts';\nimport type { DeviceAccess, KernelFdKind } from '../../kernel/fd-table.ts';\nimport {\n type ChownArgs,\n type SyncFsBridgeStat,\n type SyncFsCreated,\n type SyncFsFileIo,\n type SyncFsPosixBridge,\n syncError,\n} from '../../realm/sync-fs-wire.ts';\n\nexport class WasiError extends Error {\n readonly code: string;\n constructor(code: string) {\n super(code);\n this.code = code;\n }\n}\n\nexport class FileBuffer {\n private data: Uint8Array | undefined;\n private length = 0;\n private dirty = false;\n\n private whole = false;\n private from = Infinity;\n private to = 0;\n\n private orphaned = false;\n\n opens = 0;\n\n private readonly fs: SyncFsFileIo;\n private where: string;\n private readonly ranged: RangedFile | undefined;\n private readonly watch: RangedWatch | undefined;\n private seen = 0;\n\n maxFile: number | undefined;\n handle: number | undefined;\n moved: ((missing: boolean) => boolean) | undefined;\n bound: SyncFsBridgeStat | undefined;\n\n constructor(\n fs: SyncFsFileIo,\n path: string,\n\n empty: boolean,\n maxFile?: number,\n size?: number,\n version?: string,\n watch?: RangedWatch\n ) {\n this.fs = fs;\n this.where = path;\n this.maxFile = maxFile;\n const { pread, pwrite, truncate } = fs;\n this.watch = watch;\n this.seen = watch?.seen ?? watch?.view.now() ?? 0;\n if (size !== undefined && pread && pwrite && truncate) {\n const io = {\n pread: (_: string, ...rest: [number, number, string?]) =>\n this.retried(() => pread.call(fs, this.where, ...rest)),\n pwrite: (_: string, ...rest: [number, Uint8Array, boolean?]) =>\n this.retried(() => pwrite.call(fs, this.where, ...rest)),\n truncate: (_: string, size: number) =>\n this.retried(() => truncate.call(fs, this.where, size)),\n };\n this.ranged = new RangedFile(io, path, size, version, watch);\n if (empty) this.truncate(0);\n } else if (empty) {\n this.data = new Uint8Array(0);\n this.dirty = true;\n this.whole = true;\n }\n }\n\n get path(): string {\n return this.where;\n }\n\n private retried<T>(op: () => T): T {\n try {\n return op();\n } catch (err) {\n if ((err as { code?: unknown }).code !== 'ENOENT' || !this.moved?.(true)) throw err;\n return op();\n }\n }\n\n set path(path: string) {\n this.where = path;\n if (this.ranged) this.ranged.path = path;\n }\n\n get isRanged(): boolean {\n return this.ranged !== undefined;\n }\n\n get pin(): string | undefined {\n return this.ranged?.pinnedVersion;\n }\n\n keep(): void {\n if (this.ranged) this.ranged.pin();\n else this.load();\n }\n\n prefetch(): void {\n if (this.ranged) this.ranged.prefetch();\n else this.load();\n }\n\n load(): Uint8Array {\n const view = this.watch?.view;\n if (this.data && view && this.watch && !this.dirty) {\n const { now, changed } = watchedChange(this.watch, this.seen, this.path);\n this.seen = now;\n if (changed) this.data = undefined;\n }\n if (!this.data) {\n this.seen = view?.now() ?? 0;\n this.data = this.retried(() => this.fs.readFile(this.path));\n this.length = this.data.length;\n }\n return this.data;\n }\n\n size(): number {\n if (this.ranged) return this.ranged.size();\n this.load();\n return this.length;\n }\n\n pread(max: number, at: number): Uint8Array {\n if (this.ranged) return this.ranged.read(at, max);\n const bytes = this.load();\n const n = Math.max(0, Math.min(max, this.length - at));\n return bytes.subarray(at, at + n);\n }\n\n fits(end: number): void {\n if (this.maxFile !== undefined && end > this.maxFile) throw new WasiError('EFBIG');\n }\n\n pwrite(bytes: Uint8Array, at: number): number {\n if (bytes.length === 0) return 0;\n const end = at + bytes.length;\n this.fits(end);\n this.dirty = true;\n if (this.ranged) {\n this.ranged.write(at, bytes);\n return bytes.length;\n }\n this.load();\n this.ensure(end);\n const buf = this.data as Uint8Array;\n this.from = Math.min(this.from, at, this.length);\n this.to = Math.max(this.to, end);\n if (at > this.length) buf.fill(0, this.length, at);\n buf.set(bytes, at);\n this.length = Math.max(this.length, end);\n return bytes.length;\n }\n\n append(bytes: Uint8Array): number | undefined {\n const { append } = this.fs;\n if (!append || this.orphaned) return undefined;\n this.moved?.(false);\n this.flush();\n const end = this.retried(() => append.call(this.fs, this.path, bytes));\n if (!this.ranged) {\n this.data = undefined;\n this.length = 0;\n }\n return end;\n }\n\n truncate(size: number): void {\n this.fits(size);\n this.dirty = true;\n if (this.ranged) {\n this.ranged.truncate(size);\n return;\n }\n this.load();\n this.ensure(size);\n this.whole = true;\n if (size > this.length) (this.data as Uint8Array).fill(0, this.length, size);\n this.length = size;\n }\n\n private ensure(need: number): void {\n const cur = this.data as Uint8Array;\n if (cur.length >= need) return;\n const grown = new Uint8Array(Math.max(need, cur.length * 2, 4096));\n grown.set(cur.subarray(0, this.length));\n this.data = grown;\n }\n\n orphan(): void {\n this.orphaned = true;\n this.ranged?.pin();\n }\n\n reread(): void {\n if (this.dirty || this.orphaned) return;\n if (this.ranged) this.ranged.reread();\n else this.data = undefined;\n }\n\n isOrphan(): boolean {\n return this.orphaned;\n }\n\n isDirty(): boolean {\n return this.dirty;\n }\n\n contents(): Uint8Array {\n if (this.ranged) return this.ranged.read(0, this.ranged.size());\n return this.load().slice(0, this.length);\n }\n\n flush(): void {\n if (this.orphaned || !this.dirty) return;\n this.moved?.(false);\n if (this.ranged) this.ranged.flush();\n else if (!this.data) return;\n else if (this.whole || !this.fs.pwrite) {\n const whole = this.data.slice(0, this.length);\n this.retried(() => this.fs.writeFile(this.path, whole, true));\n } else {\n const { pwrite } = this.fs;\n const run = this.data.slice(this.from, this.to);\n this.retried(() => pwrite.call(this.fs, this.path, this.from, run, true));\n }\n this.dirty = false;\n this.whole = false;\n this.from = Infinity;\n this.to = 0;\n }\n}\n\nexport class LocalFile {\n offset = 0;\n refs = 1;\n ino: number | undefined;\n\n readonly buffer: FileBuffer;\n readonly readable: boolean;\n readonly writable: boolean;\n append: boolean;\n constructor(buffer: FileBuffer, readable: boolean, writable: boolean, append: boolean) {\n this.buffer = buffer;\n this.readable = readable;\n this.writable = writable;\n this.append = append;\n }\n\n get path(): string {\n return this.buffer.path;\n }\n\n size(): number {\n return this.buffer.size();\n }\n\n pread(max: number, at: number): Uint8Array {\n return this.buffer.pread(max, at);\n }\n\n read(max: number): Uint8Array {\n const out = this.buffer.pread(max, this.offset);\n this.offset += out.length;\n return out;\n }\n\n pwrite(bytes: Uint8Array, at: number): number {\n return this.buffer.pwrite(bytes, at);\n }\n\n write(bytes: Uint8Array): number {\n if (this.append && bytes.length > 0) {\n this.buffer.fits(this.buffer.size() + bytes.length);\n const end = this.buffer.append(bytes);\n if (end !== undefined) {\n this.offset = end;\n return bytes.length;\n }\n }\n if (this.append) this.offset = this.buffer.size();\n const n = this.buffer.pwrite(bytes, this.offset);\n this.offset += n;\n return n;\n }\n\n truncate(size: number): void {\n this.buffer.truncate(size);\n }\n\n flush(): void {\n this.buffer.flush();\n }\n}\n\nexport interface DirListing {\n names: string[];\n stats: Map<string, SyncFsBridgeStat | null>;\n}\n\nexport type WasiEntry =\n | {\n type: 'kernel';\n\n kind?: KernelFdKind;\n dgram?: boolean;\n nonblock: boolean;\n append: boolean;\n path?: string;\n ino?: number;\n }\n | { type: 'file'; file: LocalFile }\n | {\n type: 'dir';\n path: string;\n\n preopen?: string;\n twin?: number;\n listing?: DirListing;\n }\n | {\n type: 'device';\n device: 'null' | 'zero' | 'full' | 'urandom';\n\n access?: DeviceAccess;\n };\n\nexport function normalize(path: string): string {\n const out: string[] = [];\n for (const seg of path.split('/')) {\n if (seg === '' || seg === '.') continue;\n if (seg === '..') out.pop();\n else out.push(seg);\n }\n return `/${out.join('/')}`;\n}\n\nconst MAX_LINKS = 40;\n\nexport function physical(\n fs: Pick<SyncFsPosixBridge, 'lstat' | 'readlink' | 'access' | 'links'>,\n path: string\n): string {\n let done: string[] = [];\n let todo = path.split('/').filter((part) => part !== '' && part !== '.');\n let hops = 0;\n while (todo.length > 0) {\n const part = todo.shift() as string;\n if (part === '..') {\n done.pop();\n continue;\n }\n if (!todo.includes('..')) {\n done.push(part);\n continue;\n }\n const at = `/${[...done, part].join('/')}`;\n const st = fs.lstat(at);\n if (st.isSymbolicLink) {\n if (++hops > MAX_LINKS) throw new WasiError('ELOOP');\n if (fs.links) fs.access?.(at, 0, 'follow', true);\n const target = fs.readlink(at);\n if (target.startsWith('/')) done = [];\n todo = [...target.split('/').filter((p) => p !== '' && p !== '.'), ...todo];\n } else if (!st.isDirectory) {\n throw new WasiError('ENOTDIR');\n } else {\n done.push(part);\n }\n }\n return `/${done.join('/')}`;\n}\n\nexport function realOf(fs: Pick<SyncFsPosixBridge, 'lstat' | 'readlink'>, path: string): string {\n let done: string[] = [];\n let todo = path.split('/').filter((part) => part !== '' && part !== '.');\n let hops = 0;\n while (todo.length > 0) {\n const part = todo.shift() as string;\n if (part === '..') {\n done.pop();\n continue;\n }\n const at = `/${[...done, part].join('/')}`;\n if (!fs.lstat(at).isSymbolicLink) {\n done.push(part);\n continue;\n }\n if (++hops > MAX_LINKS) throw new WasiError('ELOOP');\n const target = fs.readlink(at);\n if (target.startsWith('/')) done = [];\n todo = [...target.split('/').filter((p) => p !== '' && p !== '.'), ...todo];\n }\n return `/${done.join('/')}`;\n}\n\nexport function resolveUnder(dir: string, path: string): string {\n return normalize(path.startsWith('/') ? path : `${dir}/${path}`);\n}\n\nexport function pathInode(path: string): bigint {\n let h = 0xcbf29ce484222325n;\n for (let i = 0; i < path.length; i++) {\n h ^= BigInt(path.charCodeAt(i));\n h = (h * 0x100000001b3n) & 0xffffffffffffffffn;\n }\n return h;\n}\n\nexport const MISS_TTL_MS = 20;\nconst CACHE_CAP = 8192;\n\ninterface Miss {\n error: Error;\n until: number;\n gen?: number;\n}\n\nexport const FS_GEN = 4;\nexport const CRED_GEN = 5;\nexport const UMASK = 6;\nconst RING = 8;\nconst RING_SIZE = 64;\nconst SLOT = 3;\nexport const FD_RING = RING + RING_SIZE * SLOT;\nexport const FD_RING_SIZE = 64;\nexport const SHARED_IDS_BYTES = (FD_RING + FD_RING_SIZE * 2) * 4;\n\ntype Cached = SyncFsBridgeStat | Miss;\n\nfunction inoKey(st: Cached): number {\n return 'ino' in st && typeof st.ino === 'number' ? (st.ino % 4294967296) | 0 : 0;\n}\n\nfunction pathHash(path: string): number {\n let h = 0x811c9dc5;\n for (let i = 0; i < path.length; i++) h = Math.imul(h ^ path.charCodeAt(i), 0x01000193);\n return h === 0 ? 1 : h;\n}\n\nclass StatCache {\n readonly stats = new Map<string, Cached>();\n readonly lstats = new Map<string, Cached>();\n private readonly byHash = new Map<number, Set<string>>();\n private readonly byIno = new Map<number, Set<string>>();\n private readonly missed = new Map<Map<string, Cached>, Set<string>>();\n private readonly shared: Int32Array | undefined;\n private seen: number;\n constructor(shared: Int32Array | undefined) {\n this.shared = shared;\n this.seen = shared ? Atomics.load(shared, FS_GEN) : 0;\n }\n\n put(map: Map<string, Cached>, path: string, entry: Cached): void {\n if (this.stats.size + this.lstats.size + this.byHash.size + this.byIno.size >= CACHE_CAP)\n this.clear();\n map.set(path, entry);\n if ('until' in entry) {\n const paths = this.missed.get(map) ?? new Set<string>();\n paths.add(path);\n this.missed.set(map, paths);\n }\n if (!this.shared) return;\n index(this.byHash, pathHash(path), path);\n const ino = inoKey(entry);\n if (ino !== 0) index(this.byIno, ino, path);\n }\n\n fresh(): void {\n if (!this.shared) return;\n const now = Atomics.load(this.shared, FS_GEN);\n if (now === this.seen) return;\n this.replay(now);\n this.seen = now;\n }\n\n changed(path: string | undefined, ino = 0): void {\n const key = (ino % 4294967296) | 0;\n if (this.shared) {\n const g = this.publish(this.shared, path === undefined ? 0 : pathHash(path), key);\n this.replay(g - 1);\n this.seen = g;\n if (path === undefined) this.clear();\n else this.drop(pathHash(path), key);\n }\n if (path === undefined) return;\n this.stats.delete(path);\n this.lstats.delete(path);\n }\n\n mutated(paths: readonly string[], ino = 0): void {\n const key = (ino % 4294967296) | 0;\n if (paths.length === 0 || !this.shared) this.clear();\n if (!this.shared) return;\n for (const [i, hash] of (paths.length > 0 ? paths.map(pathHash) : [0]).entries()) {\n const g = this.publish(this.shared, hash, i === 0 ? key : 0);\n if (paths.length > 0) this.replay(g - 1);\n this.seen = g;\n }\n if (paths.length === 0) return;\n for (const [i, path] of paths.entries()) {\n this.stats.delete(path);\n this.lstats.delete(path);\n this.drop(pathHash(path), i === 0 ? key : 0);\n }\n this.forgetMisses();\n }\n\n inoOf(path: string, look: () => SyncFsBridgeStat): number {\n if (!this.shared) return 0;\n this.fresh();\n const hit = this.stats.get(path);\n if (hit && 'ino' in hit && typeof hit.ino === 'number') return hit.ino;\n try {\n return look().ino ?? 0;\n } catch {\n return 0;\n }\n }\n\n private publish(shared: Int32Array, hash: number, ino: number): number {\n const g = Atomics.add(shared, FS_GEN, 1) + 1;\n const at = RING + (g % RING_SIZE) * SLOT;\n Atomics.store(shared, at, 0);\n Atomics.store(shared, at + 1, hash);\n Atomics.store(shared, at + 2, ino);\n Atomics.store(shared, at, g);\n return g;\n }\n\n private replay(upTo: number): void {\n const shared = this.shared as Int32Array;\n const missed: Array<[number, number]> = [];\n for (let g = this.seen + 1; g <= upTo && upTo - this.seen <= RING_SIZE; g++) {\n const at = RING + (g % RING_SIZE) * SLOT;\n const tag = Atomics.load(shared, at);\n const hash = Atomics.load(shared, at + 1);\n const ino = Atomics.load(shared, at + 2);\n if (tag !== g || hash === 0 || Atomics.load(shared, at) !== g) break;\n missed.push([hash, ino]);\n }\n if (missed.length < upTo - this.seen) this.clear();\n else for (const [hash, ino] of missed) this.drop(hash, ino);\n }\n\n private drop(hash: number, ino: number): void {\n const paths = [\n ...(this.byHash.get(hash) ?? []),\n ...(ino === 0 ? [] : (this.byIno.get(ino) ?? [])),\n ];\n for (const path of paths) {\n this.stats.delete(path);\n this.lstats.delete(path);\n }\n this.byHash.delete(hash);\n if (ino !== 0) this.byIno.delete(ino);\n }\n\n private forgetMisses(): void {\n for (const [map, paths] of this.missed) {\n for (const path of paths) if ('until' in (map.get(path) ?? {})) map.delete(path);\n }\n this.missed.clear();\n }\n\n private clear(): void {\n this.missed.clear();\n this.stats.clear();\n this.lstats.clear();\n this.byHash.clear();\n this.byIno.clear();\n }\n}\n\nfunction index(map: Map<number, Set<string>>, key: number, path: string): void {\n const paths = map.get(key) ?? new Set<string>();\n paths.add(path);\n map.set(key, paths);\n}\n\nconst SEEN_CAP = 4096;\n\nclass SeenAt {\n private readonly view: ChangeView | undefined;\n private readonly lstats: Map<string, Cached>;\n private readonly links = new Map<string, number>();\n private readonly stats = new Map<string, number>();\n constructor(view: ChangeView | undefined, lstats: Map<string, Cached>) {\n this.view = view;\n this.lstats = lstats;\n }\n\n private of(map: Map<string, Cached>): Map<string, number> {\n return map === this.lstats ? this.links : this.stats;\n }\n\n lstat(path: string): number | undefined {\n return this.links.get(path);\n }\n\n saw(map: Map<string, Cached>, path: string, gen: number): void {\n const seen = this.of(map);\n if (seen.size >= SEEN_CAP) seen.clear();\n seen.set(path, gen);\n }\n\n changed(map: Map<string, Cached>, path: string): boolean {\n if (this.view === undefined) return false;\n const seen = this.of(map);\n const gen = seen.get(path);\n if (gen === undefined) return true;\n const since = this.view.changedSince(gen, path);\n if (!since.changed) seen.set(path, since.now);\n return since.changed;\n }\n}\n\nfunction goneAbove(\n maps: Array<Map<string, Cached>>,\n live: (miss: Miss, path: string) => boolean,\n path: string\n): Miss | undefined {\n for (let at = path.lastIndexOf('/'); at > 0; at = path.lastIndexOf('/', at - 1)) {\n const up = path.slice(0, at);\n for (const map of maps) {\n const hit = map.get(up);\n const code = hit && 'until' in hit ? (hit.error as { code?: string }).code : undefined;\n if (hit && 'until' in hit && code === 'ENOENT' && live(hit, up)) return hit;\n }\n }\n return undefined;\n}\n\nconst remember =\n (cache: StatCache, seen: SeenAt, blind: boolean, fill: (entry: object) => void) =>\n (path: string, made: SyncFsCreated | undefined | void): SyncFsCreated | undefined | void => {\n if (!made || blind) return made;\n const { seen: at, ...st } = made;\n fill(st);\n cache.put(cache.stats, path, st);\n if (at !== undefined) seen.saw(cache.stats, path, at);\n return made;\n };\n\nfunction copying(\n bridge: SyncFsPosixBridge,\n mutating: <T>(op: () => T, ...paths: string[]) => T,\n entry: (p: string) => string[]\n): Pick<SyncFsPosixBridge, 'copy'> {\n const { copy } = bridge;\n if (!copy) return {};\n return {\n copy: (from, to, mode, exclusive) =>\n mutating(() => copy.call(bridge, from, to, mode, exclusive), ...entry(to)),\n };\n}\n\nclass Fills {\n private readonly at = new WeakMap<object, number>();\n private readonly view: ChangeView | undefined;\n private readonly now: () => number;\n constructor(view: ChangeView | undefined, now: () => number) {\n this.view = view;\n this.now = now;\n }\n\n set(entry: object, at = this.now()): void {\n this.at.set(entry, at);\n }\n\n young(entry: object): boolean {\n if (!this.view?.foreign()) return true;\n return this.now() - (this.at.get(entry) ?? Number.NEGATIVE_INFINITY) < SHARED_TTL_MS;\n }\n}\n\nfunction listed(\n { cache, seen, filled }: { cache: StatCache; seen: SeenAt; filled: Fills },\n p: string,\n list: ReturnType<SyncFsPosixBridge['readdirStat']>,\n gen: number | undefined,\n asked: number\n): void {\n const base = p === '/' ? '' : p;\n for (const [name, st] of list) {\n if (!st) continue;\n filled.set(st, asked);\n const at = `${base}/${name}`;\n cache.put(cache.lstats, at, st);\n if (gen !== undefined) seen.saw(cache.lstats, at, gen);\n if (st.isSymbolicLink) continue;\n cache.put(cache.stats, at, st);\n if (gen !== undefined) seen.saw(cache.stats, at, gen);\n }\n}\n\nfunction fetched(\n {\n view,\n now,\n seen,\n filled,\n cache,\n }: {\n view: ChangeView | undefined;\n now: () => number;\n seen: SeenAt;\n filled: Fills;\n cache: StatCache;\n },\n map: Map<string, Cached>,\n path: string,\n get: () => SyncFsBridgeStat\n): Cached {\n const gen = view?.now();\n const asked = now();\n let hit: Cached;\n try {\n hit = get();\n if (gen !== undefined) seen.saw(map, path, gen);\n } catch (e) {\n hit = { error: e as Error, until: asked + MISS_TTL_MS, ...(gen !== undefined ? { gen } : {}) };\n }\n filled.set(hit, asked);\n cache.put(map, path, hit);\n return hit;\n}\n\nexport function cachingBridge(\n bridge: SyncFsPosixBridge,\n now: () => number = () => performance.now(),\n shared?: Int32Array\n): SyncFsPosixBridge & {\n invalidate(): void;\n touched(path?: string, ino?: number): void;\n threaded(): void;\n} {\n const blind = shared !== undefined && shared.length * 4 < SHARED_IDS_BYTES;\n const cache = new StatCache(blind ? undefined : shared);\n const { stats, lstats } = cache;\n const view = bridge.changes;\n const filled = new Fills(view, now);\n const young = (entry: object) => filled.young(entry);\n const live = (miss: Miss, path: string) =>\n miss.until > now() &&\n young(miss) &&\n (view === undefined || miss.gen === undefined || !view.changedSince(miss.gen, path).changed);\n const seen = new SeenAt(view, lstats);\n const kept = remember(cache, seen, blind, (entry) => filled.set(entry));\n const gone = (path: string) => goneAbove([lstats, stats], live, path);\n const usable = (map: typeof stats, path: string): Cached | undefined => {\n const hit = map.get(path);\n if (hit === undefined) return undefined;\n if ('until' in hit) return live(hit, path) ? hit : undefined;\n return young(hit) && !seen.changed(map, path) ? hit : undefined;\n };\n const cached = (map: typeof stats, path: string, get: () => SyncFsBridgeStat) => {\n if (blind) return get();\n cache.fresh();\n let hit = usable(map, path);\n if (hit === undefined) {\n const missing = gone(path);\n if (missing) throw missing.error;\n hit = fetched({ view, now, seen, filled, cache }, map, path, get);\n }\n if ('until' in hit) throw hit.error;\n return hit;\n };\n const invalidate = () => cache.mutated([]);\n const touched = (path?: string, ino?: number) => cache.changed(path, ino);\n\n const { chown } = bridge;\n const mutating = <T>(op: () => T, ...paths: string[]): T => {\n try {\n return op();\n } finally {\n cache.mutated(paths);\n }\n };\n let exact = false;\n const threaded = () => {\n if (blind || shared === undefined || !bridge.identify) return;\n exact = true;\n bridge.identify();\n };\n const identified = <T>(p: string, op: () => T, also: string[]): T => {\n try {\n return op();\n } finally {\n const st = bridge.identified?.() ?? null;\n if (st) cache.mutated([p, ...also], st.ino);\n else cache.mutated([]);\n }\n };\n const relabeling = <T>(p: string, op: () => T): T => {\n if (exact || !bridge.identifyNext) return rewriting(p, op);\n bridge.identifyNext();\n try {\n return op();\n } finally {\n const st = bridge.identified?.() ?? null;\n if (st) cache.mutated([p], st.ino);\n else cache.mutated([]);\n }\n };\n const rewriting = <T>(p: string, op: () => T, ...also: string[]): T => {\n if (exact) return identified(p, op, also);\n const ino = cache.inoOf(p, () => bridge.stat(p));\n try {\n return op();\n } finally {\n cache.mutated([p, ...also], ino);\n }\n };\n const entry = (p: string) => [p, p.slice(0, p.lastIndexOf('/')) || '/'];\n return {\n ...(bridge.changes ? { changes: bridge.changes } : {}),\n ...(bridge.renames ? { renames: bridge.renames.bind(bridge) } : {}),\n readFile: (p) => bridge.readFile(p),\n readdir: (p) => bridge.readdir(p),\n\n readdirStat: (p: string) => {\n const gen = view?.now();\n const asked = now();\n const list = bridge.readdirStat(p);\n if (!blind) listed({ cache, seen, filled }, p, list, gen, asked);\n return list;\n },\n readlink: (p) => {\n const known = blind ? undefined : (cache.fresh(), lstats.get(p));\n const gen = seen.lstat(p);\n const current = view !== undefined && gen !== undefined && !view.changedSince(gen, p).changed;\n if (known && current && !('until' in known) && young(known) && !known.isSymbolicLink) {\n throw syncError('EINVAL', `'${p}' is not a symbolic link`);\n }\n return bridge.readlink(p);\n },\n stat: (p) => cached(stats, p, () => bridge.stat(p)),\n lstat: (p) => cached(lstats, p, () => bridge.lstat(p)),\n exists: (p) => {\n try {\n cached(stats, p, () => bridge.stat(p));\n return true;\n } catch {\n return false;\n }\n },\n writeFile: (p, bytes, open) =>\n rewriting(p, () => bridge.writeFile(p, bytes, open), ...entry(p).slice(1)),\n mkdir: (p) => mutating(() => bridge.mkdir(p), ...entry(p)),\n rm: (p) => mutating(() => bridge.rm(p)),\n rename: (from, to) => mutating(() => bridge.rename(from, to)),\n link: (from, to, follow) => mutating(() => bridge.link(from, to, follow)),\n unlink: (p) => mutating(() => bridge.unlink(p)),\n rmdir: (p) => mutating(() => bridge.rmdir(p)),\n symlink: (target, link) => mutating(() => bridge.symlink(target, link), ...entry(link)),\n chmod: (p, mode) => relabeling(p, () => bridge.chmod(p, mode)),\n utimes: (p, a, m, now) => relabeling(p, () => bridge.utimes(p, a, m, now)),\n lutimes: (p, a, m, now) => mutating(() => bridge.lutimes(p, a, m, now)),\n ...(bridge.hold ? { hold: bridge.hold.bind(bridge) } : {}),\n ...(bridge.access ? { access: bridge.access.bind(bridge) } : {}),\n ...(bridge.kept ? { kept: bridge.kept.bind(bridge) } : {}),\n ...(bridge.keptStat ? { keptStat: bridge.keptStat.bind(bridge) } : {}),\n ...(bridge.pinned ? { pinned: (handle: number) => pinnedIo(bridge, handle, rewriting) } : {}),\n ...(bridge.create\n ? {\n create: (p: string, mode?: number, opening?: boolean) =>\n kept(\n p,\n mutating(() => bridge.create?.(p, mode, opening), ...entry(p))\n ),\n }\n : {}),\n ...(bridge.mkfifo\n ? {\n mkfifo: (p: string, mode: number) =>\n mutating(() => bridge.mkfifo?.(p, mode), ...entry(p)),\n }\n : {}),\n ...copying(bridge, mutating, entry),\n ...(chown\n ? {\n chown: (p: string, ...rest: ChownArgs) =>\n relabeling(p, () => chown.call(bridge, p, ...rest)),\n }\n : {}),\n ...(bridge.pread && bridge.pwrite && bridge.truncate\n ? {\n pread: bridge.pread.bind(bridge),\n pwrite: (p: string, at: number, bytes: Uint8Array, transfer?: boolean) =>\n rewriting(p, () => bridge.pwrite?.(p, at, bytes, transfer)),\n truncate: (p: string, size: number) => rewriting(p, () => bridge.truncate?.(p, size)),\n }\n : {}),\n ...(bridge.append\n ? {\n append: (p: string, bytes: Uint8Array) =>\n rewriting(p, () => (bridge.append as NonNullable<typeof bridge.append>)(p, bytes)),\n }\n : {}),\n ...(bridge.owners ? { owners: true } : {}),\n ...(bridge.links ? { links: true } : {}),\n invalidate,\n touched,\n threaded,\n };\n}\n\nfunction pinnedIo(\n bridge: SyncFsPosixBridge,\n handle: number,\n rewriting: <T>(p: string, op: () => T) => T\n): SyncFsFileIo {\n const io = (bridge.pinned as NonNullable<SyncFsPosixBridge['pinned']>)(handle);\n const { pread, pwrite, truncate } = io as Required<SyncFsFileIo>;\n return {\n readFile: (p) => io.readFile(p),\n writeFile: (p, bytes, open) => rewriting(p, () => io.writeFile(p, bytes, open)),\n pread: (p, at, n, version) => pread(p, at, n, version),\n pwrite: (p, at, bytes, transfer) => rewriting(p, () => pwrite(p, at, bytes, transfer)),\n truncate: (p, size) => rewriting(p, () => truncate(p, size)),\n ...(io.append\n ? {\n append: (p: string, bytes: Uint8Array) =>\n rewriting(p, () => (io.append as NonNullable<typeof io.append>)(p, bytes)),\n }\n : {}),\n };\n}\n", "import type { WasmSyscall } from '../kernel/process.ts';\nimport type { SyncFsRequest, SyncFsResult } from './sync-fs-wire.ts';\n\nexport const SAB_HEADER_I32 = 18;\nexport const SAB_CLOCK_OFFSET = SAB_HEADER_I32 * 4;\nexport const SAB_CLOCK_I64 = 3;\nexport const SAB_HEADER_BYTES = SAB_CLOCK_OFFSET + SAB_CLOCK_I64 * 8;\n\nexport const SAB_I_STATE = 0;\nexport const SAB_I_SEQ = 1;\nexport const SAB_I_STATUS = 2;\nexport const SAB_I_TOTAL = 3;\nexport const SAB_I_CHUNK = 4;\nexport const SAB_I_OFFSET = 5;\nexport const SAB_I_REQ = 6;\nexport const SAB_I_PUB = 7;\n\nexport const SAB_I_SIGNALS = 8;\n\nexport const SAB_I_TIMERS = 9;\n\nexport const SAB_I_MEMORY = 10;\n\nexport const SAB_I_TOTAL_HI = 11;\n\nexport const SAB_I_OFFSET_HI = 12;\n\nexport const SAB_I_KILLED = 13;\n\nexport const SAB_I_ASYNC = 14;\n\nexport const SAB_I_STOP = 15;\n\nexport const SAB_I_BLOCKED = 16;\n\nexport const SAB_I_BLOCKED_HI = 17;\n\nexport type BlockedMask = readonly [number, number];\n\nexport function loadBlocked(header: Int32Array): BlockedMask {\n return [Atomics.load(header, SAB_I_BLOCKED), Atomics.load(header, SAB_I_BLOCKED_HI)];\n}\n\nexport function storeBlocked(header: Int32Array, [low, high]: BlockedMask): void {\n Atomics.store(header, SAB_I_BLOCKED_HI, high);\n Atomics.store(header, SAB_I_BLOCKED, low);\n}\n\nexport const anyBlocked = (mask: BlockedMask | undefined): boolean =>\n mask !== undefined && (mask[0] !== 0 || mask[1] !== 0);\n\nconst U32 = 2 ** 32;\n\nexport function storeU53(header: Int32Array, lo: number, hi: number, value: number): void {\n Atomics.store(header, hi, Math.floor(value / U32));\n Atomics.store(header, lo, (value % U32) | 0);\n}\n\nexport function loadU53(header: Int32Array, lo: number, hi: number): number {\n return (Atomics.load(header, lo) >>> 0) + Atomics.load(header, hi) * U32;\n}\n\nexport function publishMemory(sab: SharedArrayBuffer, bytes: number): void {\n if (bytes > 0)\n Atomics.store(new Int32Array(sab, 0, SAB_HEADER_I32), SAB_I_MEMORY, Math.ceil(bytes / 65536));\n}\n\nexport const SAB_STATE_IDLE = 0;\nexport const SAB_STATE_PENDING = 1;\nexport const SAB_STATE_READY = 2;\n\nexport const SAB_STATUS_BYTES = 1;\nexport const SAB_STATUS_JSON = 2;\nexport const SAB_STATUS_VOID = 3;\nexport const SAB_STATUS_ERRNO = 4;\n\nexport const SAB_DEFAULT_WINDOW_BYTES = 1024 * 1024;\n\nexport const SAB_MIN_BYTES = SAB_HEADER_BYTES + 4096;\n\nexport const SYNC_SAB_REQ_MSG = 'sync-sab-req';\n\nexport const SYNC_SAB_NEXT_MSG = 'sync-sab-next';\n\nexport type SyncSabRequestBody = Omit<SyncFsRequest, 'token'> | WasmSyscall;\n\nexport interface SyncSabReqMsg {\n type: typeof SYNC_SAB_REQ_MSG;\n id: number;\n req: SyncSabRequestBody;\n}\nexport interface SyncSabNextMsg {\n type: typeof SYNC_SAB_NEXT_MSG;\n id: number;\n offset: number;\n}\n\nexport interface SabEncodedResult {\n status: number;\n payload: Uint8Array;\n}\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\n\nexport function encodeSabResult(result: SyncFsResult): SabEncodedResult {\n if (!result.ok) {\n return {\n status: SAB_STATUS_ERRNO,\n payload: encoder.encode(\n JSON.stringify({\n errno: result.errno,\n message: result.message,\n ...(result.direct ? { direct: true } : {}),\n })\n ),\n };\n }\n switch (result.kind) {\n case 'bytes':\n return { status: SAB_STATUS_BYTES, payload: result.bytes };\n case 'json':\n return { status: SAB_STATUS_JSON, payload: encoder.encode(JSON.stringify(result.json)) };\n default:\n return { status: SAB_STATUS_VOID, payload: new Uint8Array(0) };\n }\n}\n\nexport function decodeSabResult(status: number, payload: Uint8Array): SyncFsResult {\n switch (status) {\n case SAB_STATUS_BYTES:\n return { ok: true, kind: 'bytes', bytes: payload };\n case SAB_STATUS_VOID:\n return { ok: true, kind: 'void' };\n case SAB_STATUS_JSON: {\n try {\n return { ok: true, kind: 'json', json: JSON.parse(decoder.decode(payload)) };\n } catch {\n return { ok: false, errno: 'EIO', message: 'sync-sab: malformed json payload' };\n }\n }\n case SAB_STATUS_ERRNO: {\n try {\n const parsed = JSON.parse(decoder.decode(payload)) as {\n errno?: unknown;\n message?: unknown;\n direct?: unknown;\n };\n const errno =\n typeof parsed.errno === 'string' && /^E[A-Z]+$|^EAI_[A-Z]+$/.test(parsed.errno)\n ? parsed.errno\n : 'EIO';\n const message = String(parsed.message ?? errno);\n return parsed.direct === true\n ? { ok: false, errno, message, direct: true }\n : { ok: false, errno, message };\n } catch {\n return { ok: false, errno: 'EIO', message: 'sync-sab: malformed errno payload' };\n }\n }\n default:\n return { ok: false, errno: 'EIO', message: `sync-sab: unknown status ${status}` };\n }\n}\n\nexport interface SabViews {\n header: Int32Array;\n window: Uint8Array;\n}\n\nexport function sabViews(sab: SharedArrayBuffer): SabViews {\n if (sab.byteLength < SAB_MIN_BYTES) {\n throw new Error(`sync-sab: buffer too small (${sab.byteLength} < ${SAB_MIN_BYTES})`);\n }\n return {\n header: new Int32Array(sab, 0, SAB_HEADER_I32),\n window: new Uint8Array(sab, SAB_HEADER_BYTES),\n };\n}\n", "import {\n WASM_DEFAULT_THREADS,\n WASM_MAX_THREADS,\n WASM_THREAD_EXIT,\n WASM_THREAD_SPAWN,\n} from '../../kernel/protocol.ts';\nimport type { SabPostLike } from '../../realm/sync-sab-bridge.ts';\nimport { anyBlocked, type BlockedMask } from '../../realm/sync-sab-wire.ts';\nimport { SHARED_IDS_BYTES } from './wasi-files.ts';\n\nconst LAST_TID = 0;\nconst RUNNING = 1;\n\nexport const MAIN_TID = 1;\n\nexport class ThreadExit extends Error {\n constructor() {\n super('thread exit');\n }\n}\n\nexport function threadCap(env: Readonly<Record<string, string>>): number {\n const asked = Number.parseInt(env.SLICC_WASM_THREADS ?? '', 10);\n return asked >= 1 ? Math.min(asked, WASM_MAX_THREADS) : WASM_DEFAULT_THREADS;\n}\n\nexport class WasiThreads {\n readonly ids: Int32Array;\n\n beforeSpawn: (() => void) | undefined;\n\n modules: (() => Record<string, WebAssembly.Module>) | undefined;\n\n received: Readonly<Record<string, WebAssembly.Module>> | undefined;\n\n blocked: (() => BlockedMask) | undefined;\n\n private readonly port: SabPostLike;\n private readonly memory: WebAssembly.Memory;\n private readonly cap: number;\n readonly tid: number;\n constructor(\n port: SabPostLike,\n memory: WebAssembly.Memory,\n cap: number,\n\n tid: number,\n ids?: SharedArrayBuffer\n ) {\n this.port = port;\n this.memory = memory;\n this.cap = cap;\n this.tid = tid;\n this.ids = new Int32Array(ids ?? new SharedArrayBuffer(SHARED_IDS_BYTES));\n if (!ids) Atomics.store(this.ids, LAST_TID, MAIN_TID);\n }\n\n spawn(arg: number): number {\n if (Atomics.add(this.ids, RUNNING, 1) + 1 >= this.cap) {\n Atomics.sub(this.ids, RUNNING, 1);\n return -1;\n }\n this.beforeSpawn?.();\n const tid = Atomics.add(this.ids, LAST_TID, 1) + 1;\n const modules = this.modules?.();\n const blocked = this.blocked?.();\n this.port.postMessage({\n type: WASM_THREAD_SPAWN,\n thread: {\n tid,\n arg,\n memory: this.memory,\n ids: this.ids.buffer as SharedArrayBuffer,\n ...(modules ? { modules } : {}),\n ...(anyBlocked(blocked) ? { blocked } : {}),\n },\n });\n return tid;\n }\n\n exited(): void {\n Atomics.sub(this.ids, RUNNING, 1);\n this.port.postMessage({ type: WASM_THREAD_EXIT });\n }\n\n known(tid: number): boolean {\n return tid >= MAIN_TID && tid <= Atomics.load(this.ids, LAST_TID);\n }\n\n parallelism(): number {\n const cores = (globalThis as { navigator?: { hardwareConcurrency?: number } }).navigator\n ?.hardwareConcurrency;\n return Math.max(1, Math.min(this.cap, cores ?? this.cap));\n }\n}\n", "const MAX_HOPS = 40;\n\ninterface Walk {\n done: string[];\n todo: string[];\n hops: number;\n}\n\nfunction start(path: string): Walk {\n return { done: [], todo: path.split('/').filter((p) => p !== ''), hops: 0 };\n}\n\nfunction next(walk: Walk): string | undefined {\n while (walk.todo.length > 0) {\n const part = walk.todo.shift() as string;\n if (part === '.') continue;\n if (part === '..') {\n walk.done.pop();\n continue;\n }\n return part;\n }\n return undefined;\n}\n\nfunction lexical(path: string): string {\n const walk = start(path);\n for (let part = next(walk); part !== undefined; part = next(walk)) walk.done.push(part);\n return `/${walk.done.join('/')}`;\n}\n\nfunction rest(walk: Walk, part: string): string {\n return lexical(`/${[...walk.done, part, ...walk.todo].join('/')}`);\n}\n\nfunction follow(walk: Walk, target: string): boolean {\n if (++walk.hops > MAX_HOPS) return false;\n if (target.startsWith('/')) walk.done.length = 0;\n walk.todo = [...target.split('/').filter((p) => p !== ''), ...walk.todo];\n return true;\n}\n\nexport interface LinkReader {\n lstat(path: string): { isSymbolicLink?: boolean };\n readlink(path: string): string;\n}\n\nexport function physicalPath(fs: LinkReader, path: string): string {\n const walk = start(path);\n for (let part = next(walk); part !== undefined; part = next(walk)) {\n const at = `/${[...walk.done, part].join('/')}`;\n let target: string | undefined;\n try {\n target = fs.lstat(at).isSymbolicLink ? fs.readlink(at) : undefined;\n } catch {\n return rest(walk, part);\n }\n if (target === undefined) walk.done.push(part);\n else if (!follow(walk, target)) {\n throw Object.assign(new Error('too many levels of symbolic links'), { code: 'ELOOP' });\n }\n }\n return `/${walk.done.join('/')}`;\n}\n\nexport function physicalLeaf(fs: LinkReader, path: string): string | undefined {\n const walk = start(path);\n for (let part = next(walk); part !== undefined; part = next(walk)) {\n const at = `/${[...walk.done, part].join('/')}`;\n let target: string | undefined;\n try {\n target = fs.lstat(at).isSymbolicLink ? fs.readlink(at) : undefined;\n } catch {\n const tail = walk.todo;\n return tail.some((p) => p === '.' || p === '..') ? undefined : [at, ...tail].join('/');\n }\n if (target === undefined) walk.done.push(part);\n else if (!follow(walk, target)) return undefined;\n }\n return `/${walk.done.join('/')}`;\n}\n\nexport interface AsyncLinkReader {\n lstat(path: string): Promise<{ isSymbolicLink?: boolean }>;\n readlink(path: string): Promise<string>;\n}\n\nexport async function physicalPathAsync(fs: AsyncLinkReader, path: string): Promise<string> {\n const walk = start(path);\n for (let part = next(walk); part !== undefined; part = next(walk)) {\n const at = `/${[...walk.done, part].join('/')}`;\n let target: string | undefined;\n try {\n target = (await fs.lstat(at)).isSymbolicLink ? await fs.readlink(at) : undefined;\n } catch {\n return rest(walk, part);\n }\n if (target === undefined) walk.done.push(part);\n else if (!follow(walk, target)) return lexical(path);\n }\n return `/${walk.done.join('/')}`;\n}\n", "export const SHM = '/dev/shm';\n\nexport function inShm(path: string): boolean {\n return path === SHM || path.startsWith(`${SHM}/`);\n}\n\nexport function inDevTree(path: string): boolean {\n if (path.startsWith(`${SHM}/`)) return false;\n return path === '/dev' || path.startsWith('/dev/');\n}\n\nexport function devRemoval(\n path: string,\n cred: Readonly<{ euid: number }> | undefined\n): 'EACCES' | 'EPERM' | 'EBUSY' | undefined {\n if (!inDevTree(path)) return undefined;\n if (cred && cred.euid !== 0) return 'EACCES';\n return path === '/dev' ? 'EBUSY' : 'EPERM';\n}\n\nexport function devCreation(\n path: string,\n cred: Readonly<{ euid: number }> | undefined\n): 'EACCES' | 'EPERM' | 'EROFS' | undefined {\n if (path === '/proc' || path.startsWith('/proc/')) return 'EROFS';\n if (path === '/dev' || !inDevTree(path)) return undefined;\n return cred && cred.euid !== 0 ? 'EACCES' : 'EPERM';\n}\n", "import { SAB_CLOCK_I64, SAB_CLOCK_OFFSET } from '../realm/sync-sab-wire.ts';\n\nexport const SYS_CAP_US = 20_000;\n\nconst LOCAL = SAB_CLOCK_OFFSET;\nconst BLOCKED = 0;\nconst IDLE = 1;\n\nexport function epochMicros(): number {\n return Math.floor((performance.timeOrigin + performance.now()) * 1000);\n}\n\nfunction slots(sab: SharedArrayBuffer): BigInt64Array {\n return new BigInt64Array(sab, LOCAL, SAB_CLOCK_I64);\n}\n\nlet local: BigInt64Array | undefined;\nlet localSab: SharedArrayBuffer | undefined;\nlet localStart = 0;\n\nexport const rawWait: (\n typed: Int32Array,\n index: number,\n value: number,\n timeout?: number\n) => 'ok' | 'not-equal' | 'timed-out' = Atomics.wait.bind(Atomics);\n\nexport function useLocalClock(sab: SharedArrayBuffer | undefined): void {\n local = sab && sab.byteLength >= LOCAL + SAB_CLOCK_I64 * 8 ? slots(sab) : undefined;\n if (!local) return;\n localSab = sab;\n localStart = epochMicros();\n const wait = (typed: Int32Array, index: number, value: number, timeout?: number) =>\n localWait(\n () => rawWait(typed, index, value, timeout),\n timeout !== 0 && Atomics.load(typed, index) === value\n );\n (Atomics as unknown as { wait: typeof wait }).wait = wait;\n}\n\nexport function localWait<T>(wait: () => T, blocks = true): T {\n const clock = local;\n if (!clock || !blocks) return wait();\n const start = BigInt(epochMicros());\n const idle = Atomics.load(clock, IDLE);\n Atomics.store(clock, IDLE, idle - start);\n try {\n return wait();\n } finally {\n const end = BigInt(epochMicros());\n Atomics.store(clock, IDLE, idle + (end > start ? end - start : 0n));\n }\n}\n\nexport function localCpuNanos(): bigint | undefined {\n if (!local || !localSab) return undefined;\n const now = epochMicros();\n const blocked = Number(Atomics.load(local, BLOCKED)) + localIdle(localSab, now).idle;\n return BigInt(Math.max(0, now - localStart - blocked)) * 1000n;\n}\n\nexport function localIdle(sab: SharedArrayBuffer, now: number): { idle: number; waiting: boolean } {\n const state = Number(Atomics.load(slots(sab), IDLE));\n if (state >= 0) return { idle: state, waiting: false };\n return { idle: Math.max(0, now + state), waiting: true };\n}\n\nexport interface CpuTimes {\n utime: number;\n stime: number;\n}\n\nexport class CpuClock {\n private readonly start: number;\n private sys = 0;\n private idle = 0;\n private since = 0;\n private kind: 'sys' | 'idle' = 'sys';\n private stopped = false;\n private last: CpuTimes = { utime: 0, stime: 0 };\n private readonly sab: SharedArrayBuffer;\n private readonly now: () => number;\n\n constructor(sab: SharedArrayBuffer, now: () => number = epochMicros) {\n this.sab = sab;\n this.now = now;\n this.start = now();\n }\n\n enter(): void {\n this.since = this.now();\n this.kind = this.stopped ? 'idle' : 'sys';\n }\n\n block(): void {\n if (this.since === 0 || this.kind === 'idle' || this.frozen !== undefined) return;\n const now = this.now();\n this.add(now - this.since);\n this.since = now;\n this.kind = 'idle';\n }\n\n leave(): void {\n if (this.since === 0) return;\n this.add((this.frozen ?? this.now()) - this.since);\n this.since = 0;\n }\n\n stop(stopped: boolean): void {\n if (stopped === this.stopped) return;\n this.stopped = stopped;\n if (this.since === 0 || !stopped || this.frozen !== undefined) return;\n const now = this.now();\n this.add(now - this.since);\n this.since = now;\n this.kind = 'idle';\n }\n\n private frozen: number | undefined;\n\n freeze(): void {\n this.frozen ??= this.now();\n }\n\n running(): boolean {\n if (this.frozen !== undefined) return false;\n const now = this.now();\n const busy = this.since === 0 || (this.kind === 'sys' && now - this.since < SYS_CAP_US);\n return busy && !localIdle(this.sab, now).waiting;\n }\n\n times(): CpuTimes {\n const now = this.frozen ?? this.now();\n const open = this.since === 0 ? 0 : Math.max(0, now - this.since);\n const busy = this.kind === 'sys' ? Math.min(open, SYS_CAP_US) : 0;\n const sys = this.sys + busy;\n const idle = this.idle + (open - busy) + localIdle(this.sab, now).idle;\n const user = Math.max(0, now - this.start - sys - idle);\n this.last = {\n utime: Math.max(this.last.utime, Math.floor(user / 1000)),\n stime: Math.max(this.last.stime, Math.floor(sys / 1000)),\n };\n return this.last;\n }\n\n private add(micros: number): void {\n const spent = Math.max(0, micros);\n const busy = this.kind === 'sys' ? Math.min(spent, SYS_CAP_US) : 0;\n this.sys += busy;\n this.idle += spent - busy;\n Atomics.store(slots(this.sab), BLOCKED, BigInt(this.idle));\n }\n}\n\nexport class ProcessClocks {\n private readonly main: CpuClock;\n private readonly threads = new Map<number, CpuClock>();\n private readonly ended: CpuTimes = { utime: 0, stime: 0 };\n private readonly enabled: boolean;\n\n constructor(\n sab: SharedArrayBuffer,\n enabled = true,\n states?: { onState(listener: (state: string) => void): void }\n ) {\n this.main = new CpuClock(sab);\n this.enabled = enabled;\n states?.onState((state) => this.stop(state === 'stopped'));\n }\n\n thread(tid: number, sab: SharedArrayBuffer): CpuClock {\n const clock = new CpuClock(sab);\n this.threads.set(tid, clock);\n return clock;\n }\n\n threadEnded(tid: number): void {\n const spent = this.threads.get(tid)?.times();\n this.threads.delete(tid);\n if (!spent) return;\n this.ended.utime += spent.utime;\n this.ended.stime += spent.stime;\n }\n\n stop(stopped: boolean): void {\n for (const c of this.all()) c.stop(stopped);\n }\n\n freeze(): void {\n for (const c of this.all()) c.freeze();\n }\n\n times(): CpuTimes | undefined {\n if (!this.enabled) return undefined;\n const sum = { ...this.ended };\n for (const c of this.all()) {\n const t = c.times();\n sum.utime += t.utime;\n sum.stime += t.stime;\n }\n return sum;\n }\n\n running(): number {\n return this.enabled ? this.all().filter((c) => c.running()).length : 0;\n }\n\n states(): Array<{ tid: number; state: 'R' | 'S' }> {\n const state = (c: CpuClock): 'R' | 'S' => (c.running() ? 'R' : 'S');\n return [\n { tid: 1, state: state(this.main) },\n ...[...this.threads].map(([tid, c]) => ({ tid, state: state(c) })),\n ];\n }\n\n timed<R, T>(clock: CpuClock | undefined, dispatch: (req: R, block: () => void) => Promise<T>) {\n const c = clock ?? this.main;\n const block = () => c.block();\n return (req: R): Promise<T> => {\n c.enter();\n return dispatch(req, block).finally(() => c.leave());\n };\n }\n\n private all(): CpuClock[] {\n return [this.main, ...this.threads.values()];\n }\n}\n", "export interface FsStat {\n isFile: boolean;\n isDirectory: boolean;\n isSymbolicLink: boolean;\n isSocket?: boolean;\n isFifo?: boolean;\n size: number;\n mode: number;\n mtime: Date;\n atime: Date;\n ctime: Date;\n ino: number;\n nlink?: number;\n dev?: number;\n readonly?: boolean;\n maxFile?: number;\n ranged?: boolean;\n linkable?: boolean;\n version?: string;\n uid?: number;\n gid?: number;\n}\n\nexport type UsersMode = 'off' | 'report' | 'enforce';\n\nexport const DEFAULT_USERS: UsersMode = 'enforce';\n\nexport interface Owner {\n uid: number;\n gid: number;\n}\n\nexport interface Perm {\n uid: number;\n gid: number;\n mode?: number;\n link?: string;\n}\n\nexport interface NewOwner extends Owner {\n mode?: number;\n parents?: number;\n socket?: boolean;\n fifo?: boolean;\n}\n\nexport interface CopyOptions {\n exclusive: boolean;\n owner?: NewOwner;\n}\n\nexport interface OwnerChange {\n uid?: number;\n gid?: number;\n follow?: boolean;\n kind?: 'chown' | 'adopt' | 'new';\n mode?: number;\n}\n\nexport interface HeldEntry {\n writeFile: KernelFs['writeFile'];\n direct: boolean;\n}\n\nexport interface Peers {\n joined(): Promise<unknown>;\n crowded(): boolean;\n watch(listener: (crowded: boolean) => void): void;\n fresh?(): void;\n}\n\nexport interface KernelFs {\n resolvePath(base: string, path: string): string;\n exclusive?<T>(path: string, run: (held: HeldEntry) => Promise<T>, follow?: boolean): Promise<T>;\n readFile(path: string): Promise<string>;\n readFileBuffer(path: string): Promise<Uint8Array>;\n writeFile(path: string, content: Uint8Array | string, owner?: NewOwner): Promise<void>;\n exists(path: string): Promise<boolean>;\n stat(path: string): Promise<FsStat>;\n lstat(path: string): Promise<FsStat>;\n readdir(path: string): Promise<string[]>;\n readdirStat(path: string): Promise<Array<[string, FsStat | null]>>;\n mkdir(path: string, options?: { recursive?: boolean; owner?: NewOwner }): Promise<void>;\n rm(\n path: string,\n options?: { recursive?: boolean; force?: boolean; file?: boolean }\n ): Promise<void>;\n rename(from: string, to: string): Promise<void>;\n link(from: string, to: string, follow?: boolean): Promise<void>;\n links?(path: string): boolean;\n symlink(target: string, path: string, owner?: NewOwner): Promise<void>;\n readlink(path: string): Promise<string>;\n realpath?(path: string, follow: boolean): Promise<string>;\n createExclusive?(path: string, owner?: NewOwner): Promise<void>;\n copyFile?(from: string, to: string, options: CopyOptions): Promise<void>;\n readonly rootName?: string;\n chown?(path: string, change: OwnerChange): Promise<void>;\n trackOwners?(): void;\n onPeer?(settle: () => Promise<void>): void;\n heldBy?(held: (dir: string) => readonly string[]): void;\n remoteChanges?(\n listener: (change: {\n paths: readonly string[];\n trees?: readonly string[];\n moved?: { from: string; to: string };\n content?: true;\n }) => void\n ): () => void;\n peers?(): Peers | undefined;\n crossings?(mounted: (path: string) => boolean): void;\n ancestry?(path: string): Promise<Array<Perm | undefined>>;\n hasOwner?(path: string): Promise<boolean>;\n chmod(path: string, mode: number): Promise<void>;\n append?(path: string, bytes: Uint8Array): Promise<number>;\n utimes(path: string, atime: Date, mtime: Date): Promise<void>;\n lutimes?(path: string, atime: Date, mtime: Date): Promise<void>;\n pread?(path: string, offset: number, length: number, version?: string): Promise<Uint8Array>;\n pwrite?(path: string, offset: number, bytes: Uint8Array, transfer?: boolean): Promise<void>;\n truncate?(path: string, size: number): Promise<void>;\n protect?(prefixes: readonly string[], versions?: boolean): void;\n unguarded?(): KernelFs;\n noLinks?(): KernelFs;\n mayChange?(path: string, follow: boolean, whole?: boolean): Promise<void>;\n commandTarget?(path: string): Promise<string | undefined>;\n readVersioned?(path: string, cached?: boolean): Promise<{ bytes: Uint8Array; version: string }>;\n version?(path: string, cached?: boolean): Promise<string>;\n opfsCalls?(): number;\n renameWaits?(): {\n acks: number;\n busy: number;\n waits: number;\n queries: number;\n ackMs: readonly number[];\n };\n opfsOps?(): number;\n}\n\nexport type RangedOps = Required<Pick<KernelFs, 'pread' | 'pwrite' | 'truncate'>>;\n\nexport function rangedOps(fs: Partial<RangedOps>): RangedOps | undefined {\n const { pread, pwrite, truncate } = fs;\n if (!pread || !pwrite || !truncate) return undefined;\n return { pread: pread.bind(fs), pwrite: pwrite.bind(fs), truncate: truncate.bind(fs) };\n}\n\nexport async function lutimesOf(\n fs: KernelFs,\n path: string,\n atime: Date,\n mtime: Date\n): Promise<void> {\n if (fs.lutimes) return fs.lutimes(path, atime, mtime);\n if ((await fs.lstat(path)).isSymbolicLink) throw fsError('EOPNOTSUPP', path);\n return fs.utimes(path, atime, mtime);\n}\n\nexport function mayLink(fs: { links?(path: string): boolean }, path: string): boolean {\n return fs.links?.(path) ?? true;\n}\n\nexport function modeOption(mode: unknown): number {\n if (!Number.isInteger(mode) || (mode as number) < 0 || (mode as number) > 0o7777) {\n throw fsError('EINVAL', `not a mode: ${String(mode)}`);\n }\n return mode as number;\n}\n\nexport function fsError(code: string, path: string): Error & { code: string } {\n return Object.assign(new Error(`${code}: ${path}`), { code });\n}\n\nexport function normalizePath(path: string): string {\n const parts: string[] = [];\n for (const part of path.split('/')) {\n if (part === '' || part === '.') continue;\n if (part === '..') parts.pop();\n else parts.push(part);\n }\n return `/${parts.join('/')}`;\n}\n\nexport function resolvePath(base: string, path: string): string {\n return normalizePath(path.startsWith('/') ? path : `${base}/${path}`);\n}\n\nexport function inodeOf(path: string): number {\n let h1 = 0xdeadbeef;\n let h2 = 0x41c6ce57;\n for (let i = 0; i < path.length; i++) {\n const c = path.charCodeAt(i);\n h1 = Math.imul(h1 ^ c, 2654435761);\n h2 = Math.imul(h2 ^ c, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return 4294967296 * (2097151 & h2) + (h1 >>> 0) || 1;\n}\n\nexport interface Redirect {\n of: string;\n to: string;\n}\n\nexport function redirected(of: string, to: string): Error {\n return Object.assign(fsError('EXDEV', `${of} leads to the mount at ${to}`), {\n redirect: { of: normalizePath(of), to: normalizePath(to) },\n });\n}\n\nexport function redirectOf(err: unknown): Redirect | undefined {\n return (err as { redirect?: Redirect } | null)?.redirect;\n}\n", "import { fsError } from '../fs/types.ts';\n\nexport interface Cred {\n ruid: number;\n euid: number;\n suid: number;\n rgid: number;\n egid: number;\n sgid: number;\n groups: number[];\n}\n\nexport type CredChange = Partial<Cred>;\n\nexport const ROOT: Readonly<Cred> = Object.freeze({\n ruid: 0,\n euid: 0,\n suid: 0,\n rgid: 0,\n egid: 0,\n sgid: 0,\n groups: [0],\n});\n\nconst MAX_ID = 0xfffffffe;\nexport const MAX_GROUPS = 65536;\nconst UIDS = ['ruid', 'euid', 'suid'] as const;\nconst GIDS = ['rgid', 'egid', 'sgid'] as const;\n\nexport function userCred(uid: number, gid: number, groups: number[] = [gid]): Cred {\n return { ruid: uid, euid: uid, suid: uid, rgid: gid, egid: gid, sgid: gid, groups: [...groups] };\n}\n\nexport function copyCred(cred: Readonly<Cred>): Cred {\n return { ...cred, groups: [...cred.groups] };\n}\n\nfunction id(value: unknown): number | undefined {\n if (value === undefined || value === -1 || value === 0xffffffff) return undefined;\n if (!Number.isInteger(value) || (value as number) < 0 || (value as number) > MAX_ID) {\n throw fsError('EINVAL', `not a user or group id: ${String(value)}`);\n }\n return value as number;\n}\n\nexport function changeCred(cur: Readonly<Cred>, change: CredChange): Cred {\n if (typeof change !== 'object' || change === null || Array.isArray(change)) {\n throw fsError('EINVAL', 'not a change');\n }\n const privileged = cur.euid === 0;\n const next = copyCred(cur);\n for (const keys of [UIDS, GIDS]) {\n const own = keys.map((key) => cur[key]);\n for (const key of keys) {\n const value = id(change[key]);\n if (value === undefined) continue;\n if (!privileged && !own.includes(value)) throw fsError('EPERM', `${key} ${value}`);\n next[key] = value;\n }\n }\n if (change.groups !== undefined) {\n if (!Array.isArray(change.groups) || change.groups.length > MAX_GROUPS) {\n throw fsError('EINVAL', 'not a group list');\n }\n const groups = change.groups.map((g) => id(g) ?? Number.NaN);\n if (groups.some(Number.isNaN)) throw fsError('EINVAL', 'not a group list');\n if (!privileged) throw fsError('EPERM', 'setgroups');\n next.groups = groups;\n }\n return next;\n}\n\nexport function maySignal(sender: Readonly<Cred>, target: Readonly<Cred>): boolean {\n if (sender.euid === 0) return true;\n return [sender.ruid, sender.euid].some((uid) => uid === target.ruid || uid === target.suid);\n}\n\nexport function maySee(viewer: Readonly<Cred>, target: Readonly<Cred>): boolean {\n return viewer.euid === 0 || target.ruid === viewer.euid || target.euid === viewer.euid;\n}\n", "export const SIG = {\n HUP: 1,\n INT: 2,\n QUIT: 3,\n ILL: 4,\n TRAP: 5,\n ABRT: 6,\n BUS: 7,\n FPE: 8,\n KILL: 9,\n USR1: 10,\n SEGV: 11,\n USR2: 12,\n PIPE: 13,\n ALRM: 14,\n TERM: 15,\n STKFLT: 16,\n CHLD: 17,\n CONT: 18,\n STOP: 19,\n TSTP: 20,\n TTIN: 21,\n TTOU: 22,\n URG: 23,\n XCPU: 24,\n XFSZ: 25,\n VTALRM: 26,\n PROF: 27,\n WINCH: 28,\n POLL: 29,\n PWR: 30,\n SYS: 31,\n} as const;\n\nexport type DefaultAction = 'terminate' | 'ignore' | 'stop' | 'continue';\n\nconst IGNORED_BY_DEFAULT: ReadonlySet<number> = new Set([SIG.CHLD, SIG.URG, SIG.WINCH]);\nconst STOPPING: ReadonlySet<number> = new Set([SIG.STOP, SIG.TSTP, SIG.TTIN, SIG.TTOU]);\n\nexport function defaultAction(sig: number): DefaultAction {\n if (sig === SIG.CONT) return 'continue';\n if (STOPPING.has(sig)) return 'stop';\n return IGNORED_BY_DEFAULT.has(sig) ? 'ignore' : 'terminate';\n}\n\nexport function isSignal(sig: number): boolean {\n return Number.isInteger(sig) && sig >= 1 && sig <= 31;\n}\n\nexport function sigbit(sig: number): number {\n return 1 << sig;\n}\n\nexport function signalsIn(mask: number): number[] {\n const out: number[] = [];\n for (let sig = 1; sig <= 31; sig++) if (mask & sigbit(sig)) out.push(sig);\n return out;\n}\n\nexport function signalName(sig: number | undefined): string | undefined {\n const name = Object.entries(SIG).find(([, n]) => n === sig)?.[0];\n return name === undefined ? undefined : `SIG${name}`;\n}\n\nexport function quiet<T>(p: Promise<T>): Promise<T> {\n p.catch(() => undefined);\n return p;\n}\n\nexport function signalField(sig: number | undefined): { signal?: string } {\n const name = signalName(sig);\n return name ? { signal: name } : {};\n}\n\nexport const SIGNAL_BY_NAME: Readonly<\n Record<'SIGINT' | 'SIGTERM' | 'SIGKILL' | 'SIGSTOP' | 'SIGCONT', number>\n> = {\n SIGINT: SIG.INT,\n SIGTERM: SIG.TERM,\n SIGKILL: SIG.KILL,\n SIGSTOP: SIG.STOP,\n SIGCONT: SIG.CONT,\n};\n\nexport interface SigInfo {\n code: number;\n pid: number;\n uid: number;\n status: number;\n}\n\nexport const SI = { USER: 0, QUEUE: -1, TIMER: -2, TKILL: -6, KERNEL: 0x80 } as const;\n\nexport const CLD = { EXITED: 1, KILLED: 2, DUMPED: 3, STOPPED: 5, CONTINUED: 6 } as const;\n\nexport const KERNEL_SIGINFO: Readonly<SigInfo> = Object.freeze({\n code: SI.KERNEL,\n pid: 0,\n uid: 0,\n status: 0,\n});\n", "import { ChangeView } from '../fs/changes.ts';\nimport { rawWait } from '../kernel/cpu-clock.ts';\nimport {\n parseSyncFsStat,\n parseSyncFsUsage,\n SYNC_FS_OPS,\n SYNC_FS_READ_ONLY,\n SYNC_FS_REQUEST_TIMEOUT_MS,\n type SyncFsBridgeStat,\n type SyncFsFileIo,\n type SyncFsPosixBridge,\n type SyncFsRenames,\n type SyncFsResult,\n syncError,\n} from './sync-fs-wire.ts';\nimport {\n decodeSabResult,\n loadU53,\n publishMemory,\n SAB_I_CHUNK,\n SAB_I_OFFSET,\n SAB_I_OFFSET_HI,\n SAB_I_PUB,\n SAB_I_REQ,\n SAB_I_SEQ,\n SAB_I_STATE,\n SAB_I_STATUS,\n SAB_I_TOTAL,\n SAB_I_TOTAL_HI,\n SAB_STATE_IDLE,\n SAB_STATE_PENDING,\n SAB_STATE_READY,\n type SabViews,\n SYNC_SAB_NEXT_MSG,\n SYNC_SAB_REQ_MSG,\n type SyncSabNextMsg,\n type SyncSabReqMsg,\n type SyncSabRequestBody,\n sabViews,\n} from './sync-sab-wire.ts';\n\nexport interface SabPostLike {\n postMessage(message: unknown, transfer?: Transferable[]): void;\n}\n\nexport interface SyncSabTransport {\n call(\n req: SyncSabRequestBody,\n timeoutMs: number,\n label: string,\n transfer?: Transferable[]\n ): SyncFsResult;\n}\n\nexport type AtomicsWaitLike = (\n typedArray: Int32Array,\n index: number,\n value: number,\n timeout?: number\n) => 'ok' | 'not-equal' | 'timed-out';\n\nconst UNCOUNTED_OPS: ReadonlySet<string> = new Set([...SYNC_FS_OPS, 'cwd-check', 'cwd-chdir']);\n\nlet calls = 0;\n\nexport function exactBody<T extends object>(\n req: T,\n transfer: Transferable[] = []\n): { req: T; transfer: Transferable[] } {\n const body: unknown = (req as { body?: unknown }).body;\n if (!ArrayBuffer.isView(body)) return { req, transfer };\n if (Object.prototype.toString.call(body.buffer) === '[object SharedArrayBuffer]') {\n return { req, transfer };\n }\n const whole =\n (body as { constructor?: unknown }).constructor === Uint8Array &&\n body.byteOffset === 0 &&\n body.byteLength === body.buffer.byteLength;\n if (whole) return { req, transfer };\n const copy = new Uint8Array(body.byteLength);\n copy.set(new Uint8Array(body.buffer, body.byteOffset, body.byteLength));\n return { req: { ...req, body: copy }, transfer: [...transfer, copy.buffer] };\n}\n\nexport function syncCallCount(): number {\n return calls;\n}\n\nlet looks = 0;\n\nexport function lookedOutside(): void {\n looks++;\n}\n\nexport function syncEpoch(): number {\n return calls + looks;\n}\n\nconst SPIN_MS = 0.06;\nconst SPIN_STRIDE = 128;\nconst SPIN_STRIDES = 256;\nconst SPIN_CORES = 4;\nconst spinning = (globalThis.navigator?.hardwareConcurrency ?? 0) >= SPIN_CORES;\nconst SPIN_CAP_MS = 1;\n\nexport function createSyncSabTransport(\n sab: SharedArrayBuffer,\n port: SabPostLike,\n deps: { wait?: AtomicsWaitLike; now?: () => number; memory?: () => number } = {}\n): SyncSabTransport {\n const views: SabViews = sabViews(sab);\n const { header, window } = views;\n const wait: AtomicsWaitLike = deps.wait ?? ((a, i, v, t) => rawWait(a, i, v, t));\n const now = deps.now ?? (() => performance.now());\n let seq = 0;\n let typical = 0;\n\n const ready = (id: number): boolean =>\n Atomics.load(header, SAB_I_STATE) === SAB_STATE_READY && Atomics.load(header, SAB_I_SEQ) === id;\n\n function spinUntil(id: number, until: number): boolean {\n for (let stride = 0; stride < SPIN_STRIDES; stride++) {\n for (let i = 0; i < SPIN_STRIDE; i++) if (ready(id)) return true;\n if (now() >= until) return false;\n }\n return false;\n }\n\n function settled(start: number): void {\n typical += (Math.min(now() - start, SPIN_CAP_MS) - typical) / 8;\n }\n\n function awaitReady(id: number, deadline: number, label: string): void {\n const start = now();\n if (spinning && typical < SPIN_MS && spinUntil(id, start + SPIN_MS)) {\n settled(start);\n return;\n }\n for (;;) {\n const published = Atomics.load(header, SAB_I_PUB);\n if (ready(id)) {\n settled(start);\n return;\n }\n const remaining = deadline - now();\n if (remaining <= 0) throw syncError('EIO', label);\n wait(header, SAB_I_PUB, published, remaining);\n }\n }\n\n return {\n call(asked, timeoutMs, label, given = []): SyncFsResult {\n if (deps.memory) publishMemory(sab, deps.memory());\n const { req, transfer } = exactBody(asked, given);\n const id = ++seq;\n calls += Number(!UNCOUNTED_OPS.has(req.op));\n let out: Uint8Array | null = null;\n let status = 0;\n let offset = 0;\n Atomics.store(header, SAB_I_REQ, id);\n try {\n for (;;) {\n Atomics.store(header, SAB_I_STATE, SAB_STATE_PENDING);\n const msg: SyncSabReqMsg | SyncSabNextMsg =\n offset === 0\n ? { type: SYNC_SAB_REQ_MSG, id, req }\n : { type: SYNC_SAB_NEXT_MSG, id, offset };\n try {\n if (offset === 0 && transfer.length > 0) port.postMessage(msg, transfer);\n else port.postMessage(msg);\n } catch {\n throw syncError('EIO', label);\n }\n awaitReady(id, now() + timeoutMs, label);\n const total = loadU53(header, SAB_I_TOTAL, SAB_I_TOTAL_HI);\n const chunk = Atomics.load(header, SAB_I_CHUNK);\n const at = loadU53(header, SAB_I_OFFSET, SAB_I_OFFSET_HI);\n if (at !== offset || chunk < 0 || total < 0 || offset + chunk > total) {\n throw syncError('EIO', label);\n }\n if (out === null) {\n status = Atomics.load(header, SAB_I_STATUS);\n out = new Uint8Array(total);\n }\n out.set(window.subarray(0, chunk), offset);\n offset += chunk;\n if (offset >= total) break;\n\n if (chunk === 0) throw syncError('EIO', label);\n }\n } finally {\n Atomics.store(header, SAB_I_REQ, 0);\n Atomics.store(header, SAB_I_STATE, SAB_STATE_IDLE);\n }\n return decodeSabResult(status, out);\n },\n };\n}\n\nfunction errnoError(code: string, path: string, direct?: true): Error & { code: string } {\n const err = syncError(code, `sync-sab bridge, '${path}'`);\n return direct ? Object.assign(err, { direct }) : err;\n}\n\nfunction holdSeen(seen: { gen?: number; nofollow?: boolean; ino?: number }) {\n return { gen: seen.gen, ino: seen.ino, ...(seen.nofollow ? { nofollow: true } : {}) };\n}\n\nexport function createSyncFsSabBridge(\n transport: SyncSabTransport,\n opts: {\n timeoutMs?: number;\n owners?: boolean;\n links?: boolean;\n changes?: SharedArrayBuffer;\n direct?: boolean;\n } = {}\n): SyncFsPosixBridge {\n const direct = opts.direct ? { direct: true } : {};\n const timeoutMs = opts.timeoutMs ?? SYNC_FS_REQUEST_TIMEOUT_MS;\n let identity: { identity: true } | Record<string, never> = {};\n let once = false;\n let last: SyncFsBridgeStat | null = null;\n\n function run(req: SyncSabRequestBody, path: string, transfer?: Transferable[]): SyncFsResult {\n last = null;\n const silence = SYNC_FS_READ_ONLY.has(req.op) ? timeoutMs : Number.POSITIVE_INFINITY;\n const result = transport.call(req, silence, `sync-sab bridge, '${path}'`, transfer);\n if (!result.ok) throw errnoError(result.errno, path, result.direct);\n return result;\n }\n function bytes(req: SyncSabRequestBody, path: string): Uint8Array {\n const r = run(req, path);\n if (r.ok && r.kind === 'bytes') return r.bytes;\n throw errnoError('EIO', path);\n }\n function json(req: SyncSabRequestBody, path: string): unknown {\n const r = run(req, path);\n if (r.ok && r.kind === 'json') return r.json;\n throw errnoError('EIO', path);\n }\n\n const changing = (req: SyncSabRequestBody, path: string, transfer?: Transferable[]): void => {\n const ask = once ? { identity: true as const } : identity;\n once = false;\n const r = run({ ...req, ...ask }, path, transfer);\n if (r.ok && r.kind === 'json') last = parseSyncFsStat(r.json);\n };\n\n const io = (id: { handle?: number }): SyncFsFileIo => ({\n readFile: (path) => bytes({ op: 'read', path, ...id }, path),\n writeFile: (path, data, open) => {\n changing({ op: 'write', path, body: data, ...(open ? { mode: 1 } : {}), ...id }, path);\n },\n pread: (path, offset, length, version) =>\n bytes({ op: 'pread', path, offset, length, ...(version ? { version } : {}), ...id }, path),\n pwrite: (path, offset, body, transfer) => {\n const whole = body.byteOffset === 0 && body.byteLength === body.buffer.byteLength;\n const owned = transfer && whole && body.buffer instanceof ArrayBuffer;\n const transferred = owned ? [body.buffer as ArrayBuffer] : [];\n changing({ op: 'pwrite', path, offset, body, ...id }, path, transferred);\n },\n truncate: (path, length) => {\n changing({ op: 'truncate', path, length, ...id }, path);\n },\n append: (path, body) => json({ op: 'append', path, body, ...id }, path) as number,\n });\n\n return {\n ...io({}),\n pinned: (handle) => io({ handle }),\n kept: (handle) => json({ op: 'kept', path: '/', handle }, '/') === true,\n keptStat: (handle) => {\n const s = parseSyncFsStat(json({ op: 'stat', path: '/', handle }, '/'));\n if (!s) throw errnoError('EIO', '/');\n return s;\n },\n stat: (path) => {\n const s = parseSyncFsStat(json({ op: 'stat', path, ...direct }, path));\n if (!s) throw errnoError('EIO', path);\n return s;\n },\n lstat: (path) => {\n const s = parseSyncFsStat(json({ op: 'lstat', path, ...direct }, path));\n if (!s) throw errnoError('EIO', path);\n return s;\n },\n readdir: (path) => {\n const list = json({ op: 'readdir', path }, path);\n if (!Array.isArray(list) || !list.every((s) => typeof s === 'string')) {\n throw errnoError('EIO', path);\n }\n return list as string[];\n },\n readdirStat: (path) => {\n const list = json({ op: 'readdir-stat', path }, path);\n if (!Array.isArray(list)) throw errnoError('EIO', path);\n return list.map((entry): [string, SyncFsBridgeStat | null] => {\n if (!Array.isArray(entry) || typeof entry[0] !== 'string') throw errnoError('EIO', path);\n\n if (entry[1] === null) return [entry[0], null];\n const stat = parseSyncFsStat(entry[1]);\n if (!stat) throw errnoError('EIO', path);\n return [entry[0], stat];\n });\n },\n exists: (path) => {\n const v = json({ op: 'exists', path }, path);\n if (typeof v !== 'boolean') throw errnoError('EIO', path);\n return v;\n },\n mkdir: (path, mode) => {\n run({ op: 'mkdir', path, exclusive: true, ...(mode !== undefined ? { mode } : {}) }, path);\n },\n rm: (path) => {\n run({ op: 'rm', path }, path);\n },\n rename: (from, to) => {\n const r = run({ op: 'rename', path: from, arg2: to }, from);\n const seq = r.ok && r.kind === 'json' ? (r.json as { seq?: unknown }).seq : undefined;\n return typeof seq === 'number' ? seq : undefined;\n },\n link: (from, to, follow) => {\n run({ op: 'link', path: from, arg2: to, ...(follow ? { mode: 1 } : {}) }, from);\n },\n unlink: (path) => {\n run({ op: 'unlink', path }, path);\n },\n rmdir: (path) => {\n run({ op: 'rmdir', path }, path);\n },\n symlink: (target, linkPath) => {\n run({ op: 'symlink', path: linkPath, arg2: target }, linkPath);\n },\n readlink: (path) => {\n const target = json({ op: 'readlink', path }, path);\n if (typeof target !== 'string') throw errnoError('EIO', path);\n return target;\n },\n chmod: (path, mode) => {\n changing({ op: 'chmod', path, mode }, path);\n },\n utimes: (path, atimeMs, mtimeMs, now) => {\n changing({ op: 'utimes', path, atimeMs, mtimeMs, ...(now ? { now } : {}) }, path);\n },\n identify: () => {\n identity = { identity: true };\n },\n identifyNext: () => {\n once = true;\n last = null;\n },\n identified: () => {\n once = false;\n return last;\n },\n lutimes: (path, atimeMs, mtimeMs, now) => {\n run({ op: 'lutimes', path, atimeMs, mtimeMs, ...(now ? { now } : {}) }, path);\n },\n mkfifo: (path, mode) => {\n run({ op: 'mkfifo', path, mode }, path);\n },\n copy: (from, to, mode, exclusive) => {\n run({ op: 'copy', path: from, arg2: to, mode, ...(exclusive ? { exclusive } : {}) }, to);\n },\n create: (path, mode, opening) => {\n const flags = { ...(mode !== undefined ? { mode } : {}), ...(opening ? { opening } : {}) };\n const r = run({ op: 'create', path, ...flags, identity: true }, path);\n if (!r.ok || r.kind !== 'json') return undefined;\n const st = parseSyncFsStat(r.json);\n if (!st) return undefined;\n const { seen } = r.json as { seen?: unknown };\n return typeof seen === 'number' ? { ...st, seen } : st;\n },\n chown: (path, uid, gid, follow, handle) => {\n const ids = { ...(uid !== undefined ? { uid } : {}), ...(gid !== undefined ? { gid } : {}) };\n changing(\n {\n op: follow ? 'chown' : 'lchown',\n path,\n ...ids,\n ...(handle !== undefined ? { handle } : {}),\n },\n path\n );\n },\n ...(opts.owners ? { owners: true } : {}),\n ...(opts.links ? { links: true } : {}),\n ...(opts.changes ? { changes: new ChangeView(opts.changes) } : {}),\n access: (path, mode, kind = 'access', nofollow) => {\n run({ op: 'access', path, mode, arg2: kind, ...(nofollow ? { nofollow } : {}) }, path);\n },\n hold: (path, held, open, handle, want = 0, seen = {}) => {\n const mode = (held ? 1 : 0) | (open ? 2 : 0);\n if (mode === 3) {\n return json({ op: 'hold', path, mode: mode | want, ...holdSeen(seen) }, path) as number;\n }\n run({ op: 'hold', path, mode, ...(handle !== undefined ? { handle } : {}) }, path);\n return undefined;\n },\n statfs: (path = '/') => parseSyncFsUsage(json({ op: 'statfs', path }, path)),\n renames: (since, held) =>\n json(\n { op: 'renames', path: '/', offset: since, arg2: JSON.stringify(held) },\n '/'\n ) as SyncFsRenames,\n };\n}\n", "import type { SyncFsResult } from '../../realm/sync-fs-wire.ts';\nimport { exactBody, type SabPostLike } from '../../realm/sync-sab-bridge.ts';\nimport {\n decodeSabResult,\n loadU53,\n SAB_I_CHUNK,\n SAB_I_OFFSET,\n SAB_I_OFFSET_HI,\n SAB_I_PUB,\n SAB_I_REQ,\n SAB_I_SEQ,\n SAB_I_STATE,\n SAB_I_STATUS,\n SAB_I_TOTAL,\n SAB_I_TOTAL_HI,\n SAB_STATE_IDLE,\n SAB_STATE_PENDING,\n SAB_STATE_READY,\n SYNC_SAB_NEXT_MSG,\n SYNC_SAB_REQ_MSG,\n type SyncSabRequestBody,\n sabViews,\n} from '../../realm/sync-sab-wire.ts';\n\nexport type WaitAsyncLike = (\n typedArray: Int32Array,\n index: number,\n value: number\n) => { async: false; value: string } | { async: true; value: Promise<string> };\n\nexport interface AsyncSabTransport {\n call(req: SyncSabRequestBody): Promise<SyncFsResult>;\n}\n\nconst defaultWaitAsync: WaitAsyncLike = (a, i, v) =>\n (\n Atomics as unknown as {\n waitAsync: WaitAsyncLike;\n }\n ).waitAsync(a, i, v);\n\nexport async function changed(\n header: Int32Array,\n index: number,\n seen: number,\n waitAsync: WaitAsyncLike = defaultWaitAsync\n): Promise<void> {\n const waited = waitAsync(header, index, seen);\n if (waited.async) await waited.value;\n}\n\nexport function createAsyncSabTransport(\n sab: SharedArrayBuffer,\n port: SabPostLike,\n waitAsync: WaitAsyncLike = defaultWaitAsync\n): AsyncSabTransport {\n const { header, window } = sabViews(sab);\n let seq = 0;\n let tail: Promise<unknown> = Promise.resolve();\n\n async function ready(id: number): Promise<void> {\n for (;;) {\n const published = Atomics.load(header, SAB_I_PUB);\n if (\n Atomics.load(header, SAB_I_STATE) === SAB_STATE_READY &&\n Atomics.load(header, SAB_I_SEQ) === id\n ) {\n return;\n }\n await changed(header, SAB_I_PUB, published, waitAsync);\n }\n }\n\n async function once(asked: SyncSabRequestBody): Promise<SyncFsResult> {\n const { req, transfer } = exactBody(asked);\n const id = ++seq;\n let out: Uint8Array | null = null;\n let status = 0;\n let offset = 0;\n Atomics.store(header, SAB_I_REQ, id);\n try {\n for (;;) {\n Atomics.store(header, SAB_I_STATE, SAB_STATE_PENDING);\n if (offset === 0) port.postMessage({ type: SYNC_SAB_REQ_MSG, id, req }, transfer);\n else port.postMessage({ type: SYNC_SAB_NEXT_MSG, id, offset });\n await ready(id);\n const total = loadU53(header, SAB_I_TOTAL, SAB_I_TOTAL_HI);\n const chunk = Atomics.load(header, SAB_I_CHUNK);\n const at = loadU53(header, SAB_I_OFFSET, SAB_I_OFFSET_HI);\n if (at !== offset || chunk < 0 || total < 0 || offset + chunk > total) {\n return { ok: false, errno: 'EIO', message: 'sync-sab: torn reply' };\n }\n if (out === null) {\n status = Atomics.load(header, SAB_I_STATUS);\n out = new Uint8Array(total);\n }\n out.set(window.subarray(0, chunk), offset);\n offset += chunk;\n if (offset >= total) break;\n if (chunk === 0) return { ok: false, errno: 'EIO', message: 'sync-sab: empty chunk' };\n }\n } finally {\n Atomics.store(header, SAB_I_REQ, 0);\n Atomics.store(header, SAB_I_STATE, SAB_STATE_IDLE);\n }\n return decodeSabResult(status, out);\n }\n\n return {\n call(req) {\n const run = tail.then(() => once(req));\n tail = run.catch(() => undefined);\n return run;\n },\n };\n}\n", "import type { WasmSyscall } from '../../kernel/process.ts';\nimport { type DefaultAction, defaultAction, SIG, sigbit, signalsIn } from '../../kernel/signals.ts';\nimport type { SyncFsResult } from '../../realm/sync-fs-wire.ts';\nimport {\n SAB_HEADER_I32,\n SAB_I_ASYNC,\n SAB_I_SIGNALS,\n SAB_I_STOP,\n type SyncSabRequestBody,\n} from '../../realm/sync-sab-wire.ts';\nimport { type AsyncSabTransport, changed, type WaitAsyncLike } from './async-sab.ts';\n\nexport class JsCallError extends Error {\n readonly code: string;\n\n readonly detail: string | undefined;\n\n constructor(code: string, what: string, detail?: string) {\n super(`${what}: ${code}`);\n this.name = 'JsCallError';\n this.code = code;\n this.detail = detail;\n }\n}\n\nconst DETAILED: ReadonlySet<string> = new Set([\n 'fd-read',\n 'fd-write',\n 'fd-close',\n 'fd-open-clipboard',\n 'net-ws-ready',\n 'sock-tls',\n 'sock-tls-upgrade',\n]);\n\nexport function umaskRequest(mask: unknown): { op: 'proc-umask'; mask?: number } {\n if (mask === undefined) return { op: 'proc-umask' };\n if (!Number.isInteger(mask) || (mask as number) < 0 || (mask as number) > 0o777) {\n throw new JsCallError('EINVAL', 'umask');\n }\n return { op: 'proc-umask', mask: mask as number };\n}\n\nexport function modeOf(mode: unknown): number {\n if (!Number.isInteger(mode) || (mode as number) < 0 || (mode as number) > 0o7777) {\n throw new JsCallError('EINVAL', 'chmod');\n }\n return mode as number;\n}\n\nexport function callError(result: { errno: string; message: string }, op: string): JsCallError {\n const { errno, message } = result;\n const detailed = typeof message === 'string' && message !== errno && DETAILED.has(op);\n return new JsCallError(\n errno,\n detailed ? `${op}: ${message}` : op,\n detailed ? message : undefined\n );\n}\n\nfunction untilAborted(work: Promise<void>, signal: AbortSignal | undefined): Promise<void> {\n if (!signal) return work;\n return new Promise<void>((resolve) => {\n const done = () => {\n signal.removeEventListener('abort', done);\n resolve();\n };\n signal.addEventListener('abort', done, { once: true });\n work.then(done, done);\n });\n}\n\nexport type SignalHandler = (signal: number) => unknown;\n\nexport interface JsKernelOptions {\n sab: SharedArrayBuffer;\n transport: AsyncSabTransport;\n waitAsync: WaitAsyncLike | undefined;\n onError: (err: unknown) => void;\n}\n\nfunction caughtOf(handlers: Map<number, SignalHandler>): number {\n let caught = 0;\n for (const sig of handlers.keys()) caught |= sigbit(sig);\n return caught;\n}\n\nexport class JsKernel {\n private readonly header: Int32Array;\n private readonly transport: AsyncSabTransport;\n private readonly waitAsync: WaitAsyncLike | undefined;\n private readonly onError: (err: unknown) => void;\n private handlers = new Map<number, SignalHandler>();\n private ignored = 0;\n private changing: Promise<unknown> = Promise.resolve();\n pid = 0;\n private reported = { caught: 0, ignored: 0 };\n private watching = false;\n faulted = false;\n syncLane: ((req: SyncSabRequestBody) => SyncFsResult) | undefined;\n\n constructor(o: JsKernelOptions) {\n this.header = new Int32Array(o.sab, 0, SAB_HEADER_I32);\n this.transport = o.transport;\n this.waitAsync = o.waitAsync;\n this.onError = o.onError;\n }\n\n async raw(req: SyncSabRequestBody): Promise<SyncFsResult> {\n const result = await this.transport.call(req);\n this.deliver();\n return result;\n }\n\n async call(req: SyncSabRequestBody): Promise<SyncFsResult> {\n const result = await this.raw(req);\n if (!result.ok) throw callError(result, req.op);\n return result;\n }\n\n async json(req: SyncSabRequestBody): Promise<unknown> {\n const result = await this.call(req);\n return result.ok && result.kind === 'json' ? result.json : undefined;\n }\n\n async bytes(req: SyncSabRequestBody): Promise<Uint8Array> {\n const result = await this.call(req);\n return result.ok && result.kind === 'bytes' ? result.bytes : new Uint8Array(0);\n }\n\n async blocking(\n req: WasmSyscall,\n signal?: AbortSignal,\n track?: (id: number) => void\n ): Promise<SyncFsResult> {\n for (;;) {\n const id = await this.submit(req, track);\n const result = await this.settled(id, signal);\n if (result.ok) return result;\n if (result.errno !== 'EINTR') throw callError(result, req.op);\n }\n }\n\n private acks: number[] = [];\n\n ack(id: number): void {\n this.acks.push(id);\n }\n\n private async submit(req: WasmSyscall, track?: (id: number) => void): Promise<number> {\n const ack = this.acks;\n this.acks = [];\n const r = await this.transport.call({\n op: 'async-submit',\n req,\n ...(ack.length > 0 ? { ack } : {}),\n });\n const id = r.ok && r.kind === 'json' ? (r.json as number) : undefined;\n if (id !== undefined) track?.(id);\n this.deliver();\n if (id === undefined) throw new JsCallError(r.ok ? 'EIO' : r.errno, 'async-submit');\n return id;\n }\n\n private async settled(id: number, signal?: AbortSignal): Promise<SyncFsResult> {\n for (;;) {\n const seen = Atomics.load(this.header, SAB_I_ASYNC);\n const taken = await this.raw({ op: 'async-take', id });\n if (taken.ok || taken.errno !== 'EAGAIN') return taken;\n if (signal?.aborted) {\n await this.raw({ op: 'async-cancel', id });\n throw signal.reason;\n }\n await untilAborted(changed(this.header, SAB_I_ASYNC, seen, this.waitAsync), signal);\n }\n }\n\n deliver(): void {\n const pending = Atomics.exchange(this.header, SAB_I_SIGNALS, 0);\n for (const sig of signalsIn(pending)) {\n const handler = this.handlers.get(sig);\n if (!handler) {\n if (!(this.ignored & sigbit(sig))) this.raise(sig);\n continue;\n }\n try {\n Promise.resolve(handler(sig)).catch((err) => this.fault(err));\n } catch (err) {\n this.fault(err);\n }\n }\n }\n\n private fault(err: unknown): void {\n this.faulted = true;\n this.onError(err);\n }\n\n async watch(): Promise<void> {\n if (this.watching) return;\n this.watching = true;\n for (;;) {\n await changed(this.header, SAB_I_SIGNALS, 0, this.waitAsync);\n this.deliver();\n }\n }\n\n async watchStops(): Promise<void> {\n for (;;) {\n await changed(this.header, SAB_I_STOP, 0, this.waitAsync);\n this.freeze();\n }\n }\n\n freeze(): void {\n while (Atomics.load(this.header, SAB_I_STOP) === 1) Atomics.wait(this.header, SAB_I_STOP, 1);\n }\n\n disposition(sig: number): 'caught' | 'ignored' | DefaultAction {\n if (this.handlers.has(sig)) return 'caught';\n if (this.ignored & sigbit(sig)) return 'ignored';\n return defaultAction(sig);\n }\n\n setHandler(sig: number, handler: SignalHandler | 'ignore' | 'default'): Promise<void> {\n if (sig === SIG.KILL || sig === SIG.STOP) {\n return Promise.reject(new JsCallError('EINVAL', 'signal'));\n }\n if (this.syncLane) {\n try {\n this.changeNow(this.syncLane, sig, handler);\n return Promise.resolve();\n } catch (err) {\n return Promise.reject(err);\n }\n }\n const run = this.changing.then(() => this.change(sig, handler));\n this.changing = run.catch(() => undefined);\n return run;\n }\n\n private changeNow(\n lane: (req: SyncSabRequestBody) => SyncFsResult,\n sig: number,\n handler: SignalHandler | 'ignore' | 'default'\n ): void {\n const { handlers, ignored } = this.disposed(sig, handler);\n const defaults = handler === 'default' ? sigbit(sig) : 0;\n const caught = caughtOf(handlers);\n if (caught !== this.reported.caught || ignored !== this.reported.ignored || defaults !== 0) {\n const r = lane({ op: 'sig-mask', caught, ignored, ...(defaults ? { defaults } : {}) });\n if (!r.ok) throw new JsCallError(r.errno, 'sig-mask');\n this.reported = { caught, ignored };\n }\n this.handlers = handlers;\n this.ignored = ignored;\n if (handlers.size > 0) void this.watch();\n }\n\n private disposed(\n sig: number,\n handler: SignalHandler | 'ignore' | 'default'\n ): { handlers: Map<number, SignalHandler>; ignored: number } {\n const handlers = new Map(this.handlers);\n handlers.delete(sig);\n let ignored = this.ignored & ~sigbit(sig);\n if (handler === 'ignore') ignored |= sigbit(sig);\n else if (handler !== 'default') handlers.set(sig, handler);\n return { handlers, ignored };\n }\n\n private async change(sig: number, handler: SignalHandler | 'ignore' | 'default'): Promise<void> {\n const { handlers, ignored } = this.disposed(sig, handler);\n await this.report(handlers, ignored, handler === 'default' ? sigbit(sig) : 0);\n this.handlers = handlers;\n this.ignored = ignored;\n if (handlers.size > 0) void this.watch();\n }\n\n private raise(sig: number): void {\n this.call({ op: 'proc-kill', pid: this.pid, sig }).catch(this.onError);\n }\n\n private async report(\n handlers: Map<number, SignalHandler>,\n ignored: number,\n defaults: number\n ): Promise<void> {\n const caught = caughtOf(handlers);\n const same = caught === this.reported.caught && ignored === this.reported.ignored;\n if (same && defaults === 0) return;\n this.reported = { caught, ignored };\n await this.call({ op: 'sig-mask', caught, ignored, ...(defaults ? { defaults } : {}) });\n }\n}\n", "import type { DeviceMeta, KernelFdKind } from '../../kernel/fd-table.ts';\nimport {\n parseSyncFsUsage,\n type SyncFsBridgeStat,\n type SyncFsResult,\n} from '../../realm/sync-fs-wire.ts';\nimport { JsCallError, modeOf } from './js-kernel.ts';\n\nexport interface JsOpenOptions {\n read?: boolean;\n write?: boolean;\n append?: boolean;\n create?: boolean;\n exclusive?: boolean;\n truncate?: boolean;\n mode?: number;\n nonblock?: boolean;\n signal?: AbortSignal;\n}\n\nexport interface JsWriteOptions {\n nonblock?: boolean;\n}\n\nexport type JsFdType = 'file' | 'pipe' | 'tty' | 'socket' | 'device' | 'directory';\n\nexport interface FdInfo {\n tty?: boolean;\n kind?: KernelFdKind;\n meta?: DeviceMeta | { dir: string };\n terminal?: string;\n access?: 'read' | 'write';\n}\n\nexport const CHUNK = 64 * 1024;\nexport const MAX_IO = 1024 * 1024;\nexport const MAX_PREAD = 16 * 1024 * 1024;\n\nexport function intoTarget(\n into: Uint8Array | undefined,\n offset: number,\n length: number\n): { into: Uint8Array; at: number } | undefined {\n if (!into) return undefined;\n if (!Number.isSafeInteger(offset) || offset < 0 || offset + length > into.length)\n throw Object.assign(new RangeError('read: the buffer is too small'), { code: 'EINVAL' });\n return { into, at: offset };\n}\nconst O_WRONLY = 0o1;\nconst O_RDWR = 0o2;\nconst O_APPEND = 0o2000;\n\nexport function typeOf(info: FdInfo): JsFdType {\n if (info.meta && 'dir' in info.meta) return 'directory';\n if (info.meta && 'device' in info.meta) return 'device';\n if (info.tty || info.kind === 'tty') return 'tty';\n if (info.kind === 'socket') return 'socket';\n return info.kind === 'file' ? 'file' : 'pipe';\n}\n\nfunction device(info: FdInfo): DeviceMeta | undefined {\n return info.meta && 'device' in info.meta ? info.meta : undefined;\n}\n\nexport function readDevice(\n info: FdInfo,\n max: number,\n random: (bytes: Uint8Array) => void\n): Uint8Array | undefined {\n if (typeOf(info) === 'directory') throw new JsCallError('EISDIR', 'read');\n const dev = device(info);\n if (!dev) return undefined;\n if (dev.access === 'write') throw new JsCallError('EBADF', 'read');\n if (dev.device === 'null') return new Uint8Array(0);\n const out = new Uint8Array(Math.min(max, CHUNK));\n if (dev.device === 'urandom') random(out);\n return out;\n}\n\nexport function writeDevice(info: FdInfo): boolean {\n if (typeOf(info) === 'directory') throw new JsCallError('EISDIR', 'write');\n const dev = device(info);\n if (!dev) return false;\n if (dev.access === 'read') throw new JsCallError('EBADF', 'write');\n if (dev.device === 'full') throw new JsCallError('ENOSPC', 'write');\n return true;\n}\n\nexport function brokenPipe(err: unknown, info: FdInfo): boolean {\n return err instanceof JsCallError && err.code === 'EPIPE' && typeOf(info) !== 'socket';\n}\n\nexport function written(r: SyncFsResult, fallback: number): number {\n return r.ok && r.kind === 'json' && typeof r.json === 'number' ? r.json : fallback;\n}\n\nexport interface JsStatFs {\n type: number;\n bsize: number;\n blocks: number;\n bfree: number;\n bavail: number;\n files: number;\n ffree: number;\n quota: number;\n usage: number;\n}\n\nconst BLOCK = 4096;\n\nexport function statFsOf(json: unknown): JsStatFs {\n const usage = parseSyncFsUsage(json);\n const blocks = usage ? Math.ceil(usage.quota / BLOCK) : 0;\n const free = usage ? Math.max(0, Math.floor((usage.quota - usage.usage) / BLOCK)) : 0;\n const bytes = { quota: usage?.quota ?? 0, usage: usage?.usage ?? 0 };\n return { type: 0, bsize: BLOCK, blocks, bfree: free, bavail: free, files: 0, ffree: 0, ...bytes };\n}\n\nexport function joined(parts: Uint8Array[], length: number): Uint8Array {\n if (parts.length === 1) return parts[0] as Uint8Array;\n const out = new Uint8Array(length);\n let at = 0;\n for (const part of parts) {\n out.set(part, at);\n at += part.length;\n }\n return out;\n}\n\nexport function fileWrite(fd: number, append: boolean, offset: number, body: Uint8Array) {\n return append\n ? { op: 'fd-write' as const, fd, body }\n : { op: 'fd-pwrite' as const, fd, offset, body };\n}\n\nexport function isExclusive(o: JsOpenOptions): boolean {\n return o.create === true && o.exclusive === true;\n}\n\nexport function absent(err: unknown): undefined {\n if (err instanceof JsCallError && err.code === 'ENOENT') return undefined;\n throw err;\n}\n\nexport function checkOpen(abs: string, o: JsOpenOptions, existing?: SyncFsBridgeStat): void {\n if (existing && isExclusive(o)) throw new JsCallError('EEXIST', abs);\n if (!existing && !o.create) throw new JsCallError('ENOENT', abs);\n if (existing?.isDirectory) throw new JsCallError('EISDIR', abs);\n}\n\nfunction flagsOf(o: JsOpenOptions): number {\n const write = o.write || o.append || o.truncate;\n const access = write ? (o.read ? O_RDWR : O_WRONLY) : 0;\n return access | (o.append ? O_APPEND : 0) | (o.nonblock ? O_NONBLOCK_OPEN : 0);\n}\n\nconst O_NONBLOCK_OPEN = 0o4000;\n\nexport function openRequest(abs: string, o: JsOpenOptions) {\n return {\n op: 'fd-open-vfs' as const,\n path: abs,\n flags: flagsOf(o),\n position: 0,\n ...(isExclusive(o) ? { exclusive: true } : o.create ? { create: true } : { existing: true }),\n ...(o.truncate ? { truncate: true } : {}),\n ...(o.create || isExclusive(o) ? { mode: o.mode === undefined ? 0o666 : modeOf(o.mode) } : {}),\n };\n}\n\nexport function index(n: number, what: string): void {\n if (!Number.isSafeInteger(n) || n < 0) throw new JsCallError('EINVAL', what);\n}\n", "import { inShm } from '../../fs/dev-removal.ts';\nimport type { DeviceMeta } from '../../kernel/fd-table.ts';\nimport { parseSyncFsStat, type SyncFsBridgeStat } from '../../realm/sync-fs-wire.ts';\nimport type { SyncSabRequestBody } from '../../realm/sync-sab-wire.ts';\nimport type { JsFile } from './js-context.ts';\nimport {\n type FdInfo,\n index,\n isExclusive,\n type JsOpenOptions,\n joined,\n MAX_IO,\n openRequest,\n} from './js-io.ts';\nimport { JsCallError } from './js-kernel.ts';\nimport type { JsSyncFile } from './js-sync.ts';\n\nexport type DevStep<T> = Generator<SyncSabRequestBody, T, unknown>;\n\nexport const DEV_READ_MAX = 64 * 1024 * 1024;\n\nconst DEVICES: readonly string[] = ['null', 'zero', 'full', 'random', 'urandom'];\nconst STDIO: readonly string[] = ['stdin', 'stdout', 'stderr'];\nconst SELF_FD = '/proc/self/fd';\nconst S_IFMT = 0o170000;\nconst DIR = 0o040000;\nconst LINK = 0o120000;\nconst CHAR = 0o020000;\nconst BORN = Date.now();\nconst CHAR_KINDS: ReadonlySet<string | undefined> = new Set([\n 'device',\n 'tty',\n 'clipboard',\n 'sealed',\n]);\n\ntype DevNode =\n | { kind: 'dir'; mode: number }\n | { kind: 'device' }\n | { kind: 'tty' }\n | { kind: 'clipboard' }\n | { kind: 'sealed' }\n | { kind: 'terminal'; name: string; pts?: number }\n | { kind: 'link'; target: string; fd?: number }\n | { kind: 'fd'; fd: number };\n\ninterface TtyOwner {\n uid: number;\n gid: number;\n mode?: number;\n}\n\nexport function inDev(abs: string): boolean {\n return abs.startsWith('/dev') && (abs.length === 4 || abs[4] === '/') && !inShm(abs);\n}\n\nfunction missing(path: string): never {\n throw new JsCallError('ENOENT', path);\n}\n\nfunction nodeStat(mode: number, size = 0, owner?: { uid: number; gid: number }): SyncFsBridgeStat {\n return {\n isFile: false,\n isDirectory: (mode & S_IFMT) === DIR,\n isSymbolicLink: (mode & S_IFMT) === LINK,\n size,\n mode,\n mtimeMs: BORN,\n atimeMs: BORN,\n ctimeMs: BORN,\n nlink: 1,\n uid: owner?.uid ?? 0,\n gid: owner?.gid ?? 0,\n };\n}\n\nfunction* lookup(abs: string): DevStep<DevNode> {\n if (abs === '/dev') return { kind: 'dir', mode: DIR | 0o755 };\n const name = abs.slice('/dev/'.length);\n if (DEVICES.includes(name)) return { kind: 'device' };\n if (name === 'tty') return { kind: 'tty' };\n if (name === 'clipboard') return { kind: 'clipboard' };\n if (name === 'sealed') return { kind: 'sealed' };\n const std = STDIO.indexOf(name);\n if (std >= 0) return { kind: 'link', target: `${SELF_FD}/${std}`, fd: std };\n if (name === 'fd') return { kind: 'link', target: SELF_FD };\n const fd = /^fd\\/(\\d+)$/.exec(name)?.[1];\n if (fd !== undefined) return { kind: 'fd', fd: Number(fd) };\n if (/^tty\\d+$/.test(name)) {\n const names = (yield { op: 'fd-tty-names' }) as string[];\n if (names.includes(abs)) return { kind: 'terminal', name: abs };\n }\n if (name === 'pts') return { kind: 'dir', mode: DIR | 0o555 };\n const pts = /^pts\\/(\\d+)$/.exec(name)?.[1];\n if (pts !== undefined) {\n const open = (yield { op: 'pty-list' }) as number[];\n if (open.includes(Number(pts))) return { kind: 'terminal', name: abs, pts: Number(pts) };\n }\n return missing(abs);\n}\n\nfunction* fdInfo(fd: number, path: string): DevStep<FdInfo> {\n try {\n return (yield { op: 'fd-info', fd }) as FdInfo;\n } catch (err) {\n if (err instanceof JsCallError && err.code === 'EBADF') return missing(path);\n throw err;\n }\n}\n\nfunction* pathStat(path: string): DevStep<SyncFsBridgeStat> {\n const s = parseSyncFsStat(yield { op: 'stat', path });\n if (!s) throw new JsCallError('EIO', 'stat');\n return s;\n}\n\nfunction* terminalStat(name: string): DevStep<SyncFsBridgeStat> {\n const owner = (yield { op: 'fd-tty-owner', name }) as TtyOwner | null;\n if (owner) return nodeStat(CHAR | (owner.mode ?? 0o620), 0, owner);\n return nodeStat(CHAR | (name.startsWith('/dev/pts/') ? 0o620 : 0o666));\n}\n\nfunction* fdStat(fd: number, path: string): DevStep<SyncFsBridgeStat> {\n const info = yield* fdInfo(fd, path);\n if (info.meta && 'dir' in info.meta) return yield* pathStat(info.meta.dir);\n if (info.kind === 'file') {\n const file = (yield { op: 'fd-vfs-stat', fd }) as { path: string; size: number; orphan?: true };\n if (file.orphan) return { ...nodeStat(0o100600, file.size), isFile: true };\n const st = yield* pathStat(file.path);\n return { ...st, size: file.size };\n }\n if (info.terminal) return yield* terminalStat(info.terminal);\n if (CHAR_KINDS.has(info.kind)) return nodeStat(CHAR | 0o666);\n if (info.kind === 'socket') return nodeStat(0o140777);\n return nodeStat(0o010600);\n}\n\nfunction* fdTarget(fd: number, path: string): DevStep<string> {\n const info = yield* fdInfo(fd, path);\n if (info.meta && 'dir' in info.meta) return info.meta.dir;\n if (info.kind === 'file') return ((yield { op: 'fd-vfs-stat', fd }) as { path: string }).path;\n if (info.terminal) return info.terminal;\n if (info.meta && 'device' in info.meta) return `/dev/${(info.meta as DeviceMeta).device}`;\n if (info.kind === 'clipboard' || info.kind === 'sealed') return `/dev/${info.kind}`;\n return `${info.kind === 'socket' ? 'socket' : 'pipe'}:[${fd}]`;\n}\n\nexport function devFdStat(fd: number): DevStep<SyncFsBridgeStat> {\n return fdStat(fd, `/dev/fd/${fd}`);\n}\n\nfunction linkStat(target: string): SyncFsBridgeStat {\n return nodeStat(LINK | 0o777, target.length);\n}\n\nexport function* devStat(abs: string, follow: boolean): DevStep<SyncFsBridgeStat> {\n const node = yield* lookup(abs);\n switch (node.kind) {\n case 'dir':\n return nodeStat(node.mode);\n case 'device':\n case 'tty':\n case 'clipboard':\n case 'sealed':\n return nodeStat(CHAR | 0o666);\n case 'terminal':\n return yield* terminalStat(node.name);\n case 'link':\n if (!follow) return linkStat(node.target);\n return node.fd === undefined ? nodeStat(DIR | 0o555) : yield* fdStat(node.fd, abs);\n case 'fd':\n return follow ? yield* fdStat(node.fd, abs) : linkStat(yield* fdTarget(node.fd, abs));\n }\n}\n\nexport function* devExists(abs: string): DevStep<boolean> {\n try {\n yield* devStat(abs, true);\n return true;\n } catch (err) {\n if (err instanceof JsCallError) return false;\n throw err;\n }\n}\n\nexport function* devReadlink(abs: string): DevStep<string> {\n const node = yield* lookup(abs);\n if (node.kind === 'link') return node.target;\n if (node.kind === 'fd') return yield* fdTarget(node.fd, abs);\n throw new JsCallError('EINVAL', abs);\n}\n\nexport function* devResolveTarget(abs: string): DevStep<string | undefined> {\n const node = yield* lookup(abs);\n if (node.kind === 'fd') return yield* fdTarget(node.fd, abs);\n if (node.kind === 'link' && node.fd !== undefined) return yield* fdTarget(node.fd, abs);\n return undefined;\n}\n\nexport function* devReaddir(abs: string): DevStep<string[]> {\n if (abs === '/dev/fd') {\n const fds = (yield { op: 'fd-list' }) as Array<{ fd: number }>;\n return fds.map(({ fd }) => String(fd));\n }\n if (abs === '/dev/pts') {\n const open = (yield { op: 'pty-list' }) as number[];\n return open.map(String).sort();\n }\n const node = yield* lookup(abs);\n if (node.kind !== 'dir') throw new JsCallError('ENOTDIR', abs);\n const names = (yield { op: 'fd-tty-names' }) as string[];\n const ttys = names.filter((n) => /^\\/dev\\/tty\\d+$/.test(n)).map((n) => n.slice(5));\n return [...DEVICES, 'clipboard', 'sealed', 'tty', 'fd', 'pts', 'shm', ...STDIO, ...ttys].sort();\n}\n\nexport interface DevOpened {\n fd: number;\n file: boolean;\n read: boolean;\n write: boolean;\n}\n\nfunction* aliasOf(\n fd: number,\n abs: string,\n o: JsOpenOptions\n): DevStep<Omit<DevOpened, 'read' | 'write'>> {\n const info = yield* fdInfo(fd, abs);\n const file = info.kind === 'file';\n if (file) {\n const at = (yield { op: 'fd-vfs-stat', fd }) as { path: string; size: number; orphan?: true };\n if (!at.orphan)\n return { fd: (yield openRequest(at.path, { ...o, create: false })) as number, file };\n const wantWrite = o.write === true || o.append === true || o.truncate === true;\n if (wantWrite && info.access === 'read') throw new JsCallError('EBADF', abs);\n if (!wantWrite && info.access === 'write') throw new JsCallError('EBADF', abs);\n }\n const copy = (yield { op: 'fd-dup', fd, min: 3 }) as number;\n if (file && o.truncate) {\n try {\n yield { op: 'fd-resize', fd: copy, size: 0 };\n } catch (err) {\n yield { op: 'fd-close', fd: copy };\n throw err;\n }\n }\n return { fd: copy, file };\n}\n\nfunction accessFlags(o: JsOpenOptions): number {\n const write = o.write === true || o.append === true || o.truncate === true;\n return write ? (o.read === true ? 2 : 1) : 0;\n}\n\nfunction* opened(abs: string, o: JsOpenOptions): DevStep<Omit<DevOpened, 'read' | 'write'>> {\n const node = yield* lookup(abs);\n if (isExclusive(o)) throw new JsCallError('EEXIST', abs);\n switch (node.kind) {\n case 'device':\n return { fd: (yield openRequest(abs, { ...o, create: false })) as number, file: false };\n case 'tty':\n return { fd: (yield { op: 'fd-open-tty' }) as number, file: false };\n case 'clipboard':\n return {\n fd: (yield { op: 'fd-open-clipboard', flags: accessFlags(o) }) as number,\n file: false,\n };\n case 'sealed':\n return { fd: (yield { op: 'fd-open-sealed', flags: accessFlags(o) }) as number, file: false };\n case 'terminal': {\n const req =\n node.pts === undefined\n ? { op: 'fd-open-tty' as const, name: node.name }\n : { op: 'pty-slave-open' as const, n: node.pts, noctty: true };\n return { fd: (yield req) as number, file: false };\n }\n case 'fd':\n return yield* aliasOf(node.fd, abs, o);\n case 'link':\n if (node.fd !== undefined) return yield* aliasOf(node.fd, abs, o);\n throw new JsCallError('EISDIR', abs);\n case 'dir':\n throw new JsCallError('EISDIR', abs);\n }\n}\n\nexport function* devOpen(abs: string, o: JsOpenOptions): DevStep<DevOpened> {\n const write = o.write === true || o.append === true || o.truncate === true;\n return { ...(yield* opened(abs, o)), read: o.read === true || !write, write };\n}\n\nexport async function devAsync<T>(\n kernel: { json(req: SyncSabRequestBody): Promise<unknown> },\n step: DevStep<T>\n): Promise<T> {\n let next = step.next();\n while (!next.done) {\n let answer: { value: unknown } | { error: unknown };\n try {\n answer = { value: await kernel.json(next.value) };\n } catch (error) {\n answer = { error };\n }\n next = 'value' in answer ? step.next(answer.value) : step.throw(answer.error);\n }\n return next.value;\n}\n\nexport function devSync<T>(\n kernel: { json(req: SyncSabRequestBody): unknown },\n step: DevStep<T>\n): T {\n let next = step.next();\n while (!next.done) {\n let answer: { value: unknown } | { error: unknown };\n try {\n answer = { value: kernel.json(next.value) };\n } catch (error) {\n answer = { error };\n }\n next = 'value' in answer ? step.next(answer.value) : step.throw(answer.error);\n }\n return next.value;\n}\n\nfunction tooLarge(got: number): void {\n if (got > DEV_READ_MAX) throw new JsCallError('EFBIG', 'readFile');\n}\n\nexport interface StreamIo {\n read(fd: number, max: number): Promise<Uint8Array>;\n write(fd: number, data: Uint8Array): Promise<void>;\n close(fd: number): Promise<void>;\n}\n\nexport interface StreamSyncIo {\n read(fd: number, max: number): Uint8Array;\n write(fd: number, data: Uint8Array): void;\n close(fd: number): void;\n}\n\nfunction liveness(path: string) {\n let open = true;\n return {\n live: (): void => {\n if (!open) throw new JsCallError('EBADF', path);\n },\n end: (): void => {\n open = false;\n },\n };\n}\n\nexport interface StreamAccess {\n read: boolean;\n write: boolean;\n}\n\nfunction allowed(may: boolean, what: string): void {\n if (!may) throw new JsCallError('EBADF', what);\n}\n\nexport function streamFile(\n fd: number,\n path: string,\n io: StreamIo,\n access: StreamAccess\n): { file: JsFile; invalidate: () => void } {\n const { live, end } = liveness(path);\n const file: JsFile = {\n fd,\n path,\n async size() {\n live();\n return 0;\n },\n async read(position, length) {\n index(position, 'read');\n index(length, 'read');\n live();\n allowed(access.read, 'read');\n return length === 0 ? new Uint8Array(0) : io.read(fd, Math.min(length, MAX_IO));\n },\n async write(position, data) {\n index(position, 'write');\n live();\n allowed(access.write, 'write');\n await io.write(fd, data);\n return data.length;\n },\n async truncate(size) {\n live();\n index(size, 'truncate');\n throw new JsCallError('EINVAL', 'truncate');\n },\n sync: async () => live(),\n async close() {\n live();\n end();\n await io.close(fd);\n },\n };\n return { file, invalidate: end };\n}\n\nexport function streamSyncFile(\n fd: number,\n path: string,\n io: StreamSyncIo,\n access: StreamAccess\n): { file: JsSyncFile; invalidate: () => void } {\n const { live, end } = liveness(path);\n const file: JsSyncFile = {\n fd,\n path,\n size() {\n live();\n return 0;\n },\n read(position, length) {\n index(position, 'read');\n index(length, 'read');\n live();\n allowed(access.read, 'read');\n return length === 0 ? new Uint8Array(0) : io.read(fd, Math.min(length, MAX_IO));\n },\n write(position, data) {\n index(position, 'write');\n live();\n allowed(access.write, 'write');\n io.write(fd, data);\n return data.length;\n },\n truncate(size) {\n live();\n index(size, 'truncate');\n throw new JsCallError('EINVAL', 'truncate');\n },\n sync: () => live(),\n close() {\n live();\n end();\n io.close(fd);\n },\n };\n return { file, invalidate: end };\n}\n\nexport async function readWhole(file: JsFile): Promise<Uint8Array> {\n try {\n const parts: Uint8Array[] = [];\n let got = 0;\n for (;;) {\n const chunk = await file.read(got, MAX_IO);\n if (chunk.length === 0) return joined(parts, got);\n got += chunk.length;\n tooLarge(got);\n parts.push(chunk);\n }\n } finally {\n await file.close();\n }\n}\n\nexport function readWholeSync(file: JsSyncFile): Uint8Array {\n try {\n const parts: Uint8Array[] = [];\n let got = 0;\n for (;;) {\n const chunk = file.read(got, MAX_IO);\n if (chunk.length === 0) return joined(parts, got);\n got += chunk.length;\n tooLarge(got);\n parts.push(chunk);\n }\n } finally {\n file.close();\n }\n}\n", "import type { LockHeld, LockKind, LockTarget } from '../process-locks.ts';\nimport { WasiError } from './wasi-files.ts';\nimport type { WasiFunction } from './wasi-host.ts';\nimport type { WasiMemory } from './wasi-memory.ts';\n\nexport const F_GETLK = 12;\nexport const F_SETLK = 13;\nexport const F_SETLKW = 14;\n\nconst F_RDLCK = 0;\nconst F_WRLCK = 1;\nconst F_UNLCK = 2;\nconst SEEK_SET = 0;\nconst SEEK_CUR = 1;\nconst SEEK_END = 2;\n\nexport interface LockedFile {\n target: LockTarget;\n path?: string;\n readable?: boolean;\n writable?: boolean;\n offset(): number;\n size(): number;\n}\n\nconst LOCK_NB = 4;\nconst FLOCK_OPS: Readonly<Record<number, FlockKind>> = { 1: 'shared', 2: 'exclusive', 8: 'unlock' };\n\nexport type FlockKind = 'shared' | 'exclusive' | 'unlock';\n\nexport interface LockCalls {\n set(\n target: LockTarget,\n kind: LockKind | 'unlock',\n start: number,\n len: number,\n wait: boolean\n ): unknown;\n get(target: LockTarget, kind: LockKind, start: number, len: number): LockHeld | null;\n flock(fd: number, kind: FlockKind, wait: boolean): unknown;\n}\n\nexport interface LockHost {\n mem: WasiMemory;\n file(fd: number): LockedFile;\n flush(file: LockedFile): void;\n locked(): void;\n promote(fd: number, moved?: boolean): void;\n reread(fd: number): void;\n calls: LockCalls;\n}\n\nfunction kindOf(type: number): LockKind | 'unlock' {\n if (type === F_RDLCK) return 'read';\n if (type === F_WRLCK) return 'write';\n if (type === F_UNLCK) return 'unlock';\n throw new WasiError('EINVAL');\n}\n\nfunction baseOf(file: LockedFile, whence: number): number {\n if (whence === SEEK_SET) return 0;\n if (whence === SEEK_CUR) return file.offset();\n if (whence === SEEK_END) return file.size();\n throw new WasiError('EINVAL');\n}\n\nfunction writeHolder(view: DataView, at: number, found: LockHeld | null): void {\n if (!found) {\n view.setInt16(at, F_UNLCK, true);\n return;\n }\n view.setInt16(at, found.kind === 'read' ? F_RDLCK : F_WRLCK, true);\n view.setInt16(at + 2, SEEK_SET, true);\n view.setBigInt64(at + 8, BigInt(found.start), true);\n view.setBigInt64(at + 16, BigInt(found.len), true);\n view.setInt32(at + 24, found.pid, true);\n}\n\nexport function lockImports(host: LockHost): Record<string, WasiFunction> {\n return {\n flock: (fd: number, op: number) => {\n host.promote(fd);\n const kind = FLOCK_OPS[op & ~LOCK_NB];\n if (!kind) throw new WasiError('EINVAL');\n const shared = host.calls.flock(fd, kind, kind !== 'unlock' && (op & LOCK_NB) === 0);\n if (kind !== 'unlock' && shared === true) host.reread(fd);\n },\n fcntl_lock: (fd: number, cmd: number, at: number) => {\n if (cmd !== F_GETLK && cmd !== F_SETLK && cmd !== F_SETLKW) throw new WasiError('EINVAL');\n host.promote(fd, true);\n const file = host.file(fd);\n const view = host.mem.view();\n const kind = kindOf(view.getInt16(at, true));\n const start =\n baseOf(file, view.getInt16(at + 2, true)) + Number(view.getBigInt64(at + 8, true));\n const len = Number(view.getBigInt64(at + 16, true));\n if (cmd === F_GETLK) {\n if (kind === 'unlock') throw new WasiError('EINVAL');\n writeHolder(view, at, host.calls.get(file.target, kind, start, len));\n return;\n }\n if (\n (kind === 'read' && file.readable === false) ||\n (kind === 'write' && file.writable === false)\n )\n throw new WasiError('EBADF');\n if (kind !== 'write') host.flush(file);\n const shared = host.calls.set(file.target, kind, start, len, cmd === F_SETLKW);\n if (kind === 'unlock') return;\n host.locked();\n if (shared === true) host.reread(fd);\n },\n };\n}\n", "import type { SemWaitHow } from '../../kernel/sem.ts';\nimport { CLOCK } from './wasi-abi.ts';\nimport { WasiError } from './wasi-files.ts';\nimport type { WasiFunction, WasiHost } from './wasi-host.ts';\n\nconst SEM_CREAT = 1;\nconst SEM_EXCL = 2;\nconst HOW: readonly SemWaitHow[] = ['block', 'try', 'timed'];\nconst NS_PER_MS = 1_000_000n;\n\nexport function remainingMs(deadline: bigint, now: bigint): number {\n if (deadline <= now) return 0;\n return Number((deadline - now + NS_PER_MS - 1n) / NS_PER_MS);\n}\n\nexport function semImports(host: WasiHost): Record<string, WasiFunction> {\n const { mem } = host;\n const call = (req: Parameters<typeof host.o.kernel.call>[0]) => host.o.kernel.call(req);\n const name = (ptr: number, len: number) => mem.string(ptr, len);\n return {\n sem_open: (np: number, nl: number, oflag: number, mode: number, value: number, out: number) => {\n const handle = call({\n op: 'sem-open',\n name: name(np, nl),\n create: (oflag & SEM_CREAT) !== 0,\n exclusive: (oflag & SEM_EXCL) !== 0,\n mode,\n value,\n }) as number;\n mem.view().setUint32(out, handle, true);\n },\n sem_close: (handle: number) => void call({ op: 'sem-close', handle }),\n sem_unlink: (np: number, nl: number) => void call({ op: 'sem-unlink', name: name(np, nl) }),\n sem_post: (handle: number) => void call({ op: 'sem-post', handle }),\n sem_wait: (handle: number, how: number, clock: number, deadline: bigint) => {\n const kind = HOW[how];\n if (!kind) throw new WasiError('EINVAL');\n let timeoutMs = -1;\n if (kind === 'timed') {\n if (deadline < 0n) throw new WasiError('EINVAL');\n if (clock !== CLOCK.REALTIME && clock !== CLOCK.MONOTONIC) throw new WasiError('EINVAL');\n timeoutMs = remainingMs(deadline, host.now(clock));\n }\n call({ op: 'sem-wait', handle, how: kind, timeoutMs });\n },\n sem_getvalue: (handle: number, out: number) =>\n void mem.view().setInt32(out, call({ op: 'sem-getvalue', handle }) as number, true),\n };\n}\n", "import type { Cred } from '../../kernel/cred.ts';\nimport { CRED_GEN, UMASK } from './wasi-files.ts';\n\nexport class CredCache {\n private cred: Cred | undefined;\n private stamp = 0;\n private readonly fetch: () => Cred;\n private readonly shared: Int32Array | undefined;\n\n constructor(fetch: () => Cred, shared?: Int32Array) {\n this.fetch = fetch;\n this.shared = shared;\n }\n\n private gen(): number {\n return this.shared ? Atomics.load(this.shared, CRED_GEN) : 0;\n }\n\n get(): Cred {\n const gen = this.gen();\n if (this.cred === undefined || this.stamp !== gen) {\n this.cred = this.fetch();\n this.stamp = gen;\n }\n return this.cred;\n }\n\n change(apply: () => Cred): Cred {\n const seen = this.gen();\n const cred = apply();\n if (!this.shared) {\n this.cred = cred;\n return cred;\n }\n const was = Atomics.add(this.shared, CRED_GEN, 1);\n this.cred = was === seen ? cred : undefined;\n this.stamp = was + 1;\n return cred;\n }\n}\n\nconst KNOWN = 0x10000;\nconst LOCKED = 0x20000;\n\nexport interface UmaskSignals {\n quiet<T>(fn: () => T): T;\n deliver(): void;\n}\n\nexport const UNGATED: UmaskSignals = { quiet: (fn) => fn(), deliver: () => {} };\n\nexport class UmaskCache {\n private mask: number | undefined;\n private readonly call: (mask?: number) => number;\n private readonly shared: Int32Array | undefined;\n private readonly signals: UmaskSignals;\n\n constructor(call: (mask?: number) => number, shared?: Int32Array, signals = UNGATED) {\n this.call = call;\n this.shared = shared;\n this.signals = signals;\n }\n\n get(): number {\n const { shared } = this;\n if (!shared) {\n this.mask ??= this.call();\n return this.mask;\n }\n for (;;) {\n const seen = Atomics.load(shared, UMASK);\n if (seen & LOCKED) Atomics.wait(shared, UMASK, seen);\n else if (seen & KNOWN) return seen & 0o777;\n else {\n const mask = this.call();\n if (Atomics.compareExchange(shared, UMASK, 0, mask | KNOWN) === 0) return mask;\n }\n }\n }\n\n set(mask: number): number {\n try {\n return this.signals.quiet(() => this.change(mask));\n } finally {\n this.signals.deliver();\n }\n }\n\n private change(mask: number): number {\n const { shared } = this;\n if (!shared) {\n const old = this.call(mask);\n this.mask = mask & 0o777;\n return old;\n }\n const seen = this.lock(shared);\n let next = seen;\n try {\n const old = this.call(mask);\n next = (mask & 0o777) | KNOWN;\n return old;\n } finally {\n Atomics.store(shared, UMASK, next);\n Atomics.notify(shared, UMASK);\n }\n }\n\n private lock(shared: Int32Array): number {\n for (;;) {\n const seen = Atomics.load(shared, UMASK);\n if (seen & LOCKED) Atomics.wait(shared, UMASK, seen);\n else if (Atomics.compareExchange(shared, UMASK, seen, seen | LOCKED) === seen) return seen;\n }\n }\n}\n", "export const PIPE_CAPACITY = 64 * 1024;\n\nexport class PipeError extends Error {\n readonly code: 'EPIPE' | 'EINTR';\n\n constructor(code: 'EPIPE' | 'EINTR') {\n super(code);\n this.code = code;\n }\n}\n\nexport class KernelPipe {\n private chunks: Uint8Array[] = [];\n private size = 0;\n private readers = 0;\n private writers = 0;\n private waiters: Array<() => void> = [];\n\n readonly capacity: number;\n\n constructor(capacity: number = PIPE_CAPACITY) {\n this.capacity = capacity;\n }\n\n get buffered(): number {\n return this.size;\n }\n\n get readReady(): boolean {\n return this.size > 0 || this.writers === 0;\n }\n\n get writeReady(): boolean {\n return this.size < this.capacity || this.readers === 0;\n }\n\n get writersGone(): boolean {\n return this.writers === 0;\n }\n\n get readersGone(): boolean {\n return this.readers === 0;\n }\n\n openRead(): void {\n this.readers += 1;\n }\n\n openWrite(): void {\n this.writers += 1;\n }\n\n closeRead(): void {\n if (this.readers > 0) this.readers -= 1;\n if (this.readers === 0) {\n this.chunks = [];\n this.size = 0;\n }\n this.wake();\n }\n\n closeWrite(): void {\n if (this.writers > 0) this.writers -= 1;\n this.wake();\n }\n\n async read(max: number, signal?: AbortSignal): Promise<Uint8Array> {\n while (this.size === 0) {\n if (this.writers === 0) return new Uint8Array(0);\n await this.changed(signal);\n }\n const out = this.take(Math.min(max, this.size));\n this.wake();\n return out;\n }\n\n async peek(max: number, signal?: AbortSignal): Promise<Uint8Array> {\n while (this.size === 0) {\n if (this.writers === 0) return new Uint8Array(0);\n await this.changed(signal);\n }\n const out = new Uint8Array(Math.min(max, this.size));\n let filled = 0;\n for (const chunk of this.chunks) {\n if (filled === out.length) break;\n const count = Math.min(chunk.length, out.length - filled);\n out.set(chunk.subarray(0, count), filled);\n filled += count;\n }\n return out;\n }\n\n async write(bytes: Uint8Array, signal?: AbortSignal): Promise<number> {\n let offset = 0;\n while (offset < bytes.length) {\n if (this.readers === 0) throw new PipeError('EPIPE');\n const room = this.capacity - this.size;\n if (room === 0) {\n try {\n await this.changed(signal);\n } catch (e) {\n if (offset > 0) return offset;\n throw e;\n }\n continue;\n }\n const n = Math.min(room, bytes.length - offset);\n this.chunks.push(bytes.slice(offset, offset + n));\n this.size += n;\n offset += n;\n this.wake();\n }\n return bytes.length;\n }\n\n private take(n: number): Uint8Array {\n const out = new Uint8Array(n);\n let filled = 0;\n while (filled < n) {\n const head = this.chunks[0];\n const count = Math.min(head.length, n - filled);\n out.set(head.subarray(0, count), filled);\n filled += count;\n if (count === head.length) this.chunks.shift();\n else this.chunks[0] = head.subarray(count);\n }\n this.size -= n;\n return out;\n }\n\n changed(signal?: AbortSignal): Promise<void> {\n if (signal?.aborted) return Promise.reject(new PipeError('EINTR'));\n return new Promise((resolve, reject) => {\n const onAbort = (): void => {\n this.waiters = this.waiters.filter((w) => w !== waiter);\n reject(new PipeError('EINTR'));\n };\n const waiter = (): void => {\n signal?.removeEventListener('abort', onAbort);\n resolve();\n };\n this.waiters.push(waiter);\n signal?.addEventListener('abort', onAbort, { once: true });\n });\n }\n\n private wake(): void {\n const waiters = this.waiters;\n this.waiters = [];\n for (const resolve of waiters) resolve();\n }\n}\n", "import type { ClipboardChannel } from './clipboard.ts';\nimport { KernelPipe, type PipeError } from './pipe.ts';\nimport type { PtyPair } from './pty.ts';\nimport type { SealedChannel } from './sealed.ts';\nimport type { KernelTty } from './tty.ts';\n\nexport type KernelErrno =\n | 'EBADF'\n | 'EPROTO'\n | 'EDEADLK'\n | 'ENOLCK'\n | 'EEXIST'\n | 'ELOOP'\n | 'EOVERFLOW'\n | 'ENAMETOOLONG'\n | 'EPIPE'\n | 'EMFILE'\n | 'EINVAL'\n | 'ENOENT'\n | 'ENOTDIR'\n | 'ENOEXEC'\n | 'ECHILD'\n | 'ENOSYS'\n | 'ESPIPE'\n | 'ENOSPC'\n | 'EINTR'\n | 'ESRCH'\n | 'ENOTTY'\n | 'ENXIO'\n | 'EPERM'\n | 'EIO'\n | 'EACCES'\n | 'EAGAIN'\n | 'ENOTSOCK'\n | 'EAFNOSUPPORT'\n | 'EPROTONOSUPPORT'\n | 'EPROTOTYPE'\n | 'EOPNOTSUPP'\n | 'EADDRINUSE'\n | 'EADDRNOTAVAIL'\n | 'ENETUNREACH'\n | 'ECONNREFUSED'\n | 'EINPROGRESS'\n | 'EISCONN'\n | 'ENOTCONN'\n | 'EROFS'\n | 'EFBIG'\n | 'EALREADY'\n | 'ETIMEDOUT'\n | 'ECONNABORTED'\n | 'EHOSTUNREACH'\n | 'ECONNRESET'\n | 'EMSGSIZE'\n | 'EDESTADDRREQ'\n | 'ENOPROTOOPT'\n | 'ENOTSUP'\n | 'EILSEQ';\n\nexport class KernelError extends Error {\n readonly code: KernelErrno;\n\n readonly detail?: string;\n\n constructor(code: KernelErrno, detail?: string) {\n super(code);\n this.code = code;\n if (detail !== undefined) this.detail = detail;\n }\n}\n\nexport interface PollState {\n readable: boolean;\n\n writable: boolean;\n\n hangup: boolean;\n\n nread?: number;\n\n rdhup?: boolean;\n\n error?: boolean;\n}\n\nexport interface KernelFile {\n read?(max: number, signal?: AbortSignal): Promise<Uint8Array>;\n\n peek?(max: number, signal?: AbortSignal): Promise<Uint8Array>;\n\n write?(bytes: Uint8Array, signal?: AbortSignal): Promise<number>;\n\n close(): void | Promise<void>;\n\n poll?(): PollState;\n\n changed?(signal?: AbortSignal): Promise<void>;\n\n seek?(offset: number, whence: number): Promise<number>;\n\n flush?(): Promise<void>;\n\n reread?(): Promise<void>;\n\n pread?(max: number, at: number): Promise<Uint8Array>;\n pwrite?(bytes: Uint8Array, at: number): Promise<number>;\n\n resize?(size: number): Promise<void>;\n\n stat?(): Promise<{ path: string; size: number; orphan?: true }>;\n\n known?(): number | undefined;\n\n tty?: KernelTty;\n\n pty?: PtyPair;\n\n sealed?: SealedChannel;\n\n clipboard?: ClipboardChannel;\n\n held?: true;\n\n heldMeta?: HeldMeta;\n\n identity?: object;\n\n fifo?: string;\n}\n\nexport type HeldMeta = { dir: string; preopen?: string; twin?: number } | DeviceMeta;\n\nexport interface DeviceMeta {\n device: KernelDevice;\n access?: DeviceAccess;\n}\n\nexport type DeviceAccess = 'read' | 'write';\n\nexport type OpenAccess = 'read' | 'write' | 'both';\n\nexport function openAccess(flags: number): OpenAccess {\n const mode = flags & 0o3;\n return mode === 0 ? 'read' : mode === 1 ? 'write' : 'both';\n}\n\nexport type KernelDevice = 'null' | 'zero' | 'full' | 'urandom';\n\nexport function pollFile(file: KernelFile): PollState {\n return file.poll?.() ?? { readable: !!file.read, writable: !!file.write, hangup: false };\n}\n\nexport class OpenFile {\n private refs = 1;\n\n private closers: Set<() => void> | undefined;\n\n readonly file: KernelFile;\n\n constructor(file: KernelFile) {\n this.file = file;\n }\n\n retain(): this {\n this.refs += 1;\n return this;\n }\n\n onClose(fn: () => void): () => void {\n this.closers ??= new Set();\n this.closers.add(fn);\n return () => void this.closers?.delete(fn);\n }\n\n release(): void | Promise<void> {\n this.refs -= 1;\n if (this.refs !== 0) return;\n const closers = this.closers;\n this.closers = undefined;\n for (const fn of closers ?? []) fn();\n return this.file.close();\n }\n}\n\nexport function openPipe(capacity?: number): { read: OpenFile; write: OpenFile } {\n const pipe = new KernelPipe(capacity);\n pipe.openRead();\n pipe.openWrite();\n return {\n read: new OpenFile({\n read: async (max, signal) => {\n try {\n return await pipe.read(max, signal);\n } catch (e) {\n throw new KernelError((e as PipeError).code);\n }\n },\n close: () => pipe.closeRead(),\n poll: () => ({\n readable: pipe.readReady,\n writable: false,\n hangup: pipe.writersGone,\n nread: pipe.buffered,\n }),\n changed: (signal) => pipe.changed(signal),\n identity: pipe,\n }),\n write: new OpenFile({\n write: async (bytes, signal) => {\n try {\n return await pipe.write(bytes, signal);\n } catch (e) {\n throw new KernelError((e as PipeError).code);\n }\n },\n close: () => pipe.closeWrite(),\n poll: () => ({ readable: false, writable: pipe.writeReady, hangup: pipe.readersGone }),\n changed: (signal) => pipe.changed(signal),\n identity: pipe,\n }),\n };\n}\n\nexport function bytesSource(data: Uint8Array): OpenFile {\n let offset = 0;\n return new OpenFile({\n read: async (max) => {\n const out = data.subarray(offset, offset + max);\n offset += out.length;\n return out;\n },\n close: () => {},\n });\n}\n\nexport function memoryFile(data: Uint8Array, path: string, position = 0): OpenFile {\n let offset = position;\n return new OpenFile({\n read: async (max) => {\n const out = data.subarray(offset, offset + max);\n offset += out.length;\n return out;\n },\n pread: async (max, at) => data.subarray(at, at + max),\n seek: async (by, whence) => {\n const at = (whence === 1 ? offset : whence === 2 ? data.length : 0) + by;\n if (at < 0) throw new KernelError('EINVAL');\n offset = at;\n return at;\n },\n pwrite: async () => {\n throw new KernelError('EBADF');\n },\n resize: async () => {\n throw new KernelError('EBADF');\n },\n stat: async () => ({ path, size: data.length }),\n close: () => {},\n });\n}\n\nexport function sinkFile(onData: (bytes: Uint8Array) => void): OpenFile {\n return new OpenFile({\n write: async (bytes) => {\n onData(bytes.slice());\n return bytes.length;\n },\n close: () => {},\n });\n}\n\nexport function nullFile(): OpenFile {\n return new OpenFile({\n read: async () => new Uint8Array(0),\n write: async (bytes) => bytes.length,\n close: () => {},\n });\n}\n\nfunction written(device: KernelDevice, bytes: Uint8Array): number {\n if (device === 'full' && bytes.length > 0) throw new KernelError('ENOSPC');\n return bytes.length;\n}\n\nconst DEVICE_PATHS: ReadonlyMap<string, KernelDevice> = new Map([\n ['/dev/null', 'null'],\n ['/dev/zero', 'zero'],\n ['/dev/full', 'full'],\n ['/dev/urandom', 'urandom'],\n ['/dev/random', 'urandom'],\n]);\n\nexport function deviceAt(path: string): KernelDevice | undefined {\n return DEVICE_PATHS.get(path);\n}\n\nexport function deviceFile(device: KernelDevice, access?: DeviceAccess): OpenFile {\n const read = async (max: number): Promise<Uint8Array> => {\n if (device === 'null') return new Uint8Array(0);\n const out = new Uint8Array(max);\n if (device === 'urandom') {\n for (let at = 0; at < max; at += 65536) {\n crypto.getRandomValues(out.subarray(at, Math.min(max, at + 65536)));\n }\n }\n return out;\n };\n return new OpenFile({\n ...(access !== 'write' ? { read } : {}),\n ...(access !== 'read' ? { write: async (bytes: Uint8Array) => written(device, bytes) } : {}),\n seek: async () => 0,\n heldMeta: { device, ...(access ? { access } : {}) },\n close: () => {},\n });\n}\n\nexport function heldFile(meta?: HeldMeta): OpenFile {\n return new OpenFile({ held: true, ...(meta ? { heldMeta: meta } : {}), close: () => {} });\n}\n\nexport type KernelFdKind =\n | 'tty'\n | 'stream'\n | 'file'\n | 'socket'\n | 'held'\n | 'device'\n | 'sealed'\n | 'clipboard';\n\nexport function kernelFdKind(file: KernelFile): Exclude<KernelFdKind, 'socket'> {\n if (file.held) return 'held';\n if (file.heldMeta && 'device' in file.heldMeta) return 'device';\n if (file.tty) return 'tty';\n if (file.sealed) return 'sealed';\n if (file.clipboard) return 'clipboard';\n return file.seek ? 'file' : 'stream';\n}\n\nexport interface ForkedHandles {\n fork(): ForkedHandles;\n clear(): void;\n}\n\nexport class FdTable {\n static readonly MAX_FDS = 1024;\n\n handles: ForkedHandles | undefined;\n private fds = new Map<number, OpenFile>();\n private readonly cloexec = new Set<number>();\n\n private readonly status = new Map<number, number>();\n\n get(fd: number): OpenFile {\n const file = this.fds.get(fd);\n if (!file) throw new KernelError('EBADF');\n return file;\n }\n\n stdioTerminal(): KernelTty | undefined {\n for (const fd of [0, 1, 2]) {\n const tty = this.fds.get(fd)?.file.tty;\n if (tty) return tty;\n }\n return undefined;\n }\n\n numbers(): number[] {\n return [...this.fds.keys()].sort((a, b) => a - b);\n }\n\n has(fd: number): boolean {\n return this.fds.has(fd);\n }\n\n setCloseOnExec(fd: number): void {\n this.get(fd);\n this.cloexec.add(fd);\n }\n\n clearCloseOnExec(fd: number): void {\n this.get(fd);\n this.cloexec.delete(fd);\n }\n\n closesOnExec(fd: number): boolean {\n return this.cloexec.has(fd);\n }\n\n setStatusFlags(fd: number, flags: number): void {\n this.get(fd);\n this.status.set(fd, flags);\n }\n\n statusFlags(fd: number): number | undefined {\n return this.status.get(fd);\n }\n\n install(file: OpenFile, min = 0): number {\n for (let fd = min; fd < FdTable.MAX_FDS; fd++) {\n if (!this.fds.has(fd)) {\n this.fds.set(fd, file);\n return fd;\n }\n }\n void Promise.resolve(file.release()).catch(() => undefined);\n throw new KernelError('EMFILE');\n }\n\n installAt(fd: number, file: OpenFile): void {\n if (fd < 0 || fd >= FdTable.MAX_FDS) {\n void Promise.resolve(file.release()).catch(() => undefined);\n throw new KernelError('EBADF');\n }\n const previous = this.fds.get(fd);\n this.fds.set(fd, file);\n this.cloexec.delete(fd);\n this.status.delete(fd);\n void Promise.resolve(previous?.release()).catch(() => undefined);\n }\n\n async replaceAt(fd: number, file: OpenFile): Promise<void> {\n if (fd < 0 || fd >= FdTable.MAX_FDS) {\n void Promise.resolve(file.release()).catch(() => undefined);\n throw new KernelError('EBADF');\n }\n const previous = this.fds.get(fd);\n this.fds.set(fd, file);\n this.cloexec.delete(fd);\n this.status.delete(fd);\n await Promise.resolve(previous?.release()).catch(() => undefined);\n }\n\n dup(fd: number, min = 0): number {\n return this.install(this.get(fd).retain(), min);\n }\n\n dup2(oldFd: number, newFd: number): number {\n const file = this.get(oldFd);\n if (oldFd !== newFd) this.installAt(newFd, file.retain());\n return newFd;\n }\n\n async dup2Clipboard(oldFd: number, newFd: number): Promise<number> {\n const file = this.get(oldFd);\n if (oldFd !== newFd) await this.replaceAt(newFd, file.retain());\n return newFd;\n }\n\n close(fd: number): void | Promise<void> {\n const file = this.get(fd);\n this.fds.delete(fd);\n this.cloexec.delete(fd);\n this.status.delete(fd);\n return file.release();\n }\n\n fork(): FdTable {\n const child = new FdTable();\n for (const [fd, file] of this.fds) child.fds.set(fd, file.retain());\n for (const fd of this.cloexec) child.cloexec.add(fd);\n for (const [fd, flags] of this.status) child.status.set(fd, flags);\n child.handles = this.handles?.fork();\n return child;\n }\n\n async closeAll(): Promise<void> {\n const files = [...this.fds.values()];\n this.fds.clear();\n this.cloexec.clear();\n this.status.clear();\n this.handles?.clear();\n await Promise.allSettled(files.map((file) => Promise.resolve().then(() => file.release())));\n }\n}\n", "import { RENAME_WAIT_MS } from '../../fs/changes.ts';\nimport { linkedWatch } from '../../fs/ranged.ts';\nimport {\n type DeviceAccess,\n type DeviceMeta,\n deviceAt,\n type HeldMeta,\n type KernelFdKind,\n} from '../../kernel/fd-table.ts';\nimport type { HeldCwd, HeldCwdReply } from '../../kernel/held-cwd.ts';\nimport type { FdInfo, WasmSyscall } from '../../kernel/process.ts';\nimport {\n HOLD_CREATED,\n HOLD_READ,\n HOLD_WRITE,\n type SyncFsBridgeStat,\n type SyncFsPosixBridge,\n} from '../../realm/sync-fs-wire.ts';\nimport type { ProcessSys } from '../kernel-streams.ts';\nimport { FDFLAGS, OFLAGS, RIGHTS } from './wasi-abi.ts';\nimport {\n FD_RING,\n FD_RING_SIZE,\n FileBuffer,\n LocalFile,\n normalize,\n physical,\n realOf,\n type WasiEntry,\n WasiError,\n} from './wasi-files.ts';\n\nconst SYNTHETIC_DIRS = ['usr', 'bin'];\n\nexport interface WasiKernel {\n sys: ProcessSys;\n\n call(req: WasmSyscall): unknown;\n}\n\ntype Device = 'null' | 'zero' | 'full' | 'urandom';\n\nconst O_NONBLOCK = 0o4000;\nconst O_WRONLY = 0o1;\nconst O_RDWR = 0o2;\nconst O_APPEND = 0o2000;\n\nexport type WasiForkFd =\n | { fd: number; type: 'kernel'; nonblock: boolean; append: boolean }\n | { fd: number; type: 'dir'; path: string; preopen?: string; twin?: number }\n | { fd: number; type: 'device'; device: Device; access?: DeviceAccess };\n\nfunction stdioAlias(path: string): number | undefined {\n const m = /^\\/dev\\/(?:(stdin)|(stdout)|(stderr)|fd\\/(\\d+))$/.exec(path);\n if (!m) return undefined;\n return m[1] ? 0 : m[2] ? 1 : m[3] ? 2 : Number(m[4]);\n}\n\nexport const SEALED_PATH = '/dev/sealed';\nexport const CLIPBOARD_PATH = '/dev/clipboard';\n\nexport function deviceOf(path: string): Device | undefined {\n return deviceAt(path);\n}\n\nfunction namedDevice(path: string): boolean {\n if (deviceOf(path) || stdioAlias(path) !== undefined) return true;\n return path === SEALED_PATH || path === CLIPBOARD_PATH || path === '/dev/tty';\n}\n\nfunction within(path: string, root: string): boolean {\n return path === root || path.startsWith(root === '/' ? '/' : `${root}/`);\n}\n\nexport class WasiFds {\n private readonly table = new Map<number, WasiEntry>();\n\n private readonly buffers = new Map<string, FileBuffer>();\n\n private readonly reported = new WeakSet<FileBuffer>();\n\n private readonly byId = new Map<string, FileBuffer>();\n\n private readonly ids = new Map<FileBuffer, string>();\n\n private readonly kernel: WasiKernel;\n private readonly fs: SyncFsPosixBridge;\n private renamesSeen: number;\n constructor(kernel: WasiKernel, fs: SyncFsPosixBridge) {\n this.kernel = kernel;\n this.fs = fs;\n this.renamesSeen = fs.changes?.renames() ?? 0;\n }\n\n ownRename(seq: number | undefined): void {\n if (seq !== undefined && seq === ((this.renamesSeen + 1) | 0)) this.renamesSeen = seq;\n }\n\n followRenames(missing = false): boolean {\n const view = this.fs.changes;\n let now = view?.renames() ?? 0;\n if (missing && view && now === this.renamesSeen) now = view.awaitRename(now, RENAME_WAIT_MS);\n if (now === this.renamesSeen || !this.fs.renames) return false;\n const held = [...this.buffers].filter(([, b]) => !b.isOrphan()).map(([p]) => p);\n if (held.length === 0) {\n this.renamesSeen = now;\n return false;\n }\n const { now: seen, renames } = this.fs.renames(this.renamesSeen, held);\n this.renamesSeen = seen;\n for (const [from, to] of renames) this.renamed(from, to, undefined, true);\n return renames.length > 0;\n }\n\n setup(\n cwd: string,\n inherited: ReadonlyArray<{\n fd: number;\n kind?: KernelFdKind;\n flags?: number;\n device?: DeviceMeta;\n }>,\n root = false\n ): void {\n for (const fd of [0, 1, 2]) this.table.set(fd, this.stdioEntry(fd));\n const preopens = this.preopens(cwd, root);\n const top = 3 + preopens.length;\n for (const { fd, kind, flags, device } of inherited) {\n let at = fd;\n if (fd < top) {\n at = this.kernel.call({ op: 'fd-dup', fd, min: top }) as number;\n this.kernel.sys.close(fd);\n }\n if (device) {\n this.table.set(at, deviceEntry(device));\n continue;\n }\n\n const nonblock = ((flags ?? 0) & O_NONBLOCK) !== 0;\n this.table.set(at, { ...kernelEntry(), nonblock, ...(kind ? { kind } : {}) });\n }\n preopens.forEach((entry, i) => {\n this.kernel.call({ op: 'fd-reserve', fd: 3 + i, meta: metaOf(entry) as HeldMeta });\n this.table.set(3 + i, entry);\n });\n }\n\n adoptCopy(fd: number): number {\n const at = this.kernel.call({ op: 'fd-dup', fd, min: 3 }) as number;\n this.table.set(at, this.stdioEntry(at));\n return at;\n }\n\n preopenAt(path: string, name: string): number {\n return this.install({ type: 'dir', path: normalize(path), preopen: name });\n }\n\n private preopens(cwd: string, root: boolean): WasiEntry[] {\n const here = normalize(cwd);\n const dot: Extract<WasiEntry, { type: 'dir' }> = { type: 'dir', path: here, preopen: '.' };\n const out: WasiEntry[] = [dot];\n let names: string[] = [];\n try {\n names = this.fs.readdir('/');\n } catch {\n return out;\n }\n\n for (const name of [...new Set([...names, 'dev', ...SYNTHETIC_DIRS])].sort()) {\n const path = `/${name}`;\n if (path === '/dev') {\n out.push({ type: 'dir', path, preopen: path });\n continue;\n }\n try {\n if (this.fs.stat(path).isDirectory) out.push({ type: 'dir', path, preopen: path });\n } catch {}\n }\n if (root) {\n out.push(\n { type: 'dir', path: '/', preopen: '/' },\n { type: 'dir', path: here, preopen: './' }\n );\n dot.twin = 3 + out.length - 1;\n }\n return out;\n }\n\n find(fd: number): WasiEntry | undefined {\n if (!this.shared) return this.table.get(fd);\n this.sync();\n return this.table.get(fd) ?? this.fetch(fd);\n }\n\n private shared: Int32Array | undefined;\n private seen = 0;\n\n get isShared(): boolean {\n return this.shared !== undefined;\n }\n\n share(ids: Int32Array, fresh: boolean): void {\n if (!fresh) {\n this.promoteFiles();\n for (const fd of this.cloexec) this.kernel.call({ op: 'fd-cloexec', fd, on: true });\n for (const [fd, e] of this.table) {\n if (e.type === 'kernel' && (e.nonblock || e.append)) this.publishFlags(fd, e);\n }\n } else {\n this.table.clear();\n this.cloexec.clear();\n }\n this.shared = ids;\n (this.fs as { threaded?(): void }).threaded?.();\n this.seen = Atomics.load(ids, GEN);\n }\n\n private sync(): void {\n const shared = this.shared as Int32Array;\n const gen = Atomics.load(shared, GEN);\n if (gen === this.seen) return;\n if (!this.replay(shared, gen)) {\n this.table.clear();\n this.cloexec.clear();\n }\n this.seen = gen;\n }\n\n private replay(shared: Int32Array, upTo: number): boolean {\n if (upTo - this.seen > FD_RING_SIZE || !ringed(shared)) return false;\n const changed: number[] = [];\n for (let g = this.seen + 1; g <= upTo; g++) {\n const at = FD_RING + (g % FD_RING_SIZE) * 2;\n if (Atomics.load(shared, at) !== g) return false;\n const fd = Atomics.load(shared, at + 1);\n if (fd < 0 || Atomics.load(shared, at) !== g) return false;\n changed.push(fd);\n }\n for (const fd of changed) {\n this.table.delete(fd);\n this.cloexec.delete(fd);\n }\n return true;\n }\n\n private bump(...fds: number[]): void {\n if (!this.shared) return;\n const shared = this.shared;\n for (const fd of fds.length > 0 ? fds : [-1]) {\n const gen = Atomics.add(shared, GEN, 1) + 1;\n if (ringed(shared)) {\n const at = FD_RING + (gen % FD_RING_SIZE) * 2;\n Atomics.store(shared, at, 0);\n Atomics.store(shared, at + 1, fd);\n Atomics.store(shared, at, gen);\n }\n if (gen - 1 === this.seen) this.seen = gen;\n }\n }\n\n private stdioEntry(fd: number): WasiEntry {\n let info: FdInfo;\n try {\n info = this.kernel.call({ op: 'fd-info', fd }) as FdInfo;\n } catch {\n return kernelEntry();\n }\n return info?.meta && 'dir' in info.meta ? { type: 'dir', path: info.meta.dir } : kernelEntry();\n }\n\n private fetch(fd: number): WasiEntry | undefined {\n let info: FdInfo;\n try {\n info = this.kernel.call({ op: 'fd-info', fd }) as FdInfo;\n } catch {\n return undefined;\n }\n const e = entryOf(info);\n if (!e) return undefined;\n this.table.set(fd, e);\n if (info.cloexec) this.cloexec.add(fd);\n return e;\n }\n\n private listed(): Array<[number, WasiEntry, boolean]> {\n const out: Array<[number, WasiEntry, boolean]> = [];\n for (const info of this.kernel.call({ op: 'fd-list' }) as Array<FdInfo & { fd: number }>) {\n const e = entryOf(info);\n if (e) out.push([info.fd, e, info.cloexec === true]);\n }\n return out;\n }\n\n private publishFlags(fd: number, e: { nonblock: boolean; append: boolean }): void {\n const flags = (e.nonblock ? O_NONBLOCK : 0) | (e.append ? O_APPEND : 0);\n this.kernel.call({ op: 'fd-setfl', fd, flags });\n }\n\n setFlags(fd: number, nonblock: boolean, append: boolean): void {\n const e = this.get(fd);\n if (e.type === 'kernel') {\n e.nonblock = nonblock;\n e.append = append;\n if (this.shared) {\n this.publishFlags(fd, e);\n this.bump(fd);\n }\n } else if (e.type === 'file') e.file.append = append;\n }\n\n setCloexec(fd: number, on: boolean): void {\n this.get(fd);\n if (on) this.cloexec.add(fd);\n else this.cloexec.delete(fd);\n if (this.shared) {\n this.kernel.call({ op: 'fd-cloexec', fd, on });\n this.bump(fd);\n }\n }\n\n cwd(): string | undefined {\n const dot = this.find(3);\n return dot?.type === 'dir' && dot.preopen === '.' ? dot.path : undefined;\n }\n\n terminals(): number[] {\n const fds = this.shared\n ? (this.kernel.call({ op: 'fd-list' }) as Array<FdInfo & { fd: number }>)\n .filter((info) => info.tty)\n .map((info) => info.fd)\n : [...this.table]\n .filter(([, e]) => e.type === 'kernel' && e.kind === 'tty')\n .map(([fd]) => fd);\n return fds.sort((a, b) => a - b);\n }\n\n sockets(): number[] {\n return [...this.table]\n .filter(([, e]) => e.type === 'kernel' && e.kind === 'socket')\n .map(([fd]) => fd)\n .sort((a, b) => a - b);\n }\n\n adopt(fd: number, kind: KernelFdKind, nonblock: boolean, dgram = false): void {\n this.table.set(fd, { type: 'kernel', kind, dgram, nonblock, append: false });\n if (this.shared && nonblock) this.publishFlags(fd, { nonblock, append: false });\n this.bump(fd);\n }\n\n get(fd: number): WasiEntry {\n const e = this.find(fd);\n if (!e) throw new WasiError('EBADF');\n if (e.type === 'file') this.followRenames();\n return e;\n }\n\n preopen(fd: number): Extract<WasiEntry, { type: 'dir' }> & { preopen: string } {\n const e = this.find(fd);\n if (e?.type !== 'dir' || e.preopen === undefined) throw new WasiError('EBADF');\n return e as Extract<WasiEntry, { type: 'dir' }> & { preopen: string };\n }\n\n dir(fd: number): Extract<WasiEntry, { type: 'dir' }> {\n const e = this.get(fd);\n if (e.type !== 'dir') throw new WasiError('ENOTDIR');\n return e;\n }\n\n private install(e: WasiEntry, min = 3): number {\n const meta = metaOf(e);\n const fd = this.kernel.call({\n op: 'fd-reserve',\n ...(min > 3 ? { min } : {}),\n ...(meta ? { meta } : {}),\n }) as number;\n this.table.set(fd, e);\n this.bump(fd);\n return fd;\n }\n\n readonly cloexec = new Set<number>();\n\n implicitCloexec = false;\n\n dup(fd: number, min: number, cloexec: boolean): number {\n const e = this.get(fd);\n let at: number;\n if (e.type !== 'file') {\n at = this.kernel.call({ op: 'fd-dup', fd, min: Math.max(3, min) }) as number;\n this.table.set(at, { ...e });\n } else {\n e.file.refs++;\n at = this.install(e, min);\n }\n if (cloexec) this.setCloexec(at, true);\n this.bump(at);\n return at;\n }\n\n pipe(): [number, number] {\n const [r, w] = this.kernel.sys.pipe();\n this.table.set(r, { type: 'kernel', kind: 'stream', nonblock: false, append: false });\n this.table.set(w, { type: 'kernel', kind: 'stream', nonblock: false, append: false });\n this.bump(r, w);\n return [r, w];\n }\n\n chdir(path: string): void {\n const dot = this.find(3);\n if (dot?.type !== 'dir' || dot.preopen !== '.') return;\n const moved: Array<[number, Extract<WasiEntry, { type: 'dir' }>]> = [[3, dot]];\n const twin = dot.twin === undefined ? undefined : this.find(dot.twin);\n if (twin?.type === 'dir' && twin.preopen === './') moved.push([dot.twin as number, twin]);\n for (const [fd, e] of moved) {\n e.path = path;\n this.kernel.call({ op: 'fd-meta', fd, meta: metaOf(e) as HeldMeta });\n }\n this.held?.moved(this.kernel.call({ op: 'cwd-chdir', path }) as HeldCwdReply, path);\n this.bump();\n }\n\n promote(fd: number, moved = false): void {\n const e = this.get(fd);\n if (e.type === 'file' && (!moved || this.moved(fd))) this.promoteFiles(e.file.buffer);\n }\n\n promoteFiles(only?: FileBuffer): void {\n const promoted = new Map<LocalFile, number>();\n\n const handed = new Set<FileBuffer>();\n for (const [fd, e] of [...this.table]) {\n if (e.type !== 'file' || (only && e.file.buffer !== only)) continue;\n const first = promoted.get(e.file);\n if (first !== undefined) {\n this.kernel.call({ op: 'fd-promote', fd, share: first });\n } else {\n this.kernel.call(promoteRequest(fd, e.file, handed));\n handed.add(e.file.buffer);\n promoted.set(e.file, fd);\n }\n this.table.set(fd, {\n type: 'kernel',\n kind: 'file',\n nonblock: false,\n append: e.file.append,\n path: e.file.path,\n ino: this.inoOf(e.file.path),\n });\n }\n for (const file of promoted.keys()) {\n if (--file.buffer.opens <= 0) {\n this.forget(file.buffer);\n this.letGo(file.buffer);\n }\n }\n }\n\n snapshot(): WasiForkFd[] {\n const out: WasiForkFd[] = [];\n\n if (this.shared) return out;\n for (const [fd, e] of this.table) {\n if (e.type === 'kernel')\n out.push({ fd, type: 'kernel', nonblock: e.nonblock, append: e.append });\n else if (e.type === 'dir') out.push({ fd, type: 'dir', path: e.path, ...preopenOf(e) });\n else if (e.type === 'device') out.push({ fd, ...deviceEntry(e) });\n }\n return out;\n }\n\n restore(fds: readonly WasiForkFd[], cloexec: readonly number[]): void {\n this.table.clear();\n for (const f of fds) {\n if (f.type === 'kernel')\n this.table.set(f.fd, { type: 'kernel', nonblock: f.nonblock, append: f.append });\n else if (f.type === 'dir')\n this.table.set(f.fd, { type: 'dir', path: f.path, ...preopenOf(f) });\n else this.table.set(f.fd, deviceEntry(f));\n }\n for (const fd of cloexec) this.cloexec.add(fd);\n }\n\n inheritable(): Map<number, number> {\n const out = new Map<number, number>();\n const all = this.shared\n ? this.listed()\n : [...this.table].map(([fd, e]): [number, WasiEntry, boolean] => [\n fd,\n e,\n this.cloexec.has(fd),\n ]);\n for (const [fd, e, cloexec] of all) {\n if (e.type !== 'kernel' || cloexec) continue;\n if (this.implicitCloexec && fd > 2) continue;\n out.set(fd, fd);\n }\n return out;\n }\n\n private locking = false;\n\n holdLocks(): void {\n this.locking = true;\n }\n\n private dropLocks(e: WasiEntry | undefined): void {\n if (!this.locking || e?.type !== 'file') return;\n try {\n this.kernel.call({ op: 'lk-close', path: e.file.path });\n } catch {}\n }\n\n close(fd: number): void {\n const e = this.get(fd);\n this.table.delete(fd);\n this.cloexec.delete(fd);\n try {\n this.kernel.sys.close(fd);\n } finally {\n this.release(e);\n this.dropLocks(e);\n this.bump(fd);\n }\n }\n\n renumber(from: number, to: number, keep = false): void {\n const e = this.get(from);\n\n const old = keep ? this.find(to) : this.get(to);\n if (from === to) return;\n this.kernel.call({ op: 'fd-renumber', from, to, ...(keep ? { keep } : {}) });\n this.cloexec.delete(to);\n if (keep) {\n if (e.type === 'file') e.file.refs++;\n this.table.set(to, e.type === 'file' ? e : { ...e });\n } else {\n this.table.delete(from);\n this.table.set(to, e);\n if (this.cloexec.delete(from)) this.cloexec.add(to);\n }\n if (old) this.release(old);\n this.dropLocks(old);\n this.bump(from, to);\n }\n\n private release(e: WasiEntry): void {\n if (e.type !== 'file' || --e.file.refs > 0) return;\n const { buffer } = e.file;\n try {\n buffer.flush();\n this.reported.delete(buffer);\n } catch (err) {\n this.reported.add(buffer);\n this.drop(buffer);\n throw err;\n }\n this.drop(buffer);\n }\n\n private drop(buffer: FileBuffer): void {\n if (--buffer.opens > 0) return;\n this.forget(buffer);\n this.letGo(buffer);\n }\n\n private forget(buffer: FileBuffer): void {\n for (const [p, b] of [...this.buffers]) if (b === buffer) this.buffers.delete(p);\n const id = this.ids.get(buffer);\n if (id !== undefined && this.byId.get(id) === buffer) this.byId.delete(id);\n this.ids.delete(buffer);\n }\n\n private know(buffer: FileBuffer, id: string): void {\n if (this.ids.has(buffer)) return;\n this.ids.set(buffer, id);\n if (!this.byId.has(id)) this.byId.set(id, buffer);\n }\n\n private identity(st: SyncFsBridgeStat | undefined): string | undefined {\n if (!st || st.ino === undefined || (st.nlink ?? 1) < 2) return undefined;\n return `${st.dev ?? 0}:${st.ino}`;\n }\n\n private sharing(path: string, st: SyncFsBridgeStat | undefined): FileBuffer | undefined {\n if (st?.ino === undefined) return undefined;\n const id = `${st.dev ?? 0}:${st.ino}`;\n if (!this.byId.has(id) && this.identity(st) !== undefined) this.learn();\n const buffer = this.byId.get(id);\n if (!buffer) return undefined;\n this.buffers.set(path, buffer);\n return buffer;\n }\n\n private learn(): void {\n for (const [p, buffer] of this.buffers) {\n if (this.ids.has(buffer) || buffer.isOrphan()) continue;\n const known = this.identity(this.statOrMissing(p));\n if (known !== undefined) this.know(buffer, known);\n }\n }\n\n linked(from: string, to: string): void {\n const buffer = this.buffers.get(from);\n if (!buffer || buffer.isOrphan()) return;\n const id = this.identity(this.statOrMissing(to));\n if (id === undefined) return;\n this.know(buffer, id);\n if (!this.buffers.has(to)) this.buffers.set(to, buffer);\n }\n\n private letGo(buffer: FileBuffer): void {\n this.fs.hold?.(buffer.path, false, true, buffer.handle);\n }\n\n kind(fd: number, e: Extract<WasiEntry, { type: 'kernel' }>): KernelFdKind {\n if (!e.kind) {\n const info = this.kernel.call({ op: 'fd-info', fd }) as {\n tty?: boolean;\n kind?: KernelFdKind;\n dgram?: true;\n };\n e.kind = info.kind ?? (info.tty ? 'tty' : 'stream');\n e.dgram = info.dgram === true;\n }\n return e.kind;\n }\n\n datagram(fd: number, e: Extract<WasiEntry, { type: 'kernel' }>): boolean {\n if (this.kind(fd, e) !== 'socket') return false;\n if (e.dgram === undefined) {\n e.dgram = (this.kernel.call({ op: 'fd-info', fd }) as { dgram?: true }).dgram === true;\n }\n return e.dgram;\n }\n\n flushAll(): void {\n for (const buffer of this.buffers.values()) {\n try {\n buffer.flush();\n this.reported.delete(buffer);\n } catch (err) {\n if (!this.reported.has(buffer)) throw err;\n }\n }\n }\n\n flushEarly(): void {\n for (const buffer of this.buffers.values()) {\n try {\n buffer.flush();\n } catch {}\n }\n }\n\n reread(fd: number): void {\n const e = this.get(fd);\n if (e.type === 'file') e.file.buffer.reread();\n }\n\n flushPath(path: string): void {\n for (const [p, buffer] of this.buffers) if (within(p, path)) buffer.flush();\n\n if (this.shared && !this.fs.changes?.clean()) this.kernel.call({ op: 'fd-path-flush', path });\n }\n\n holdsUnder(path: string): boolean {\n for (const p of this.buffers.keys()) if (within(p, path)) return true;\n return false;\n }\n\n replacing(path: string): void {\n for (const [p, buffer] of this.buffers) {\n if (!within(p, path)) continue;\n try {\n buffer.prefetch();\n } catch {}\n }\n }\n\n unlinking(path: string, linked?: SyncFsBridgeStat): void {\n const buffer = this.buffers.get(path);\n if (buffer && this.survives(buffer, linked)) buffer.flush();\n else buffer?.keep();\n if (this.shared) this.kernel.call({ op: 'fd-path-unlinking', path });\n }\n\n unlinked(path: string, linked?: SyncFsBridgeStat): void {\n if (this.shared) this.kernel.call({ op: 'fd-path-unlinked', path });\n const buffer = this.buffers.get(path);\n if (!buffer) return;\n this.detach(buffer, linked);\n this.buffers.delete(path);\n }\n\n private openedIno(fd: number): number | undefined {\n try {\n return (this.kernel.call({ op: 'fd-vfs-stat', fd, identity: true }) as { ino?: number }).ino;\n } catch (err) {\n this.kernel.sys.close(fd);\n throw err;\n }\n }\n\n moved(fd: number): boolean {\n const e = this.get(fd);\n if (e.type !== 'file') return false;\n if (e.file.buffer.isOrphan()) return true;\n return e.file.ino !== undefined && this.inoOf(e.file.path) !== e.file.ino;\n }\n\n private inoOf(path: string): number | undefined {\n try {\n return this.fs.stat(path).ino;\n } catch {\n return undefined;\n }\n }\n\n private survives(buffer: FileBuffer, linked: SyncFsBridgeStat | undefined): boolean {\n return linked !== undefined && buffer.handle !== undefined;\n }\n\n private detach(buffer: FileBuffer, linked: SyncFsBridgeStat | undefined): void {\n if (this.survives(buffer, linked)) {\n const id = this.identity(linked);\n if (id !== undefined) this.know(buffer, id);\n return;\n }\n buffer.orphan();\n this.forget(buffer);\n }\n\n renamed(from: string, to: string, replacedLinked?: SyncFsBridgeStat, foreign = false): void {\n if (from === to) return;\n if (this.shared && !foreign) this.kernel.call({ op: 'fd-path-renamed', from, to });\n for (const e of this.table.values()) {\n if (e.type === 'kernel' && e.path !== undefined && within(e.path, from)) {\n e.path = to + e.path.slice(from.length);\n }\n }\n const moved: Array<[string, FileBuffer]> = [];\n for (const [p, buffer] of this.buffers) {\n if (foreign && buffer.isOrphan()) continue;\n if (within(p, from)) moved.push([p, buffer]);\n else if (within(p, to)) {\n this.detach(buffer, replacedLinked);\n this.buffers.delete(p);\n }\n }\n for (const [p] of moved) this.buffers.delete(p);\n for (const [p, buffer] of moved) {\n const next = to + p.slice(from.length);\n if (buffer.path === p) buffer.path = next;\n this.buffers.set(next, buffer);\n }\n }\n\n held: HeldCwd | undefined;\n\n private cwdEntry(dir: Extract<WasiEntry, { type: 'dir' }>): boolean {\n return dir.preopen === '.' || dir.preopen === './';\n }\n\n goneCwd(dir: Extract<WasiEntry, { type: 'dir' }>): boolean {\n return this.held !== undefined && this.cwdEntry(dir) && !this.held.alive(dir.path);\n }\n\n resolve(dirfd: number, path: string): string {\n if (path === '') throw new WasiError('ENOENT');\n if (path.startsWith('/')) return this.joined(path);\n const dir = this.dir(dirfd);\n if (path.split('/')[0] !== '..' && this.goneCwd(dir)) throw new WasiError('ENOENT');\n return this.joined(`${dir.path}/${path}`);\n }\n\n private joined(joined: string): string {\n return joined.split('/').includes('..') ? physical(this.fs, joined) : normalize(joined);\n }\n\n private openKernelDevice(\n path: string,\n oflags: number,\n fdflags: number,\n rights: bigint\n ): number | undefined {\n const { openSealed, openClipboard, openTty } = this.kernel.sys;\n const nonblock = (fdflags & FDFLAGS.NONBLOCK) !== 0;\n let fd: number | undefined;\n let kind: KernelFdKind;\n if (path === SEALED_PATH && openSealed) {\n fd = this.openCharDevice(openSealed, oflags, rights);\n kind = 'sealed';\n } else if (path === CLIPBOARD_PATH && openClipboard) {\n fd = this.openCharDevice(openClipboard, oflags, rights);\n kind = 'clipboard';\n } else if (path === '/dev/tty' || /^\\/dev\\/tty\\d+$/.test(path)) {\n const exclusive = (oflags & OFLAGS.CREAT) !== 0 && (oflags & OFLAGS.EXCL) !== 0;\n try {\n fd = openTty?.call(this.kernel.sys, path === '/dev/tty' ? undefined : path);\n } catch (err) {\n if (exclusive && (err as { code?: string }).code === 'EACCES')\n throw new WasiError('EEXIST');\n throw err;\n }\n if (fd === undefined) throw new WasiError('ENXIO');\n if (exclusive) {\n this.kernel.sys.close(fd);\n throw new WasiError('EEXIST');\n }\n kind = 'tty';\n } else return undefined;\n this.adopt(fd, kind, nonblock);\n return fd;\n }\n\n private openCharDevice(\n openDevice: (flags: number) => number,\n oflags: number,\n rights: bigint\n ): number {\n if (oflags & OFLAGS.DIRECTORY) throw new WasiError('ENOTDIR');\n if (oflags & OFLAGS.CREAT && oflags & OFLAGS.EXCL) throw new WasiError('EEXIST');\n const want = wantOf(oflags, rights);\n const flags = want === 6 ? O_RDWR : want === 2 ? O_WRONLY : 0;\n return openDevice.call(this.kernel.sys, flags);\n }\n\n open(\n path: string,\n oflags: number,\n rights: bigint,\n fdflags: number,\n mode?: number,\n nofollow = false\n ): number {\n this.made = undefined;\n this.created = false;\n this.nofollow = nofollow;\n const exclusive = (oflags & OFLAGS.CREAT) !== 0 && (oflags & OFLAGS.EXCL) !== 0;\n const special = this.openSpecial(path, oflags, rights, fdflags, exclusive);\n if (special !== undefined) return special;\n const outside = this.escaped(path, oflags, rights);\n if (outside !== undefined) return this.open(outside, oflags, rights, fdflags, mode);\n if (exclusive && !(oflags & OFLAGS.DIRECTORY) && this.madeAtOnce(path, mode)) {\n return this.regular(path, undefined, oflags, rights, fdflags, mode, true);\n }\n if (exclusive && !nofollow && this.isLink(path)) throw new WasiError('EEXIST');\n const s = nofollow ? this.lstatOrMissing(path) : this.statOrMissing(path);\n if (s?.isSymbolicLink) throw new WasiError(exclusive ? 'EEXIST' : 'ELOOP');\n if (exclusive && s) throw new WasiError('EEXIST');\n if (s?.escape !== undefined) {\n refuseWrite({ readonly: true }, oflags, rights);\n return this.open(s.escape, oflags, rights, fdflags, mode);\n }\n if (oflags & OFLAGS.DIRECTORY && !s?.isDirectory) {\n throw new WasiError(s ? 'ENOTDIR' : 'ENOENT');\n }\n if (s?.isDirectory) {\n const asked = (oflags & OFLAGS.DIRECTORY) === 0 && (rights & RIGHTS.FD_WRITE) !== 0n;\n if (asked || (oflags & (OFLAGS.CREAT | OFLAGS.TRUNC)) !== 0) throw new WasiError('EISDIR');\n return this.install({ type: 'dir', path });\n }\n if (!s && !(oflags & OFLAGS.CREAT)) throw new WasiError('ENOENT');\n refuseWrite(s, oflags, rights);\n return this.regular(path, s, oflags, rights, fdflags, mode);\n }\n\n private nofollow = false;\n\n private readonly inos = new WeakMap<FileBuffer, number>();\n\n private otherFile(buffer: FileBuffer, st: SyncFsBridgeStat | undefined): boolean {\n const ino = this.inos.get(buffer);\n return ino !== undefined && st?.ino !== undefined && ino !== st.ino;\n }\n\n private openSpecial(\n path: string,\n oflags: number,\n rights: bigint,\n fdflags: number,\n exclusive: boolean\n ): number | undefined {\n if (exclusive && namedDevice(path)) throw new WasiError('EEXIST');\n const device = deviceOf(path);\n if (device) return this.install({ type: 'device', device });\n const kernelDevice = this.openKernelDevice(path, oflags, fdflags, rights);\n if (kernelDevice !== undefined) return kernelDevice;\n const alias = stdioAlias(path);\n if (alias === undefined) return undefined;\n if (this.nofollow) throw new WasiError('ELOOP');\n return this.reopen(alias);\n }\n\n private escaped(path: string, oflags: number, rights: bigint): string | undefined {\n const outside = this.fs.escape?.(path);\n if (outside === undefined) return undefined;\n refuseWrite({ readonly: true }, oflags | (oflags & OFLAGS.CREAT ? OFLAGS.TRUNC : 0), rights);\n return outside;\n }\n\n private regular(\n path: string,\n s: SyncFsBridgeStat | undefined,\n oflags: number,\n rights: bigint,\n fdflags: number,\n mode?: number,\n created = false\n ): number {\n if (s?.isFifo) return this.kernelFifo(path, s, oflags, rights, fdflags);\n if (s?.isSocket) throw new WasiError('ENXIO');\n if (this.shared || this.kernelHolds(path, s)) {\n return this.kernelFile(path, s, oflags, rights, fdflags, mode, created);\n }\n return this.install({\n type: 'file',\n file: this.file(path, s, oflags, rights, fdflags, mode, created),\n });\n }\n\n private kernelHolds(path: string, st: SyncFsBridgeStat | undefined): boolean {\n for (const [fd, e] of this.table) {\n if (e.type !== 'kernel' || this.kind(fd, e) !== 'file') continue;\n this.named(fd, e);\n if (e.path === path || (st?.ino !== undefined && e.ino === st.ino)) return true;\n }\n return false;\n }\n\n private readonly learned = new WeakSet<object>();\n\n private named(fd: number, e: { path?: string; ino?: number }): void {\n if (e.path !== undefined || this.learned.has(e)) return;\n this.learned.add(e);\n try {\n const vfs = this.kernel.call({ op: 'fd-vfs-stat', fd, identity: true }) as {\n path?: string;\n orphan?: true;\n ino?: number;\n };\n if (vfs.orphan || vfs.path === undefined) return;\n e.path = vfs.path;\n e.ino = vfs.ino ?? this.inoOf(vfs.path);\n } catch {}\n }\n\n private file(\n path: string,\n existing: SyncFsBridgeStat | undefined,\n oflags: number,\n rights: bigint,\n fdflags: number,\n mode?: number,\n created = false\n ): LocalFile {\n const { readable, writable } = openAccess(existing, oflags, rights);\n this.followRenames();\n let buffer = created ? undefined : this.buffers.get(path);\n if (buffer?.handle !== undefined && this.fs.kept?.(buffer.handle)) {\n this.buffers.delete(path);\n buffer = undefined;\n }\n buffer ??= this.sharing(path, existing);\n if (buffer && this.nofollow && this.otherFile(buffer, existing)) buffer = undefined;\n const want = wantOf(oflags, rights);\n if (buffer) {\n if (this.fs.owners) this.fs.access?.(path, want, 'open');\n if (oflags & OFLAGS.TRUNC) buffer.truncate(0);\n } else {\n buffer = this.freshBuffer(path, existing, oflags, want, mode, created);\n }\n buffer.opens++;\n const file = new LocalFile(buffer, readable, writable, (fdflags & FDFLAGS.APPEND) !== 0);\n file.ino = existing?.ino;\n return file;\n }\n\n private freshBuffer(\n path: string,\n existing: SyncFsBridgeStat | undefined,\n oflags: number,\n want: number,\n mode?: number,\n created = false\n ): FileBuffer {\n const made = created || (!existing && this.createNew(path, oflags, mode));\n const reply = made ? this.made : undefined;\n this.made = undefined;\n const empty = made || (oflags & OFLAGS.TRUNC) !== 0;\n if (existing?.ranged) (this.fs as { invalidate?(): void }).invalidate?.();\n const seen = reply ? reply.seen : this.fs.changes?.now();\n const st = reply?.st ?? (existing?.ranged || !existing ? this.fs.stat(path) : existing);\n const ranged = st.ranged ? st.size : undefined;\n const asked =\n (want & 4 ? HOLD_READ : 0) | (want & 2 ? HOLD_WRITE : 0) | (made ? HOLD_CREATED : 0);\n const handle = this.fs.hold?.(path, true, true, undefined, this.fs.owners ? asked : 0, {\n gen: st.gen,\n ...(this.nofollow ? { nofollow: true } : {}),\n ...(st.ino !== undefined ? { ino: st.ino } : {}),\n });\n const io = handle !== undefined && this.fs.pinned ? this.fs.pinned(handle) : this.fs;\n const view = this.fs.changes;\n const watch =\n view &&\n linkedWatch(\n {\n view,\n ino: st.ino,\n seen,\n stat: (at: string) => {\n (this.fs as { invalidate?(): void }).invalidate?.();\n return this.fs.stat(at);\n },\n real: () => realOf(this.fs, path),\n },\n st\n );\n const buffer = new FileBuffer(io, path, empty, st.maxFile, ranged, st.version, watch);\n buffer.moved = (missing) => this.followRenames(missing);\n buffer.bound = st;\n buffer.handle = handle;\n if (st.ino !== undefined) this.inos.set(buffer, st.ino);\n this.buffers.set(path, buffer);\n const id = this.identity(st);\n if (id !== undefined) this.know(buffer, id);\n return buffer;\n }\n\n private kernelFile(\n path: string,\n existing: SyncFsBridgeStat | undefined,\n oflags: number,\n rights: bigint,\n fdflags: number,\n mode?: number,\n created = false\n ): number {\n const { readable, writable } = openAccess(existing, oflags, rights);\n const append = (fdflags & FDFLAGS.APPEND) !== 0;\n const flags = (writable ? (readable ? O_RDWR : O_WRONLY) : 0) | (append ? O_APPEND : 0);\n\n const made = created || (!existing && this.createNew(path, oflags, mode));\n\n const truncate = made || (oflags & OFLAGS.TRUNC) !== 0;\n const fd = this.kernel.sys.openVfs(path, flags, 0, {\n ...(truncate ? { truncate } : {}),\n ...(made ? { created: true } : {}),\n ...(this.nofollow && !made ? { nofollow: true } : {}),\n });\n const ino = writable ? (this.openedIno(fd) ?? this.inoOf(path)) : undefined;\n if (truncate) (this.fs as { touched?(path?: string, ino?: number): void }).touched?.(path, ino);\n this.table.set(fd, { type: 'kernel', kind: 'file', nonblock: false, append, path, ino });\n if (append) this.publishFlags(fd, { nonblock: false, append });\n this.bump(fd);\n return fd;\n }\n\n private kernelFifo(\n path: string,\n existing: SyncFsBridgeStat,\n oflags: number,\n rights: bigint,\n fdflags: number\n ): number {\n const { readable, writable } = openAccess(existing, oflags, rights);\n const nonblock = (fdflags & FDFLAGS.NONBLOCK) !== 0;\n const access = writable ? (readable ? O_RDWR : O_WRONLY) : 0;\n const fd = this.restarting(() =>\n this.kernel.sys.openVfs(path, access | (nonblock ? O_NONBLOCK : 0), 0, { fifo: true })\n );\n this.table.set(fd, { type: 'kernel', kind: 'stream', nonblock, append: false });\n if (nonblock) this.publishFlags(fd, { nonblock, append: false });\n this.bump(fd);\n return fd;\n }\n\n restartable: (() => boolean) | undefined;\n\n restarting<T>(call: () => T): T {\n for (;;) {\n try {\n return call();\n } catch (err) {\n if ((err as { code?: unknown }).code !== 'EINTR' || !this.restartable?.()) throw err;\n }\n }\n }\n\n created = false;\n\n private made: { st: SyncFsBridgeStat; seen: number | undefined } | undefined;\n\n private creating(path: string, mode?: number): void {\n const st = this.fs.create?.(path, mode, true);\n this.made = st ? { st, seen: st.seen } : undefined;\n this.created = true;\n }\n\n private madeAtOnce(path: string, mode?: number): boolean {\n if (!this.fs.create) return false;\n try {\n this.creating(path, mode);\n return true;\n } catch (err) {\n if ((err as { code?: string }).code === 'EEXIST') throw err;\n return false;\n }\n }\n\n private createNew(path: string, oflags: number, mode?: number): boolean {\n if (!this.fs.create) {\n this.fs.writeFile(path, new Uint8Array(0));\n this.created = true;\n return true;\n }\n try {\n this.creating(path, mode);\n return true;\n } catch (err) {\n if (oflags & OFLAGS.EXCL || (err as { code?: string }).code !== 'EEXIST') throw err;\n return false;\n }\n }\n\n private isLink(path: string): boolean {\n try {\n return this.fs.lstat(path).isSymbolicLink === true;\n } catch {\n return false;\n }\n }\n\n private lstatOrMissing(path: string): SyncFsBridgeStat | undefined {\n try {\n return this.fs.lstat(path);\n } catch (e) {\n if ((e as { code?: string }).code === 'ENOENT') return undefined;\n throw e;\n }\n }\n\n private statOrMissing(path: string): SyncFsBridgeStat | undefined {\n try {\n return this.fs.stat(path);\n } catch (e) {\n if ((e as { code?: string }).code === 'ENOENT') return undefined;\n throw e;\n }\n }\n\n private reopen(fd: number): number {\n const e = this.get(fd);\n if (e.type === 'kernel') {\n const at = this.kernel.call({ op: 'fd-dup', fd }) as number;\n this.table.set(at, { ...e });\n this.bump(at);\n return at;\n }\n if (e.type === 'file') e.file.refs++;\n return this.install(e.type === 'file' ? e : { ...e });\n }\n}\n\nfunction kernelEntry(): Extract<WasiEntry, { type: 'kernel' }> {\n return { type: 'kernel', nonblock: false, append: false };\n}\n\nconst GEN = 2;\n\nfunction ringed(shared: Int32Array): boolean {\n return shared.length >= FD_RING + FD_RING_SIZE * 2;\n}\n\nfunction deviceEntry(meta: DeviceMeta): Extract<WasiEntry, { type: 'device' }> {\n return { type: 'device', device: meta.device, ...(meta.access ? { access: meta.access } : {}) };\n}\n\nfunction refuseWrite(s: { readonly?: boolean } | undefined, oflags: number, rights: bigint): void {\n const writes = (rights & RIGHTS.FD_WRITE) !== 0n || (oflags & OFLAGS.TRUNC) !== 0;\n if (s?.readonly && writes) throw new WasiError('EROFS');\n}\n\nfunction preopenOf(e: { preopen?: string; twin?: number }): { preopen?: string; twin?: number } {\n return {\n ...(e.preopen ? { preopen: e.preopen } : {}),\n ...(e.twin !== undefined ? { twin: e.twin } : {}),\n };\n}\n\nfunction metaOf(e: WasiEntry): HeldMeta | undefined {\n if (e.type === 'dir') return { dir: e.path, ...preopenOf(e) };\n if (e.type === 'device') return { device: e.device, ...(e.access ? { access: e.access } : {}) };\n return undefined;\n}\n\nfunction entryOf(info: FdInfo): WasiEntry | undefined {\n if (info.meta && 'dir' in info.meta) {\n return { type: 'dir', path: info.meta.dir, ...preopenOf(info.meta) };\n }\n if (info.meta && 'device' in info.meta) return deviceEntry(info.meta);\n if (info.kind === 'held') return undefined;\n return {\n type: 'kernel',\n kind: info.kind,\n dgram: info.dgram === true,\n nonblock: ((info.flags ?? 0) & O_NONBLOCK) !== 0,\n append: ((info.flags ?? 0) & O_APPEND) !== 0,\n };\n}\n\nfunction wantOf(oflags: number, rights: bigint): number {\n const write = (rights & RIGHTS.FD_WRITE) !== 0n || (oflags & OFLAGS.TRUNC) !== 0;\n const read = (rights & RIGHTS.FD_READ) !== 0n || !write;\n return (read ? 4 : 0) | (write ? 2 : 0);\n}\n\nfunction openAccess(\n existing: SyncFsBridgeStat | undefined,\n oflags: number,\n rights: bigint\n): { readable: boolean; writable: boolean } {\n const readonly = existing?.readonly === true;\n const mutating = readonly ? OFLAGS.TRUNC : OFLAGS.CREAT | OFLAGS.TRUNC;\n const writable = (rights & RIGHTS.FD_WRITE) !== 0n || (oflags & mutating) !== 0;\n if (writable && readonly) throw new WasiError('EROFS');\n return { readable: (rights & RIGHTS.FD_READ) !== 0n || !writable, writable };\n}\n\nfunction promoteRequest(\n fd: number,\n f: LocalFile,\n handed: ReadonlySet<FileBuffer>\n): Extract<WasmSyscall, { op: 'fd-promote' }> {\n const orphan = f.buffer.isOrphan() || (f.buffer.handle ?? 0) < 0;\n if (!orphan && f.buffer.isRanged) f.buffer.flush();\n const joins = !orphan && (handed.has(f.buffer) || f.buffer.isRanged);\n return {\n op: 'fd-promote',\n fd,\n path: f.path,\n flags: (f.writable ? (f.readable ? O_RDWR : O_WRONLY) : 0) | (f.append ? O_APPEND : 0),\n position: f.offset,\n ...(joins ? {} : { contents: f.buffer.contents() }),\n ...(orphan ? { orphan: true } : {}),\n ...(!orphan && f.buffer.pin !== undefined\n ? { pin: { version: f.buffer.pin, size: f.buffer.size() } }\n : {}),\n\n ...(!joins && f.buffer.isDirty() ? { dirty: true } : {}),\n ...(f.buffer.handle !== undefined ? { handle: f.buffer.handle } : {}),\n ...(f.buffer.handle !== undefined && f.ino !== undefined ? { ino: f.ino } : {}),\n };\n}\n", "const decoder = new TextDecoder();\n\nexport class WasiMemory {\n private memory: WebAssembly.Memory | undefined;\n\n bind(memory: WebAssembly.Memory): void {\n this.memory = memory;\n }\n\n private buffer(): ArrayBuffer {\n if (!this.memory) throw new Error('WASI: no memory bound');\n return this.memory.buffer;\n }\n\n view(): DataView {\n return new DataView(this.buffer());\n }\n\n bytes(ptr: number, len: number): Uint8Array {\n return new Uint8Array(this.buffer(), ptr, len);\n }\n\n string(ptr: number, len: number): string {\n return decoder.decode(this.bytes(ptr, len).slice());\n }\n\n cString(ptr: number): string {\n const bytes = new Uint8Array(this.buffer());\n let end = ptr;\n while (end < bytes.length && bytes[end] !== 0) end++;\n return decoder.decode(bytes.slice(ptr, end));\n }\n\n size(): number {\n return this.buffer().byteLength;\n }\n\n iovecs(ptr: number, count: number): Array<[number, number]> {\n const v = this.view();\n const out: Array<[number, number]> = [];\n for (let i = 0; i < count; i++) {\n out.push([v.getUint32(ptr + i * 8, true), v.getUint32(ptr + i * 8 + 4, true)]);\n }\n return out;\n }\n\n capacity(ptr: number, count: number): number {\n return this.iovecs(ptr, count).reduce((n, [, len]) => n + len, 0);\n }\n\n gather(ptr: number, count: number): Uint8Array {\n const vecs = this.iovecs(ptr, count);\n if (vecs.length === 1) return this.bytes(vecs[0][0], vecs[0][1]).slice();\n const out = new Uint8Array(vecs.reduce((n, [, len]) => n + len, 0));\n let at = 0;\n for (const [base, len] of vecs) {\n out.set(this.bytes(base, len), at);\n at += len;\n }\n return out;\n }\n\n scatter(ptr: number, count: number, data: Uint8Array): number {\n let at = 0;\n for (const [base, len] of this.iovecs(ptr, count)) {\n if (at >= data.length) break;\n const n = Math.min(len, data.length - at);\n this.bytes(base, n).set(data.subarray(at, at + n));\n at += n;\n }\n return at;\n }\n\n putStrings(list: readonly string[], ptrs: number, buf: number): void {\n const encoder = new TextEncoder();\n const v = this.view();\n let at = buf;\n list.forEach((s, i) => {\n const b = encoder.encode(s);\n v.setUint32(ptrs + i * 4, at, true);\n this.bytes(at, b.length).set(b);\n v.setUint8(at + b.length, 0);\n at += b.length + 1;\n });\n }\n\n putSizes(list: readonly string[], countPtr: number, sizePtr: number): void {\n const encoder = new TextEncoder();\n const v = this.view();\n v.setUint32(countPtr, list.length, true);\n v.setUint32(\n sizePtr,\n list.reduce((n, s) => n + encoder.encode(s).length + 1, 0),\n true\n );\n }\n}\n", "import { E, EVENT_FD_READWRITE_HANGUP, EVENTTYPE, SIZE, SUBCLOCK_ABSTIME } from './wasi-abi.ts';\nimport type { WasiFds, WasiKernel } from './wasi-fds.ts';\nimport type { WasiMemory } from './wasi-memory.ts';\n\ninterface Subscription {\n userdata: bigint;\n type: number;\n fd: number;\n\n deadline: number;\n}\n\ninterface PollEvent {\n userdata: bigint;\n error: number;\n type: number;\n\n hangup?: boolean;\n\n nbytes?: number;\n}\n\nexport type ClockNow = (id: number) => bigint;\n\nfunction readSubscriptions(mem: WasiMemory, ptr: number, n: number, now: ClockNow): Subscription[] {\n const v = mem.view();\n const at = performance.now();\n const subs: Subscription[] = [];\n for (let i = 0; i < n; i++) {\n const p = ptr + i * SIZE.SUBSCRIPTION;\n const type = v.getUint8(p + 8);\n const sub = { userdata: v.getBigUint64(p, true), type, fd: -1, deadline: Infinity };\n if (type === EVENTTYPE.CLOCK) {\n const id = v.getUint32(p + 16, true);\n let ms = Number(v.getBigUint64(p + 24, true)) / 1e6;\n if (v.getUint16(p + 40, true) & SUBCLOCK_ABSTIME) ms -= Number(now(id)) / 1e6;\n sub.deadline = at + Math.max(0, ms);\n } else {\n sub.fd = v.getUint32(p + 16, true);\n }\n subs.push(sub);\n }\n return subs;\n}\n\nfunction writeEvents(mem: WasiMemory, ptr: number, events: readonly PollEvent[]): void {\n const v = mem.view();\n events.forEach((ev, i) => {\n const p = ptr + i * SIZE.EVENT;\n mem.bytes(p, SIZE.EVENT).fill(0);\n v.setBigUint64(p, ev.userdata, true);\n v.setUint16(p + 8, ev.error, true);\n v.setUint8(p + 10, ev.type);\n\n if (ev.type !== EVENTTYPE.CLOCK) {\n v.setBigUint64(p + 16, BigInt(ev.nbytes ?? 1), true);\n if (ev.hangup) v.setUint16(p + 24, EVENT_FD_READWRITE_HANGUP, true);\n }\n });\n}\n\nfunction classify(\n fds: WasiFds,\n subs: readonly Subscription[]\n): { events: PollEvent[]; read: number[]; write: number[] } {\n const events: PollEvent[] = [];\n const read: number[] = [];\n const write: number[] = [];\n for (const s of subs) {\n if (s.type === EVENTTYPE.CLOCK) continue;\n const e = fds.find(s.fd);\n if (!e) events.push({ userdata: s.userdata, error: E.BADF, type: s.type });\n else if (e.type !== 'kernel')\n events.push({ userdata: s.userdata, error: E.SUCCESS, type: s.type });\n else (s.type === EVENTTYPE.FD_READ ? read : write).push(s.fd);\n }\n return { events, read, write };\n}\n\ninterface Ready {\n read: number[];\n write: number[];\n hangup?: number[];\n nread?: Record<number, number>;\n}\n\nfunction nbytesOf(s: Subscription, ready: Ready): { nbytes?: number } {\n const n = s.type === EVENTTYPE.FD_READ ? ready.nread?.[s.fd] : undefined;\n return n === undefined ? {} : { nbytes: n };\n}\n\nfunction readyEvents(subs: readonly Subscription[], ready: Ready): PollEvent[] {\n return subs\n .filter(\n (s) =>\n (s.type === EVENTTYPE.FD_READ && ready.read.includes(s.fd)) ||\n (s.type === EVENTTYPE.FD_WRITE && ready.write.includes(s.fd))\n )\n .map((s) => ({\n userdata: s.userdata,\n error: E.SUCCESS,\n type: s.type,\n hangup: ready.hangup?.includes(s.fd) === true,\n ...nbytesOf(s, ready),\n }));\n}\n\ninterface PollDeps {\n mem: WasiMemory;\n fds: WasiFds;\n kernel: WasiKernel;\n now: ClockNow;\n\n interruptWakes?: boolean;\n\n entered?: boolean;\n\n resumes?: () => boolean;\n}\n\nconst RESUMES = 64;\n\nfunction selectOnce(\n deps: PollDeps,\n read: number[],\n write: number[],\n timeoutMs: number,\n mayResume: boolean\n): { ready: Ready; interrupted: boolean; resumed?: true } {\n try {\n const ready = deps.kernel.call({ op: 'fd-select', read, write, timeoutMs });\n return { ready: ready as Ready, interrupted: false };\n } catch (e) {\n if ((e as { code?: unknown }).code !== 'EINTR') throw e;\n if (!deps.interruptWakes && mayResume && deps.resumes?.()) {\n return { ready: { read: [], write: [] }, interrupted: false, resumed: true };\n }\n if (!deps.interruptWakes) throw e;\n return { ready: { read: [], write: [] }, interrupted: true };\n }\n}\n\nfunction waitEvents(\n deps: PollDeps,\n subs: readonly Subscription[],\n { events, read, write }: { events: PollEvent[]; read: number[]; write: number[] },\n entered: boolean\n): boolean {\n const earliest = subs.reduce((min, s) => Math.min(min, s.deadline), Infinity);\n const timeout = (): number => {\n if (events.length > 0 || entered) return 0;\n return earliest === Infinity ? -1 : Math.max(0, Math.ceil(earliest - performance.now()));\n };\n for (let resumes = 0; ; ) {\n const { ready, interrupted, resumed } = selectOnce(\n deps,\n read,\n write,\n timeout(),\n resumes++ < RESUMES\n );\n if (resumed) continue;\n events.push(...readyEvents(subs, ready));\n if (interrupted) return true;\n if (events.length > 0 || entered || earliest === Infinity) return false;\n if (performance.now() >= earliest) return false;\n }\n}\n\nexport function pollOneoff(\n deps: PollDeps,\n inPtr: number,\n outPtr: number,\n nsubs: number,\n neventsPtr: number\n): number {\n if (nsubs === 0) return E.INVAL;\n const { mem } = deps;\n const subs = readSubscriptions(mem, inPtr, nsubs, deps.now);\n const found = classify(deps.fds, subs);\n const { events, read, write } = found;\n const entered = deps.entered === true && deps.interruptWakes !== true;\n const waits = read.length > 0 || write.length > 0 || events.length === 0;\n const interrupted = waits && waitEvents(deps, subs, found, entered);\n const after = performance.now();\n if (entered && events.length === 0 && !subs.some((s) => s.deadline <= after)) return E.INTR;\n\n for (const s of subs) {\n if (s.type === EVENTTYPE.CLOCK && (interrupted || s.deadline <= after)) {\n events.push({ userdata: s.userdata, error: E.SUCCESS, type: s.type });\n }\n }\n writeEvents(mem, outPtr, events);\n mem.view().setUint32(neventsPtr, events.length, true);\n return E.SUCCESS;\n}\n", "import { SIG, sigbit } from '../../kernel/signals.ts';\nimport {\n type BlockedMask,\n SAB_I_BLOCKED,\n SAB_I_BLOCKED_HI,\n SAB_I_KILLED,\n SAB_I_SIGNALS,\n SAB_I_STOP,\n storeBlocked,\n} from '../../realm/sync-sab-wire.ts';\nimport { E } from './wasi-abi.ts';\n\nconst UNBLOCKABLE = sigbit(SIG.KILL) | sigbit(SIG.STOP);\nconst LIBC_UNBLOCKABLE = (1 << (SIG.KILL - 1)) | (1 << (SIG.STOP - 1));\n\nconst FOREVER = 0xffff_ffff_ffff_ffffn;\nconst NS_PER_MS = 1_000_000n;\nconst POLL_MS = 50;\n\nexport const SIG_BLOCK = 0;\nexport const SIG_UNBLOCK = 1;\nexport const SIG_SETMASK = 2;\n\nexport const kernelBits = (lo: number): number => (lo << 1) & ~UNBLOCKABLE;\n\nexport const libcBits = (bits: number): number => (bits >>> 1) & ~LIBC_UNBLOCKABLE;\n\nconst apply = (how: number, mask: number, set: number): number => {\n if (how === SIG_BLOCK) return mask | set;\n if (how === SIG_UNBLOCK) return mask & ~set;\n return set;\n};\n\nexport class WasiSigmask {\n private lo: number;\n private hi: number;\n private readonly header: Int32Array;\n private readonly deliver: () => void;\n private readonly process: Int32Array | undefined;\n readonly tid: number;\n constructor(header: Int32Array, deliver: () => void, process?: Int32Array, tid = 1) {\n this.header = header;\n this.deliver = deliver;\n this.process = process;\n this.tid = tid;\n this.lo = libcBits(Atomics.load(header, SAB_I_BLOCKED));\n this.hi = Atomics.load(header, SAB_I_BLOCKED_HI);\n }\n\n static unsupported(header: Int32Array): void {\n storeBlocked(header, [0, 0]);\n }\n\n set(how: number, setLo: number, setHi: number, old: (lo: number, hi: number) => void): number {\n if (how !== SIG_BLOCK && how !== SIG_UNBLOCK && how !== SIG_SETMASK) return E.INVAL;\n old(this.lo >>> 0, this.hi >>> 0);\n this.lo = apply(how, this.lo, setLo | 0) & ~LIBC_UNBLOCKABLE;\n this.hi = apply(how, this.hi, setHi | 0);\n const now = kernelBits(this.lo);\n storeBlocked(this.header, [now, this.hi]);\n if ((Atomics.load(this.header, SAB_I_SIGNALS) & ~now) !== 0) this.deliver();\n return E.SUCCESS;\n }\n\n swap(setLo: number, setHi: number): [number, number] {\n const old: [number, number] = [this.lo, this.hi];\n this.lo = setLo & ~LIBC_UNBLOCKABLE;\n this.hi = setHi | 0;\n storeBlocked(this.header, [kernelBits(this.lo), this.hi]);\n return old;\n }\n\n deliverUnblocked(): boolean {\n const now = Atomics.load(this.header, SAB_I_BLOCKED);\n if ((Atomics.load(this.header, SAB_I_SIGNALS) & ~now) === 0) return false;\n this.deliver();\n return true;\n }\n\n restore([lo, hi]: [number, number]): void {\n this.set(SIG_SETMASK, lo, hi, () => {});\n }\n\n blockedBits(): number {\n return Atomics.load(this.header, SAB_I_BLOCKED);\n }\n\n blocks(sig: number): boolean {\n return (Atomics.load(this.header, SAB_I_BLOCKED) & sigbit(sig)) !== 0;\n }\n\n inherited(): BlockedMask {\n return [kernelBits(this.lo), this.hi];\n }\n\n discard(sig: number): void {\n Atomics.and(this.header, SAB_I_SIGNALS, ~sigbit(sig));\n if (this.process) Atomics.and(this.process, SAB_I_SIGNALS, ~sigbit(sig));\n }\n\n sigwait(\n setLo: number,\n timeoutNs: bigint,\n publish: (set: number) => void,\n took: (sig: number) => void,\n entered = false\n ): number {\n const set = kernelBits(setLo | 0);\n const value = BigInt.asUintN(64, timeoutNs);\n const deadline =\n value === FOREVER\n ? Number.POSITIVE_INFINITY\n : performance.now() + Number((value + NS_PER_MS - 1n) / NS_PER_MS);\n publish(set);\n try {\n for (;;) {\n const seen = Atomics.load(this.header, SAB_I_SIGNALS);\n const sig = this.take(set);\n if (sig !== 0) {\n took(sig);\n return E.SUCCESS;\n }\n if (entered || this.deliverUnblocked() || this.interrupted()) return E.INTR;\n const left = deadline - performance.now();\n if (left <= 0) return E.AGAIN;\n Atomics.wait(this.header, SAB_I_SIGNALS, seen, Math.min(left, POLL_MS));\n }\n } finally {\n publish(0);\n }\n }\n\n private take(set: number): number {\n for (const header of this.process ? [this.header, this.process] : [this.header]) {\n const ready = Atomics.load(header, SAB_I_SIGNALS) & set;\n if (ready === 0) continue;\n const bit = ready & -ready;\n if ((Atomics.and(header, SAB_I_SIGNALS, ~bit) & bit) !== 0) return 31 - Math.clz32(bit);\n }\n return 0;\n }\n\n private interrupted(): boolean {\n const killed = this.process ?? this.header;\n if (Atomics.load(killed, SAB_I_KILLED) !== 0) {\n this.deliver();\n return true;\n }\n if (Atomics.load(killed, SAB_I_STOP) !== 1) return false;\n while (Atomics.load(killed, SAB_I_STOP) === 1) Atomics.wait(killed, SAB_I_STOP, 1);\n return true;\n }\n\n pending(): number {\n const own = Atomics.load(this.header, SAB_I_SIGNALS);\n return libcBits(own | (this.process ? Atomics.load(this.process, SAB_I_SIGNALS) : 0));\n }\n}\n", "import type { Termios } from '../../kernel/tty.ts';\nimport type { WasiFds, WasiKernel } from './wasi-fds.ts';\nimport { WasiError } from './wasi-files.ts';\nimport type { WasiMemory } from './wasi-memory.ts';\n\nconst NCCS = 32;\nconst C_LINE = 16;\nconst C_CC = 17;\nconst ISPEED = 52;\nconst OSPEED = 56;\nconst B38400 = 0o17;\nconst TCSAFLUSH = 2;\n\nexport function writeTermios(mem: WasiMemory, ptr: number, termios: Termios): void {\n mem.bytes(ptr, OSPEED + 4).fill(0);\n const v = mem.view();\n v.setUint32(ptr, termios.c_iflag, true);\n v.setUint32(ptr + 4, termios.c_oflag, true);\n v.setUint32(ptr + 8, termios.c_cflag, true);\n v.setUint32(ptr + 12, termios.c_lflag, true);\n for (let i = 0; i < NCCS; i++) v.setUint8(ptr + C_CC + i, termios.c_cc[i] ?? 0);\n v.setUint8(ptr + C_LINE, 0);\n v.setUint32(ptr + ISPEED, B38400, true);\n v.setUint32(ptr + OSPEED, B38400, true);\n}\n\nexport function readTermios(mem: WasiMemory, ptr: number): Termios {\n const v = mem.view();\n return {\n c_iflag: v.getUint32(ptr, true),\n c_oflag: v.getUint32(ptr + 4, true),\n c_cflag: v.getUint32(ptr + 8, true),\n c_lflag: v.getUint32(ptr + 12, true),\n c_cc: Array.from({ length: NCCS }, (_, i) => v.getUint8(ptr + C_CC + i)),\n };\n}\n\nexport function sliccTty(\n mem: WasiMemory,\n fds: WasiFds,\n kernel: WasiKernel,\n interrupted: () => void = () => undefined\n) {\n const { sys } = kernel;\n const terminal = (fd: number): number => {\n const e = fds.find(fd);\n if (!e) throw new WasiError('EBADF');\n if (e.type !== 'kernel' || fds.kind(fd, e) !== 'tty') throw new WasiError('ENOTTY');\n return fd;\n };\n const needs = <T>(value: T | undefined): T => {\n if (value === undefined) throw new WasiError('ENOTTY');\n return value;\n };\n const getAttr = (fd: number, ptr: number): void => {\n interrupted();\n writeTermios(mem, ptr, needs(sys.tcgets?.(terminal(fd))));\n };\n const setAttr = (fd: number, actions: number, ptr: number): void => {\n interrupted();\n if (actions < 0 || actions > TCSAFLUSH) throw new WasiError('EINVAL');\n const at = terminal(fd);\n needs(sys.tcsets);\n sys.tcsets?.(at, readTermios(mem, ptr), actions === TCSAFLUSH);\n };\n const size = (fd: number, ptr: number): void => {\n interrupted();\n const [rows, cols] = needs(sys.winsize?.(terminal(fd)));\n mem.bytes(ptr, 8).fill(0);\n const v = mem.view();\n v.setUint16(ptr, rows, true);\n v.setUint16(ptr + 2, cols, true);\n };\n return {\n tcgetattr: (fd: number, ptr: number) => void getAttr(fd, ptr),\n tcsetattr: (fd: number, actions: number, ptr: number) => void setAttr(fd, actions, ptr),\n winsize: (fd: number, ptr: number) => void size(fd, ptr),\n };\n}\n", "import type { EpollEvent, EpollOp } from '../../kernel/epoll.ts';\nimport { E } from './wasi-abi.ts';\nimport { WasiError } from './wasi-files.ts';\nimport type { WasiFunction, WasiHost } from './wasi-host.ts';\n\nconst EVENT_SIZE = 32;\nconst DATA_OFFSET = 8;\nconst DATA_SIZE = 24;\nconst MAX_EVENTS = 4096;\nconst FOREVER = 0xffff_ffff_ffff_ffffn;\nconst MAX_TIMEOUT_MS = 0x7fff_ffff;\nconst NS_PER_MS = 1_000_000n;\nconst EVENTFD_SEMAPHORE = 1;\nconst EVENTFD_NONBLOCK = 4;\nconst EVENTFD_MAX = 0xffff_ffff_ffff_fffen;\nconst WASIX_OPS: readonly EpollOp[] = ['add', 'mod', 'del'];\nconst DUAL_OPS: readonly EpollOp[] = ['add', 'set', 'del', 'mod'];\n\nexport function timeoutMs(ns: bigint): number {\n const value = BigInt.asUintN(64, ns);\n if (value === FOREVER) return -1;\n const ms = (value + NS_PER_MS - 1n) / NS_PER_MS;\n return ms > BigInt(MAX_TIMEOUT_MS) ? -1 : Number(ms);\n}\n\nexport function wasixEpollImports(host: WasiHost): Record<string, WasiFunction> {\n const { mem, fds, o } = host;\n const call = (req: Parameters<typeof o.kernel.call>[0]) => o.kernel.call(req);\n const kernelFd = (fd: number, refusal: 'EINVAL' | 'EPERM'): void => {\n const e = fds.find(fd);\n if (!e) throw new WasiError('EBADF');\n if (e.type !== 'kernel') throw new WasiError(refusal);\n };\n const writeEvents = (ptr: number, events: readonly EpollEvent[]): void => {\n const view = mem.view();\n events.forEach((ev, i) => {\n const at = ptr + i * EVENT_SIZE;\n mem.bytes(at, EVENT_SIZE).fill(0);\n view.setUint32(at, ev.events, true);\n mem.bytes(at + DATA_OFFSET, DATA_SIZE).set(ev.data);\n });\n };\n return {\n epoll_create: (out: number) => {\n const fd = call({ op: 'epoll-create' }) as number;\n fds.adopt(fd, 'stream', false);\n mem.view().setUint32(out, fd, true);\n },\n epoll_ctl: (epfd: number, op: number, fd: number, event: number) => {\n const how = (host.strictEpoll ? WASIX_OPS : DUAL_OPS)[op];\n if (!how) throw new WasiError('EINVAL');\n kernelFd(epfd, 'EINVAL');\n kernelFd(fd, 'EPERM');\n if (how !== 'del' && event === 0) throw new WasiError('EINVAL');\n const events = event === 0 ? 0 : mem.view().getUint32(event, true);\n const data = event === 0 ? [] : [...mem.bytes(event + DATA_OFFSET, DATA_SIZE)];\n call({ op: 'epoll-ctl', epfd, how, fd, events, data });\n },\n epoll_wait: (epfd: number, ptr: number, maxevents: number, timeout: bigint, out: number) => {\n mem.view().setUint32(out, 0, true);\n if ((maxevents | 0) <= 0) throw new WasiError('EINVAL');\n kernelFd(epfd, 'EINVAL');\n const max = Math.min(maxevents | 0, MAX_EVENTS);\n const ms = host.entered ? 0 : timeoutMs(timeout);\n const events = call({ op: 'epoll-wait', epfd, max, timeoutMs: ms }) as EpollEvent[];\n if (host.entered && events.length === 0 && timeoutMs(timeout) !== 0) return E.INTR;\n writeEvents(ptr, events);\n mem.view().setUint32(out, events.length, true);\n return E.SUCCESS;\n },\n fd_event: (initial: bigint, flags: number, out: number) => {\n const value = BigInt.asUintN(64, initial);\n if (value > EVENTFD_MAX) throw new WasiError('EINVAL');\n const fd = call({\n op: 'eventfd-open',\n initial: value.toString(),\n semaphore: (flags & EVENTFD_SEMAPHORE) !== 0,\n }) as number;\n fds.adopt(fd, 'stream', (flags & EVENTFD_NONBLOCK) !== 0);\n mem.view().setUint32(out, fd, true);\n },\n };\n}\n", "export interface Received {\n bytes: Uint8Array;\n host: string;\n port: number;\n truncated: boolean;\n unix?: boolean;\n}\n\nexport function encodeReceived(got: Received): Uint8Array {\n const host = new TextEncoder().encode(got.host);\n const out = new Uint8Array(4 + host.length + got.bytes.length);\n const view = new DataView(out.buffer);\n view.setUint8(0, (got.truncated ? 1 : 0) | (got.unix ? 2 : 0));\n view.setUint16(1, got.port);\n view.setUint8(3, host.length);\n out.set(host, 4);\n out.set(got.bytes, 4 + host.length);\n return out;\n}\n\nexport function decodeReceived(raw: Uint8Array): Received {\n const view = new DataView(raw.buffer, raw.byteOffset, raw.byteLength);\n const length = view.getUint8(3);\n return {\n truncated: (view.getUint8(0) & 1) !== 0,\n unix: (view.getUint8(0) & 2) !== 0,\n port: view.getUint16(1),\n host: new TextDecoder().decode(raw.subarray(4, 4 + length)),\n bytes: raw.subarray(4 + length),\n };\n}\n", "export const HOST_LOOPBACK = 'host.slicc.internal';\n\nexport const HOST_LOOPBACK_ADDRESS = [10, 0, 2, 2] as const;\n\nexport const PAGE_LOOPBACK = 'kernel.localhost';\n\nexport const PAGE_LOOPBACK_URL = `http://{port}.${PAGE_LOOPBACK}`;\n\nexport function toHostLoopback(href: string): string {\n const url = new URL(href);\n if (url.hostname.replace(/\\.$/, '').toLowerCase() !== HOST_LOOPBACK) return href;\n url.hostname = '127.0.0.1';\n return url.href;\n}\n\nconst LOOPBACK_V4 = /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\nconst LOOPBACK_V6 = new Set(['::1', '::', '0:0:0:0:0:0:0:1']);\nconst MAPPED_V4 = /^::ffff:7f[0-9a-f]{2}:[0-9a-f]{1,4}$/;\nconst KERNEL_PORT = /^(\\d{1,5})\\.kernel\\.localhost$/;\nconst SCHEMES: Readonly<Record<string, number>> = {\n 'http:': 80,\n 'ws:': 80,\n 'https:': 443,\n 'wss:': 443,\n};\n\nexport function isKernelLoopbackHost(hostname: string): boolean {\n const host = hostname\n .replace(/^\\[(.*)\\]$/, '$1')\n .replace(/\\.$/, '')\n .toLowerCase();\n return (\n host === 'localhost' ||\n host.endsWith('.localhost') ||\n host === '0.0.0.0' ||\n LOOPBACK_V4.test(host) ||\n LOOPBACK_V6.has(host) ||\n MAPPED_V4.test(host)\n );\n}\n\nexport function kernelLoopbackPort(href: string): number | undefined {\n let url: URL;\n try {\n url = new URL(href);\n } catch {\n return undefined;\n }\n const fallback = SCHEMES[url.protocol];\n if (fallback === undefined || !isKernelLoopbackHost(url.hostname)) return undefined;\n const named = KERNEL_PORT.exec(url.hostname.replace(/\\.$/, '').toLowerCase())?.[1];\n const port = Number(named ?? (url.port || fallback));\n return port >= 1 && port <= 65535 ? port : undefined;\n}\n\nexport const DEFAULT_HOSTNAME = 'slicc';\n\nexport const HOSTNAME_ADDRESS = '127.0.1.1';\n\nexport const LIBC_HOSTNAMES: readonly string[] = ['emscripten', 'wasmer.sh'];\n\nconst LABEL = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i;\n\nfunction reserved(name: string): boolean {\n const lower = name.toLowerCase();\n return (\n lower === 'localhost' ||\n lower.endsWith('.localhost') ||\n lower === HOST_LOOPBACK ||\n lower === 'wasmer.sh' ||\n /^\\d+(\\.\\d+){3}$/.test(lower)\n );\n}\n\nexport function isHostname(name: unknown): name is string {\n if (typeof name !== 'string' || name.length > 253 || reserved(name)) return false;\n return name.split('.').every((l) => LABEL.test(l));\n}\n\nexport function hostnameOf(env: Readonly<Record<string, string>>): string {\n return isHostname(env.HOSTNAME) ? env.HOSTNAME : DEFAULT_HOSTNAME;\n}\n\nexport function initHostname(init: {\n hostname?: string | undefined;\n env: Readonly<Record<string, string>>;\n}): string {\n return isHostname(init.hostname) ? init.hostname : hostnameOf(init.env);\n}\n\nexport function ownNames(hostname: string): string[] {\n return [...new Set([hostname.toLowerCase(), ...LIBC_HOSTNAMES])];\n}\n\nexport function hostsFile(hostname: string = DEFAULT_HOSTNAME): string {\n return [\n '127.0.0.1 localhost localhost.localdomain',\n '::1 localhost ip6-localhost',\n `${HOSTNAME_ADDRESS} ${ownNames(hostname).join(' ')}`,\n `${HOST_LOOPBACK_ADDRESS.join('.')} ${HOST_LOOPBACK}`,\n '',\n ].join('\\n');\n}\n", "import { HOST_LOOPBACK, HOST_LOOPBACK_ADDRESS } from './loopback-names.ts';\n\nexport interface RouteTable {\n prefixes: readonly string[];\n exit: boolean;\n}\n\nexport type Destination = 'loopback' | 'host' | 'reserved' | 'uplink' | 'unreachable';\n\ninterface Prefix {\n v6: boolean;\n bits: bigint;\n length: number;\n}\n\nconst HOST_ADDRESS = HOST_LOOPBACK_ADDRESS.join('.');\n\nexport function ipv4Bytes(text: string): number[] | undefined {\n const parts = text.split('.');\n if (parts.length !== 4 || !parts.every((p) => /^\\d{1,3}$/.test(p))) return undefined;\n const bytes = parts.map(Number);\n return bytes.every((b) => b <= 255) ? bytes : undefined;\n}\n\nexport function ipv6Groups(text: string): number[] | undefined {\n if (!text.includes(':')) return undefined;\n let canonical: string;\n try {\n canonical = new URL(`http://[${text}]/`).hostname.slice(1, -1);\n } catch {\n return undefined;\n }\n const [head, tail] = canonical.split('::');\n const part = (s: string | undefined) =>\n s ? s.split(':').map((h) => Number.parseInt(h, 16)) : [];\n const front = part(head);\n const back = part(tail);\n return tail === undefined\n ? front\n : [...front, ...new Array<number>(8 - front.length - back.length).fill(0), ...back];\n}\n\nfunction toBits(values: number[], width: number): bigint {\n return values.reduce((acc, v) => (acc << BigInt(width)) | BigInt(v), 0n);\n}\n\nfunction addressBits(host: string): { v6: boolean; bits: bigint } | undefined {\n const v4 = ipv4Bytes(host);\n if (v4) return { v6: false, bits: toBits(v4, 8) };\n const v6 = ipv6Groups(host);\n return v6 ? { v6: true, bits: toBits(v6, 16) } : undefined;\n}\n\nfunction parsePrefix(text: string): Prefix | undefined {\n const parts = text.trim().split('/');\n if (parts.length > 2) return undefined;\n const [address = '', size] = parts;\n const parsed = addressBits(address);\n if (!parsed) return undefined;\n const max = parsed.v6 ? 128 : 32;\n const length = size === undefined ? max : /^\\d{1,3}$/.test(size) ? Number(size) : -1;\n if (length < 0 || length > max) return undefined;\n return { ...parsed, length };\n}\n\nfunction within(prefix: Prefix, addr: { v6: boolean; bits: bigint }): boolean {\n if (prefix.v6 !== addr.v6) return false;\n const shift = BigInt((prefix.v6 ? 128 : 32) - prefix.length);\n return addr.bits >> shift === prefix.bits >> shift;\n}\n\nconst RESERVED = [\n '0.0.0.0/8',\n '127.0.0.0/8',\n '169.254.0.0/16',\n '224.0.0.0/4',\n '240.0.0.0/4',\n '::/96',\n '::ffff:0:0/96',\n 'fe80::/10',\n 'ff00::/8',\n].map((p) => parsePrefix(p) as Prefix);\n\nexport class Routes {\n private table: Prefix[] = [];\n private exit = false;\n readonly ipv6: boolean;\n\n constructor(ipv6 = false) {\n this.ipv6 = ipv6;\n }\n\n set(table: RouteTable): void {\n const parsed = (table.prefixes ?? []).map(parsePrefix);\n const bad = (table.prefixes ?? []).find((_, i) => !parsed[i]);\n if (bad !== undefined) throw new Error(`not an address prefix: ${bad}`);\n this.table = parsed as Prefix[];\n this.exit = table.exit === true;\n }\n\n classify(host: string): Destination {\n const name = host.toLowerCase().replace(/\\.$/, '');\n if (name === 'localhost' || name.endsWith('.localhost') || name === '0.0.0.0') {\n return 'loopback';\n }\n if (name === HOST_LOOPBACK || name === HOST_ADDRESS) return 'host';\n const addr = addressBits(name);\n if (!addr) return 'unreachable';\n if (addr.v6 && addr.bits === 1n) return 'loopback';\n if (!addr.v6 && addr.bits >> 24n === 127n) return 'loopback';\n if (RESERVED.some((p) => within(p, addr))) return 'reserved';\n if (addr.v6 && !this.ipv6) return 'unreachable';\n if (this.exit || this.table.some((p) => within(p, addr))) return 'uplink';\n return 'unreachable';\n }\n}\n", "import { decodeReceived } from '../../kernel/net/datagram-wire.ts';\nimport { ipv6Groups } from '../../kernel/net/routes.ts';\nimport type { SockAddr } from '../../kernel/socket.ts';\nimport { E, FDFLAGS } from './wasi-abi.ts';\nimport { WasiError } from './wasi-files.ts';\nimport type { WasiFunction, WasiHost } from './wasi-host.ts';\n\nconst INET4 = 1;\nconst INET6 = 2;\nconst UNIX = 3;\nconst STREAM = 1;\nconst DGRAM = 2;\nconst RECV_DATA_TRUNCATED = 1;\nconst RIFLAG_PEEK = 1;\nconst MAX_DATAGRAM = 65_536;\nconst ADDR_IP_SIZE = 18;\nconst LOOPBACK = '127.0.0.1';\n\nconst OPTIONS: Readonly<Record<number, readonly [number, number]>> = {\n 1: [1, 15],\n 2: [1, 2],\n 3: [6, 1],\n 4: [1, 5],\n 6: [1, 6],\n 10: [1, 30],\n 11: [1, 4],\n 12: [1, 9],\n 14: [1, 10],\n 15: [1, 8],\n 16: [1, 7],\n 25: [1, 3],\n};\n\nexport function readAddr(view: DataView, ptr: number): SockAddr {\n const tag = view.getUint8(ptr);\n if (tag === UNIX) {\n let end = ptr + 2;\n while (end < ptr + 110 && view.getUint8(end) !== 0) end++;\n const path = new TextDecoder().decode(\n new Uint8Array(view.buffer, ptr + 2, end - ptr - 2).slice()\n );\n return { family: 'unix', path };\n }\n const port = view.getUint16(ptr + 2, true);\n if (tag === INET4) {\n const host = [0, 1, 2, 3].map((i) => view.getUint8(ptr + 4 + i)).join('.');\n return { family: 'inet', host, port };\n }\n if (tag === INET6) {\n return { family: 'inet', host: ipv6Host(new Uint8Array(view.buffer, ptr + 4, 16)), port };\n }\n throw new WasiError('EAFNOSUPPORT');\n}\n\nfunction ipv6Host(bytes: Uint8Array): string {\n const zeros = (n: number) => bytes.subarray(0, n).every((b) => b === 0);\n if (zeros(16)) return '0.0.0.0';\n if (zeros(15) && bytes[15] === 1) return LOOPBACK;\n if (zeros(10) && bytes[10] === 0xff && bytes[11] === 0xff) return bytes.subarray(12).join('.');\n const groups = [0, 2, 4, 6, 8, 10, 12, 14].map((i) =>\n ((bytes[i] << 8) | bytes[i + 1]).toString(16)\n );\n return new URL(`http://[${groups.join(':')}]/`).hostname.slice(1, -1);\n}\n\nexport function writeAddr(view: DataView, ptr: number, addr: SockAddr | undefined): void {\n new Uint8Array(view.buffer, ptr, 110).fill(0);\n if (!addr) return;\n if (addr.family === 'unix') {\n view.setUint8(ptr, UNIX);\n new Uint8Array(view.buffer, ptr + 2, 107).set(\n new TextEncoder().encode(addr.path).subarray(0, 107)\n );\n return;\n }\n view.setUint16(ptr + 2, addr.port, true);\n const groups = ipv4(addr.host) ? undefined : ipv6Groups(addr.host);\n if (groups) {\n view.setUint8(ptr, INET6);\n groups.forEach((g, i) => void view.setUint16(ptr + 4 + i * 2, g));\n return;\n }\n view.setUint8(ptr, INET4);\n const octets = ipv4(addr.host) ?? [127, 0, 0, 1];\n octets.forEach((b, i) => void view.setUint8(ptr + 4 + i, b));\n}\n\nfunction ipBytes(host: string): number[] | undefined {\n const groups = ipv4(host) ? undefined : ipv6Groups(host);\n return groups ? groups.flatMap((g) => [g >> 8, g & 0xff]) : ipv4(host);\n}\n\nfunction ipv4(host: string): number[] | undefined {\n const parts = host.split('.');\n if (parts.length !== 4) return undefined;\n const bytes = parts.map((p) => (/^\\d{1,3}$/.test(p) ? Number(p) : Number.NaN));\n return bytes.every((b) => b >= 0 && b <= 255) ? bytes : undefined;\n}\n\nfunction openRequest(af: number, type: number) {\n if (af !== INET4 && af !== INET6 && af !== UNIX) throw new WasiError('EAFNOSUPPORT');\n if (type !== STREAM && type !== DGRAM) throw new WasiError('EPROTONOSUPPORT');\n const domain = af === UNIX ? ('unix' as const) : ('inet' as const);\n return {\n op: 'sock-open' as const,\n domain,\n ...(type === DGRAM ? { type: 'dgram' as const } : {}),\n };\n}\n\nfunction pairRequest(af: number, type: number) {\n if (af !== UNIX)\n throw new WasiError(af === INET4 || af === INET6 ? 'EOPNOTSUPP' : 'EAFNOSUPPORT');\n if (type !== STREAM && type !== DGRAM) throw new WasiError('EPROTONOSUPPORT');\n return {\n op: 'sock-pair' as const,\n domain: 'unix' as const,\n ...(type === DGRAM ? { type: 'dgram' as const } : {}),\n };\n}\n\nfunction absolute(cwd: string, addr: SockAddr): SockAddr {\n if (addr.family !== 'unix' || addr.path === '' || addr.path.startsWith('\\0')) return addr;\n return addr.path.startsWith('/') ? addr : { family: 'unix', path: `${cwd}/${addr.path}` };\n}\n\nfunction optionalAddr(view: DataView, ptr: number): SockAddr | undefined {\n if (ptr === 0 || view.getUint8(ptr) === 0) return undefined;\n return readAddr(view, ptr);\n}\n\nexport function datagramCalls(host: WasiHost) {\n const { mem, o } = host;\n const call = (req: Parameters<typeof o.kernel.call>[0]) => o.kernel.call(req);\n return {\n recvFrom(\n fd: number,\n nonblock: boolean,\n iovs: number,\n n: number,\n riflags: number,\n outLen: number,\n outFlags: number,\n outAddr: number\n ): number {\n const max = Math.min(mem.capacity(iovs, n), MAX_DATAGRAM);\n const peek = (riflags & RIFLAG_PEEK) !== 0;\n const raw = call({ op: 'sock-recvfrom', fd, max, peek, nonblock });\n const got = decodeReceived(raw as Uint8Array);\n const view = mem.view();\n view.setUint32(outLen, mem.scatter(iovs, n, got.bytes), true);\n view.setUint16(outFlags, got.truncated ? RECV_DATA_TRUNCATED : 0, true);\n const from: SockAddr = got.unix\n ? { family: 'unix', path: got.host }\n : { family: 'inet', host: got.host, port: got.port };\n if (outAddr) writeAddr(mem.view(), outAddr, from);\n return E.SUCCESS;\n },\n sendTo(fd: number, nonblock: boolean, iovs: number, n: number, addr: number, out: number) {\n const named = optionalAddr(mem.view(), addr);\n const to = named && absolute(host.cwd, named);\n const body = mem.gather(iovs, n);\n const sent = call({ op: 'sock-sendto', fd, body, ...(to ? { addr: to } : {}), nonblock });\n mem.view().setUint32(out, sent as number, true);\n return E.SUCCESS;\n },\n };\n}\n\nexport function wasixSocketImports(\n host: WasiHost,\n preview1: Record<string, WasiFunction>\n): Record<string, WasiFunction> {\n const { mem, fds, o } = host;\n const call = (req: Parameters<typeof o.kernel.call>[0]) => o.kernel.call(req);\n\n const socket = (fd: number) => {\n const e = fds.get(fd);\n if (e.type !== 'kernel' || fds.kind(fd, e) !== 'socket') throw new WasiError('ENOTSOCK');\n return e;\n };\n const option = (opt: number): readonly [number, number] | undefined => OPTIONS[opt];\n const datagrams = (fd: number): boolean => {\n try {\n const e = fds.get(fd);\n return e.type === 'kernel' && fds.datagram(fd, e);\n } catch {\n return false;\n }\n };\n const dgram = datagramCalls(host);\n return {\n sock_open: (af: number, type: number, _proto: number, out: number) => {\n const req = openRequest(af, type);\n const fd = call(req) as number;\n fds.adopt(fd, 'socket', false, 'type' in req);\n mem.view().setUint32(out, fd, true);\n },\n sock_pair: (af: number, type: number, _proto: number, out1: number, out2: number) => {\n const req = pairRequest(af, type);\n mem.view().setUint32(out1, 0, true);\n mem.view().setUint32(out2, 0, true);\n const [a, b] = call(req) as [number, number];\n fds.adopt(a, 'socket', false, 'type' in req);\n fds.adopt(b, 'socket', false, 'type' in req);\n mem.view().setUint32(out1, a, true);\n mem.view().setUint32(out2, b, true);\n },\n sock_bind: (fd: number, addr: number) => {\n socket(fd);\n call({ op: 'sock-bind', fd, addr: absolute(host.cwd, readAddr(mem.view(), addr)) });\n },\n sock_listen: (fd: number, backlog: number) => {\n socket(fd);\n call({ op: 'sock-listen', fd, backlog });\n },\n sock_connect: (fd: number, addr: number) => {\n const e = socket(fd);\n const to = absolute(host.cwd, readAddr(mem.view(), addr));\n call({ op: 'sock-connect', fd, addr: to, nonblock: e.nonblock });\n },\n sock_accept_v2: (fd: number, flags: number, outFd: number, outAddr: number) => {\n const e = socket(fd);\n const r = call({ op: 'sock-accept', fd, nonblock: e.nonblock }) as {\n fd: number;\n peer?: SockAddr;\n };\n fds.adopt(r.fd, 'socket', (flags & FDFLAGS.NONBLOCK) !== 0);\n mem.view().setUint32(outFd, r.fd, true);\n writeAddr(mem.view(), outAddr, r.peer);\n },\n sock_addr_local: (fd: number, out: number) => {\n socket(fd);\n writeAddr(mem.view(), out, call({ op: 'sock-name', fd, peer: false }) as SockAddr);\n },\n sock_addr_peer: (fd: number, out: number) => {\n socket(fd);\n writeAddr(mem.view(), out, call({ op: 'sock-name', fd, peer: true }) as SockAddr);\n },\n\n sock_recv_from: (\n fd: number,\n iovs: number,\n n: number,\n riflags: number,\n outLen: number,\n outFlags: number,\n outAddr: number\n ) => {\n if (datagrams(fd)) {\n const e = socket(fd);\n return dgram.recvFrom(fd, e.nonblock, iovs, n, riflags, outLen, outFlags, outAddr);\n }\n const r = preview1.sock_recv(\n fd as never,\n iovs as never,\n n as never,\n riflags as never,\n outLen as never,\n outFlags as never\n );\n if (r !== E.SUCCESS) return r;\n writeAddr(mem.view(), outAddr, call({ op: 'sock-name', fd, peer: true }) as SockAddr);\n return E.SUCCESS;\n },\n sock_send_to: (\n fd: number,\n iovs: number,\n n: number,\n flags: number,\n addr: number,\n out: number\n ) => {\n if (datagrams(fd)) return dgram.sendTo(fd, socket(fd).nonblock, iovs, n, addr, out);\n return preview1.sock_send(\n fd as never,\n iovs as never,\n n as never,\n flags as never,\n out as never\n );\n },\n sock_status: (fd: number, out: number) => {\n socket(fd);\n mem.view().setUint8(out, 1);\n },\n sock_get_opt_flag: (fd: number, opt: number, out: number) => {\n socket(fd);\n const pair = option(opt);\n const v = pair\n ? (call({ op: 'sock-getopt', fd, level: pair[0], name: pair[1] }) as number)\n : 0;\n mem.view().setUint8(out, v ? 1 : 0);\n },\n sock_set_opt_flag: (fd: number, opt: number, flag: number) => {\n socket(fd);\n const pair = option(opt);\n if (pair) call({ op: 'sock-setopt', fd, level: pair[0], name: pair[1], value: flag ? 1 : 0 });\n },\n sock_get_opt_size: (fd: number, opt: number, out: number) => {\n socket(fd);\n const pair = option(opt);\n const v = pair\n ? (call({ op: 'sock-getopt', fd, level: pair[0], name: pair[1] }) as number)\n : 0;\n mem.view().setBigUint64(out, BigInt(v), true);\n },\n sock_set_opt_size: (fd: number, opt: number, size: bigint) => {\n socket(fd);\n const pair = option(opt);\n if (pair) call({ op: 'sock-setopt', fd, level: pair[0], name: pair[1], value: Number(size) });\n },\n\n sock_get_opt_time: (fd: number, _opt: number, out: number) => {\n socket(fd);\n new Uint8Array(mem.view().buffer, out, 16).fill(0);\n },\n sock_set_opt_time: (fd: number) => void socket(fd),\n\n sock_send_file: () => E.NOSYS,\n\n resolve: (\n name: number,\n len: number,\n _port: number,\n addrs: number,\n naddrs: number,\n out: number\n ) => {\n const found = call({ op: 'sock-resolve', name: mem.string(name, len), family: 0 });\n const ips = (found as string[]).map(ipBytes).filter((ip) => ip !== undefined);\n if (ips.length === 0) throw new WasiError('ENOENT');\n if (naddrs < 1) throw new WasiError('EINVAL');\n const view = mem.view();\n const count = Math.min(ips.length, naddrs);\n new Uint8Array(view.buffer, addrs, ADDR_IP_SIZE * count).fill(0);\n for (let i = 0; i < count; i++) {\n const at = addrs + i * ADDR_IP_SIZE;\n view.setUint8(at, ips[i].length === 4 ? INET4 : INET6);\n new Uint8Array(view.buffer, at + 2, ips[i].length).set(ips[i]);\n }\n view.setUint32(out, count, true);\n },\n };\n}\n", "import { inDevTree } from '../../fs/dev-removal.ts';\nimport { physicalLeaf, physicalPath } from '../../fs/physical-path.ts';\nimport { localCpuNanos } from '../../kernel/cpu-clock.ts';\nimport { type Cred, type CredChange, MAX_GROUPS } from '../../kernel/cred.ts';\nimport type { DeviceMeta, KernelFdKind } from '../../kernel/fd-table.ts';\nimport type { HeldCwd } from '../../kernel/held-cwd.ts';\nimport type { FdInfo } from '../../kernel/process.ts';\nimport { KERNEL_SIGINFO, SIG, type SigInfo } from '../../kernel/signals.ts';\nimport type { SyncFsBridgeStat, SyncFsPosixBridge } from '../../realm/sync-fs-wire.ts';\nimport { devFdStat, devStat, devSync, inDev } from '../js/js-dev.ts';\nimport type { LockHeld } from '../process-locks.ts';\nimport { type LockedFile, type LockHost, lockImports } from './slicc-lock.ts';\nimport { semImports } from './slicc-sem.ts';\nimport {\n CLOCK,\n E,\n FDFLAGS,\n FILETYPE,\n FSTFLAGS,\n LOOKUP_SYMLINK_FOLLOW,\n PREOPENTYPE_DIR,\n RIFLAGS,\n RIGHTS,\n SDFLAGS,\n SIZE,\n WASI_SIGNAL_TO_POSIX,\n WHENCE,\n wasiErrnoOf,\n} from './wasi-abi.ts';\nimport { CredCache, UmaskCache, UNGATED } from './wasi-cred.ts';\nimport {\n CLIPBOARD_PATH,\n deviceOf,\n SEALED_PATH,\n WasiFds,\n type WasiForkFd,\n type WasiKernel,\n} from './wasi-fds.ts';\nimport {\n type DirListing,\n type LocalFile,\n normalize,\n pathInode,\n resolveUnder,\n type WasiEntry,\n WasiError,\n} from './wasi-files.ts';\nimport { WasiMemory } from './wasi-memory.ts';\nimport { pollOneoff } from './wasi-poll.ts';\nimport { libcBits, SIG_SETMASK, SIG_UNBLOCK, type WasiSigmask } from './wasi-sigmask.ts';\nimport type { WasiSignals } from './wasi-signals.ts';\nimport { sliccTty } from './wasi-termios.ts';\nimport { wasixEpollImports } from './wasix-epoll.ts';\nimport type { ThreadEntry } from './wasix-fork.ts';\nimport { datagramCalls } from './wasix-sockets.ts';\n\nexport class WasiExit extends Error {\n readonly code: number;\n constructor(code: number) {\n super(`exit ${code}`);\n this.code = code;\n }\n}\n\nexport interface WasiHostOptions {\n args: readonly string[];\n env: Readonly<Record<string, string>>;\n cwd: string;\n pid: number;\n\n ppid?: number;\n parent?: () => number;\n kernel: WasiKernel;\n\n fs: SyncFsPosixBridge & { invalidate?(): void; touched?(path?: string, ino?: number): void };\n\n inherited?: ReadonlyArray<{\n fd: number;\n kind?: KernelFdKind;\n flags?: number;\n device?: DeviceMeta;\n }>;\n\n shared?: Int32Array;\n\n credGen?: Int32Array;\n\n forked?: { fds: readonly WasiForkFd[]; cloexec: readonly number[] };\n\n preopenRoot?: boolean;\n\n bare?: boolean;\n\n held?: HeldCwd;\n}\n\nexport type WasiFunction = (...args: never[]) => number | undefined;\n\ntype EpollWait = (\n epfd: number,\n events: number,\n max: number,\n timeout: bigint,\n nevents: number\n) => number | undefined;\n\nconst IDS = ['ruid', 'euid', 'suid', 'rgid', 'egid', 'sgid'] as const;\nconst NS_PER_MS = 1_000_000n;\nconst AT_SYMLINK_NOFOLLOW = 1;\nconst AT_FDCWD = -2;\nconst COPY_EXCL = 1;\nconst COPY_MODE = 2;\nconst AT_EACCESS = 2;\n\nconst ROOT_IDS = Object.freeze({ uid: 0, gid: 0 });\nconst GONE: ReadonlySet<string> = new Set(['ENOENT', 'ENOTDIR']);\n\nfunction idOf(value: number): number | undefined {\n return value >>> 0 === 0xffffffff ? undefined : value >>> 0;\n}\nconst S_IFIFO = 0o010000;\nconst S_IFLNK = 0o120000;\nconst DEFAULT_UMASK = 0o022;\n\nconst MONOTONIC_BASE = BigInt(Math.round(performance.timeOrigin)) * NS_PER_MS;\n\nconst MAX_READ = 1024 * 1024;\nconst SIGINFO_BYTES = 24;\n\nconst FD_ALIAS =\n /^\\/(?:dev\\/(stdin|stdout|stderr)|dev\\/fd\\/(\\d+)|proc\\/(self|[1-9]\\d*)\\/fd\\/(\\d+))$/;\nconst STDIO_FDS: Readonly<Record<string, number>> = { stdin: 0, stdout: 1, stderr: 2 };\n\ninterface FdAlias {\n fd: number;\n stdio: boolean;\n}\nconst SIGPIPE_EXIT = 128 + SIG.PIPE;\n\nconst SIG_IGN = 1;\n\ninterface Positional {\n pread(max: number, at: number): Uint8Array;\n pwrite(bytes: Uint8Array, at: number): number;\n size(): number;\n truncate(size: number): void;\n}\n\ninterface Filestat {\n filetype: number;\n size: bigint;\n ino: bigint;\n nlink?: bigint;\n mtimeNs: bigint;\n}\n\nfunction linkedOf(st: SyncFsBridgeStat): SyncFsBridgeStat | undefined {\n return (st.nlink ?? 1) > 1 ? st : undefined;\n}\n\nfunction linkedElsewhere(\n fs: Pick<SyncFsPosixBridge, 'lstat'>,\n path: string\n): SyncFsBridgeStat | undefined {\n try {\n return linkedOf(fs.lstat(path));\n } catch {\n return undefined;\n }\n}\n\nfunction filetypeOf(s: SyncFsBridgeStat | null | undefined): number {\n if (!s) return FILETYPE.UNKNOWN;\n if (s.isSymbolicLink) return FILETYPE.SYMBOLIC_LINK;\n if (s.isDirectory) return FILETYPE.DIRECTORY;\n if (s.isSocket) return FILETYPE.SOCKET_STREAM;\n if (((s.mode ?? 0) & 0o170000) === 0o020000) return FILETYPE.CHARACTER_DEVICE;\n return s.isFile ? FILETYPE.REGULAR_FILE : FILETYPE.UNKNOWN;\n}\n\nfunction filestatOf(path: string, s: SyncFsBridgeStat): Filestat {\n return {\n filetype: filetypeOf(s),\n size: BigInt(s.size),\n ino: s.ino !== undefined ? BigInt(s.ino) : pathInode(path),\n ...(s.nlink !== undefined ? { nlink: BigInt(s.nlink) } : {}),\n mtimeNs: BigInt(Math.round(s.mtimeMs ?? 0)) * NS_PER_MS,\n };\n}\n\nconst SEALED_MODE = 0o20666;\nconst DEVICE_MODE = 0o20666;\n\nfunction kernelDev(path: string): boolean {\n return inDev(path) && path !== SEALED_PATH && path !== CLIPBOARD_PATH;\n}\n\nfunction kernelFiletype(kind: string): { filetype: number; seeks: boolean } {\n switch (kind) {\n case 'tty':\n case 'sealed':\n case 'clipboard':\n return { filetype: FILETYPE.CHARACTER_DEVICE, seeks: false };\n case 'device':\n return { filetype: FILETYPE.CHARACTER_DEVICE, seeks: true };\n case 'socket':\n return { filetype: FILETYPE.SOCKET_STREAM, seeks: false };\n case 'dgram':\n return { filetype: FILETYPE.SOCKET_DGRAM, seeks: false };\n case 'file':\n return { filetype: FILETYPE.REGULAR_FILE, seeks: true };\n default:\n return { filetype: FILETYPE.UNKNOWN, seeks: false };\n }\n}\n\nexport class WasiHost {\n readonly mem = new WasiMemory();\n readonly fds: WasiFds;\n private readonly creds: CredCache;\n private readonly umasks: UmaskCache;\n private readonly started = performance.now();\n private cache: Record<string, WasiFunction> | undefined;\n\n private readonly startCwd: string;\n\n interruptWakes = false;\n\n strictEpoll = false;\n\n cwdFd = false;\n\n entered = false;\n\n enteredSignals = 0;\n\n raisedOnEntry: (() => number) | undefined;\n\n onRaise: ((sig: number) => boolean) | undefined;\n\n muted: ((fd: number, data: Uint8Array) => boolean) | undefined;\n\n signals: WasiSignals | undefined;\n\n sigmask: WasiSigmask | undefined;\n\n tid = 1;\n\n linkedTls: (() => Array<[number, number]>) | undefined;\n\n threadEntry: ThreadEntry | undefined;\n\n linkedModules: (() => Record<string, WebAssembly.Module>) | undefined;\n\n interrupted: (() => boolean) | undefined;\n\n quietly: <T>(fn: () => T) => T = UNGATED.quiet;\n\n deliverDue: () => void = UNGATED.deliver;\n\n private readonly listening: number[];\n\n readonly o: WasiHostOptions;\n constructor(o: WasiHostOptions) {\n const { kernel } = o;\n const call: WasiKernel['call'] = (req) => {\n if (req.op !== 'fd-promote') this.fds.flushEarly();\n return kernel.call(req);\n };\n const sys = new Proxy(kernel.sys, {\n get: (target, name) => {\n const member = Reflect.get(target, name);\n if (typeof member !== 'function') return member;\n return (...args: unknown[]) => {\n this.fds.flushEarly();\n return member.apply(target, args);\n };\n },\n });\n this.o = { ...o, kernel: { sys, call } };\n this.startCwd = o.cwd;\n this.fds = new WasiFds(this.o.kernel, o.fs);\n if (o.held) this.fds.held = o.held;\n this.creds = new CredCache(\n () => this.o.kernel.call({ op: 'proc-cred' }) as Cred,\n o.credGen ?? o.shared\n );\n this.umasks = new UmaskCache(\n (mask) =>\n this.o.kernel.call(\n mask === undefined ? { op: 'proc-umask' } : { op: 'proc-umask', mask }\n ) as number,\n o.credGen ?? o.shared,\n { quiet: (fn) => this.quietly(fn), deliver: () => this.deliverDue() }\n );\n if (o.shared) this.fds.share(o.shared, true);\n else if (o.forked) this.fds.restore(o.forked.fds, o.forked.cloexec);\n else if (!o.bare) this.fds.setup(o.cwd, o.inherited ?? [], o.preopenRoot === true);\n this.listening = o.shared ? [] : this.fds.sockets();\n }\n\n private fromCwd(raw: string): string {\n return this.fds.cwd() === undefined\n ? this.fds.resolve(3, `${this.cwd}/${raw}`)\n : this.fds.resolve(3, raw);\n }\n\n get cwd(): string {\n return this.fds.cwd() ?? this.startCwd;\n }\n\n umask(mask?: number): number {\n return mask === undefined ? this.umasks.get() : this.umasks.set(mask);\n }\n\n private copyImport(): WasiFunction {\n const { mem, fds } = this;\n const named = (dirfd: number, p: number, l: number): string => {\n const raw = mem.string(p, l);\n if (raw === '') throw new WasiError('ENOENT');\n if (raw.startsWith('/')) return fds.resolve(3, raw);\n return dirfd === AT_FDCWD ? this.fromCwd(raw) : fds.resolve(dirfd, raw);\n };\n return (...args: number[]) => {\n const [srcDirfd, sp, sl, dstDirfd, dp, dl, mode, flags] = args as [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n ];\n if (!this.o.fs.copy) return E.NOSYS;\n if ((flags & ~(COPY_EXCL | COPY_MODE)) !== 0) throw new WasiError('EINVAL');\n const from = named(srcDirfd, sp, sl);\n const to = named(dstDirfd, dp, dl);\n const bits = flags & COPY_MODE ? (this.o.fs.stat(from).mode ?? 0) : mode;\n this.copyFile(from, to, bits, (flags & COPY_EXCL) !== 0);\n return E.SUCCESS;\n };\n }\n\n copyFile(from: string, to: string, mode: number, exclusive: boolean): void {\n const { copy } = this.o.fs;\n if (!copy) throw new WasiError('ENOSYS');\n this.fds.flushPath(from);\n copy.call(this.o.fs, from, to, mode & 0o7777 & ~this.umasks.get(), exclusive);\n }\n\n private created(path: string, mode: number): void {\n const umask = this.umasks.get();\n if (umask !== DEFAULT_UMASK) this.o.fs.chmod(path, mode & ~umask);\n }\n\n sliccTtyImports(): Record<string, WasiFunction> {\n return wrap(sliccTty(this.mem, this.fds, this.o.kernel, () => this.interrupted?.()));\n }\n\n sliccFsImports(): Record<string, WasiFunction> {\n const { mem, fds } = this;\n const at = (dirfd: number, p: number, l: number) => fds.resolve(dirfd, mem.string(p, l));\n const pathOf = (fd: number): string => {\n const e = fds.get(fd);\n if (e.type === 'dir') return e.path;\n if (e.type === 'file') return e.file.path;\n const path =\n e.type === 'kernel' && fds.kind(fd, e) === 'file' ? this.kernelStat(fd).path : undefined;\n if (path === undefined) throw new WasiError('EBADF');\n return path;\n };\n const target = (path: string, flags: number): string => {\n if (flags & AT_SYMLINK_NOFOLLOW && this.o.fs.lstat(path).isSymbolicLink) {\n throw new WasiError('ENOTSUP');\n }\n return path;\n };\n const modeOf = (st: { mode?: number }) => (st.mode ?? 0) & 0o7777;\n const chown = (path: string, uid: number, gid: number, follow: boolean, handle?: number) => {\n const { chown: own } = this.o.fs;\n if (!own) throw new WasiError('ENOSYS');\n own.call(this.o.fs, path, idOf(uid), idOf(gid), follow, handle);\n };\n const caller = (): [number, number] => {\n const cred = this.creds.get();\n return [cred.euid, cred.egid];\n };\n const owner = (st: { uid?: number; gid?: number } | undefined, out: number): void => {\n const [uid, gid] = st?.uid === undefined ? caller() : [st.uid, st.gid as number];\n const view = mem.view();\n view.getUint32(out + 4, true);\n view.setUint32(out, uid, true);\n view.setUint32(out + 4, gid, true);\n };\n const dev = {\n json: (req: Parameters<WasiHost['o']['kernel']['call']>[0]) => this.o.kernel.call(req),\n };\n const fdOwned = (fd: number): { uid?: number; gid?: number } | undefined => {\n const e = fds.get(fd);\n if (e.type === 'device') return ROOT_IDS;\n const kind = e.type === 'kernel' ? fds.kind(fd, e) : 'file';\n if (kind === 'sealed' || kind === 'clipboard') return ROOT_IDS;\n if (kind === 'tty') return devSync(dev, devFdStat(fd));\n if (kind !== 'file') return undefined;\n try {\n return this.o.fs.stat(pathOf(fd));\n } catch (err) {\n if (!GONE.has((err as { code?: unknown })?.code as string)) throw err;\n return undefined;\n }\n };\n const fdMode = (fd: number): number => {\n const e = fds.get(fd);\n if (e.type === 'device') return DEVICE_MODE;\n const kind = e.type === 'kernel' ? fds.kind(fd, e) : undefined;\n if (kind === 'stream') return S_IFIFO | 0o600;\n if (kind === 'sealed' || kind === 'clipboard') return SEALED_MODE;\n if (kind !== undefined && kind !== 'file')\n return devSync(dev, devFdStat(fd)).mode ?? DEVICE_MODE;\n return modeOf(this.o.fs.stat(pathOf(fd)));\n };\n const pathOwned = (\n path: string,\n follow: boolean\n ): { uid?: number; gid?: number } | undefined => {\n const alias = this.fdAlias(path);\n if (alias && !follow) return alias.stdio ? ROOT_IDS : undefined;\n if (alias) {\n this.openFd(alias.fd);\n return fdOwned(alias.fd);\n }\n if (this.synthetic(path)) return ROOT_IDS;\n if (kernelDev(path)) return devSync(dev, devStat(path, follow));\n return this.viaDev(path, follow, () => this.statOf(path, follow), pathOwned);\n };\n const pathMode = (path: string, follow: boolean): number => {\n const alias = this.fdAlias(path);\n if (alias && !follow) {\n this.fdTarget(alias);\n return S_IFLNK | 0o777;\n }\n if (alias) {\n this.openFd(alias.fd);\n return fdMode(alias.fd);\n }\n if (this.synthetic(path) && deviceOf(path) === undefined) return SEALED_MODE;\n if (kernelDev(path)) return devSync(dev, devStat(path, follow)).mode ?? DEVICE_MODE;\n const fileMode = (st: SyncFsBridgeStat) => (st.isFifo ? S_IFIFO : 0) | modeOf(st);\n return this.viaDev(path, follow, () => fileMode(this.statOf(path, follow)), pathMode);\n };\n return wrap({\n fd_chown: (fd: number, uid: number, gid: number) => {\n const e = fds.get(fd);\n const handle = e.type === 'file' ? e.file.buffer.handle : undefined;\n void chown(pathOf(fd), uid, gid, true, handle);\n },\n path_chown: (dirfd: number, p: number, l: number, uid: number, gid: number, flags: number) =>\n void chown(at(dirfd, p, l), uid, gid, (flags & AT_SYMLINK_NOFOLLOW) === 0),\n fd_owner: (fd: number, out: number) => {\n if (!this.o.fs.owners) throw new WasiError('ENOTSUP');\n owner(fdOwned(fd), out);\n },\n fd_filestat_owner: (fd: number, statOut: number, out: number) => {\n if (!this.o.fs.owners) throw new WasiError('ENOTSUP');\n this.writeFilestat(statOut, this.fdFilestat(fd));\n owner(fdOwned(fd), out);\n },\n path_filestat_owner: (\n dirfd: number,\n lookup: number,\n p: number,\n l: number,\n statOut: number,\n out: number\n ) => {\n const path = at(dirfd, p, l);\n if (!this.o.fs.owners) throw new WasiError('ENOTSUP');\n this.writeFilestat(statOut, this.pathFilestat(path, lookup));\n owner(pathOwned(path, (lookup & LOOKUP_SYMLINK_FOLLOW) !== 0), out);\n },\n path_owner: (dirfd: number, p: number, l: number, flags: number, out: number) => {\n const path = at(dirfd, p, l);\n if (!this.o.fs.owners) throw new WasiError('ENOTSUP');\n owner(pathOwned(path, (flags & AT_SYMLINK_NOFOLLOW) === 0), out);\n },\n path_access: (dirfd: number, p: number, l: number, amode: number, flags: number) => {\n const path = at(dirfd, p, l);\n const nofollow = (flags & AT_SYMLINK_NOFOLLOW) !== 0;\n if (this.synthetic(path)) {\n if (this.o.fs.owners && amode & 1) throw new WasiError('EACCES');\n return;\n }\n const st = pathOwned(path, !nofollow);\n if (amode & 2 && (st as { readonly?: boolean }).readonly) throw new WasiError('EROFS');\n if (!this.o.fs.owners) return;\n const kind = flags & AT_EACCESS ? 'eaccess' : 'access';\n this.o.fs.access?.(path, amode & 7, kind, nofollow);\n },\n fd_chmod: (fd: number, mode: number) => void this.o.fs.chmod(pathOf(fd), mode & 0o7777),\n path_chmod: (dirfd: number, p: number, l: number, mode: number, flags: number) =>\n void this.o.fs.chmod(target(at(dirfd, p, l), flags), mode & 0o7777),\n path_mkfifo: (dirfd: number, p: number, l: number, mode: number) => {\n const { mkfifo } = this.o.fs;\n if (!mkfifo) return E.NOSYS;\n const raw = mem.string(p, l);\n if (raw === '') throw new WasiError('ENOENT');\n const path =\n dirfd === AT_FDCWD && !raw.startsWith('/') ? this.fromCwd(raw) : at(dirfd, p, l);\n const umask = this.umasks.get();\n const want = mode & 0o7777 & ~umask;\n mkfifo.call(this.o.fs, path, want);\n const made = (this.o.fs.lstat(path).mode ?? 0) & 0o7777;\n if ((made & ~want) !== 0) this.o.fs.chmod(path, made & want);\n return E.SUCCESS;\n },\n path_copy_file: this.copyImport(),\n umask: (mask: number, out: number) => {\n const old = this.umasks.set(mask);\n mem.view().setUint32(out, old, true);\n },\n fd_mode: (fd: number, out: number) => void mem.view().setUint32(out, fdMode(fd), true),\n path_mode: (dirfd: number, p: number, l: number, flags: number, out: number) => {\n const path = at(dirfd, p, l);\n const mode = pathMode(path, (flags & AT_SYMLINK_NOFOLLOW) === 0);\n mem.view().setUint32(out, mode, true);\n },\n });\n }\n\n private lockHost(mem: WasiMemory): LockHost {\n return {\n mem,\n file: (fd) => this.lockedFile(fd),\n flush: (file) => {\n if (file.path !== undefined) this.fds.flushPath(file.path);\n else if (file.target.fd !== undefined) this.o.kernel.sys.flush(file.target.fd);\n },\n locked: () => this.fds.holdLocks(),\n promote: (fd, moved) => this.fds.promote(fd, moved),\n reread: (fd) => this.fds.reread(fd),\n calls: {\n flock: (fd, kind, wait) =>\n this.fds.restarting(() =>\n this.o.kernel.call({ op: 'flock', fd, kind, ...(wait ? { wait } : {}) })\n ),\n set: (target, kind, start, len, wait) =>\n this.fds.restarting(() =>\n this.o.kernel.call({\n op: 'lk-set',\n ...target,\n kind,\n start,\n len,\n ...(wait ? { wait } : {}),\n })\n ),\n get: (target, kind, start, len) =>\n this.o.kernel.call({ op: 'lk-get', ...target, kind, start, len }) as LockHeld | null,\n },\n };\n }\n\n sliccImports(): Record<string, WasiFunction> {\n const { mem } = this;\n const path = (p: number, l: number) => {\n const text = mem.string(p, l);\n return text === '' || text.startsWith('/') ? text : normalize(`${this.cwd}/${text}`);\n };\n return wrap({\n mount: (\n sp: number,\n sl: number,\n tp: number,\n tl: number,\n fp: number,\n fl: number,\n flags: number,\n dp: number,\n dl: number\n ) =>\n void this.o.kernel.call({\n op: 'mount',\n source: mem.string(sp, sl),\n target: path(tp, tl),\n type: mem.string(fp, fl),\n flags,\n data: mem.string(dp, dl),\n }),\n umount2: (tp: number, tl: number, flags: number) =>\n void this.o.kernel.call({ op: 'umount', target: path(tp, tl), flags }),\n cred_get: (out: number) => {\n const cred = this.creds.get();\n const view = mem.view();\n view.getUint32(out + 20, true);\n IDS.forEach((key, i) => void view.setUint32(out + i * 4, cred[key], true));\n },\n cred_set: (...ids: number[]) => {\n const change: CredChange = {};\n IDS.forEach((key, i) => {\n if (ids[i] !== -1) change[key] = (ids[i] as number) >>> 0;\n });\n void this.creds.change(() => this.o.kernel.call({ op: 'proc-setcred', change }) as Cred);\n },\n ...semImports(this),\n ...lockImports(this.lockHost(mem)),\n groups_get: (buf: number, cap: number, count: number) => {\n const { groups } = this.creds.get();\n if (cap !== 0 && cap < groups.length) throw new WasiError('EINVAL');\n const shown = cap === 0 ? [] : groups;\n const view = mem.view();\n view.getUint32(count, true);\n if (shown.length > 0) view.getUint32(buf + (shown.length - 1) * 4, true);\n shown.forEach((g, i) => void view.setUint32(buf + i * 4, g, true));\n view.setUint32(count, groups.length, true);\n },\n groups_set: (buf: number, n: number) => {\n if (n < 0 || n > MAX_GROUPS) throw new WasiError('EINVAL');\n const view = mem.view();\n const groups = Array.from({ length: n }, (_, i) => view.getUint32(buf + i * 4, true));\n void this.creds.change(\n () => this.o.kernel.call({ op: 'proc-setcred', change: { groups } }) as Cred\n );\n },\n sigaction_set: (sig: number, disposition: number, flags: number) => {\n if (!this.signals) return E.NOSYS;\n const errno = this.signals.disposition(sig, disposition, flags);\n if (errno === E.SUCCESS && disposition === SIG_IGN) this.sigmask?.discard(sig);\n return errno;\n },\n sigmask_set: (how: number, lo: number, hi: number, old: number) => {\n if (!this.sigmask) return E.NOSYS;\n if (how === SIG_UNBLOCK || how === SIG_SETMASK) {\n this.signals?.unblocking(how === SIG_UNBLOCK ? lo << 1 : ~(lo << 1));\n }\n return this.sigmask.set(how, lo, hi, (oldLo, oldHi) => {\n if (old === 0) return;\n const view = mem.view();\n view.setUint32(old, oldLo, true);\n view.setUint32(old + 4, oldHi, true);\n });\n },\n sigmask_poll: (\n lo: number,\n hi: number,\n inPtr: number,\n outPtr: number,\n n: number,\n nevents: number\n ) =>\n this.sigmask\n ? this.maskedPoll(this.sigmask, [lo, hi], [inPtr, outPtr, n, nevents])\n : E.NOSYS,\n sigmask_epoll_wait: (\n lo: number,\n hi: number,\n epfd: number,\n events: number,\n max: number,\n timeout: bigint,\n nevents: number\n ) =>\n this.sigmask\n ? this.maskedEpoll(this.sigmask, [lo, hi], nevents, (epoll) =>\n epoll(epfd, events, max, timeout, nevents)\n )\n : E.NOSYS,\n sigwait: (lo: number, _hi: number, timeout: bigint, out: number) => {\n const mask = this.sigmask;\n if (!mask) return E.NOSYS;\n mem.view().setUint32(out, 0, true);\n return mask.sigwait(\n lo,\n timeout,\n (set) => void this.o.kernel.call({ op: 'sig-waiting', tid: mask.tid, set }),\n (sig) => void mem.view().setUint32(out, sig, true),\n this.entered\n );\n },\n sigwait_info: (lo: number, _hi: number, timeout: bigint, info: number) => {\n const mask = this.sigmask;\n if (!mask) return E.NOSYS;\n let took = 0;\n const r = mask.sigwait(\n lo,\n timeout,\n (set) => void this.o.kernel.call({ op: 'sig-waiting', tid: mask.tid, set }),\n (sig) => {\n took = sig;\n },\n this.entered\n );\n if (r === E.SUCCESS) this.writeSiginfo(info, took, mask.tid);\n return r;\n },\n siginfo_take: (sig: number, info: number) =>\n this.writeSiginfo(info, sig, this.sigmask?.tid ?? this.tid, false) ? E.SUCCESS : E.NOENT,\n sigaction_inherited: (out: number) => {\n const bits = this.o.kernel.call({ op: 'sig-inherited' }) as number;\n mem.view().setBigUint64(out, BigInt(libcBits(bits) >>> 0), true);\n return E.SUCCESS;\n },\n sigpending_get: (out: number) => {\n if (!this.sigmask) return E.NOSYS;\n mem.view().setBigUint64(out, BigInt(this.sigmask.pending()), true);\n return E.SUCCESS;\n },\n });\n }\n\n private poll(inPtr: number, outPtr: number, n: number, nevents: number, resume = true): number {\n const ran = this.signals?.ran ?? 0;\n try {\n return pollOneoff(\n {\n mem: this.mem,\n fds: this.fds,\n kernel: this.o.kernel,\n now: (id) => this.now(id),\n interruptWakes: this.interruptWakes,\n entered: this.entered,\n ...(resume ? { resumes: () => this.resumesPoll(ran) } : {}),\n },\n inPtr,\n outPtr,\n n,\n nevents\n );\n } finally {\n this.o.fs.invalidate?.();\n }\n }\n\n private resumesPoll(ran: number): boolean {\n this.interrupted?.();\n return (this.signals?.ran ?? 0) === ran;\n }\n\n private maskedPoll(\n mask: WasiSigmask,\n set: [number, number],\n [inPtr, outPtr, n, nevents]: number[]\n ): number {\n const old = mask.swap(set[0], set[1]);\n try {\n this.mem.view().setUint32(nevents, 0, true);\n if (mask.deliverUnblocked()) return E.INTR;\n this.settleEntry(mask);\n if (n > 0) return this.poll(inPtr, outPtr, n, nevents, false);\n return this.entered ? E.INTR : this.suspend();\n } finally {\n mask.deliverUnblocked();\n mask.restore(old);\n }\n }\n\n private epollWait: EpollWait | undefined;\n\n private settleEntry(mask: WasiSigmask): void {\n if (this.entered && (this.enteredSignals & ~mask.blockedBits()) === 0) this.entered = false;\n }\n\n private maskedEpoll(\n mask: WasiSigmask,\n set: [number, number],\n nevents: number,\n wait: (epoll: EpollWait) => number | undefined\n ): number {\n const old = mask.swap(set[0], set[1]);\n try {\n this.mem.view().setUint32(nevents, 0, true);\n if (mask.deliverUnblocked()) return E.INTR;\n this.settleEntry(mask);\n this.epollWait ??= wasixEpollImports(this).epoll_wait as unknown as EpollWait;\n return wait(this.epollWait) ?? E.SUCCESS;\n } finally {\n mask.deliverUnblocked();\n mask.restore(old);\n }\n }\n\n private suspend(): number {\n for (;;) {\n try {\n this.o.kernel.call({ op: 'fd-select', read: [], write: [], timeoutMs: -1 });\n } catch (e) {\n if ((e as { code?: unknown }).code === 'EINTR') return E.INTR;\n throw e;\n }\n }\n }\n\n imports(): Record<string, WasiFunction> {\n this.cache ??= wrap({\n ...this.processImports(),\n ...this.ioImports(),\n ...this.statImports(),\n ...this.pathImports(),\n ...this.socketImports(),\n poll_oneoff: (inPtr: number, outPtr: number, n: number, nevents: number) =>\n this.poll(inPtr, outPtr, n, nevents),\n });\n return this.cache;\n }\n\n now(id: number): bigint {\n if (id === CLOCK.REALTIME) return BigInt(Date.now()) * NS_PER_MS;\n\n if (id === CLOCK.MONOTONIC) {\n return MONOTONIC_BASE + BigInt(Math.round(performance.now() * 1e6));\n }\n return (localCpuNanos() ?? BigInt(Math.round((performance.now() - this.started) * 1e6))) + 1n;\n }\n\n private environ(): string[] {\n if (this.o.bare) return Object.entries(this.o.env).map(([k, v]) => `${k}=${v}`);\n const listen = this.listening.length > 0 ? { SLICC_LISTEN_FDS: this.listening.join(' ') } : {};\n const env = { PWD: this.cwd, ...this.o.env, ...listen };\n return Object.entries(env).map(([k, v]) => `${k}=${v}`);\n }\n\n private processImports(): Record<string, WasiFunction> {\n const { mem } = this;\n return {\n args_get: (argv: number, buf: number) => void mem.putStrings(this.o.args, argv, buf),\n args_sizes_get: (n: number, size: number) => void mem.putSizes(this.o.args, n, size),\n environ_get: (envp: number, buf: number) => void mem.putStrings(this.environ(), envp, buf),\n environ_sizes_get: (n: number, size: number) => void mem.putSizes(this.environ(), n, size),\n clock_res_get: (_id: number, out: number) => void mem.view().setBigUint64(out, 1000n, true),\n clock_time_get: (id: number, _precision: bigint, out: number) =>\n void mem.view().setBigUint64(out, this.now(id), true),\n random_get: (buf: number, len: number) => {\n for (let at = 0; at < len; at += 65536) {\n const chunk = new Uint8Array(Math.min(65536, len - at));\n crypto.getRandomValues(chunk);\n mem.bytes(buf + at, chunk.length).set(chunk);\n }\n },\n sched_yield: () => E.SUCCESS,\n proc_exit: (code: number) => {\n throw new WasiExit(code);\n },\n proc_raise: (sig: number) => {\n const posix = WASI_SIGNAL_TO_POSIX[sig];\n if (posix === undefined) throw new WasiError('EINVAL');\n if (this.onRaise?.(posix)) return;\n this.o.kernel.call({ op: 'proc-kill', pid: this.o.pid, sig: posix });\n },\n };\n }\n\n private ioImports(): Record<string, WasiFunction> {\n const { mem, fds } = this;\n return {\n fd_write: (fd: number, iovs: number, n: number, out: number) =>\n void mem.view().setUint32(out, this.write(fd, mem.gather(iovs, n)), true),\n fd_read: (fd: number, iovs: number, n: number, out: number) => {\n const data = this.read(fd, mem.capacity(iovs, n));\n mem.view().setUint32(out, mem.scatter(iovs, n, data), true);\n },\n fd_pread: (fd: number, iovs: number, n: number, at: bigint, out: number) => {\n const data = this.positional(fd, 'read').pread(mem.capacity(iovs, n), Number(at));\n mem.view().setUint32(out, mem.scatter(iovs, n, data), true);\n },\n fd_pwrite: (fd: number, iovs: number, n: number, at: bigint, out: number) =>\n void mem\n .view()\n .setUint32(\n out,\n this.positional(fd, 'write').pwrite(mem.gather(iovs, n), Number(at)),\n true\n ),\n fd_seek: (fd: number, offset: bigint, whence: number, out: number) =>\n void mem.view().setBigUint64(out, BigInt(this.seek(fd, Number(offset), whence)), true),\n fd_tell: (fd: number, out: number) =>\n void mem.view().setBigUint64(out, BigInt(this.seek(fd, 0, WHENCE.CUR)), true),\n fd_close: (fd: number) => void fds.close(fd),\n fd_renumber: (from: number, to: number) => void fds.renumber(from, to),\n fd_sync: (fd: number) => void this.sync(fd),\n fd_datasync: (fd: number) => void this.sync(fd),\n fd_advise: (fd: number) => void fds.get(fd),\n fd_allocate: (fd: number, offset: bigint, len: bigint) => {\n const file = this.positional(fd, 'write');\n const end = Number(offset + len);\n if (end > file.size()) file.truncate(end);\n },\n };\n }\n\n private statImports(): Record<string, WasiFunction> {\n const { mem, fds } = this;\n return {\n fd_fdstat_get: (fd: number, out: number) => void this.fdstat(fd, out),\n fd_fdstat_set_flags: (fd: number, flags: number) =>\n void fds.setFlags(fd, (flags & FDFLAGS.NONBLOCK) !== 0, (flags & FDFLAGS.APPEND) !== 0),\n fd_fdstat_set_rights: (fd: number) => void fds.get(fd),\n fd_filestat_get: (fd: number, out: number) =>\n void this.writeFilestat(out, this.fdFilestat(fd)),\n fd_filestat_set_size: (fd: number, size: bigint) =>\n void this.positional(fd, 'write').truncate(Number(size)),\n fd_filestat_set_times: (fd: number, atim: bigint, mtim: bigint, flags: number) => {\n const e = fds.get(fd);\n if (e.type === 'file') {\n e.file.flush();\n this.setTimes(e.file.path, atim, mtim, flags);\n } else if (e.type === 'dir') this.setTimes(e.path, atim, mtim, flags);\n },\n fd_prestat_get: (fd: number, out: number) => {\n const name = new TextEncoder().encode(fds.preopen(fd).preopen);\n mem.view().setUint8(out, PREOPENTYPE_DIR);\n mem.view().setUint32(out + 4, name.length, true);\n },\n fd_prestat_dir_name: (fd: number, buf: number, len: number) => {\n const name = new TextEncoder().encode(fds.preopen(fd).preopen);\n mem.bytes(buf, Math.min(len, name.length)).set(name.subarray(0, len));\n },\n fd_readdir: (fd: number, buf: number, len: number, cookie: bigint, used: number) =>\n void this.readdir(fd, buf, len, Number(cookie), used),\n };\n }\n\n private pathImports(): Record<string, WasiFunction> {\n const { mem, fds, o } = this;\n const at = (dirfd: number, p: number, l: number) => fds.resolve(dirfd, mem.string(p, l));\n return {\n path_open: (\n dirfd: number,\n lookup: number,\n p: number,\n l: number,\n oflags: number,\n rights: bigint,\n _inheriting: bigint,\n fdflags: number,\n out: number\n ) => {\n const follow = (lookup & LOOKUP_SYMLINK_FOLLOW) !== 0;\n try {\n const asked = at(dirfd, p, l);\n const alias = this.fdAlias(asked);\n if (alias && !alias.stdio) this.openFd(alias.fd);\n const path = alias && !alias.stdio ? `/dev/fd/${alias.fd}` : asked;\n if (deviceOf(path)) this.interrupted?.();\n mem\n .view()\n .setUint32(out, fds.open(path, oflags, rights, fdflags, undefined, !follow), true);\n if (fds.created) this.created(path, 0o666);\n } catch (err) {\n if ((err as { code?: string }).code !== 'ENOENT') throw err;\n const raw = mem.string(p, l);\n const joined = raw.startsWith('/') ? raw : `${fds.dir(dirfd).path}/${raw}`;\n const resolved = this.resolveForDev(joined, follow);\n if (!resolved) throw err;\n mem\n .view()\n .setUint32(out, fds.open(resolved, oflags, rights, fdflags, undefined, !follow), true);\n }\n },\n path_filestat_get: (dirfd: number, lookup: number, p: number, l: number, out: number) => {\n try {\n this.writeFilestat(out, this.pathFilestat(at(dirfd, p, l), lookup));\n } catch (err) {\n if ((err as { code?: string }).code !== 'ENOENT') throw err;\n const raw = mem.string(p, l);\n const joined = raw.startsWith('/') ? raw : `${fds.dir(dirfd).path}/${raw}`;\n const resolved = this.resolveForDev(joined, (lookup & LOOKUP_SYMLINK_FOLLOW) !== 0);\n if (!resolved) throw err;\n this.writeFilestat(out, this.pathFilestat(resolved, lookup));\n }\n },\n path_filestat_set_times: (\n dirfd: number,\n lookup: number,\n p: number,\n l: number,\n atim: bigint,\n mtim: bigint,\n flags: number\n ) => {\n const path = at(dirfd, p, l);\n fds.flushPath(path);\n this.setTimes(path, atim, mtim, flags, (lookup & LOOKUP_SYMLINK_FOLLOW) !== 0);\n },\n path_create_directory: (dirfd: number, p: number, l: number) => {\n const path = at(dirfd, p, l);\n if (o.fs.exists(path)) throw new WasiError('EEXIST');\n o.fs.mkdir(path);\n this.created(path, 0o777);\n },\n path_remove_directory: (dirfd: number, p: number, l: number) =>\n void o.fs.rmdir(at(dirfd, p, l)),\n path_unlink_file: (dirfd: number, p: number, l: number) => {\n const path = at(dirfd, p, l);\n if (inDevTree(path)) return void o.fs.unlink(path);\n const st = o.fs.lstat(path);\n if (st.isDirectory) throw new WasiError('EISDIR');\n const linked = linkedOf(st);\n fds.unlinking(path, linked);\n o.fs.unlink(path);\n fds.unlinked(path, linked);\n },\n path_rename: (fd: number, p: number, l: number, fd2: number, p2: number, l2: number) => {\n const from = at(fd, p, l);\n const to = at(fd2, p2, l2);\n fds.flushPath(from);\n const replaced = fds.holdsUnder(to) ? linkedElsewhere(o.fs, to) : undefined;\n if (replaced === undefined) fds.replacing(to);\n const seq = o.fs.rename(from, to);\n fds.renamed(from, to, replaced);\n fds.ownRename(typeof seq === 'number' ? seq : undefined);\n },\n path_symlink: (tp: number, tl: number, dirfd: number, p: number, l: number) => {\n const path = at(dirfd, p, l);\n if (tl === 0) throw new WasiError('ENOENT');\n o.fs.symlink(mem.string(tp, tl), path);\n },\n path_readlink: (\n dirfd: number,\n p: number,\n l: number,\n buf: number,\n len: number,\n used: number\n ) => {\n const path = at(dirfd, p, l);\n const alias = this.fdAlias(path);\n const target = new TextEncoder().encode(alias ? this.fdTarget(alias) : o.fs.readlink(path));\n const n = Math.min(len, target.length);\n mem.bytes(buf, n).set(target.subarray(0, n));\n mem.view().setUint32(used, n, true);\n },\n\n path_link: (\n fd: number,\n lookup: number,\n p: number,\n l: number,\n fd2: number,\n p2: number,\n l2: number\n ) => {\n const from = at(fd, p, l);\n const to = at(fd2, p2, l2);\n const follow = (lookup & LOOKUP_SYMLINK_FOLLOW) !== 0;\n const source = follow ? physicalPath(o.fs, from) : from;\n fds.flushPath(from);\n if (source !== from) fds.flushPath(source);\n o.fs.link(from, to, follow);\n fds.linked(from, to);\n if (source !== from) fds.linked(source, to);\n },\n };\n }\n\n private socket(fd: number): Extract<WasiEntry, { type: 'kernel' }> {\n const e = this.fds.get(fd);\n if (e.type !== 'kernel' || this.fds.kind(fd, e) !== 'socket') throw new WasiError('ENOTSOCK');\n return e;\n }\n\n private socketImports(): Record<string, WasiFunction> {\n const { mem, fds, o } = this;\n return {\n sock_accept: (fd: number, flags: number, out: number) => {\n const listener = this.socket(fd);\n const r = o.kernel.call({ op: 'sock-accept', fd, nonblock: listener.nonblock }) as {\n fd: number;\n };\n fds.adopt(r.fd, 'socket', (flags & FDFLAGS.NONBLOCK) !== 0);\n mem.view().setUint32(out, r.fd, true);\n },\n sock_recv: (\n fd: number,\n iovs: number,\n n: number,\n riflags: number,\n outLen: number,\n outFlags: number\n ) => {\n const e = this.socket(fd);\n if (this.fds.datagram(fd, e)) {\n return datagramCalls(this).recvFrom(\n fd,\n e.nonblock,\n iovs,\n n,\n riflags,\n outLen,\n outFlags,\n 0\n );\n }\n const peek = (riflags & RIFLAGS.PEEK) !== 0;\n const want = mem.capacity(iovs, n);\n const data =\n (riflags & RIFLAGS.WAITALL) !== 0 && !peek\n ? this.recvAll(fd, want, e.nonblock)\n : o.kernel.sys.read(fd, Math.min(want, MAX_READ), { nonblock: e.nonblock, peek });\n mem.view().setUint32(outLen, mem.scatter(iovs, n, data), true);\n mem.view().setUint16(outFlags, 0, true);\n },\n\n sock_send: (fd: number, iovs: number, n: number, _flags: number, out: number) => {\n const e = this.socket(fd);\n const sent = o.kernel.sys.write(fd, mem.gather(iovs, n), { nonblock: e.nonblock });\n mem.view().setUint32(out, sent, true);\n },\n sock_shutdown: (fd: number, how: number) => {\n this.socket(fd);\n const both = SDFLAGS.RD | SDFLAGS.WR;\n if (how === 0 || (how & ~both) !== 0) throw new WasiError('EINVAL');\n\n o.kernel.call({\n op: 'sock-shutdown',\n fd,\n how: how === both ? 2 : how === SDFLAGS.WR ? 1 : 0,\n });\n },\n };\n }\n\n private recvAll(fd: number, want: number, nonblock: boolean): Uint8Array {\n const chunks: Uint8Array[] = [];\n let got = 0;\n while (got < want) {\n let chunk: Uint8Array;\n try {\n chunk = this.o.kernel.sys.read(fd, Math.min(want - got, MAX_READ), { nonblock });\n } catch (err) {\n if (got === 0) throw err;\n break;\n }\n if (chunk.length === 0) break;\n chunks.push(chunk);\n got += chunk.length;\n }\n const out = new Uint8Array(got);\n let at = 0;\n for (const chunk of chunks) {\n out.set(chunk, at);\n at += chunk.length;\n }\n return out;\n }\n\n private file(fd: number, access?: 'read' | 'write') {\n const e = this.fds.get(fd);\n if (e.type !== 'file') {\n throw new WasiError(e.type === 'dir' ? 'EISDIR' : e.type === 'kernel' ? 'ESPIPE' : 'EINVAL');\n }\n if ((access === 'read' && !e.file.readable) || (access === 'write' && !e.file.writable)) {\n throw new WasiError('EBADF');\n }\n return e.file;\n }\n\n private positional(fd: number, access?: 'read' | 'write'): Positional {\n const e = this.fds.get(fd);\n const kind = e.type === 'kernel' ? this.fds.kind(fd, e) : e.type;\n if (kind === 'device') this.interrupted?.();\n if (kind !== 'file' || e.type !== 'kernel') return this.file(fd, access);\n const kernel = this.o.kernel;\n return {\n pread: (max, at) => {\n if (!kernel.sys.pread) throw new WasiError('ESPIPE');\n return kernel.sys.pread(fd, Math.min(max, MAX_READ), at);\n },\n pwrite: (body, at) =>\n this.changed(fd, e, kernel.call({ op: 'fd-pwrite', fd, offset: at, body }) as number),\n size: () => this.kernelStat(fd).size,\n truncate: (size) => this.changed(fd, e, void kernel.call({ op: 'fd-resize', fd, size })),\n };\n }\n\n private readonly unnamed = new WeakSet<object>();\n\n private changed<T>(fd: number, e: { path?: string; ino?: number }, result: T): T {\n if (e.path === undefined && !this.unnamed.has(e)) this.learnPath(fd, e);\n this.o.fs.touched?.(e.path, e.ino);\n return result;\n }\n\n private learnPath(fd: number, e: { path?: string; ino?: number }): void {\n this.unnamed.add(e);\n let path: string | undefined;\n try {\n const st = this.o.kernel.call({ op: 'fd-vfs-stat', fd, identity: true }) as {\n path?: string;\n orphan?: true;\n ino?: number;\n };\n path = st.orphan ? undefined : st.path;\n if (path !== undefined) e.ino = st.ino ?? this.o.fs.stat(path).ino;\n } catch {\n return;\n }\n e.path = path;\n }\n\n private lockedFile(fd: number): LockedFile {\n const e = this.fds.get(fd);\n if (e.type === 'file') {\n const { file } = e;\n return {\n target: { path: file.path },\n path: file.path,\n readable: file.readable,\n writable: file.writable,\n offset: () => file.offset,\n size: () => file.size(),\n };\n }\n if (e.type !== 'kernel') throw new WasiError('EBADF');\n if (this.fds.kind(fd, e) !== 'file') return { target: { fd }, offset: () => 0, size: () => 0 };\n return {\n target: { fd },\n offset: () => this.o.kernel.sys.seek(fd, 0, WHENCE.CUR),\n size: () => this.kernelStat(fd).size,\n };\n }\n\n private kernelStat(fd: number): { path?: string; size: number; orphan?: true } {\n return this.o.kernel.call({ op: 'fd-vfs-stat', fd }) as {\n path?: string;\n size: number;\n orphan?: true;\n };\n }\n\n private write(fd: number, data: Uint8Array): number {\n if (this.muted?.(fd, data)) return data.length;\n const e = this.fds.get(fd);\n if (e.type === 'kernel') {\n try {\n const n = this.o.kernel.sys.write(fd, data, { nonblock: e.nonblock });\n return this.fds.kind(fd, e) === 'file' ? this.changed(fd, e, n) : n;\n } catch (err) {\n const broken = (err as { code?: string }).code === 'EPIPE';\n if (broken && this.fds.kind(fd, e) !== 'socket') this.brokenPipe();\n throw err;\n }\n }\n if (e.type === 'device') {\n this.interrupted?.();\n if (e.access === 'read') throw new WasiError('EBADF');\n if (e.device === 'full' && data.length > 0) throw new WasiError('ENOSPC');\n return data.length;\n }\n return this.file(fd, 'write').write(data);\n }\n\n private brokenPipe(): void {\n let action: unknown;\n try {\n action = this.o.kernel.call({ op: 'proc-kill-self', sig: SIG.PIPE, dry: true });\n } catch {\n action = 'terminate';\n }\n if (action === 'ignore') return;\n if (action === 'terminate' && !this.sigmask?.blocks(SIG.PIPE)) throw new WasiExit(SIGPIPE_EXIT);\n this.o.kernel.call({ op: 'thread-kill', tid: this.tid, sig: SIG.PIPE });\n }\n\n private read(fd: number, max: number): Uint8Array {\n const e = this.fds.get(fd);\n if (e.type === 'kernel') {\n return this.o.kernel.sys.read(fd, Math.min(max, MAX_READ), { nonblock: e.nonblock });\n }\n if (e.type === 'device') {\n this.interrupted?.();\n if (e.access === 'write') throw new WasiError('EBADF');\n if (e.device === 'null') return new Uint8Array(0);\n const out = new Uint8Array(Math.min(max, 65536));\n return e.device === 'urandom' ? crypto.getRandomValues(out) : out;\n }\n return this.file(fd, 'read').read(max);\n }\n\n private local<T>(answer: T): T {\n this.interrupted?.();\n return answer;\n }\n\n private seek(fd: number, offset: number, whence: number): number {\n const e = this.fds.get(fd);\n if (e.type === 'kernel') {\n const kind = this.fds.kind(fd, e);\n if (kind === 'device') return this.local(0);\n if (kind !== 'file') throw new WasiError('ESPIPE');\n return this.o.kernel.sys.seek(fd, offset, whence);\n }\n if (e.type === 'device') return this.local(0);\n const file = this.file(fd);\n const base = whence === WHENCE.SET ? 0 : whence === WHENCE.CUR ? file.offset : file.size();\n if (whence > WHENCE.END || base + offset < 0) throw new WasiError('EINVAL');\n file.offset = base + offset;\n return file.offset;\n }\n\n private sync(fd: number): void {\n const e = this.fds.get(fd);\n if (e.type === 'file') e.file.flush();\n else if (e.type === 'device') this.interrupted?.();\n else if (e.type === 'kernel') {\n const kind = this.fds.kind(fd, e);\n if (kind === 'file') this.o.kernel.sys.flush(fd);\n else if (kind === 'device') this.interrupted?.();\n }\n }\n\n private fdstat(fd: number, out: number): void {\n const e = this.fds.get(fd);\n if (e.type === 'device') this.interrupted?.();\n let filetype: number = FILETYPE.CHARACTER_DEVICE;\n let seeks = true;\n let flags = 0;\n if (e.type === 'kernel') {\n const kind = this.fds.kind(fd, e);\n if (kind === 'device') this.interrupted?.();\n ({ filetype, seeks } = kernelFiletype(this.fds.datagram(fd, e) ? 'dgram' : kind));\n if (e.nonblock) flags |= FDFLAGS.NONBLOCK;\n if (e.append) flags |= FDFLAGS.APPEND;\n } else if (e.type === 'file') {\n filetype = FILETYPE.REGULAR_FILE;\n if (e.file.append) flags |= FDFLAGS.APPEND;\n } else if (e.type === 'dir') filetype = FILETYPE.DIRECTORY;\n const v = this.mem.view();\n v.setUint8(out, filetype);\n v.setUint16(out + 2, flags, true);\n\n let rights = seeks ? RIGHTS.ALL : RIGHTS.ALL & ~(RIGHTS.FD_SEEK | RIGHTS.FD_TELL);\n if (e.type === 'kernel') {\n const access = this.o.kernel.sys.access?.(fd);\n if (access === 'read') rights &= ~RIGHTS.FD_WRITE;\n else if (access === 'write') rights &= ~RIGHTS.FD_READ;\n }\n v.setBigUint64(out + 8, rights, true);\n v.setBigUint64(out + 16, RIGHTS.ALL, true);\n }\n\n private writeFilestat(ptr: number, f: Filestat): void {\n const v = this.mem.view();\n v.setBigUint64(ptr, 1n, true);\n v.setBigUint64(ptr + 8, f.ino, true);\n v.setUint8(ptr + 16, f.filetype);\n v.setBigUint64(ptr + 24, f.nlink ?? 1n, true);\n v.setBigUint64(ptr + 32, f.size, true);\n v.setBigUint64(ptr + 40, f.mtimeNs, true);\n v.setBigUint64(ptr + 48, f.mtimeNs, true);\n v.setBigUint64(ptr + 56, f.mtimeNs, true);\n }\n\n private fdFilestat(fd: number): Filestat {\n const e = this.fds.get(fd);\n if (e.type === 'dir') return filestatOf(e.path, this.o.fs.stat(e.path));\n if (e.type === 'file') return this.localFilestat(e.file);\n const kind = e.type === 'kernel' ? this.fds.kind(fd, e) : undefined;\n if (kind === 'file') {\n const vfs = this.kernelStat(fd);\n if (vfs.path) return this.statOrphanable(vfs.path, vfs.size, vfs.orphan, vfs.orphan);\n }\n const filetype = kind ? kernelFiletype(kind).filetype : FILETYPE.CHARACTER_DEVICE;\n return this.local({ filetype, size: 0n, ino: BigInt(fd + 1), mtimeNs: 0n });\n }\n\n private localFilestat(file: LocalFile): Filestat {\n const { buffer } = file;\n if (buffer.isOrphan()) {\n const bound = buffer.bound;\n if (!bound) return this.statOrphanable(file.path, file.size(), false, true);\n return { ...this.sized(file.path, bound, file.size()), nlink: 0n };\n }\n let s: SyncFsBridgeStat | undefined;\n try {\n s = this.o.fs.stat(file.path);\n } catch {\n s = this.keptStat(buffer.handle);\n }\n const bound = buffer.bound;\n if (s && bound?.ino !== undefined && s.ino !== bound.ino) {\n s = this.keptStat(buffer.handle) ?? bound;\n }\n return this.sized(file.path, s, file.size());\n }\n\n private keptStat(handle: number | undefined): SyncFsBridgeStat | undefined {\n if (handle === undefined) return undefined;\n try {\n return this.o.fs.keptStat?.(handle);\n } catch {\n return undefined;\n }\n }\n\n private sized(path: string, s: SyncFsBridgeStat | undefined, size: number): Filestat {\n return {\n ...filestatOf(path, s ?? { isFile: true, isDirectory: false, size: 0 }),\n size: BigInt(size),\n };\n }\n\n private statOrphanable(path: string, size: number, orphan = false, gone = false): Filestat {\n let s: SyncFsBridgeStat | undefined;\n\n if (!orphan) {\n try {\n s = this.o.fs.stat(path);\n } catch {}\n }\n const out = this.sized(path, s, size);\n return gone ? { ...out, nlink: 0n } : out;\n }\n\n private synthetic(path: string): boolean {\n return (\n deviceOf(path) !== undefined ||\n (path === SEALED_PATH && !!this.o.kernel.sys.openSealed) ||\n (path === CLIPBOARD_PATH && !!this.o.kernel.sys.openClipboard)\n );\n }\n\n private linkedDev(path: string, follow: boolean): string | undefined {\n if (!follow) return undefined;\n const real = physicalLeaf(this.o.fs, path);\n return real !== undefined && real !== path && kernelDev(real) ? real : undefined;\n }\n\n private statOf(path: string, follow: boolean): SyncFsBridgeStat {\n return follow ? this.o.fs.stat(path) : this.o.fs.lstat(path);\n }\n\n private viaDev<T>(\n path: string,\n follow: boolean,\n stat: () => T,\n device: (path: string, follow: boolean) => T\n ): T {\n try {\n return stat();\n } catch (err) {\n const linked = (err as { code?: string }).code === 'ENOENT' && this.linkedDev(path, follow);\n if (!linked) throw err;\n return device(linked, true);\n }\n }\n\n private devChar(path: string, follow: boolean): boolean {\n try {\n const json = (req: Parameters<WasiHost['o']['kernel']['call']>[0]) => this.o.kernel.call(req);\n const st = devSync({ json }, devStat(path, follow));\n return ((st.mode ?? 0) & 0o170000) === 0o020000;\n } catch {\n return false;\n }\n }\n\n private resolveForDev(path: string, follow = true): string | undefined {\n try {\n if (!follow) {\n const slash = path.lastIndexOf('/');\n if (slash <= 0) return undefined;\n const parent = physicalLeaf(this.o.fs, path.slice(0, slash));\n const resolved = parent === undefined ? undefined : `${parent}/${path.slice(slash + 1)}`;\n return resolved !== undefined && resolved !== path && this.synthetic(resolved)\n ? resolved\n : undefined;\n }\n const resolved = physicalLeaf(this.o.fs, path);\n return resolved !== undefined && resolved !== path && this.synthetic(resolved)\n ? resolved\n : undefined;\n } catch {\n return undefined;\n }\n }\n\n private writeSiginfo(at: number, sig: number, tid: number, waited = true): boolean {\n const taken = this.o.kernel.call({ op: 'sig-info', sig, tid }) as SigInfo | null;\n if (!taken && !waited) return false;\n const info = taken ?? KERNEL_SIGINFO;\n const view = this.mem.view();\n const size = Math.min(view.getUint32(at, true), SIGINFO_BYTES);\n const fields = [sig, info.code, info.pid, info.uid, info.status];\n let filled = 4;\n for (const [i, value] of fields.entries()) {\n if (4 + (i + 1) * 4 > size) break;\n view.setInt32(4 + at + i * 4, value, true);\n filled = 4 + (i + 1) * 4;\n }\n view.setUint32(at, filled, true);\n return true;\n }\n\n private fdAlias(path: string): FdAlias | undefined {\n const m = FD_ALIAS.exec(path);\n if (!m) return undefined;\n if (m[1]) return { fd: STDIO_FDS[m[1]] as number, stdio: true };\n if (m[3] !== undefined && m[3] !== 'self' && Number(m[3]) !== this.o.pid) return undefined;\n return { fd: Number(m[2] ?? m[4]), stdio: false };\n }\n\n private openFd(fd: number): void {\n try {\n this.fds.get(fd);\n } catch {\n throw new WasiError('ENOENT');\n }\n }\n\n private fdTarget(alias: FdAlias): string {\n if (alias.stdio) return `/proc/self/fd/${alias.fd}`;\n this.openFd(alias.fd);\n const e = this.fds.get(alias.fd);\n if (e.type === 'file') return e.file.path;\n if (e.type === 'dir') return e.path;\n if (e.type === 'device') return `/dev/${e.device}`;\n const kind = e.type === 'kernel' ? this.fds.kind(alias.fd, e) : undefined;\n if (kind === 'file') {\n const vfs = this.kernelStat(alias.fd);\n if (vfs.path) return vfs.path;\n }\n if (kind === 'tty') return '/dev/tty';\n if (kind === 'device') return '/dev/null';\n if (kind === 'stream') {\n const { fifo } = this.o.kernel.call({ op: 'fd-info', fd: alias.fd }) as FdInfo;\n if (fifo !== undefined) return fifo;\n }\n const ino = this.fdFilestat(alias.fd).ino;\n if (kind === 'stream') return `pipe:[${ino}]`;\n if (kind === 'socket') return `socket:[${ino}]`;\n return `anon_inode:[${kind ?? 'fd'}]`;\n }\n\n private aliasFilestat(path: string, alias: FdAlias, lookup: number): Filestat {\n if ((lookup & LOOKUP_SYMLINK_FOLLOW) === 0) {\n const target = this.fdTarget(alias);\n return this.local({\n filetype: FILETYPE.SYMBOLIC_LINK,\n size: BigInt(new TextEncoder().encode(target).length),\n ino: pathInode(path),\n mtimeNs: 0n,\n });\n }\n this.openFd(alias.fd);\n return this.fdFilestat(alias.fd);\n }\n\n private pathFilestat(path: string, lookup: number): Filestat {\n const alias = this.fdAlias(path);\n if (alias) return this.aliasFilestat(path, alias, lookup);\n if (this.synthetic(path)) {\n return this.local({\n filetype: FILETYPE.CHARACTER_DEVICE,\n size: 0n,\n ino: pathInode(path),\n mtimeNs: 0n,\n });\n }\n this.fds.flushPath(path);\n const follow = (lookup & LOOKUP_SYMLINK_FOLLOW) !== 0;\n try {\n return filestatOf(path, follow ? this.o.fs.stat(path) : this.o.fs.lstat(path));\n } catch (err) {\n if ((err as { code?: string }).code !== 'ENOENT') throw err;\n const device = kernelDev(path) ? path : this.linkedDev(path, follow);\n const alias = device && device !== path ? this.fdAlias(device) : undefined;\n if (device && alias) return this.aliasFilestat(device, alias, lookup);\n if (device && this.devChar(device, true)) {\n return this.local({\n filetype: FILETYPE.CHARACTER_DEVICE,\n size: 0n,\n ino: pathInode(device),\n mtimeNs: 0n,\n });\n }\n const resolved = this.resolveForDev(path, follow);\n if (!resolved) throw err;\n return this.local({\n filetype: FILETYPE.CHARACTER_DEVICE,\n size: 0n,\n ino: pathInode(resolved),\n mtimeNs: 0n,\n });\n }\n }\n\n private setTimes(path: string, atim: bigint, mtim: bigint, flags: number, follow = true): void {\n const asked = FSTFLAGS.ATIM | FSTFLAGS.ATIM_NOW | FSTFLAGS.MTIM | FSTFLAGS.MTIM_NOW;\n if (this.o.fs.owners && (flags & asked) === 0) return;\n const now = Date.now();\n let current: SyncFsBridgeStat | undefined;\n const statOf = follow ? this.o.fs.stat.bind(this.o.fs) : this.o.fs.lstat.bind(this.o.fs);\n const kept = (field: 'atimeMs' | 'mtimeMs'): number => {\n current ??= statOf(path);\n return current[field] ?? current.mtimeMs ?? now;\n };\n const pick = (\n set: number,\n setNow: number,\n value: bigint,\n field: 'atimeMs' | 'mtimeMs'\n ): number => (flags & setNow ? now : flags & set ? Number(value / NS_PER_MS) : kept(field));\n (follow ? this.o.fs.utimes : this.o.fs.lutimes).call(\n this.o.fs,\n path,\n pick(FSTFLAGS.ATIM, FSTFLAGS.ATIM_NOW, atim, 'atimeMs'),\n pick(FSTFLAGS.MTIM, FSTFLAGS.MTIM_NOW, mtim, 'mtimeMs'),\n (flags & (FSTFLAGS.ATIM | FSTFLAGS.MTIM)) === 0\n );\n }\n\n private readdir(fd: number, buf: number, len: number, cookie: number, usedPtr: number): void {\n const dir = this.fds.dir(fd);\n if (cookie === 0 || !dir.listing) {\n dir.listing = this.fds.goneCwd(dir) ? { names: [], stats: new Map() } : this.list(dir.path);\n }\n const { names, stats } = dir.listing;\n let at = 0;\n for (let i = cookie; i < names.length && at < len; i++) {\n const name = names[i];\n const full =\n name === '.'\n ? dir.path\n : name === '..'\n ? normalize(`${dir.path}/..`)\n : resolveUnder(dir.path, name);\n if (!stats.has(name)) stats.set(name, this.lstatOrNull(full));\n const st = stats.get(name) ?? null;\n const record = direntRecord(\n i + 1,\n st?.ino !== undefined ? BigInt(st.ino) : pathInode(full),\n name,\n filetypeOf(st)\n );\n const n = Math.min(record.length, len - at);\n this.mem.bytes(buf + at, n).set(record.subarray(0, n));\n at += n;\n }\n this.mem.view().setUint32(usedPtr, at, true);\n }\n\n private list(path: string): DirListing {\n const { fs } = this.o;\n const listed = fs.readdirStat(path);\n return { names: ['.', '..', ...listed.map(([name]) => name)], stats: new Map(listed) };\n }\n\n private lstatOrNull(path: string): SyncFsBridgeStat | null {\n try {\n return this.o.fs.lstat(path);\n } catch {\n return null;\n }\n }\n\n flushAll(): void {\n this.fds.flushAll();\n }\n}\n\nfunction direntRecord(next: number, ino: bigint, name: string, filetype: number): Uint8Array {\n const nameBytes = new TextEncoder().encode(name);\n const record = new Uint8Array(SIZE.DIRENT + nameBytes.length);\n const v = new DataView(record.buffer);\n v.setBigUint64(0, BigInt(next), true);\n v.setBigUint64(8, ino, true);\n v.setUint32(16, nameBytes.length, true);\n v.setUint8(20, filetype);\n record.set(nameBytes, SIZE.DIRENT);\n return record;\n}\n\nexport function wrap(table: Record<string, WasiFunction>): Record<string, WasiFunction> {\n const out: Record<string, WasiFunction> = {};\n for (const [name, fn] of Object.entries(table)) {\n out[name] = (...args: never[]) => {\n try {\n return fn(...args) ?? E.SUCCESS;\n } catch (e) {\n if (e instanceof WasiExit) throw e;\n if (e instanceof WasiError) return wasiErrnoOf(e.code);\n const code = (e as { code?: unknown } | null)?.code;\n if (typeof code === 'string') return wasiErrnoOf(code);\n if (e instanceof RangeError) return E.FAULT;\n throw e;\n }\n };\n }\n return out;\n}\n", "import { physicalPath } from '../../fs/physical-path.ts';\nimport type { ChildStdio, InheritedSlot } from '../../kernel/children.ts';\nimport { normalize } from './wasi-files.ts';\nimport { WasiExit, type WasiHost } from './wasi-host.ts';\nimport type { AsyncifyDriver, WasiForkState } from './wasix-fork.ts';\n\nexport interface SpawnFdOp {\n cmd: 'close' | 'dup2' | 'open' | 'chdir' | 'fchdir';\n fd: number;\n srcFd: number;\n path: string;\n oflags: number;\n rightsWrite: boolean;\n append: boolean;\n}\n\nexport interface ChildRequest {\n name: string;\n argv: string[];\n\n env?: Record<string, string>;\n search: boolean;\n path: string;\n ops?: readonly SpawnFdOp[];\n}\n\nexport function restarted(issue: () => unknown): unknown {\n for (;;) {\n try {\n return issue();\n } catch (e) {\n if ((e as { code?: unknown } | null)?.code !== 'EINTR') throw e;\n }\n }\n}\n\nfunction resolveFrom(cwd: string, path: string): string {\n return normalize(path.startsWith('/') ? path : `${cwd}/${path}`);\n}\n\nconst O_WRONLY = 0o1;\nconst O_RDWR = 0o2;\nconst O_APPEND = 0o2000;\nconst OFLAG_CREAT = 1;\nconst OFLAG_TRUNC = 8;\nconst JOIN_NON_BLOCKING = 1;\nconst JOIN_WAKE_STOPPED = 2;\nconst JOIN_STOPPED = 3;\n\nexport class WasixProcess {\n private readonly host: WasiHost;\n private readonly driver: AsyncifyDriver;\n private readonly inThread: () => boolean;\n constructor(host: WasiHost, driver: AsyncifyDriver, inThread: () => boolean = () => false) {\n this.host = host;\n this.driver = driver;\n this.inThread = inThread;\n }\n\n private restart(): { restart?: true } {\n return this.inThread() ? {} : { restart: true };\n }\n\n private call(req: Parameters<WasiHost['o']['kernel']['call']>[0]): unknown {\n return this.host.o.kernel.call(req);\n }\n\n private environment(): Record<string, string> {\n return { ...this.host.o.env, PWD: this.host.cwd };\n }\n\n private locate(name: string, search: boolean, path: string): string {\n if (name.includes('/'))\n return name.startsWith('/') ? name : normalize(`${this.host.cwd}/${name}`);\n if (!search) return name;\n for (const dir of path.split(':')) {\n if (!dir) continue;\n const candidate = normalize(\n `${dir.startsWith('/') ? '' : `${this.host.cwd}/`}${dir}/${name}`\n );\n if (this.host.o.fs.exists(candidate)) return candidate;\n }\n return name;\n }\n\n private childFds(ops: readonly SpawnFdOp[]): {\n stdio: ChildStdio[];\n inherit: InheritedSlot[];\n cwd: string;\n opened: number[];\n } {\n const { fds } = this.host;\n fds.promoteFiles();\n const map = fds.inheritable();\n\n const nulls = new Set<number>();\n const opened: number[] = [];\n let cwd = this.host.cwd;\n try {\n for (const op of ops) cwd = this.applyFdOp(op, { map, nulls, opened }, cwd);\n } catch (e) {\n for (const kfd of opened) this.host.o.kernel.sys.close(kfd);\n throw e;\n }\n const stdio: ChildStdio[] = [0, 1, 2].map((fd) => {\n const k = map.get(fd);\n return k === undefined ? { none: true } : { fd: k };\n });\n const inherit: InheritedSlot[] = [\n ...[...map].filter(([fd]) => fd > 2).map(([fd, kernel]) => ({ fd, kernel })),\n ...[...nulls].filter((fd) => fd > 2).map((fd) => ({ fd, device: 'null' as const })),\n ];\n return { stdio, inherit, cwd, opened };\n }\n\n private applyFdOp(\n op: SpawnFdOp,\n slots: { map: Map<number, number>; nulls: Set<number>; opened: number[] },\n cwd: string\n ): string {\n const { map, nulls, opened } = slots;\n const { fds } = this.host;\n const point = (fd: number, kfd: number | undefined) => {\n if (kfd === undefined) {\n map.delete(fd);\n nulls.add(fd);\n } else {\n map.set(fd, kfd);\n nulls.delete(fd);\n }\n };\n if (op.cmd === 'close') {\n map.delete(op.fd);\n nulls.delete(op.fd);\n } else if (op.cmd === 'dup2' && nulls.has(op.srcFd)) point(op.fd, undefined);\n else if (op.cmd === 'dup2') {\n const src =\n map.get(op.srcFd) ?? (fds.find(op.srcFd)?.type === 'kernel' ? op.srcFd : undefined);\n if (src === undefined) throw Object.assign(new Error('EBADF'), { code: 'EBADF' });\n point(op.fd, src);\n } else if (op.cmd === 'open' && resolveFrom(cwd, op.path) === '/dev/null') {\n point(op.fd, undefined);\n } else if (op.cmd === 'open') {\n const kfd = this.openFor(op, cwd);\n opened.push(kfd);\n point(op.fd, kfd);\n } else if (op.cmd === 'chdir') return this.physicalFrom(cwd, op.path);\n else return physicalPath(this.host.o.fs, fds.dir(op.fd).path);\n return cwd;\n }\n\n private physicalFrom(cwd: string, path: string): string {\n return physicalPath(this.host.o.fs, path.startsWith('/') ? path : `${cwd}/${path}`);\n }\n\n private openFor(op: SpawnFdOp, cwd: string): number {\n const path = resolveFrom(cwd, op.path);\n const create = (op.oflags & OFLAG_CREAT) !== 0;\n if (!create && !this.host.o.fs.exists(path)) {\n throw Object.assign(new Error('ENOENT'), { code: 'ENOENT' });\n }\n const flags = (op.rightsWrite ? O_RDWR : 0) | (op.append ? O_APPEND : 0);\n\n return this.host.o.kernel.sys.openVfs(path, op.rightsWrite ? flags || O_WRONLY : 0, 0, {\n ...(create ? { create } : {}),\n ...(op.oflags & OFLAG_TRUNC ? { truncate: true } : {}),\n });\n }\n\n spawn(req: ChildRequest, exec = false): number {\n const ops = req.ops ?? [];\n const { stdio, inherit, cwd, opened } = this.childFds(ops);\n const moved = ops.some((op) => op.cmd === 'chdir' || op.cmd === 'fchdir');\n try {\n const spawn = {\n op: 'proc-spawn' as const,\n file: this.locate(req.name, req.search, req.path),\n ...(req.search ? {} : { search: false as const }),\n argv: req.argv.length > 0 ? req.argv : [req.name],\n env: req.env ?? this.environment(),\n cwd,\n ...(moved ? { chdir: true as const } : {}),\n stdio,\n inherit,\n ...(exec ? { exec } : {}),\n ...this.restart(),\n };\n return restarted(() => this.call(spawn)) as number;\n } finally {\n for (const kfd of opened) this.host.o.kernel.sys.close(kfd);\n\n this.host.o.fs.invalidate?.();\n }\n }\n\n exec(req: ChildRequest): never {\n const pid = this.spawn(req, true);\n const [, status] = this.call({ op: 'proc-exec', pid }) as [number, number];\n const sig = status & 0x7f;\n throw new WasiExit(sig ? 128 + sig : (status >> 8) & 0xff);\n }\n\n join(pidPtr: number, flags: number, statusPtr: number): void {\n const v = this.host.mem.view();\n const pid = v.getUint8(pidPtr) === 1 ? v.getUint32(pidPtr + 4, true) : -1;\n this.host.mem.bytes(statusPtr, 6).fill(0);\n const [child, status] = this.call({\n op: 'proc-wait',\n pid,\n nohang: (flags & JOIN_NON_BLOCKING) !== 0,\n ...(flags & JOIN_WAKE_STOPPED ? { untraced: true } : {}),\n }) as [number, number];\n if (child === 0) return;\n\n this.host.o.fs.invalidate?.();\n v.setUint8(pidPtr, 1);\n v.setUint32(pidPtr + 4, child, true);\n const sig = status & 0x7f;\n if (sig === 0x7f) {\n v.setUint8(statusPtr, JOIN_STOPPED);\n v.setUint8(statusPtr + 2, (status >> 8) & 0xff);\n } else if (sig) {\n v.setUint8(statusPtr, 2);\n v.setUint8(statusPtr + 4, sig);\n } else {\n v.setUint8(statusPtr, 1);\n v.setUint16(statusPtr + 2, (status >> 8) & 0xff, true);\n }\n }\n\n fork(pidPtr: number): number | undefined {\n const back = this.driver.rewound();\n if (back !== undefined) {\n this.host.mem.view().setUint32(pidPtr, back, true);\n return undefined;\n }\n return this.driver.fork(\n (asyncifyData, globals, forkSp) =>\n restarted(() => this.forkCall(asyncifyData, globals, forkSp)) as number\n );\n }\n\n private forkCall(\n asyncifyData: number,\n globals: Array<[string, number]>,\n forkSp: number\n ): unknown {\n const { fds } = this.host;\n fds.promoteFiles();\n const memory = this.host.mem.bytes(0, this.host.mem.size()).slice();\n const wasi: WasiForkState = {\n asyncifyData,\n globals,\n fds: fds.snapshot(),\n cloexec: [...fds.cloexec],\n cwd: this.host.cwd,\n ...(fds.isShared ? { shared: true as const } : {}),\n setjmps: this.driver.setjmps(),\n ...(this.host.signals ? { signals: this.host.signals.snapshot() } : {}),\n ...(this.host.sigmask ? { blocked: this.host.sigmask.inherited() } : {}),\n ...(this.host.linkedTls ? { tls: this.host.linkedTls() } : {}),\n ...(this.host.linkedModules ? { modules: this.host.linkedModules() } : {}),\n };\n if (this.host.threadEntry) wasi.entry = this.host.threadEntry;\n return this.call({\n op: 'proc-fork',\n state: { memory, currData: 0, forkSp, callStackNames: [], ppid: this.host.o.pid, wasi },\n ...this.restart(),\n });\n }\n}\n", "import type { Cred } from '../../kernel/cred.ts';\nimport type { SyncFsPosixBridge, SyncFsResult } from '../../realm/sync-fs-wire.ts';\nimport { E, FDFLAGS, OFLAGS, RIGHTS, wasiErrnoOf } from './wasi-abi.ts';\nimport { WasiError } from './wasi-files.ts';\nimport type { WasiHost } from './wasi-host.ts';\nimport { MAIN_TID } from './wasi-threads.ts';\nimport { restarted } from './wasix-process.ts';\n\nexport interface Request {\n op: string;\n [key: string]: unknown;\n}\n\nexport type Raw = (req: Request) => SyncFsResult;\n\nexport interface OpenOptions {\n read?: boolean;\n write?: boolean;\n append?: boolean;\n create?: boolean;\n exclusive?: boolean;\n truncate?: boolean;\n directory?: boolean;\n nofollow?: boolean;\n mode?: number;\n}\n\nexport interface FdStat {\n kind: 'file' | 'dir' | 'device' | 'stream';\n path?: string;\n mode: number;\n uid: number;\n gid: number;\n size: number;\n ino?: number;\n mtimeMs?: number;\n}\n\nexport type Taken = { value: unknown } | { error: string };\n\nexport type Stdio = 'pipe' | 'inherit' | 'null';\n\nexport interface ConnectOptions {\n host: string;\n port: number;\n nonblock?: boolean;\n}\n\nexport interface SpawnOptions {\n argv: string[];\n env?: Record<string, string>;\n cwd?: string;\n stdin?: Stdio;\n stdout?: Stdio;\n stderr?: Stdio;\n}\n\nexport interface Spawned {\n pid: number;\n stdin?: number;\n stdout?: number;\n stderr?: number;\n}\n\nexport interface Waited {\n status: number;\n signal?: number;\n}\n\nexport interface ImportsContext {\n memory(): WebAssembly.Memory;\n instance(): WebAssembly.Instance | undefined;\n tid: number;\n argv: readonly string[];\n env: Readonly<Record<string, string>>;\n cwd(): string;\n fs: SyncFsPosixBridge & {\n copyFile(from: string, to: string, options?: { mode?: number; excl?: boolean }): void;\n };\n fds: {\n open(path: string, options?: OpenOptions): number;\n close(fd: number): void;\n fstat(fd: number): FdStat;\n fchmod(fd: number, mode: number): void;\n tryLock(fd: number, exclusive: boolean): number;\n unlock(fd: number): void;\n };\n syscall(req: Request): unknown;\n net: {\n connect(options: ConnectOptions): number;\n ready(fd: number): number;\n };\n spawn(options: SpawnOptions): Spawned;\n wait(pid: number): Waited;\n kill(pid: number, sig: number): void;\n async: {\n submit(req: Request): number;\n wait(timeoutMs?: number): number;\n take(id: number): Taken | undefined;\n resolve(value: unknown): number;\n hold(): number;\n cancel(id: number): void;\n close(): void;\n };\n errno(err: unknown): number;\n readonly uid?: number;\n readonly gid?: number;\n}\n\nexport type ProgramImports = Record<string, Record<string, WebAssembly.ImportValue>>;\n\nexport type CreateImports = (ctx: ImportsContext) => ProgramImports;\n\nconst UID = 1000;\n\nfunction base64(text: string): string {\n const bytes = new TextEncoder().encode(text);\n let binary = '';\n for (let at = 0; at < bytes.length; at += 0x8000) {\n binary += String.fromCharCode(...bytes.subarray(at, at + 0x8000));\n }\n return btoa(binary);\n}\n\nexport function importSource(source: string): Promise<Record<string, unknown>> {\n return import(`data:text/javascript;base64,${base64(source)}`);\n}\n\nexport async function loadImports(source: string): Promise<CreateImports> {\n const loaded = (await importSource(source)) as {\n createImports?: unknown;\n };\n if (typeof loaded.createImports !== 'function') {\n throw new Error('the imports module exports no createImports function');\n }\n return loaded.createImports as CreateImports;\n}\n\nfunction value(result: SyncFsResult): unknown {\n if (!result.ok) throw new WasiError(result.errno);\n if (result.kind === 'json') return result.json;\n return result.kind === 'bytes' ? result.bytes : undefined;\n}\n\nfunction code(err: unknown): string | undefined {\n const c = (err as { code?: unknown } | null)?.code;\n return typeof c === 'string' ? c : undefined;\n}\n\nexport interface ContextOptions {\n host: WasiHost;\n raw: Raw;\n tid: number;\n memory: () => WebAssembly.Memory;\n instance: () => WebAssembly.Instance | undefined;\n}\n\nexport function importsContext({\n host,\n raw,\n tid,\n memory,\n instance,\n}: ContextOptions): ImportsContext {\n const { fs } = host.o;\n const call = (req: Request) => value(raw(req));\n const pathOf = (fd: number): string | undefined => {\n const e = host.fds.get(fd);\n if (e.type === 'file') return e.file.path;\n if (e.type === 'dir') return e.path;\n if (e.type === 'kernel' && host.fds.kind(fd, e) === 'file') {\n return (call({ op: 'fd-vfs-stat', fd }) as { path?: string }).path;\n }\n return undefined;\n };\n const sizedOf = (fd: number): { path?: string | undefined; size?: number } => {\n const e = host.fds.get(fd);\n if (e.type === 'file') return { path: e.file.path, size: e.file.size() };\n if (e.type === 'kernel' && host.fds.kind(fd, e) === 'file') {\n return call({ op: 'fd-vfs-stat', fd }) as { path?: string; size: number };\n }\n return { path: pathOf(fd) };\n };\n const requirePath = (fd: number): string => {\n const path = pathOf(fd);\n if (path === undefined) throw new WasiError('EBADF');\n return path;\n };\n const owners = fs.owners === true;\n const live = (): { uid: number; gid: number } => {\n if (!owners) return { uid: UID, gid: UID };\n const cred = call({ op: 'proc-cred' }) as Cred;\n return { uid: cred.euid, gid: cred.egid };\n };\n const fds: ImportsContext['fds'] = {\n open(path, o = {}) {\n const abs = host.fds.resolve(3, path);\n const fresh = o.create === true && o.exclusive === true && owners && fs.create !== undefined;\n const existed = !fresh && fs.exists(abs);\n const oflags =\n (o.create ? OFLAGS.CREAT : 0) |\n (o.exclusive ? OFLAGS.EXCL : 0) |\n (o.truncate ? OFLAGS.TRUNC : 0) |\n (o.directory ? OFLAGS.DIRECTORY : 0);\n const rights = (o.write ? RIGHTS.FD_WRITE : 0n) | (o.read || !o.write ? RIGHTS.FD_READ : 0n);\n const flags = o.append ? FDFLAGS.APPEND : 0;\n const fd = host.fds.open(\n abs,\n oflags,\n rights,\n flags,\n fresh ? o.mode : undefined,\n o.nofollow === true\n );\n if (o.mode !== undefined && !existed && !fresh) fs.chmod(abs, o.mode);\n return fd;\n },\n close(fd) {\n host.fds.close(fd);\n },\n fstat(fd) {\n const e = host.fds.get(fd);\n const { path, size } = sizedOf(fd);\n if (path === undefined) {\n const kind = e.type === 'device' ? 'device' : 'stream';\n return { kind, mode: kind === 'device' ? 0o20666 : 0o10600, ...live(), size: 0 };\n }\n if (size === undefined) host.fds.flushPath(path);\n const s = fs.stat(path);\n return {\n kind: s.isDirectory ? 'dir' : 'file',\n path,\n mode: s.mode ?? (s.isDirectory ? 0o40755 : 0o100644),\n ...(s.uid !== undefined && s.gid !== undefined ? { uid: s.uid, gid: s.gid } : live()),\n size: size ?? s.size,\n ...(s.ino !== undefined ? { ino: s.ino } : {}),\n ...(s.mtimeMs !== undefined ? { mtimeMs: s.mtimeMs } : {}),\n };\n },\n fchmod(fd, mode) {\n fs.chmod(requirePath(fd), mode);\n },\n tryLock(fd, exclusive) {\n const path = requirePath(fd);\n host.fds.promote(fd);\n try {\n call({ op: 'lock', path, exclusive, fd });\n } catch (err) {\n if (code(err) === 'EAGAIN') return E.AGAIN;\n throw err;\n }\n return E.SUCCESS;\n },\n unlock(fd) {\n call({ op: 'unlock', path: requirePath(fd), fd });\n },\n };\n const ctx: ImportsContext = {\n memory,\n instance,\n tid,\n argv: host.o.args,\n env: host.o.env,\n cwd: () => host.cwd,\n fs: Object.assign(Object.create(fs) as SyncFsPosixBridge, {\n copyFile(from: string, to: string, options: { mode?: number; excl?: boolean } = {}) {\n const at = (p: string) => host.fds.resolve(3, p.startsWith('/') ? p : `${host.cwd}/${p}`);\n host.copyFile(at(from), at(to), options.mode ?? 0o666, options.excl === true);\n },\n }),\n fds,\n syscall: (req) =>\n req.op === 'proc-umask' ? host.umask((req as { mask?: number }).mask) : call(req),\n net: network(raw, call),\n ...processes(host, call, tid !== MAIN_TID),\n async: {\n submit: (req) => call({ op: 'async-submit', req }) as number,\n wait(timeoutMs) {\n for (;;) {\n try {\n return call({\n op: 'async-wait',\n ...(timeoutMs !== undefined ? { timeoutMs } : {}),\n }) as number;\n } catch (err) {\n if (code(err) !== 'EINTR') throw err;\n if (timeoutMs !== undefined) return 0;\n }\n }\n },\n take(id) {\n const result = raw({ op: 'async-take', id });\n if (!result.ok && result.errno === 'EAGAIN') return undefined;\n if (!result.ok) return { error: result.errno };\n return { value: value(result) };\n },\n resolve: (v) => call({ op: 'async-resolve', value: v }) as number,\n hold: () => call({ op: 'async-hold' }) as number,\n cancel: (id) => void raw({ op: 'async-cancel', id }),\n close: () => void call({ op: 'async-close' }),\n },\n errno: (err) => wasiErrnoOf(code(err)),\n };\n if (!owners) return ctx;\n return Object.defineProperties(ctx, {\n uid: { get: () => live().uid, enumerable: true },\n gid: { get: () => live().gid, enumerable: true },\n });\n}\n\nconst LOOPBACK = /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\nconst SOL_SOCKET = 1;\nconst SO_ERROR = 4;\n\nfunction loopbackHost(host: unknown): string {\n if (host === 'localhost') return '127.0.0.1';\n if (typeof host === 'string' && LOOPBACK.test(host)) return host;\n throw new WasiError('EINVAL');\n}\n\nfunction network(raw: Raw, call: (req: Request) => unknown): ImportsContext['net'] {\n return {\n connect({ host, port, nonblock = false }) {\n const to = loopbackHost(host);\n if (!Number.isInteger(port) || port < 1 || port > 65535) throw new WasiError('EINVAL');\n const fd = call({ op: 'sock-open', domain: 'inet' }) as number;\n const addr = { family: 'inet', host: to, port };\n const r = raw({ op: 'sock-connect', fd, addr, ...(nonblock ? { nonblock: true } : {}) });\n if (r.ok || (nonblock && r.errno === 'EINPROGRESS')) return fd;\n raw({ op: 'fd-close', fd });\n throw new WasiError(r.errno);\n },\n ready(fd) {\n const sel = call({ op: 'fd-select', read: [], write: [fd], timeoutMs: 0 }) as {\n write: number[];\n };\n if (!sel.write.includes(fd)) return E.INPROGRESS;\n return call({ op: 'sock-getopt', fd, level: SOL_SOCKET, name: SO_ERROR }) as number;\n },\n };\n}\n\ntype ChildSlot = { fd: number } | { none: true };\n\nconst STDIO = ['stdin', 'stdout', 'stderr'] as const;\n\nfunction processes(\n host: WasiHost,\n call: (req: Request) => unknown,\n inThread: boolean\n): Pick<ImportsContext, 'spawn' | 'wait' | 'kill'> {\n const close = (fd: number) => void call({ op: 'fd-close', fd });\n const slot = (n: number, how: Stdio, mine: number[], theirs: number[]): ChildSlot => {\n if (how === 'inherit') return { fd: n };\n if (how === 'null') return { none: true };\n const [read, write] = call({ op: 'fd-pipe' }) as [number, number];\n mine[n] = n === 0 ? write : read;\n theirs.push(n === 0 ? read : write);\n return { fd: n === 0 ? read : write };\n };\n return {\n spawn(o) {\n const mine: number[] = [];\n const theirs: number[] = [];\n host.fds.promoteFiles();\n try {\n const stdio = STDIO.map((name, n) => slot(n, o[name] ?? 'inherit', mine, theirs));\n const req = {\n op: 'proc-spawn' as const,\n file: o.argv[0],\n argv: o.argv,\n env: o.env ?? { ...host.o.env },\n cwd: o.cwd ?? host.cwd,\n ...(o.cwd !== undefined ? { chdir: true as const } : {}),\n stdio,\n ...(inThread ? {} : { restart: true as const }),\n };\n const pid = restarted(() => call(req)) as number;\n const out: Spawned = { pid };\n STDIO.forEach((name, n) => {\n if (mine[n] !== undefined) out[name] = mine[n];\n });\n return out;\n } catch (err) {\n for (const fd of mine) if (fd !== undefined) close(fd);\n throw err;\n } finally {\n for (const fd of theirs) close(fd);\n host.o.fs.invalidate?.();\n }\n },\n wait(pid) {\n for (;;) {\n try {\n const [, status] = call({ op: 'proc-wait', pid, nohang: false }) as [number, number];\n host.o.fs.invalidate?.();\n const signal = status & 0x7f;\n return signal ? { status: 128 + signal, signal } : { status: (status >> 8) & 0xff };\n } catch (err) {\n if (code(err) !== 'EINTR') throw err;\n }\n }\n },\n kill(pid, sig) {\n call({ op: 'proc-kill', pid, sig });\n },\n };\n}\n", "import type { HeldCwdInit } from './protocol.ts';\n\nexport const CWD_SLOTS = 1024;\n\nexport const UNTRACKED = CWD_SLOTS - 1;\n\nexport interface HeldCwdReply {\n slot?: number;\n seen?: number;\n dead?: boolean;\n}\n\nexport interface CwdAnswer {\n gen: number;\n alive: boolean;\n slot?: number;\n}\n\ninterface Held {\n path: string;\n ino: string | number | undefined;\n refs: number;\n dead: boolean;\n verified: number;\n}\n\nexport type InodeOf = (path: string) => Promise<string | number | undefined>;\n\nconst under = (path: string, changed: string): boolean =>\n changed === '/' || path === changed || path.startsWith(`${changed}/`);\n\nexport class CwdTable {\n readonly sab = new SharedArrayBuffer(CWD_SLOTS * 4);\n private readonly view = new Int32Array(this.sab);\n private readonly held = new Map<number, Held>();\n private readonly free: number[] = [];\n private next = 0;\n checks = 0;\n private readonly inodeOf: InodeOf;\n\n constructor(inodeOf: InodeOf) {\n this.inodeOf = inodeOf;\n }\n\n async hold(path: string, from?: number): Promise<number> {\n const shared = from === undefined ? undefined : this.held.get(from);\n if (shared && shared.path === path) return this.share(from);\n const ino = await this.inodeOf(path).catch(() => undefined);\n const slot = this.free.pop() ?? (this.next < UNTRACKED ? this.next++ : UNTRACKED);\n if (slot === UNTRACKED) return slot;\n this.held.set(slot, {\n path,\n ino,\n refs: 1,\n dead: false,\n verified: Atomics.load(this.view, slot),\n });\n return slot;\n }\n\n share(slot: number | undefined): number {\n const held = slot === undefined ? undefined : this.held.get(slot);\n if (!held) return UNTRACKED;\n held.refs++;\n return slot as number;\n }\n\n release(slot: number | undefined): void {\n const held = slot === undefined ? undefined : this.held.get(slot);\n if (!held || --held.refs > 0) return;\n this.held.delete(slot as number);\n Atomics.add(this.view, slot as number, 1);\n this.free.push(slot as number);\n }\n\n stateOf(slot: number): { seen: number; dead: boolean } {\n const held = this.held.get(slot);\n return { seen: held?.verified ?? Atomics.load(this.view, slot), dead: held?.dead === true };\n }\n\n touched(paths: readonly string[], trees: readonly string[] = []): void {\n if (this.held.size === 0) return;\n for (const [slot, held] of this.held) {\n if (held.dead) continue;\n if (paths.some((p) => under(held.path, p)) || trees.some((t) => under(held.path, t))) {\n Atomics.add(this.view, slot, 1);\n }\n }\n }\n\n async check(slot: number): Promise<CwdAnswer> {\n this.checks++;\n const gen = Atomics.load(this.view, slot);\n const held = this.held.get(slot);\n if (!held) return { gen, alive: true };\n if (!held.dead) {\n const ino = await this.inodeOf(held.path).catch(() => null);\n held.dead = ino === null || (held.ino !== undefined && ino !== held.ino);\n held.verified = gen;\n }\n return { gen, alive: !held.dead };\n }\n}\n\nexport class HeldCwd {\n private readonly view: Int32Array;\n private seen: number;\n private dead = false;\n private slot: number;\n private at: string | undefined;\n private readonly ask: () => CwdAnswer;\n\n constructor(\n sab: SharedArrayBuffer,\n slot: number,\n ask: () => CwdAnswer,\n state: { seen: number; dead: boolean; path?: string }\n ) {\n this.view = new Int32Array(sab);\n this.slot = slot;\n this.ask = ask;\n this.seen = state.seen;\n this.dead = state.dead;\n this.at = state.path;\n }\n\n moved(reply: HeldCwdReply, path?: string): boolean {\n if (reply.slot === undefined) return false;\n this.slot = reply.slot;\n this.seen = reply.seen ?? Atomics.load(this.view, reply.slot);\n this.dead = reply.dead === true;\n this.at = path;\n return true;\n }\n\n private follow(): boolean {\n const answer = this.ask();\n if (answer.slot !== undefined) this.slot = answer.slot;\n this.seen = answer.gen;\n this.dead = !answer.alive;\n return answer.alive;\n }\n\n alive(path?: string): boolean {\n if (path !== undefined && this.at !== undefined && path !== this.at) {\n this.at = path;\n return this.follow();\n }\n if (this.dead) return false;\n if (Atomics.load(this.view, this.slot) === this.seen) return true;\n return this.follow();\n }\n\n get current(): number {\n return this.slot;\n }\n}\n\nexport interface HeldOptions {\n cwds?: SharedArrayBuffer;\n cwdSlot?: number;\n cwdState?: { seen: number; dead: boolean };\n cwdCheck?: () => Promise<CwdAnswer>;\n cwdChdir?: (path: string) => Promise<HeldCwdReply>;\n}\n\nexport function heldInit(o: HeldOptions): { held?: HeldCwdInit } {\n if (!o.cwds || o.cwdSlot === undefined) return {};\n const state = o.cwdState ?? { seen: 0, dead: false };\n return { held: { sab: o.cwds, slot: o.cwdSlot, ...state } };\n}\n\nexport function heldHooks(o: HeldOptions): Pick<HeldOptions, 'cwdCheck' | 'cwdChdir'> {\n if (!o.cwdCheck || !o.cwdChdir) return {};\n return { cwdCheck: o.cwdCheck, cwdChdir: o.cwdChdir };\n}\n\nexport function inheritedCwd(chdir: boolean | undefined, parent: number | undefined) {\n return chdir ? undefined : parent;\n}\n", "import type { HeldCwd, HeldCwdReply } from '../kernel/held-cwd.ts';\n\nexport const DELETED = ' (deleted)';\n\nexport const relativeHere = (path: string): boolean =>\n !path.startsWith('/') && path.split('/')[0] !== '..';\n\nexport const cwdFor = (cwd: string, held: HeldCwd | undefined, path: string): string =>\n held && relativeHere(path) && !held.alive() ? `${cwd}${DELETED}` : cwd;\n\nexport interface HeldCwdFs {\n chdir?(path: string): void;\n cwd?(): string;\n sliccHeldCwd?(): string;\n sliccCwdGone?(): boolean;\n}\n\nexport function holdingCwd(\n Fs: HeldCwdFs,\n held: HeldCwd,\n chdirred: (path: string) => HeldCwdReply\n): void {\n const { chdir, cwd } = Fs;\n if (!chdir || !cwd) return;\n Fs.sliccHeldCwd = () => cwd.call(Fs);\n Fs.sliccCwdGone = () => !held.alive();\n Fs.cwd = () => {\n const path = cwd.call(Fs);\n return held.alive() ? path : `${path}${DELETED}`;\n };\n Fs.chdir = (path: string) => {\n chdir.call(Fs, path);\n held.moved(chdirred(cwd.call(Fs)));\n };\n}\n", "declare const SLICC_VERSION: string | undefined;\n\nexport const KERNEL_VERSION = typeof SLICC_VERSION === 'string' ? SLICC_VERSION : '0.0.0-dev';\nexport const OS_RELEASE = '6.0.0-slicc';\n\nexport function procVersion(): string {\n return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC\\n`;\n}\n", "import type { SyncFsResult } from '../../realm/sync-fs-wire.ts';\nimport type { SyncSabRequestBody } from '../../realm/sync-sab-wire.ts';\nimport { JsCallError, type JsKernel } from './js-kernel.ts';\n\nexport interface SyncSpawnKernel {\n json(req: SyncSabRequestBody): unknown;\n raw(req: SyncSabRequestBody): SyncFsResult;\n}\n\nexport type JsStdio = 'inherit' | 'pipe' | 'null' | number;\n\nexport interface JsSpawnOptions {\n argv: readonly string[];\n argv0?: string;\n env?: Readonly<Record<string, string>>;\n cwd?: string;\n pgid?: number;\n session?: boolean;\n parentDeathSignal?: number | `SIG${string}`;\n stdin?: JsStdio;\n stdout?: JsStdio;\n stderr?: JsStdio;\n fds?: Readonly<Record<number, number>>;\n}\n\nexport interface JsExited {\n status: number;\n signal?: number;\n stopped?: true;\n}\n\nexport interface JsWaitOptions {\n untraced?: boolean;\n}\n\nexport interface JsChild {\n readonly pid: number;\n readonly stdin?: WritableStream<Uint8Array>;\n readonly stdout?: ReadableStream<Uint8Array>;\n readonly stderr?: ReadableStream<Uint8Array>;\n wait(options?: JsWaitOptions): Promise<JsExited>;\n kill(signal?: number | `SIG${string}`): Promise<void>;\n}\n\nexport interface ChildIo {\n read(fd: number, max: number | undefined, signal: AbortSignal): Promise<Uint8Array>;\n send(fd: number, data: Uint8Array, signal: AbortSignal): Promise<void>;\n close(fd: number): Promise<void>;\n}\n\nexport interface ChildDefaults {\n env: Readonly<Record<string, string>>;\n cwd: string;\n signal(name: number | `SIG${string}`): number;\n}\n\nconst STDIO = ['stdin', 'stdout', 'stderr'] as const;\nconst SIGTERM = 15;\n\ntype Slot = { fd: number } | { none: true };\n\nexport function exitedOf(status: number): JsExited {\n if ((status & 0xff) === 0x7f)\n return { status: 128 + ((status >> 8) & 0xff), signal: (status >> 8) & 0xff, stopped: true };\n const signal = status & 0x7f;\n return signal ? { status: 128 + signal, signal } : { status: (status >> 8) & 0xff };\n}\n\nfunction readable(io: ChildIo, fd: number): ReadableStream<Uint8Array> {\n const cancelled = new AbortController();\n return new ReadableStream<Uint8Array>(\n {\n async pull(controller) {\n const chunk = await io.read(fd, undefined, cancelled.signal).catch((err: unknown) => {\n if (cancelled.signal.aborted) return undefined;\n throw err;\n });\n if (chunk === undefined) return;\n if (chunk.length > 0) {\n controller.enqueue(chunk);\n return;\n }\n controller.close();\n await io.close(fd);\n },\n cancel: () => {\n cancelled.abort();\n return io.close(fd);\n },\n },\n { highWaterMark: 0 }\n );\n}\n\nfunction writable(io: ChildIo, fd: number): WritableStream<Uint8Array> {\n return new WritableStream<Uint8Array>({\n write: (chunk, controller) => io.send(fd, chunk, controller.signal),\n close: () => io.close(fd),\n abort: () => io.close(fd),\n });\n}\n\nexport function childOps(\n kernel: JsKernel,\n io: ChildIo,\n defaults: ChildDefaults,\n sync: SyncSpawnKernel\n) {\n const wait = async (pid: number, options: JsWaitOptions = {}): Promise<JsExited> => {\n if (typeof options !== 'object' || options === null) throw new JsCallError('EINVAL', 'wait');\n const untraced = options.untraced === true ? { untraced: true } : {};\n const r = await kernel.blocking({ op: 'proc-wait', pid, nohang: false, ...untraced });\n const [, status] = (r.ok && r.kind === 'json' ? r.json : [0, 0]) as [number, number];\n return exitedOf(status);\n };\n const kill = async (pid: number, signal: number | `SIG${string}` = SIGTERM): Promise<void> => {\n await kernel.call({ op: 'proc-kill', pid, sig: signal === 0 ? 0 : defaults.signal(signal) });\n };\n\n const childOf = (pid: number, mine: Array<number | undefined>): JsChild => {\n const [stdin, stdout, stderr] = mine;\n return {\n pid,\n ...(stdin !== undefined ? { stdin: writable(io, stdin) } : {}),\n ...(stdout !== undefined ? { stdout: readable(io, stdout) } : {}),\n ...(stderr !== undefined ? { stderr: readable(io, stderr) } : {}),\n wait: (options?: JsWaitOptions) => wait(pid, options),\n kill: (signal?: number | `SIG${string}`) => kill(pid, signal),\n };\n };\n\n const request = (o: JsSpawnOptions) => {\n const [file] = o.argv;\n if (file === undefined) throw new JsCallError('EINVAL', 'spawn');\n const group = groupOf(o, 'spawn');\n const named = argv0Of(o.argv0, 'spawn');\n const death = deathOf(o.parentDeathSignal, defaults);\n const inherit = fdsOf(o.fds);\n return (stdio: Slot[]): SyncSabRequestBody => ({\n op: 'proc-spawn',\n file,\n argv: [...o.argv],\n ...named,\n env: { ...(o.env ?? defaults.env) },\n cwd: o.cwd ?? defaults.cwd,\n ...(o.cwd !== undefined ? { chdir: true as const } : {}),\n stdio,\n ...(inherit.length > 0 ? { inherit } : {}),\n ...group,\n ...death,\n });\n };\n\n const spawnSync = (o: JsSpawnOptions): JsChild => {\n const spawning = request(o);\n const mine: Array<number | undefined> = [];\n const theirs: number[] = [];\n try {\n const stdio = slotsSync(sync, o, mine, theirs);\n return childOf(sync.json(spawning(stdio)) as number, mine);\n } catch (err) {\n closeAllSync(sync, mine);\n throw err;\n } finally {\n closeAllSync(sync, theirs);\n }\n };\n\n const spawn = async (o: JsSpawnOptions): Promise<JsChild> => {\n const spawning = request(o);\n const mine: Array<number | undefined> = [];\n const theirs: number[] = [];\n try {\n const stdio = await slots(kernel, o, mine, theirs);\n const pid = (await kernel.json(spawning(stdio))) as number;\n return childOf(pid, mine);\n } catch (err) {\n await closeAll(io, mine);\n throw err;\n } finally {\n await closeAll(io, theirs);\n }\n };\n\n return { spawn, wait, kill, spawnSync };\n}\n\nexport function fdsOf(fds: unknown): Array<{ fd: number; kernel: number }> {\n if (fds === undefined) return [];\n if (typeof fds !== 'object' || fds === null || Array.isArray(fds)) {\n throw new JsCallError('EINVAL', 'spawn');\n }\n return Object.entries(fds).map(([key, from]) => {\n const fd = Number(key);\n const valid = Number.isInteger(fd) && fd >= 3 && String(fd) === key;\n if (!valid || !Number.isInteger(from) || (from as number) < 0) {\n throw new JsCallError('EINVAL', 'spawn');\n }\n return { fd, kernel: from as number };\n });\n}\n\nexport function groupOf(\n o: { pgid?: number; session?: boolean },\n call: string\n): { pgid?: number; session?: true } {\n const { pgid, session } = o;\n const valid = pgid === undefined || (Number.isInteger(pgid) && pgid >= 0);\n if (!valid || (session !== undefined && typeof session !== 'boolean')) {\n throw new JsCallError('EINVAL', call);\n }\n if (session && pgid !== undefined) throw new JsCallError('EINVAL', call);\n return session ? { session: true } : pgid !== undefined ? { pgid } : {};\n}\n\nfunction deathOf(signal: unknown, defaults: ChildDefaults): { deathSignal?: number } {\n if (signal === undefined) return {};\n if (typeof signal !== 'number' && typeof signal !== 'string') {\n throw new JsCallError('EINVAL', 'spawn');\n }\n return { deathSignal: defaults.signal(signal as number | `SIG${string}`) };\n}\n\nexport function argv0Of(argv0: unknown, call: string): { argv0?: string } {\n if (argv0 === undefined) return {};\n if (typeof argv0 !== 'string') throw new JsCallError('EINVAL', call);\n return { argv0 };\n}\n\nasync function closeAll(io: ChildIo, fds: ReadonlyArray<number | undefined>): Promise<void> {\n for (const fd of fds) if (fd !== undefined) await io.close(fd).catch(() => undefined);\n}\n\nfunction closeAllSync(sync: SyncSpawnKernel, fds: ReadonlyArray<number | undefined>): void {\n for (const fd of fds) if (fd !== undefined) sync.raw({ op: 'fd-close', fd });\n}\n\nfunction checked(hows: readonly JsStdio[]): number[] {\n const fds: number[] = [];\n for (const [n, how] of hows.entries()) {\n if (how === 'pipe' || how === 'null') continue;\n if (how !== 'inherit' && typeof how !== 'number') throw new JsCallError('EINVAL', 'spawn');\n fds.push(how === 'inherit' ? n : how);\n }\n return fds;\n}\n\nasync function preflight(kernel: JsKernel, hows: readonly JsStdio[]): Promise<void> {\n for (const fd of checked(hows)) await kernel.json({ op: 'fd-info', fd });\n}\n\nfunction slot(\n n: number,\n how: JsStdio,\n pipe: () => [number, number],\n mine: Array<number | undefined>,\n theirs: number[]\n): Slot {\n if (how === 'inherit') return { fd: n };\n if (how === 'null') return { none: true };\n if (typeof how === 'number') return { fd: how };\n const [read, write] = pipe();\n mine[n] = n === 0 ? write : read;\n theirs.push(n === 0 ? read : write);\n return { fd: n === 0 ? read : write };\n}\n\nfunction slotsSync(\n sync: SyncSpawnKernel,\n o: JsSpawnOptions,\n mine: Array<number | undefined>,\n theirs: number[]\n): Slot[] {\n const hows = STDIO.map((name) => o[name] ?? ('inherit' as const));\n for (const fd of checked(hows)) sync.json({ op: 'fd-info', fd });\n const pipe = () => sync.json({ op: 'fd-pipe' }) as [number, number];\n return hows.map((how, n) => slot(n, how, pipe, mine, theirs));\n}\n\nasync function slots(\n kernel: JsKernel,\n o: JsSpawnOptions,\n mine: Array<number | undefined>,\n theirs: number[]\n): Promise<Slot[]> {\n const hows = STDIO.map((name) => o[name] ?? ('inherit' as const));\n await preflight(kernel, hows);\n const stdio: Slot[] = [];\n for (const [n, how] of hows.entries()) {\n const pair = how === 'pipe' ? ((await kernel.json({ op: 'fd-pipe' })) as [number, number]) : [];\n stdio.push(slot(n, how, () => pair as [number, number], mine, theirs));\n }\n return stdio;\n}\n", "import type { SyncFsResult } from '../../realm/sync-fs-wire.ts';\nimport type { SyncSabRequestBody } from '../../realm/sync-sab-wire.ts';\nimport { MAX_IO, written } from './js-io.ts';\nimport type { SyncCall } from './js-sync.ts';\n\nexport interface PendingWrite {\n fd: number;\n data: Uint8Array;\n at: number;\n len: number;\n op?: number;\n}\n\nexport interface SavedMode {\n terminal: string;\n fd: number;\n termios: unknown;\n}\n\nfunction json(r: SyncFsResult): unknown {\n return r.ok && r.kind === 'json' ? r.json : undefined;\n}\n\nfunction restoreMode(lane: SyncCall, { terminal, fd, termios }: SavedMode): void {\n const open = (json(lane({ op: 'fd-list' })) ?? []) as Array<{ fd: number; terminal?: string }>;\n const on = open.filter((entry) => entry.terminal === terminal);\n const at = (on.find((entry) => entry.fd === fd) ?? on[0])?.fd;\n if (at !== undefined) {\n lane({ op: 'tty-set', fd: at, termios } as SyncSabRequestBody);\n return;\n }\n const opened = json(lane({ op: 'fd-open-tty', name: terminal }));\n if (typeof opened !== 'number') return;\n lane({ op: 'tty-set', fd: opened, termios } as SyncSabRequestBody);\n lane({ op: 'fd-close', fd: opened });\n}\n\nfunction writeOut(lane: SyncCall, fd: number, data: Uint8Array): boolean {\n let at = 0;\n while (at < data.length) {\n const body = data.subarray(at, at + MAX_IO);\n const r = lane({ op: 'fd-write', fd, body });\n if (!r.ok && r.errno === 'EINTR') continue;\n if (!r.ok) return false;\n const n = written(r, body.length);\n if (n <= 0) return false;\n at += n;\n }\n return true;\n}\n\nfunction progress(result: SyncFsResult | null | undefined, len: number): number {\n if (!result) return len;\n if (result.ok) return written(result, len);\n return result.errno === 'EINTR' ? 0 : -1;\n}\n\nfunction settled(lane: SyncCall, writes: readonly PendingWrite[]): Map<PendingWrite, number> {\n const inFlight = writes.filter((w) => w.op !== undefined);\n const out = new Map<PendingWrite, number>();\n if (inFlight.length === 0) return out;\n const r = lane({ op: 'async-settle', ids: inFlight.map((w) => w.op as number) });\n const results = (r.ok && r.kind === 'json' ? r.json : []) as Array<SyncFsResult | null>;\n inFlight.forEach((w, i) => {\n const result = results[i];\n out.set(w, progress(result, w.len));\n });\n return out;\n}\n\nexport function exitAtOnce(\n lane: SyncCall,\n writes: readonly PendingWrite[],\n modes: readonly SavedMode[],\n status: number,\n last: SyncSabRequestBody = { op: 'proc-exit', status: status & 0xff }\n): never {\n const done = settled(lane, writes);\n const broken = new Set<number>();\n for (const w of writes) {\n const sent = done.get(w);\n if (sent === -1) broken.add(w.fd);\n if (broken.has(w.fd)) continue;\n if (!writeOut(lane, w.fd, w.data.subarray(w.at + (sent ?? 0)))) broken.add(w.fd);\n }\n for (const mode of modes) restoreMode(lane, mode);\n lane(last);\n const parked = new Int32Array(new SharedArrayBuffer(4));\n for (;;) Atomics.wait(parked, 0, 0);\n}\n", "import type { HttpHead } from '../../kernel/net/http-syscalls.ts';\nimport { isKernelLoopbackHost } from '../../kernel/net/loopback-names.ts';\nimport type { HeaderList } from '../../kernel/net/transport.ts';\nimport { JsCallError, type JsKernel } from './js-kernel.ts';\n\ninterface FetchTraits {\n manualRedirects: boolean;\n encodedBodies: boolean;\n maxRequestBody: number;\n streamingBodies?: boolean;\n}\n\ninterface Hop {\n url: string;\n method: string;\n headers: [string, string][];\n body: Uint8Array | undefined;\n stream?: ReadableStream<Uint8Array>;\n}\n\nconst CHUNK = 64 * 1024;\nconst MAX_REDIRECTS = 20;\nconst keptRequests = new WeakMap<ReadableStream<Uint8Array>, Request>();\nconst NULL_BODY = new Set([101, 103, 204, 205, 304]);\nconst REDIRECTS = new Set([301, 302, 303, 307, 308]);\nconst BODY_HEADERS = new Set([\n 'content-encoding',\n 'content-language',\n 'content-location',\n 'content-type',\n 'content-length',\n]);\nconst DECODED = new Set(['gzip', 'x-gzip', 'deflate']);\nconst CREDENTIALS = new Set(['authorization', 'proxy-authorization', 'cookie', 'cookie2']);\n\nfunction cut(err: unknown): unknown {\n if (!(err instanceof JsCallError) || err.code !== 'EIO') return err;\n return Object.assign(new Error('other side closed'), {\n name: 'SocketError',\n code: 'UND_ERR_SOCKET',\n });\n}\n\nfunction givenNames(given: HeadersInit | undefined): string[] {\n if (given === undefined || given instanceof Headers) return [];\n const pairs = Array.isArray(given) ? given : Object.entries(given);\n return pairs.map((pair) => String(pair[0]).toLowerCase());\n}\n\nfunction inOrder(headers: Headers, given: HeadersInit | undefined): [string, string][] {\n const all = new Map(headers);\n const out: [string, string][] = [];\n for (const name of [...givenNames(given), ...all.keys()]) {\n const value = all.get(name);\n if (value === undefined) continue;\n all.delete(name);\n out.push([name, value]);\n }\n return out;\n}\n\nfunction withoutFragment(url: URL): string {\n url.hash = '';\n return url.href;\n}\n\nfunction failed(err: unknown): TypeError {\n return new TypeError('fetch failed', { cause: err });\n}\n\nfunction plain(status: number, text: string): Response {\n return new Response(text, {\n status,\n headers: { 'content-type': 'text/plain; charset=utf-8' },\n });\n}\n\nfunction local(url: string): boolean {\n return isKernelLoopbackHost(new URL(url).hostname);\n}\n\nconst BAD_PORTS = new Set([\n 1, 7, 9, 11, 13, 15, 17, 19, 20, 21, 22, 23, 25, 37, 42, 43, 53, 69, 77, 79, 87, 95, 101, 102,\n 103, 104, 109, 110, 111, 113, 115, 117, 119, 123, 135, 137, 139, 143, 161, 179, 389, 427, 465,\n 512, 513, 514, 515, 526, 530, 531, 532, 540, 548, 554, 556, 563, 587, 601, 636, 989, 990, 993,\n 995, 1719, 1720, 1723, 2049, 3659, 4045, 4190, 5060, 5061, 6000, 6566, 6665, 6666, 6667, 6668,\n 6669, 6697, 10080,\n]);\n\nfunction badPort(url: URL): boolean {\n const port = url.port ? Number(url.port) : 0;\n return port !== 0 && BAD_PORTS.has(port);\n}\n\nfunction checkUrl(url: string): void {\n const parsed = new URL(url);\n const { protocol } = parsed;\n if (protocol !== 'http:' && protocol !== 'https:') {\n throw failed(new JsCallError('EPROTONOSUPPORT', protocol));\n }\n if (badPort(parsed)) throw failed(new Error('bad port'));\n}\n\nfunction rewrite(hop: Hop, status: number, location: string): Hop {\n const next = new URL(location, hop.url);\n checkUrl(next.href);\n if (local(next.href) && !local(hop.url)) {\n const from = new URL(hop.url).origin;\n throw failed(\n new JsCallError('EACCES', `a redirect from ${from} into the kernel's loopback: ${next.href}`)\n );\n }\n const toGet =\n ((status === 301 || status === 302) && hop.method === 'POST') ||\n (status === 303 && hop.method !== 'GET' && hop.method !== 'HEAD');\n if (hop.stream && !toGet) {\n throw failed(new JsCallError('EIO', `a ${status} redirect would send a streamed body again`));\n }\n const crossOrigin = next.origin !== new URL(hop.url).origin;\n const headers = hop.headers.filter(\n ([name]) =>\n !(toGet && BODY_HEADERS.has(name.toLowerCase())) &&\n !(crossOrigin && CREDENTIALS.has(name.toLowerCase()))\n );\n return {\n url: withoutFragment(next),\n method: toGet ? 'GET' : hop.method,\n headers,\n body: toGet ? undefined : hop.body,\n };\n}\n\nconst OVER = Symbol('over');\nconst TOKEN = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;\nconst QUOTABLE = /^[\\t\\x20-\\x7e\\x80-\\xff]*$/;\nconst SPACE = /[\\t\\n\\r ]/;\nconst BASE64 = /; *base64$/i;\nconst SLICE = 0x8000;\n\nfunction isHex(byte: number | undefined): boolean {\n return byte !== undefined && /^[0-9A-Fa-f]$/.test(String.fromCharCode(byte));\n}\n\nfunction percentDecode(input: string): Uint8Array {\n const bytes = new TextEncoder().encode(input);\n const out = new Uint8Array(bytes.length);\n let at = 0;\n for (let i = 0; i < bytes.length; i++) {\n const byte = bytes[i] as number;\n if (byte === 0x25 && isHex(bytes[i + 1]) && isHex(bytes[i + 2])) {\n out[at++] = Number.parseInt(\n String.fromCharCode(bytes[i + 1] as number, bytes[i + 2] as number),\n 16\n );\n i += 2;\n } else out[at++] = byte;\n }\n return out.subarray(0, at);\n}\n\nfunction latin1(bytes: Uint8Array): string {\n let text = '';\n for (let at = 0; at < bytes.length; at += SLICE) {\n text += String.fromCharCode(...bytes.subarray(at, at + SLICE));\n }\n return text;\n}\n\nfunction quoted(input: string, from: number): [string, number] {\n let value = '';\n let at = from + 1;\n while (at < input.length) {\n const char = input[at++] as string;\n if (char === '\"') break;\n if (char !== '\\\\') value += char;\n else if (at < input.length) value += input[at++];\n else value += char;\n }\n return [value, at];\n}\n\nfunction parameter(text: string, from: number, params: Map<string, string>): number {\n let at = from + 1;\n while (SPACE.test(text[at] ?? '')) at++;\n let end = at;\n while (end < text.length && text[end] !== ';' && text[end] !== '=') end++;\n const name = text.slice(at, end).toLowerCase();\n if (text[end] !== '=') return end;\n const start = end + 1;\n let value: string;\n if (text[start] === '\"') {\n [value, at] = quoted(text, start);\n end = text.indexOf(';', at);\n } else {\n end = text.indexOf(';', start);\n value = text.slice(start, end < 0 ? undefined : end).replace(/[\\t\\n\\r ]+$/, '');\n if (!value) return end < 0 ? text.length : end;\n }\n if (end < 0) end = text.length;\n if (TOKEN.test(name) && QUOTABLE.test(value) && !params.has(name)) {\n params.set(name, value);\n }\n return end;\n}\n\nfunction mimeType(input: string): string | undefined {\n const text = input.replace(/^[\\t\\n\\r ]+|[\\t\\n\\r ]+$/g, '');\n const slash = text.indexOf('/');\n const semi = text.indexOf(';', slash);\n const type = text.slice(0, slash);\n const subtype = text.slice(slash + 1, semi < 0 ? undefined : semi).replace(/[\\t\\n\\r ]+$/, '');\n if (slash < 0 || !TOKEN.test(type) || !TOKEN.test(subtype)) return undefined;\n const params = new Map<string, string>();\n for (let at = semi < 0 ? text.length : semi; at < text.length; ) at = parameter(text, at, params);\n let out = `${type}/${subtype}`.toLowerCase();\n for (const [name, value] of params) {\n out += `;${name}=${TOKEN.test(value) ? value : `\"${value.replace(/[\"\\\\]/g, '\\\\$&')}\"`}`;\n }\n return out;\n}\n\nfunction dataResponse(request: Request): Response {\n const url = withoutFragment(new URL(request.url));\n const rest = url.slice('data:'.length);\n const comma = rest.indexOf(',');\n if (comma < 0) throw failed(new JsCallError('EINVAL', 'a data: URL without a comma'));\n let type = rest.slice(0, comma).replace(/^[\\t\\n\\f\\r ]+|[\\t\\n\\f\\r ]+$/g, '');\n let body = percentDecode(rest.slice(comma + 1));\n const base64 = BASE64.exec(type);\n if (base64) {\n type = type.slice(0, base64.index);\n let binary: string;\n try {\n binary = atob(latin1(body));\n } catch {\n throw failed(new JsCallError('EINVAL', 'a data: URL whose base64 does not decode'));\n }\n body = Uint8Array.from(binary, (c) => c.charCodeAt(0));\n }\n if (type.startsWith(';')) type = `text/plain${type}`;\n const response = new Response(\n request.method === 'HEAD' ? null : (body as Uint8Array<ArrayBuffer>),\n {\n status: 200,\n statusText: 'OK',\n headers: { 'content-type': mimeType(type) ?? 'text/plain;charset=US-ASCII' },\n }\n );\n return withMeta(response, url, false);\n}\n\nfunction withMeta(response: Response, url: string, redirected: boolean): Response {\n const clone = response.clone.bind(response);\n Object.defineProperty(response, 'url', { value: url });\n Object.defineProperty(response, 'redirected', { value: redirected });\n Object.defineProperty(response, 'clone', { value: () => withMeta(clone(), url, redirected) });\n return response;\n}\n\nfunction bytesOf(chunk: unknown): Uint8Array {\n if (typeof chunk === 'string') return new TextEncoder().encode(chunk);\n if (chunk instanceof ArrayBuffer) return new Uint8Array(chunk);\n if (ArrayBuffer.isView(chunk)) {\n return new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);\n }\n throw failed(new TypeError('a request body chunk must be bytes or a string'));\n}\n\nasync function bodyOf(\n request: Request,\n cap: number,\n signal: AbortSignal\n): Promise<Uint8Array | undefined | typeof OVER> {\n signal.throwIfAborted();\n if (!request.body || request.method === 'GET' || request.method === 'HEAD') return undefined;\n const reader = request.body.getReader();\n const stop = (): void => void reader.cancel(signal.reason).catch(() => undefined);\n signal.addEventListener('abort', stop, { once: true });\n const parts: Uint8Array[] = [];\n let length = 0;\n try {\n for (;;) {\n const next = await reader.read().catch((err: unknown) => {\n throw signal.aborted ? signal.reason : failed(err);\n });\n signal.throwIfAborted();\n if (next.done) break;\n const chunk = bytesOf(next.value);\n length += chunk.length;\n if (length > cap) {\n reader.cancel().catch(() => undefined);\n return OVER;\n }\n parts.push(chunk);\n }\n } finally {\n signal.removeEventListener('abort', stop);\n }\n if (length === 0) return undefined;\n const out = new Uint8Array(length);\n let at = 0;\n for (const part of parts) {\n out.set(part, at);\n at += part.length;\n }\n return out;\n}\n\nfunction streams(\n known: FetchTraits,\n request: Request,\n init: RequestInit | undefined,\n url: string\n): boolean {\n if (known.streamingBodies !== true || !(init?.body instanceof ReadableStream)) return false;\n return request.method !== 'GET' && request.method !== 'HEAD' && !local(url);\n}\n\nasync function pump(\n kernel: JsKernel,\n handle: number,\n stream: ReadableStream<Uint8Array>,\n signal: AbortSignal\n): Promise<void> {\n const reader = stream.getReader();\n const stop = (): void => void reader.cancel(signal.reason).catch(() => undefined);\n signal.addEventListener('abort', stop, { once: true });\n try {\n await pumpFrom(kernel, handle, reader, signal);\n } finally {\n signal.removeEventListener('abort', stop);\n }\n}\n\nasync function pumpFrom(\n kernel: JsKernel,\n handle: number,\n reader: ReadableStreamDefaultReader<Uint8Array>,\n signal: AbortSignal\n): Promise<void> {\n for (;;) {\n let bytes: Uint8Array;\n try {\n const next = await reader.read();\n if (next.done) break;\n bytes = bytesOf(next.value);\n } catch (err) {\n await reader.cancel(err).catch(() => undefined);\n await kernel.raw({ op: 'net-close', handle });\n return;\n }\n if (bytes.length === 0) continue;\n const taken = await kernel.blocking({ op: 'net-write', handle, bytes }, signal).then(\n () => true,\n () => false\n );\n if (!taken) {\n await reader.cancel().catch(() => undefined);\n return;\n }\n }\n await kernel.raw({ op: 'net-end', handle });\n}\n\nexport function fetchOp(kernel: JsKernel) {\n const traits = new Map<boolean, Promise<FetchTraits>>();\n const traitsOf = (url: string): Promise<FetchTraits> => {\n const own = local(url);\n const known =\n traits.get(own) ?? (kernel.json({ op: 'net-traits', url }) as Promise<FetchTraits>);\n traits.set(own, known);\n known.catch(() => {\n traits.delete(own);\n });\n return known;\n };\n\n const close = (handle: number): Promise<unknown> => kernel.raw({ op: 'net-close', handle });\n\n const send = async (hop: Hop, signal: AbortSignal): Promise<HttpHead> => {\n signal.throwIfAborted();\n const handle = (await kernel.json({\n op: 'net-open',\n url: hop.url,\n method: hop.method,\n headers: hop.headers,\n ...(hop.stream ? { stream: true } : hop.body ? { body: hop.body } : {}),\n })) as number;\n if (hop.stream) void pump(kernel, handle, hop.stream, signal);\n try {\n const r = await kernel.blocking({ op: 'net-head', handle }, signal);\n signal.throwIfAborted();\n return (r.ok && r.kind === 'json' ? r.json : undefined) as HttpHead;\n } catch (err) {\n await close(handle);\n throw signal.aborted ? signal.reason : failed(err);\n }\n };\n\n const body = (handle: number, request: Request): ReadableStream<Uint8Array> => {\n const { signal } = request;\n let aborted: (() => void) | undefined;\n const settle = (): void => {\n if (aborted) signal.removeEventListener('abort', aborted);\n };\n const stream = new ReadableStream<Uint8Array>(\n {\n start(controller) {\n aborted = () => {\n controller.error(signal.reason);\n void close(handle);\n };\n signal.addEventListener('abort', aborted, { once: true });\n },\n async pull(controller) {\n let r: Awaited<ReturnType<JsKernel['blocking']>>;\n try {\n signal.throwIfAborted();\n r = await kernel.blocking({ op: 'net-read', handle, max: CHUNK }, signal);\n } catch (err) {\n settle();\n await close(handle);\n throw signal.aborted ? signal.reason : new TypeError('terminated', { cause: cut(err) });\n }\n const bytes = r.ok && r.kind === 'bytes' ? r.bytes : new Uint8Array(0);\n if (bytes.length > 0) {\n controller.enqueue(bytes);\n return;\n }\n settle();\n controller.close();\n await close(handle);\n },\n cancel: async () => {\n settle();\n await close(handle);\n },\n },\n { highWaterMark: 0 }\n );\n keptRequests.set(stream, request);\n return stream;\n };\n\n const respond = (\n head: HttpHead,\n method: string,\n redirected: boolean,\n encoded: boolean,\n request: Request\n ): Response => {\n if (head.status < 200 || head.status > 599) {\n void close(head.handle);\n throw failed(new JsCallError('EPROTO', `status ${head.status}`));\n }\n const empty = method === 'HEAD' || NULL_BODY.has(head.status);\n if (empty) void close(head.handle);\n const headers = new Headers(head.headers as HeaderList as [string, string][]);\n let stream: ReadableStream<Uint8Array> | null = empty ? null : body(head.handle, request);\n const coding = headers.get('content-encoding')?.trim().toLowerCase();\n if (stream && encoded && coding && DECODED.has(coding)) {\n const format = coding === 'deflate' ? 'deflate' : 'gzip';\n stream = stream.pipeThrough(\n new DecompressionStream(format) as unknown as TransformStream<Uint8Array, Uint8Array>\n );\n headers.delete('content-length');\n keptRequests.set(stream, request);\n }\n const response = new Response(stream, {\n status: head.status,\n statusText: head.statusText,\n headers,\n });\n return withMeta(response, head.url, redirected);\n };\n\n const traitsAt = (at: string): Promise<FetchTraits> =>\n traitsOf(at).catch((err: unknown) => {\n throw failed(err);\n });\n\n const redirect = async (\n hop: Hop,\n status: number,\n location: string,\n known: FetchTraits\n ): Promise<[Hop, FetchTraits]> => {\n const next = rewrite(hop, status, location);\n return [next, local(next.url) === local(hop.url) ? known : await traitsAt(next.url)];\n };\n\n return async (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {\n const request = new Request(input, init);\n const { signal } = request;\n signal.throwIfAborted();\n const { protocol } = new URL(request.url);\n if (protocol === 'data:') return dataResponse(request);\n checkUrl(request.url);\n let known = await traitsAt(request.url);\n if (!known.manualRedirects && request.redirect !== 'follow') {\n throw failed(new JsCallError('ENOTSUP', `redirect: ${request.redirect}`));\n }\n const url = withoutFragment(new URL(request.url));\n const streamed = streams(known, request, init, url);\n const bytes = streamed ? undefined : await bodyOf(request, known.maxRequestBody, signal);\n if (bytes === OVER) {\n return withMeta(plain(413, `request body over ${known.maxRequestBody} bytes`), url, false);\n }\n let hop: Hop = {\n url,\n method: request.method,\n headers: inOrder(request.headers, init?.headers),\n body: bytes,\n ...(streamed && request.body ? { stream: request.body } : {}),\n };\n for (let hops = 0; ; hops++) {\n const head = await send(hop, signal);\n const location = head.headers.find(([name]) => name.toLowerCase() === 'location')?.[1];\n const follow =\n known.manualRedirects &&\n REDIRECTS.has(head.status) &&\n location !== undefined &&\n request.redirect !== 'manual';\n if (!follow) {\n const redirected = hops > 0 || head.redirected === true;\n return respond(head, hop.method, redirected, known.encodedBodies, request);\n }\n await close(head.handle);\n if (request.redirect === 'error') throw failed(new Error('unexpected redirect'));\n if (hops >= MAX_REDIRECTS) throw failed(new JsCallError('ELOOP', hop.url));\n [hop, known] = await redirect(hop, head.status, location, known);\n }\n };\n}\n", "import { E } from '../wasi/wasi-abi.ts';\nimport { JsCallError, type JsKernel } from './js-kernel.ts';\nimport type { JsSyncKernel } from './js-sync.ts';\n\nexport interface JsAddress {\n host: string;\n port: number;\n}\n\nexport interface JsTlsSession {\n readonly path: 'transport' | 'kernel';\n readonly substitutes: boolean;\n readonly verified?: boolean;\n readonly verifiedBy?: 'bundled' | 'none';\n readonly protocol: 'transport' | 'TLSv1.2' | 'TLSv1.3';\n readonly alpnProtocol: string | false;\n readonly authorized: boolean;\n readonly authorizationError?: string;\n readonly servername: string;\n readonly peerCertificates?: readonly Uint8Array[];\n readonly cipher?: JsTlsCipher;\n readonly clientCertificate?: boolean;\n readonly sni?: boolean;\n readonly hostnameChecked?: boolean;\n readonly hostnameMatches?: boolean;\n readonly chainError?: string;\n}\n\nexport interface JsTlsCipher {\n readonly name: string;\n readonly standardName: string;\n readonly version: 'TLSv1.0' | 'TLSv1.2' | 'TLSv1.3';\n}\n\nexport interface JsTlsOptions {\n servername?: string;\n alpn?: string[];\n rejectUnauthorized?: boolean;\n ca?: unknown;\n path?: 'kernel' | 'transport';\n cert?: unknown;\n key?: unknown;\n passphrase?: string;\n pfx?: unknown;\n sni?: boolean;\n checkHostname?: boolean;\n}\n\nexport interface JsConnection {\n readonly fd: number;\n readonly tls?: JsTlsSession;\n readonly local: JsAddress;\n readonly remote: JsAddress;\n readonly readable: ReadableStream<Uint8Array>;\n readonly writable: WritableStream<Uint8Array>;\n close(): Promise<void>;\n}\n\nexport interface JsListener extends AsyncIterable<JsConnection> {\n readonly fd: number;\n readonly host: string;\n readonly port: number;\n accept(options?: { signal?: AbortSignal }): Promise<JsConnection>;\n close(): Promise<void>;\n}\n\nexport interface JsListenOptions {\n port?: number;\n host?: string;\n backlog?: number;\n}\n\nexport interface JsConnectOptions {\n host?: string;\n port?: number;\n signal?: AbortSignal;\n tls?: JsTlsOptions;\n socket?: JsConnection;\n}\n\nexport interface JsResolveOptions {\n family?: 0 | 4 | 6;\n signal?: AbortSignal;\n}\n\nexport interface JsNet {\n listen(options?: JsListenOptions): Promise<JsListener>;\n connect(options: JsConnectOptions): Promise<JsConnection>;\n resolve(name: string, options?: JsResolveOptions): Promise<string[]>;\n}\n\ninterface WireSession {\n path?: 'transport' | 'kernel';\n substitutes?: boolean;\n verified?: boolean;\n verifiedBy?: 'bundled' | 'none';\n protocol?: 'TLSv1.2' | 'TLSv1.3';\n alpnProtocol: string | false;\n authorized?: boolean;\n authorizationError?: string;\n servername: string;\n peerCertificates?: string[];\n cipher?: JsTlsCipher;\n clientCertificate?: boolean;\n sni?: boolean;\n hostnameChecked?: boolean;\n hostnameMatches?: boolean;\n chainError?: string;\n}\n\nfunction fromBase64(text: string): Uint8Array {\n const bin = atob(text);\n const out = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);\n return out;\n}\n\nfunction toBase64(bytes: Uint8Array): string {\n let bin = '';\n for (const b of bytes) bin += String.fromCharCode(b);\n return btoa(bin);\n}\n\nconst PEM = /-----BEGIN CERTIFICATE-----([\\s\\S]*?)-----END CERTIFICATE-----/g;\n\nfunction caList(ca: unknown): string[] {\n const items = Array.isArray(ca) ? ca : [ca];\n const out: string[] = [];\n for (const item of items) {\n if (item instanceof Uint8Array && item[0] === 0x30) out.push(toBase64(item));\n else {\n const text = item instanceof Uint8Array ? new TextDecoder().decode(item) : String(item);\n out.push(...[...text.matchAll(PEM)].map((m) => (m[1] as string).replace(/\\s+/g, '')));\n }\n }\n return out;\n}\n\nfunction keyText(key: unknown): string {\n if (key instanceof Uint8Array) return toBase64(key);\n if (typeof key === 'string') return toBase64(new TextEncoder().encode(key));\n throw new JsCallError('EINVAL', 'connect', 'ERR_INVALID_ARG_TYPE: key must be a string or bytes');\n}\n\nfunction clientCert(tls: JsTlsOptions) {\n if (tls.pfx !== undefined) {\n throw new JsCallError('ENOTSUP', 'connect', 'pfx is not supported: pass cert and key');\n }\n if (tls.cert === undefined && tls.key === undefined) return {};\n const chain = tls.cert === undefined ? [] : caList(tls.cert);\n if (chain.length === 0 || tls.key === undefined) {\n throw new JsCallError('EINVAL', 'connect', 'ERR_INVALID_ARG_VALUE: cert and key go together');\n }\n const passphrase = tls.passphrase === undefined ? {} : { passphrase: String(tls.passphrase) };\n return { clientCert: { chain, key: keyText(tls.key), ...passphrase } };\n}\n\nfunction tlsRequest(tls: JsTlsOptions) {\n return {\n ...(tls.servername ? { servername: tls.servername } : {}),\n ...(tls.alpn ? { alpn: [...tls.alpn] } : {}),\n ...(tls.ca !== undefined ? { ca: caList(tls.ca) } : {}),\n ...(tls.rejectUnauthorized === false ? { insecure: true } : {}),\n ...(tls.sni === false ? { sni: false as const } : {}),\n ...(tls.checkHostname === false ? { checkHostname: false as const } : {}),\n ...clientCert(tls),\n };\n}\n\nfunction controlsOf(r: WireSession) {\n if (!r.cipher) return {};\n return {\n cipher: Object.freeze({ ...r.cipher }),\n clientCertificate: r.clientCertificate === true,\n sni: r.sni !== false,\n hostnameChecked: r.hostnameChecked === true,\n ...(r.hostnameMatches === undefined ? {} : { hostnameMatches: r.hostnameMatches }),\n ...(r.chainError ? { chainError: r.chainError } : {}),\n };\n}\n\nfunction sessionOf(r: WireSession): JsTlsSession {\n if (r.path !== 'kernel') {\n return Object.freeze({\n path: 'transport',\n substitutes: true,\n protocol: 'transport',\n alpnProtocol: r.alpnProtocol,\n authorized: true,\n servername: r.servername,\n });\n }\n return Object.freeze({\n path: 'kernel',\n substitutes: r.substitutes === true,\n verified: r.verified === true,\n verifiedBy: r.verifiedBy === 'bundled' ? 'bundled' : 'none',\n protocol: r.protocol ?? 'TLSv1.2',\n alpnProtocol: r.alpnProtocol,\n authorized: r.authorized === true,\n ...(r.authorizationError ? { authorizationError: r.authorizationError } : {}),\n servername: r.servername,\n peerCertificates: Object.freeze((r.peerCertificates ?? []).map(fromBase64)),\n ...controlsOf(r),\n });\n}\n\nconst TLS_CODE = /^([A-Z][A-Z0-9_]+): /;\n\nconst ALERT = / \\(alert (\\d+)\\)$/;\n\nfunction withAlert(err: JsCallError): JsCallError {\n const alert = ALERT.exec(err.detail ?? '')?.[1];\n return alert === undefined ? err : Object.assign(err, { alert: Number(alert) });\n}\n\nasync function secureCall<T>(call: () => Promise<T>, what = 'connect'): Promise<T> {\n try {\n return await call();\n } catch (err) {\n const e = err as JsCallError;\n const code = e.code === 'EPROTO' && e.detail ? TLS_CODE.exec(e.detail)?.[1] : undefined;\n if (code) throw withAlert(new JsCallError(code, what, e.detail));\n throw err;\n }\n}\n\nexport interface NetIo {\n read(fd: number, max: number | undefined, signal: AbortSignal): Promise<Uint8Array>;\n send(fd: number, data: Uint8Array, signal: AbortSignal): Promise<void>;\n close(fd: number): Promise<void>;\n}\n\ninterface InetAddr {\n family: 'inet';\n host: string;\n port: number;\n}\n\nconst SHUT_RD = 0;\nconst SHUT_WR = 1;\nconst IPV4 = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\nconst NEVER = new AbortController().signal;\nconst SOL_SOCKET = 1;\nconst SO_ERROR = 4;\n\nfunction errnoName(errno: number): string {\n const found = Object.entries(E).find(([, n]) => n === errno);\n return found ? `E${found[0]}` : 'EIO';\n}\n\nfunction addressOf(addr: unknown): JsAddress {\n const inet = addr as InetAddr;\n return { host: inet.host, port: inet.port };\n}\n\nfunction port(n: number): number {\n if (!Number.isInteger(n) || n < 0 || n > 65535) throw new JsCallError('EINVAL', `port ${n}`);\n return n;\n}\n\nexport interface JsSyncNet {\n listen(options?: JsListenOptions): JsListener;\n}\n\nexport function netOps(\n kernel: JsKernel,\n io: NetIo,\n sync?: JsSyncKernel\n): JsNet & { sync: JsSyncNet } {\n const name = async (fd: number, peer: boolean): Promise<JsAddress> =>\n addressOf(await kernel.json({ op: 'sock-name', fd, peer }));\n\n const connection = async (fd: number): Promise<JsConnection> => {\n const [local, remote] = [await name(fd, false), await name(fd, true)];\n const stop = new AbortController();\n let closed: Promise<void> | undefined;\n const close = (): Promise<void> => {\n stop.abort(new JsCallError('EBADF', 'socket closed'));\n closed ??= io.close(fd);\n return closed;\n };\n const shut = (how: number): Promise<unknown> => kernel.raw({ op: 'sock-shutdown', fd, how });\n const readable = new ReadableStream<Uint8Array>(\n {\n async pull(controller) {\n const chunk = await secureCall(() => io.read(fd, undefined, stop.signal), 'read');\n if (chunk.length > 0) controller.enqueue(chunk);\n else controller.close();\n },\n cancel: async () => void (await shut(SHUT_RD)),\n },\n { highWaterMark: 0 }\n );\n const writable = new WritableStream<Uint8Array>({\n write: (chunk, controller) =>\n secureCall(\n () => io.send(fd, chunk, AbortSignal.any([controller.signal, stop.signal])),\n 'write'\n ),\n close: async () => void (await shut(SHUT_WR)),\n abort: () => close(),\n });\n return { fd, local, remote, readable, writable, close };\n };\n\n const resolve = async (host: string, signal: AbortSignal): Promise<string> => {\n if (IPV4.test(host)) return host;\n const r = await kernel.blocking({ op: 'sock-resolve', name: host, family: 4 }, signal);\n return ((r.ok && r.kind === 'json' ? r.json : []) as string[])[0] as string;\n };\n\n const opened = async <T>(use: (fd: number) => Promise<T>): Promise<T> => {\n const fd = (await kernel.json({ op: 'sock-open', domain: 'inet' })) as number;\n try {\n return await use(fd);\n } catch (err) {\n await io.close(fd);\n throw err;\n }\n };\n\n const listener = (fd: number, at: JsAddress): JsListener => {\n const stop = new AbortController();\n const accept = async (options: { signal?: AbortSignal } = {}): Promise<JsConnection> => {\n const signal = AbortSignal.any([options.signal ?? NEVER, stop.signal]);\n for (;;) {\n signal.throwIfAborted();\n const r = await kernel.raw({ op: 'sock-accept', fd, nonblock: true });\n if (r.ok) return connection(((r.kind === 'json' ? r.json : {}) as { fd: number }).fd);\n if (r.errno !== 'EAGAIN') throw new JsCallError(r.errno, 'accept');\n await kernel.blocking({ op: 'fd-select', read: [fd], write: [], timeoutMs: -1 }, signal);\n }\n };\n return {\n fd,\n ...at,\n accept,\n async close() {\n stop.abort(new JsCallError('EBADF', 'listener closed'));\n await io.close(fd);\n },\n async *[Symbol.asyncIterator]() {\n for (;;) {\n try {\n yield await accept();\n } catch (err) {\n if (stop.signal.aborted) return;\n throw err;\n }\n }\n },\n };\n };\n\n const tlsConnect = async (\n options: JsConnectOptions,\n tls: JsTlsOptions\n ): Promise<JsConnection> => {\n const common = tlsRequest(\n options.socket && !tls.servername && options.host ? { ...tls, servername: options.host } : tls\n );\n const r = (await secureCall(() =>\n kernel.json(\n options.socket\n ? { op: 'sock-tls-upgrade', fd: options.socket.fd, ...common }\n : {\n op: 'sock-tls',\n host: options.host ?? 'localhost',\n port: port(options.port as number),\n ...common,\n ...(tls.path ? { path: tls.path } : {}),\n }\n )\n )) as WireSession & { fd?: number };\n const session = sessionOf(r);\n if (options.socket) return Object.assign(Object.create(options.socket), { tls: session });\n return Object.assign(await connection(r.fd as number), { tls: session });\n };\n\n const lookup = async (name: string, options: JsResolveOptions = {}): Promise<string[]> => {\n const family = options.family ?? 0;\n if (family !== 0 && family !== 4 && family !== 6) {\n throw new JsCallError('EAI_FAMILY', `resolve ${name}`);\n }\n const signal = options.signal ?? NEVER;\n signal.throwIfAborted();\n const req = { op: 'sock-resolve' as const, name: String(name), family };\n const r = await kernel.blocking(req, signal).catch((err: unknown) => {\n signal.throwIfAborted();\n const code = (err as { code?: unknown }).code;\n if (code === 'ETIMEDOUT') throw new JsCallError('EAI_AGAIN', `resolve ${name}`);\n if (code !== 'ENOENT') throw err;\n throw new JsCallError('ENOTFOUND', `resolve ${name}`);\n });\n return [...((r.ok && r.kind === 'json' ? r.json : []) as string[])];\n };\n\n const inetAt = (options: JsListenOptions): InetAddr => ({\n family: 'inet',\n host: options.host ?? '127.0.0.1',\n port: port(options.port ?? 0),\n });\n\n const listenSync = (options: JsListenOptions = {}): JsListener => {\n const lane = sync as JsSyncKernel;\n const addr = inetAt(options);\n const fd = lane.json({ op: 'sock-open', domain: 'inet' }) as number;\n try {\n lane.call({ op: 'sock-bind', fd, addr });\n lane.call({ op: 'sock-listen', fd, backlog: options.backlog ?? 128 });\n return listener(fd, addressOf(lane.json({ op: 'sock-name', fd, peer: false })));\n } catch (err) {\n lane.raw({ op: 'fd-close', fd });\n throw err;\n }\n };\n\n return {\n sync: { listen: listenSync },\n resolve: lookup,\n listen: (options = {}) =>\n opened(async (fd) => {\n const addr = inetAt(options);\n await kernel.call({ op: 'sock-bind', fd, addr });\n await kernel.call({ op: 'sock-listen', fd, backlog: options.backlog ?? 128 });\n return listener(fd, await name(fd, false));\n }),\n connect: async (options) => {\n const signal = options.signal ?? NEVER;\n signal.throwIfAborted();\n if (options.tls) return tlsConnect(options, options.tls);\n const host = options.host ?? '127.0.0.1';\n if (host.includes(':')) throw new JsCallError('EADDRNOTAVAIL', host);\n const addr: InetAddr = {\n family: 'inet',\n host: await resolve(host, signal),\n port: port(options.port as number),\n };\n return opened(async (fd) => {\n const r = await kernel.raw({ op: 'sock-connect', fd, addr, nonblock: true });\n if (!r.ok && r.errno !== 'EINPROGRESS') throw new JsCallError(r.errno, 'connect');\n await kernel.blocking({ op: 'fd-select', read: [], write: [fd], timeoutMs: -1 }, signal);\n const failed = (await kernel.json({\n op: 'sock-getopt',\n fd,\n level: SOL_SOCKET,\n name: SO_ERROR,\n })) as number;\n if (failed !== 0) throw new JsCallError(errnoName(failed), 'connect');\n return connection(fd);\n });\n },\n };\n}\n", "import type { Cred } from './cred.ts';\n\nexport interface ProcessInfo {\n pid: number;\n tid: number;\n ppid: number;\n pgid: number;\n sid: number;\n argv: string[];\n exe?: string;\n exeId?: string;\n tty: string | null;\n started: number;\n state: 'S' | 'T' | 'Z';\n\n threads?: Array<{ tid: number; state: 'R' | 'S' }>;\n memory: number;\n utime?: number;\n stime?: number;\n cutime?: number;\n cstime?: number;\n umask?: number;\n cred?: Cred;\n sigIgn?: number;\n sigCgt?: number;\n sigBlk?: number;\n tag?: string;\n tags?: string[];\n}\n\nexport interface MountLine {\n type: string;\n source: string;\n target: string;\n options: Record<string, string>;\n state: 'ok' | 'failed' | 'nomedium' | 'pending';\n}\n\nexport interface ProcessListing {\n boot: number;\n processes: ProcessInfo[];\n load?: readonly [number, number, number];\n cpu?: { utime: number; stime: number; idle: number };\n wasm?: { live: number; ceiling: number; source?: string };\n peers?: number;\n fsCalls?: number;\n opfsCalls?: number;\n opfsOps?: number;\n cwdChecks?: number;\n staleFds?: number;\n renameAcks?: {\n acks: number;\n busy: number;\n waits: number;\n queries: number;\n ackMs: readonly number[];\n };\n}\n\nexport function mayTrace(viewer: ProcessInfo | undefined, target: ProcessInfo): boolean {\n const by = viewer?.cred;\n const of = target.cred;\n if (!by || !of || by.euid === 0) return true;\n const uid = of.ruid === by.euid && of.euid === by.euid && of.suid === by.euid;\n return uid && of.rgid === by.egid && of.egid === by.egid && of.sgid === by.egid;\n}\n\nexport function fileIdentity(\n ino: number | undefined,\n mtimeMs: number | undefined\n): string | undefined {\n if (ino === undefined || mtimeMs === undefined || !Number.isFinite(mtimeMs)) return undefined;\n return `${ino}:${Math.trunc(mtimeMs)}`;\n}\n", "import type { Cred } from '../kernel/cred.ts';\nimport type { MetaEntry } from './meta.ts';\nimport { fsError, type KernelFs, type NewOwner, type Owner } from './types.ts';\n\nexport const ROOT_OWNER: Readonly<Owner> = Object.freeze({ uid: 0, gid: 0 });\n\nconst S_ISUID = 0o4000;\nconst S_ISGID = 0o2000;\nconst S_IXGRP = 0o010;\n\nexport function ownOf(entry: MetaEntry | undefined): Owner | undefined {\n if (entry?.uid === undefined || entry.gid === undefined) return undefined;\n return { uid: entry.uid, gid: entry.gid };\n}\n\nfunction handedBy(entry: MetaEntry | undefined): Owner | undefined {\n return entry?.heir ? { uid: entry.heir[0], gid: entry.heir[1] } : ownOf(entry);\n}\n\nexport function inherit(entries: ReadonlyArray<MetaEntry | undefined>): Owner {\n for (let i = entries.length - 1; i >= 0; i--) {\n const found = handedBy(entries[i]);\n if (found) return found;\n }\n return { ...ROOT_OWNER };\n}\n\nexport function chain(path: string): string[] {\n const parts = path.split('/').filter(Boolean);\n return ['/', ...parts.map((_, i) => `/${parts.slice(0, i + 1).join('/')}`)];\n}\n\nexport function sameOwner(a: Owner, b: Owner): boolean {\n return a.uid === b.uid && a.gid === b.gid;\n}\n\nexport function ownerOf(cred: Readonly<Cred>, mode?: number): NewOwner {\n return { uid: cred.euid, gid: cred.egid, ...(mode !== undefined ? { mode } : {}) };\n}\n\nexport function inGroup(cred: Readonly<Cred>, gid: number): boolean {\n return cred.egid === gid || cred.groups.includes(gid);\n}\n\nexport function mayChown(\n cred: Readonly<Cred>,\n current: Owner,\n uid: number | undefined,\n gid: number | undefined\n): boolean {\n if (cred.euid === 0) return true;\n const owner = cred.euid === current.uid;\n if (uid !== undefined && !(owner && uid === current.uid)) return false;\n if (gid !== undefined && !(owner && (gid === current.gid || inGroup(cred, gid)))) return false;\n return true;\n}\n\nexport function clearedSetId(mode: number): number {\n const bits = S_ISUID | (mode & S_IXGRP ? S_ISGID : 0);\n return mode & 0o7777 & ~bits;\n}\n\nexport async function chownAs(\n fs: KernelFs,\n cred: Readonly<Cred>,\n path: string,\n change: { uid?: number; gid?: number; follow: boolean }\n): Promise<void> {\n const { uid, gid, follow } = change;\n const st = follow ? await fs.stat(path) : await fs.lstat(path);\n const current = { uid: st.uid ?? 0, gid: st.gid ?? 0 };\n if (!fs.chown || !mayChown(cred, current, uid, gid)) throw fsError('EPERM', path);\n const clear =\n st.isFile && (uid !== undefined || gid !== undefined) ? clearedSetId(st.mode) : undefined;\n await fs.chown(path, {\n ...(uid !== undefined ? { uid } : {}),\n ...(gid !== undefined ? { gid } : {}),\n follow,\n ...(clear !== undefined && clear !== (st.mode & 0o7777) ? { mode: clear } : {}),\n });\n}\n", "import { fsError } from './types.ts';\n\nexport interface LinkReader {\n readlink?(path: string): Promise<string>;\n lstat?(path: string): Promise<unknown>;\n}\n\nconst MAX_LINKS = 40;\n\nexport function parentOf(path: string): string {\n return path.slice(0, path.lastIndexOf('/')) || '/';\n}\n\nasync function mustBeDir(fs: LinkReader, path: string): Promise<void> {\n if (!fs.lstat) return;\n const st = await fs.lstat(path);\n if ((st as { isDirectory?: boolean }).isDirectory !== true) throw fsError('ENOTDIR', path);\n}\n\nasync function linkOf(fs: LinkReader, path: string): Promise<string | undefined> {\n return fs.readlink?.(path).catch(() => undefined);\n}\n\ninterface Budget {\n hops: number;\n}\n\nexport async function realDir(\n fs: LinkReader,\n dir: string,\n budget: Budget = { hops: 0 }\n): Promise<string> {\n const queue = dir.split('/').filter(Boolean);\n let at = '/';\n while (queue.length > 0) {\n const part = queue.shift() as string;\n if (part === '.') continue;\n if (part === '..') {\n at = parentOf(at);\n continue;\n }\n const next = at === '/' ? `/${part}` : `${at}/${part}`;\n const link = await linkOf(fs, next);\n if (link === undefined) {\n if (queue.find((p) => p !== '.') === '..') await mustBeDir(fs, next);\n at = next;\n continue;\n }\n if (budget.hops >= MAX_LINKS) throw fsError('ELOOP', dir);\n budget.hops++;\n queue.unshift(...link.split('/').filter(Boolean));\n if (link.startsWith('/')) at = '/';\n }\n return at;\n}\n\nexport function joinName(dir: string, name: string): string {\n return dir === '/' ? `/${name}` : `${dir}/${name}`;\n}\n\nexport async function realTarget(fs: LinkReader, path: string): Promise<string> {\n const budget: Budget = { hops: 0 };\n let dir = await realDir(fs, parentOf(path), budget);\n let name = path.slice(path.lastIndexOf('/') + 1);\n for (;;) {\n const link = await linkOf(fs, joinName(dir, name));\n if (link === undefined) break;\n if (budget.hops >= MAX_LINKS) throw fsError('ELOOP', path);\n budget.hops++;\n const target = link.startsWith('/') ? link : joinName(dir, link);\n dir = await realDir(fs, parentOf(target), budget);\n name = target.slice(target.lastIndexOf('/') + 1);\n }\n return joinName(dir, name);\n}\n", "import type { Cred } from '../kernel/cred.ts';\nimport { chain, inGroup } from './owners.ts';\nimport { type FsStat, fsError, type KernelFs, type Perm } from './types.ts';\n\nexport type { Perm };\n\nimport { joinName, parentOf } from './walk.ts';\n\nexport const R_OK = 4;\nexport const W_OK = 2;\nexport const X_OK = 1;\n\nconst MAX_LINKS = 40;\nconst S_ISVTX = 0o1000;\n\nexport interface Walked {\n path: string;\n perm: Perm | undefined;\n denied?: string;\n missing?: boolean;\n link?: true;\n}\n\nexport function permOf(st: FsStat, link?: string): Perm {\n return {\n uid: st.uid ?? 0,\n gid: st.gid ?? 0,\n mode: st.mode & 0o7777,\n ...(link !== undefined ? { link } : {}),\n };\n}\n\nexport function permits(cred: Readonly<Cred>, perm: Perm, want: number, directory = true): boolean {\n const mode = perm.mode ?? (directory ? 0o755 : 0o644);\n if (cred.euid === 0) return (want & X_OK) === 0 || directory || (mode & 0o111) !== 0;\n const shift = cred.euid === perm.uid ? 6 : inGroup(cred, perm.gid) ? 3 : 0;\n return ((mode >> shift) & want) === want;\n}\n\nexport function sticky(cred: Readonly<Cred>, dir: Perm, entry: Perm | undefined): boolean {\n if (cred.euid === 0 || ((dir.mode ?? 0) & S_ISVTX) === 0) return true;\n return cred.euid === dir.uid || cred.euid === (entry ?? dir).uid;\n}\n\nexport async function ancestryOf(fs: KernelFs, path: string): Promise<Array<Perm | undefined>> {\n if (fs.ancestry) return fs.ancestry(path);\n const out: Array<Perm | undefined> = [];\n for (const at of chain(path)) {\n const st = await fs.lstat(at).catch(() => undefined);\n if (!st) break;\n out.push(permOf(st, st.isSymbolicLink ? await fs.readlink(at) : undefined));\n }\n return out;\n}\n\nclass Perms {\n private readonly known = new Map<string, Perm | undefined>();\n private readonly fs: KernelFs;\n\n constructor(fs: KernelFs) {\n this.fs = fs;\n }\n\n async learn(path: string): Promise<void> {\n const names = chain(path);\n const perms = await ancestryOf(this.fs, path);\n for (let i = 0; i < names.length; i++) {\n const perm = perms[i];\n this.known.set(names[i] as string, perm);\n if (perm === undefined || perm.link !== undefined) break;\n }\n }\n\n async at(path: string): Promise<Perm | undefined> {\n if (!this.known.has(path)) await this.learn(path);\n return this.known.get(path);\n }\n}\n\nfunction parts(path: string): string[] {\n return path.split('/').filter((part) => part !== '' && part !== '.');\n}\n\nexport function trustedLink(perm: Perm, links: number | undefined): boolean {\n return links === undefined || perm.uid === 0 || perm.uid === links;\n}\n\nexport async function walk(\n fs: KernelFs,\n cred: Readonly<Cred>,\n path: string,\n follow: boolean,\n links?: number\n): Promise<Walked> {\n const perms = new Perms(fs);\n await perms.learn(path);\n const queue = parts(path);\n let at = '/';\n for (let hops = 0; queue.length > 0; ) {\n const part = queue.shift() as string;\n const dir = await perms.at(at);\n if (!dir) return { path: joinName(at, [part, ...queue].join('/')), perm: undefined };\n if (!permits(cred, dir, X_OK)) return { path, perm: undefined, denied: at };\n if (part === '..') {\n at = parentOf(at);\n continue;\n }\n const next = joinName(at, part);\n const perm = await perms.at(next);\n const last = queue.length === 0;\n if (perm?.link !== undefined && (!last || follow)) {\n if (!trustedLink(perm, links)) return { path, perm: undefined, denied: next, link: true };\n if (++hops > MAX_LINKS) return { path: next, perm: undefined };\n queue.unshift(...parts(perm.link));\n if (perm.link.startsWith('/')) at = '/';\n continue;\n }\n if (last) return { path: next, perm };\n at = next;\n }\n return { path: at, perm: await perms.at(at) };\n}\n\nexport async function present(fs: KernelFs, path: string, directory: boolean): Promise<boolean> {\n const st = await fs.lstat(path).catch(() => undefined);\n return st !== undefined && (!directory || st.isDirectory);\n}\n\nexport interface AccessOptions {\n follow?: boolean;\n directory?: boolean;\n links?: number | undefined;\n}\n\nasync function finalOf(\n fs: KernelFs,\n walked: Walked,\n want: number,\n options: AccessOptions\n): Promise<[Perm, boolean]> {\n const perm = walked.perm as Perm;\n if (options.follow === false && perm.link !== undefined) {\n return [{ ...perm, mode: 0o777 }, false];\n }\n if ((want & X_OK) === 0 || options.directory !== undefined) {\n return [perm, options.directory !== false];\n }\n const look = options.follow === false ? fs.lstat : fs.stat;\n const st = await look.call(fs, walked.path).catch(() => undefined);\n return st ? [permOf(st), st.isDirectory] : [perm, false];\n}\n\nexport async function access(\n fs: KernelFs,\n cred: Readonly<Cred>,\n path: string,\n want: number,\n options: AccessOptions = {}\n): Promise<Walked> {\n const walked = await walk(fs, cred, path, options.follow !== false, options.links);\n if (walked.denied !== undefined) {\n if (walked.link || (await present(fs, walked.denied, true))) return walked;\n return { path, perm: undefined, missing: true };\n }\n if (!walked.perm) return { ...walked, missing: true };\n const [perm, directory] = await finalOf(fs, walked, want, options);\n if (want === 0 || permits(cred, perm, want, directory)) return walked;\n if (await present(fs, walked.path, false)) return { ...walked, denied: walked.path };\n return { ...walked, missing: true };\n}\n\nexport function refused(path: string, errno = 'EACCES'): Error & { code: string } {\n return fsError(errno, path);\n}\n", "import { E } from './wasi/wasi-abi.ts';\n\nconst WASI_ERRNO: Readonly<Partial<Record<string, number>>> = {\n ...Object.fromEntries(Object.entries(E).map(([name, errno]) => [`E${name}`, errno])),\n EWOULDBLOCK: E.AGAIN,\n ENOTSUP: 138,\n EOPNOTSUPP: 138,\n ENOMEDIUM: 148,\n};\n\nexport function wasiErrno(code: string): number {\n return WASI_ERRNO[code] ?? E.IO;\n}\n", "import { permits, X_OK } from '../fs/access.ts';\nimport { type ChangeView, RENAME_WAIT_MS, SHARED_TTL_MS } from '../fs/changes.ts';\nimport {\n linkedWatch,\n RangedFile,\n type RangedIo,\n type RangedWatch,\n watchedChange,\n} from '../fs/ranged.ts';\nimport { inodeOf } from '../fs/types.ts';\nimport type { Cred } from '../kernel/cred.ts';\nimport { wasiErrno } from '../process/wasi-errno.ts';\nimport {\n HOLD_CREATED,\n HOLD_READ,\n HOLD_WRITE,\n type SyncFsBridgeStat,\n type SyncFsFileIo,\n type SyncFsPosixBridge,\n type SyncFsUsage,\n} from './sync-fs-wire.ts';\nimport { syncCallCount, syncEpoch } from './sync-sab-bridge.ts';\n\nexport type LiveCred = Cred;\n\nconst S_IFDIR = 0o040000;\nconst S_IFREG = 0o100000;\nconst S_IFLNK = 0o120000;\nconst S_IFSOCK = 0o140000;\nconst S_IFIFO = 0o010000;\nconst S_IFMT = 0o170000;\nconst PERM_MASK = 0o7777;\n\nconst DEFAULT_DIR_PERM = 0o755;\n\nconst UMASK = 0o022;\nconst SEEK_CUR = 1;\nconst SEEK_END = 2;\n\ninterface LiveNodeState {\n named?: number | undefined;\n watch?: RangedWatch | undefined;\n stat?: SyncFsBridgeStat;\n bound?: SyncFsBridgeStat;\n statAt?: number;\n filledAt?: number;\n statGen?: number;\n seenAt?: number;\n\n data?: Uint8Array;\n len: number;\n loaded: boolean;\n dirty: boolean;\n openCount: number;\n writers?: number;\n\n orphan?: boolean;\n\n kept?: boolean;\n\n id?: string;\n\n listed?: Map<string, SyncFsBridgeStat>;\n listedAt?: number;\n listedGen?: number | undefined;\n\n maxFile?: number;\n\n ranges?: boolean;\n ranged?: RangedFile;\n seen?: number | undefined;\n handle?: number;\n created?: boolean;\n}\n\nexport interface LiveFsNode {\n id: number;\n name: string;\n mode: number;\n parent: LiveFsNode;\n mount: LiveFsMount;\n node_ops: LiveNodeOps;\n stream_ops: LiveStreamOps;\n live: LiveNodeState;\n mounted?: unknown;\n}\n\nexport interface LiveFsStream {\n node: LiveFsNode;\n position: number;\n flags: number;\n fd?: number;\n}\n\nexport interface LiveFsMount {\n opts: LiveFsMountOpts;\n mountpoint: string;\n root: LiveFsNode;\n}\n\nexport interface LiveFsMountOpts {\n root: string;\n bridge: SyncFsPosixBridge;\n}\n\ninterface LiveAttr {\n dev: number;\n ino: number;\n mode: number;\n nlink: number;\n uid: number;\n gid: number;\n rdev: number;\n size: number;\n atime: Date;\n mtime: Date;\n ctime: Date;\n blksize: number;\n blocks: number;\n}\n\ninterface LiveSetAttr {\n mode?: number;\n size?: number;\n atime?: number | Date | null;\n mtime?: number | Date | null;\n timestamp?: number;\n}\n\nexport interface LiveNodeOps {\n getattr(node: LiveFsNode): LiveAttr;\n setattr(node: LiveFsNode, attr: LiveSetAttr): void;\n lookup(parent: LiveFsNode, name: string): LiveFsNode;\n mknod(parent: LiveFsNode, name: string, mode: number, dev: number): LiveFsNode;\n rename(oldNode: LiveFsNode, newDir: LiveFsNode, newName: string): void;\n unlink(parent: LiveFsNode, name: string): void;\n rmdir(parent: LiveFsNode, name: string): void;\n readdir(node: LiveFsNode): string[];\n symlink(parent: LiveFsNode, newName: string, target: string): LiveFsNode;\n readlink(node: LiveFsNode): string;\n}\n\nexport interface LiveStreamOps {\n open(stream: LiveFsStream): void;\n\n dup(stream: LiveFsStream): void;\n close(stream: LiveFsStream): void;\n read(\n stream: LiveFsStream,\n buffer: ArrayBufferView,\n offset: number,\n length: number,\n position: number\n ): number;\n write(\n stream: LiveFsStream,\n buffer: ArrayBufferView,\n offset: number,\n length: number,\n position: number\n ): number;\n llseek(stream: LiveFsStream, offset: number, whence: number): number;\n fsync(stream: LiveFsStream): void;\n}\n\nexport interface LiveFsApi {\n createNode(parent: LiveFsNode | null, name: string, mode: number, dev?: number): LiveFsNode;\n isDir(mode: number): boolean;\n isFile(mode: number): boolean;\n isLink(mode: number): boolean;\n ErrnoError: new (errno: number) => Error & { errno: number };\n closeStream?(fd: number): void;\n sliccTouch?: boolean;\n sliccReading?: LiveFsNode | undefined;\n sliccCred?: LiveCred;\n sliccOpenFifo?(stream: LiveFsStream, path: string): void;\n\n nameTable?: (LiveFsNode | null)[] | null;\n hashRemoveNode?(node: LiveFsNode): void;\n hashAddNode?(node: LiveFsNode): void;\n hashName?(parentId: number, name: string): number;\n lookupNode?(parent: LiveFsNode, name: string): LiveFsNode;\n lookupPath?(path: string, opts?: { follow?: boolean; parent?: boolean }): { node: object };\n open?(...args: unknown[]): unknown;\n}\n\nexport interface LiveVfsPlugin {\n mount(mount: LiveFsMount): LiveFsNode;\n node_ops: LiveNodeOps;\n stream_ops: LiveStreamOps;\n flushDirty(): void;\n\n mounts: Set<LiveFsMount>;\n handled?: Set<LiveFsNode>;\n}\n\nfunction toErrno(Fs: LiveFsApi, err: unknown): Error {\n if ((err as { errno?: unknown })?.errno !== undefined && err instanceof Fs.ErrnoError) {\n return err;\n }\n const code = (err as { code?: unknown })?.code;\n const errno = wasiErrno(typeof code === 'string' ? code : 'EIO');\n return new Fs.ErrnoError(errno);\n}\n\nexport function liveNodePath(node: LiveFsNode): string {\n const parts: string[] = [];\n let cur = node;\n while (cur !== cur.mount.root) {\n parts.push(cur.name);\n cur = cur.parent;\n }\n const root = node.mount.opts.root.replace(/\\/+$/, '');\n return parts.length === 0 ? root || '/' : `${root}/${parts.reverse().join('/')}`;\n}\n\nfunction exactIn(node: LiveFsNode | null): boolean {\n return node?.mount.opts.bridge.owners === true;\n}\n\nfunction modeFromStat(st: SyncFsBridgeStat, exact = false): number {\n const type = st.isSymbolicLink\n ? S_IFLNK\n : st.isDirectory\n ? S_IFDIR\n : st.isSocket\n ? S_IFSOCK\n : st.isFifo\n ? S_IFIFO\n : S_IFREG;\n const fallback = st.isDirectory || st.isSymbolicLink ? 0o777 : 0o666;\n const perm = (st.mode ?? fallback) & PERM_MASK;\n return type | (exact ? perm : perm || fallback);\n}\n\nfunction toMs(v: number | Date | null | undefined): number | undefined {\n if (v === undefined || v === null) return undefined;\n return v instanceof Date ? v.getTime() : v;\n}\n\ninterface LiveOpsTables {\n node?: LiveNodeOps;\n stream?: LiveStreamOps;\n}\n\nconst EARLY_WHOLE_FILE = 64 * 1024;\n\nfunction needsLoad(s: LiveNodeState, view: ChangeView | undefined, path: () => string): boolean {\n if (s.loaded && view && !s.dirty) {\n const watch = s.watch ?? { view, stat: () => ({ size: s.len }) };\n const { now, changed } = watchedChange(watch, s.seen ?? 0, path());\n s.seen = now;\n if (changed) {\n s.loaded = false;\n s.stat = undefined;\n }\n }\n if (s.loaded) return false;\n s.seen = view?.now();\n return true;\n}\n\nfunction loadedWatch(\n bridge: SyncFsPosixBridge,\n call: <T>(fn: () => T) => T,\n path: () => string,\n st: SyncFsBridgeStat | { size: number }\n): RangedWatch | undefined {\n const view = bridge.changes;\n return view && linkedWatch({ view, stat: () => call(() => bridge.stat(path())) }, st);\n}\n\nfunction rangedFileOf(\n bridge: SyncFsPosixBridge,\n call: <T>(fn: () => T) => T,\n path: () => string,\n io: RangedIo\n): RangedFile {\n const seen = bridge.changes?.now();\n const stat = () => call(() => bridge.stat(path()));\n const st = stat();\n const watch =\n bridge.changes && linkedWatch({ view: bridge.changes, ino: st.ino, seen, stat }, st);\n return new RangedFile(io, path(), st.size, st.version, watch);\n}\nconst O_APPEND = 0o2000;\n\nfunction unlessIo<T>(op: () => T): T | undefined {\n try {\n return op();\n } catch (err) {\n if ((err as { errno?: unknown }).errno === wasiErrno('EIO')) return undefined;\n throw err;\n }\n}\n\nconst O_ACCMODE = 3;\nconst O_TRUNC = 0o1000;\nconst O_PATH = 0o10000000;\n\nfunction wantOf(flags: number): number {\n if (flags & O_PATH) return 0;\n const mode = flags & O_ACCMODE;\n const read = mode === 1 ? 0 : HOLD_READ;\n const write = mode !== 0 || (flags & O_TRUNC) !== 0 ? HOLD_WRITE : 0;\n return read | write;\n}\n\nfunction accessOf(want: number): number {\n return (want & HOLD_READ ? 4 : 0) | (want & HOLD_WRITE ? 2 : 0);\n}\n\nfunction refusal(err: unknown): boolean {\n const code = (err as { code?: unknown } | null)?.code;\n return code === 'EACCES' || code === 'EPERM';\n}\n\nfunction gone(err: unknown): boolean {\n return (err as { code?: unknown } | null)?.code === 'ENOENT';\n}\n\nfunction young(s: LiveNodeState): boolean {\n return performance.now() - (s.filledAt ?? Number.NEGATIVE_INFINITY) < SHARED_TTL_MS;\n}\n\nfunction cachedStat(node: LiveFsNode, dir: boolean, view?: ChangeView): boolean {\n const s = node.live;\n if (view?.foreign() && !s.dirty) {\n const gen = s.statGen ?? s.named;\n if (s.openCount > 0 || !young(s) || gen === undefined) return false;\n if (view.changedSince(gen, liveNodePath(node)).changed) return false;\n }\n return s.stat !== undefined && (!dir || s.statAt === syncCallCount());\n}\n\nfunction searchParents(\n Fs: LiveFsApi,\n node: LiveFsNode,\n bridge: SyncFsPosixBridge,\n call: <T>(fn: () => T) => T\n): void {\n const cred = Fs.sliccCred;\n if (!cred) return;\n let cur = node.parent;\n while (cur) {\n const st = cur.live.stat;\n if (st && st.uid !== undefined && st.mode !== undefined) {\n const perm = { uid: st.uid, gid: st.gid ?? 0, mode: st.mode & 0o7777 };\n if (!permits(cred, perm, X_OK, true)) {\n call(() => bridge.access?.(liveNodePath(cur), X_OK, 'eaccess'));\n cur.live.stat = undefined;\n return;\n }\n } else {\n call(() => bridge.access?.(liveNodePath(cur), X_OK, 'eaccess'));\n return;\n }\n if (cur === cur.parent) break;\n cur = cur.parent;\n }\n}\n\nconst stale = (s: LiveNodeState): boolean => !!s.orphan && !s.kept;\n\nfunction linkedStates(bridgeOf: (node: LiveFsNode) => SyncFsPosixBridge) {\n const opens = new Map<LiveNodeState, LiveFsNode>();\n const byId = new Map<string, LiveNodeState>();\n const idOf = (st: SyncFsBridgeStat | undefined): string | undefined =>\n st?.ino === undefined || (st.nlink ?? 1) < 2 ? undefined : `${st.dev}:${st.ino}`;\n\n function know(s: LiveNodeState, id: string): void {\n s.id = id;\n if (!byId.has(id)) byId.set(id, s);\n }\n\n function opening(node: LiveFsNode, on: boolean): void {\n const s = node.live;\n if (!on) {\n opens.delete(s);\n if (s.id !== undefined && byId.get(s.id) === s) byId.delete(s.id);\n s.id = undefined;\n return;\n }\n opens.set(s, node);\n const id = idOf(s.stat);\n if (id !== undefined) know(s, id);\n }\n\n function sharedWith(node: LiveFsNode): LiveNodeState | undefined {\n const st = node.live.stat;\n if (st?.ino === undefined) return undefined;\n const id = `${st.dev}:${st.ino}`;\n if (!byId.has(id) && idOf(st) !== undefined) {\n for (const [s, other] of opens) {\n if (s.id !== undefined || s.orphan) continue;\n let st: SyncFsBridgeStat | undefined;\n try {\n st = bridgeOf(other).lstat(liveNodePath(other));\n } catch {}\n const known = idOf(st);\n if (known !== undefined) know(s, known);\n }\n }\n const s = byId.get(id);\n return s && s !== node.live && !stale(s) ? s : undefined;\n }\n const holder = (node: LiveFsNode): LiveFsNode => opens.get(node.live) ?? node;\n return { opening, sharedWith, know, idOf, holder };\n}\n\nfunction filled(\n s: LiveNodeState,\n stat: SyncFsBridgeStat,\n asked: { statGen: number | undefined; filledAt: number }\n): void {\n Object.assign(s, { stat, statAt: syncCallCount(), seenAt: syncEpoch(), ...asked });\n}\n\ninterface Asked {\n filledAt: number;\n statGen: number | undefined;\n}\n\nfunction asking(bridge: SyncFsPosixBridge): Asked {\n return { filledAt: performance.now(), statGen: bridge.changes?.now() };\n}\n\nfunction listing(s: LiveNodeState): Asked {\n return { filledAt: s.listedAt ?? Number.NEGATIVE_INFINITY, statGen: s.listedGen };\n}\n\nfunction answeredAt(node: LiveFsNode, asked: Asked): LiveFsNode {\n Object.assign(node.live, asked);\n return node;\n}\n\nfunction freshState(stat?: SyncFsBridgeStat): LiveNodeState {\n const base = { len: 0, loaded: false, dirty: false, openCount: 0 };\n return stat\n ? { stat, statAt: syncCallCount(), filledAt: performance.now(), seenAt: syncEpoch(), ...base }\n : base;\n}\n\nfunction inCache(Fs: LiveFsApi, node: LiveFsNode): boolean {\n const table = Fs.nameTable;\n const parent = node.parent as LiveFsNode & { id?: number };\n const hash = Fs.hashName?.(parent.id ?? 0, node.name);\n if (!table || hash === undefined) return true;\n let at: LiveFsNode | null | undefined = table[hash];\n while (at) {\n if (at === node) return true;\n at = (at as LiveFsNode & { name_next?: LiveFsNode | null }).name_next;\n }\n return false;\n}\n\nfunction heldUnder(held: LiveFsNode, from: string): LiveFsNode | undefined {\n let moving: LiveFsNode | undefined = held;\n while (moving && moving !== moving.mount.root && liveNodePath(moving) !== from) {\n moving = moving.parent;\n }\n return moving && moving !== moving.mount.root && liveNodePath(moving) === from\n ? moving\n : undefined;\n}\n\nfunction relinked(Fs: LiveFsApi, moving: LiveFsNode, to: string): void {\n const slash = to.lastIndexOf('/');\n let dir: LiveFsNode | undefined;\n try {\n dir = Fs.lookupPath?.(slash <= 0 ? '/' : to.slice(0, slash)).node as LiveFsNode;\n } catch {}\n if (!dir || dir.mount !== moving.mount) return;\n const name = to.slice(slash + 1);\n try {\n const existing = Fs.lookupNode?.(dir, name);\n if (existing && existing !== moving) Fs.hashRemoveNode?.(existing);\n } catch {}\n moving.parent.live.listed = undefined;\n dir.live.listed = undefined;\n Fs.hashRemoveNode?.(moving);\n moving.name = name;\n moving.parent = dir;\n Fs.hashAddNode?.(moving);\n moving.live.stat = undefined;\n}\n\nfunction renameFollower(\n Fs: LiveFsApi,\n bridgeOf: (node: LiveFsNode) => SyncFsPosixBridge,\n call: <T>(fn: () => T) => T\n) {\n const open = new Set<LiveFsNode>();\n const seen = new Map<SyncFsPosixBridge, number>();\n const follow = (node: LiveFsNode, missing = false): boolean => {\n const bridge = bridgeOf(node);\n const view = bridge.changes;\n const since = seen.get(bridge);\n let now = view?.renames() ?? 0;\n if (missing && view && now === since) now = view.awaitRename(now, RENAME_WAIT_MS);\n const ask = bridge.renames?.bind(bridge);\n if (since === undefined || now === since || !ask) return false;\n const held = [...open].filter((n) => !n.live.orphan && bridgeOf(n) === bridge);\n if (held.length === 0) {\n seen.set(bridge, now);\n return false;\n }\n const reply = call(() =>\n ask(\n since,\n held.map((n) => liveNodePath(n))\n )\n );\n seen.set(bridge, reply.now);\n for (const [from, to] of reply.renames) {\n for (const n of held) {\n const moving = heldUnder(n, from);\n if (moving && inCache(Fs, moving)) relinked(Fs, moving, to);\n }\n }\n return reply.renames.length > 0;\n };\n return {\n open,\n follow,\n track(node: LiveFsNode, on: boolean): void {\n node.live.bound = on && node.live.stat?.ino !== undefined ? node.live.stat : undefined;\n if (!on) {\n open.delete(node);\n return;\n }\n follow(node);\n open.add(node);\n },\n watchRenames(bridge: SyncFsPosixBridge): void {\n if (!seen.has(bridge)) seen.set(bridge, bridge.changes?.renames() ?? 0);\n },\n ownRename(bridge: SyncFsPosixBridge, seq: number | undefined): void {\n const since = seen.get(bridge);\n if (seq !== undefined && since !== undefined && seq === ((since + 1) | 0))\n seen.set(bridge, seq);\n },\n };\n}\n\nfunction followingOnce(write: () => void, follow: () => boolean): void {\n try {\n write();\n } catch (err) {\n if ((err as { errno?: number }).errno !== wasiErrno('ENOENT') || !follow()) throw err;\n write();\n }\n}\n\nfunction openReplaced(\n h: LiveHelpers,\n dir: LiveFsNode,\n name: string,\n moving: LiveFsNode\n): { node: LiveFsNode; st: SyncFsBridgeStat } | undefined {\n let node: LiveFsNode | undefined;\n try {\n node = h.Fs.lookupNode?.(dir, name);\n } catch {\n return undefined;\n }\n if (!node || node === moving || node.live?.openCount === 0 || !h.Fs.isFile(node.mode))\n return undefined;\n const st = freshStat(h, node);\n if ((st.nlink ?? 1) > 1) return undefined;\n const ranged = h.rangedOf(node);\n if (ranged) ranged.prefetch();\n else h.ensureLoaded(node);\n return { node, st };\n}\n\nfunction renamedOver(\n h: LiveHelpers,\n dir: LiveFsNode,\n name: string,\n moving: LiveFsNode,\n rename: () => void\n): void {\n const replaced = openReplaced(h, dir, name, moving);\n rename();\n if (replaced) {\n h.rangedOf(replaced.node)?.pin();\n orphaned(h, replaced.node, replaced.st);\n }\n try {\n const existing = h.Fs.lookupNode?.(dir, name);\n if (existing && existing !== moving) h.Fs.hashRemoveNode?.(existing);\n } catch {}\n}\n\nfunction renameThrough(h: LiveHelpers, node: LiveFsNode, from: string, to: string): void {\n const seq = h.call(() => h.bridgeOf(node).rename(from, to));\n h.ownRename(h.bridgeOf(node), typeof seq === 'number' ? seq : undefined);\n}\n\nfunction heldStream(h: LiveHelpers, stream: LiveFsStream, change: 1 | -1): void {\n const s = stream.node.live;\n if ((stream.flags & 3) === 0 || s.orphan) return;\n const before = s.writers ?? 0;\n s.writers = Math.max(0, before + change);\n if ((before === 0) !== (s.writers === 0)) {\n try {\n h.bridgeOf(stream.node).hold?.(liveNodePath(stream.node), s.writers > 0);\n } catch {}\n }\n}\n\nfunction adopted(\n node: LiveFsNode,\n st: SyncFsBridgeStat,\n asked: { statGen: number | undefined; filledAt: number }\n): boolean {\n const bound = node.live.openCount > 0 ? node.live.bound : undefined;\n if (bound && st.ino !== bound.ino) return false;\n filled(node.live, st, asked);\n node.mode = modeFromStat(st, exactIn(node));\n return true;\n}\n\nfunction createHelpers(Fs: LiveFsApi, ops: LiveOpsTables) {\n const bridgeOf = (node: LiveFsNode): SyncFsPosixBridge => node.mount.opts.bridge;\n const fileIo = (node: LiveFsNode): SyncFsFileIo => pinnedIo(bridgeOf(node), node.live.handle);\n const dirty = new Set<LiveFsNode>();\n const handled = new Set<LiveFsNode>();\n const linked = linkedStates(bridgeOf);\n const renames = renameFollower(Fs, bridgeOf, (fn) => call(fn));\n function markDirty(node: LiveFsNode): void {\n node.live.dirty = true;\n dirty.add(node);\n }\n\n function flushDirty(): void {\n for (const node of [...dirty]) {\n const s = node.live;\n if (!s.dirty || stale(s)) {\n dirty.delete(node);\n continue;\n }\n if (!s.ranged && s.len > EARLY_WHOLE_FILE) continue;\n try {\n flushNode(node);\n dirty.delete(node);\n } catch {}\n }\n }\n\n function call<T>(fn: () => T): T {\n try {\n return fn();\n } catch (err) {\n throw toErrno(Fs, err);\n }\n }\n\n function metadataCall(fn: () => void): void {\n try {\n call(fn);\n } catch (err) {\n if ((err as { errno?: number }).errno !== wasiErrno('ENOSYS')) throw err;\n }\n }\n\n function makeNode(parent: LiveFsNode | null, name: string, st: SyncFsBridgeStat): LiveFsNode {\n const node = Fs.createNode(parent, name, modeFromStat(st, exactIn(parent)), 0);\n node.node_ops = ops.node as LiveNodeOps;\n node.stream_ops = ops.stream as LiveStreamOps;\n node.live = freshState(st);\n return node;\n }\n\n function statOf(node: LiveFsNode): SyncFsBridgeStat {\n if (node.live.orphan) {\n const size = node.live.ranged?.size() ?? node.live.len;\n return { ...(node.live.stat as SyncFsBridgeStat), size };\n }\n const view = bridgeOf(node).changes;\n if (!cachedStat(node, Fs.isDir(node.mode), view)) {\n const asked = { statGen: view?.now(), filledAt: performance.now() };\n const st = call(() => bridgeOf(node).lstat(liveNodePath(linked.holder(node))));\n if (!adopted(node, st, asked)) return node.live.bound as SyncFsBridgeStat;\n }\n return node.live.stat as SyncFsBridgeStat;\n }\n\n function childPath(parent: LiveFsNode, name: string): string {\n const base = liveNodePath(parent);\n return base === '/' ? `/${name}` : `${base}/${name}`;\n }\n\n function ensureLoaded(node: LiveFsNode): void {\n const s = node.live;\n if (!needsLoad(s, bridgeOf(node).changes, () => liveNodePath(linked.holder(node)))) return;\n const path = () => liveNodePath(linked.holder(node));\n const bytes = call(() => fileIo(node).readFile(path()));\n Object.assign(s, { data: bytes, len: bytes.length, loaded: true });\n s.watch = loadedWatch(bridgeOf(node), call, path, s.stat ?? { size: bytes.length });\n }\n\n function rangedOf(node: LiveFsNode): RangedFile | undefined {\n const s = node.live;\n if (s.ranged || !s.ranges) return s.ranged;\n const bridge = bridgeOf(node);\n const path = () => liveNodePath(linked.holder(node));\n const file = () => fileIo(node) as Required<SyncFsFileIo>;\n const io = {\n pread: (_: string, at: number, n: number, version?: string) =>\n file().pread(path(), at, n, version),\n pwrite: (_: string, at: number, bytes: Uint8Array, transfer?: boolean) =>\n file().pwrite(path(), at, bytes, transfer),\n truncate: (_: string, size: number) => file().truncate(path(), size),\n };\n s.ranged = rangedFileOf(bridge, call, path, io);\n return s.ranged;\n }\n\n function ensureCapacity(node: LiveFsNode, need: number): Uint8Array {\n const s = node.live;\n const cur = s.data ?? new Uint8Array(0);\n if (cur.length >= need) return cur;\n const grown = new Uint8Array(Math.max(need, cur.length * 2, 256));\n grown.set(cur.subarray(0, s.len));\n s.data = grown;\n return grown;\n }\n\n function flushNode(node: LiveFsNode): void {\n const s = node.live;\n if (!s.dirty || stale(s) || !(s.data || s.ranged)) return;\n const whole = () => (s.data as Uint8Array).slice(0, s.len);\n const write = () =>\n s.ranged\n ? call(() => s.ranged?.flush())\n : call(() => fileIo(node).writeFile(liveNodePath(linked.holder(node)), whole(), true));\n followingOnce(write, () => renames.follow(node, true));\n s.dirty = false;\n s.stat = undefined;\n }\n\n function truncate(node: LiveFsNode, size: number): void {\n const s = node.live;\n if (!s.orphan) {\n const st = statOf(node);\n if (st.readonly) throw new Fs.ErrnoError(wasiErrno('EROFS'));\n if (st.maxFile !== undefined && size > st.maxFile) {\n throw new Fs.ErrnoError(wasiErrno('EFBIG'));\n }\n }\n const ranged = s.openCount > 0 ? rangedOf(node) : undefined;\n if (ranged) {\n ranged.truncate(size);\n markDirty(node);\n return;\n }\n if (s.openCount > 0) {\n if (size > 0) ensureLoaded(node);\n else s.loaded = true;\n const buf = ensureCapacity(node, size);\n if (size > s.len) buf.fill(0, s.len, size);\n s.len = size;\n markDirty(node);\n return;\n }\n\n const path = liveNodePath(node);\n const bridge = bridgeOf(node);\n if (statOf(node).ranged && bridge.truncate) {\n call(() => bridge.truncate?.(path, size));\n s.stat = undefined;\n return;\n }\n const bytes = new Uint8Array(size);\n if (size > 0) {\n const cur = call(() => bridgeOf(node).readFile(path));\n bytes.set(cur.subarray(0, Math.min(size, cur.length)));\n }\n call(() => bridgeOf(node).writeFile(path, bytes));\n s.stat = undefined;\n }\n\n return {\n Fs,\n bridgeOf,\n handled,\n linked,\n ...renames,\n call,\n metadataCall,\n makeNode,\n statOf,\n childPath,\n ensureLoaded,\n ensureCapacity,\n rangedOf,\n flushNode,\n markDirty,\n flushDirty,\n truncate,\n };\n}\n\ntype LiveHelpers = ReturnType<typeof createHelpers>;\n\nfunction freshStat(h: LiveHelpers, node: LiveFsNode): SyncFsBridgeStat {\n const { statOf } = h;\n const st = statOf(node);\n if (!st.linkable) return st;\n node.live.stat = undefined;\n return statOf(node);\n}\n\nfunction orphaned(h: LiveHelpers, node: LiveFsNode, st: SyncFsBridgeStat): void {\n const { bridgeOf } = h;\n const s = node.live;\n const nlink = st.nlink ?? 1;\n let kept = false;\n try {\n kept = nlink > 1 && s.handle !== undefined && bridgeOf(node).kept?.(s.handle) === true;\n } catch {}\n if (nlink > 1 && !kept && h.linked.holder(node) !== node) {\n s.stat = undefined;\n return;\n }\n s.orphan = true;\n if (!kept) return;\n s.kept = true;\n s.stat = { ...st, nlink: nlink - 1 };\n const id = h.linked.idOf(st);\n if (id !== undefined) h.linked.know(s, id);\n}\n\nfunction createNodeOps(h: LiveHelpers): LiveNodeOps {\n const { Fs, bridgeOf, call, metadataCall, makeNode, statOf, childPath, flushNode, truncate } = h;\n const { ensureLoaded } = h;\n const setTimes = (node: LiveFsNode, path: string, atime: number, mtime: number): void => {\n const now = Fs.sliccTouch === true;\n if (Fs.isLink(node.mode)) {\n metadataCall(() => bridgeOf(node).lutimes(path, atime, mtime, now));\n return;\n }\n flushNode(node);\n metadataCall(() => bridgeOf(node).utimes(path, atime, mtime, now));\n };\n const stamped = typeof (Fs as { doSetAttr?: unknown }).doSetAttr !== 'function';\n const timesOf = (node: LiveFsNode, attr: LiveSetAttr): [number, number] | undefined => {\n const mtime = toMs(attr.mtime) ?? (stamped ? attr.timestamp : undefined);\n const atime = toMs(attr.atime);\n if (mtime !== undefined && attr.atime !== null) return [atime ?? mtime, mtime];\n if (atime === undefined && mtime === undefined) return undefined;\n const st = statOf(node);\n return [atime ?? st.atimeMs ?? st.mtimeMs ?? 0, mtime ?? st.mtimeMs ?? 0];\n };\n return {\n getattr(node) {\n const owned = bridgeOf(node).owners === true;\n if (owned && Fs.isLink(node.mode) && statOf(node).uid === undefined)\n node.live.stat = undefined;\n const cached = owned && cachedStat(node, Fs.isDir(node.mode), bridgeOf(node).changes);\n const st = statOf(node);\n if (cached) searchParents(Fs, node, bridgeOf(node), call);\n const s = node.live;\n const size = Fs.isDir(node.mode) ? 4096 : (s.ranged?.size() ?? (s.loaded ? s.len : st.size));\n const mtime = new Date(st.mtimeMs ?? 0);\n return {\n dev: st.dev ?? 1,\n ino: st.ino ?? inodeOf(liveNodePath(node)),\n mode: node.mode,\n nlink: st.nlink ?? 1,\n uid: owned ? (st.uid ?? 0) : 0,\n gid: owned ? (st.gid ?? 0) : 0,\n rdev: 0,\n size,\n atime: new Date(st.atimeMs ?? mtime.getTime()),\n mtime,\n ctime: new Date(st.ctimeMs ?? mtime.getTime()),\n blksize: 4096,\n blocks: Math.ceil(size / 4096) * 8,\n };\n },\n setattr(node, attr) {\n if (node.live.orphan) {\n if (attr.mode !== undefined && attr.mode !== null) {\n node.mode = (node.mode & ~PERM_MASK) | (attr.mode & PERM_MASK);\n }\n if (attr.size !== undefined && attr.size !== null) truncate(node, attr.size);\n return;\n }\n const path = liveNodePath(node);\n if (attr.mode !== undefined && attr.mode !== null) {\n if (Fs.isLink(node.mode)) throw new Fs.ErrnoError(wasiErrno('EOPNOTSUPP'));\n const perm = attr.mode & PERM_MASK;\n if (perm !== (node.mode & PERM_MASK)) {\n metadataCall(() => bridgeOf(node).chmod(path, perm));\n node.mode = (node.mode & ~PERM_MASK) | perm;\n }\n }\n if (attr.size !== undefined && attr.size !== null && Fs.isFile(node.mode)) {\n truncate(node, attr.size);\n }\n const times = timesOf(node, attr);\n if (times) setTimes(node, path, ...times);\n node.live.stat = undefined;\n },\n lookup(parent, name) {\n const listed = parent.live.listed?.get(name);\n parent.live.listed?.delete(name);\n const asked = listed ? listing(parent.live) : asking(bridgeOf(parent));\n const st = listed ?? call(() => bridgeOf(parent).lstat(childPath(parent, name)));\n return answeredAt(makeNode(parent, name, st), asked);\n },\n mknod(parent, name, mode) {\n parent.live.listed = undefined;\n const path = childPath(parent, name);\n const bridge = bridgeOf(parent);\n const perm = bridge.owners ? mode & PERM_MASK : undefined;\n if (Fs.isDir(mode) && perm !== undefined) {\n call(() => bridge.mkdir(path, perm));\n } else if (Fs.isDir(mode)) {\n call(() => bridge.mkdir(path));\n\n const masked = mode & PERM_MASK & ~UMASK;\n if (masked !== DEFAULT_DIR_PERM) metadataCall(() => bridge.chmod(path, masked));\n } else if (Fs.isFile(mode)) {\n call(() =>\n bridge.create\n ? bridge.create(path, perm, (opening.get(h.Fs) as number) > 0)\n : bridge.writeFile(path, new Uint8Array(0))\n );\n } else if ((mode & S_IFMT) === S_IFIFO && bridge.mkfifo) {\n call(() => bridge.mkfifo?.(path, mode & PERM_MASK));\n } else {\n throw new Fs.ErrnoError(wasiErrno('EPERM'));\n }\n const node = makeNode(parent, name, {\n isFile: Fs.isFile(mode),\n ...((mode & S_IFMT) === S_IFIFO ? { isFifo: true } : {}),\n isDirectory: Fs.isDir(mode),\n isSymbolicLink: false,\n size: 0,\n mode,\n mtimeMs: Date.now(),\n });\n\n node.live.stat = undefined;\n if (Fs.isFile(mode)) node.live.created = true;\n return node;\n },\n rename(oldNode, newDir, newName) {\n oldNode.parent.live.listed = undefined;\n newDir.live.listed = undefined;\n const from = liveNodePath(oldNode);\n const to = childPath(newDir, newName);\n flushNode(oldNode);\n renamedOver(h, newDir, newName, oldNode, () => renameThrough(h, oldNode, from, to));\n oldNode.name = newName;\n oldNode.parent = newDir;\n oldNode.live.stat = undefined;\n },\n unlink(parent, name) {\n parent.live.listed = undefined;\n let open: LiveFsNode | undefined;\n try {\n const node = Fs.lookupNode?.(parent, name);\n if (node && node.live?.openCount > 0 && Fs.isFile(node.mode)) open = node;\n } catch {}\n const st = open && freshStat(h, open);\n if (open) {\n const ranged = h.rangedOf(open);\n if (ranged) ranged.pin();\n else ensureLoaded(open);\n }\n call(() => bridgeOf(parent).unlink(childPath(parent, name)));\n if (open && st) orphaned(h, open, st);\n },\n rmdir(parent, name) {\n parent.live.listed = undefined;\n call(() => bridgeOf(parent).rmdir(childPath(parent, name)));\n },\n readdir(node) {\n const listedAt = performance.now();\n const listedGen = bridgeOf(node).changes?.now();\n const listed = call(() => bridgeOf(node).readdirStat(liveNodePath(node)));\n node.live.listed = new Map();\n Object.assign(node.live, { listedAt, listedGen });\n for (const [name, st] of listed) if (st) node.live.listed.set(name, st);\n return ['.', '..', ...listed.map(([name]) => name)];\n },\n symlink(parent, newName, target) {\n parent.live.listed = undefined;\n const path = childPath(parent, newName);\n call(() => bridgeOf(parent).symlink(target, path));\n return makeNode(parent, newName, {\n isFile: false,\n isDirectory: false,\n isSymbolicLink: true,\n size: new TextEncoder().encode(target).length,\n });\n },\n readlink(node) {\n if (!Fs.isLink(node.mode)) throw new Fs.ErrnoError(wasiErrno('EINVAL'));\n const bridge = bridgeOf(node);\n const path = liveNodePath(node);\n if (bridge.links && Fs.sliccReading !== node) {\n call(() => bridge.access?.(path, 0, 'follow', true));\n }\n return call(() => bridge.readlink(path));\n },\n };\n}\n\nfunction appendThrough(h: LiveHelpers, stream: LiveFsStream, bytes: () => Uint8Array): boolean {\n const node = stream.node;\n const s = node.live;\n const append = pinnedIo(h.bridgeOf(node), s.handle).append;\n if (!append) return false;\n const body = bytes();\n const at = liveNodePath(h.linked.holder(node));\n const after = unlessIo(() => {\n h.flushNode(node);\n return h.call(() => append(at, body));\n });\n if (after === undefined) return false;\n if (!s.ranged) {\n s.data = undefined;\n s.loaded = false;\n s.len = 0;\n }\n s.stat = undefined;\n stream.position = after - body.length;\n return true;\n}\n\nfunction holdLive(\n bridge: SyncFsPosixBridge,\n node: LiveFsNode,\n on: boolean,\n want: number\n): number | undefined {\n const s = node.live;\n const seen =\n on && s.stat\n ? { gen: s.stat.gen, ...(s.stat.ino !== undefined ? { ino: s.stat.ino } : {}) }\n : undefined;\n return bridge.hold?.(liveNodePath(node), on, true, s.handle, want, seen);\n}\n\nfunction dropOpen(s: LiveNodeState): boolean {\n if (s.openCount === 0) return false;\n s.openCount -= 1;\n return true;\n}\n\nfunction createStreamOps(h: LiveHelpers): LiveStreamOps {\n const { Fs, statOf, ensureLoaded, ensureCapacity, flushNode, bridgeOf, rangedOf } = h;\n const held = (stream: LiveFsStream, change: 1 | -1) => heldStream(h, stream, change);\n\n const opened = (node: LiveFsNode, on: boolean, want = 0) => {\n const s = node.live;\n try {\n h.track(node, on);\n const handle = holdLive(bridgeOf(node), node, on, want);\n s.handle = on ? handle : undefined;\n h.linked.opening(node, on);\n if (s.handle === undefined) h.handled.delete(node);\n else h.handled.add(node);\n } catch (err) {\n if (refusal(err) || gone(err)) {\n throw new Fs.ErrnoError(wasiErrno((err as { code: string }).code));\n }\n }\n };\n const permitted = (stream: LiveFsStream, created: boolean): number => {\n const s = stream.node.live;\n const bridge = bridgeOf(stream.node);\n if (!bridge.owners || s.orphan) return 0;\n const want = wantOf(stream.flags) | (created ? HOLD_CREATED : 0);\n if (s.openCount > 0 && !created) {\n h.call(() => bridge.access?.(liveNodePath(stream.node), accessOf(want), 'open'));\n }\n return want;\n };\n const fifo = (stream: LiveFsStream) => {\n const open = h.Fs.sliccOpenFifo;\n try {\n if (!open) throw new Fs.ErrnoError(wasiErrno('ENXIO'));\n open.call(h.Fs, stream, liveNodePath(stream.node));\n } catch (err) {\n if (stream.fd !== undefined) Fs.closeStream?.(stream.fd);\n throw err;\n }\n };\n const directory = (stream: LiveFsStream) => {\n if ((stream.node.mode & S_IFMT) === S_IFIFO && !(stream.flags & O_PATH)) return fifo(stream);\n if ((stream.node.mode & S_IFMT) === S_IFSOCK && !(stream.flags & O_PATH)) {\n if (stream.fd !== undefined) Fs.closeStream?.(stream.fd);\n throw new Fs.ErrnoError(wasiErrno('ENXIO'));\n }\n const bridge = bridgeOf(stream.node);\n if (!bridge.owners || !Fs.isDir(stream.node.mode) || stream.flags & O_PATH) return;\n try {\n h.call(() =>\n bridge.access?.(liveNodePath(stream.node), accessOf(wantOf(stream.flags)), 'open')\n );\n } catch (err) {\n if (stream.fd !== undefined) Fs.closeStream?.(stream.fd);\n throw err;\n }\n };\n return {\n open(stream) {\n if (!Fs.isFile(stream.node.mode)) return directory(stream);\n const s = stream.node.live;\n const created = s.created === true;\n s.created = undefined;\n if (s.openCount === 0 && !s.orphan) {\n const bridge = bridgeOf(stream.node);\n s.ranges = !!(\n bridge.pread &&\n bridge.pwrite &&\n bridge.truncate &&\n statOf(stream.node).ranged\n );\n const shared = h.linked.sharedWith(stream.node);\n if (shared) stream.node.live = shared;\n else rangedOf(stream.node);\n }\n if ((stream.flags & 3) !== 0) {\n try {\n const st = statOf(stream.node);\n if (st.readonly) throw new Fs.ErrnoError(wasiErrno('EROFS'));\n stream.node.live.maxFile = st.maxFile;\n } catch (err) {\n if (stream.fd !== undefined) Fs.closeStream?.(stream.fd);\n throw err;\n }\n }\n const live = stream.node.live;\n let counted = false;\n try {\n const want = permitted(stream, created);\n live.openCount++;\n counted = true;\n if (live.openCount === 1) opened(stream.node, true, want);\n } catch (err) {\n if (counted) live.openCount--;\n if (stream.fd !== undefined) Fs.closeStream?.(stream.fd);\n throw err;\n }\n held(stream, 1);\n },\n\n dup(stream) {\n if (!Fs.isFile(stream.node.mode)) return;\n stream.node.live.openCount++;\n held(stream, 1);\n },\n close(stream) {\n const node = stream.node;\n if (!Fs.isFile(node.mode)) return;\n const s = node.live;\n if (!dropOpen(s)) return;\n h.follow(node);\n if (s.openCount > 0) {\n held(stream, -1);\n return;\n }\n try {\n flushNode(node);\n } finally {\n s.data = undefined;\n s.ranged = undefined;\n s.ranges = false;\n s.len = 0;\n s.loaded = false;\n held(stream, -1);\n h.track(node, false);\n if (s.handle !== undefined) opened(node, false);\n }\n },\n read(stream, buffer, offset, length, position) {\n const node = stream.node;\n if (Fs.isDir(node.mode)) throw new Fs.ErrnoError(wasiErrno('EISDIR'));\n h.follow(node);\n const ranged = rangedOf(node);\n if (ranged) {\n const out = new Uint8Array(buffer.buffer, buffer.byteOffset + offset, Math.max(0, length));\n return h.call(() => ranged.readInto(position, out));\n }\n ensureLoaded(node);\n const s = node.live;\n if (position >= s.len || length <= 0) return 0;\n const n = Math.min(length, s.len - position);\n const out = new Uint8Array(buffer.buffer, buffer.byteOffset + offset, n);\n out.set((s.data as Uint8Array).subarray(position, position + n));\n return n;\n },\n write(stream, buffer, offset, length, position) {\n const node = stream.node;\n if (Fs.isDir(node.mode)) throw new Fs.ErrnoError(wasiErrno('EISDIR'));\n if (length <= 0) return 0;\n h.follow(node);\n const s = node.live;\n const end = position + length;\n if (s.maxFile !== undefined && end > s.maxFile) throw new Fs.ErrnoError(wasiErrno('EFBIG'));\n const bytes = () => new Uint8Array(buffer.buffer, buffer.byteOffset + offset, length).slice();\n if (stream.flags & O_APPEND && appendThrough(h, stream, bytes)) return length;\n const ranged = rangedOf(node);\n if (ranged) {\n const bytes = new Uint8Array(buffer.buffer, buffer.byteOffset + offset, length);\n h.call(() => ranged.write(position, bytes));\n h.markDirty(node);\n return length;\n }\n ensureLoaded(node);\n const buf = ensureCapacity(node, end);\n if (position > s.len) buf.fill(0, s.len, position);\n buf.set(new Uint8Array(buffer.buffer, buffer.byteOffset + offset, length), position);\n s.len = Math.max(s.len, end);\n h.markDirty(node);\n return length;\n },\n llseek(stream, offset, whence) {\n let pos = offset;\n if (whence === SEEK_CUR) pos += stream.position;\n else if (whence === SEEK_END && Fs.isFile(stream.node.mode)) {\n const s = stream.node.live;\n pos += rangedOf(stream.node)?.size() ?? (s.loaded ? s.len : statOf(stream.node).size);\n }\n if (pos < 0) throw new Fs.ErrnoError(wasiErrno('EINVAL'));\n return pos;\n },\n fsync(stream) {\n h.follow(stream.node);\n flushNode(stream.node);\n },\n };\n}\n\nconst opening = new WeakMap<LiveFsApi, number>();\n\nfunction countOpens(Fs: LiveFsApi): void {\n const { open } = Fs;\n if (typeof open !== 'function' || opening.has(Fs)) return;\n opening.set(Fs, 0);\n Fs.open = function (this: unknown, ...args: unknown[]) {\n opening.set(Fs, (opening.get(Fs) ?? 0) + 1);\n try {\n return open.apply(this, args);\n } finally {\n opening.set(Fs, (opening.get(Fs) ?? 1) - 1);\n }\n };\n}\n\nexport function createLiveVfsPlugin(Fs: LiveFsApi): LiveVfsPlugin {\n const mounts = new Set<LiveFsMount>();\n const ops: LiveOpsTables = {};\n const h = createHelpers(Fs, ops);\n countOpens(Fs);\n const nodeOps = createNodeOps(h);\n const streamOps = createStreamOps(h);\n ops.node = nodeOps;\n ops.stream = streamOps;\n return {\n mounts,\n node_ops: nodeOps,\n stream_ops: streamOps,\n handled: h.handled,\n flushDirty: () => h.flushDirty(),\n mount(mount) {\n const st = h.call(() => mount.opts.bridge.stat(mount.opts.root));\n h.watchRenames(mount.opts.bridge);\n if (!st.isDirectory) throw new Fs.ErrnoError(wasiErrno('ENOTDIR'));\n const root = h.makeNode(null, '/', st);\n root.mode = modeFromStat(st, mount.opts.bridge.owners === true);\n mounts.add(mount);\n return root;\n },\n };\n}\n\nfunction ownedBy(plugin: LiveVfsPlugin, node: LiveFsNode | null | undefined): node is LiveFsNode {\n return !!node?.live && plugin.mounts.has(node.mount);\n}\n\nexport function flushLiveVfs(Fs: LiveFsApi, plugin: LiveVfsPlugin): void {\n for (const head of Fs.nameTable ?? []) {\n for (let node = head; node; node = (node as { name_next?: LiveFsNode }).name_next ?? null) {\n const s = node.live;\n if (!ownedBy(plugin, node) || !s.dirty || !(s.data || s.ranged)) continue;\n try {\n if (s.ranged) s.ranged.flush();\n else {\n const bytes = (s.data as Uint8Array).slice(0, s.len);\n pinnedIo(node.mount.opts.bridge, s.handle).writeFile(liveNodePath(node), bytes, true);\n }\n s.dirty = false;\n } catch (err) {\n throw toErrno(Fs, err);\n }\n }\n }\n}\n\nfunction refresh(s: LiveNodeState): void {\n if (s.dirty || s.orphan) return;\n if (s.ranged?.pinnedVersion !== undefined) {\n s.ranged.forget();\n return;\n }\n s.data = undefined;\n s.ranged = undefined;\n s.len = 0;\n s.loaded = false;\n}\n\nexport function invalidateLiveVfs(Fs: LiveFsApi, plugin: LiveVfsPlugin): void {\n const table = Fs.nameTable ?? [];\n const drop: LiveFsNode[] = [];\n for (const head of table) {\n for (let node = head; node; node = (node as { name_next?: LiveFsNode }).name_next ?? null) {\n if (!ownedBy(plugin, node)) continue;\n const s = node.live;\n s.stat = undefined;\n s.listed = undefined;\n if (s.openCount === 0) {\n if (node !== node.mount.root && !node.mounted) drop.push(node);\n } else refresh(s);\n }\n }\n if (!Fs.hashRemoveNode) return;\n for (const node of drop) Fs.hashRemoveNode(node);\n}\n\nexport interface LiveMountFsApi extends LiveFsApi {\n root?: MemfsRoot;\n rename?(from: string, to: string): void;\n lookupPath?(path: string, opts?: { follow?: boolean; parent?: boolean }): { node: object };\n sliccRename?: true;\n sliccKept?: true;\n sliccStale?: true;\n sliccVanished?: true;\n open?(path: string, flags: number, mode?: number): unknown;\n statfsNode?(node: LiveFsNode): Record<string, number>;\n sliccStatfs?: true;\n filesystems: { SLICC_LIVE_FS?: LiveVfsPlugin };\n mkdirTree(path: string): void;\n mount(type: LiveVfsPlugin, opts: LiveFsMountOpts, mountpoint: string): unknown;\n}\n\nfunction outermostDirs(dirs: readonly string[]): string[] {\n const norm = [...new Set(dirs.map((d) => d.replace(/\\/+$/, '') || '/'))].sort();\n return norm.filter((d) => !norm.some((o) => o !== d && (o === '/' || d.startsWith(`${o}/`))));\n}\n\nfunction describeMountError(err: unknown): string {\n if (err instanceof Error) return err.message;\n const errno = (err as { errno?: unknown } | null)?.errno;\n return typeof errno === 'number' ? `errno ${errno}` : String(err);\n}\n\nexport function mountLiveVfsDirs(\n Fs: LiveMountFsApi,\n bridge: SyncFsPosixBridge,\n dirs: readonly string[],\n warn: (message: string) => void\n): { plugin: LiveVfsPlugin; mounted: string[] } {\n if (Fs.root?.memfs) Fs.root.node_ops = Fs.root.memfs;\n if (typeof Fs.filesystems !== 'object' || !Fs.filesystems) {\n throw new Error(\n 'the module was linked without filesystem support, so the VFS cannot be mounted ' +\n '(link it with -sFORCE_FILESYSTEM=1)'\n );\n }\n const plugin = Fs.filesystems.SLICC_LIVE_FS ?? createLiveVfsPlugin(Fs);\n Fs.filesystems.SLICC_LIVE_FS = plugin;\n guardStatfs(Fs);\n const mounted: string[] = [];\n for (const dir of outermostDirs(dirs)) {\n if (dir === '/') continue;\n try {\n Fs.mkdirTree(dir);\n Fs.mount(plugin, { root: dir, bridge }, dir);\n mounted.push(dir);\n } catch (err) {\n warn(`live VFS mount of ${dir} failed: ${describeMountError(err)}`);\n }\n }\n return { plugin, mounted };\n}\n\ntype MemfsRoot = LiveFsNode & { contents?: Record<string, unknown>; memfs?: LiveNodeOps };\n\nexport function liveRoot(Fs: LiveMountFsApi, bridge: SyncFsPosixBridge): void {\n const root = Fs.root;\n const plugin = Fs.filesystems.SLICC_LIVE_FS;\n if (!root || !plugin) return;\n root.mount.opts = { root: '/', bridge };\n root.live = { len: 0, loaded: false, dirty: false, openCount: 0 };\n plugin.mounts.add(root.mount);\n invalidateLiveVfs(Fs, plugin);\n guardRenames(Fs);\n guardKeptNodes(Fs, plugin.handled);\n guardStaleNodes(Fs, plugin);\n guardVanished(Fs);\n guardStatfs(Fs);\n const memfs = root.memfs ?? root.node_ops;\n const live = plugin.node_ops;\n root.memfs = memfs;\n const own = (name: string) => Object.hasOwn(root.contents ?? {}, name);\n root.node_ops = {\n ...memfs,\n lookup: (parent, name) => live.lookup(parent, name),\n mknod: (parent, name, mode, dev) => live.mknod(parent, name, mode, dev),\n unlink: (parent, name) => live.unlink(parent, name),\n rmdir: (parent, name) => (own(name) ? memfs : live).rmdir(parent, name),\n symlink: (parent, name, target) => live.symlink(parent, name, target),\n rename: (node, dir, name) => (node.live ? live : memfs).rename(node, dir, name),\n readdir(node) {\n const names = new Set(memfs.readdir(node));\n for (const name of live.readdir(node)) names.add(name);\n return [...names];\n },\n };\n}\n\nfunction crosses(Fs: LiveMountFsApi, from: string, to: string): boolean {\n const parentOf = (path: string) =>\n Fs.lookupPath?.(path, { parent: true }).node as LiveFsNode | undefined;\n const name = from.replace(/\\/+$/, '').split('/').pop() ?? '';\n try {\n const fromDir = parentOf(from);\n const node = fromDir && Fs.lookupNode?.(fromDir, name);\n const dir = parentOf(to);\n return !!node && !!dir && !!node.live !== !!dir.live;\n } catch {\n return false;\n }\n}\n\nfunction guardStatfs(Fs: LiveMountFsApi): void {\n const statfsNode = Fs.statfsNode?.bind(Fs);\n if (!statfsNode || Fs.sliccStatfs) return;\n Fs.sliccStatfs = true;\n Fs.statfsNode = (node) => {\n const defaults = statfsNode(node);\n let usage: SyncFsUsage | null | undefined;\n try {\n usage = node.live ? node.mount?.opts?.bridge?.statfs?.(liveNodePath(node)) : undefined;\n } catch {\n return defaults;\n }\n if (!usage) return defaults;\n const free = Math.max(0, Math.floor((usage.quota - usage.usage) / 4096));\n return {\n ...defaults,\n bsize: 4096,\n frsize: 4096,\n blocks: Math.ceil(usage.quota / 4096),\n bfree: free,\n bavail: free,\n };\n };\n}\n\nfunction pinnedIo(bridge: SyncFsPosixBridge, handle: number | undefined): SyncFsFileIo {\n return handle !== undefined && bridge.pinned ? bridge.pinned(handle) : bridge;\n}\n\nfunction guardKeptNodes(Fs: LiveMountFsApi, handled: Set<LiveFsNode> | undefined): void {\n const open = Fs.open?.bind(Fs);\n const forget = Fs.hashRemoveNode?.bind(Fs);\n if (!open || !forget || !Fs.lookupPath || !handled || Fs.sliccKept) return;\n Fs.sliccKept = true;\n const lookupPath = Fs.lookupPath.bind(Fs);\n Fs.open = (path, flags, mode) => {\n const name = path.slice(path.lastIndexOf('/') + 1);\n if (![...handled].some((held) => held.name === name)) return open(path, flags, mode);\n let node: LiveFsNode | undefined;\n try {\n node = lookupPath(path, { follow: true }).node as LiveFsNode;\n } catch {}\n const handle = node?.live?.openCount ? node.live.handle : undefined;\n if (node && handle !== undefined && node.mount.opts.bridge.kept?.(handle)) forget(node);\n return open(path, flags, mode);\n };\n}\n\nfunction outdated(node: LiveFsNode, view: ChangeView, before: number): boolean {\n const s = node.live;\n if (\n view.foreign() &&\n s.seenAt !== syncEpoch() &&\n s.openCount === 0 &&\n !s.dirty &&\n node !== node.mount.root &&\n !node.mounted\n )\n return true;\n if (s.named === undefined) {\n s.named = before;\n return false;\n }\n if (s.named === before) return false;\n const { now, changed } = view.changedSince(s.named, liveNodePath(node));\n s.named = now;\n return changed && s.openCount === 0 && !s.dirty && node !== node.mount.root && !node.mounted;\n}\n\nfunction guardStaleNodes(Fs: LiveMountFsApi, plugin: LiveVfsPlugin): void {\n const lookupNode = Fs.lookupNode?.bind(Fs);\n const forget = Fs.hashRemoveNode?.bind(Fs);\n if (!lookupNode || !forget || Fs.sliccStale) return;\n Fs.sliccStale = true;\n Fs.lookupNode = (parent, name) => {\n const view = parent.live ? parent.mount.opts.bridge.changes : undefined;\n const before = view?.now() ?? 0;\n const node = lookupNode(parent, name);\n if (!view || !ownedBy(plugin, node) || !outdated(node, view, before)) return node;\n forget(node);\n const fresh = lookupNode(parent, name);\n if (fresh.live) fresh.live.named = before;\n return fresh;\n };\n}\n\nconst O_NOFOLLOW = 0o400000;\n\nconst RESOLVING: ReadonlyArray<[string, (args: unknown[]) => boolean]> = [\n ['open', (args) => ((args[1] as number) & O_NOFOLLOW) === 0],\n ['stat', (args) => !args[1]],\n ['lstat', () => false],\n ['unlink', () => false],\n ['rename', () => false],\n ['readlink', () => false],\n ['truncate', () => true],\n];\n\nfunction guardVanished(Fs: LiveMountFsApi): void {\n const forget = Fs.hashRemoveNode?.bind(Fs);\n if (!forget || !Fs.lookupPath || Fs.sliccVanished) return;\n Fs.sliccVanished = true;\n const drop: (node: LiveFsNode) => void = forget;\n const lookupPath = Fs.lookupPath.bind(Fs);\n const ops = Fs as unknown as Record<string, ((...args: unknown[]) => unknown) | undefined>;\n const cached = (path: string, follow: boolean): LiveFsNode | undefined => {\n try {\n const node = lookupPath(path, { follow }).node as LiveFsNode;\n return node.live && node.live.openCount === 0 && !node.live.dirty ? node : undefined;\n } catch {\n return undefined;\n }\n };\n let open: ((...args: unknown[]) => unknown) | undefined;\n for (const [name, follows] of RESOLVING) {\n const op = ops[name]?.bind(Fs);\n if (name === 'open') open = op;\n if (op) ops[name] = vanishing(op, follows);\n }\n function vanishing(\n op: (...args: unknown[]) => unknown,\n follows: (args: unknown[]) => boolean\n ): (...args: unknown[]) => unknown {\n return (...args: unknown[]) => {\n try {\n return op(...args);\n } catch (err) {\n const path = args[0];\n const code = (err as { errno?: unknown }).errno;\n const taken = code === wasiErrno('EEXIST') && op === open;\n if ((code !== wasiErrno('ENOENT') && !taken) || typeof path !== 'string') throw err;\n const node = cached(path, follows(args));\n if (!node) throw err;\n drop(node);\n return op(...args);\n }\n };\n }\n}\n\nfunction guardRenames(Fs: LiveMountFsApi): void {\n const rename = Fs.rename?.bind(Fs);\n if (!rename || Fs.sliccRename) return;\n Fs.sliccRename = true;\n Fs.rename = (from, to) => {\n if (crosses(Fs, from, to)) throw new Fs.ErrnoError(wasiErrno('EXDEV'));\n rename(from, to);\n };\n}\n\nexport interface LiveChownFs extends LiveFsApi {\n lookupPath(path: string, opts?: { follow?: boolean }): { node: object };\n chown?(path: string | object, uid: number, gid: number, dontFollow?: boolean): void;\n fchown?(fd: number, uid: number, gid: number): void;\n getStreamChecked?(fd: number): { node: object; path?: string };\n}\n\nfunction idOf(value: number): number | undefined {\n return value === -1 || value === 0xffffffff ? undefined : value >>> 0;\n}\n\nfunction chownHeld(\n Fs: LiveChownFs,\n node: LiveFsNode,\n s: LiveNodeState,\n uid: number,\n gid: number\n): void {\n const bridge = node.mount.opts.bridge as SyncFsPosixBridge;\n const handle = s.handle as number;\n try {\n bridge.chown?.(liveNodePath(node), idOf(uid), idOf(gid), false, handle);\n } catch (err) {\n throw toErrno(Fs, err);\n }\n if (node.parent?.live) node.parent.live.listed = undefined;\n if (!s.orphan) {\n s.stat = undefined;\n return;\n }\n try {\n const st = bridge.keptStat?.(handle);\n if (st && s.stat) s.stat = { ...s.stat, uid: st.uid, gid: st.gid, mode: st.mode };\n } catch {}\n}\n\nexport function useLiveChown(Fs: LiveChownFs): void {\n const chown = Fs.chown?.bind(Fs);\n if (!chown) return;\n Fs.chown = (path, uid, gid, dontFollow) => {\n const node = (\n typeof path === 'string' ? Fs.lookupPath(path, { follow: !dontFollow }).node : path\n ) as LiveFsNode;\n if (!node.live || node.live.orphan) return chown(path, uid, gid, dontFollow);\n try {\n node.mount.opts.bridge.chown?.(liveNodePath(node), idOf(uid), idOf(gid));\n } catch (err) {\n throw toErrno(Fs, err);\n }\n node.live.stat = undefined;\n if (node.parent?.live) node.parent.live.listed = undefined;\n };\n const { getStreamChecked } = Fs;\n if (!Fs.fchown || !getStreamChecked) return;\n Fs.fchown = (fd, uid, gid) => {\n const stream = getStreamChecked.call(Fs, fd);\n const node = stream.node as LiveFsNode;\n const s = node.live;\n if (s?.handle !== undefined && (!s.orphan || s.kept)) return chownHeld(Fs, node, s, uid, gid);\n const target = s !== undefined || stream.path === undefined ? stream.node : stream.path;\n (Fs.chown as NonNullable<LiveChownFs['chown']>)(target, uid, gid);\n };\n}\n\nexport interface LiveLinkFs extends LiveFsApi {\n lookupPath(path: string, opts?: { follow?: boolean }): { node: object };\n}\n\nfunction flushOne(Fs: LiveFsApi, node: LiveFsNode): void {\n const s = node.live;\n if (!s.dirty || s.orphan || !(s.data || s.ranged)) return;\n try {\n if (s.ranged) s.ranged.flush();\n else {\n const bytes = (s.data as Uint8Array).slice(0, s.len);\n pinnedIo(node.mount.opts.bridge, s.handle).writeFile(liveNodePath(node), bytes, true);\n }\n } catch (err) {\n throw toErrno(Fs, err);\n }\n s.dirty = false;\n s.stat = undefined;\n}\n\nfunction linkable(bridge: SyncFsPosixBridge, path: string): boolean {\n try {\n return bridge.lstat(path).linkable === true;\n } catch {\n return false;\n }\n}\n\nexport function linkLive(Fs: LiveLinkFs, from: string, to: string, follow: boolean): boolean {\n const target = to.replace(/\\/+$/, '');\n const slash = target.lastIndexOf('/');\n const name = target.slice(slash + 1);\n const source = Fs.lookupPath(from, { follow }).node as LiveFsNode;\n const parent = Fs.lookupPath(target.slice(0, slash) || '/', { follow: true }).node as LiveFsNode;\n if (!source.live || !parent.live) return false;\n flushOne(Fs, source);\n const base = liveNodePath(parent);\n const bridge = source.mount.opts.bridge;\n const path = liveNodePath(source);\n try {\n bridge.link(path, base === '/' ? `/${name}` : `${base}/${name}`);\n } catch (err) {\n const refused = toErrno(Fs, err) as Error & { errno: number };\n if (refused.errno !== wasiErrno('EPERM') || linkable(bridge, path)) throw refused;\n throw new Fs.ErrnoError(wasiErrno('EMLINK'));\n }\n source.live.stat = undefined;\n parent.live.listed = undefined;\n return true;\n}\n\nexport interface LiveReadlinkFs extends LiveFsApi {\n lookupPath(path: string, opts?: { follow?: boolean }): { node: object };\n readlink?(path: string): string;\n}\n\nexport function readingLinks(Fs: LiveReadlinkFs): void {\n const readlink = Fs.readlink?.bind(Fs);\n if (!readlink) return;\n Fs.readlink = (path) => {\n const was = Fs.sliccReading;\n Fs.sliccReading = Fs.lookupPath(path).node as LiveFsNode;\n try {\n return readlink(path);\n } finally {\n Fs.sliccReading = was;\n }\n };\n}\n", "import { type LiveFsNode, liveNodePath } from '../realm/live-vfs-fs.ts';\nimport type { ProcessFs, ProcessStream } from './kernel-streams.ts';\nimport { wasiErrno } from './wasi-errno.ts';\n\nexport const F_GETLK = 12;\nexport const F_SETLK = 13;\nexport const F_SETLKW = 14;\n\nconst F_RDLCK = 0;\nconst F_WRLCK = 1;\nconst F_UNLCK = 2;\nconst SEEK_CUR = 1;\nconst SEEK_END = 2;\nconst O_ACCMODE = 3;\nconst O_RDONLY = 0;\nconst O_WRONLY = 1;\n\nexport type LockKind = 'read' | 'write';\n\nexport interface LockTarget {\n path?: string;\n fd?: number;\n}\n\nexport interface LockHeld {\n kind: LockKind;\n pid: number;\n start: number;\n len: number;\n}\n\nexport interface LockKernel {\n setLock(\n target: LockTarget,\n kind: LockKind | 'unlock',\n start: number,\n len: number,\n wait: boolean\n ): void;\n getLock(target: LockTarget, kind: LockKind, start: number, len: number): LockHeld | null;\n closeLocks(target: LockTarget): void;\n flock?(fd: number, kind: 'shared' | 'exclusive' | 'unlock', wait: boolean): void;\n}\n\nexport interface LockDeps {\n fs(): ProcessFs | undefined;\n memory(): ArrayBufferLike | undefined;\n kernel: LockKernel;\n flush(): void;\n}\n\nexport const lockPromoters = new WeakMap<object, () => (stream: ProcessStream) => void>();\n\nconst held = new WeakMap<ProcessFs, true>();\n\nexport function lockTarget(stream: ProcessStream): LockTarget | undefined {\n if (stream.sliccKernelFile && stream.sliccKernelFd !== undefined) {\n return { fd: stream.sliccKernelFd };\n }\n const node = stream.node as unknown as Partial<LiveFsNode>;\n return node.live && node.mount ? { path: liveNodePath(node as LiveFsNode) } : undefined;\n}\n\nfunction errnoOf(err: unknown): number {\n const code = (err as { code?: unknown; errno?: unknown } | null)?.code;\n if (typeof code === 'string') return wasiErrno(code);\n const errno = (err as { errno?: unknown } | null)?.errno;\n return typeof errno === 'number' ? errno : wasiErrno('EIO');\n}\n\nfunction sizeOf(Fs: ProcessFs, stream: ProcessStream): number {\n const st = (Fs as unknown as { fstat?: (fd: number) => { size: number } }).fstat?.(stream.fd);\n return st?.size ?? 0;\n}\n\nfunction kindOf(type: number): LockKind | 'unlock' | undefined {\n if (type === F_RDLCK) return 'read';\n if (type === F_WRLCK) return 'write';\n return type === F_UNLCK ? 'unlock' : undefined;\n}\n\ninterface Flock {\n kind: LockKind | 'unlock';\n start: number;\n len: number;\n}\n\nfunction readFlock(\n view: DataView,\n at: number,\n base: (whence: number) => number\n): Flock | undefined {\n const kind = kindOf(view.getInt16(at, true));\n if (kind === undefined) return undefined;\n const start = base(view.getInt16(at + 2, true)) + Number(view.getBigInt64(at + 8, true));\n return { kind, start, len: Number(view.getBigInt64(at + 16, true)) };\n}\n\nfunction writeHolder(view: DataView, at: number, found: LockHeld | null): void {\n if (!found) {\n view.setInt16(at, F_UNLCK, true);\n return;\n }\n view.setInt16(at, found.kind === 'read' ? F_RDLCK : F_WRLCK, true);\n view.setInt16(at + 2, 0, true);\n view.setBigInt64(at + 8, BigInt(found.start), true);\n view.setBigInt64(at + 16, BigInt(found.len), true);\n view.setInt32(at + 24, found.pid, true);\n}\n\nfunction refused(kind: LockKind | 'unlock', flags: number): boolean {\n const access = flags & O_ACCMODE;\n return (kind === 'write' && access === O_RDONLY) || (kind === 'read' && access === O_WRONLY);\n}\n\nfunction baseOf(Fs: ProcessFs, stream: ProcessStream): (whence: number) => number {\n return (whence) =>\n whence === SEEK_CUR ? stream.position : whence === SEEK_END ? sizeOf(Fs, stream) : 0;\n}\n\nexport function recordLock(\n fcntl: (fd: number, cmd: number, varargs: number) => number,\n deps: LockDeps\n): (fd: number, cmd: number, varargs: number) => number {\n return (fd, cmd, varargs) => {\n if (cmd !== F_GETLK && cmd !== F_SETLK && cmd !== F_SETLKW) return fcntl(fd, cmd, varargs);\n const Fs = deps.fs();\n const buffer = deps.memory();\n const stream = Fs?.getStream(fd);\n if (stream && Fs && !stream.sliccKernelFile) lockPromoters.get(Fs)?.()(stream);\n const target = stream ? lockTarget(stream) : undefined;\n if (!Fs || !buffer || !stream || !target) return fcntl(fd, cmd, varargs);\n const view = new DataView(buffer);\n const at = view.getUint32(varargs, true);\n const lock = readFlock(view, at, baseOf(Fs, stream));\n if (!lock || (cmd === F_GETLK && lock.kind === 'unlock')) return -wasiErrno('EINVAL');\n try {\n if (cmd === F_GETLK) {\n writeHolder(\n view,\n at,\n deps.kernel.getLock(target, lock.kind as LockKind, lock.start, lock.len)\n );\n return 0;\n }\n if (refused(lock.kind, stream.flags)) return -wasiErrno('EBADF');\n if (lock.kind !== 'write') deps.flush();\n deps.kernel.setLock(target, lock.kind, lock.start, lock.len, cmd === F_SETLKW);\n if (lock.kind !== 'unlock') held.set(Fs, true);\n return 0;\n } catch (err) {\n return -errnoOf(err);\n }\n };\n}\n\nexport function closeDropsLocks(Fs: ProcessFs, kernel: LockKernel): void {\n const close = (Fs as { close?: (stream: ProcessStream) => void }).close;\n if (typeof close !== 'function') return;\n (Fs as { close: (stream: ProcessStream) => void }).close = (stream) => {\n const target = held.has(Fs) && !stream.sliccKernelFile ? lockTarget(stream) : undefined;\n close.call(Fs, stream);\n if (!target) return;\n try {\n kernel.closeLocks(target);\n } catch {}\n };\n}\n\nconst LOCK_NB = 4;\nconst FLOCK_KINDS: Readonly<Record<number, 'shared' | 'exclusive' | 'unlock'>> = {\n 1: 'shared',\n 2: 'exclusive',\n 8: 'unlock',\n};\n\nexport interface FlockDeps {\n fs(): ProcessFs | undefined;\n flock(fd: number, kind: 'shared' | 'exclusive' | 'unlock', wait: boolean): void;\n}\n\nexport function kernelFlock(deps: FlockDeps): (fd: number, op: number) => number {\n return (fd, op) => {\n const kind = FLOCK_KINDS[op & ~LOCK_NB];\n if (!kind) return -wasiErrno('EINVAL');\n const Fs = deps.fs();\n const stream = Fs?.getStream(fd);\n if (!Fs || !stream) return -wasiErrno('EBADF');\n if (stream.sliccKernelFd === undefined) lockPromoters.get(Fs)?.()(stream);\n if (stream.sliccKernelFd === undefined) return 0;\n try {\n deps.flock(stream.sliccKernelFd, kind, kind !== 'unlock' && (op & LOCK_NB) === 0);\n return 0;\n } catch (err) {\n return -errnoOf(err);\n }\n };\n}\n", "import type { ProcessFs } from './kernel-streams.ts';\nimport type { GlueSyscall } from './process-fds.ts';\nimport { wasiErrno } from './wasi-errno.ts';\n\nexport const TIOCGPTN = 0x80045430;\nexport const TIOCSPTLCK = 0x40045431;\nexport const TIOCSCTTY = 0x540e;\nexport const TIOCSWINSZ = 0x5414;\nexport const TIOCPKT = 0x5420;\n\nexport interface PtyKernel {\n ptyNumber(kfd: number): number;\n\n ptyLock(kfd: number, lock: boolean): void;\n\n setControllingTerminal(kfd: number): void;\n\n setPacketMode(kfd: number, on: boolean): void;\n\n setWinsize(kfd: number, rows: number, cols: number): void;\n}\n\nexport interface PtyIoctlDeps {\n fs(): ProcessFs | undefined;\n\n heap(): Int32Array | undefined;\n kernel: PtyKernel;\n}\n\nfunction failed(e: unknown): number {\n const code = (e as { code?: unknown } | null)?.code;\n if (typeof code === 'string') return -wasiErrno(code);\n throw e;\n}\n\nexport function ptyIoctl(ioctl: GlueSyscall, deps: PtyIoctlDeps): GlueSyscall {\n return (fd, op, varargs) => {\n const request = op >>> 0;\n if (\n request !== TIOCGPTN &&\n request !== TIOCSPTLCK &&\n request !== TIOCSCTTY &&\n request !== TIOCSWINSZ &&\n request !== TIOCPKT\n ) {\n return ioctl(fd, op, varargs);\n }\n const stream = deps.fs()?.getStream(fd);\n const kfd = (stream as { sliccKernelFd?: number } | undefined)?.sliccKernelFd;\n\n if (kfd === undefined) return ioctl(fd, op, varargs);\n const heap = deps.heap();\n if (!heap) return -wasiErrno('EFAULT');\n const argp = (heap[varargs >> 2] ?? 0) >>> 0;\n try {\n return answer(request, kfd, argp, heap, deps.kernel);\n } catch (e) {\n return failed(e);\n }\n };\n}\n\nfunction answer(\n request: number,\n kfd: number,\n argp: number,\n heap: Int32Array,\n kernel: PtyKernel\n): number {\n switch (request) {\n case TIOCGPTN:\n heap[argp >> 2] = kernel.ptyNumber(kfd);\n return 0;\n case TIOCSPTLCK:\n kernel.ptyLock(kfd, (heap[argp >> 2] ?? 0) !== 0);\n return 0;\n case TIOCSCTTY:\n kernel.setControllingTerminal(kfd);\n return 0;\n case TIOCPKT:\n kernel.setPacketMode(kfd, (heap[argp >> 2] ?? 0) !== 0);\n return 0;\n default: {\n const word = heap[argp >> 2] ?? 0;\n kernel.setWinsize(kfd, word & 0xffff, (word >>> 16) & 0xffff);\n return 0;\n }\n }\n}\n", "import { devCreation, devRemoval } from '../fs/dev-removal.ts';\nimport { hostnameOf, hostsFile } from '../kernel/net/loopback-names.ts';\nimport type { MountLine } from '../kernel/proc-info.ts';\nimport { type LiveFsNode, type LiveLinkFs, linkLive, liveNodePath } from '../realm/live-vfs-fs.ts';\nimport { OS_RELEASE } from '../version.ts';\nimport type { ProcessFs, ProcessStream, ProcessSys } from './kernel-streams.ts';\nimport { type LockDeps, recordLock } from './process-locks.ts';\nimport { type PtyKernel, ptyIoctl } from './process-pty.ts';\nimport { wasiErrno } from './wasi-errno.ts';\n\nexport const O_CLOEXEC = 0o2000000;\n\nconst FD_CLOEXEC = 1;\nconst F_DUPFD = 0;\nconst F_GETFD = 1;\nconst F_SETFD = 2;\nconst F_GETFL = 3;\nconst F_DUPFD_CLOEXEC = 1030;\n\ntype CloexecStream = Pick<ProcessStream, 'sliccCloexec'>;\n\nexport function closesOnExec(stream: CloexecStream): boolean {\n return stream.sliccCloexec === true;\n}\n\nexport function setCloseOnExec(stream: CloexecStream, on: boolean): void {\n if (on) stream.sliccCloexec = true;\n else delete stream.sliccCloexec;\n}\n\nconst tracked = new WeakSet<ProcessFs>();\n\nexport function trackCloseOnExec(Fs: ProcessFs): void {\n if (tracked.has(Fs)) return;\n tracked.add(Fs);\n if (typeof Fs.dupStream === 'function') {\n const dupStream = Fs.dupStream.bind(Fs);\n Fs.dupStream = (stream, fd) => {\n const copy = dupStream(stream, fd);\n setCloseOnExec(copy, false);\n return copy;\n };\n }\n if (typeof Fs.open === 'function') {\n const open = Fs.open.bind(Fs);\n Fs.open = (path, flags, mode) => {\n const cloexec = typeof flags === 'number' && (flags & O_CLOEXEC) !== 0;\n const stream = open(path, cloexec ? flags & ~O_CLOEXEC : flags, mode);\n setCloseOnExec(stream, cloexec);\n return stream;\n };\n }\n}\n\nexport type GlueSyscall = (...args: number[]) => number;\n\nexport interface GlueSyscalls {\n fcntl?: GlueSyscall;\n pipe2?: GlueSyscall;\n dup3?: GlueSyscall;\n socket?: GlueSyscall;\n accept4?: GlueSyscall;\n\n ioctl?: GlueSyscall;\n\n setitimer?: GlueSyscall;\n}\n\nexport interface CloexecDeps {\n fs(): ProcessFs | undefined;\n\n heap(): Int32Array | undefined;\n\n pty?: PtyKernel;\n\n timer?: { arm(ms: number): void };\n\n locks?: Omit<LockDeps, 'fs'>;\n}\n\nfunction marker(deps: CloexecDeps): (fd: number, on: boolean) => void {\n return (fd, on) => {\n const stream = deps.fs()?.getStream(fd);\n if (stream) setCloseOnExec(stream, on);\n };\n}\n\nfunction cloexecFcntl(fcntl: GlueSyscall, deps: CloexecDeps): GlueSyscall {\n const mark = marker(deps);\n return (fd, cmd, varargs) => {\n if (cmd === F_DUPFD_CLOEXEC) {\n const copy = fcntl(fd, F_DUPFD, varargs);\n if (copy >= 0) mark(copy, true);\n return copy;\n }\n if (cmd === F_GETFL) {\n const flags = fcntl(fd, cmd, varargs);\n return flags < 0 ? flags : flags & ~O_CLOEXEC;\n }\n if (cmd !== F_GETFD && cmd !== F_SETFD) return fcntl(fd, cmd, varargs);\n const stream = deps.fs()?.getStream(fd);\n if (!stream) return -wasiErrno('EBADF');\n if (cmd === F_GETFD) return closesOnExec(stream) ? FD_CLOEXEC : 0;\n const arg = deps.heap()?.[varargs >> 2];\n if (arg === undefined) return -wasiErrno('EINVAL');\n setCloseOnExec(stream, (arg & FD_CLOEXEC) !== 0);\n return 0;\n };\n}\n\nfunction cloexecPipe2(pipe2: GlueSyscall, deps: CloexecDeps): GlueSyscall {\n const mark = marker(deps);\n return (fdPtr, flags) => {\n const r = pipe2(fdPtr, flags & ~O_CLOEXEC);\n const heap = deps.heap();\n if (r === 0 && flags & O_CLOEXEC && heap) {\n mark(heap[fdPtr >> 2] as number, true);\n mark(heap[(fdPtr >> 2) + 1] as number, true);\n }\n return r;\n };\n}\n\nfunction quietTarget(dup3: GlueSyscall, deps: CloexecDeps): GlueSyscall {\n return (fd = -1, newfd = -1, flags = 0, ...rest) => {\n const Fs = deps.fs();\n const target = fd === newfd || flags !== 0 ? undefined : Fs?.getStream(newfd);\n if (target && Fs?.getStream(fd)) {\n try {\n Fs.close?.(target);\n } catch {}\n }\n return dup3(fd, newfd, flags, ...rest);\n };\n}\n\nfunction cloexecByFlag(syscall: GlueSyscall, flagArg: number, deps: CloexecDeps): GlueSyscall {\n const mark = marker(deps);\n return (...args) => {\n const cloexec = ((args[flagArg] ?? 0) & O_CLOEXEC) !== 0;\n if (cloexec) args[flagArg] = (args[flagArg] as number) & ~O_CLOEXEC;\n const fd = syscall(...args);\n if (fd >= 0) mark(fd, cloexec);\n return fd;\n };\n}\n\ntype SyscallName = keyof GlueSyscalls;\n\nconst IMPORT_NAMES: Readonly<Record<SyscallName, string>> = {\n fcntl: '__syscall_fcntl64',\n pipe2: '__syscall_pipe2',\n dup3: '__syscall_dup3',\n socket: '__syscall_socket',\n accept4: '__syscall_accept4',\n ioctl: '__syscall_ioctl',\n setitimer: '_setitimer_js',\n};\n\nfunction wrapperFactories(\n deps: CloexecDeps\n): Partial<Record<SyscallName, (syscall: GlueSyscall) => GlueSyscall>> {\n const { pty, timer } = deps;\n return {\n ...(timer ? { setitimer: (f: GlueSyscall) => kernelTimer(f, timer) } : {}),\n fcntl: (f) =>\n cloexecFcntl(deps.locks ? recordLock(f, { ...deps.locks, fs: deps.fs }) : f, deps),\n pipe2: (f) => cloexecPipe2(f, deps),\n\n dup3: (f) => cloexecByFlag(quietTarget(f, deps), 2, deps),\n socket: (f) => cloexecByFlag(f, 1, deps),\n accept4: (f) => cloexecByFlag(f, 3, deps),\n ...(pty\n ? { ioctl: (f: GlueSyscall) => ptyIoctl(f, { fs: deps.fs, heap: deps.heap, kernel: pty }) }\n : {}),\n };\n}\n\nfunction kernelTimer(setitimer: GlueSyscall, timer: { arm(ms: number): void }): GlueSyscall {\n return (which, ms) => {\n if (which !== 0) return setitimer(which, ms);\n timer.arm(ms ?? 0);\n return 0;\n };\n}\n\nfunction syscallOf(glue: GlueSyscalls, name: string, value: unknown): SyscallName | undefined {\n const names = Object.keys(IMPORT_NAMES) as SyscallName[];\n const own = names.find((key) => glue[key] !== undefined && glue[key] === value);\n if (own) return own;\n\n return typeof value === 'function'\n ? names.find((key) => glue[key] !== undefined && IMPORT_NAMES[key] === name)\n : undefined;\n}\n\nexport function wrapCloexecSyscalls(\n imports: WebAssembly.Imports,\n glue: GlueSyscalls | undefined,\n deps: CloexecDeps\n): void {\n if (!glue) return;\n const factories = wrapperFactories(deps);\n const seen = new Set<object>();\n for (const namespace of Object.values(imports)) {\n if (!namespace || typeof namespace !== 'object' || seen.has(namespace)) continue;\n seen.add(namespace);\n for (const [name, value] of Object.entries(namespace)) {\n const key = syscallOf(glue, name, value);\n const wrap = key && factories[key];\n if (wrap) namespace[name] = wrap(value as GlueSyscall);\n }\n }\n}\n\nconst EBADF = 8;\nconst AT_SYMLINK_NOFOLLOW = 0x100;\nconst EMSCRIPTEN_EPERM = 63;\n\ninterface UtimeNode {\n node_ops: {\n setattr?(node: UtimeNode, attr: { atime: number | null; mtime: number | null }): void;\n };\n}\n\ninterface UtimeFs {\n utime?(path: string, atime: number | null, mtime: number | null): void;\n lookupPath?(path: string, opts: { follow: boolean }): { node: UtimeNode };\n ErrnoError?: new (errno: number) => Error;\n}\n\nconst O_PATH = 0o10000000;\n\ninterface MayOpenFs {\n mayOpen?(node: { mode: number }, flags: number): number;\n isLink?(mode: number): boolean;\n}\n\nexport function pathOpensLinks(Fs: ProcessFs): void {\n const fs = Fs as unknown as MayOpenFs;\n const { mayOpen, isLink } = fs;\n if (!mayOpen || !isLink) return;\n fs.mayOpen = (node, flags) =>\n flags & O_PATH && isLink.call(fs, node.mode) ? 0 : mayOpen.call(fs, node, flags);\n}\n\ntype Syscall = (...args: number[]) => number;\n\nexport interface KernelImports {\n openat?: unknown;\n mkdirat?: unknown;\n mknodat?: unknown;\n umask?: unknown;\n faccessat?: unknown;\n linkat?: unknown;\n symlinkat?: unknown;\n uname?: unknown;\n utimensat?: unknown;\n getppid?: unknown;\n resizeHeap?: unknown;\n fdWrite?: unknown;\n fdRead?: unknown;\n sleepMs?: unknown;\n flock?: unknown;\n getcwd?: unknown;\n}\n\nconst LITERALS: Record<keyof KernelImports, string> = {\n openat: '__syscall_openat',\n mkdirat: '__syscall_mkdirat',\n mknodat: '__syscall_mknodat',\n umask: '__syscall_umask',\n faccessat: '__syscall_faccessat',\n linkat: '__syscall_linkat',\n symlinkat: '__syscall_symlinkat',\n uname: '__syscall_uname',\n utimensat: '__syscall_utimensat',\n getppid: 'slicc_getppid_js',\n resizeHeap: 'emscripten_resize_heap',\n fdWrite: 'fd_write',\n fdRead: 'fd_read',\n sleepMs: 'slicc_sleep_ms',\n flock: '__syscall_flock',\n getcwd: '__syscall_getcwd',\n};\n\nexport function importKey(\n namespace: WebAssembly.ModuleImports,\n name: keyof KernelImports,\n glue: KernelImports | undefined\n): string | undefined {\n const own = glue?.[name];\n if (typeof own === 'function') {\n const found = Object.keys(namespace).find((k) => namespace[k] === own);\n if (found !== undefined) return found;\n }\n const literal = LITERALS[name];\n return typeof namespace[literal] === 'function' ? literal : undefined;\n}\n\nexport function wrapImport(\n imports: WebAssembly.Imports,\n name: keyof KernelImports,\n glue: KernelImports | undefined,\n wrap: (original: Syscall) => Syscall,\n optional = false\n): void {\n let wrapped = false;\n for (const ns of namespaces(imports)) {\n const key = importKey(ns, name, glue);\n if (key === undefined) continue;\n ns[key] = wrap(ns[key] as Syscall);\n wrapped = true;\n }\n if (!wrapped && !optional && typeof glue?.[name] === 'function') {\n throw new Error(`slicc-kernel cannot find the glue's ${LITERALS[name]} among its imports`);\n }\n}\n\nexport interface UmaskDeps {\n initial: number;\n memory(): WebAssembly.Memory | undefined;\n set(mask: number): void;\n glue?: KernelImports | undefined;\n}\n\nexport function kernelUmask(imports: WebAssembly.Imports, deps: UmaskDeps): void {\n let umask = deps.initial & 0o777;\n const { glue } = deps;\n wrapImport(imports, 'openat', glue, (openat) => (dirfd, path, flags, varargs) => {\n const memory = deps.memory();\n if (flags & O_CREAT && varargs && memory) new Int32Array(memory.buffer)[varargs >> 2] &= ~umask;\n return openat(dirfd, path, flags, varargs);\n });\n wrapImport(\n imports,\n 'mkdirat',\n glue,\n (mkdirat) => (dirfd, path, mode) => mkdirat(dirfd, path, mode & ~umask)\n );\n wrapImport(\n imports,\n 'mknodat',\n glue,\n (mknodat) => (dirfd, path, mode, dev) => mknodat(dirfd, path, mode & ~umask, dev)\n );\n wrapImport(imports, 'umask', glue, (own) => {\n own(umask);\n return (mask) => {\n const old = umask;\n umask = mask & 0o777;\n own(umask);\n deps.set(umask);\n return old;\n };\n });\n}\n\nconst UTIME_NOW = 0x3fffffff;\nconst UTIME_OMIT = 0x3ffffffe;\n\nfunction touching(times: number, memory: WebAssembly.Memory | undefined): boolean {\n if (times === 0) return true;\n if (!memory) return false;\n const heap = new Int32Array(memory.buffer);\n const nsec = [heap[(times + 8) >> 2], heap[(times + 24) >> 2]];\n return nsec.every((n) => n === UTIME_NOW || n === UTIME_OMIT);\n}\n\nfunction touch<T>(Fs: TouchFs | undefined, on: boolean, run: () => T): T {\n if (!Fs || !on) return run();\n Fs.sliccTouch = true;\n try {\n return run();\n } finally {\n Fs.sliccTouch = undefined;\n }\n}\n\ninterface TouchFs {\n sliccTouch?: boolean;\n}\n\nexport function noFollowUtimes(\n imports: WebAssembly.Imports,\n fs: () => ProcessFs | undefined,\n glue?: unknown,\n memory: () => WebAssembly.Memory | undefined = () => undefined\n): void {\n wrapImport(\n imports,\n 'utimensat',\n { utimensat: glue },\n (utimensat) => (dirfd, path, times, flags) => {\n const Fs = fs() as (UtimeFs & TouchFs) | undefined;\n const on = touching(times, memory());\n const { utime, lookupPath, ErrnoError } = Fs ?? {};\n if (!Fs || !(flags & AT_SYMLINK_NOFOLLOW) || !utime || !lookupPath || !ErrnoError) {\n return touch(Fs, on, () => utimensat(dirfd, path, times, flags));\n }\n Fs.utime = (at, atime, mtime) => {\n const { node } = lookupPath.call(Fs, at, { follow: false });\n if (!node.node_ops.setattr) throw new ErrnoError(EMSCRIPTEN_EPERM);\n node.node_ops.setattr(node, { atime, mtime });\n };\n try {\n return touch(Fs, on, () => utimensat(dirfd, path, times, flags));\n } finally {\n Fs.utime = utime;\n }\n }\n );\n}\n\ntype AsyncImport = ((...args: number[]) => unknown) & { isAsync?: boolean };\n\nfunction errnoOf(err: unknown): number {\n const { errno, code } = (err ?? {}) as { errno?: unknown; code?: unknown };\n if (typeof errno === 'number') return errno;\n if (typeof code === 'string') return wasiErrno(code);\n throw err;\n}\n\nfunction persistsItself(stream: ProcessStream): boolean {\n const type = stream.node.mount?.type as { syncfs?: unknown } | undefined;\n return typeof type?.syncfs === 'function';\n}\n\nexport interface FdImports {\n fd_sync?: unknown;\n fd_pread?: unknown;\n fd_pwrite?: unknown;\n}\n\nfunction namespaces(imports: WebAssembly.Imports): WebAssembly.ModuleImports[] {\n const seen = new Set<WebAssembly.ModuleImports>();\n for (const namespace of Object.values(imports)) {\n if (namespace && typeof namespace === 'object') seen.add(namespace);\n }\n return [...seen];\n}\n\nfunction keyOf(\n namespace: WebAssembly.ModuleImports,\n name: keyof FdImports,\n glue: FdImports | undefined\n): string | undefined {\n const own = glue?.[name];\n const found =\n typeof own === 'function'\n ? Object.keys(namespace).find((k) => namespace[k] === own)\n : undefined;\n return found ?? (typeof namespace[name] === 'function' ? name : undefined);\n}\n\nexport function syncFsync(\n imports: WebAssembly.Imports,\n fs: () => ProcessFs | undefined,\n glue?: FdImports\n): void {\n for (const namespace of namespaces(imports)) {\n const key = keyOf(namespace, 'fd_sync', glue);\n const original = key === undefined ? undefined : (namespace[key] as AsyncImport);\n if (key === undefined || !original?.isAsync) continue;\n namespace[key] = (fd: number) => {\n const stream = fs()?.getStream(fd);\n if (!stream) return EBADF;\n if (persistsItself(stream)) return original(fd);\n try {\n const result = stream.stream_ops.fsync?.(stream);\n return typeof result === 'number' ? result : 0;\n } catch (err) {\n return errnoOf(err);\n }\n };\n }\n}\n\ntype Positional = (...args: (number | bigint)[]) => number;\n\ninterface PositionalDeps {\n glue?: FdImports | undefined;\n fs: () => ProcessFs | undefined;\n sys: Pick<ProcessSys, 'pread' | 'pwrite'>;\n memory: () => WebAssembly.Memory | undefined;\n}\n\nfunction offsetOf(rest: (number | bigint)[]): number | undefined {\n const at =\n rest.length >= 3\n ? Number(rest[1]) * 2 ** 32 + (Number(rest[0]) >>> 0)\n : Number(BigInt.asIntN(64, BigInt(rest[0])));\n return at >= 0 && Number.isSafeInteger(at) ? at : undefined;\n}\n\nfunction readInto(sys: PositionalDeps['sys'], kfd: number, target: Uint8Array, at: number): number {\n let done = 0;\n while (done < target.length) {\n const got = sys.pread?.(kfd, target.length - done, at + done) ?? new Uint8Array(0);\n if (got.length === 0) break;\n target.set(got, done);\n done += got.length;\n }\n return done;\n}\n\nfunction positioned(original: Positional, write: boolean, deps: PositionalDeps): Positional {\n return (fd, iov, iovcnt, ...rest) => {\n const stream = deps.fs()?.getStream(Number(fd));\n const memory = deps.memory();\n const kfd = stream?.sliccKernelFile ? stream.sliccKernelFd : undefined;\n if (kfd === undefined || !memory || !(write ? deps.sys.pwrite : deps.sys.pread)) {\n return original(fd, iov, iovcnt, ...rest);\n }\n const at = offsetOf(rest);\n if (at === undefined) return wasiErrno('EINVAL');\n const view = new DataView(memory.buffer);\n let done = 0;\n try {\n for (let i = 0; i < Number(iovcnt); i++) {\n const ptr = view.getUint32(Number(iov) + i * 8, true);\n const len = view.getUint32(Number(iov) + i * 8 + 4, true);\n const part = new Uint8Array(memory.buffer, ptr, len);\n const moved = write\n ? (deps.sys.pwrite?.(kfd, part.slice(), at + done) ?? 0)\n : readInto(deps.sys, kfd, part, at + done);\n done += moved;\n if (moved < len) break;\n }\n } catch (err) {\n return errnoOf(err);\n }\n view.setUint32(Number(rest[rest.length - 1]), done, true);\n return 0;\n };\n}\n\nexport function positionalIo(imports: WebAssembly.Imports, deps: PositionalDeps): void {\n for (const namespace of namespaces(imports)) {\n for (const [name, write] of [\n ['fd_pread', false],\n ['fd_pwrite', true],\n ] as const) {\n const key = keyOf(namespace, name, deps.glue);\n if (key !== undefined) {\n namespace[key] = positioned(namespace[key] as Positional, write, deps);\n }\n }\n }\n}\n\nconst PROT_WRITE = 2;\nconst MAP_PRIVATE = 2;\nconst MAP_TYPE = 0xf;\nconst O_WRONLY = 1;\nconst MAP_ALIGN = 65536;\n\ntype Mmap = (\n stream: ProcessStream,\n length: number,\n position: number,\n prot: number,\n flags: number\n) => { ptr: number; allocated: boolean };\n\nexport type Memalign = (alignment: number, size: number) => number;\n\nexport interface MmapDeps {\n sys: Pick<ProcessSys, 'pread'>;\n memory: () => WebAssembly.Memory | undefined;\n memalign: () => Memalign | undefined;\n}\n\nfunction staging(Fs: ProcessFs, length: number): Uint8Array {\n try {\n return new Uint8Array(length);\n } catch {\n throw new Fs.ErrnoError(wasiErrno('ENOMEM'));\n }\n}\n\nexport function useFileMmap(Fs: ProcessFs, deps: MmapDeps): void {\n const fs = Fs as ProcessFs & { mmap?: Mmap };\n const mmap = fs.mmap;\n if (typeof mmap !== 'function') return;\n fs.mmap = (stream, length, position, prot, flags) => {\n const memalign = deps.memalign();\n const memory = deps.memory();\n const shared = (flags & MAP_TYPE) !== MAP_PRIVATE && (prot & PROT_WRITE) !== 0;\n const kfd = stream.sliccKernelFile ? stream.sliccKernelFd : undefined;\n if (shared && kfd !== undefined) throw new Fs.ErrnoError(wasiErrno('ENODEV'));\n if (\n (stream.stream_ops.mmap && kfd === undefined) ||\n !memalign ||\n !memory ||\n length <= 0 ||\n shared ||\n (stream.flags & O_ACCMODE) === O_WRONLY ||\n !Fs.isFile(stream.node.mode)\n ) {\n return mmap.call(fs, stream, length, position, prot, flags);\n }\n const data = staging(Fs, length);\n let done = 0;\n try {\n if (kfd !== undefined) done = readInto(deps.sys, kfd, data, position);\n else {\n for (let got = 1; done < length && got > 0; done += got) {\n got = Fs.read(stream, data, done, length - done, position + done);\n }\n }\n } catch (err) {\n throw new Fs.ErrnoError(errnoOf(err));\n }\n const size = Math.ceil(length / MAP_ALIGN) * MAP_ALIGN;\n const ptr = memalign(MAP_ALIGN, size);\n if (!ptr) throw new Fs.ErrnoError(wasiErrno('ENOMEM'));\n const target = new Uint8Array(memory.buffer, ptr, size);\n target.fill(0);\n target.set(data.subarray(0, done));\n return { ptr, allocated: true };\n };\n}\n\nexport function wasmMemory(\n instance: WebAssembly.Instance,\n imports: WebAssembly.Imports\n): WebAssembly.Memory | undefined {\n const isMemory = (v: unknown): v is WebAssembly.Memory => v instanceof WebAssembly.Memory;\n const exported = Object.values(instance.exports).find(isMemory);\n if (exported) return exported;\n for (const namespace of Object.values(imports)) {\n const found = Object.values(namespace ?? {}).find(isMemory);\n if (found) return found;\n }\n return undefined;\n}\n\nfunction absoluteOf(path: string, cwd: string): string {\n const parts: string[] = [];\n for (const part of `${path.startsWith('/') ? '' : cwd}/${path}`.split('/')) {\n if (part === '' || part === '.') continue;\n if (part === '..') parts.pop();\n else parts.push(part);\n }\n return `/${parts.join('/')}`;\n}\n\nexport function fdOfPath(path: string, cwd: string): number | undefined {\n const abs = absoluteOf(path, cwd);\n const std = ['/dev/stdin', '/dev/stdout', '/dev/stderr'].indexOf(abs);\n if (std >= 0) return std;\n const m = /^\\/(?:dev|proc\\/self)\\/fd\\/(\\d+)$/.exec(abs);\n return m ? Number(m[1]) : undefined;\n}\n\nconst DIR_MODE = 0o040555;\nconst LINK_MODE = 0o120700;\n\nfunction syntheticAttr(mode: number, ino: number): object {\n const now = new Date();\n return {\n dev: 1,\n ino,\n mode,\n nlink: 1,\n uid: 0,\n gid: 0,\n rdev: 0,\n size: 0,\n atime: now,\n mtime: now,\n ctime: now,\n blksize: 4096,\n blocks: 0,\n };\n}\n\ninterface FdDirNode {\n id?: number;\n node_ops?: {\n lookup?: (parent: FdDirNode, name: string) => FdDirNode;\n getattr?: (node: FdDirNode) => object;\n };\n}\n\nfunction describeFdDir(Fs: ProcessFs): void {\n let dir: FdDirNode | undefined;\n try {\n dir = Fs.lookupPath?.('/proc/self/fd', { follow: true })?.node as FdDirNode | undefined;\n } catch {\n return;\n }\n const ops = dir?.node_ops;\n const lookup = ops?.lookup;\n if (!dir || !lookup || ops.getattr) return;\n dir.node_ops = {\n ...ops,\n getattr: () => syntheticAttr(DIR_MODE, 1),\n lookup: (parent, name) => {\n const entry = lookup(parent, name);\n entry.node_ops = {\n ...entry.node_ops,\n getattr: () => syntheticAttr(LINK_MODE, entry.id ?? 0),\n };\n return entry;\n },\n };\n}\n\ninterface DeviceFs {\n analyzePath?: (path: string) => { exists: boolean };\n registerDevice?: (dev: number, ops: object) => void;\n mkdev?: (path: string, mode: number, dev: number) => unknown;\n makedev?: (major: number, minor: number) => number;\n}\n\nconst CHAR_DEVICE = 0o20666;\n\nexport function useZeroDevices(Fs: ProcessFs): void {\n const { analyzePath, registerDevice, mkdev, makedev } = Fs as unknown as DeviceFs;\n if (!analyzePath || !registerDevice || !mkdev || !makedev) return;\n const zeros = (_s: unknown, buffer: Uint8Array, offset: number, length: number) => {\n buffer.fill(0, offset, offset + length);\n return length;\n };\n const devices = [\n ['/dev/zero', 5, (_s: unknown, _b: Uint8Array, _o: number, length: number) => length],\n [\n '/dev/full',\n 7,\n (_s: unknown, _b: Uint8Array, _o: number, length: number) => {\n if (length > 0) throw new Fs.ErrnoError(wasiErrno('ENOSPC'));\n return 0;\n },\n ],\n ] as const;\n for (const [path, minor, write] of devices) {\n if (analyzePath.call(Fs, path).exists) continue;\n const dev = makedev.call(Fs, 1, minor);\n registerDevice.call(Fs, dev, { read: zeros, write, llseek: () => 0 });\n mkdev.call(Fs, path, CHAR_DEVICE, dev);\n }\n}\n\ninterface RemovalFs {\n unlink?(path: string): void;\n rmdir?(path: string): void;\n sliccCred?: { euid: number };\n}\n\ninterface FifoOpenFs {\n sliccOpenFifo?: (stream: ProcessStream, path: string) => void;\n open?: (path: unknown, flags: unknown, ...rest: unknown[]) => unknown;\n lookupPath?: (path: string, opts?: { follow?: boolean }) => { node: { mode: number } };\n}\n\nconst O_TRUNC = 0o1000;\nconst S_IFMT_BITS = 0o170000;\nconst S_IFIFO_BITS = 0o010000;\n\nfunction namesFifo(fs: FifoOpenFs, path: string, flags: number): boolean {\n try {\n const { node } = fs.lookupPath?.(path, { follow: true }) ?? { node: { mode: 0 } };\n return (node.mode & S_IFMT_BITS) === S_IFIFO_BITS;\n } catch (err) {\n const { errno, code } = (err ?? {}) as { errno?: unknown; code?: unknown };\n const errnum = typeof errno === 'number' ? errno : wasiErrno(String(code));\n if (REFUSED.has(errnum) && (flags & OWN_ERRORS) === 0) throw err;\n return false;\n }\n}\n\nconst REFUSED: ReadonlySet<number> = new Set([wasiErrno('EACCES'), wasiErrno('EPERM')]);\nconst OWN_ERRORS = 0o200 | 0o400000;\n\nexport function useFifoOpens(\n Fs: ProcessFs,\n attach?: (stream: ProcessStream, path: string) => void\n): void {\n const fs = Fs as unknown as FifoOpenFs;\n if (attach) fs.sliccOpenFifo = attach;\n const open = fs.open;\n if (typeof open !== 'function' || typeof fs.lookupPath !== 'function') return;\n fs.open = (path, flags, ...rest) => {\n const truncates = typeof path === 'string' && typeof flags === 'number' && flags & O_TRUNC;\n const kept =\n truncates && namesFifo(fs, path as string, flags as number)\n ? (flags as number) & ~O_TRUNC\n : flags;\n return open.call(Fs, path, kept, ...rest);\n };\n}\n\nexport function useDevRemoval(Fs: ProcessFs): void {\n const fs = Fs as unknown as RemovalFs;\n for (const name of ['unlink', 'rmdir'] as const) {\n const remove = fs[name];\n if (typeof remove !== 'function') continue;\n fs[name] = (path: string) => {\n const refused = devRemoval(absoluteOf(path, Fs.cwd()), fs.sliccCred);\n if (refused) throw new Fs.ErrnoError(wasiErrno(refused));\n remove.call(Fs, path);\n };\n }\n}\n\nfunction linkStdio(Fs: ProcessFs): void {\n const { unlink, symlink } = Fs as { unlink?: (path: string) => void } & ProcessFs;\n if (!unlink || !symlink) return;\n for (const [fd, name] of ['stdin', 'stdout', 'stderr'].entries()) {\n try {\n unlink.call(Fs, `/dev/${name}`);\n } catch {}\n try {\n symlink.call(Fs, `/proc/self/fd/${fd}`, `/dev/${name}`);\n } catch {}\n }\n}\n\nexport function useDevFd(Fs: ProcessFs): void {\n if (typeof Fs.open !== 'function') return;\n try {\n Fs.symlink?.('/proc/self/fd', '/dev/fd');\n } catch {}\n linkStdio(Fs);\n describeFdDir(Fs);\n const fdOf = (path: unknown): number | undefined =>\n typeof path === 'string' ? fdOfPath(path, Fs.cwd()) : undefined;\n const target = (fd: number): ProcessStream => {\n const stream = Fs.getStream(fd);\n if (!stream) throw new Fs.ErrnoError(wasiErrno('EBADF'));\n return stream;\n };\n const open = Fs.open.bind(Fs);\n Fs.open = (path, flags, mode) => {\n const fd = fdOf(path);\n if (fd === undefined) return open(path, flags, mode);\n const copy = Fs.dupStream(target(fd), -1);\n setCloseOnExec(copy, typeof flags === 'number' && (flags & O_CLOEXEC) !== 0);\n return copy;\n };\n const { stat, fstat } = Fs;\n if (typeof stat !== 'function' || typeof fstat !== 'function') return;\n Fs.stat = (path, dontFollow) => {\n const fd = dontFollow ? undefined : fdOf(path);\n if (fd === undefined) return stat.call(Fs, path, dontFollow);\n target(fd);\n return fstat.call(Fs, fd);\n };\n}\n\nconst O_ACCMODE = 0o3;\nconst O_CREAT = 0o100;\nconst O_EXCL = 0o200;\n\nconst field = (text: string) =>\n (text || 'none').replace(/[\\s\\\\]/g, (c) => `\\\\${c.charCodeAt(0).toString(8).padStart(3, '0')}`);\n\nlet pinnedRoot: string | undefined;\n\nconst rootKind = (): string => (globalThis.navigator?.storage ? 'opfs' : 'memory');\n\nexport function pinRootKind(): void {\n pinnedRoot = rootKind();\n}\n\nexport function mountTable(mounts: MountLine[] = []): string {\n const root = pinnedRoot ?? rootKind();\n const lines = [`${root} / ${root} rw 0 0`, 'devfs /dev devfs rw 0 0', 'proc /proc proc rw 0 0'];\n for (const m of mounts) {\n const options = Object.entries(m.options).map(([k, v]) => (v === '' ? k : `${k}=${v}`));\n if (m.state !== 'ok') options.push(m.state);\n const access = options.includes('ro') ? [] : ['rw'];\n lines.push(\n `${field(m.source)} ${field(m.target)} ${m.type} ${[...access, ...options].join(',')} 0 0`\n );\n }\n return `${lines.join('\\n')}\\n`;\n}\n\nconst NAME = /^[a-z_][a-z0-9_-]*$/i;\n\nexport function accounts(env: Record<string, string> = {}): { passwd: string; group: string } {\n const user = env.USER ?? 'web_user';\n const name = NAME.test(user) && user !== 'root' ? user : 'user';\n const home = env.HOME || '/home';\n return {\n passwd: `root:x:0:0:root:/root:/bin/sh\\n${name}:x:1000:1000:${name}:${home}:/bin/bash\\n`,\n group: `root:x:0:\\n${name}:x:1000:\\n`,\n };\n}\n\nexport function useMounts(Fs: ProcessFs, env: Record<string, string> = {}, live = false): void {\n const { writeFile, mkdirTree } = Fs;\n if (typeof Fs.open !== 'function' || typeof writeFile !== 'function') return;\n const { passwd, group } = accounts(env);\n const backing: Record<string, string> = { '/etc/mtab': '/proc/mounts' };\n const defaults: Record<string, string> = {};\n try {\n if (!live) writeFile.call(Fs, '/proc/mounts', mountTable());\n } catch {\n return;\n }\n try {\n mkdirTree.call(Fs, '/dev/.etc');\n const files = {\n passwd,\n group,\n hosts: hostsFile(hostnameOf(env)),\n hostname: `${hostnameOf(env)}\\n`,\n };\n for (const [name, text] of Object.entries(files)) {\n writeFile.call(Fs, `/dev/.etc/${name}`, text);\n backing[`/etc/${name}`] = `/dev/.etc/${name}`;\n defaults[`/etc/${name}`] = text;\n }\n } catch {}\n const open = Fs.open.bind(Fs);\n const seed = (path: string, text: string): void => {\n let stream: ProcessStream;\n try {\n stream = open(path, O_WRONLY | O_CREAT | O_EXCL, 0o644);\n } catch {\n return;\n }\n try {\n const bytes = new TextEncoder().encode(text);\n Fs.write(stream, bytes, 0, bytes.length);\n } finally {\n Fs.closeStream(stream.fd);\n }\n };\n Fs.open = (path, flags, mode) => {\n const instead = backing[path];\n const text = defaults[path];\n if (text !== undefined && (flags & (O_ACCMODE | O_CREAT)) !== 0) seed(path, text);\n if (!instead || (flags & (O_ACCMODE | O_CREAT)) !== 0) return open(path, flags, mode);\n try {\n return open(path, flags, mode);\n } catch (e) {\n if ((e as { errno?: unknown })?.errno !== wasiErrno('ENOENT')) throw e;\n return open(instead, flags, mode);\n }\n };\n}\n\nconst AT_FDCWD = -100;\nconst AT_EACCESS = 0x200;\n\ninterface AccessFs {\n lookupPath?(path: string, opts: { follow: boolean }): { node: LiveFsNode };\n cwd?(): string;\n getStream?(fd: number): { path?: string } | null | undefined;\n}\n\nfunction cString(memory: WebAssembly.Memory, at: number): string {\n const bytes = new Uint8Array(memory.buffer, at);\n return new TextDecoder().decode(bytes.subarray(0, bytes.indexOf(0)));\n}\n\nfunction baseOf(Fs: AccessFs, dirfd: number): string {\n return dirfd === AT_FDCWD ? (Fs.cwd?.() ?? '/') : (Fs.getStream?.(dirfd)?.path ?? '/');\n}\n\nconst W_ACCESS = 2;\nconst X_ACCESS = 1;\n\nfunction readonlyRefusal(\n Fs: AccessFs,\n memory: WebAssembly.Memory,\n call: { dirfd: number; path: number; amode: number; flags: number }\n): number {\n if (!(call.amode & W_ACCESS)) return 0;\n try {\n const name = cString(memory, call.path);\n const abs = name.startsWith('/') ? name : `${baseOf(Fs, call.dirfd)}/${name}`;\n const follow = (call.flags & AT_SYMLINK_NOFOLLOW) === 0;\n const { node } = (Fs.lookupPath as NonNullable<AccessFs['lookupPath']>).call(Fs, abs, {\n follow,\n });\n const bridge = node.live ? node.mount.opts.bridge : undefined;\n type Stat = (path: string) => { readonly?: boolean };\n const stats = bridge as { stat?: Stat; lstat?: Stat } | undefined;\n const stat = follow ? stats?.stat : stats?.lstat;\n return stat?.call(stats, liveNodePath(node)).readonly ? -wasiErrno('EROFS') : 0;\n } catch {\n return 0;\n }\n}\n\nfunction kernelChecks(\n Fs: AccessFs,\n memory: WebAssembly.Memory,\n call: { dirfd: number; path: number; amode: number; flags: number }\n): number {\n const name = cString(memory, call.path);\n const abs = name.startsWith('/') ? name : `${baseOf(Fs, call.dirfd)}/${name}`;\n const lookupPath = Fs.lookupPath as NonNullable<AccessFs['lookupPath']>;\n const { node } = lookupPath.call(Fs, abs, { follow: (call.flags & AT_SYMLINK_NOFOLLOW) === 0 });\n const bridge = node.live ? node.mount.opts.bridge : undefined;\n if (!bridge?.owners || !bridge.access) return 0;\n const kind = call.flags & AT_EACCESS ? 'eaccess' : 'access';\n bridge.access(liveNodePath(node), call.amode, kind, (call.flags & AT_SYMLINK_NOFOLLOW) !== 0);\n return 0;\n}\n\nexport function goneCwdGetcwd(\n imports: WebAssembly.Imports,\n fs: () => { sliccCwdGone?(): boolean } | undefined,\n glue?: KernelImports\n): void {\n wrapImport(\n imports,\n 'getcwd',\n glue,\n (own) =>\n (...args: number[]) =>\n fs()?.sliccCwdGone?.() === true ? -44 : own(...args),\n true\n );\n}\n\nexport function kernelAccess(\n imports: WebAssembly.Imports,\n fs: () => ProcessFs | undefined,\n memory: () => WebAssembly.Memory | undefined,\n glue?: KernelImports\n): void {\n wrapImport(imports, 'faccessat', glue, (own) => (dirfd, path, amode, flags) => {\n const Fs = fs() as AccessFs | undefined;\n const heap = memory();\n const call = { dirfd, path, amode: amode & 7, flags };\n const refused = Fs?.lookupPath && heap ? readonlyRefusal(Fs, heap, call) : 0;\n if (refused !== 0) return refused;\n const rc = own(dirfd, path, amode, flags);\n if (rc !== 0 || !Fs?.lookupPath || !heap) return rc;\n try {\n return kernelChecks(Fs, heap, { dirfd, path, amode: amode & 7, flags });\n } catch (err) {\n return -errnoOf(err);\n }\n });\n}\n\nconst AT_SYMLINK_FOLLOW = 0x400;\n\nexport function kernelLink(\n imports: WebAssembly.Imports,\n fs: () => ProcessFs | undefined,\n memory: () => WebAssembly.Memory | undefined,\n glue?: KernelImports\n): void {\n wrapImport(\n imports,\n 'linkat',\n glue,\n (own) => (olddirfd, oldpath, newdirfd, newpath, flags) => {\n const Fs = fs() as (AccessFs & Partial<LiveLinkFs>) | undefined;\n const heap = memory();\n if (!Fs?.lookupPath || !heap) return own(olddirfd, oldpath, newdirfd, newpath, flags);\n const at = (dirfd: number, ptr: number) => {\n const name = cString(heap, ptr);\n return name.startsWith('/') ? name : `${baseOf(Fs, dirfd)}/${name}`;\n };\n try {\n const from = at(olddirfd, oldpath);\n const to = at(newdirfd, newpath);\n const follow = (flags & AT_SYMLINK_FOLLOW) !== 0;\n if (linkLive(Fs as LiveLinkFs, from, to, follow)) return 0;\n } catch (err) {\n return -errnoOf(err);\n }\n return own(olddirfd, oldpath, newdirfd, newpath, flags);\n },\n true\n );\n}\n\ninterface CreationFs extends AccessFs {\n sliccCred?: { euid: number };\n}\n\nfunction refusedCreation(Fs: CreationFs, heap: WebAssembly.Memory, dirfd: number, ptr: number) {\n const name = cString(heap, ptr);\n const path = absoluteOf(name, name.startsWith('/') ? '/' : baseOf(Fs, dirfd));\n const refused = devCreation(path, Fs.sliccCred);\n if (!refused || !Fs.lookupPath) return 0;\n try {\n Fs.lookupPath(path, { follow: false });\n return 0;\n } catch {\n return -wasiErrno(refused);\n }\n}\n\nexport function devCreations(\n imports: WebAssembly.Imports,\n fs: () => ProcessFs | undefined,\n memory: () => WebAssembly.Memory | undefined,\n glue?: KernelImports\n): void {\n const check = (dirfd: number, ptr: number) => {\n const Fs = fs() as CreationFs | undefined;\n const heap = memory();\n return Fs && heap ? refusedCreation(Fs, heap, dirfd, ptr) : 0;\n };\n wrapImport(\n imports,\n 'openat',\n glue,\n (own) => (dirfd, path, flags, varargs) =>\n (flags & O_CREAT && check(dirfd, path)) || own(dirfd, path, flags, varargs),\n true\n );\n wrapImport(\n imports,\n 'mkdirat',\n glue,\n (own) => (dirfd, path, mode) => check(dirfd, path) || own(dirfd, path, mode),\n true\n );\n wrapImport(\n imports,\n 'mknodat',\n glue,\n (own) => (dirfd, path, mode, dev) => check(dirfd, path) || own(dirfd, path, mode, dev),\n true\n );\n wrapImport(\n imports,\n 'symlinkat',\n glue,\n (own) => (target, dirfd, path) => check(dirfd, path) || own(target, dirfd, path),\n true\n );\n}\n\nconst UTS_FIELD = 65;\n\nexport function kernelUname(\n imports: WebAssembly.Imports,\n hostname: string,\n memory: () => WebAssembly.Memory | undefined,\n glue?: KernelImports\n): void {\n const fields = ['Linux', hostname, OS_RELEASE, '#1 SMP PREEMPT_DYNAMIC', 'wasm32', '(none)'];\n const encoded = fields.map((f) => new TextEncoder().encode(f).subarray(0, UTS_FIELD - 1));\n wrapImport(\n imports,\n 'uname',\n glue,\n (own) => (buf) => {\n const heap = memory();\n if (!buf || !heap) return own(buf);\n const bytes = new Uint8Array(heap.buffer, buf, UTS_FIELD * fields.length);\n bytes.fill(0);\n encoded.forEach((field, i) => {\n bytes.set(field, i * UTS_FIELD);\n });\n return 0;\n },\n true\n );\n}\n\nconst CHAR_DEVICES = new Set([\n '/dev/null',\n '/dev/zero',\n '/dev/full',\n '/dev/random',\n '/dev/urandom',\n '/dev/tty',\n]);\n\nconst DEVICE_MODES: ReadonlyArray<[string, number]> = [\n ['/', 0o755],\n ['/dev', 0o755],\n ['/dev/null', 0o666],\n ['/dev/zero', 0o666],\n ['/dev/full', 0o666],\n ['/dev/random', 0o666],\n ['/dev/urandom', 0o666],\n ['/dev/tty', 0o666],\n ['/dev/shm', 0o1777],\n];\n\ninterface ChmodFs {\n chmod?(path: string, mode: number): void;\n}\n\ninterface ChdirFs extends AccessFs {\n chdir?(path: string): void;\n sliccChdirAt?(path: string): void;\n isDir?(mode: number): boolean;\n ErrnoError?: new (errno: number) => Error;\n}\n\nfunction kernelChdir(Fs: ChdirFs): void {\n const { chdir, lookupPath, ErrnoError } = Fs;\n if (!chdir || !lookupPath || !ErrnoError) return;\n Fs.sliccChdirAt = chdir;\n Fs.chdir = (path: string) => {\n const { node } = lookupPath.call(Fs, path, { follow: true });\n const directory = Fs.isDir?.(node.mode) === true;\n const bridge = node.live && directory ? node.mount.opts.bridge : undefined;\n try {\n bridge?.access?.(liveNodePath(node), X_ACCESS, 'eaccess', false);\n } catch (err) {\n throw new ErrnoError(errnoOf(err));\n }\n chdir.call(Fs, path);\n };\n}\n\nexport function linuxDevices(Fs: ProcessFs, owners = true): void {\n if (owners) {\n (Fs as { ignorePermissions?: boolean }).ignorePermissions = true;\n kernelChdir(Fs as unknown as ChdirFs);\n }\n const { chmod } = Fs as unknown as ChmodFs;\n if (!chmod) return;\n for (const [path, mode] of DEVICE_MODES) {\n if (!owners && !CHAR_DEVICES.has(path)) continue;\n try {\n chmod.call(Fs, path, mode);\n } catch {}\n }\n}\n", "import { ROOT } from '../kernel/cred.ts';\nimport {\n type MountLine,\n mayTrace,\n type ProcessInfo,\n type ProcessListing,\n} from '../kernel/proc-info.ts';\nimport { OS_RELEASE, procVersion } from '../version.ts';\nimport { mountTable } from './process-fds.ts';\n\nconst HZ = 100;\nconst DIR_MODE = 0o40555;\nconst FILE_MODE = 0o100444;\nconst LINK_MODE = 0o120777;\nconst ENOENT = 44;\nconst EINVAL = 28;\nconst EACCES = 2;\nconst UID = 1000;\nconst KIB = 1024;\nconst FALLBACK_MEMORY = 4 * KIB * KIB * KIB;\n\nexport const PID_FILES = ['cmdline', 'comm', 'stat', 'statm', 'status'] as const;\nexport const SYSTEM_FILES = ['loadavg', 'meminfo', 'stat', 'uptime', 'version'] as const;\n\nexport type ProcSysFile = string | ((listing: ProcessListing) => string);\n\nexport interface ProcSysTree {\n readonly [name: string]: ProcSysFile | ProcSysTree;\n}\n\nexport const SYS_TREE: ProcSysTree = {\n kernel: {\n osrelease: `${OS_RELEASE}\\n`,\n ostype: 'Linux\\n',\n slicc_wasm_memories: (listing) =>\n `${listing.wasm?.live ?? 0} ${listing.wasm?.ceiling ?? 0} ${listing.wasm?.source ?? 'none'}\\n`,\n slicc_shared_root: (listing) => `${listing.peers ?? 0}\\n`,\n slicc_fs_calls: (listing) => `${listing.fsCalls ?? 0}\\n`,\n slicc_opfs_calls: (listing) => `${listing.opfsCalls ?? 0}\\n`,\n slicc_opfs_ops: (listing) => `${listing.opfsOps ?? 0}\\n`,\n slicc_cwd_checks: (listing) => `${listing.cwdChecks ?? 0}\\n`,\n slicc_rename_ack_busy: (listing) => `${listing.renameAcks?.busy ?? 0}\\n`,\n slicc_stale_fds: (listing) => `${listing.staleFds ?? 0}\\n`,\n slicc_rename_acks: (listing) => {\n const samples = [...(listing.renameAcks?.ackMs ?? [])].sort((a, b) => a - b);\n const median = samples[Math.floor(samples.length / 2)] ?? 0;\n const most = samples.at(-1) ?? 0;\n const waits = listing.renameAcks?.waits ?? 0;\n const queries = listing.renameAcks?.queries ?? 0;\n return `${listing.renameAcks?.acks ?? 0} ${median.toFixed(1)} ${most.toFixed(1)} ${waits} ${queries}\\n`;\n },\n },\n};\n\nfunction isSysFile(at: ProcSysFile | ProcSysTree): at is ProcSysFile {\n return typeof at === 'string' || typeof at === 'function';\n}\n\nexport function sysEntry(parts: readonly string[]): ProcSysFile | ProcSysTree | undefined {\n let at: ProcSysFile | ProcSysTree | undefined = SYS_TREE;\n for (const part of parts) {\n if (isSysFile(at) || !Object.hasOwn(at, part)) return undefined;\n at = at[part];\n }\n return at;\n}\n\nexport function sysText(file: ProcSysFile, listing: () => ProcessListing): string {\n return typeof file === 'string' ? file : file(listing());\n}\n\ntype PidFile = (typeof PID_FILES)[number];\ntype SystemFile = (typeof SYSTEM_FILES)[number];\n\nexport interface ProcSys {\n procList?(): ProcessListing;\n mountList?(): MountLine[];\n}\n\nexport interface MemorySource {\n deviceMemory?: number;\n usedHeap?: number;\n}\n\nexport function commOf(info: ProcessInfo): string {\n const name = info.argv[0] ?? '';\n return name.slice(name.lastIndexOf('/') + 1).slice(0, 15);\n}\n\nexport function ttyNumber(tty: string | null): number {\n const pts = tty && /^\\/dev\\/pts\\/(\\d+)$/.exec(tty);\n if (pts) return (136 << 8) | Number(pts[1]);\n const vt = tty && /^\\/dev\\/tty(\\d+)$/.exec(tty);\n return vt ? (4 << 8) | Number(vt[1]) : 0;\n}\n\nfunction pages(bytes: number): number {\n return Math.ceil(bytes / 4096);\n}\n\nfunction ticks(ms: number): number {\n return Math.max(0, Math.floor((ms * HZ) / 1000));\n}\n\nexport function pidStat(info: ProcessInfo, boot: number, state: string = info.state): string {\n const fields = [\n info.pid,\n `(${commOf(info)})`,\n state,\n info.ppid,\n info.pgid,\n info.sid,\n ttyNumber(info.tty),\n info.tty ? info.pgid : -1,\n 0x400000,\n 0,\n 0,\n 0,\n 0,\n ticks(info.utime ?? 0),\n ticks(info.stime ?? 0),\n ticks(info.cutime ?? 0),\n ticks(info.cstime ?? 0),\n 20,\n 0,\n 1,\n 0,\n ticks(info.started - boot),\n info.memory,\n pages(info.memory),\n '18446744073709551615',\n ...Array<number>(12).fill(0),\n 17,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n ...Array<number>(7).fill(0),\n 0,\n ];\n return `${fields.join(' ')}\\n`;\n}\n\nconst sigMask = (mask = 0): string => (mask >>> 1).toString(16).padStart(16, '0');\n\nconst STATES = {\n S: 'S (sleeping)',\n T: 'T (stopped)',\n Z: 'Z (zombie)',\n} as const;\n\nconst tagLine = (tag: string): string =>\n `Tag:\\t${tag.replaceAll('\\n', '\\\\n').replaceAll('\\t', '\\\\t').replaceAll('\\r', '\\\\r')}`;\n\nexport function taskStat(info: ProcessInfo, tid: number, boot: number): string | undefined {\n const thread = (info.threads ?? [{ tid: 1, state: info.state }]).find((t) => t.tid === tid);\n return thread && pidStat({ ...info, pid: tid }, boot, thread.state);\n}\n\nexport function taskIds(info: ProcessInfo): number[] {\n return (info.threads ?? [{ tid: 1 }]).map((t) => t.tid);\n}\n\nexport function pidStatus(info: ProcessInfo): string {\n const state = STATES[info.state];\n const c = info.cred ?? ROOT;\n const ids = (r: number, e: number, s: number) => `${r}\\t${e}\\t${s}\\t${e}`;\n return [\n `Name:\\t${commOf(info)}`,\n `Umask:\\t${(info.umask ?? 0o022).toString(8).padStart(4, '0')}`,\n `State:\\t${state}`,\n `Tgid:\\t${info.pid}`,\n 'Ngid:\\t0',\n `Pid:\\t${info.pid}`,\n `PPid:\\t${info.ppid}`,\n 'TracerPid:\\t0',\n `Uid:\\t${ids(c.ruid, c.euid, c.suid)}`,\n `Gid:\\t${ids(c.rgid, c.egid, c.sgid)}`,\n ...(info.tags ?? (info.tag !== undefined ? [info.tag] : [])).map(tagLine),\n 'FDSize:\\t64',\n `VmSize:\\t${Math.ceil(info.memory / KIB)} kB`,\n `VmRSS:\\t${Math.ceil(info.memory / KIB)} kB`,\n `Groups:\\t${c.groups.join(' ')}`,\n `NSpid:\\t${info.pid}`,\n `NSpgid:\\t${info.pgid}`,\n `NSsid:\\t${info.sid}`,\n 'Threads:\\t1',\n 'SigQ:\\t0/0',\n 'SigPnd:\\t0000000000000000',\n 'ShdPnd:\\t0000000000000000',\n `SigBlk:\\t${sigMask(info.sigBlk)}`,\n `SigIgn:\\t${sigMask(info.sigIgn)}`,\n `SigCgt:\\t${sigMask(info.sigCgt)}`,\n '',\n ].join('\\n');\n}\n\nexport function pidFile(name: PidFile, info: ProcessInfo, boot: number): string {\n if (name === 'cmdline') return info.state === 'Z' ? '' : `${info.argv.join('\\0')}\\0`;\n if (name === 'comm') return `${commOf(info)}\\n`;\n if (name === 'stat') return pidStat(info, boot);\n if (name === 'statm') {\n const p = pages(info.memory);\n return `${p} ${p} 0 0 0 ${p} 0\\n`;\n }\n return pidStatus(info);\n}\n\nexport function memoryInfo(source: MemorySource, used = 0): string {\n const total = source.deviceMemory ? source.deviceMemory * KIB * KIB * KIB : FALLBACK_MEMORY;\n const free = Math.max(0, total - used - (source.usedHeap ?? 0));\n const kb = (bytes: number) => `${Math.floor(bytes / KIB)} kB`;\n return [\n ['MemTotal', kb(total)],\n ['MemFree', kb(free)],\n ['MemAvailable', kb(free)],\n ['Buffers', kb(0)],\n ['Cached', kb(0)],\n ['SwapCached', kb(0)],\n ['Shmem', kb(0)],\n ['SReclaimable', kb(0)],\n ['SwapTotal', kb(0)],\n ['SwapFree', kb(0)],\n ]\n .map(([key, value]) => `${`${key}:`.padEnd(16)}${value.padStart(12)}`)\n .concat('')\n .join('\\n');\n}\n\nexport function systemFile(\n name: SystemFile,\n listing: ProcessListing,\n now: number,\n memory: MemorySource\n): string {\n if (name === 'version') return procVersion();\n const up = Math.max(0, now - listing.boot) / 1000;\n if (name === 'uptime') return `${up.toFixed(2)} ${up.toFixed(2)}\\n`;\n if (name === 'meminfo') {\n return memoryInfo(\n memory,\n listing.processes.reduce((sum, p) => sum + p.memory, 0)\n );\n }\n const live = listing.processes.filter((p) => p.state !== 'Z');\n if (name === 'loadavg') {\n const last = Math.max(0, ...listing.processes.map((p) => p.pid));\n const [one, five, fifteen] = (listing.load ?? [0, 0, 0]).map((n) => n.toFixed(2));\n return `${one} ${five} ${fifteen} 1/${live.length} ${last}\\n`;\n }\n const sum = (key: 'utime' | 'stime') =>\n listing.cpu?.[key] ?? listing.processes.reduce((n, p) => n + (p[key] ?? 0), 0);\n const user = ticks(sum('utime'));\n const system = ticks(sum('stime'));\n const idle = listing.cpu\n ? ticks(listing.cpu.idle)\n : Math.max(0, ticks(now - listing.boot) - user - system);\n return [\n `cpu ${user} 0 ${system} ${idle} 0 0 0 0 0 0`,\n `cpu0 ${user} 0 ${system} ${idle} 0 0 0 0 0 0`,\n 'intr 0',\n 'ctxt 0',\n `btime ${Math.floor(listing.boot / 1000)}`,\n `processes ${listing.processes.length}`,\n 'procs_running 1',\n 'procs_blocked 0',\n '',\n ].join('\\n');\n}\n\nexport function memorySource(scope: object = globalThis): MemorySource {\n const nav = (scope as { navigator?: { deviceMemory?: unknown } }).navigator;\n const perf = (scope as { performance?: { memory?: { usedJSHeapSize?: unknown } } }).performance;\n const deviceMemory = nav?.deviceMemory;\n const used = perf?.memory?.usedJSHeapSize;\n return {\n ...(typeof deviceMemory === 'number' && deviceMemory > 0 ? { deviceMemory } : {}),\n ...(typeof used === 'number' ? { usedHeap: used } : {}),\n };\n}\n\ninterface ProcNode {\n name: string;\n mode: number;\n id?: number;\n parent?: ProcNode;\n node_ops: {\n lookup?: (parent: ProcNode, name: string) => ProcNode;\n readdir?: (node: ProcNode) => string[];\n getattr?: (node: ProcNode) => object;\n setattr?: (node: ProcNode, attr: object) => void;\n readlink?: (node: ProcNode) => string;\n };\n stream_ops?: object;\n}\n\ninterface ProcStream {\n node: ProcNode;\n position: number;\n sliccProc?: Uint8Array;\n getdents?: string[] | null;\n fd?: number | null;\n}\n\ninterface DirStreamOps {\n open?: (stream: ProcStream) => void;\n dup?: (stream: ProcStream) => void;\n close?: (stream: ProcStream) => void;\n}\n\nexport interface ProcFs {\n lookupPath?(path: string, opts?: { follow?: boolean }): { node: object };\n createNode?(parent: object, name: string, mode: number, rdev: number): object;\n hashRemoveNode?(node: object): void;\n streams?: unknown[];\n ErrnoError: new (errno: number) => Error;\n}\n\nfunction attr(node: ProcNode): object {\n const now = new Date();\n return {\n dev: 3,\n ino: node.id,\n mode: node.mode,\n nlink: 1,\n uid: UID,\n gid: UID,\n rdev: 0,\n size: 0,\n atime: now,\n mtime: now,\n ctime: now,\n blksize: 4096,\n blocks: 0,\n };\n}\n\nfunction withPidFiles(names: string[], extra: string[]): string[] {\n return [...new Set([...names, ...PID_FILES, ...extra])];\n}\n\nfunction exeNodes(\n fresh: (parent: ProcNode, name: string, mode: number) => ProcNode,\n info: (target: number, own: boolean) => ProcessInfo | undefined,\n error: (errno?: number) => Error,\n self: number\n) {\n return {\n exeLink: (parent: ProcNode, target: number, own = false): ProcNode => {\n const of = info(target, own);\n const exe = of?.exe;\n if (!of || exe === undefined) throw error();\n const link = fresh(parent, 'exe', LINK_MODE);\n link.node_ops.readlink = () => {\n if (!mayTrace(info(self, true), of)) throw error(EACCES);\n return exe;\n };\n return link;\n },\n hasExe: (target: number, own = false): string[] =>\n info(target, own)?.exe === undefined ? [] : ['exe'],\n };\n}\n\nexport function useProcfs(Fs: ProcFs, sys: ProcSys, pid: number, memory = memorySource()): void {\n const { lookupPath, createNode, hashRemoveNode } = Fs;\n const procList = sys.procList?.bind(sys);\n if (!lookupPath || !createNode || !hashRemoveNode || !procList) return;\n let proc: ProcNode;\n let self: ProcNode;\n try {\n proc = lookupPath.call(Fs, '/proc', { follow: true }).node as ProcNode;\n self = lookupPath.call(Fs, '/proc/self', { follow: true }).node as ProcNode;\n } catch {\n return;\n }\n const error = (errno = ENOENT) => new Fs.ErrnoError(errno);\n const fresh = (parent: ProcNode, name: string, mode: number): ProcNode => {\n const node = createNode.call(Fs, parent, name, mode, 0) as ProcNode;\n hashRemoveNode.call(Fs, node);\n node.node_ops = { getattr: attr, setattr: () => {} };\n node.stream_ops = {\n llseek: (stream: ProcStream, offset: number, whence: number) => {\n const at = (whence === 1 ? stream.position : 0) + offset;\n if (at < 0) throw error(EINVAL);\n return at;\n },\n };\n return node;\n };\n const file = (parent: ProcNode, name: string, content: () => string): ProcNode => {\n const node = fresh(parent, name, FILE_MODE);\n node.stream_ops = {\n open: (stream: ProcStream) => {\n stream.sliccProc = new TextEncoder().encode(content());\n },\n read: (\n stream: ProcStream,\n buffer: Uint8Array,\n offset: number,\n length: number,\n at: number\n ) => {\n const data = stream.sliccProc ?? new Uint8Array(0);\n const chunk = data.subarray(at, at + length);\n buffer.set(chunk, offset);\n return chunk.length;\n },\n llseek: (stream: ProcStream, offset: number, whence: number) => {\n const end = stream.sliccProc?.length ?? 0;\n const at = (whence === 1 ? stream.position : whence === 2 ? end : 0) + offset;\n if (at < 0) throw error(EINVAL);\n return at;\n },\n };\n return node;\n };\n const find = (processes: ProcessInfo[], target: number, own: boolean) =>\n (own ? processes.find((p) => p.tid === target) : undefined) ??\n processes.find((p) => p.pid === target || p.tid === target);\n const infoOf = (target: number): ProcessInfo | undefined =>\n find(procList().processes, target, false);\n const pidContent =\n (target: number, name: PidFile, own = false) =>\n () => {\n const listing = procList();\n const info = find(listing.processes, target, own);\n if (!info) throw error();\n return pidFile(name, info, listing.boot);\n };\n const sysDir = (parent: ProcNode, name: string, tree: ProcSysTree): ProcNode => {\n const dir = fresh(parent, name, DIR_MODE);\n dir.node_ops.lookup = (at, child) => {\n if (!Object.hasOwn(tree, child)) throw error();\n const next = tree[child] as ProcSysFile | ProcSysTree;\n return isSysFile(next)\n ? file(at, child, () => sysText(next, procList))\n : sysDir(at, child, next);\n };\n dir.node_ops.readdir = () => ['.', '..', ...Object.keys(tree)];\n return dir;\n };\n const exe = exeNodes(fresh, (at, own) => find(procList().processes, at, own), error, pid);\n const pidNames = (names: string[]) => withPidFiles(names, exe.hasExe(pid, true));\n const pidDir = (name: string, target: number): ProcNode => {\n const dir = fresh(proc, name, DIR_MODE);\n dir.node_ops.lookup = (parent, child) => {\n if (child === 'exe') return exe.exeLink(parent, target);\n if (!(PID_FILES as readonly string[]).includes(child)) throw error();\n return file(parent, child, pidContent(target, child as PidFile));\n };\n dir.node_ops.readdir = () => ['.', '..', ...PID_FILES, ...exe.hasExe(target)];\n return dir;\n };\n const scans = new Map<ProcStream, Set<number>>();\n const listed = (target: number) => {\n let found = false;\n for (const [stream, pids] of scans) {\n if (Fs.streams && Fs.streams[stream.fd ?? -1] !== stream) scans.delete(stream);\n else found ||= pids.has(target);\n }\n return found;\n };\n const procOps = proc.node_ops;\n const lookup = procOps.lookup?.bind(procOps);\n const readdir = procOps.readdir?.bind(procOps);\n const listAll = (node: ProcNode) => {\n const names = new Set(readdir ? readdir(node) : ['.', '..']);\n for (const name of [...SYSTEM_FILES, 'mounts', 'sys']) names.add(name);\n for (const p of procList().processes) names.add(String(p.pid));\n return [...names];\n };\n proc.node_ops = {\n ...procOps,\n lookup: (parent, name) => {\n if (/^[1-9]\\d*$/.test(name)) {\n if (!infoOf(Number(name)) && !listed(Number(name))) throw error();\n return pidDir(name, Number(name));\n }\n if (name === 'mounts') return file(parent, name, () => mountTable(sys.mountList?.() ?? []));\n if (name === 'sys') return sysDir(parent, name, SYS_TREE);\n if ((SYSTEM_FILES as readonly string[]).includes(name)) {\n return file(parent, name, () =>\n systemFile(name as SystemFile, procList(), Date.now(), memory)\n );\n }\n if (!lookup) throw error();\n return lookup(parent, name);\n },\n readdir: (node) => listAll(node),\n };\n const track = (stream: ProcStream, names: string[] | null | undefined) => {\n let current = names;\n const remember = (list: string[]) =>\n scans.set(stream, new Set(list.filter((n) => /^[1-9]\\d*$/.test(n)).map(Number)));\n remember(current ?? []);\n Object.defineProperty(stream, 'getdents', {\n configurable: true,\n enumerable: true,\n get: () => current,\n set: (next: string[] | null) => {\n current = next;\n if (next) remember(next);\n },\n });\n };\n const dirOps = (proc.stream_ops ?? {}) as DirStreamOps;\n proc.stream_ops = {\n ...dirOps,\n open: (stream: ProcStream) => {\n dirOps.open?.(stream);\n track(stream, listAll(proc));\n },\n dup: (stream: ProcStream) => {\n dirOps.dup?.(stream);\n track(stream, stream.getdents);\n },\n close: (stream: ProcStream) => {\n scans.delete(stream);\n dirOps.close?.(stream);\n },\n };\n hashRemoveNode.call(Fs, self);\n const link = fresh(proc, 'self', LINK_MODE);\n const shownPid = () => String(find(procList().processes, pid, true)?.pid ?? pid);\n link.node_ops.readlink = shownPid;\n const procLookup = proc.node_ops.lookup as NonNullable<ProcNode['node_ops']['lookup']>;\n proc.node_ops.lookup = (parent, name) =>\n name === 'self' ? link : name === shownPid() ? self : procLookup(parent, name);\n const selfOps = self.node_ops;\n const selfLookup = selfOps.lookup?.bind(selfOps);\n const selfReaddir = selfOps.readdir?.bind(selfOps);\n self.node_ops = {\n ...selfOps,\n lookup: (parent, name) => {\n if (name === 'exe') return exe.exeLink(parent, pid, true);\n if ((PID_FILES as readonly string[]).includes(name)) {\n return file(parent, name, pidContent(pid, name as PidFile, true));\n }\n if (!selfLookup) throw error();\n return selfLookup(parent, name);\n },\n readdir: (node) => pidNames(selfReaddir ? selfReaddir(node) : ['.', '..']),\n };\n}\n", "import {\n fileIdentity,\n type MountLine,\n mayTrace,\n type ProcessInfo,\n type ProcessListing,\n} from '../../kernel/proc-info.ts';\nimport {\n type ChownArgs,\n type SyncFsBridgeStat,\n type SyncFsFileIo,\n type SyncFsPosixBridge,\n syncError,\n} from '../../realm/sync-fs-wire.ts';\nimport { mountTable } from '../process-fds.ts';\nimport {\n type MemorySource,\n memorySource,\n PID_FILES,\n pidFile,\n SYSTEM_FILES,\n sysEntry,\n sysText,\n systemFile,\n taskIds,\n taskStat,\n} from '../procfs.ts';\nimport { normalize, SHARED_TTL_MS } from './wasi-files.ts';\n\nexport interface ProcSource {\n procList(): ProcessListing;\n mountList(): MountLine[];\n}\n\ntype Node =\n | { kind: 'dir'; names: () => string[] }\n | { kind: 'link'; target: string; denied?: boolean; id?: string }\n | { kind: 'file'; content: () => string };\n\nconst DIR_MODE = 0o40555;\nconst FILE_MODE = 0o100444;\nconst LINK_MODE = 0o120777;\n\nconst PID_NAMES: readonly string[] = PID_FILES;\nconst SYSTEM_NAMES: readonly string[] = SYSTEM_FILES;\n\nexport function inProc(path: string): boolean {\n return path === '/proc' || path.startsWith('/proc/');\n}\n\nexport class ProcTree {\n private readonly source: ProcSource;\n private readonly pid: number;\n private readonly memory: MemorySource;\n\n constructor(source: ProcSource, pid: number, memory: MemorySource = memorySource()) {\n this.source = source;\n this.pid = pid;\n this.memory = memory;\n }\n\n private listing(): ProcessListing {\n return this.source.procList();\n }\n\n private alive(pid: number): boolean {\n return this.listing().processes.some((p) => p.pid === pid);\n }\n\n private node(parts: string[]): Node | undefined {\n const [top, leaf, ...rest] = parts;\n if (top === undefined) {\n return {\n kind: 'dir',\n names: () => [\n ...SYSTEM_NAMES,\n 'mounts',\n 'sys',\n 'self',\n ...this.listing().processes.map((p) => String(p.pid)),\n ],\n };\n }\n if (top === 'sys') {\n const entry = sysEntry(parts.slice(1));\n if (typeof entry === 'string' || typeof entry === 'function') {\n return { kind: 'file', content: () => sysText(entry, () => this.listing()) };\n }\n return entry && { kind: 'dir', names: () => Object.keys(entry) };\n }\n if (top === 'self') {\n return leaf === undefined ? { kind: 'link', target: String(this.pid) } : undefined;\n }\n if (leaf === undefined && top === 'mounts') {\n return { kind: 'file', content: () => mountTable(this.source.mountList()) };\n }\n if (leaf === undefined && SYSTEM_NAMES.includes(top)) {\n return {\n kind: 'file',\n content: () =>\n systemFile(top as (typeof SYSTEM_FILES)[number], this.listing(), Date.now(), this.memory),\n };\n }\n if (!/^[1-9]\\d*$/.test(top) || !this.alive(Number(top))) return undefined;\n if (leaf === 'task') return this.task(Number(top), rest);\n if (rest.length > 0) return undefined;\n if (leaf === undefined) {\n const exe = () => (this.info(Number(top))?.exe === undefined ? [] : ['exe']);\n return { kind: 'dir', names: () => [...PID_NAMES, ...exe(), 'task'] };\n }\n if (leaf === 'exe') return this.exe(Number(top));\n if (!PID_NAMES.includes(leaf)) return undefined;\n return {\n kind: 'file',\n content: () => {\n const listing = this.listing();\n const info = listing.processes.find((p) => p.pid === Number(top));\n if (!info) throw syncError('ENOENT', `/proc/${top}/${leaf}`);\n return pidFile(leaf as (typeof PID_FILES)[number], info, listing.boot);\n },\n };\n }\n\n private exe(pid: number): Node | undefined {\n const info = this.info(pid);\n if (info?.exe === undefined) return undefined;\n const denied = !mayTrace(this.ownInfo(), info);\n const id = info.exeId === undefined ? {} : { id: info.exeId };\n return { kind: 'link', target: info.exe, ...(denied ? { denied } : {}), ...id };\n }\n\n private ownInfo(): ProcessInfo | undefined {\n const processes = this.listing().processes;\n return processes.find((p) => p.tid === this.pid) ?? processes.find((p) => p.pid === this.pid);\n }\n\n private info(pid: number): ProcessInfo | undefined {\n return this.listing().processes.find((p) => p.pid === pid);\n }\n\n private task(pid: number, rest: string[]): Node | undefined {\n const [tid, leaf, ...more] = rest;\n const tids = () => taskIds(this.info(pid) as ProcessInfo);\n if (tid === undefined) return { kind: 'dir', names: () => tids().map(String) };\n if (!/^[1-9]\\d*$/.test(tid) || more.length > 0 || !tids().includes(Number(tid)))\n return undefined;\n if (leaf === undefined) return { kind: 'dir', names: () => ['stat'] };\n if (leaf !== 'stat') return undefined;\n return {\n kind: 'file',\n content: () => {\n const listing = this.listing();\n const info = listing.processes.find((p) => p.pid === pid);\n const line = info && taskStat(info, Number(tid), listing.boot);\n if (line === undefined) throw syncError('ENOENT', `/proc/${pid}/task/${tid}/stat`);\n return line;\n },\n };\n }\n\n private parts(path: string, follow: boolean): string[] {\n const parts = path\n .split('/')\n .filter((p) => p !== '')\n .slice(1);\n if (parts[0] === 'self' && (follow || parts.length > 1)) parts[0] = String(this.pid);\n return parts;\n }\n\n private find(path: string, follow: boolean): Node {\n const node = this.node(this.parts(path, follow));\n if (!node) throw syncError('ENOENT', path);\n return node;\n }\n\n stat(path: string, follow = true): SyncFsBridgeStat {\n const node = this.find(path, follow);\n const base = {\n isFile: false,\n isDirectory: false,\n size: 0,\n mtimeMs: Date.now(),\n readonly: true,\n };\n if (node.kind === 'dir') return { ...base, isDirectory: true, mode: DIR_MODE };\n if (node.kind === 'link') {\n return { ...base, isSymbolicLink: true, mode: LINK_MODE, size: node.target.length };\n }\n return { ...base, isFile: true, mode: FILE_MODE, size: this.bytes(node).length };\n }\n\n private bytes(node: Node): Uint8Array {\n return new TextEncoder().encode(node.kind === 'file' ? node.content() : '');\n }\n\n read(path: string): Uint8Array {\n const node = this.find(path, true);\n if (node.kind !== 'file') throw syncError('EISDIR', path);\n return this.bytes(node);\n }\n\n readdir(path: string): string[] {\n const node = this.find(path, true);\n if (node.kind !== 'dir') throw syncError('ENOTDIR', path);\n return node.names();\n }\n\n escape(path: string): string | undefined {\n return this.escapeTo(path)?.target;\n }\n\n escapeTo(path: string): { target: string; id?: string } | undefined {\n const node = this.node(this.parts(path, true));\n if (node?.kind !== 'link' || !node.target.startsWith('/')) return undefined;\n if (node.denied) throw syncError('EACCES', path);\n return node.id === undefined ? { target: node.target } : { target: node.target, id: node.id };\n }\n\n linkTo(path: string): { target: string; id: string } | undefined {\n const node = this.node(this.parts(path, false));\n if (node?.kind !== 'link' || node.id === undefined || node.denied) return undefined;\n return { target: node.target, id: node.id };\n }\n\n readlink(path: string): string {\n const node = this.find(path, false);\n if (node.kind !== 'link') throw syncError('EINVAL', path);\n if (node.denied) throw syncError('EACCES', path);\n return node.target;\n }\n\n exists(path: string): boolean {\n try {\n this.find(path, true);\n return true;\n } catch {\n return false;\n }\n }\n}\n\nconst FOLLOWING = ['writeFile', 'chmod', 'utimes', 'pwrite', 'truncate'] as const;\nconst NOT_FOLLOWING = ['mkdir', 'rm', 'unlink', 'rmdir', 'lutimes', 'create', 'mkfifo'] as const;\nconst MAX_HOPS = 40;\n\ntype ProcRefusal = { refused: string };\ntype ProcWalk = Generator<\n { at: string; check: boolean },\n string | undefined | ProcRefusal,\n string | boolean | ProcRefusal\n>;\n\nfunction* procWalk(path: string, follow: boolean): ProcWalk {\n let done: string[] = [];\n let todo = path.split('/').filter((part) => part !== '');\n let hops = 0;\n let broken: ProcRefusal | undefined;\n while (todo.length > 0) {\n const part = todo.shift() as string;\n if (part === '.') continue;\n if (part === '..') {\n done.pop();\n continue;\n }\n const at = `/${[...done, part].join('/')}`;\n const whole = normalize(`/${[...done, part, ...todo].join('/')}`);\n if (inProc(at) && inProc(whole)) return broken ?? whole;\n if (!follow && todo.length === 0) return undefined;\n const target = yield { at, check: todo.find((next) => next !== '.') === '..' };\n if (typeof target === 'string') {\n if (++hops > MAX_HOPS) return undefined;\n [done, todo] = throughLink(target, done, todo);\n } else {\n broken ??= refusalOf(target);\n done.push(part);\n }\n }\n return undefined;\n}\n\nfunction failed(err: unknown): ProcRefusal {\n const code = (err as { code?: unknown } | null)?.code;\n return { refused: typeof code === 'string' ? code : 'ENOENT' };\n}\n\nfunction refusalOf(found: boolean | ProcRefusal): ProcRefusal | undefined {\n if (found === true) return undefined;\n return found === false ? { refused: 'ENOTDIR' } : found;\n}\n\nfunction throughLink(target: string, done: string[], todo: string[]): [string[], string[]] {\n const parts = target.split('/').filter((part) => part !== '');\n return [target.startsWith('/') ? [] : done, [...parts, ...todo]];\n}\n\nfunction procPath(\n fs: Pick<SyncFsPosixBridge, 'lstat' | 'readlink'>,\n path: string,\n follow: boolean\n): string | undefined {\n const walk = procWalk(path, follow);\n let step = walk.next();\n while (!step.done) {\n const { at, check } = step.value;\n let target: string | boolean | ProcRefusal;\n try {\n const st = fs.lstat(at);\n target = st.isSymbolicLink ? fs.readlink(at) : !check || st.isDirectory;\n } catch (err) {\n target = failed(err);\n }\n step = walk.next(target);\n }\n const result = step.value;\n if (typeof result === 'object') throw syncError(result.refused, path);\n return result;\n}\n\nexport async function procAlias(\n fs: { readlink?(path: string): Promise<string>; lstat?(path: string): Promise<unknown> },\n path: string,\n follow: boolean\n): Promise<string | undefined | ProcRefusal> {\n const { readlink, lstat } = fs;\n if (!readlink || !lstat) return undefined;\n const physical = await lstat.call(fs, '/proc').then(\n () => true,\n () => false\n );\n if (!physical) return undefined;\n const walk = procWalk(path, follow);\n let step = walk.next();\n while (!step.done) {\n const { at, check } = step.value;\n const link = await readlink.call(fs, at).catch(() => undefined);\n const isDir = (st: unknown) => (st as { isDirectory?: boolean }).isDirectory === true;\n const target = link ?? (check ? await lstat.call(fs, at).then(isDir, failed) : true);\n step = walk.next(target);\n }\n return step.value;\n}\n\nfunction frozen(bytes: Uint8Array): SyncFsFileIo {\n const refuse = (): never => {\n throw syncError('EROFS', '/proc');\n };\n return {\n readFile: () => bytes,\n pread: (_p: string, at: number, n: number) => bytes.subarray(at, at + n),\n writeFile: refuse,\n pwrite: refuse,\n truncate: refuse,\n };\n}\n\nexport function physicalProc(\n fs: Pick<SyncFsPosixBridge, 'stat' | 'changes'>,\n now: () => number = () => performance.now()\n): () => boolean {\n const view = fs.changes;\n let seen: { gen: number; physical: boolean; at: number } | undefined;\n return () => {\n if (seen && view && (!view.foreign() || now() - seen.at < SHARED_TTL_MS)) {\n const proc = view.changedSince(seen.gen, '/proc');\n if (!proc.changed && !view.changedSince(seen.gen, '/').changed) {\n seen.gen = proc.now;\n return seen.physical;\n }\n }\n const gen = view?.now();\n const at = now();\n let physical: boolean;\n try {\n fs.stat('/proc');\n physical = true;\n } catch (err) {\n const code = (err as { code?: string }).code;\n if (code !== 'ENOENT' && code !== 'ENOTDIR') {\n seen = undefined;\n return false;\n }\n physical = false;\n }\n seen = gen === undefined ? undefined : { gen, physical, at };\n return physical;\n };\n}\n\nfunction directMiss(err: unknown, path: string): boolean {\n if ((err as { direct?: unknown } | null)?.direct !== true) return false;\n return !path.split('/').some((part) => part === '.' || part === '..');\n}\n\nconst GONE = new Set(['ENOENT', 'ENOTDIR']);\n\nfunction same(fs: SyncFsPosixBridge, path: string, id: string): boolean {\n let st: ReturnType<SyncFsPosixBridge['stat']>;\n try {\n st = fs.stat(path);\n } catch (err) {\n if (GONE.has((err as { code?: string } | null)?.code ?? '')) return false;\n throw err;\n }\n const now = fileIdentity(st.ino, st.mtimeMs);\n return now === undefined || now === id;\n}\n\nfunction current(fs: SyncFsPosixBridge, tree: ProcTree, q: string): string | undefined {\n const to = tree.escapeTo(q);\n if (!to || to.id === undefined) return to?.target;\n if (!same(fs, to.target, to.id)) throw syncError('ENOENT', q);\n return to.target;\n}\n\nfunction guard(\n toProc: (path: string, follow: boolean) => string | undefined,\n shadowing: () => boolean\n) {\n return <R>(paths: Array<[string, boolean]>, run: () => R): R => {\n const physical = shadowing();\n for (const [p, follow] of paths) {\n if (inProc(p) || (physical && toProc(p, follow) !== undefined)) throw syncError('EROFS', p);\n }\n return run();\n };\n}\n\nfunction shownLink(fs: SyncFsPosixBridge, tree: ProcTree, q: string): string {\n const target = tree.readlink(q);\n const to = tree.linkTo(q);\n if (!to) return target;\n try {\n return same(fs, to.target, to.id) ? target : `${target} (deleted)`;\n } catch {\n return target;\n }\n}\n\nfunction routing(\n fs: SyncFsPosixBridge,\n tree: ProcTree,\n toProc: (path: string, follow: boolean) => string | undefined,\n shadowing: () => boolean\n) {\n return <R>(\n p: string,\n inner: (q: string) => R,\n own: () => R,\n follow = true,\n outside?: (target: string) => R\n ): R => {\n const proc = (q: string): R => {\n const target = outside ? current(fs, tree, q) : undefined;\n return target === undefined ? inner(q) : (outside as (t: string) => R)(target);\n };\n if (inProc(p)) return proc(p);\n if (shadowing()) {\n const real = toProc(p, follow);\n if (real !== undefined) return proc(real);\n }\n try {\n return own();\n } catch (err) {\n if (directMiss(err, p)) throw err;\n const real = toProc(p, follow);\n if (real === undefined) throw err;\n return proc(real);\n }\n };\n}\n\nexport function procfsBridge<T extends SyncFsPosixBridge>(fs: T, tree: ProcTree): T {\n const toProc = (path: string, follow: boolean) => procPath(fs, path, follow);\n const shadowing = physicalProc(fs);\n const via = routing(fs, tree, toProc, shadowing);\n const readOnly = guard(toProc, shadowing);\n const snapshots = new Map<number, Uint8Array>();\n let lastSnapshot = 0;\n const snapshot = (q: string): number => {\n lastSnapshot--;\n snapshots.set(lastSnapshot, tree.read(q));\n return lastSnapshot;\n };\n const late = (p: string): number | undefined => {\n const q = toProc(p, true);\n return q === undefined ? undefined : snapshot(q);\n };\n const over: Partial<Record<keyof SyncFsPosixBridge, unknown>> = {\n readFile: (p: string) =>\n via(\n p,\n (q) => tree.read(q),\n () => fs.readFile(p),\n true,\n (t) => fs.readFile(t)\n ),\n stat: (p: string) =>\n via(\n p,\n (q) => tree.stat(q),\n () => fs.stat(p),\n true,\n (t) => ({ ...fs.stat(t), escape: t })\n ),\n lstat: (p: string) =>\n via(\n p,\n (q) => tree.stat(q, false),\n () => fs.lstat(p),\n false\n ),\n readdir: (p: string) =>\n via(\n p,\n (q) => tree.readdir(q),\n () => {\n const names = fs.readdir(p);\n return p === '/' && !names.includes('proc') ? [...names, 'proc'] : names;\n }\n ),\n exists: (p: string) => {\n if (inProc(p)) return tree.exists(p);\n const probe = () => {\n try {\n return toProc(p, true);\n } catch {\n return null;\n }\n };\n const real = shadowing() ? probe() : undefined;\n if (real === null) return false;\n if (real !== undefined) return tree.exists(real);\n try {\n fs.stat(p);\n return true;\n } catch (err) {\n if (directMiss(err, p)) return false;\n }\n const late = probe();\n return typeof late === 'string' && tree.exists(late);\n },\n readlink: (p: string) =>\n via(\n p,\n (q) => shownLink(fs, tree, q),\n () => fs.readlink(p),\n false\n ),\n readdirStat: (p: string) =>\n via(\n p,\n (q) =>\n tree.readdir(q).map((name): [string, SyncFsBridgeStat | null] => {\n try {\n return [name, tree.stat(`${q}/${name}`, false)];\n } catch {\n return [name, null];\n }\n }),\n () => {\n const listed = fs.readdirStat(p);\n if (p !== '/' || listed.some(([name]) => name === 'proc')) return listed;\n return [...listed, ['proc', tree.stat('/proc')] as [string, SyncFsBridgeStat]];\n }\n ),\n rename: (from: string, to: string) =>\n readOnly(\n [\n [from, false],\n [to, false],\n ],\n () => fs.rename(from, to)\n ),\n symlink: (target: string, link: string) =>\n readOnly([[link, false]], () => fs.symlink(target, link)),\n link: (from: string, to: string, follow?: boolean) =>\n readOnly(\n [\n [from, follow === true],\n [to, false],\n ],\n () => fs.link(from, to, follow)\n ),\n hold: (\n p: string,\n held: boolean,\n open?: boolean,\n handle?: number,\n want?: number,\n seen?: { gen?: number; nofollow?: boolean }\n ) => {\n if (handle !== undefined && snapshots.delete(handle)) return undefined;\n if (!held) return fs.hold?.(p, held, open, handle);\n return via(p, snapshot, () => fs.hold?.(p, held, open, undefined, want, seen) ?? late(p));\n },\n kept: (handle: number) => snapshots.has(handle) || fs.kept?.(handle) === true,\n escape: (p: string) => (inProc(p) ? current(fs, tree, p) : undefined),\n pinned: (handle: number) => {\n const bytes = snapshots.get(handle);\n return bytes ? frozen(bytes) : (fs.pinned?.(handle) ?? fs);\n },\n ...(fs.pread\n ? {\n pread: (p: string, at: number, n: number, version?: string) =>\n via(\n p,\n (q) => tree.read(q).subarray(at, at + n),\n () => (fs.pread as NonNullable<T['pread']>)(p, at, n, version)\n ),\n }\n : {}),\n };\n for (const [names, follow] of [\n [FOLLOWING, true],\n [NOT_FOLLOWING, false],\n ] as const) {\n for (const name of names) {\n const fn = fs[name] as ((p: string, ...rest: unknown[]) => unknown) | undefined;\n if (!fn) continue;\n over[name] = (p: string, ...rest: unknown[]) =>\n readOnly([[p, follow]], () => fn.call(fs, p, ...rest));\n }\n }\n const { chown } = fs;\n if (chown) {\n over.chown = (p: string, ...rest: ChownArgs) =>\n readOnly([[p, rest[2] === true]], () => chown.call(fs, p, ...rest));\n }\n return new Proxy(fs, {\n get: (target, key, receiver) =>\n key in over ? over[key as keyof SyncFsPosixBridge] : Reflect.get(target, key, receiver),\n });\n}\n", "import type { MountLine, ProcessListing } from '../../kernel/proc-info.ts';\nimport type { SyncSabRequestBody } from '../../realm/sync-sab-wire.ts';\nimport { memorySource } from '../procfs.ts';\nimport { inProc, ProcTree } from '../wasi/wasi-procfs.ts';\nimport { type DevStep, devAsync, devSync } from './js-dev.ts';\nimport { index } from './js-io.ts';\nimport { JsCallError } from './js-kernel.ts';\n\nexport { inProc };\n\nexport function* procStep<T>(abs: string, pid: number, run: (tree: ProcTree) => T): DevStep<T> {\n const listing = (yield { op: 'proc-list' }) as ProcessListing;\n const mounts = abs === '/proc/mounts' ? ((yield { op: 'mount-list' }) as MountLine[]) : [];\n const tree = new ProcTree(\n { procList: () => listing, mountList: () => mounts },\n pid,\n memorySource()\n );\n try {\n return run(tree);\n } catch (err) {\n throw new JsCallError((err as { code?: string }).code ?? 'EIO', abs);\n }\n}\n\nexport function readOnly(path: string): never {\n throw new JsCallError('EROFS', path);\n}\n\nexport interface ProcOpenOptions {\n write?: boolean;\n append?: boolean;\n create?: boolean;\n truncate?: boolean;\n exclusive?: boolean;\n}\n\nexport function procWrites(options: ProcOpenOptions | undefined): boolean {\n return !!(\n options?.write ||\n options?.append ||\n options?.create ||\n options?.truncate ||\n options?.exclusive\n );\n}\n\nfunction snapshotFile(path: string, bytes: Uint8Array) {\n let closed = false;\n const live = () => {\n if (closed) throw new JsCallError('EBADF', path);\n };\n return {\n fd: -1,\n path,\n size: () => {\n live();\n return bytes.length;\n },\n read: (position: number, length: number) => {\n live();\n index(position, 'read');\n index(length, 'read');\n return bytes.slice(position, position + length);\n },\n write: (): number => {\n throw new JsCallError('EBADF', path);\n },\n truncate: (): void => {\n throw new JsCallError('EBADF', path);\n },\n sync: () => live(),\n close: () => {\n live();\n closed = true;\n },\n };\n}\n\nfunction promised<T extends object>(file: T): T {\n const out: Record<string, unknown> = { ...(file as Record<string, unknown>) };\n for (const [name, value] of Object.entries(file)) {\n if (typeof value === 'function') {\n out[name] = (...args: unknown[]) => new Promise((resolve) => resolve(value(...args)));\n }\n }\n return out as T;\n}\n\ntype ProcRun = <T>(step: DevStep<T>) => T | Promise<T>;\n\ninterface ProcPaths {\n resolve: (path: string) => string;\n pid: number;\n}\n\nconst WRITES = ['mkdir', 'rm', 'unlink', 'chmod', 'writeFile'] as const;\nconst TWO = ['rename', 'link'] as const;\n\nfunction procOps(paths: ProcPaths, run: ProcRun) {\n const at = (path: string) => {\n const abs = paths.resolve(path);\n return inProc(abs) ? abs : undefined;\n };\n const step = <T>(abs: string, op: (tree: ProcTree) => T) => run(procStep(abs, paths.pid, op));\n return { at, step };\n}\n\nexport function withProc<F extends Record<string, unknown>>(\n fs: F,\n paths: ProcPaths,\n run: ProcRun\n): F {\n const { at, step } = procOps(paths, run);\n const out: Record<string, unknown> = { ...fs };\n const pass = fs as Record<string, (...args: unknown[]) => unknown>;\n const reads: Record<string, (tree: ProcTree, abs: string) => unknown> = {\n stat: (tree, abs) => tree.stat(abs, true),\n lstat: (tree, abs) => tree.stat(abs, false),\n exists: (tree, abs) => tree.exists(abs),\n readdir: (tree, abs) => tree.readdir(abs),\n readlink: (tree, abs) => tree.readlink(abs),\n readFile: (tree, abs) => tree.read(abs),\n };\n for (const [name, read] of Object.entries(reads)) {\n out[name] = (path: string, ...rest: unknown[]) => {\n const abs = at(path);\n return abs ? step(abs, (tree) => read(tree, abs)) : pass[name]?.(path, ...rest);\n };\n }\n for (const name of WRITES) {\n out[name] = (path: string, ...rest: unknown[]) => {\n const abs = at(path);\n return abs ? run(refuse(abs)) : pass[name]?.(path, ...rest);\n };\n }\n for (const name of TWO) {\n out[name] = (from: string, to: string) => {\n const abs = at(from) ?? at(to);\n return abs ? run(refuse(abs)) : pass[name]?.(from, to);\n };\n }\n out.symlink = (target: string, path: string) => {\n const abs = at(path);\n return abs ? run(refuse(abs)) : pass.symlink?.(target, path);\n };\n return out as F;\n}\n\nfunction* refuse(abs: string): DevStep<never> {\n yield* [];\n return readOnly(abs);\n}\n\nexport function procOpen<O, R>(\n open: (path: string, options?: O) => R,\n paths: ProcPaths,\n run: ProcRun,\n async = false\n): (path: string, options?: O) => R {\n const { at, step } = procOps(paths, run);\n return (path, options) => {\n const abs = at(path);\n if (!abs) return open(path, options);\n if (procWrites(options as ProcOpenOptions | undefined)) return run(refuse(abs)) as R;\n return step(abs, (tree) => {\n const file = snapshotFile(abs, tree.read(abs));\n return async ? promised(file) : file;\n }) as R;\n };\n}\n\ntype Lane = { json(req: SyncSabRequestBody): unknown };\ntype AsyncLane = { json(req: SyncSabRequestBody): Promise<unknown> };\n\nexport function procFsAsync<F extends object>(fs: F, kernel: AsyncLane, paths: ProcPaths): F {\n return withProc(fs as Record<string, unknown>, paths, (step) => devAsync(kernel, step)) as F;\n}\n\nexport function procFsSync<F extends object>(fs: F, kernel: Lane, paths: ProcPaths): F {\n return withProc(fs as Record<string, unknown>, paths, (step) => devSync(kernel, step)) as F;\n}\n\nexport function procOpenAsync<O, R>(\n open: (path: string, options?: O) => R,\n kernel: AsyncLane,\n paths: ProcPaths\n) {\n return procOpen(open, paths, (step) => devAsync(kernel, step), true);\n}\n\nexport function procOpenSync<O, R>(\n open: (path: string, options?: O) => R,\n kernel: Lane,\n paths: ProcPaths\n) {\n return procOpen(open, paths, (step) => devSync(kernel, step));\n}\n", "import { argv0Of, groupOf } from './js-children.ts';\nimport { JsCallError } from './js-kernel.ts';\nimport type { JsSyncKernel } from './js-sync.ts';\n\nexport type JsRunStdio = 'pipe' | 'ignore' | 'inherit' | number;\n\nexport interface JsRunOptions {\n argv: readonly string[];\n argv0?: string;\n env?: Readonly<Record<string, string>>;\n cwd?: string;\n pgid?: number;\n session?: boolean;\n input?: Uint8Array | string;\n stdin?: JsRunStdio;\n stdout?: JsRunStdio;\n stderr?: JsRunStdio | 'stdout';\n maxBuffer?: number;\n timeout?: number;\n killSignal?: number | `SIG${string}`;\n}\n\nexport interface JsRunResult {\n pid: number;\n status: number | null;\n signal?: number;\n stdout?: Uint8Array;\n stderr?: Uint8Array;\n error?: { code: string };\n}\n\nexport interface RunDefaults {\n env: Readonly<Record<string, string>>;\n cwd: string;\n resolve(path: string): string;\n signal(name: number | `SIG${string}`): number;\n}\n\ninterface Outcome {\n pid: number;\n status: number | null;\n signal?: number;\n error?: { code: string };\n out: number;\n err: number;\n}\n\nconst encoder = new TextEncoder();\n\nconst STDIO = new Set<unknown>(['pipe', 'ignore', 'inherit']);\n\nfunction stdioOf(how: JsRunStdio | undefined): JsRunStdio {\n if (how === undefined) return 'pipe';\n if (typeof how === 'number' && Number.isInteger(how) && how >= 0) return how;\n if (!STDIO.has(how)) throw new JsCallError('EINVAL', 'run');\n return how;\n}\n\nfunction stderrOf(how: JsRunStdio | 'stdout' | undefined): JsRunStdio | 'stdout' {\n return how === 'stdout' ? how : stdioOf(how);\n}\n\nfunction limit(value: number | undefined): number | undefined {\n if (value === undefined || value === Number.POSITIVE_INFINITY) return value;\n if (!(value >= 0)) throw new JsCallError('EINVAL', 'run');\n return value;\n}\n\nexport function decodeRun(\n bytes: Uint8Array,\n stdout: JsRunStdio,\n stderr: JsRunStdio | 'stdout'\n): JsRunResult {\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const size = view.getUint32(0, true);\n const outcome = JSON.parse(new TextDecoder().decode(bytes.subarray(4, 4 + size))) as Outcome;\n const out = bytes.slice(4 + size, 4 + size + outcome.out);\n const err = bytes.slice(4 + size + outcome.out, 4 + size + outcome.out + outcome.err);\n return {\n pid: outcome.pid,\n status: outcome.status,\n ...(outcome.signal !== undefined ? { signal: outcome.signal } : {}),\n ...(stdout === 'pipe' ? { stdout: out } : {}),\n ...(stderr === 'pipe' ? { stderr: err } : {}),\n ...(outcome.error ? { error: outcome.error } : {}),\n };\n}\n\nexport function runSync(kernel: JsSyncKernel, d: RunDefaults, o: JsRunOptions): JsRunResult {\n const [file] = o.argv;\n if (file === undefined) throw new JsCallError('EINVAL', 'run');\n const group = groupOf(o, 'run');\n const named = argv0Of(o.argv0, 'run');\n const stdout = stdioOf(o.stdout);\n const stderr = stderrOf(o.stderr);\n const input = typeof o.input === 'string' ? encoder.encode(o.input) : o.input;\n const maxBuffer = limit(o.maxBuffer);\n const timeout = limit(o.timeout);\n const bytes = kernel.bytes({\n op: 'proc-run',\n file,\n argv: [...o.argv],\n ...named,\n env: { ...(o.env ?? d.env) },\n cwd: o.cwd === undefined ? d.cwd : d.resolve(o.cwd),\n ...(o.cwd === undefined ? {} : { chdir: true as const }),\n ...group,\n stdin: stdioOf(o.stdin),\n ...(input ? { input } : {}),\n stdout,\n stderr,\n ...(maxBuffer !== undefined && maxBuffer !== Number.POSITIVE_INFINITY ? { maxBuffer } : {}),\n ...(maxBuffer === Number.POSITIVE_INFINITY ? { maxBuffer: Number.MAX_SAFE_INTEGER } : {}),\n ...(timeout !== undefined && timeout !== Number.POSITIVE_INFINITY\n ? { timeoutMs: timeout }\n : {}),\n killSignal: d.signal(o.killSignal ?? 'SIGTERM'),\n });\n return decodeRun(bytes, stdout, stderr);\n}\n", "import { physicalPath } from '../../fs/physical-path.ts';\nimport type { JsLane } from '../../kernel/protocol.ts';\nimport { SIG } from '../../kernel/signals.ts';\nimport {\n parseSyncFsStat,\n SYNC_FS_READ_ONLY,\n SYNC_FS_REQUEST_TIMEOUT_MS,\n type SyncFsBridgeStat,\n type SyncFsResult,\n} from '../../realm/sync-fs-wire.ts';\nimport { createSyncSabTransport, type SyncSabTransport } from '../../realm/sync-sab-bridge.ts';\nimport type { SyncSabRequestBody } from '../../realm/sync-sab-wire.ts';\nimport type { JsChild, JsSpawnOptions } from './js-children.ts';\nimport {\n devExists,\n devOpen,\n devReaddir,\n devReadlink,\n devResolveTarget,\n devStat,\n devSync,\n inDev,\n readWholeSync,\n streamSyncFile,\n} from './js-dev.ts';\nimport {\n absent,\n brokenPipe,\n CHUNK,\n checkOpen,\n type FdInfo,\n fileWrite,\n index,\n intoTarget,\n isExclusive,\n type JsOpenOptions,\n type JsStatFs,\n type JsWriteOptions,\n joined,\n MAX_IO,\n MAX_PREAD,\n openRequest,\n readDevice,\n statFsOf,\n writeDevice,\n written,\n} from './js-io.ts';\nimport { callError, JsCallError, type JsKernel, modeOf } from './js-kernel.ts';\nimport type { JsSyncNet } from './js-net.ts';\nimport { procFsSync, procOpenSync } from './js-proc.ts';\nimport type { JsRunOptions, JsRunResult } from './js-run.ts';\nimport type { JsSyncTty } from './js-tty.ts';\nimport type { JsWasi, JsWasiOptions } from './js-wasi.ts';\nimport type { JsWatcher, JsWatchListener, JsWatchOptions } from './js-watch.ts';\n\nexport type SyncCall = (req: SyncSabRequestBody) => SyncFsResult;\n\nexport interface JsSyncFile {\n readonly fd: number;\n readonly path: string;\n size(): number;\n read(position: number, length: number): Uint8Array;\n readInto?(position: number, into: Uint8Array, offset?: number, length?: number): number;\n write(position: number, data: Uint8Array): number;\n truncate(size: number): void;\n sync(): void;\n close(): void;\n}\n\nexport interface JsCred {\n ruid: number;\n euid: number;\n suid: number;\n rgid: number;\n egid: number;\n sgid: number;\n groups: number[];\n}\n\nexport interface JsSyncContext {\n readonly kernel: { readonly version: string };\n tty: JsSyncTty;\n run(options: JsRunOptions): JsRunResult;\n spawn(options: JsSpawnOptions): JsChild;\n exit(status?: number): never;\n kill(pid: number, signal?: number | `SIG${string}`): void;\n cred(): JsCred;\n umask(mask?: number): number;\n setcred(change: Partial<JsCred>): JsCred;\n read(fd: number, max?: number): Uint8Array;\n write(fd: number, data: Uint8Array | string, options?: JsWriteOptions): number;\n close(fd: number): void;\n socketpair(): [number, number];\n pipe(): [number, number];\n open(path: string, options?: JsOpenOptions): JsSyncFile;\n wasi: { create(options?: JsWasiOptions): JsWasi };\n net: JsSyncNet;\n fs: {\n stat(path: string): SyncFsBridgeStat;\n lstat(path: string): SyncFsBridgeStat;\n exists(path: string): boolean;\n readdir(path: string): string[];\n mkdir(path: string, options?: { recursive?: boolean; mode?: number }): void;\n rm(path: string): void;\n unlink(path: string): void;\n rename(from: string, to: string): void;\n chmod(path: string, mode: number): void;\n link(from: string, to: string): void;\n symlink(target: string, path: string): void;\n readlink(path: string): string;\n statfs(path: string): JsStatFs;\n readFile(path: string): Uint8Array;\n writeFile(path: string, data: Uint8Array | string, options?: { mode?: number }): void;\n watch(\n path: string,\n options: JsWatchOptions | JsWatchListener,\n listener?: JsWatchListener\n ): JsWatcher;\n };\n}\n\nexport interface SyncShared {\n pid: number;\n resolve(path: string): string;\n random(bytes: Uint8Array): void;\n infos: Map<number, FdInfo>;\n handles: Map<number, () => void>;\n closing?(fd: number): void;\n}\n\nconst encoder = new TextEncoder();\n\nexport const noLane: SyncCall = () => ({ ok: false, errno: 'ENOSYS', message: 'no sync lane' });\n\nconst READ_ONLY: ReadonlySet<string> = new Set([...SYNC_FS_READ_ONLY, 'fd-path-flush']);\n\nexport function laneOf(\n lane: JsLane | undefined,\n silence = SYNC_FS_REQUEST_TIMEOUT_MS,\n open: (sab: SharedArrayBuffer, port: JsLane['port']) => SyncSabTransport = createSyncSabTransport\n): SyncCall {\n if (!lane) return noLane;\n const transport = open(lane.sab, lane.port);\n return (req) => {\n if (!READ_ONLY.has(req.op)) return transport.call(req, Number.POSITIVE_INFINITY, req.op);\n try {\n return transport.call(req, silence, req.op);\n } catch (err) {\n const errno = (err as { code?: unknown } | null)?.code;\n return {\n ok: false,\n errno: typeof errno === 'string' ? errno : 'EIO',\n message: err instanceof Error ? err.message : String(err),\n };\n }\n };\n}\n\nexport class JsSyncKernel {\n private readonly lane: SyncCall;\n private readonly kernel: Pick<JsKernel, 'deliver'>;\n private readonly unwind: () => void;\n\n constructor(lane: SyncCall, kernel: Pick<JsKernel, 'deliver'>, unwind: () => void = () => {}) {\n this.lane = lane;\n this.kernel = kernel;\n this.unwind = unwind;\n }\n\n raw(req: SyncSabRequestBody): SyncFsResult {\n this.unwind();\n const result = this.lane(req);\n this.kernel.deliver();\n this.unwind();\n return result;\n }\n\n call(req: SyncSabRequestBody): SyncFsResult {\n const result = this.raw(req);\n if (!result.ok) throw callError(result, req.op);\n return result;\n }\n\n json(req: SyncSabRequestBody): unknown {\n const result = this.call(req);\n return result.ok && result.kind === 'json' ? result.json : undefined;\n }\n\n bytes(req: SyncSabRequestBody): Uint8Array {\n const result = this.call(req);\n return result.ok && result.kind === 'bytes' ? result.bytes : new Uint8Array(0);\n }\n\n blocking(req: SyncSabRequestBody): SyncFsResult {\n for (;;) {\n const result = this.raw(req);\n if (result.ok) return result;\n if (result.errno !== 'EINTR') throw callError(result, req.op);\n }\n }\n}\n\nexport function syncOps(\n kernel: JsSyncKernel,\n shared: SyncShared\n): Omit<\n JsSyncContext,\n | 'run'\n | 'spawn'\n | 'exit'\n | 'kill'\n | 'cred'\n | 'setcred'\n | 'kernel'\n | 'umask'\n | 'fs'\n | 'tty'\n | 'wasi'\n | 'net'\n> & { fs: Omit<JsSyncContext['fs'], 'watch'> } {\n const { infos, handles, resolve } = shared;\n\n const tryDevSync = (abs: string): string | undefined => {\n try {\n const resolved = physicalPath(\n {\n lstat(p) {\n return parseSyncFsStat(kernel.json({ op: 'lstat', path: p })) ?? {};\n },\n readlink(p) {\n return String(kernel.json({ op: 'readlink', path: p }));\n },\n },\n abs\n );\n return resolved !== abs && inDev(resolved) ? resolved : undefined;\n } catch {\n return undefined;\n }\n };\n\n const info = (fd: number): FdInfo => {\n const known = infos.get(fd);\n if (known) return known;\n const got = kernel.json({ op: 'fd-info', fd }) as FdInfo;\n infos.set(fd, got);\n return got;\n };\n\n const read = (fd: number, max = CHUNK): Uint8Array => {\n index(max, 'read');\n const emulated = readDevice(info(fd), max, shared.random);\n if (emulated) return emulated;\n const r = kernel.blocking({ op: 'fd-read', fd, max: Math.min(max, MAX_IO) });\n return r.ok && r.kind === 'bytes' ? r.bytes : new Uint8Array(0);\n };\n\n const write = (fd: number, data: Uint8Array | string, options?: JsWriteOptions): number => {\n const bytes = typeof data === 'string' ? encoder.encode(data) : data;\n const i = info(fd);\n if (writeDevice(i)) return bytes.length;\n const nonblock = options?.nonblock === true;\n let at = 0;\n while (at < bytes.length) {\n const body = bytes.subarray(at, at + MAX_IO);\n try {\n const req = { op: 'fd-write' as const, fd, body, ...(nonblock ? { nonblock } : {}) };\n at += written(kernel.blocking(req), body.length);\n } catch (err) {\n if (brokenPipe(err, i)) kernel.call({ op: 'proc-kill', pid: shared.pid, sig: SIG.PIPE });\n throw err;\n }\n if (nonblock) break;\n }\n return at;\n };\n\n const statOf = (op: 'stat' | 'lstat', path: string): SyncFsBridgeStat => {\n const abs = resolve(path);\n if (inDev(abs)) return devSync(kernel, devStat(abs, op === 'stat'));\n try {\n kernel.call({ op: 'fd-path-flush', path: abs });\n const s = parseSyncFsStat(kernel.json({ op, path: abs }));\n if (!s) throw new JsCallError('EIO', op);\n return s;\n } catch (err) {\n if (!(err instanceof JsCallError) || err.code !== 'ENOENT') throw err;\n const devPath = tryDevSync(abs);\n if (!devPath) throw err;\n return devSync(kernel, devStat(devPath, op === 'stat'));\n }\n };\n\n const openDev = (abs: string, options: JsOpenOptions): JsSyncFile => {\n const { fd, file, ...access } = devSync(kernel, devOpen(abs, options));\n const forget = () => {\n infos.delete(fd);\n handles.delete(fd);\n };\n if (file) infos.set(fd, { kind: 'file' });\n const close = (n: number) => {\n forget();\n kernel.call({ op: 'fd-close', fd: n });\n };\n const handle = file\n ? syncFile(kernel, fd, abs, options.append === true, forget)\n : streamSyncFile(fd, abs, { read: (n, max) => read(n, max), write, close }, access);\n handles.set(fd, handle.invalidate);\n return handle.file;\n };\n\n const open = (path: string, options: JsOpenOptions = {}): JsSyncFile => {\n const abs = resolve(path);\n if (inDev(abs)) return openDev(abs, options);\n try {\n let existing: SyncFsBridgeStat | undefined;\n try {\n existing = statOf(isExclusive(options) ? 'lstat' : 'stat', abs);\n } catch (err) {\n existing = absent(err);\n }\n checkOpen(abs, options, existing);\n const fd = kernel.json(openRequest(abs, options)) as number;\n try {\n kernel.call({ op: 'fd-vfs-stat', fd });\n } catch (err) {\n kernel.raw({ op: 'fd-close', fd });\n throw err;\n }\n infos.set(fd, { kind: 'file' });\n const handle = syncFile(kernel, fd, abs, options.append === true, () => {\n infos.delete(fd);\n handles.delete(fd);\n });\n handles.set(fd, handle.invalidate);\n return handle.file;\n } catch (err) {\n if (!(err instanceof JsCallError) || err.code !== 'ENOENT') throw err;\n const devPath = tryDevSync(abs);\n if (!devPath) throw err;\n return openDev(devPath, options);\n }\n };\n\n return {\n read,\n write,\n close(fd) {\n handles.get(fd)?.();\n handles.delete(fd);\n infos.delete(fd);\n shared.closing?.(fd);\n kernel.call({ op: 'fd-close', fd });\n },\n socketpair: () =>\n kernel.json({ op: 'sock-pair', domain: 'unix', type: 'stream' }) as [number, number],\n pipe: () => kernel.json({ op: 'fd-pipe' }) as [number, number],\n open: procOpenSync(open, kernel, { resolve, pid: shared.pid }),\n fs: procFsSync(syncPathOps(kernel, resolve, statOf, open, tryDevSync), kernel, {\n resolve,\n pid: shared.pid,\n }),\n };\n}\n\nfunction syncFile(\n kernel: JsSyncKernel,\n fd: number,\n path: string,\n append: boolean,\n forget: () => void\n): { file: JsSyncFile; invalidate: () => void } {\n let open = true;\n const live = (): void => {\n if (!open) throw new JsCallError('EBADF', path);\n };\n const pread = (\n position: number,\n length: number,\n target?: { into: Uint8Array; at: number }\n ): Uint8Array | number => {\n index(position, 'read');\n index(length, 'read');\n const parts: Uint8Array[] = [];\n let got = 0;\n do {\n live();\n const max = Math.min(length - got, MAX_PREAD);\n if (max <= 0) break;\n const chunk = kernel.bytes({ op: 'fd-pread', fd, offset: position + got, max });\n if (chunk.length === 0) break;\n if (target) target.into.set(chunk, target.at + got);\n else parts.push(chunk);\n got += chunk.length;\n } while (got < length);\n return target ? got : joined(parts, got);\n };\n const file: JsSyncFile = {\n fd,\n path,\n size() {\n live();\n return (kernel.json({ op: 'fd-vfs-stat', fd }) as { size: number }).size;\n },\n readInto(position: number, into: Uint8Array, offset = 0, length = into.length - offset) {\n return pread(position, length, intoTarget(into, offset, length)) as number;\n },\n read(position: number, length: number) {\n return pread(position, length) as Uint8Array;\n },\n write(position, data) {\n index(position, 'write');\n let at = 0;\n do {\n live();\n if (at >= data.length) break;\n const body = data.subarray(at, at + MAX_IO);\n const n = kernel.json(fileWrite(fd, append, position + at, body)) as number;\n if (!(n > 0)) throw new JsCallError('EIO', 'write');\n at += n;\n } while (at < data.length);\n return at;\n },\n truncate(size) {\n live();\n index(size, 'truncate');\n kernel.call({ op: 'fd-resize', fd, size });\n },\n sync() {\n live();\n kernel.call({ op: 'fd-flush', fd });\n },\n close() {\n live();\n open = false;\n forget();\n kernel.call({ op: 'fd-close', fd });\n },\n };\n return {\n file,\n invalidate: () => {\n open = false;\n },\n };\n}\n\nfunction syncPathOps(\n kernel: JsSyncKernel,\n resolve: (path: string) => string,\n statOf: (op: 'stat' | 'lstat', path: string) => SyncFsBridgeStat,\n open: (path: string, options?: JsOpenOptions) => JsSyncFile,\n tryDev: (abs: string) => string | undefined\n): Omit<JsSyncContext['fs'], 'watch'> {\n return {\n stat: (path) => statOf('stat', path),\n lstat: (path) => statOf('lstat', path),\n exists(path) {\n const abs = resolve(path);\n if (inDev(abs)) return devSync(kernel, devExists(abs));\n if (kernel.json({ op: 'exists', path: abs }) === true) return true;\n const devPath = tryDev(abs);\n return devPath ? devSync(kernel, devExists(devPath)) : false;\n },\n readdir(path) {\n const abs = resolve(path);\n if (inDev(abs)) return devSync(kernel, devReaddir(abs));\n return kernel.json({ op: 'readdir', path: abs }) as string[];\n },\n mkdir: (path, options) =>\n void kernel.call({\n op: 'mkdir',\n path: resolve(path),\n ...(options?.recursive === false ? { exclusive: true } : {}),\n mode: options?.mode === undefined ? 0o777 : modeOf(options.mode),\n }),\n rm: (path) => void kernel.call({ op: 'rm', path: resolve(path) }),\n unlink: (path) => void kernel.call({ op: 'unlink', path: resolve(path) }),\n rename: (from, to) =>\n void kernel.call({ op: 'rename', path: resolve(from), arg2: resolve(to) }),\n chmod: (path, mode) =>\n void kernel.call({ op: 'chmod', path: resolve(path), mode: modeOf(mode) }),\n link: (from, to) => void kernel.call({ op: 'link', path: resolve(from), arg2: resolve(to) }),\n symlink: (target, path) =>\n void kernel.call({ op: 'symlink', path: resolve(path), arg2: target }),\n readlink(path) {\n const abs = resolve(path);\n if (inDev(abs)) return devSync(kernel, devReadlink(abs));\n return String(kernel.json({ op: 'readlink', path: abs }));\n },\n statfs(path) {\n let abs = resolve(path);\n if (inDev(abs)) {\n try {\n const target = devSync(kernel, devResolveTarget(abs)) as string | undefined;\n if (target?.startsWith('/')) abs = target;\n } catch {}\n }\n statOf('stat', abs);\n return statFsOf(kernel.json({ op: 'statfs', path: abs }));\n },\n readFile(path) {\n const abs = resolve(path);\n if (inDev(abs)) return readWholeSync(open(abs));\n try {\n kernel.call({ op: 'fd-path-flush', path: abs });\n return kernel.bytes({ op: 'read', path: abs });\n } catch (err) {\n if (!(err instanceof JsCallError) || err.code !== 'ENOENT') throw err;\n const devPath = tryDev(abs);\n if (!devPath) throw err;\n return readWholeSync(open(devPath));\n }\n },\n writeFile(path, data, options) {\n const mode = options?.mode;\n const file = open(path, {\n write: true,\n create: true,\n truncate: true,\n ...(mode !== undefined ? { mode } : {}),\n });\n try {\n file.write(0, typeof data === 'string' ? encoder.encode(data) : data);\n } finally {\n file.close();\n }\n },\n };\n}\n", "import type { FdInfo } from './js-io.ts';\nimport type { JsKernel } from './js-kernel.ts';\n\nexport interface JsTermios {\n c_iflag: number;\n c_oflag: number;\n c_cflag: number;\n c_lflag: number;\n c_cc: number[];\n}\n\nexport interface JsTtySize {\n columns: number;\n rows: number;\n}\n\nexport interface JsSyncTty {\n getAttr(fd: number): JsTermios;\n setAttr(fd: number, termios: JsTermios): void;\n setRaw(fd: number, raw: boolean): void;\n}\n\ninterface SyncTtyKernel {\n json(req: Parameters<JsKernel['json']>[0]): unknown;\n}\n\nexport interface JsTty {\n getAttr(fd: number): Promise<JsTermios>;\n setAttr(fd: number, termios: JsTermios): Promise<void>;\n setRaw(fd: number, raw: boolean): Promise<void>;\n size(fd: number): Promise<JsTtySize>;\n foreground(fd: number): Promise<number>;\n setForeground(fd: number, pgrp: number): Promise<void>;\n}\n\nconst BRKINT = 0o2;\nconst INPCK = 0o20;\nconst ISTRIP = 0o40;\nconst ICRNL = 0o400;\nconst IXON = 0o2000;\nconst ONLCR = 0o4;\nconst CS8 = 0o60;\nconst ISIG = 0o1;\nconst ICANON = 0o2;\nconst ECHO = 0o10;\nconst IEXTEN = 0o100000;\nconst VTIME = 5;\nconst VMIN = 6;\n\nfunction copy(termios: JsTermios): JsTermios {\n return { ...termios, c_cc: [...termios.c_cc] };\n}\n\nexport function rawOf(termios: JsTermios): JsTermios {\n const raw = copy(termios);\n raw.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);\n raw.c_oflag |= ONLCR;\n raw.c_cflag |= CS8;\n raw.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);\n raw.c_cc[VMIN] = 1;\n raw.c_cc[VTIME] = 0;\n return raw;\n}\n\nexport function ttyOps(\n kernel: JsKernel,\n syncKernel?: SyncTtyKernel\n): {\n tty: JsTty;\n syncTty: JsSyncTty;\n restore(): Promise<void>;\n modes(): Array<{ terminal: string; fd: number; termios: JsTermios }>;\n} {\n const saved = new Map<string, { fd: number; termios: JsTermios }>();\n const terminalOf = async (fd: number): Promise<string> =>\n ((await kernel.json({ op: 'fd-info', fd })) as FdInfo).terminal ?? `fd ${fd}`;\n\n const getAttr = async (fd: number): Promise<JsTermios> =>\n (await kernel.json({ op: 'tty-get', fd })) as JsTermios;\n const setAttr = async (fd: number, termios: JsTermios): Promise<void> => {\n await kernel.call({ op: 'tty-set', fd, termios: copy(termios) });\n };\n\n const tty: JsTty = {\n getAttr,\n setAttr,\n async setRaw(fd, raw) {\n const terminal = await terminalOf(fd);\n if (!raw) {\n const original = saved.get(terminal);\n saved.delete(terminal);\n if (original) await setAttr(fd, original.termios);\n return;\n }\n const current = await getAttr(fd);\n if (!saved.has(terminal)) saved.set(terminal, { fd, termios: current });\n await setAttr(fd, rawOf(current));\n },\n async size(fd) {\n const [rows, columns] = (await kernel.json({ op: 'tty-winsz', fd })) as [number, number];\n return { columns, rows };\n },\n foreground: async (fd) => (await kernel.json({ op: 'tty-pgrp-get', fd })) as number,\n async setForeground(fd, pgrp) {\n await kernel.call({ op: 'tty-pgrp-set', fd, pgrp });\n },\n };\n\n const openOn = async (terminal: string, fd: number): Promise<number | undefined> => {\n const open = (await kernel.json({ op: 'fd-list' })) as Array<FdInfo & { fd: number }>;\n const on = open.filter((entry) => entry.terminal === terminal);\n return (on.find((entry) => entry.fd === fd) ?? on[0])?.fd;\n };\n const reopened = async (terminal: string, termios: JsTermios): Promise<void> => {\n const fd = (await kernel.json({ op: 'fd-open-tty', name: terminal })) as number;\n try {\n await setAttr(fd, termios);\n } finally {\n await kernel.call({ op: 'fd-close', fd });\n }\n };\n const restore = async (): Promise<void> => {\n for (const [terminal, { fd, termios }] of [...saved].reverse()) {\n saved.delete(terminal);\n const at = await openOn(terminal, fd).catch(() => undefined);\n const back = at === undefined ? reopened(terminal, termios) : setAttr(at, termios);\n await back.catch(() => undefined);\n }\n };\n\n const syncGet = (fd: number): JsTermios =>\n (syncKernel as SyncTtyKernel).json({ op: 'tty-get', fd }) as JsTermios;\n const syncSet = (fd: number, termios: JsTermios): void =>\n void (syncKernel as SyncTtyKernel).json({ op: 'tty-set', fd, termios: copy(termios) });\n const syncTty: JsSyncTty = {\n getAttr: syncGet,\n setAttr: syncSet,\n setRaw(fd, raw) {\n const info = (syncKernel as SyncTtyKernel).json({ op: 'fd-info', fd }) as FdInfo;\n const terminal = info.terminal ?? `fd ${fd}`;\n if (!raw) {\n const original = saved.get(terminal);\n saved.delete(terminal);\n if (original) syncSet(fd, original.termios);\n return;\n }\n const current = syncGet(fd);\n if (!saved.has(terminal)) saved.set(terminal, { fd, termios: current });\n syncSet(fd, rawOf(current));\n },\n };\n\n const modes = () =>\n [...saved].reverse().map(([terminal, { fd, termios }]) => ({ terminal, fd, termios }));\n return { tty, syncTty, restore, modes };\n}\n", "import {\n flushLiveVfs,\n invalidateLiveVfs,\n type LiveCred,\n type LiveMountFsApi,\n liveRoot,\n mountLiveVfsDirs,\n readingLinks,\n useLiveChown,\n} from './live-vfs-fs.ts';\nimport type { SyncFsPosixBridge } from './sync-fs-wire.ts';\n\nconst MODULE_OWNED_DIRS = new Set(['dev', 'proc']);\n\nconst SYNTHETIC_DIRS = ['/usr', '/bin'];\n\nexport interface EmscriptenFsForHook extends LiveMountFsApi {\n chdir(path: string): void;\n sliccChdirAt?(path: string): void;\n sliccHeldCwd?(): string;\n sliccCwdGone?(): boolean;\n chown?(path: string | object, uid: number, gid: number, dontFollow?: boolean): void;\n}\n\nexport interface EmscriptenVfsHandle {\n mounted: string[];\n flush(): void;\n flushDirty(): void;\n invalidate(): void;\n}\n\nexport interface EmscriptenVfsHookDeps {\n bridge: SyncFsPosixBridge;\n cwd: string;\n warn: (message: string) => void;\n cred?: LiveCred;\n}\n\nconst KERNEL_DEV_DIRS = ['/dev/shm'];\n\nfunction kernelDevDirs(bridge: SyncFsPosixBridge): string[] {\n return KERNEL_DEV_DIRS.filter((dir) => {\n try {\n return bridge.stat(dir).isDirectory;\n } catch {\n return false;\n }\n });\n}\n\nfunction topLevelDirs(\n bridge: SyncFsPosixBridge,\n warn: (message: string) => void\n): string[] | undefined {\n let names: string[];\n try {\n names = bridge.readdir('/');\n } catch (err) {\n warn(`cannot list the VFS root, nothing mounted: ${String(err)}`);\n return undefined;\n }\n const candidates = names\n .filter((name) => name && !name.includes('/') && !MODULE_OWNED_DIRS.has(name))\n .map((name) => `/${name}`);\n for (const dir of SYNTHETIC_DIRS) if (!candidates.includes(dir)) candidates.push(dir);\n const dirs: string[] = [];\n for (const dir of candidates) {\n try {\n if (bridge.stat(dir).isDirectory) dirs.push(dir);\n } catch {}\n }\n return dirs;\n}\n\ninterface MayDeleteFs {\n mayDelete?(dir: object, name: string, isdir: boolean): number;\n lookupNode?(parent: object, name: string): { parent?: object };\n}\n\nfunction linuxRmdir(Fs: EmscriptenFsForHook): void {\n const raw = Fs as unknown as MayDeleteFs;\n const { mayDelete, lookupNode } = raw;\n if (!mayDelete || !lookupNode) return;\n raw.mayDelete = (dir: object, name: string, isdir: boolean): number => {\n const code = mayDelete.call(raw, dir, name, isdir);\n if (code !== 10 || !isdir) return code;\n try {\n const node = lookupNode.call(raw, dir, name) as { parent?: object };\n if (node === node.parent) return 10;\n } catch {\n return code;\n }\n return 0;\n };\n}\n\nexport function mountVfsIntoEmscripten(\n Fs: EmscriptenFsForHook,\n deps: EmscriptenVfsHookDeps\n): EmscriptenVfsHandle {\n const { bridge, warn } = deps;\n const dirs = topLevelDirs(bridge, warn);\n const { plugin, mounted } = mountLiveVfsDirs(\n Fs,\n bridge,\n [...(dirs ?? []), ...kernelDevDirs(bridge)],\n warn\n );\n if (dirs) liveRoot(Fs, bridge);\n if (bridge.owners && Fs.lookupPath) useLiveChown(Fs as Parameters<typeof useLiveChown>[0]);\n if (bridge.links && Fs.lookupPath) readingLinks(Fs as Parameters<typeof readingLinks>[0]);\n linuxRmdir(Fs);\n if (deps.cred) Fs.sliccCred = deps.cred;\n try {\n (Fs.sliccChdirAt ?? Fs.chdir).call(Fs, deps.cwd);\n } catch (err) {\n warn(`cannot chdir to ${deps.cwd}: errno ${(err as { errno?: unknown }).errno}`);\n }\n return {\n mounted,\n flush: () => flushLiveVfs(Fs, plugin),\n flushDirty: () => plugin.flushDirty(),\n invalidate: () => invalidateLiveVfs(Fs, plugin),\n };\n}\n", "import type { ProcessFs, ProcessStream, ProcessSys } from './kernel-streams.ts';\nimport { fdOfPath } from './process-fds.ts';\n\ntype Call = <T>(syscall: () => T) => T;\n\ninterface MetadataFs {\n chown?(path: string | object, uid: number, gid: number, dontFollow?: boolean): void;\n lchown?(path: string, uid: number, gid: number): void;\n fchown?(fd: number, uid: number, gid: number): void;\n chmod?(path: string | object, mode: number, dontFollow?: boolean): void;\n fchmod?(fd: number, mode: number): void;\n utime?(path: string, atime: number | null, mtime: number | null): void;\n sliccTouch?: boolean;\n}\n\nfunction idOf(value: number): number | undefined {\n return value === -1 || value === 0xffffffff ? undefined : value >>> 0;\n}\n\nfunction timeOf(value: number | null | undefined): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\n\nexport function useKernelFdMetadata(Fs: ProcessFs, sys: ProcessSys, call: Call): void {\n const { fdChown, fdChmod, fdUtimes } = sys;\n const meta = Fs as unknown as MetadataFs;\n const kernelFd = (stream: ProcessStream | null | undefined): number | undefined =>\n stream?.sliccKernelFile ? stream.sliccKernelFd : undefined;\n const find = (match: (s: ProcessStream) => boolean): number | undefined => {\n for (const s of Fs.streams) {\n const kfd = s && match(s) ? kernelFd(s) : undefined;\n if (kfd !== undefined) return kfd;\n }\n return undefined;\n };\n const ofPath = (path: string | object, follow: boolean): number | undefined => {\n if (typeof path !== 'string') return find((s) => s.node === path);\n const fd = follow ? fdOfPath(path, Fs.cwd()) : undefined;\n if (fd !== undefined) return kernelFd(Fs.getStream(fd));\n return find((s) => s.path === path);\n };\n const ofFd = (fd: number): number | undefined => kernelFd(Fs.getStream(fd));\n const chownBy = (kfd: number, uid: number, gid: number) =>\n call(() => fdChown?.call(sys, kfd, idOf(uid), idOf(gid)));\n if (fdChown && meta.chown) {\n const chown = meta.chown.bind(Fs);\n meta.chown = (path, uid, gid, dontFollow) => {\n const kfd = ofPath(path, !dontFollow);\n if (kfd === undefined) return chown(path, uid, gid, dontFollow);\n chownBy(kfd, uid, gid);\n };\n }\n if (fdChown && meta.fchown) {\n const fchown = meta.fchown.bind(Fs);\n meta.fchown = (fd, uid, gid) => {\n const kfd = ofFd(fd);\n if (kfd === undefined) return fchown(fd, uid, gid);\n chownBy(kfd, uid, gid);\n };\n }\n if (fdChmod && meta.chmod) {\n const chmod = meta.chmod.bind(Fs);\n meta.chmod = (path, mode, dontFollow) => {\n const kfd = ofPath(path, !dontFollow);\n if (kfd === undefined) return chmod(path, mode, dontFollow);\n call(() => fdChmod.call(sys, kfd, mode & 0o7777));\n };\n }\n if (fdChmod && meta.fchmod) {\n const fchmod = meta.fchmod.bind(Fs);\n meta.fchmod = (fd, mode) => {\n const kfd = ofFd(fd);\n if (kfd === undefined) return fchmod(fd, mode);\n call(() => fdChmod.call(sys, kfd, mode & 0o7777));\n };\n }\n if (fdUtimes && meta.utime) {\n const utime = meta.utime.bind(Fs);\n meta.utime = (path, atime, mtime) => {\n const kfd = ofPath(path, true);\n if (kfd === undefined) return utime(path, atime, mtime);\n const now = meta.sliccTouch === true;\n call(() => fdUtimes.call(sys, kfd, timeOf(atime), timeOf(mtime), now));\n };\n }\n}\n", "import type { HeldMeta, PollState } from '../kernel/fd-table.ts';\nimport type { MountLine, ProcessListing } from '../kernel/proc-info.ts';\nimport type { Termios } from '../kernel/tty.ts';\nimport type { EmscriptenFsForHook } from '../realm/emscripten-vfs-hook.ts';\nimport { useKernelFdMetadata } from './fd-metadata.ts';\nimport { wasiErrno } from './wasi-errno.ts';\n\nconst POLLIN = 0x001;\nconst POLLOUT = 0x004;\nconst POLLERR = 0x008;\nconst POLLHUP = 0x010;\nconst POLLRDNORM = 0x040;\nconst POLLWRNORM = 0x100;\nconst TCSETSF = 0x5404;\n\nexport const O_NONBLOCK = 0o4000;\nconst SOCKET_MODE = 0o140777;\n\ninterface PtyPathFs {\n chown?: (path: string, ...rest: number[]) => void;\n lchown?: (path: string, ...rest: number[]) => void;\n chmod?: (path: string, ...rest: number[]) => void;\n lchmod?: (path: string, ...rest: number[]) => void;\n stat?: (path: string, ...rest: unknown[]) => unknown;\n lstat?: (path: string, ...rest: unknown[]) => unknown;\n}\n\nconst PTY_PATH = /^\\/dev\\/(?:ptmx|pts\\/(\\d+))$/;\n\nconst TTY_PATH = /^\\/dev\\/tty\\d+$/;\n\nconst PTS_MAJOR = 136;\n\ninterface TtyNodeFs {\n analyzePath?: (path: string) => { exists: boolean };\n mkdev?: (path: string, dev: number) => unknown;\n makedev?: (major: number, minor: number) => number;\n registerDevice?: (dev: number, ops: object) => void;\n}\n\ninterface DevDirFs extends TtyNodeFs {\n mkdir?: (path: string, mode?: number) => unknown;\n lookupNode?: (parent: object, name: string) => object;\n readdir?: (path: string) => string[];\n getPath?: (node: object) => string;\n lookupPath?: (path: string, opts: { follow: boolean }) => { path: string };\n cwd?: () => string;\n}\n\nconst TTY_NAME = /^tty\\d+$/;\n\nfunction isPtyPath(path: string): boolean {\n return PTY_PATH.test(path);\n}\n\nfunction ptyStat(path: string): object {\n const n = PTY_PATH.exec(path)?.[1];\n const now = new Date();\n return {\n dev: 0x16,\n ino: n === undefined ? 2 : 3 + Number(n),\n mode: n === undefined ? 0o20666 : 0o20620,\n nlink: 1,\n uid: 1000,\n gid: 1000,\n rdev: n === undefined ? (5 << 8) | 2 : (136 << 8) | Number(n),\n size: 0,\n blksize: 4096,\n blocks: 0,\n atime: now,\n mtime: now,\n ctime: now,\n };\n}\n\nconst SEALED_PATH = '/dev/sealed';\n\nconst STRERROR: Readonly<Record<string, string>> = {\n EACCES: 'Permission denied',\n EIO: 'I/O error',\n ENOTSUP: 'Not supported',\n EOPNOTSUPP: 'Not supported',\n EFBIG: 'File too large',\n EILSEQ: 'Illegal byte sequence',\n EINTR: 'Interrupted system call',\n};\nconst CLIPBOARD_PATH = '/dev/clipboard';\n\nfunction sealedStat(minor = 250): object {\n const now = new Date();\n return {\n dev: 0x16,\n ino: minor === 251 ? 2 : 1,\n mode: 0o20666,\n nlink: 1,\n uid: 0,\n gid: 0,\n rdev: (10 << 8) | minor,\n size: 0,\n blksize: 4096,\n blocks: 0,\n atime: now,\n mtime: now,\n ctime: now,\n };\n}\n\nconst O_CREAT = 0o100;\nconst O_EXCL = 0o200;\nconst O_NOCTTY = 0o400;\nconst O_TRUNC = 0o1000;\nconst O_DIRECTORY = 0o200000;\n\nconst KILLED_BY_SIGPIPE = 128 + 13;\n\nexport class ProcessExit extends Error {\n readonly status: number;\n\n constructor(status: number) {\n super(`exit ${status}`);\n this.status = status;\n }\n}\n\nexport class SyscallError extends Error {\n readonly code: string;\n\n constructor(code: string) {\n super(code);\n this.code = code;\n }\n}\n\nexport interface ReadOptions {\n nonblock?: boolean;\n peek?: boolean;\n}\n\nexport interface ProcessSys {\n read(fd: number, max: number, opts?: ReadOptions): Uint8Array;\n\n write(fd: number, bytes: Uint8Array, opts?: { nonblock?: boolean }): number;\n close(fd: number): void;\n\n pipe(): [number, number];\n poll(fd: number): PollState;\n\n openVfs(\n path: string,\n flags: number,\n position: number,\n opts?: {\n contents?: Uint8Array;\n orphan?: boolean;\n truncate?: boolean;\n create?: boolean;\n created?: boolean;\n pin?: { version: string; size: number };\n handle?: number;\n ino?: number;\n fifo?: boolean;\n nofollow?: boolean;\n }\n ): number;\n\n seek(fd: number, offset: number, whence: number): number;\n\n flush(fd: number): void;\n\n pread?(fd: number, max: number, at: number): Uint8Array;\n\n pwrite?(fd: number, bytes: Uint8Array, at: number): number;\n\n isatty?(fd: number): boolean;\n\n ttyName?(fd: number): string | undefined;\n\n kind?(fd: number): string | undefined;\n\n heldMeta?(fd: number): HeldMeta | undefined;\n\n access?(fd: number): 'read' | 'write' | undefined;\n\n size?(fd: number): number;\n fdStat?(fd: number): object | undefined;\n fdChmod?(fd: number, mode: number): void;\n fdChown?(fd: number, uid: number | undefined, gid: number | undefined): void;\n fdUtimes?(fd: number, atimeMs: number | null, mtimeMs: number | null, now: boolean): void;\n\n openTty?(name?: string): number;\n ttyNames?(): string[];\n ttyOwner?(name: string): TtyOwner | null;\n\n tcgets?(fd: number): Termios;\n tcsets?(fd: number, termios: Termios, flush?: boolean): void;\n winsize?(fd: number): [number, number];\n\n openPty?(): number;\n openPts?(n: number, noctty: boolean): number;\n\n ptyNumbers?(): number[];\n\n openSealed?(flags: number): number;\n openClipboard?(flags: number): number;\n clipboardAbort?(fd: number): void;\n procList?(): ProcessListing;\n mountList?(): MountLine[];\n}\n\nexport interface StreamOps {\n getattr?: (stream: ProcessStream) => object;\n llseek?: (stream: ProcessStream, offset: number, whence: number) => number;\n read?: (stream: ProcessStream, buffer: Uint8Array, offset: number, length: number) => number;\n write?: (stream: ProcessStream, buffer: Uint8Array, offset: number, length: number) => number;\n close?: (stream: ProcessStream) => void;\n dup?: (stream: ProcessStream) => void;\n poll?: (stream: ProcessStream) => number;\n fsync?: (stream: ProcessStream) => unknown;\n mmap?: unknown;\n}\n\nexport interface ProcessStream {\n fd: number;\n stream_ops: StreamOps;\n sliccKernelFd?: number;\n\n sliccKernelFile?: boolean;\n\n sliccCloexec?: boolean;\n\n sliccKernelSocket?: boolean;\n sliccKernelFifo?: string;\n path?: string;\n flags: number;\n position: number;\n tty?: unknown;\n node: {\n mode: number;\n mount?: { type?: unknown };\n node_ops?: { getattr?: (node: ProcessStream['node']) => object };\n };\n\n shared: object;\n}\n\nexport interface ProcessFs extends EmscriptenFsForHook {\n streams: (ProcessStream | null | undefined)[];\n getStream(fd: number): ProcessStream | null;\n open(path: string, flags: number, mode?: number): ProcessStream;\n dupStream(stream: ProcessStream, fd: number): ProcessStream;\n closeStream(fd: number): void;\n\n close?(stream: ProcessStream): void;\n isFile(mode: number): boolean;\n mkdirTree(path: string): void;\n cwd(): string;\n read(\n stream: ProcessStream,\n buffer: Uint8Array,\n offset: number,\n length: number,\n position?: number\n ): number;\n write(stream: ProcessStream, buffer: Uint8Array, offset: number, length: number): number;\n\n stat?(path: string, dontFollow?: boolean): object;\n writeFile?(path: string, data: string | Uint8Array): void;\n fstat?(fd: number): object;\n symlink?(target: string, path: string): void;\n lookupPath?(path: string, opts?: { follow?: boolean }): { node: object };\n}\n\ninterface FsNode {\n mode: number;\n node_ops: object;\n}\n\ninterface SocketNodeFs {\n mount(type: { mount(): FsNode }, opts: object, mountpoint: null): FsNode;\n createNode(parent: FsNode | null, name: string, mode: number, rdev: number): FsNode;\n createStream(stream: object, fd?: number): ProcessStream;\n}\n\nexport interface ProcessPipeFs {\n createPipe(): { readable_fd: number; writable_fd: number };\n}\n\nexport interface KernelStreamOptions {\n sigpipe?: () => boolean;\n\n restartable?: () => boolean;\n owners?: boolean;\n program?: string;\n}\n\nexport interface TtyOwner {\n uid: number;\n gid: number;\n mode?: number;\n}\n\nfunction nonblocking(stream: ProcessStream): { nonblock: true } | undefined {\n return (stream.flags & O_NONBLOCK) !== 0 ? { nonblock: true } : undefined;\n}\n\nfunction datesOf(real: object | undefined): Record<string, Date> {\n const dates: Record<string, Date> = {};\n for (const [key, value] of Object.entries(real ?? {}))\n if (/^[amc]time$/.test(key) && (typeof value === 'string' || typeof value === 'number'))\n dates[key] = new Date(value);\n return dates;\n}\n\nexport class KernelStreams {\n private readonly refs = new Map<number, number>();\n\n private socketRoot: FsNode | undefined;\n\n private sockets = 0;\n\n private readonly descriptions = new Map<string, () => object>();\n\n private described = 0;\n\n private readonly Fs: ProcessFs;\n\n private readonly sys: ProcessSys;\n\n private readonly options: KernelStreamOptions;\n\n constructor(\n Fs: ProcessFs,\n\n sys: ProcessSys,\n\n options: KernelStreamOptions = {}\n ) {\n this.Fs = Fs;\n\n this.sys = sys;\n\n this.options = options;\n }\n\n attach(stream: ProcessStream, kfd: number, terminal?: boolean): void {\n this.refs.set(kfd, (this.refs.get(kfd) ?? 0) + 1);\n\n stream.sliccKernelFd = kfd;\n stream.stream_ops = this.ops(kfd, stream.stream_ops);\n if (terminal ?? this.sys.isatty?.(kfd) ?? false) stream.tty = this.ttyOps(kfd);\n else delete stream.tty;\n }\n\n attachFifo(stream: ProcessStream, path: string): void {\n const kfd = this.call(() =>\n this.restarting(() => this.sys.openVfs(path, stream.flags, 0, { fifo: true }))\n );\n this.attach(stream, kfd, false);\n stream.sliccKernelFifo = path;\n }\n\n attachSocket(stream: ProcessStream, kfd: number): void {\n this.attach(stream, kfd, false);\n stream.sliccKernelSocket = true;\n }\n\n socketStream(flags: number): ProcessStream {\n const fs = this.Fs as unknown as Partial<SocketNodeFs>;\n if (!fs.mount || !fs.createNode || !fs.createStream) {\n const stream = this.Fs.open('/dev/null', 2);\n stream.flags = flags;\n return stream;\n }\n const createNode = fs.createNode;\n this.socketRoot ??= fs.mount({ mount: () => createNode(null, '/', 0o40777, 0) }, {}, null);\n const ino = ++this.sockets;\n const node = fs.createNode(this.socketRoot, `socket:${ino}`, SOCKET_MODE, 0);\n const now = new Date();\n const stat = { dev: 0, ino, mode: SOCKET_MODE, nlink: 1, uid: 0, gid: 0, rdev: 0, size: 0 };\n const times = { atime: now, mtime: now, ctime: now, blksize: 4096, blocks: 0 };\n node.node_ops = { getattr: () => ({ ...stat, ...times }) };\n return fs.createStream({ node, flags, seekable: false, position: 0, stream_ops: {} });\n }\n\n nameTerminal(stream: ProcessStream): void {\n const kfd = stream.sliccKernelFd;\n if (!stream.tty || kfd === undefined) return;\n const name = this.sys.ttyName?.(kfd);\n if (name) this.nameStream(stream, name);\n }\n\n private nameStream(stream: ProcessStream, name: string): void {\n stream.path = name;\n this.ttyNode(name);\n if (typeof this.Fs.stat !== 'function') return;\n\n stream.stream_ops = { ...stream.stream_ops, getattr: () => this.Fs.stat?.(name) ?? {} };\n }\n\n nameDevice(stream: ProcessStream, kind: 'sealed' | 'clipboard'): void {\n this.nameStream(stream, kind === 'sealed' ? SEALED_PATH : CLIPBOARD_PATH);\n }\n\n private listSealed(): void {\n const fs = this.Fs as unknown as TtyNodeFs;\n const { analyzePath, mkdev, makedev, registerDevice } = fs;\n if (!analyzePath || !mkdev || !makedev) return;\n const nodes: Array<[string, number, ((flags: number) => number) | undefined]> = [\n [SEALED_PATH, 250, this.sys.openSealed],\n [CLIPBOARD_PATH, 251, this.sys.openClipboard],\n ];\n for (const [path, minor, opener] of nodes) {\n if (!opener) continue;\n const dev = makedev.call(fs, 10, minor);\n registerDevice?.call(fs, dev, {\n open: (stream: ProcessStream) => this.openNode(stream, path, opener),\n });\n if (analyzePath.call(fs, path).exists) continue;\n try {\n const node = mkdev.call(fs, path, dev);\n if (typeof node === 'object' && node !== null) {\n const made = node as { node_ops?: object };\n made.node_ops = { ...made.node_ops, getattr: () => sealedStat(minor) };\n }\n } catch {}\n }\n }\n\n private openNode(\n stream: ProcessStream,\n path: string,\n opener: (flags: number) => number,\n terminal = false\n ): void {\n let kfd: number;\n try {\n kfd = this.call(() => opener.call(this.sys, stream.flags & 3));\n } catch (e) {\n this.Fs.closeStream(stream.fd);\n throw e;\n }\n this.attach(stream, kfd, terminal);\n this.nameStream(stream, path);\n if (path === CLIPBOARD_PATH) this.reportClose(kfd);\n }\n\n private readonly reporting = new Set<number>();\n\n reportClose(kfd: number): void {\n this.reporting.add(kfd);\n }\n\n quitting = false;\n\n private atExit = false;\n\n private failedAtExit = false;\n\n private readonly committed = new Set<number>();\n\n exiting(): () => void {\n this.atExit = true;\n return () => {\n this.atExit = false;\n };\n }\n\n private commitStdout(): void {\n const kfd = this.Fs.getStream(1)?.sliccKernelFd;\n if (kfd === undefined || !this.reporting.delete(kfd)) return;\n this.committed.add(kfd);\n try {\n this.sys.close(kfd);\n } catch (e) {\n if (e instanceof SyscallError) this.stdoutFailed(e.code);\n }\n }\n\n exitStatus(status: number): number {\n return this.failedAtExit && status === 0 ? 1 : status;\n }\n\n private reportedClose(stream: ProcessStream, kfd: number): void {\n try {\n this.sys.close(kfd);\n } catch (e) {\n if (this.quitting && stream.fd === 1 && e instanceof SyscallError) this.stdoutFailed(e.code);\n this.call(() => {\n throw e;\n });\n }\n }\n\n private stdoutFailed(code: string): void {\n this.failedAtExit = true;\n const stderr = this.Fs.getStream(2)?.sliccKernelFd;\n if (stderr === undefined) return;\n const line = `${this.options.program ?? 'program'}: write error: ${STRERROR[code] ?? code}\\n`;\n try {\n this.sys.write(stderr, new TextEncoder().encode(line));\n } catch {}\n }\n\n private creatingTerminal = false;\n\n private useTerminalNodes(): void {\n const fs = this.Fs as unknown as DevDirFs;\n const { lookupNode, readdir, getPath, mkdev, makedev } = fs;\n const ttyNames = this.sys.ttyNames?.bind(this.sys);\n if (!lookupNode || !readdir || !getPath || !mkdev || !makedev || !ttyNames) return;\n fs.lookupNode = (parent, name) => {\n try {\n return lookupNode.call(fs, parent, name);\n } catch (e) {\n const path = `/dev/${name}`;\n if (this.creatingTerminal || !TTY_NAME.test(name) || getPath.call(fs, parent) !== '/dev')\n throw e;\n if (!ttyNames().includes(path)) throw e;\n this.creatingTerminal = true;\n try {\n mkdev.call(fs, path, makedev.call(fs, 6, 0));\n } finally {\n this.creatingTerminal = false;\n }\n return lookupNode.call(fs, parent, name);\n }\n };\n fs.readdir = (path) => {\n const names = readdir.call(fs, path);\n if (path.replace(/\\/+$/, '') !== '/dev') return names;\n const missing = ttyNames()\n .map((tty) => tty.slice('/dev/'.length))\n .filter((name) => TTY_NAME.test(name) && !names.includes(name));\n return [...names, ...missing];\n };\n }\n\n private usePtsNodes(): void {\n const fs = this.Fs as unknown as DevDirFs;\n const { lookupNode, readdir, getPath, mkdir, mkdev, makedev } = fs;\n const numbers = this.sys.ptyNumbers?.bind(this.sys);\n if (!lookupNode || !readdir || !getPath || !mkdir || !mkdev || !makedev || !numbers) return;\n const make = (parent: object, name: string): boolean => {\n const dir = getPath.call(fs, parent);\n if (dir === '/dev' && name === 'pts') mkdir.call(fs, '/dev/pts', 0o755);\n else if (dir === '/dev' && name === 'ptmx' && this.sys.openPty)\n this.ptyNode('/dev/ptmx', makedev.call(fs, 5, 2));\n else if (dir === '/dev/pts' && numbers().includes(Number(name)) && /^\\d+$/.test(name))\n this.ptyNode(`/dev/pts/${name}`, makedev.call(fs, PTS_MAJOR, Number(name)));\n else return false;\n return true;\n };\n fs.lookupNode = (parent, name) => {\n try {\n return lookupNode.call(fs, parent, name);\n } catch (e) {\n if (this.creatingTerminal) throw e;\n this.creatingTerminal = true;\n let made: boolean;\n try {\n made = make(parent, name);\n } finally {\n this.creatingTerminal = false;\n }\n if (!made) throw e;\n return lookupNode.call(fs, parent, name);\n }\n };\n fs.readdir = (path) => {\n const at = path.replace(/\\/+$/, '');\n if (at === '/dev/pts') return ['.', '..', ...numbers().map(String)];\n const names = readdir.call(fs, path);\n if (at !== '/dev') return names;\n const extra = ['pts', ...(this.sys.openPty ? ['ptmx'] : [])];\n return [...names, ...extra.filter((name) => !names.includes(name))];\n };\n }\n\n private ptyNode(path: string, dev: number): void {\n const fs = this.Fs as unknown as DevDirFs;\n fs.registerDevice?.call(fs, dev, {\n open: (stream: ProcessStream) => {\n const n = PTY_PATH.exec(path)?.[1];\n const { openPty, openPts } = this.sys as Required<Pick<ProcessSys, 'openPty' | 'openPts'>>;\n const opener = () =>\n n === undefined\n ? openPty.call(this.sys)\n : openPts.call(this.sys, Number(n), (stream.flags & O_NOCTTY) !== 0);\n this.openNode(stream, path, opener, true);\n },\n });\n fs.mkdev?.call(fs, path, dev);\n }\n\n private ptsTarget(path: string, st: unknown): string | undefined {\n if (((st as { rdev?: number } | null)?.rdev ?? 0) < PTS_MAJOR << 8) return undefined;\n const { lookupPath } = this.Fs as unknown as DevDirFs;\n const real = lookupPath?.call(this.Fs, path, { follow: true }).path;\n return real !== undefined && isPtyPath(real) ? real : undefined;\n }\n\n private ttyNode(name: string): void {\n const { analyzePath, mkdev, makedev } = this.Fs as unknown as TtyNodeFs;\n if (!TTY_PATH.test(name) || !analyzePath || !mkdev || !makedev) return;\n if (!analyzePath.call(this.Fs, name).exists)\n mkdev.call(this.Fs, name, makedev.call(this.Fs, 6, 0));\n }\n\n private ttyOps(kfd: number): object {\n return {\n ops: {\n ioctl_tcgets: () => this.call(() => this.sys.tcgets?.(kfd)),\n ioctl_tcsets: (_tty: unknown, op: number, termios: Termios) =>\n this.call(() => {\n this.sys.tcsets?.(kfd, termios, op === TCSETSF);\n return 0;\n }),\n ioctl_tiocgwinsz: () => this.call(() => this.sys.winsize?.(kfd) ?? [24, 80]),\n fsync: () => {},\n },\n };\n }\n\n attachFile(stream: ProcessStream, kfd: number): void {\n this.attach(stream, kfd, false);\n stream.sliccKernelFile = true;\n stream.stream_ops = {\n ...stream.stream_ops,\n llseek: (_s, offset, whence) => this.call(() => this.sys.seek(kfd, offset, whence)),\n\n fsync: () =>\n this.call(() => {\n this.sys.flush(kfd);\n return 0;\n }),\n };\n }\n\n sizeFromKernel(stream: ProcessStream, kfd: number): void {\n const getattr = this.kernelAttrs(stream, kfd);\n if (getattr) this.describe(stream, `${stream.path ?? ''}:${++this.described}`, getattr);\n }\n\n fstatFromKernel(stream: ProcessStream, kfd: number): void {\n const getattr = this.kernelAttrs(stream, kfd);\n if (getattr) stream.stream_ops = { ...stream.stream_ops, getattr };\n }\n\n private kernelAttrs(stream: ProcessStream, kfd: number): (() => object) | undefined {\n const { size, fdStat } = this.sys;\n if (!size) return undefined;\n const node = stream.node;\n return () => {\n const base = node.node_ops?.getattr?.(node);\n const live = this.call(() => size.call(this.sys, kfd));\n const real = fdStat && this.call(() => fdStat.call(this.sys, kfd));\n return { ...base, ...real, ...datesOf(real), size: live };\n };\n }\n\n describe(stream: ProcessStream, name: string, getattr: () => object): void {\n if (this.descriptions.size === 0) this.useDescriptions();\n this.descriptions.set(name, getattr);\n stream.path = name;\n stream.stream_ops = { ...stream.stream_ops, getattr };\n }\n\n private useDescriptions(): void {\n const fs = this.Fs as unknown as PtyPathFs;\n for (const name of ['stat', 'lstat'] as const) {\n const original = fs[name];\n if (typeof original !== 'function') continue;\n fs[name] = (path: string, ...rest: unknown[]) => {\n const getattr = this.descriptions.get(path);\n return getattr ? getattr() : original.call(fs, path, ...rest);\n };\n }\n }\n\n useKernelFdMetadata(): void {\n useKernelFdMetadata(this.Fs, this.sys, this.call.bind(this));\n }\n\n useControllingTerminal(): void {\n if (typeof this.Fs.open !== 'function') return;\n this.usePtyPaths();\n this.useTerminalNodes();\n this.usePtsNodes();\n this.listSealed();\n const open = this.Fs.open.bind(this.Fs);\n this.Fs.open = (path, flags, mode) => {\n const device = typeof path === 'string' ? this.devicePath(path) : undefined;\n if (device !== undefined && TTY_PATH.test(device) && !this.terminalExists(device)) {\n throw new this.Fs.ErrnoError(wasiErrno('ENOENT'));\n }\n const pty =\n this.openPty(open, path, flags, mode) ??\n this.openSealed(open, path, flags, mode) ??\n this.openClipboard(open, path, flags, mode);\n if (pty) return pty;\n this.refuseExclusiveLink(path, flags);\n const stream = this.openRacing(open, path, flags, mode);\n\n if (!stream.tty) return stream;\n if (stream.path === '/dev/tty' && this.sys.openTty) {\n let kfd: number;\n try {\n kfd = this.call(() => this.sys.openTty?.() as number);\n } catch (e) {\n this.Fs.closeStream(stream.fd);\n throw e;\n }\n this.attach(stream, kfd, true);\n return stream;\n }\n\n let named: number | undefined;\n try {\n named = stream.path ? this.openNamedTerminal(stream.path) : undefined;\n } catch (e) {\n this.Fs.closeStream(stream.fd);\n throw e;\n }\n if (named !== undefined) {\n this.attach(stream, named, true);\n return stream;\n }\n\n const terminal = this.stdioTerminal();\n if (terminal !== undefined) this.attach(stream, terminal, true);\n return stream;\n };\n }\n\n private openRacing(\n open: NonNullable<ProcessFs['open']>,\n path: string,\n flags: number,\n mode?: number\n ): ProcessStream {\n try {\n return open(path, flags, mode);\n } catch (err) {\n const lost = (err as { errno?: number }).errno === wasiErrno('EEXIST') && !(flags & O_EXCL);\n if (!lost) throw err;\n return open(path, flags, mode);\n }\n }\n\n private refuseExclusiveLink(path: string, flags: number): void {\n if ((flags & (O_CREAT | O_EXCL)) !== (O_CREAT | O_EXCL)) return;\n let mode = 0;\n try {\n mode = (this.Fs.stat?.(path, true) as { mode?: number } | undefined)?.mode ?? 0;\n } catch {}\n if ((mode & 0o170000) === 0o120000) throw new this.Fs.ErrnoError(wasiErrno('EEXIST'));\n }\n\n private openPty(\n open: NonNullable<ProcessFs['open']>,\n path: string,\n flags: number,\n mode?: number\n ): ProcessStream | undefined {\n const pts = /^\\/dev\\/pts\\/(\\d+)$/.exec(path);\n if (path !== '/dev/ptmx' && !pts) return undefined;\n const { openPty, openPts } = this.sys;\n if (!openPty || !openPts) return undefined;\n const kfd = this.call(() =>\n pts ? openPts(Number(pts[1]), (flags & O_NOCTTY) !== 0) : openPty()\n ) as number;\n return this.vessel(open, kfd, { path, flags, mode }, true);\n }\n\n private openSealed(\n open: NonNullable<ProcessFs['open']>,\n path: string,\n flags: number,\n mode?: number\n ): ProcessStream | undefined {\n const { openSealed } = this.sys;\n if (path !== SEALED_PATH || !openSealed) return undefined;\n const kfd = this.call(() => openSealed.call(this.sys, flags & 3));\n return this.vessel(open, kfd, { path, flags, mode }, false);\n }\n\n private openClipboard(\n open: NonNullable<ProcessFs['open']>,\n path: string,\n flags: number,\n mode?: number\n ): ProcessStream | undefined {\n const { openClipboard } = this.sys;\n if (path !== CLIPBOARD_PATH || !openClipboard) return undefined;\n if (flags & O_DIRECTORY) throw new this.Fs.ErrnoError(wasiErrno('ENOTDIR'));\n const kfd = this.call(() => openClipboard.call(this.sys, flags & 3));\n try {\n const stream = this.vessel(open, kfd, { path, flags, mode }, false);\n this.reportClose(kfd);\n return stream;\n } catch (e) {\n this.sys.clipboardAbort?.(kfd);\n this.sys.close(kfd);\n throw e;\n }\n }\n\n private vessel(\n open: NonNullable<ProcessFs['open']>,\n kfd: number,\n at: { path: string; flags: number; mode: number | undefined },\n terminal: boolean\n ): ProcessStream {\n let stream: ProcessStream;\n try {\n stream = open('/dev/null', at.flags & ~(O_CREAT | O_EXCL | O_TRUNC), at.mode);\n } catch (e) {\n this.sys.close(kfd);\n throw e;\n }\n\n this.attach(stream, kfd, terminal);\n\n this.nameStream(stream, at.path);\n return stream;\n }\n\n private usePtyPaths(): void {\n const fs = this.Fs as unknown as PtyPathFs;\n for (const name of ['chown', 'lchown', 'chmod', 'lchmod'] as const) {\n const original = fs[name];\n if (typeof original !== 'function') continue;\n fs[name] = (path: string, ...rest: number[]) =>\n isPtyPath(path) ? this.existingPty(path) : original.call(fs, path, ...rest);\n }\n for (const name of ['stat', 'lstat'] as const) {\n const original = fs[name];\n if (typeof original !== 'function') continue;\n fs[name] = (path: string, ...rest: unknown[]) => {\n if (path === SEALED_PATH && this.sys.openSealed) return sealedStat();\n if (path === CLIPBOARD_PATH && this.sys.openClipboard) return sealedStat(251);\n const owned = this.ownedTty(path);\n if (owned && isPtyPath(path)) return this.owned(path, ptyStat(path));\n if (!isPtyPath(path))\n return this.pathStat(path, original.call(fs, path, ...rest), name, owned);\n this.existingPty(path);\n const st = ptyStat(path);\n return this.options.owners === true ? { ...st, uid: 0, gid: 0 } : st;\n };\n }\n }\n\n private pathStat(path: string, st: unknown, name: 'stat' | 'lstat', owned: boolean): unknown {\n const pts = name === 'stat' ? this.ptsTarget(path, st) : undefined;\n if (pts) {\n this.existingPty(pts);\n return owned ? this.owned(pts, ptyStat(pts)) : ptyStat(pts);\n }\n return owned && TTY_PATH.test(path) ? this.owned(path, st as object) : st;\n }\n\n private ownedTty(path: string): boolean {\n return this.options.owners === true && this.sys.ttyOwner !== undefined && path !== '/dev/ptmx';\n }\n\n private owned(path: string, st: object): object {\n const ask = this.sys.ttyOwner as (name: string) => TtyOwner | null;\n const owner = this.call(() => ask.call(this.sys, path));\n if (!owner) return st;\n const mode = ((st as { mode: number }).mode & ~0o7777) | (owner.mode ?? 0o620);\n return { ...st, uid: owner.uid, gid: owner.gid, mode };\n }\n\n private existingPty(path: string): void {\n const n = PTY_PATH.exec(path)?.[1];\n const exists =\n n === undefined\n ? this.sys.openPty !== undefined\n : (this.sys.ptyNumbers?.().includes(Number(n)) ?? false);\n if (!exists) throw new this.Fs.ErrnoError(wasiErrno('ENOENT'));\n }\n\n private devicePath(path: string): string | undefined {\n const name = path.slice(path.lastIndexOf('/') + 1);\n if (!TTY_NAME.test(name)) return undefined;\n const { lookupPath, cwd } = this.Fs as unknown as DevDirFs;\n const absolute = path.startsWith('/') ? path : `${cwd?.call(this.Fs) ?? '/'}/${path}`;\n const dir = absolute.slice(0, absolute.lastIndexOf('/')) || '/';\n try {\n const real = lookupPath?.call(this.Fs, dir, { follow: true }).path ?? dir;\n return `${real === '/' ? '' : real}/${name}`;\n } catch {\n return absolute;\n }\n }\n\n private terminalExists(path: string): boolean {\n const { analyzePath } = this.Fs as unknown as TtyNodeFs;\n return analyzePath?.call(this.Fs, path).exists ?? true;\n }\n\n private openNamedTerminal(path: string): number | undefined {\n const { openTty } = this.sys;\n if (!openTty) return undefined;\n try {\n return openTty.call(this.sys, path);\n } catch (e) {\n if (e instanceof SyscallError && e.code === 'ENXIO') return undefined;\n return this.call(() => {\n throw e;\n });\n }\n }\n\n private stdioTerminal(): number | undefined {\n for (const fd of [0, 1, 2]) {\n const stream = this.Fs.getStream(fd);\n if (stream?.sliccKernelFd !== undefined && stream.tty) return stream.sliccKernelFd;\n }\n return undefined;\n }\n\n usePipes(pipefs: ProcessPipeFs): void {\n const createPipe = pipefs.createPipe.bind(pipefs);\n pipefs.createPipe = () => {\n const [read, write] = this.call(() => this.sys.pipe());\n\n let fds: ReturnType<ProcessPipeFs['createPipe']>;\n try {\n fds = createPipe();\n } catch (e) {\n for (const kfd of [read, write]) {\n try {\n this.sys.close(kfd);\n } catch {}\n }\n throw e;\n }\n this.attach(this.Fs.getStream(fds.readable_fd) as ProcessStream, read, false);\n this.attach(this.Fs.getStream(fds.writable_fd) as ProcessStream, write, false);\n return fds;\n };\n }\n\n private restarting<T>(syscall: () => T): T {\n for (;;) {\n try {\n return syscall();\n } catch (e) {\n if (!(e instanceof SyscallError && e.code === 'EINTR' && this.options.restartable?.())) {\n throw e;\n }\n }\n }\n }\n\n private call<T>(syscall: () => T): T {\n try {\n return syscall();\n } catch (e) {\n if (e instanceof SyscallError) throw new this.Fs.ErrnoError(wasiErrno(e.code));\n throw e;\n }\n }\n\n private ops(kfd: number, base: StreamOps): StreamOps {\n return {\n ...base,\n\n llseek: () =>\n this.call(() => {\n throw new SyscallError('ESPIPE');\n }),\n read: (s, buffer, offset, length) =>\n this.call(() => {\n const bytes = this.restarting(() => this.sys.read(kfd, length, nonblocking(s)));\n buffer.set(bytes, offset);\n return bytes.length;\n }),\n write: (s, buffer, offset, length) => {\n try {\n const bytes = new Uint8Array(buffer.buffer, buffer.byteOffset + offset, length).slice();\n return this.restarting(() => this.sys.write(kfd, bytes, nonblocking(s)));\n } catch (e) {\n if (e instanceof SyscallError && e.code === 'EPIPE' && !this.options.sigpipe?.()) {\n throw new ProcessExit(KILLED_BY_SIGPIPE);\n }\n return this.call(() => {\n throw e;\n });\n }\n },\n fsync: () => 0,\n poll: () => {\n const state = this.call(() => this.sys.poll(kfd));\n let mask = 0;\n if (state.readable) mask |= POLLIN | POLLRDNORM;\n if (state.writable) mask |= POLLOUT | POLLWRNORM;\n\n if (state.hangup) mask |= state.readable ? POLLHUP : POLLERR;\n return mask;\n },\n dup: (stream) => {\n base.dup?.(stream);\n this.refs.set(kfd, (this.refs.get(kfd) ?? 0) + 1);\n },\n close: (stream) => {\n if (this.atExit && stream.fd === 2 && this.reporting.size > 0) this.commitStdout();\n try {\n base.close?.(stream);\n } catch {}\n const left = (this.refs.get(kfd) ?? 1) - 1;\n if (left > 0) {\n this.refs.set(kfd, left);\n return;\n }\n this.refs.delete(kfd);\n if (this.committed.size > 0 && this.committed.delete(kfd)) return;\n if (this.reporting.size > 0 && this.reporting.delete(kfd)) {\n this.reportedClose(stream, kfd);\n return;\n }\n try {\n this.sys.close(kfd);\n } catch {}\n },\n };\n }\n}\n", "import type { InheritedSlot } from '../kernel/children.ts';\nimport type { DeviceAccess, DeviceMeta, KernelDevice } from '../kernel/fd-table.ts';\nimport type { ForkStream, KernelStreamEntry } from '../kernel/protocol.ts';\nimport type { KernelStreams, ProcessFs, ProcessStream, ProcessSys } from './kernel-streams.ts';\nimport { closesOnExec, O_CLOEXEC, setCloseOnExec } from './process-fds.ts';\n\nconst O_RDWR = 0o2;\nconst O_ACCMODE = 0o3;\nconst O_CREAT = 0o100;\nconst O_EXCL = 0o200;\nconst O_TRUNC = 0o1000;\n\nconst PLACEHOLDER_DIR = '/dev/slicc-fd';\n\ninterface LiveNodeBag {\n live?: {\n orphan?: boolean;\n data?: Uint8Array;\n len?: number;\n handle?: number;\n stat?: { ino?: number };\n ranged?: {\n pinnedVersion?: string;\n size(): number;\n read(at: number, length: number): Uint8Array;\n };\n };\n mode: number;\n}\n\nfunction isVfsFile(Fs: ProcessFs, stream: ProcessStream): boolean {\n const node = stream.node as LiveNodeBag;\n return node.live !== undefined && Fs.isFile(node.mode);\n}\n\nfunction orphanContents(stream: ProcessStream): Uint8Array | undefined {\n const live = (stream.node as LiveNodeBag).live;\n if (!live?.orphan) return undefined;\n if (live.ranged) return live.ranged.read(0, live.ranged.size());\n return live.data?.slice(0, live.len ?? live.data.length) ?? new Uint8Array(0);\n}\n\nfunction heldOf(live: LiveNodeBag['live']): {\n pin?: { version: string; size: number };\n handle?: number;\n ino?: number;\n} {\n const ranged = live?.ranged;\n const version = ranged?.pinnedVersion;\n const pin = ranged && version !== undefined ? { version, size: ranged.size() } : undefined;\n const handle = live?.handle;\n const ino = live?.stat?.ino;\n return {\n ...(pin ? { pin } : {}),\n ...(handle !== undefined ? { handle } : {}),\n ...(handle !== undefined && ino !== undefined ? { ino } : {}),\n };\n}\n\nexport function vfsPromoter(\n Fs: ProcessFs,\n sys: ProcessSys,\n streams: KernelStreams,\n livePath: (stream: ProcessStream) => string\n): (stream: ProcessStream) => void {\n const promoted = new Map<object, number>();\n return (stream) => {\n if (stream.sliccKernelFd !== undefined || !isVfsFile(Fs, stream)) return;\n const live = stream.stream_ops;\n let kfd = promoted.get(stream.shared);\n if (kfd === undefined) {\n live.fsync?.(stream);\n const contents = orphanContents(stream);\n const held = heldOf((stream.node as LiveNodeBag).live);\n kfd = sys.openVfs(\n livePath(stream),\n stream.flags,\n stream.position,\n contents !== undefined\n ? { contents, orphan: true }\n : Object.keys(held).length > 0\n ? held\n : undefined\n );\n promoted.set(stream.shared, kfd);\n }\n streams.attachFile(stream, kfd);\n streams.fstatFromKernel(stream, kfd);\n };\n}\n\nexport function describeForFork(\n Fs: ProcessFs,\n sys: ProcessSys,\n streams: KernelStreams,\n livePath: (stream: ProcessStream) => string\n): ForkStream[] {\n const promote = vfsPromoter(Fs, sys, streams, livePath);\n const out: ForkStream[] = [];\n for (const stream of Fs.streams) {\n if (!stream) continue;\n promote(stream);\n if (stream.sliccKernelFd !== undefined) {\n out.push(kernelEntry(stream, stream.sliccKernelFd));\n } else if (stream.path) {\n const flags = stream.flags | (closesOnExec(stream) ? O_CLOEXEC : 0);\n out.push({ fd: stream.fd, path: stream.path, flags });\n }\n }\n return out;\n}\n\nconst NAMED_DEVICES: Readonly<Record<string, 'sealed' | 'clipboard'>> = {\n '/dev/sealed': 'sealed',\n '/dev/clipboard': 'clipboard',\n};\n\nfunction kernelEntry(stream: ProcessStream, kernel: number): ForkStream {\n const cloexec = closesOnExec(stream) ? { cloexec: true } : {};\n if (stream.sliccKernelSocket) {\n return { fd: stream.fd, kernel, kind: 'socket', flags: stream.flags, ...cloexec };\n }\n const device = stream.path === undefined ? undefined : NAMED_DEVICES[stream.path];\n const kind = stream.sliccKernelFile ? 'file' : stream.tty ? 'tty' : (device ?? 'stream');\n const access = kind === 'tty' ? O_RDWR : (stream.flags ?? O_RDWR) & O_ACCMODE;\n const fifo = stream.sliccKernelFifo ? { fifo: stream.sliccKernelFifo } : {};\n return { fd: stream.fd, kernel, kind, flags: access, ...cloexec, ...fifo };\n}\n\nconst ACCESS: Readonly<Record<number, DeviceAccess>> = { 0: 'read', 1: 'write' };\n\nconst DEVICES: Readonly<Record<string, KernelDevice>> = {\n '/dev/null': 'null',\n '/dev/zero': 'zero',\n '/dev/full': 'full',\n '/dev/urandom': 'urandom',\n '/dev/random': 'urandom',\n};\n\nexport function describeInherited(\n Fs: ProcessFs,\n sys: ProcessSys,\n streams: KernelStreams,\n livePath: (stream: ProcessStream) => string,\n actions: ReadonlyArray<readonly [number, number]> = []\n): InheritedSlot[] {\n const table = new Map<number, { stream: ProcessStream; cloexec: boolean }>();\n for (const stream of Fs.streams) {\n if (stream) table.set(stream.fd, { stream, cloexec: closesOnExec(stream) });\n }\n for (const [target, source] of actions) {\n if (target <= 2) continue;\n const from = source >= 0 ? table.get(source) : undefined;\n if (from) table.set(target, { stream: from.stream, cloexec: false });\n else table.delete(target);\n }\n const slots = new Map<number, ProcessStream>();\n for (const [fd, { stream, cloexec }] of table) {\n if (fd > 2 && !cloexec) slots.set(fd, stream);\n }\n const promote = vfsPromoter(Fs, sys, streams, livePath);\n const out: InheritedSlot[] = [];\n for (const [fd, stream] of slots) {\n promote(stream);\n const slot = inheritedSlot(fd, stream);\n if (slot) out.push(slot);\n }\n return out;\n}\n\nexport function deviceOfStream(stream: ProcessStream): DeviceMeta | undefined {\n const device = stream.path === undefined ? undefined : DEVICES[stream.path];\n if (!device || stream.sliccKernelFd !== undefined) return undefined;\n const access = ACCESS[stream.flags & O_ACCMODE];\n return { device, ...(access ? { access } : {}) };\n}\n\nfunction inheritedSlot(fd: number, stream: ProcessStream): InheritedSlot | undefined {\n if (stream.sliccKernelFd === undefined) {\n const device = deviceOfStream(stream);\n return device ? { fd, ...device } : undefined;\n }\n const flags = stream.sliccKernelSocket ? { flags: stream.flags } : {};\n return { fd, kernel: stream.sliccKernelFd, ...flags };\n}\n\nfunction place(Fs: ProcessFs, stream: ProcessStream, fd: number): ProcessStream {\n if (stream.fd === fd) return stream;\n const moved = Fs.dupStream(stream, fd);\n Fs.closeStream(stream.fd);\n return moved;\n}\n\nfunction placeholder(\n Fs: ProcessFs,\n streams: KernelStreams,\n entry: { fd: number; kind: string; flags?: number }\n): ProcessStream {\n const access = entry.flags ?? O_RDWR;\n if (entry.kind === 'socket') return streams.socketStream(access);\n if (entry.kind === 'tty') return Fs.open('/dev/tty', O_RDWR);\n if (entry.kind === 'stream' || entry.kind === 'clipboard' || entry.kind === 'sealed')\n return Fs.open('/dev/null', access);\n Fs.mkdirTree(PLACEHOLDER_DIR);\n return Fs.open(`${PLACEHOLDER_DIR}/${entry.fd}`, access | O_CREAT);\n}\n\nconst FIFO_MODE = 0o010600;\n\nlet nextStreamIno = 0x40000000;\n\nconst streamInos = new WeakMap<KernelStreams, Map<string, number>>();\n\nfunction asFifo(stream: ProcessStream, streams: KernelStreams, identity: string): void {\n const inos = streamInos.get(streams) ?? new Map<string, number>();\n streamInos.set(streams, inos);\n const fixed = inos.get(identity) ?? nextStreamIno++;\n inos.set(identity, fixed);\n const node = stream.node;\n streams.describe(stream, `pipe:[${fixed}]`, () => ({\n ...node.node_ops?.getattr?.(node),\n mode: FIFO_MODE,\n ino: fixed,\n size: 0,\n }));\n}\n\nexport function placeKernelStream(\n Fs: ProcessFs,\n streams: KernelStreams,\n entry: KernelStreamEntry\n): ProcessStream {\n const stream = place(Fs, placeholder(Fs, streams, entry), entry.fd);\n if (entry.kind === 'file') {\n streams.attachFile(stream, entry.kernel);\n streams.sizeFromKernel(stream, entry.kernel);\n } else if (entry.kind === 'socket') streams.attachSocket(stream, entry.kernel);\n else streams.attach(stream, entry.kernel, entry.kind === 'tty');\n if (entry.kind === 'clipboard') streams.reportClose(entry.kernel);\n if (entry.kind === 'sealed' || entry.kind === 'clipboard') streams.nameDevice(stream, entry.kind);\n if (entry.kind === 'tty') streams.nameTerminal(stream);\n if (entry.kind === 'stream') {\n asFifo(stream, streams, entry.desc !== undefined ? `d${entry.desc}` : `k${entry.kernel}`);\n if (entry.fifo) stream.path = entry.fifo;\n }\n setCloseOnExec(stream, entry.cloexec === true);\n return stream;\n}\n\nexport function restoreForkedStreams(\n Fs: ProcessFs,\n streams: KernelStreams,\n table: readonly ForkStream[]\n): void {\n for (const stream of Fs.streams) if (stream) Fs.closeStream(stream.fd);\n for (const entry of table) {\n try {\n if ('kernel' in entry) {\n placeKernelStream(Fs, streams, entry);\n } else {\n const placed = place(\n Fs,\n Fs.open(entry.path, entry.flags & ~(O_CREAT | O_EXCL | O_TRUNC)),\n entry.fd\n );\n\n setCloseOnExec(placed, (entry.flags & O_CLOEXEC) !== 0);\n }\n } catch {}\n }\n}\n", "import type { ChildStdio, InheritedSlot } from '../kernel/children.ts';\nimport type { Cred, CredChange } from '../kernel/cred.ts';\nimport type { WasmSyscall } from '../kernel/process.ts';\nimport type { ForkState, ForkStream } from '../kernel/protocol.ts';\nimport { defaultAction, SIG, sigbit } from '../kernel/signals.ts';\nimport type { SyncFsResult } from '../realm/sync-fs-wire.ts';\nimport type { SyncSabTransport } from '../realm/sync-sab-bridge.ts';\nimport type { ProcessFs, ProcessStream } from './kernel-streams.ts';\nimport { deviceOfStream } from './process-fork.ts';\nimport type { HttpKernel } from './process-http.ts';\nimport { lockPromoters } from './process-locks.ts';\nimport type { SocketKernel } from './process-sockets.ts';\nimport type { Owner } from './realm-user.ts';\nimport { wasiErrno } from './wasi-errno.ts';\n\nconst S_IFMT = 0o170000;\nconst UNSEEDED = sigbit(SIG.KILL) | sigbit(SIG.STOP) | 1;\nconst S_IFDIR = 0o040000;\n\nconst POLLIN = 0x001;\nconst POLLOUT = 0x004;\nconst POLLERR = 0x008;\nconst POLLHUP = 0x010;\nconst POLLNVAL = 0x020;\n\nconst SELECT_SLICE_MS = 20;\n\nconst WUNTRACED = 2;\nconst WCONTINUED = 8;\n\nexport function inheritedOf(r: SyncFsResult): number {\n return r.ok && r.kind === 'json' ? (r.json as number) & ~UNSEEDED : 0;\n}\n\nexport function inheritedSignals(transport: SyncSabTransport): number {\n return inheritedOf(\n transport.call({ op: 'sig-inherited' }, Number.POSITIVE_INFINITY, 'sig-inherited')\n );\n}\n\nfunction status(r: SyncFsResult): number {\n return r.ok ? 0 : -wasiErrno(r.errno);\n}\n\nfunction credOf(r: SyncFsResult): Cred | number {\n return r.ok ? ((r as { json?: unknown }).json as Cred) : -wasiErrno(r.errno);\n}\n\nfunction number(r: SyncFsResult): number {\n if (!r.ok) return -wasiErrno(r.errno);\n return r.kind === 'json' && typeof r.json === 'number' ? r.json : -wasiErrno('EIO');\n}\n\nfunction throughKernel(sig: number): boolean {\n if (sig === 0) return false;\n const action = defaultAction(sig);\n return action === 'terminate' || action === 'stop';\n}\n\nexport interface ProcessKernel {\n spawn(\n file: string,\n argv: string[],\n env: Record<string, string> | null,\n cwd: string | null,\n stdio: number[],\n actions?: ReadonlyArray<readonly [number, number]>\n ): number;\n\n wait(pid: number, nohang: boolean, options?: number): [number, number] | number;\n\n fork(state: ForkState): number;\n\n kill(pid: number, sig: number): number;\n\n pause(): number;\n\n sigInherited(): number;\n\n setpgid(pid: number, pgid: number): number;\n setsid(): number;\n\n getpgid(pid: number): number;\n getsid(pid: number): number;\n\n cred(): Cred | number;\n\n setcred(change: CredChange): Cred | number;\n\n tcgetpgrp(fd: number): number;\n\n tcsetpgrp(fd: number, pgrp: number): number;\n\n execWait(pid: number): number;\n\n execve(\n file: string,\n argv: string[],\n env: Record<string, string> | null,\n cwd: string | null\n ): number;\n\n mount(source: string, target: string, fstype: string, flags: number, data: string): number;\n\n umount2(target: string, flags: number): number;\n\n select(\n read: number[],\n write: number[],\n timeoutMs: number\n ): { read: number[]; write: number[] } | number;\n\n net?: SocketKernel;\n\n hostname?: string;\n\n http?: HttpKernel;\n}\n\nexport interface ProcessKernelDeps {\n transport: SyncSabTransport;\n owner?: Owner;\n Fs: ProcessFs;\n\n env: Record<string, string>;\n\n beforeSpawn(): void;\n\n afterChild(): void;\n\n describeFork(): ForkStream[];\n\n inherit?(actions?: ReadonlyArray<readonly [number, number]>): InheritedSlot[];\n\n stdioPromoter?(): (stream: ProcessStream) => void;\n\n pid?: number;\n\n raise?(sig: number): void;\n\n restartable?(): boolean;\n\n memory?(): WebAssembly.Memory | undefined;\n\n deliveries?(): number;\n}\n\nfunction restarted(issue: () => SyncFsResult): SyncFsResult {\n for (;;) {\n const r = issue();\n if (r.ok || r.errno !== 'EINTR') return r;\n }\n}\n\nfunction forkRestarted(\n deps: ProcessKernelDeps,\n state: ForkState,\n snapshotAt: number | undefined\n): SyncFsResult {\n let memory = state.memory;\n let seen = snapshotAt;\n return restarted(() => {\n const streams = deps.describeFork();\n const now = deps.deliveries?.();\n if (now !== seen) {\n seen = now;\n const live = deps.memory?.();\n if (live) memory = new Uint8Array(live.buffer).slice();\n }\n const forked = { ...state, memory, streams, cwd: heldCwdOf(deps.Fs) };\n return deps.transport.call(\n { op: 'proc-fork', state: forked, restart: true },\n Infinity,\n 'proc-fork'\n );\n });\n}\n\nfunction flushed(beforeSpawn: () => void): number {\n try {\n beforeSpawn();\n return 0;\n } catch (err) {\n const errno = (err as { errno?: unknown } | null)?.errno;\n if (typeof errno !== 'number') throw err;\n return -errno;\n }\n}\n\nfunction drain(Fs: ProcessFs, stream: ProcessStream): Uint8Array {\n const chunks: Uint8Array[] = [];\n const buffer = new Uint8Array(65536);\n try {\n for (let n = Fs.read(stream, buffer, 0, buffer.length); n > 0; ) {\n chunks.push(buffer.slice(0, n));\n n = Fs.read(stream, buffer, 0, buffer.length);\n }\n } catch {}\n const out = new Uint8Array(chunks.reduce((n, c) => n + c.length, 0));\n let offset = 0;\n for (const chunk of chunks) {\n out.set(chunk, offset);\n offset += chunk.length;\n }\n return out;\n}\n\nfunction kernelSelect(\n Fs: ProcessFs,\n transport: SyncSabTransport,\n read: number[],\n write: number[],\n timeoutMs: number\n): { read: number[]; write: number[] } | number {\n const kernel = (fd: number) => Fs.getStream(fd)?.sliccKernelFd as number;\n const kr = read.map(kernel);\n const kw = write.map(kernel);\n const r = transport.call({ op: 'fd-select', read: kr, write: kw, timeoutMs }, Infinity, 'select');\n if (!r.ok) return -wasiErrno(r.errno);\n const got = (r.kind === 'json' ? r.json : { read: [], write: [] }) as {\n read: number[];\n write: number[];\n };\n return {\n read: read.filter((_, i) => got.read.includes(kr[i] as number)),\n write: write.filter((_, i) => got.write.includes(kw[i] as number)),\n };\n}\n\nfunction ownReady(\n Fs: ProcessFs,\n read: number[],\n write: number[]\n): { read: number[]; write: number[] } {\n const flags = (fd: number): number => {\n const stream = Fs.getStream(fd);\n if (!stream) return POLLNVAL;\n return stream.stream_ops.poll ? stream.stream_ops.poll(stream) : POLLIN | POLLOUT;\n };\n return {\n read: read.filter((fd) => flags(fd) & (POLLIN | POLLHUP | POLLERR | POLLNVAL)),\n write: write.filter((fd) => flags(fd) & (POLLOUT | POLLERR | POLLNVAL)),\n };\n}\n\nfunction anySelect(\n Fs: ProcessFs,\n transport: SyncSabTransport,\n read: number[],\n write: number[],\n timeoutMs: number\n): { read: number[]; write: number[] } | number {\n const kernel = (fd: number) => Fs.getStream(fd)?.sliccKernelFd;\n const own = (fd: number) => kernel(fd) === undefined;\n if (![...read, ...write].some(own)) return kernelSelect(Fs, transport, read, write, timeoutMs);\n const deadline = timeoutMs < 0 ? Number.POSITIVE_INFINITY : Date.now() + timeoutMs;\n const kernelRead = read.filter((fd) => !own(fd));\n const kernelWrite = write.filter((fd) => !own(fd));\n for (;;) {\n const local = ownReady(Fs, read.filter(own), write.filter(own));\n const pending = local.read.length > 0 || local.write.length > 0;\n const slice = pending ? 0 : Math.min(SELECT_SLICE_MS, Math.max(0, deadline - Date.now()));\n const got = kernelSelect(Fs, transport, kernelRead, kernelWrite, slice);\n if (typeof got === 'number') return got;\n const ready = { read: [...local.read, ...got.read], write: [...local.write, ...got.write] };\n if (ready.read.length > 0 || ready.write.length > 0 || Date.now() >= deadline) {\n return ready;\n }\n }\n}\n\nconst heldCwdOf = (Fs: ProcessFs): string => (Fs.sliccHeldCwd ?? Fs.cwd).call(Fs);\n\nexport function createProcessKernel(deps: ProcessKernelDeps): ProcessKernel {\n const { transport, Fs } = deps;\n if (deps.stdioPromoter) lockPromoters.set(Fs, deps.stdioPromoter);\n const reaped = new Map<number, number>();\n\n const call = (req: WasmSyscall, label: string): SyncFsResult =>\n transport.call(req, Infinity, label);\n\n const at = (path: string) => (path === '' || path.startsWith('/') ? path : `${Fs.cwd()}/${path}`);\n\n const slot = (fd: number, n: number, promote?: (stream: ProcessStream) => void): ChildStdio => {\n const stream = fd >= 0 ? Fs.getStream(fd) : null;\n if (!stream) return { none: true };\n promote?.(stream);\n if (stream.sliccKernelFd !== undefined) return { fd: stream.sliccKernelFd };\n\n if (((stream.node?.mode ?? 0) & S_IFMT) === S_IFDIR && stream.path) return { dir: stream.path };\n const device = deviceOfStream(stream);\n if (device) return device;\n return n === 0 ? { input: drain(Fs, stream) } : { capture: true };\n };\n\n const kernelWait = (pid: number, nohang: boolean, options = 0): [number, number] | number => {\n const req = {\n op: 'proc-wait' as const,\n pid,\n nohang,\n ...(options & WUNTRACED ? { untraced: true } : {}),\n ...(options & WCONTINUED ? { continued: true } : {}),\n };\n let r = transport.call(req, Infinity, `proc-wait ${pid}`);\n\n while (!r.ok && r.errno === 'EINTR' && deps.restartable?.()) {\n r = transport.call(req, Infinity, `proc-wait ${pid}`);\n }\n if (!r.ok) return -wasiErrno(r.errno);\n const waited = r.kind === 'json' ? (r.json as [number, number]) : [0, 0];\n if (waited[0] > 0) deps.afterChild();\n return [waited[0], waited[1]];\n };\n\n const deliver = (pid: number, n: number, fd: number): void => {\n const r = transport.call(\n { op: 'proc-captured', pid, slot: n },\n Infinity,\n `proc-captured ${pid}`\n );\n const stream = Fs.getStream(fd);\n if (r.ok && r.kind === 'bytes' && r.bytes.length > 0 && stream) {\n Fs.write(stream, r.bytes, 0, r.bytes.length);\n }\n };\n\n const execCaptures = new Map<number, () => void>();\n\n const execWait = (pid: number): number => {\n const r = transport.call({ op: 'proc-exec', pid }, Infinity, `exec ${pid}`);\n if (!r.ok) return -wasiErrno(r.errno);\n deps.afterChild();\n return r.kind === 'json' ? (r.json as [number, number])[1] : 0;\n };\n\n const spawnChild = (\n file: string,\n argv: string[],\n env: Record<string, string> | null,\n cwd: string | null,\n fds: number[],\n actions: ReadonlyArray<readonly [number, number]> | undefined,\n exec: boolean\n ): number => {\n const unflushed = flushed(deps.beforeSpawn);\n if (unflushed < 0) return unflushed;\n const promote = deps.stdioPromoter?.();\n const stdio = [0, 1, 2].map((n) => slot(fds[n] ?? -1, n, promote));\n const inherit = deps.inherit?.(actions) ?? [];\n const req = {\n op: 'proc-spawn' as const,\n file,\n argv,\n env: env ?? deps.env,\n cwd: cwd ?? heldCwdOf(Fs),\n ...(cwd !== null ? { chdir: true as const } : {}),\n stdio,\n ...(inherit.length > 0 ? { inherit } : {}),\n ...(exec ? { exec } : {}),\n restart: true as const,\n };\n const r = restarted(() => transport.call(req, Infinity, `proc-spawn ${file}`));\n if (!r.ok) return -wasiErrno(r.errno);\n const pid = r.kind === 'json' ? (r.json as number) : 0;\n const captures = [1, 2].filter((n) => 'capture' in (stdio[n] as ChildStdio));\n if (captures.length === 0) return pid;\n if (exec) {\n execCaptures.set(pid, () => {\n for (const n of captures) deliver(pid, n, fds[n] as number);\n });\n return pid;\n }\n const waited = kernelWait(pid, false);\n if (typeof waited === 'number') return waited;\n for (const n of captures) deliver(pid, n, fds[n] as number);\n reaped.set(pid, waited[1]);\n return pid;\n };\n\n return {\n spawn(file, argv, env, cwd, fds, actions) {\n return spawnChild(file, argv, env, cwd, fds, actions, false);\n },\n fork(state) {\n const snapshotAt = deps.deliveries?.();\n const unflushed = flushed(deps.beforeSpawn);\n if (unflushed < 0) return unflushed;\n const r = forkRestarted(deps, state, snapshotAt);\n if (!r.ok) return -wasiErrno(r.errno);\n return r.kind === 'json' ? (r.json as number) : -wasiErrno('EIO');\n },\n select: (read, write, timeoutMs) => anySelect(Fs, transport, read, write, timeoutMs),\n execWait: execWait,\n execve(file, argv, env, cwd) {\n const pid = spawnChild(file, argv, env, cwd, [0, 1, 2], undefined, true);\n if (pid < 0) return pid;\n const status = execWait(pid);\n execCaptures.get(pid)?.();\n execCaptures.delete(pid);\n return status;\n },\n pause: () => status(call({ op: 'sig-pause' }, 'pause')),\n sigInherited: () => inheritedOf(call({ op: 'sig-inherited' }, 'sig-inherited')),\n mount(source, target, type, flags, data) {\n const req = { op: 'mount' as const, source, target: at(target), type, flags, data };\n return status(call(req, `mount ${target}`));\n },\n umount2(target, flags) {\n return status(call({ op: 'umount', target: at(target), flags }, `umount ${target}`));\n },\n kill(pid, sig) {\n if (pid === deps.pid && !throughKernel(sig)) {\n if (sig !== 0) deps.raise?.(sig);\n return 0;\n }\n return status(call({ op: 'proc-kill', pid, sig }, `kill ${pid}`));\n },\n setpgid: (pid, pgid) => status(call({ op: 'proc-setpgid', pid, pgid }, 'setpgid')),\n setsid: () => number(call({ op: 'proc-setsid' }, 'setsid')),\n getpgid: (pid) => number(call({ op: 'proc-getpgid', pid }, 'getpgid')),\n getsid: (pid) => number(call({ op: 'proc-getsid', pid }, 'getsid')),\n cred: () => credOf(call({ op: 'proc-cred' }, 'cred')),\n setcred(change) {\n const cred = credOf(call({ op: 'proc-setcred', change }, 'setcred'));\n if (typeof cred === 'object' && deps.owner) {\n deps.owner.uid = cred.euid;\n deps.owner.gid = cred.egid;\n }\n return cred;\n },\n tcgetpgrp(fd) {\n const kfd = Fs.getStream(fd)?.sliccKernelFd;\n if (kfd === undefined) return -wasiErrno('ENOTTY');\n return number(call({ op: 'tty-pgrp-get', fd: kfd }, 'tcgetpgrp'));\n },\n tcsetpgrp(fd, pgrp) {\n const kfd = Fs.getStream(fd)?.sliccKernelFd;\n if (kfd === undefined) return -wasiErrno('ENOTTY');\n return status(call({ op: 'tty-pgrp-set', fd: kfd, pgrp }, 'tcsetpgrp'));\n },\n wait(pid, nohang, options) {\n const key = pid > 0 ? (reaped.has(pid) ? pid : undefined) : reaped.keys().next().value;\n if (key !== undefined) {\n const status = reaped.get(key) as number;\n reaped.delete(key);\n return [key, status];\n }\n return kernelWait(pid, nohang, options);\n },\n };\n}\n", "import type { HttpHead, HttpSyscall } from '../kernel/net/http-syscalls.ts';\nimport type { HeaderList } from '../kernel/net/transport.ts';\nimport type { SyncFsResult } from '../realm/sync-fs-wire.ts';\nimport type { SyncSabTransport } from '../realm/sync-sab-bridge.ts';\n\nexport interface HttpRequest {\n url: string;\n method?: string;\n headers?: HeaderList;\n body?: Uint8Array;\n}\n\nexport interface HttpKernel {\n request(req: HttpRequest): HttpHead;\n read(handle: number, max: number): Uint8Array;\n close(handle: number): void;\n}\n\nexport class HttpError extends Error {\n readonly code: string;\n\n constructor(code: string, message: string) {\n super(message);\n this.code = code;\n }\n}\n\nexport function createHttpKernel(transport: SyncSabTransport): HttpKernel {\n const call = (req: HttpSyscall): SyncFsResult => {\n const r = transport.call(req, Number.POSITIVE_INFINITY, req.op);\n if (!r.ok) throw new HttpError(r.errno, r.message);\n return r;\n };\n return {\n request(req) {\n const r = call({\n op: 'net-request',\n url: req.url,\n method: (req.method ?? 'GET').toUpperCase(),\n headers: req.headers ?? [],\n ...(req.body ? { body: req.body } : {}),\n });\n return (r as Extract<SyncFsResult, { kind: 'json' }>).json as HttpHead;\n },\n read(handle, max) {\n return (call({ op: 'net-read', handle, max }) as Extract<SyncFsResult, { kind: 'bytes' }>)\n .bytes;\n },\n close(handle) {\n call({ op: 'net-close', handle });\n },\n };\n}\n", "import { SIG, sigbit, signalsIn } from '../kernel/signals.ts';\nimport type { SyncFsResult } from '../realm/sync-fs-wire.ts';\nimport type { SyncSabTransport } from '../realm/sync-sab-bridge.ts';\nimport {\n SAB_I_BLOCKED,\n SAB_I_KILLED,\n SAB_I_SIGNALS,\n SAB_I_TIMERS,\n} from '../realm/sync-sab-wire.ts';\n\nexport interface SignalMasks {\n caught: number;\n ignored: number;\n restart: number;\n defaults?: number;\n nocldwait?: boolean;\n}\n\nexport interface SignalHooks {\n masks(): SignalMasks | null;\n\n raise(sig: number): void;\n\n timer?(which: number): void;\n\n killed?(code: number): void;\n}\n\nexport class SignalGate {\n private reported = { caught: 0, ignored: 0, nocldwait: false };\n private restart = 0;\n\n private lastDelivered = 0;\n\n private depth = 0;\n\n private reporting = false;\n\n private unwinding = false;\n\n private quieted = 0;\n\n private delivered = 0;\n\n private raised = 0;\n\n private entering = 0;\n\n private readonly raw: SyncSabTransport;\n\n private readonly header: Int32Array;\n\n private readonly hooks: SignalHooks;\n\n constructor(\n raw: SyncSabTransport,\n\n header: Int32Array,\n\n hooks: SignalHooks\n ) {\n this.raw = raw;\n\n this.header = header;\n\n this.hooks = hooks;\n }\n\n transport(): SyncSabTransport {\n return {\n call: (req, timeoutMs, label): SyncFsResult => {\n this.report();\n this.depth++;\n try {\n const result = this.raw.call(req, timeoutMs, label);\n this.deliver();\n return result;\n } finally {\n this.depth--;\n }\n },\n };\n }\n\n deliveries(): number {\n return this.delivered;\n }\n\n restartable(): boolean {\n return this.lastDelivered !== 0 && (this.lastDelivered & ~this.restart) === 0;\n }\n\n private report(): void {\n if (this.reporting) return;\n this.reporting = true;\n let masks: ReturnType<SignalHooks['masks']>;\n try {\n masks = this.hooks.masks();\n } catch {\n masks = null;\n } finally {\n this.reporting = false;\n }\n if (!masks) return;\n this.restart = masks.restart;\n const { caught, ignored, defaults = 0 } = masks;\n const nocldwait = masks.nocldwait === true;\n const was = this.reported;\n const same = caught === was.caught && ignored === was.ignored && nocldwait === was.nocldwait;\n if (same && defaults === 0) return;\n this.reported = { caught, ignored, nocldwait };\n const req = {\n op: 'sig-mask' as const,\n caught,\n ignored,\n ...(defaults ? { defaults } : {}),\n ...(nocldwait ? { nocldwait } : {}),\n };\n this.raw.call(req, Number.POSITIVE_INFINITY, 'sig-mask');\n }\n\n quiet<T>(fn: () => T): T {\n this.quieted++;\n try {\n return fn();\n } finally {\n this.quieted--;\n }\n }\n\n interrupt(): boolean {\n this.report();\n const header = this.header;\n const pending =\n (Atomics.load(header, SAB_I_SIGNALS) & ~Atomics.load(header, SAB_I_BLOCKED)) |\n Atomics.load(header, SAB_I_TIMERS) |\n Atomics.load(header, SAB_I_KILLED);\n if (pending === 0) return false;\n if (this.entering === 0) this.raised = this.quieted > 0 ? -1 : 0;\n this.entering++;\n try {\n this.deliver();\n } finally {\n this.entering--;\n }\n return true;\n }\n\n raisedOnEntry(): number {\n return this.raised;\n }\n\n deliver(): void {\n if (this.quieted > 0) return;\n const killed = Atomics.load(this.header, SAB_I_KILLED);\n if (killed !== 0 && !this.unwinding && this.hooks.killed) {\n this.unwinding = true;\n this.hooks.killed(killed);\n }\n const timers = Atomics.exchange(this.header, SAB_I_TIMERS, 0);\n const blocked = Atomics.load(this.header, SAB_I_BLOCKED);\n const pending =\n blocked === 0\n ? Atomics.exchange(this.header, SAB_I_SIGNALS, 0)\n : Atomics.and(this.header, SAB_I_SIGNALS, blocked) & ~blocked;\n\n if (this.depth <= 1) this.lastDelivered = pending | (timers & 1 ? sigbit(SIG.ALRM) : 0);\n if (pending !== 0 || timers !== 0) this.delivered++;\n this.raised |= pending | (timers & 1 ? sigbit(SIG.ALRM) : 0) | (timers & ~1 ? -1 : 0);\n for (let which = 0; which < 3; which++) {\n if (timers & (1 << which)) this.hooks.timer?.(which);\n }\n for (const sig of signalsIn(pending)) this.hooks.raise(sig);\n }\n}\n", "import { normalizePath } from '../fs/types.ts';\nimport type { SockAddr, SocketDomain } from '../kernel/socket.ts';\nimport type { SocketSyscall } from '../kernel/socket-syscalls.ts';\nimport type { SyncFsResult } from '../realm/sync-fs-wire.ts';\nimport type { SyncSabTransport } from '../realm/sync-sab-bridge.ts';\nimport {\n type KernelStreams,\n O_NONBLOCK,\n ProcessExit,\n type ProcessFs,\n type ProcessStream,\n type ProcessSys,\n SyscallError,\n} from './kernel-streams.ts';\nimport { setCloseOnExec } from './process-fds.ts';\nimport { wasiErrno } from './wasi-errno.ts';\n\nconst O_RDWR = 2;\nconst KILLED_BY_SIGPIPE = 128 + 13;\nexport interface SocketKernel {\n socket(domain: SocketDomain, nonblock: boolean, cloexec?: boolean): number;\n socketpair(domain: SocketDomain, nonblock: boolean, cloexec?: boolean): [number, number] | number;\n bind(fd: number, addr: SockAddr): number;\n listen(fd: number, backlog: number): number;\n accept(\n fd: number,\n nonblock: boolean,\n cloexec?: boolean\n ):\n | {\n fd: number;\n peer: SockAddr;\n }\n | number;\n connect(fd: number, addr: SockAddr): number;\n shutdown(fd: number, how: number): number;\n name(fd: number, peer: boolean): SockAddr | number;\n getopt(\n fd: number,\n level: number,\n name: number\n ):\n | {\n value: number;\n }\n | number;\n setopt(fd: number, level: number, name: number, value: number): number;\n resolve(name: string, family?: 0 | 4 | 6): string[] | number;\n send(\n fd: number,\n bytes: Uint8Array,\n flags: {\n dontwait?: boolean;\n nosignal?: boolean;\n }\n ): number;\n recv(\n fd: number,\n max: number,\n flags: {\n dontwait?: boolean;\n peek?: boolean;\n }\n ): Uint8Array | number;\n}\nexport interface SocketKernelDeps {\n transport: SyncSabTransport;\n Fs: ProcessFs;\n sys: ProcessSys;\n streams: KernelStreams;\n sigpipe?: () => boolean;\n restartable?: () => boolean;\n}\nfunction errno(e: unknown): number {\n if (e instanceof SyscallError) return -wasiErrno(e.code);\n const code = (\n e as {\n errno?: unknown;\n } | null\n )?.errno;\n if (typeof code === 'number') return -code;\n throw e;\n}\nfunction resolved(Fs: ProcessFs, addr: SockAddr): SockAddr {\n if (addr.family !== 'unix' || !addr.path || addr.path.startsWith('\\0')) return addr;\n const path = addr.path.startsWith('/') ? addr.path : `${Fs.cwd()}/${addr.path}`;\n return { family: 'unix', path: normalizePath(path) };\n}\n\nexport function createSocketKernel(deps: SocketKernelDeps): SocketKernel {\n const { transport, Fs, sys, streams } = deps;\n const call = (req: SocketSyscall): SyncFsResult => {\n const r = transport.call(req, Number.POSITIVE_INFINITY, req.op);\n if (!r.ok) throw new SyscallError(r.errno);\n return r;\n };\n const json = (req: SocketSyscall): unknown => {\n const r = call(req);\n return r.ok && r.kind === 'json' ? r.json : undefined;\n };\n const done = (req: SocketSyscall): number => {\n call(req);\n return 0;\n };\n const guard = <T>(op: () => T): T | number => {\n for (;;) {\n try {\n return op();\n } catch (e) {\n const restart = e instanceof SyscallError && e.code === 'EINTR' && deps.restartable?.();\n if (!restart) return errno(e);\n }\n }\n };\n const socketAt = (\n fd: number\n ): ProcessStream & {\n sliccKernelFd: number;\n } => {\n const stream = Fs.getStream(fd);\n if (!stream) throw new SyscallError('EBADF');\n if (!stream.sliccKernelSocket || stream.sliccKernelFd === undefined) {\n throw new SyscallError('ENOTSOCK');\n }\n return stream as ProcessStream & {\n sliccKernelFd: number;\n };\n };\n const kfd = (fd: number): number => socketAt(fd).sliccKernelFd;\n const install = (k: number, nonblock: boolean, cloexec = false): number => {\n let stream: ProcessStream;\n try {\n stream = streams.socketStream(O_RDWR | (nonblock ? O_NONBLOCK : 0));\n } catch (e) {\n sys.close(k);\n throw e;\n }\n streams.attachSocket(stream, k);\n setCloseOnExec(stream, cloexec);\n return stream.fd;\n };\n return {\n socket: (domain, nonblock, cloexec) =>\n guard(() => install(json({ op: 'sock-open', domain }) as number, nonblock, cloexec)),\n socketpair: (domain, nonblock, cloexec) =>\n guard(() => {\n const [a, b] = json({ op: 'sock-pair', domain }) as [number, number];\n let first: number;\n try {\n first = install(a, nonblock, cloexec);\n } catch (e) {\n sys.close(b);\n throw e;\n }\n try {\n return [first, install(b, nonblock, cloexec)] as [number, number];\n } catch (e) {\n const stream = Fs.getStream(first);\n if (stream) stream.stream_ops.close?.(stream);\n Fs.closeStream(first);\n throw e;\n }\n }),\n bind: (fd, given) =>\n guard(() => done({ op: 'sock-bind', fd: kfd(fd), addr: resolved(Fs, given) })),\n listen: (fd, backlog) => guard(() => done({ op: 'sock-listen', fd: kfd(fd), backlog })),\n accept: (fd, nonblock, cloexec) =>\n guard(() => {\n const listener = socketAt(fd);\n const req = {\n op: 'sock-accept' as const,\n fd: listener.sliccKernelFd,\n nonblock: (listener.flags & O_NONBLOCK) !== 0,\n };\n const got = json(req) as {\n fd: number;\n peer: SockAddr;\n };\n return { fd: install(got.fd, nonblock, cloexec), peer: got.peer };\n }),\n connect: (fd, addr) =>\n guard(() => {\n const stream = socketAt(fd);\n const nonblock = (stream.flags & O_NONBLOCK) !== 0;\n return done({\n op: 'sock-connect',\n fd: stream.sliccKernelFd,\n addr: resolved(Fs, addr),\n nonblock,\n });\n }),\n shutdown: (fd, how) => guard(() => done({ op: 'sock-shutdown', fd: kfd(fd), how })),\n name: (fd, peer) => guard(() => json({ op: 'sock-name', fd: kfd(fd), peer }) as SockAddr),\n getopt: (fd, level, name) =>\n guard(() => ({ value: json({ op: 'sock-getopt', fd: kfd(fd), level, name }) as number })),\n setopt: (fd, level, name, value) =>\n guard(() => done({ op: 'sock-setopt', fd: kfd(fd), level, name, value })),\n resolve: (name, family = 4) =>\n guard(() => json({ op: 'sock-resolve', name, family }) as string[]),\n send: (fd, bytes, flags) =>\n guard(() => {\n const stream = socketAt(fd);\n const nonblock = flags.dontwait === true || (stream.flags & O_NONBLOCK) !== 0;\n try {\n return sys.write(stream.sliccKernelFd, bytes, { nonblock });\n } catch (e) {\n const broken = e instanceof SyscallError && e.code === 'EPIPE';\n if (broken && !flags.nosignal && !deps.sigpipe?.())\n throw new ProcessExit(KILLED_BY_SIGPIPE);\n throw e;\n }\n }),\n recv: (fd, max, flags) =>\n guard(() => {\n const stream = socketAt(fd);\n const nonblock = flags.dontwait === true || (stream.flags & O_NONBLOCK) !== 0;\n return sys.read(stream.sliccKernelFd, max, { nonblock, peek: flags.peek === true });\n }),\n };\n}\n", "import type { Cred } from '../kernel/cred.ts';\nimport type { ProcessFs } from './kernel-streams.ts';\n\nexport interface Owner {\n uid: number;\n gid: number;\n}\n\nexport const LEGACY_OWNER: Readonly<Owner> = Object.freeze({ uid: 1000, gid: 1000 });\n\nconst CRED_ABI = /\\bslicc_cred_js\\b/;\n\nexport function credAbi(glue: string): boolean {\n return CRED_ABI.test(glue);\n}\n\nexport function ownByCaller(Fs: ProcessFs, cred?: Readonly<Cred>, abi = true): Owner {\n const owner = abi ? { uid: cred?.euid ?? 0, gid: cred?.egid ?? 0 } : { ...LEGACY_OWNER };\n const { stat, fstat } = Fs;\n const owned = (attr: object): object => ({ ...attr, uid: owner.uid, gid: owner.gid });\n if (typeof stat === 'function') {\n Fs.stat = (path, dontFollow) => owned(stat.call(Fs, path, dontFollow));\n }\n if (typeof fstat === 'function') Fs.fstat = (fd) => owned(fstat.call(Fs, fd));\n return owner;\n}\n", "import type { Cred } from '../kernel/cred.ts';\nimport type { DeviceMeta, HeldMeta, PollState } from '../kernel/fd-table.ts';\nimport { type CwdAnswer, HeldCwd, type HeldCwdReply } from '../kernel/held-cwd.ts';\nimport { initHostname } from '../kernel/net/loopback-names.ts';\nimport type { MountLine, ProcessListing } from '../kernel/proc-info.ts';\nimport {\n type ForkState,\n type InheritedFd,\n WASM_PROCESS_READY,\n type WasmProcessInitMsg,\n} from '../kernel/protocol.ts';\nimport { SIG } from '../kernel/signals.ts';\nimport type { Termios } from '../kernel/tty.ts';\nimport { type HeldCwdFs, holdingCwd } from '../realm/emscripten-held-cwd.ts';\nimport { mountVfsIntoEmscripten } from '../realm/emscripten-vfs-hook.ts';\nimport { type LiveFsNode, liveNodePath } from '../realm/live-vfs-fs.ts';\nimport { SYNC_FS_OPS, type SyncFsResult } from '../realm/sync-fs-wire.ts';\nimport {\n createSyncFsSabBridge,\n createSyncSabTransport,\n lookedOutside,\n type SabPostLike,\n type SyncSabTransport,\n} from '../realm/sync-sab-bridge.ts';\nimport {\n publishMemory,\n SAB_HEADER_I32,\n SAB_I_KILLED,\n SAB_I_SIGNALS,\n SAB_I_STOP,\n SAB_I_TIMERS,\n type SyncSabRequestBody,\n} from '../realm/sync-sab-wire.ts';\nimport {\n KernelStreams,\n type ProcessFs,\n type ProcessPipeFs,\n type ProcessStream,\n type ProcessSys,\n SyscallError,\n type TtyOwner,\n} from './kernel-streams.ts';\nimport { createProcessKernel, inheritedSignals, type ProcessKernel } from './process-children.ts';\nimport {\n devCreations,\n type FdImports,\n type GlueSyscalls,\n goneCwdGetcwd,\n type KernelImports,\n kernelAccess,\n kernelLink,\n kernelUmask,\n kernelUname,\n linuxDevices,\n type Memalign,\n noFollowUtimes,\n pathOpensLinks,\n positionalIo,\n syncFsync,\n trackCloseOnExec,\n useDevFd,\n useDevRemoval,\n useFifoOpens,\n useFileMmap,\n useMounts,\n useZeroDevices,\n wasmMemory,\n wrapCloexecSyscalls,\n wrapImport,\n} from './process-fds.ts';\nimport {\n describeForFork,\n describeInherited,\n placeKernelStream,\n restoreForkedStreams,\n vfsPromoter,\n} from './process-fork.ts';\nimport { createHttpKernel } from './process-http.ts';\nimport { closeDropsLocks, kernelFlock, type LockHeld, type LockKernel } from './process-locks.ts';\nimport type { PtyKernel } from './process-pty.ts';\nimport { SignalGate } from './process-signals.ts';\nimport { createSocketKernel } from './process-sockets.ts';\nimport { type ProcFs, useProcfs } from './procfs.ts';\nimport { credAbi, type Owner, ownByCaller } from './realm-user.ts';\n\nfunction ownBytes(bytes: Uint8Array): Uint8Array {\n if (bytes.constructor === Uint8Array) return bytes;\n return new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength).slice();\n}\n\nfunction ownedBuffer(body: Uint8Array, given: Uint8Array): Transferable[] | undefined {\n return body === given ? undefined : [body.buffer as ArrayBuffer];\n}\n\nexport {\n type ProcessFs,\n type ProcessStream,\n type ProcessSys,\n SyscallError,\n} from './kernel-streams.ts';\n\nconst FS_OPS: ReadonlySet<string> = new Set(SYNC_FS_OPS);\n\nexport function kernelSys(transport: SyncSabTransport): ProcessSys & PtyKernel & LockKernel {\n const call = (\n req: SyncSabRequestBody,\n label: string,\n transfer?: Transferable[]\n ): SyncFsResult => {\n const r = transport.call(req, Number.POSITIVE_INFINITY, label, transfer);\n if (!r.ok) throw new SyscallError(r.errno);\n return r;\n };\n const json = (r: SyncFsResult): unknown => (r.ok && r.kind === 'json' ? r.json : undefined);\n return {\n read(fd, max, opts) {\n const flags = {\n ...(opts?.nonblock ? { nonblock: true } : {}),\n ...(opts?.peek ? { peek: true } : {}),\n };\n const r = call({ op: 'fd-read', fd, max, ...flags }, `fd-read ${fd}`);\n return r.ok && r.kind === 'bytes' ? r.bytes : new Uint8Array(0);\n },\n write(fd, bytes, opts) {\n const body = ownBytes(bytes);\n const req = {\n op: 'fd-write' as const,\n fd,\n body,\n ...(opts?.nonblock ? { nonblock: true } : {}),\n };\n const n = json(call(req, `fd-write ${fd}`, ownedBuffer(body, bytes)));\n return typeof n === 'number' ? n : bytes.length;\n },\n close(fd) {\n call({ op: 'fd-close', fd }, `fd-close ${fd}`);\n },\n pipe() {\n return json(call({ op: 'fd-pipe' }, 'fd-pipe')) as [number, number];\n },\n poll(fd) {\n return json(call({ op: 'fd-poll', fd }, `fd-poll ${fd}`)) as PollState;\n },\n openVfs(path, flags, position, opts) {\n return json(\n call(\n {\n op: 'fd-open-vfs',\n path,\n flags,\n position,\n ...(opts?.contents !== undefined ? { contents: opts.contents } : {}),\n ...(opts?.orphan ? { orphan: true } : {}),\n ...(opts?.truncate ? { truncate: true } : {}),\n ...(opts?.create ? { create: true } : {}),\n ...(opts?.created ? { created: true } : {}),\n ...(opts?.pin ? { pin: opts.pin } : {}),\n ...(opts?.handle !== undefined ? { handle: opts.handle } : {}),\n ...(opts?.ino !== undefined ? { ino: opts.ino } : {}),\n ...(opts?.nofollow ? { nofollow: true } : {}),\n ...(opts?.fifo ? { fifo: true } : {}),\n },\n `fd-open-vfs ${path}`\n )\n ) as number;\n },\n seek(fd, offset, whence) {\n return json(call({ op: 'fd-seek', fd, offset, whence }, `fd-seek ${fd}`)) as number;\n },\n flush(fd) {\n call({ op: 'fd-flush', fd }, `fd-flush ${fd}`);\n },\n pread(fd, max, at) {\n const r = call({ op: 'fd-pread', fd, max, offset: at }, `fd-pread ${fd}`);\n return r.ok && r.kind === 'bytes' ? r.bytes : new Uint8Array(0);\n },\n pwrite(fd, bytes, at) {\n const body = ownBytes(bytes);\n return json(\n call({ op: 'fd-pwrite', fd, offset: at, body }, `fd-pwrite ${fd}`, ownedBuffer(body, bytes))\n ) as number;\n },\n isatty(fd) {\n return (\n (json(call({ op: 'fd-info', fd }, `fd-info ${fd}`)) as { tty?: boolean })?.tty === true\n );\n },\n ttyName(fd) {\n return (json(call({ op: 'fd-info', fd }, `fd-info ${fd}`)) as { name?: string })?.name;\n },\n kind(fd) {\n return (json(call({ op: 'fd-info', fd }, `fd-info ${fd}`)) as { kind?: string })?.kind;\n },\n heldMeta(fd) {\n return (json(call({ op: 'fd-info', fd }, `fd-info ${fd}`)) as { meta?: HeldMeta }).meta;\n },\n access(fd) {\n return (json(call({ op: 'fd-info', fd }, `fd-info ${fd}`)) as { access?: 'read' | 'write' })\n .access;\n },\n size(fd) {\n return (json(call({ op: 'fd-vfs-stat', fd }, `fd-vfs-stat ${fd}`)) as { size: number }).size;\n },\n fdStat(fd) {\n const r = json(call({ op: 'fd-vfs-stat', fd, full: true }, `fd-vfs-stat ${fd}`)) as\n | { stat?: object }\n | undefined;\n return r?.stat;\n },\n fdChmod(fd, mode) {\n call({ op: 'fd-chmod', fd, mode }, `fd-chmod ${fd}`);\n },\n fdChown(fd, uid, gid) {\n const ids = { ...(uid !== undefined ? { uid } : {}), ...(gid !== undefined ? { gid } : {}) };\n call({ op: 'fd-chown', fd, ...ids }, `fd-chown ${fd}`);\n },\n fdUtimes(fd, atimeMs, mtimeMs, now) {\n call({ op: 'fd-utimes', fd, atimeMs, mtimeMs, now }, `fd-utimes ${fd}`);\n },\n ttyNames() {\n return json(call({ op: 'fd-tty-names' }, 'fd-tty-names')) as string[];\n },\n ttyOwner(name) {\n return json(call({ op: 'fd-tty-owner', name }, `fd-tty-owner ${name}`)) as TtyOwner | null;\n },\n openTty(name) {\n const req =\n name === undefined ? { op: 'fd-open-tty' as const } : { op: 'fd-open-tty' as const, name };\n return json(call(req, `fd-open-tty ${name ?? ''}`)) as number;\n },\n tcgets(fd) {\n return json(call({ op: 'tty-get', fd }, `tty-get ${fd}`)) as Termios;\n },\n tcsets(fd, termios, flush) {\n call({ op: 'tty-set', fd, termios, ...(flush ? { flush } : {}) }, `tty-set ${fd}`);\n },\n winsize(fd) {\n return json(call({ op: 'tty-winsz', fd }, `tty-winsz ${fd}`)) as [number, number];\n },\n openPty() {\n return json(call({ op: 'pty-open' }, 'pty-open')) as number;\n },\n openPts(n, noctty) {\n return json(call({ op: 'pty-slave-open', n, noctty }, `pty-slave-open ${n}`)) as number;\n },\n openSealed(flags) {\n return json(call({ op: 'fd-open-sealed', flags }, 'fd-open-sealed')) as number;\n },\n openClipboard(flags) {\n return json(call({ op: 'fd-open-clipboard', flags }, 'fd-open-clipboard')) as number;\n },\n clipboardAbort(fd) {\n call({ op: 'fd-clipboard-abort', fd }, 'fd-clipboard-abort');\n },\n ptyNumbers() {\n return json(call({ op: 'pty-list' }, 'pty-list')) as number[];\n },\n procList() {\n return json(call({ op: 'proc-list' }, 'proc-list')) as ProcessListing;\n },\n mountList() {\n return json(call({ op: 'mount-list' }, 'mount-list')) as MountLine[];\n },\n setLock(target, kind, start, len, wait) {\n const req = { op: 'lk-set' as const, ...target, kind, start, len, ...(wait ? { wait } : {}) };\n call(req, 'lk-set');\n },\n getLock(target, kind, start, len) {\n return json(call({ op: 'lk-get', ...target, kind, start, len }, 'lk-get')) as LockHeld | null;\n },\n closeLocks(target) {\n call({ op: 'lk-close', ...target }, 'lk-close');\n },\n flock(fd, kind, wait) {\n call({ op: 'flock', fd, kind, ...(wait ? { wait } : {}) }, `flock ${fd}`);\n },\n ptyNumber(fd) {\n return json(call({ op: 'pty-number', fd }, `pty-number ${fd}`)) as number;\n },\n ptyLock(fd, lock) {\n call({ op: 'pty-lock', fd, lock }, `pty-lock ${fd}`);\n },\n setControllingTerminal(fd) {\n call({ op: 'pty-ctty', fd }, `pty-ctty ${fd}`);\n },\n setPacketMode(fd, on) {\n call({ op: 'pty-packet', fd, on }, `pty-packet ${fd}`);\n },\n setWinsize(fd, rows, cols) {\n call({ op: 'pty-winsz-set', fd, rows, cols }, `pty-winsz-set ${fd}`);\n },\n };\n}\n\nexport function wireKernelFd(Fs: ProcessFs, streams: KernelStreams, entry: InheritedFd): void {\n if (entry.device && openDevice(Fs, entry.fd, entry.device)) return;\n\n placeKernelStream(Fs, streams, {\n ...entry,\n kind: entry.device ? 'stream' : entry.kind,\n kernel: entry.fd,\n });\n}\n\nconst O_RDONLY = 0;\nconst O_WRONLY = 1;\nconst O_RDWR = 2;\nconst O_ACCMODE = 3;\n\nconst O_DIRECTORY = 0o200000;\n\nconst accessMode = (access: 'read' | 'write' | undefined): number =>\n access === 'read' ? O_RDONLY : access === 'write' ? O_WRONLY : O_RDWR;\n\nfunction openDevice(Fs: ProcessFs, fd: number, meta: DeviceMeta): boolean {\n return openAt(Fs, fd, `/dev/${meta.device}`, accessMode(meta.access));\n}\n\nfunction openHeld(Fs: ProcessFs, fd: number, meta: HeldMeta): boolean {\n return 'dir' in meta\n ? openAt(Fs, fd, meta.dir, O_RDONLY | O_DIRECTORY)\n : openDevice(Fs, fd, meta);\n}\n\nfunction openAt(Fs: ProcessFs, fd: number, path: string, flags: number): boolean {\n let stream: ProcessStream;\n try {\n stream = Fs.open(path, flags);\n } catch {\n return false;\n }\n if (stream.fd !== fd) {\n Fs.dupStream(stream, fd);\n Fs.closeStream(stream.fd);\n }\n return true;\n}\n\nconst PLACED: ReadonlySet<string> = new Set(['stream', 'file', 'socket', 'clipboard', 'sealed']);\n\nexport function wireKernelStdio(Fs: ProcessFs, streams: KernelStreams, sys?: ProcessSys): void {\n for (const fd of [0, 1, 2]) {\n const stream = Fs.getStream(fd);\n if (!stream) continue;\n const kind = sys?.kind?.(fd);\n const meta = kind === 'device' || kind === 'held' ? sys?.heldMeta?.(fd) : undefined;\n if (meta && openHeld(Fs, fd, meta)) continue;\n if (kind && PLACED.has(kind)) {\n const flags = sys?.access\n ? (stream.flags & ~O_ACCMODE) | accessMode(sys.access(fd))\n : stream.flags;\n Fs.closeStream(fd);\n const kernel = { fd, kernel: fd, kind: kind as InheritedFd['kind'], flags };\n placeKernelStream(Fs, streams, kernel).flags = flags;\n continue;\n }\n streams.attach(stream, fd);\n streams.nameTerminal(stream);\n }\n}\n\ninterface RunningModule {\n FS: ProcessFs;\n callMain(args: string[]): number | undefined;\n sliccRunMain?: (args: string[]) => number | undefined;\n sliccForkChild?: (state: ForkState & { pid: number }) => number | undefined;\n PIPEFS?: ProcessPipeFs;\n\n sliccSigpipe?: () => number;\n\n sliccSigMask?: (which: number) => number;\n\n sliccRaise?: (sig: number) => void;\n\n sliccTimerFire?: (which: number) => boolean;\n\n sliccKernel?: ProcessKernel;\n\n sliccSyscalls?: GlueSyscalls;\n}\n\nexport type GlueEvaluator = (glue: string, module: object) => void;\n\nexport function glueBody(glue: string): string {\n return glue.startsWith('#!') ? glue.slice(glue.indexOf('\\n') + 1) : glue;\n}\n\nconst GLUE_TRAILER = [\n \"if (typeof ENV !== 'undefined') Object.assign(ENV, Module.sliccEnv);\",\n \"if (typeof thisProgram !== 'undefined' && Module.thisProgram === '') thisProgram = '';\",\n 'const __sliccTake = (name, value) => {',\n ' const own = Object.getOwnPropertyDescriptor(Module, name);',\n \" if (own && 'value' in own && own.value != null) return;\",\n ' Object.defineProperty(Module, name, { value, writable: true, configurable: true, enumerable: true });',\n '};',\n \"if (typeof FS !== 'undefined') __sliccTake('FS', FS);\",\n \"if (typeof callMain === 'function') __sliccTake('callMain', callMain);\",\n \"if (typeof sliccRunMain === 'function') __sliccTake('sliccRunMain', sliccRunMain);\",\n \"if (typeof sliccForkChild === 'function') __sliccTake('sliccForkChild', sliccForkChild);\",\n \"if (typeof PIPEFS !== 'undefined') __sliccTake('PIPEFS', PIPEFS);\",\n\n 'Module.sliccSyscalls ??= {',\n \" fcntl: typeof ___syscall_fcntl64 === 'function' ? ___syscall_fcntl64 : undefined,\",\n \" pipe2: typeof ___syscall_pipe2 === 'function' ? ___syscall_pipe2 : undefined,\",\n \" dup3: typeof ___syscall_dup3 === 'function' ? ___syscall_dup3 : undefined,\",\n \" socket: typeof ___syscall_socket === 'function' ? ___syscall_socket : undefined,\",\n \" accept4: typeof ___syscall_accept4 === 'function' ? ___syscall_accept4 : undefined,\",\n \" ioctl: typeof ___syscall_ioctl === 'function' ? ___syscall_ioctl : undefined,\",\n \" setitimer: typeof __setitimer_js === 'function' ? __setitimer_js : undefined,\",\n '};',\n 'Module.sliccKernelImports ??= {',\n \" openat: typeof ___syscall_openat === 'function' ? ___syscall_openat : undefined,\",\n \" mkdirat: typeof ___syscall_mkdirat === 'function' ? ___syscall_mkdirat : undefined,\",\n \" mknodat: typeof ___syscall_mknodat === 'function' ? ___syscall_mknodat : undefined,\",\n \" umask: typeof ___syscall_umask === 'function' ? ___syscall_umask : undefined,\",\n \" faccessat: typeof ___syscall_faccessat === 'function' ? ___syscall_faccessat : undefined,\",\n \" linkat: typeof ___syscall_linkat === 'function' ? ___syscall_linkat : undefined,\",\n \" symlinkat: typeof ___syscall_symlinkat === 'function' ? ___syscall_symlinkat : undefined,\",\n \" uname: typeof ___syscall_uname === 'function' ? ___syscall_uname : undefined,\",\n \" utimensat: typeof ___syscall_utimensat === 'function' ? ___syscall_utimensat : undefined,\",\n \" getppid: typeof _slicc_getppid_js === 'function' ? _slicc_getppid_js : undefined,\",\n \" resizeHeap: typeof _emscripten_resize_heap === 'function' ? _emscripten_resize_heap : undefined,\",\n \" fdWrite: typeof _fd_write === 'function' ? _fd_write : undefined,\",\n \" fdRead: typeof _fd_read === 'function' ? _fd_read : undefined,\",\n \" sleepMs: typeof slicc_sleep_ms === 'function' ? slicc_sleep_ms : undefined,\",\n \" flock: typeof __syscall_flock === 'function' ? __syscall_flock : undefined,\",\n '};',\n 'Module.sliccFdImports ??= {',\n \" fd_sync: typeof _fd_sync === 'function' ? _fd_sync : undefined,\",\n \" fd_pread: typeof _fd_pread === 'function' ? _fd_pread : undefined,\",\n \" fd_pwrite: typeof _fd_pwrite === 'function' ? _fd_pwrite : undefined,\",\n '};',\n\n 'const __sliccUp = () =>',\n \" (typeof runtimeInitialized === 'undefined' || runtimeInitialized) &&\",\n \" !(typeof runtimeExited !== 'undefined' && runtimeExited) &&\",\n \" !(typeof ABORT !== 'undefined' && ABORT);\",\n \"Module.sliccSigpipe ??= () => (__sliccUp() && typeof _slicc_sigpipe === 'function' ? _slicc_sigpipe() : -1);\",\n\n \"Module.sliccSigMask ??= (w) => (__sliccUp() && typeof _slicc_sig_mask === 'function' ? _slicc_sig_mask(w) : -1);\",\n \"Module.sliccRaise ??= (sig) => { if (__sliccUp() && typeof _slicc_raise === 'function') _slicc_raise(sig); };\",\n\n 'Module.sliccTimerFire ??= (which) => {',\n \" if (!__sliccUp() || typeof __emscripten_timeout !== 'function') return false;\",\n \" __emscripten_timeout(which, typeof _emscripten_get_now === 'function' ? _emscripten_get_now() : performance.now());\",\n ' return true;',\n '};',\n\n \"if (typeof SliccFork !== 'undefined' && !SliccFork.balancesKeepalive && typeof runtimeKeepalivePop === 'function') {\",\n ' let __sliccForking = SliccFork.forking === true;',\n \" Object.defineProperty(SliccFork, 'forking', {\",\n ' get: () => __sliccForking,',\n ' set: (on) => { if (__sliccForking && !on) runtimeKeepalivePop(); __sliccForking = on; },',\n ' configurable: true,',\n ' });',\n '}',\n].join('\\n');\n\nexport function ownValue<T>(module: object, name: string): T | undefined {\n const own = Object.getOwnPropertyDescriptor(module, name);\n return own && 'value' in own ? (own.value as T | undefined) : undefined;\n}\n\nexport const evaluateGlue: GlueEvaluator = (glue, module) => {\n let run: (module: object) => void;\n try {\n run = new Function('Module', `${glueBody(glue)}\\n;${GLUE_TRAILER}`) as (module: object) => void;\n } catch (e) {\n throw e instanceof EvalError ? new Error(EVAL_BLOCKED) : e;\n }\n run(module);\n};\n\nexport const EVAL_BLOCKED =\n \"the wasm realm evaluates the program's Emscripten glue, and this page's CSP forbids eval \" +\n \"(no 'unsafe-eval')\";\n\nexport function identify(\n transport: SyncSabTransport,\n init: { pid: number; ppid?: number }\n): { pid: number; ppid: number } {\n const r = transport.call({ op: 'proc-identity' }, Number.POSITIVE_INFINITY, 'proc-identity');\n const id = r.ok && r.kind === 'json' ? (r.json as { pid: number; ppid: number } | null) : null;\n return id ?? { pid: init.pid, ppid: init.ppid ?? 1 };\n}\n\nexport function liveParent(\n imports: WebAssembly.Imports,\n parent: () => number,\n glue?: KernelImports\n): void {\n wrapImport(imports, 'getppid', glue, () => parent);\n}\n\nfunction seedInherited(transport: SyncSabTransport, seeded: { bits: number }): number {\n const bits = inheritedSignals(transport);\n seeded.bits |= bits;\n return bits;\n}\n\nexport function signalMasks(\n m: Pick<RunningModule, 'sliccSigMask'>,\n seeded: { bits: number } = { bits: 0 }\n): { caught: number; ignored: number; restart: number; defaults?: number } | null {\n const mask = m.sliccSigMask;\n const caught = mask?.(0) ?? -1;\n if (!mask || caught === -1) return null;\n const ignored = mask(1);\n const defaults = seeded.bits & ~ignored & ~caught;\n seeded.bits &= ~defaults;\n return { caught, ignored, restart: mask(2), ...(defaults ? { defaults } : {}) };\n}\n\nexport function reportGrowth(\n imports: WebAssembly.Imports,\n publish: () => void,\n glue?: KernelImports\n): void {\n wrapImport(imports, 'resizeHeap', glue, (resize) => (...args) => {\n const grown = resize(...args);\n publish();\n return grown;\n });\n}\n\nexport function holdWhileStopped(\n imports: WebAssembly.Imports,\n header: Int32Array,\n glue?: KernelImports,\n poll: () => void = () => undefined\n): void {\n const hold = () => {\n while (Atomics.load(header, SAB_I_STOP) === 1) Atomics.wait(header, SAB_I_STOP, 1);\n const due =\n Atomics.load(header, SAB_I_SIGNALS) |\n Atomics.load(header, SAB_I_TIMERS) |\n Atomics.load(header, SAB_I_KILLED);\n if (due !== 0) poll();\n };\n for (const name of ['fdWrite', 'fdRead', 'sleepMs'] as const) {\n wrapImport(\n imports,\n name,\n glue,\n (original) =>\n (...args) => {\n while (Atomics.load(header, SAB_I_STOP) === 1) Atomics.wait(header, SAB_I_STOP, 1);\n const done = original(...args);\n hold();\n return done;\n },\n true\n );\n }\n}\n\nfunction callerOwner(Fs: ProcessFs, init: WasmProcessInitMsg): { owner?: Owner } {\n return init.owners ? {} : { owner: ownByCaller(Fs, init.cred, credAbi(init.program.glue)) };\n}\n\nfunction utimensatOf(module: object): unknown {\n return ownValue<{ utimensat?: unknown }>(module, 'sliccSyscalls')?.utimensat;\n}\n\ninterface WrapperDeps {\n init: WasmProcessInitMsg;\n transport: SyncSabTransport;\n sys: ProcessSys & LockKernel;\n memory: () => WebAssembly.Memory | undefined;\n ppid: () => number;\n poll: () => void;\n}\n\nfunction kernelWrappers(imports: WebAssembly.Imports, module: object, deps: WrapperDeps): void {\n const { init, transport, sys, memory } = deps;\n const kernelGlue = ownValue<KernelImports>(module, 'sliccKernelImports');\n liveParent(imports, deps.ppid, kernelGlue);\n kernelUmask(imports, {\n glue: kernelGlue,\n initial: init.umask ?? 0o022,\n memory,\n set: (mask) =>\n void transport.call({ op: 'proc-umask', mask }, Number.POSITIVE_INFINITY, 'umask'),\n });\n const fsOf = () => ownValue<ProcessFs>(module, 'FS');\n noFollowUtimes(imports, fsOf, kernelGlue?.utimensat ?? utimensatOf(module), memory);\n kernelAccess(imports, fsOf, memory, kernelGlue);\n goneCwdGetcwd(imports, fsOf, kernelGlue);\n kernelLink(imports, fsOf, memory, kernelGlue);\n devCreations(imports, fsOf, memory, kernelGlue);\n kernelUname(imports, initHostname(init), memory, kernelGlue);\n wrapImport(\n imports,\n 'flock',\n kernelGlue,\n () => kernelFlock({ fs: fsOf, flock: (fd, kind, wait) => sys.flock?.(fd, kind, wait) }),\n true\n );\n const glue = ownValue<FdImports>(module, 'sliccFdImports');\n syncFsync(imports, fsOf, glue);\n positionalIo(imports, { glue, fs: fsOf, sys, memory });\n const grown = () => publishMemory(init.sab, memory()?.buffer.byteLength ?? 0);\n reportGrowth(imports, grown, kernelGlue);\n holdWhileStopped(imports, new Int32Array(init.sab, 0, SAB_HEADER_I32), kernelGlue, deps.poll);\n}\n\nfunction heldIn(fs: unknown, init: WasmProcessInitMsg, transport: SyncSabTransport): void {\n if (!init.held) return;\n const ask = (req: { op: 'cwd-check' } | { op: 'cwd-chdir'; path: string }) => {\n const r = transport.call(req, Number.POSITIVE_INFINITY, req.op);\n return r.ok && r.kind === 'json' ? r.json : {};\n };\n const check = () => ask({ op: 'cwd-check' }) as CwdAnswer;\n holdingCwd(\n fs as HeldCwdFs,\n new HeldCwd(init.held.sab, init.held.slot, check, init.held),\n (path) => ask({ op: 'cwd-chdir', path }) as HeldCwdReply\n );\n}\n\nfunction bridgeFlags(init: WasmProcessInitMsg): {\n owners?: boolean;\n links?: boolean;\n changes?: SharedArrayBuffer;\n} {\n return {\n ...(init.owners ? { owners: true } : {}),\n ...(init.links ? { links: true } : {}),\n ...(init.changes ? { changes: init.changes } : {}),\n };\n}\n\nfunction credSyncTransport(\n gated: SyncSabTransport,\n early: () => void,\n cred: Cred | undefined\n): SyncSabTransport {\n return {\n call: (req, timeoutMs, label) => {\n if (!FS_OPS.has(req.op)) early();\n const r = gated.call(req, timeoutMs, label);\n if (cred && req.op === 'proc-setcred' && r.ok && r.kind === 'json')\n Object.assign(cred, r.json);\n return r;\n },\n };\n}\n\nfunction sigpipeSpared(transport: SyncSabTransport): boolean {\n const req = { op: 'proc-kill-self' as const, sig: SIG.PIPE, probe: true };\n const r = transport.call(req, Number.POSITIVE_INFINITY, 'proc-kill-self');\n return r.ok && !(r.kind === 'json' && r.json === 'terminate');\n}\n\nexport async function runWasmProcess(\n init: WasmProcessInitMsg,\n port: SabPostLike,\n deps: { evaluate?: GlueEvaluator; warn?: (message: string) => void } = {}\n): Promise<number> {\n const seeded = { bits: 0 };\n const signals = new SignalGate(\n createSyncSabTransport(init.sab, port, { memory: () => memory?.buffer.byteLength ?? 0 }),\n new Int32Array(init.sab, 0, SAB_HEADER_I32),\n {\n masks: () => signalMasks(module as unknown as RunningModule, seeded),\n raise: (sig) => (module as unknown as RunningModule).sliccRaise?.(sig),\n timer: (which) => {\n const running = module as unknown as RunningModule;\n if (!running.sliccTimerFire?.(which)) running.sliccRaise?.(SIG.ALRM);\n },\n }\n );\n const gated = signals.transport();\n let early = (): void => {};\n const transport = credSyncTransport(gated, () => early(), init.cred);\n const sys = kernelSys(transport);\n const encoder = new TextEncoder();\n const say = (fd: number) => (text: string) => sys.write(fd, encoder.encode(`${text}\\n`));\n let ready!: () => void;\n let failed!: (error: unknown) => void;\n let memory: WebAssembly.Memory | undefined;\n let exports: WebAssembly.Exports | undefined;\n let atExit: () => () => void = () => () => {};\n const initialized = new Promise<void>((resolve, reject) => {\n ready = resolve;\n failed = reject;\n });\n const id = identify(transport, init);\n const module = {\n noInitialRun: true,\n thisProgram: init.argv0,\n sliccPid: id.pid,\n sliccPpid: id.ppid,\n sliccEnv: init.env,\n sliccKernel: { sigInherited: () => seedInherited(transport, seeded) },\n print: say(1),\n printErr: say(2),\n instantiateWasm(\n imports: WebAssembly.Imports,\n done: (instance: WebAssembly.Instance, module: WebAssembly.Module) => void\n ): object {\n Promise.resolve()\n .then(() => {\n wrapCloexecSyscalls(imports, ownValue<GlueSyscalls>(module, 'sliccSyscalls'), {\n fs: () => ownValue<ProcessFs>(module, 'FS'),\n heap: () => (memory ? new Int32Array(memory.buffer) : undefined),\n pty: sys,\n locks: { kernel: sys, memory: () => memory?.buffer, flush: () => early() },\n timer: {\n arm: (ms) => {\n transport.call(\n { op: 'proc-alarm', sig: SIG.ALRM, ms, repeat: false, timer: 0 },\n Number.POSITIVE_INFINITY,\n 'alarm'\n );\n },\n },\n });\n kernelWrappers(imports, module, {\n init,\n transport,\n sys,\n memory: () => memory,\n ppid: () => identify(transport, init).ppid,\n poll: () => void signals.interrupt(),\n });\n return WebAssembly.instantiate(init.program.module, watchOutside(imports));\n })\n .then((instance) => {\n memory = wasmMemory(instance, imports);\n port.postMessage({ type: WASM_PROCESS_READY });\n exports = instance.exports;\n publishMemory(init.sab, memory?.buffer.byteLength ?? 0);\n done(\n withExitHook(instance, () => atExit()),\n init.program.module\n );\n }, failed);\n return {};\n },\n\n preRun: [\n (m: object) => {\n if (!hasStreams(m)) return;\n const fs = (m as RunningModule).FS;\n\n trackCloseOnExec(fs);\n pathOpensLinks(fs);\n try {\n fs.mkdirTree(init.cwd);\n fs.chdir(init.cwd);\n } catch {}\n },\n ],\n onRuntimeInitialized: () => ready(),\n };\n (deps.evaluate ?? evaluateGlue)(init.program.glue, module);\n await initialized;\n const running = module as unknown as RunningModule;\n if (!hasStreams(running)) return runStdioOnly(running, init);\n linuxDevices(running.FS, init.owners === true);\n const vfs = mountVfsIntoEmscripten(running.FS, {\n bridge: createSyncFsSabBridge(transport, bridgeFlags(init)),\n cwd: init.cwd,\n warn: deps.warn ?? say(2),\n cred: init.owners ? init.cred : undefined,\n });\n heldIn(running.FS, init, transport);\n early = () => signals.quiet(() => vfs.flushDirty());\n closeDropsLocks(running.FS, sys);\n const sigpipe = (): boolean => running.sliccSigpipe?.() === 1 || sigpipeSpared(gated);\n const restartable = (): boolean => signals.restartable();\n const streams = new KernelStreams(running.FS, sys, {\n sigpipe,\n restartable,\n ...(init.owners ? { owners: true } : {}),\n program: init.argv0,\n });\n trackCloseOnExec(running.FS);\n quietQuit(running.FS as unknown as QuitFs, (on) => {\n streams.quitting = on;\n });\n atExit = () => streams.exiting();\n useMounts(running.FS, { ...init.env, HOSTNAME: initHostname(init) }, true);\n useZeroDevices(running.FS);\n useProcfs(running.FS as unknown as ProcFs, sys, init.pid);\n if (init.fork) restoreForkedStreams(running.FS, streams, init.fork.streams ?? []);\n else {\n wireKernelStdio(running.FS, streams, sys);\n for (const entry of init.fds ?? []) wireKernelFd(running.FS, streams, entry);\n }\n const pipefs = ownValue<ProcessPipeFs>(running, 'PIPEFS');\n if (pipefs) streams.usePipes(pipefs);\n streams.useControllingTerminal();\n streams.useKernelFdMetadata();\n useDevFd(running.FS);\n useDevRemoval(running.FS);\n useFifoOpens(running.FS, (stream, path) => streams.attachFifo(stream, path));\n useFileMmap(running.FS, {\n sys,\n memory: () => memory,\n memalign: () => exports?.emscripten_builtin_memalign as Memalign | undefined,\n });\n const livePath = (s: ProcessStream) => liveNodePath(s.node as unknown as LiveFsNode);\n running.sliccKernel = createProcessKernel({\n transport,\n Fs: running.FS,\n env: init.env,\n pid: init.pid,\n beforeSpawn: () => vfs.flush(),\n afterChild: () => vfs.invalidate(),\n raise: (sig) => running.sliccRaise?.(sig),\n restartable,\n memory: () => memory,\n deliveries: () => signals.deliveries(),\n describeFork: () => describeForFork(running.FS, sys, streams, livePath),\n inherit: (actions) => describeInherited(running.FS, sys, streams, livePath, actions),\n stdioPromoter: () => vfsPromoter(running.FS, sys, streams, livePath),\n ...callerOwner(running.FS, init),\n });\n running.sliccKernel.http = createHttpKernel(transport);\n running.sliccKernel.hostname = initHostname(init);\n running.sliccKernel.net = createSocketKernel({\n transport,\n Fs: running.FS,\n sys,\n streams,\n sigpipe,\n restartable,\n });\n return runWithFlush(running, init, streams, vfs);\n}\n\nfunction runWithFlush(\n running: RunningModule,\n init: WasmProcessInitMsg,\n streams: KernelStreams,\n vfs: { flush(): void }\n): number {\n try {\n return streams.exitStatus(runMain(running, init));\n } finally {\n try {\n vfs.flush();\n } catch {}\n }\n}\n\ninterface QuitFs {\n quit?: () => void;\n close: (stream: unknown) => void;\n}\n\nfunction withExitHook(\n instance: WebAssembly.Instance,\n begin: () => () => void\n): WebAssembly.Instance {\n const funcs = instance.exports.__funcs_on_exit;\n if (typeof funcs !== 'function') return instance;\n const run = funcs as () => void;\n const exported = Object.assign(Object.create(null), instance.exports, {\n __funcs_on_exit: () => {\n const end = begin();\n try {\n run();\n } finally {\n end();\n }\n },\n });\n return { exports: exported } as WebAssembly.Instance;\n}\n\nexport function quietQuit(Fs: QuitFs, quitting?: (on: boolean) => void): void {\n const { quit, close } = Fs;\n if (!quit) return;\n Fs.quit = () => {\n quitting?.(true);\n Fs.close = (stream) => {\n try {\n close.call(Fs, stream);\n } catch {}\n };\n try {\n quit.call(Fs);\n } finally {\n quitting?.(false);\n Fs.close = close;\n }\n };\n}\n\nfunction hasStreams(module: object): boolean {\n return typeof ownValue<Partial<ProcessFs>>(module, 'FS')?.getStream === 'function';\n}\n\nfunction runStdioOnly(running: RunningModule, init: WasmProcessInitMsg): number {\n if (init.fork) throw new Error(`${init.argv0} cannot resume a fork: it has no filesystem`);\n return runMain(running, init);\n}\n\nfunction runMain(running: RunningModule, init: WasmProcessInitMsg): number {\n try {\n if (init.fork) {\n if (!running.sliccForkChild) throw new Error(`${init.argv0} cannot resume a fork`);\n return running.sliccForkChild({ ...init.fork, pid: init.pid }) ?? 0;\n }\n\n return (running.sliccRunMain ?? running.callMain)(init.args) ?? 0;\n } catch (e) {\n const status = (e as { status?: unknown })?.status;\n if (typeof status !== 'number') throw e;\n return status;\n }\n}\n\nconst OUTSIDE: ReadonlySet<string> = new Set([\n 'clock_time_get',\n 'emscripten_date_now',\n 'emscripten_get_now',\n 'random_get',\n 'getentropy',\n]);\n\nfunction watchOutside(imports: WebAssembly.Imports): WebAssembly.Imports {\n for (const space of Object.values(imports)) {\n for (const [name, value] of Object.entries(space)) {\n if (!OUTSIDE.has(name) || typeof value !== 'function') continue;\n const look = value as (...args: unknown[]) => unknown;\n space[name] = (...args: unknown[]) => {\n lookedOutside();\n return look(...args);\n };\n }\n }\n return imports;\n}\n", "import type { SyncFsResult } from '../../realm/sync-fs-wire.ts';\nimport { createSyncFsSabBridge, type SyncSabTransport } from '../../realm/sync-sab-bridge.ts';\nimport type { SyncSabRequestBody } from '../../realm/sync-sab-wire.ts';\nimport { kernelSys } from '../process-runtime.ts';\nimport { E, EVENTTYPE } from '../wasi/wasi-abi.ts';\nimport { normalize } from '../wasi/wasi-files.ts';\nimport { type WasiFunction, WasiHost } from '../wasi/wasi-host.ts';\nimport { JsCallError } from './js-kernel.ts';\nimport type { SyncCall } from './js-sync.ts';\n\nexport interface JsWasiOptions {\n args?: readonly string[];\n env?: Readonly<Record<string, string>>;\n preopens?: Readonly<Record<string, string>>;\n stdio?: readonly [number, number, number];\n returnOnExit?: boolean;\n}\n\nexport interface JsWasi {\n readonly imports: { wasi_snapshot_preview1: Record<string, WasiFunction> };\n readonly wasiImport: Record<string, WasiFunction>;\n bind(memory: WebAssembly.Memory): void;\n start(instance: WebAssembly.Instance): number;\n initialize(instance: WebAssembly.Instance): void;\n close(): void;\n}\n\nexport class JsWasiExit extends Error {\n readonly code: number;\n constructor(code: number) {\n super(`wasi exit ${code}`);\n this.code = code;\n }\n}\n\nexport interface JsWasiDeps {\n lane: SyncCall;\n pid: number;\n cwd: string;\n resolve(path: string): string;\n fs: { owners: boolean; links: boolean } | undefined;\n live: Set<JsWasi>;\n owned: OwnedFds;\n}\n\nexport interface OwnedFds {\n add(fd: number): void;\n remove(fd: number): void;\n}\n\nexport function ownedFds(sab: SharedArrayBuffer | undefined): OwnedFds {\n if (!sab) return { add: () => {}, remove: () => {} };\n const view = new Int32Array(sab);\n const fds = new Set<number>();\n const publish = (): void => {\n Atomics.store(view, 0, 0);\n let n = 0;\n for (const fd of fds) {\n if (1 + n >= view.length) break;\n view[1 + n++] = fd;\n }\n Atomics.store(view, 0, n);\n };\n return {\n add(fd) {\n fds.add(fd);\n publish();\n },\n remove(fd) {\n if (fds.delete(fd)) publish();\n },\n };\n}\n\nconst SUB_SIZE = 48;\nconst SUB_TAG = 8;\nconst SUB_FD = 16;\nconst NO_FD = 0x7fffffff;\n\ntype PathArgs = readonly [fd: number, ptr: number, len: number];\n\nconst PATHS: Readonly<Record<string, readonly PathArgs[]>> = {\n path_open: [[0, 2, 3]],\n path_filestat_get: [[0, 2, 3]],\n path_filestat_set_times: [[0, 2, 3]],\n path_create_directory: [[0, 1, 2]],\n path_remove_directory: [[0, 1, 2]],\n path_unlink_file: [[0, 1, 2]],\n path_readlink: [[0, 1, 2]],\n path_symlink: [[2, 3, 4]],\n path_rename: [\n [0, 1, 2],\n [3, 4, 5],\n ],\n path_link: [\n [0, 2, 3],\n [4, 5, 6],\n ],\n};\n\nconst RESULTS: Readonly<Record<string, number>> = { path_open: 8, sock_accept: 2 };\n\nconst SPECIAL = new Set(['fd_close', 'fd_renumber', 'poll_oneoff', 'proc_exit']);\n\nfunction fdArgsOf(name: string): readonly number[] {\n const paths = PATHS[name];\n if (paths) return paths.map(([fd]) => fd);\n return /^(fd|sock)_/.test(name) ? [0] : [];\n}\n\nfunction laneTransport(lane: SyncCall): SyncSabTransport {\n return { call: (req: SyncSabRequestBody): SyncFsResult => lane(req) };\n}\n\nfunction within(root: string, dir: string, path: string): boolean {\n if (path.startsWith('/')) return false;\n const base = dir === root ? [] : dir.slice(root === '/' ? 1 : root.length + 1).split('/');\n const parts = [...base];\n for (const seg of path.split('/')) {\n if (seg === '' || seg === '.') continue;\n if (seg === '..') {\n if (parts.length === 0) return false;\n parts.pop();\n } else parts.push(seg);\n }\n return true;\n}\n\nfunction preopensOf(\n given: Readonly<Record<string, string>> | undefined,\n resolve: (path: string) => string\n): Array<[string, string]> {\n if (given === undefined) return [];\n if (typeof given !== 'object' || given === null) throw new JsCallError('EINVAL', 'wasi preopens');\n return Object.entries(given).map(([name, path]) => {\n if (typeof path !== 'string' || path === '') throw new JsCallError('EINVAL', 'wasi preopens');\n return [name, normalize(resolve(path))];\n });\n}\n\nexport function createJsWasi(deps: JsWasiDeps, o: JsWasiOptions = {}): JsWasi {\n const transport = laneTransport(deps.lane);\n const sys = kernelSys(transport);\n const call = (req: SyncSabRequestBody): unknown => {\n const r = deps.lane(req);\n if (!r.ok) throw new JsCallError(r.errno, req.op);\n return r.kind === 'json' ? r.json : r.kind === 'bytes' ? r.bytes : undefined;\n };\n const host = new WasiHost({\n args: [...(o.args ?? [])],\n env: { ...(o.env ?? {}) },\n cwd: deps.cwd,\n pid: deps.pid,\n kernel: { sys, call: call as WasiHost['o']['kernel']['call'] },\n fs: createSyncFsSabBridge(transport, { ...deps.fs, direct: true }),\n bare: true,\n });\n const owned = deps.owned;\n const guest = new Map<number, number>();\n const own = (g: number, k: number): void => {\n guest.set(g, k);\n owned.add(k);\n };\n const roots = new Map<number, string>();\n const opened: number[] = [];\n const closeKernel = (fd: number): void => {\n owned.remove(fd);\n try {\n host.fds.close(fd);\n } catch {}\n };\n try {\n (o.stdio ?? [0, 1, 2]).forEach((fd, i) => {\n const k = host.fds.adoptCopy(fd);\n opened.push(k);\n own(i, k);\n });\n for (const [name, path] of preopensOf(o.preopens, deps.resolve)) {\n const k = host.fds.preopenAt(path, name);\n opened.push(k);\n const g = 3 + roots.size;\n own(g, k);\n roots.set(g, path);\n }\n } catch (err) {\n for (const k of opened) closeKernel(k);\n throw err;\n }\n const table = host.imports();\n const view = () => host.mem.view();\n const free = (): number => {\n let g = 3;\n while (guest.has(g)) g++;\n return g;\n };\n const confined = (name: string, args: number[]): boolean => {\n for (const [fdAt, ptrAt, lenAt] of PATHS[name] ?? []) {\n const g = args[fdAt];\n const root = roots.get(g);\n const dir = host.fds.find(guest.get(g) as number);\n if (root === undefined || dir?.type !== 'dir') continue;\n if (!within(root, dir.path, host.mem.string(args[ptrAt], args[lenAt]))) return false;\n }\n return true;\n };\n const opens = (out: number, root: string | undefined): void => {\n const k = view().getUint32(out, true);\n const g = free();\n own(g, k);\n if (root !== undefined) roots.set(g, root);\n view().setUint32(out, g, true);\n };\n const imports: Record<string, WasiFunction> = {};\n for (const [name, fn] of Object.entries(table)) {\n if (SPECIAL.has(name)) continue;\n const fdArgs = fdArgsOf(name);\n imports[name] = ((...raw: number[]) => {\n const args = [...raw];\n for (const at of fdArgs) {\n const k = guest.get(args[at]);\n if (k === undefined) return E.BADF;\n args[at] = k;\n }\n if (!confined(name, raw)) return E.NOTCAPABLE;\n const out = RESULTS[name];\n if (out !== undefined && (raw[out] >>> 0) + 4 > host.mem.size()) return E.FAULT;\n const errno = (fn as (...a: number[]) => number)(...args);\n if (errno !== E.SUCCESS) return errno;\n if (out !== undefined) opens(raw[out] >>> 0, roots.get(raw[0]));\n return errno;\n }) as WasiFunction;\n }\n imports.fd_close = ((g: number) => {\n const k = guest.get(g);\n if (k === undefined) return E.BADF;\n guest.delete(g);\n roots.delete(g);\n owned.remove(k);\n return (table.fd_close as (fd: number) => number)(k);\n }) as WasiFunction;\n imports.fd_renumber = ((from: number, to: number) => {\n const kf = guest.get(from);\n const kt = guest.get(to);\n if (kf === undefined || kt === undefined) return E.BADF;\n if (from === to) return E.SUCCESS;\n closeKernel(kt);\n guest.set(to, kf);\n const root = roots.get(from);\n if (root === undefined) roots.delete(to);\n else roots.set(to, root);\n guest.delete(from);\n roots.delete(from);\n return E.SUCCESS;\n }) as WasiFunction;\n imports.poll_oneoff = ((inPtr: number, outPtr: number, n: number, nevents: number) => {\n const v = view();\n const swapped: Array<[number, number]> = [];\n for (let i = 0; i < n; i++) {\n const at = inPtr + i * SUB_SIZE;\n const tag = v.getUint8(at + SUB_TAG);\n if (tag !== EVENTTYPE.FD_READ && tag !== EVENTTYPE.FD_WRITE) continue;\n const g = v.getUint32(at + SUB_FD, true);\n swapped.push([at + SUB_FD, g]);\n v.setUint32(at + SUB_FD, guest.get(g) ?? NO_FD, true);\n }\n try {\n return (table.poll_oneoff as (...a: number[]) => number)(inPtr, outPtr, n, nevents);\n } finally {\n const after = view();\n for (const [at, g] of swapped) after.setUint32(at, g, true);\n }\n }) as WasiFunction;\n imports.proc_exit = ((code: number) => {\n throw new JsWasiExit(code);\n }) as WasiFunction;\n\n let closed = false;\n const run = (instance: WebAssembly.Instance, entry: '_start' | '_initialize'): number => {\n const memory = instance.exports.memory;\n if (memory instanceof WebAssembly.Memory) host.mem.bind(memory);\n const fn = instance.exports[entry];\n if (typeof fn !== 'function') {\n if (entry === '_initialize') return 0;\n throw new JsCallError('EINVAL', `wasi: the instance exports no ${entry}`);\n }\n try {\n fn();\n return 0;\n } catch (err) {\n if (err instanceof JsWasiExit && o.returnOnExit !== false) return err.code;\n throw err;\n }\n };\n const wasi: JsWasi = {\n imports: { wasi_snapshot_preview1: imports },\n wasiImport: imports,\n bind: (memory) => {\n if (!(memory instanceof WebAssembly.Memory)) throw new JsCallError('EINVAL', 'wasi bind');\n host.mem.bind(memory);\n },\n start: (instance) => run(instance, '_start'),\n initialize: (instance) => void run(instance, '_initialize'),\n close: () => {\n if (closed) return;\n closed = true;\n deps.live.delete(wasi);\n for (const k of guest.values()) closeKernel(k);\n guest.clear();\n roots.clear();\n },\n };\n deps.live.add(wasi);\n return wasi;\n}\n\nexport function wasiFor(\n o: Omit<JsWasiDeps, 'live' | 'owned'> & { owned: SharedArrayBuffer | undefined }\n): { create(options?: JsWasiOptions): JsWasi; closeAll(): void } {\n const deps: JsWasiDeps = { ...o, live: new Set(), owned: ownedFds(o.owned) };\n return {\n create: (options) => createJsWasi(deps, options),\n closeAll: () => {\n for (const wasi of [...deps.live]) wasi.close();\n },\n };\n}\n", "import type { WatchNote } from '../../fs/watch.ts';\nimport type { JsKernel } from './js-kernel.ts';\n\nexport type JsWatchNote = WatchNote;\n\nexport interface JsWatchOptions {\n recursive?: boolean;\n}\n\nexport interface JsWatcher {\n close(): void;\n}\n\nexport type JsWatchListener = (note: JsWatchNote) => void;\n\nexport function watchRequest(path: string, options: JsWatchOptions | undefined) {\n return { op: 'watch-open' as const, path, ...(options?.recursive ? { recursive: true } : {}) };\n}\n\nexport function watchArgs(\n options: JsWatchOptions | JsWatchListener | undefined,\n listener: JsWatchListener | undefined\n): [JsWatchOptions, JsWatchListener] {\n const onNote = typeof options === 'function' ? options : listener;\n if (typeof onNote !== 'function') throw new TypeError('watch needs a listener');\n return [typeof options === 'object' && options !== null ? options : {}, onNote];\n}\n\nexport function follow(\n kernel: Pick<JsKernel, 'blocking' | 'call'>,\n id: number,\n onNote: JsWatchListener\n): JsWatcher {\n const stop = new AbortController();\n let closed = false;\n const close = () => {\n if (closed) return;\n closed = true;\n stop.abort();\n kernel.call({ op: 'watch-close', id }).catch(() => undefined);\n };\n const pump = async () => {\n while (!closed) {\n let notes: JsWatchNote[];\n try {\n const r = await kernel.blocking({ op: 'watch-next', id }, stop.signal);\n notes = r.ok && r.kind === 'json' ? (r.json as JsWatchNote[]) : [];\n } catch {\n closed = true;\n return;\n }\n for (const note of notes) {\n if (closed) return;\n if ('ended' in note) closed = true;\n onNote(note);\n }\n }\n };\n void pump();\n return { close };\n}\n", "import { JsCallError, type JsKernel } from './js-kernel.ts';\n\nexport type JsWebSocketMessage = string | Uint8Array;\n\nexport interface JsWebSocketClose {\n code: number;\n reason: string;\n wasClean: boolean;\n}\n\nexport interface JsWebSocketOptions {\n protocols?: string | string[];\n headers?: HeadersInit;\n signal?: AbortSignal;\n}\n\nexport interface JsWebSocket {\n readonly url: string;\n readonly protocol: string;\n readonly readable: ReadableStream<JsWebSocketMessage>;\n readonly writable: WritableStream<JsWebSocketMessage>;\n readonly closed: Promise<JsWebSocketClose>;\n close(close?: Partial<JsWebSocketClose>): void;\n}\n\nconst SEND_BUFFER = 1024 * 1024;\nconst MAX_REASON = 123;\nconst NEVER = new AbortController().signal;\n\nfunction failed(err: unknown): TypeError {\n return new TypeError('websocket failed', { cause: err });\n}\n\nfunction openError(err: unknown): unknown {\n if (!(err instanceof JsCallError) || err.detail === undefined) return err;\n const prefix = `${err.code}: `;\n const message = err.detail.startsWith(prefix) ? err.detail.slice(prefix.length) : err.detail;\n return Object.assign(new Error(message), { code: err.code });\n}\n\nfunction socketUrl(input: string | URL): string {\n const url = new URL(input);\n if (url.protocol === 'http:') url.protocol = 'ws:';\n else if (url.protocol === 'https:') url.protocol = 'wss:';\n if (url.protocol !== 'ws:' && url.protocol !== 'wss:') {\n throw new SyntaxError(`not a WebSocket URL: ${url.href}`);\n }\n url.hash = '';\n return url.href;\n}\n\nfunction closeCode(code: number | undefined): number {\n if (code === undefined) return 1000;\n if (code === 1000 || (code >= 3000 && code <= 4999)) return code;\n throw new JsCallError('EINVAL', `close code ${code}`);\n}\n\nfunction closeReason(reason: string | undefined): string {\n if (reason === undefined) return '';\n if (new TextEncoder().encode(reason).length > MAX_REASON) {\n throw new JsCallError('EINVAL', `close reason over ${MAX_REASON} bytes`);\n }\n return reason;\n}\n\nconst wait = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport function websocketOp(kernel: JsKernel) {\n return async (input: string | URL, options: JsWebSocketOptions = {}): Promise<JsWebSocket> => {\n const url = socketUrl(input);\n const signal = options.signal ?? NEVER;\n signal.throwIfAborted();\n const protocols =\n typeof options.protocols === 'string' ? [options.protocols] : (options.protocols ?? []);\n const handle = (await kernel.json({\n op: 'net-ws-open',\n url,\n protocols,\n headers: [...new Headers(options.headers)],\n })) as number;\n const free = () => kernel.raw({ op: 'net-close', handle });\n let protocol: string;\n try {\n const r = await kernel.blocking({ op: 'net-ws-ready', handle }, signal);\n protocol = ((r.ok && r.kind === 'json' ? r.json : {}) as { protocol: string }).protocol;\n } catch (err) {\n await free();\n throw signal.aborted ? signal.reason : failed(openError(err));\n }\n\n let settle!: (close: JsWebSocketClose) => void;\n let lose!: (err: unknown) => void;\n const closed = new Promise<JsWebSocketClose>((resolve, reject) => {\n settle = resolve;\n lose = reject;\n });\n closed.catch(() => undefined);\n const stop = new AbortController();\n let freed = false;\n const onAbort = (): void => hardStop(signal.reason);\n const finish = (): void => {\n freed = true;\n signal.removeEventListener('abort', onAbort);\n void free();\n };\n const hardStop = (reason: unknown): void => {\n if (stop.signal.aborted) return;\n stop.abort(reason);\n lose(reason);\n finish();\n };\n signal.addEventListener('abort', onAbort, { once: true });\n let settled = false;\n let readDone = false;\n const release = (): void => {\n if (!settled || !readDone || freed) return;\n finish();\n };\n kernel\n .blocking({ op: 'net-ws-wait', handle }, stop.signal)\n .then((r) => {\n settled = true;\n settle((r as Extract<typeof r, { kind: 'json' }>).json as JsWebSocketClose);\n release();\n })\n .catch(lose);\n const close = (how: Partial<JsWebSocketClose> = {}): void => {\n void kernel.raw({\n op: 'net-ws-close',\n handle,\n code: closeCode(how.code),\n reason: closeReason(how.reason),\n });\n };\n\n const readable = new ReadableStream<JsWebSocketMessage>(\n {\n async pull(controller) {\n let r: Awaited<ReturnType<JsKernel['blocking']>>;\n try {\n r = await kernel.blocking({ op: 'net-ws-recv', handle }, stop.signal);\n } catch (err) {\n hardStop(stop.signal.aborted ? stop.signal.reason : failed(err));\n throw stop.signal.reason;\n }\n stop.signal.throwIfAborted();\n if (r.ok && r.kind === 'bytes') {\n controller.enqueue(r.bytes);\n return;\n }\n const text = ((r.ok && r.kind === 'json' ? r.json : {}) as { text?: string }).text;\n if (text !== undefined) {\n controller.enqueue(text);\n return;\n }\n controller.close();\n readDone = true;\n release();\n },\n cancel: () => {\n close();\n readDone = true;\n release();\n },\n },\n { highWaterMark: 0 }\n );\n\n const writable = new WritableStream<JsWebSocketMessage>({\n async write(chunk, controller) {\n stop.signal.throwIfAborted();\n const send = async (body: object): Promise<number> => {\n if (settled) throw new JsCallError('EPIPE', 'the websocket is closed');\n return (await kernel.json({ op: 'net-ws-send', handle, ...body })) as number;\n };\n let buffered = await send(typeof chunk === 'string' ? { text: chunk } : { body: chunk });\n while (buffered > SEND_BUFFER) {\n await wait(10);\n stop.signal.throwIfAborted();\n controller.signal.throwIfAborted();\n buffered = await send({});\n }\n },\n close: () => close(),\n abort: () => close({ code: 1000, reason: '' }),\n });\n\n return { url, protocol, readable, writable, closed, close };\n };\n}\n", "import { physicalPathAsync } from '../../fs/physical-path.ts';\nimport { type CwdAnswer, HeldCwd } from '../../kernel/held-cwd.ts';\nimport type { HeldCwdInit } from '../../kernel/protocol.ts';\nimport { SIG } from '../../kernel/signals.ts';\nimport { cwdFor } from '../../realm/emscripten-held-cwd.ts';\nimport { parseSyncFsStat, type SyncFsBridgeStat } from '../../realm/sync-fs-wire.ts';\nimport { KERNEL_VERSION } from '../../version.ts';\nimport {\n childOps,\n type JsChild,\n type JsExited,\n type JsSpawnOptions,\n type JsWaitOptions,\n} from './js-children.ts';\nimport {\n devAsync,\n devExists,\n devOpen,\n devReaddir,\n devReadlink,\n devResolveTarget,\n devStat,\n inDev,\n readWhole,\n streamFile,\n} from './js-dev.ts';\nimport { exitAtOnce, type PendingWrite, type SavedMode } from './js-exit.ts';\nimport { fetchOp } from './js-fetch.ts';\nimport {\n absent,\n brokenPipe,\n CHUNK,\n checkOpen,\n type FdInfo,\n fileWrite,\n index,\n intoTarget,\n isExclusive,\n type JsFdType,\n type JsOpenOptions,\n type JsStatFs,\n type JsWriteOptions,\n joined,\n MAX_IO,\n MAX_PREAD,\n openRequest,\n readDevice,\n statFsOf,\n typeOf,\n writeDevice,\n written,\n} from './js-io.ts';\nimport { callError, JsCallError, type JsKernel, modeOf, umaskRequest } from './js-kernel.ts';\nimport { type JsNet, netOps } from './js-net.ts';\nimport { procFsAsync, procOpenAsync } from './js-proc.ts';\nimport { runSync } from './js-run.ts';\nimport {\n type JsCred,\n type JsSyncContext,\n JsSyncKernel,\n laneOf,\n noLane,\n type SyncCall,\n type SyncShared,\n syncOps,\n} from './js-sync.ts';\nimport type { JsThreadContext } from './js-thread.ts';\nimport { type JsTty, ttyOps } from './js-tty.ts';\nimport { wasiFor } from './js-wasi.ts';\nimport {\n follow,\n type JsWatcher,\n type JsWatchListener,\n type JsWatchOptions,\n watchArgs,\n watchRequest,\n} from './js-watch.ts';\nimport { type JsWebSocket, type JsWebSocketOptions, websocketOp } from './js-websocket.ts';\n\nexport type { JsFdType, JsOpenOptions, JsWriteOptions } from './js-io.ts';\n\nexport interface JsFile {\n readonly fd: number;\n readonly path: string;\n size(): Promise<number>;\n read(position: number, length: number): Promise<Uint8Array>;\n readInto?(position: number, into: Uint8Array, offset?: number, length?: number): Promise<number>;\n write(position: number, data: Uint8Array): Promise<number>;\n truncate(size: number): Promise<void>;\n sync(): Promise<void>;\n close(): Promise<void>;\n}\n\nexport interface JsFdStatus {\n type: JsFdType;\n tty: boolean;\n seekable: boolean;\n}\n\nexport type JsSignal = number | `SIG${string}`;\n\nexport interface JsKernelInfo {\n readonly version: string;\n}\n\nexport const KERNEL_INFO: JsKernelInfo = Object.freeze({ version: KERNEL_VERSION });\n\nexport interface JsMemory {\n heapUsed?: number;\n heapTotal?: number;\n heapLimit?: number;\n external?: number;\n arrayBuffers?: number;\n}\n\nexport interface JsAsyncContext {\n run<R>(store: unknown, fn: (...args: unknown[]) => R, ...args: unknown[]): R;\n getStore(): unknown;\n enterWith(store: unknown): void;\n}\n\nexport interface JsProgramContext {\n readonly kernel: JsKernelInfo;\n memory(): JsMemory;\n readonly asyncContext?: JsAsyncContext;\n readonly argv: readonly string[];\n readonly env: Readonly<Record<string, string>>;\n readonly pid: number;\n ppid(): Promise<number>;\n readonly cwd: string;\n readonly stdin: ReadableStream<Uint8Array>;\n readonly stdout: WritableStream<Uint8Array>;\n readonly stderr: WritableStream<Uint8Array>;\n read(fd: number, max?: number): Promise<Uint8Array>;\n write(fd: number, data: Uint8Array | string, options?: JsWriteOptions): Promise<number>;\n close(fd: number): Promise<void>;\n socketpair(): Promise<[number, number]>;\n pipe(): Promise<[number, number]>;\n select(sets: JsSelectSets, options?: { signal?: AbortSignal }): Promise<JsSelected>;\n fdStatus(fd: number): Promise<JsFdStatus>;\n isatty(fd: number): Promise<boolean>;\n open(path: string, options?: JsOpenOptions): Promise<JsFile>;\n resolve(path: string): string;\n fs: {\n stat(path: string): Promise<SyncFsBridgeStat>;\n lstat(path: string): Promise<SyncFsBridgeStat>;\n exists(path: string): Promise<boolean>;\n readdir(path: string): Promise<string[]>;\n mkdir(path: string, options?: { recursive?: boolean; mode?: number }): Promise<void>;\n rm(path: string): Promise<void>;\n unlink(path: string): Promise<void>;\n rename(from: string, to: string): Promise<void>;\n chmod(path: string, mode: number): Promise<void>;\n link(from: string, to: string): Promise<void>;\n symlink(target: string, path: string): Promise<void>;\n readlink(path: string): Promise<string>;\n statfs(path: string): Promise<JsStatFs>;\n readFile(path: string): Promise<Uint8Array>;\n writeFile(path: string, data: Uint8Array | string, options?: { mode?: number }): Promise<void>;\n watch(\n path: string,\n options: JsWatchOptions | JsWatchListener,\n listener?: JsWatchListener\n ): Promise<JsWatcher>;\n };\n signals: {\n on(signal: JsSignal, handler: (signal: number) => void): Promise<void>;\n ignore(signal: JsSignal): Promise<void>;\n reset(signal: JsSignal): Promise<void>;\n };\n sync: JsSyncContext;\n spawn(options: JsSpawnOptions): Promise<JsChild>;\n wait(pid: number, options?: JsWaitOptions): Promise<JsExited>;\n kill(pid: number, signal?: JsSignal): Promise<void>;\n sudo(args: readonly string[]): Promise<JsSudoAnswer>;\n crontab(call: JsCrontabCall): Promise<JsCrontabAnswer>;\n umask(mask?: number): Promise<number>;\n net: JsNet;\n websocket(url: string | URL, options?: JsWebSocketOptions): Promise<JsWebSocket>;\n tty: JsTty;\n fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;\n exit(code?: number): never;\n readonly thread: JsThreadContext;\n onUncaught(listener: JsStrayListener): () => void;\n onUnhandledRejection(listener: JsStrayListener): () => void;\n}\n\nexport interface JsSelectSets {\n read?: readonly number[];\n write?: readonly number[];\n timeoutMs?: number;\n}\n\nexport interface JsSelected {\n read: number[];\n write: number[];\n}\n\nfunction fdList(list: readonly number[] | undefined): number[] {\n const fds = [...(list ?? [])];\n if (!fds.every((fd) => Number.isInteger(fd) && fd >= 0))\n throw new JsCallError('EINVAL', 'select', 'ERR_INVALID_ARG_VALUE: fds must be integers >= 0');\n return fds;\n}\n\nasync function selectOp(\n kernel: JsKernel,\n sets: JsSelectSets,\n signal: AbortSignal | undefined\n): Promise<JsSelected> {\n signal?.throwIfAborted();\n const read = fdList(sets.read);\n const write = fdList(sets.write);\n const timeoutMs = sets.timeoutMs ?? -1;\n if (!Number.isFinite(timeoutMs))\n throw new JsCallError('EINVAL', 'select', 'ERR_INVALID_ARG_VALUE: timeoutMs');\n const r = await kernel.blocking(\n { op: 'fd-select', read, write, timeoutMs: Math.max(-1, Math.floor(timeoutMs)) },\n signal\n );\n const got = (r.ok && r.kind === 'json' ? r.json : {}) as Partial<JsSelected>;\n return { read: got.read ?? [], write: got.write ?? [] };\n}\n\nexport interface JsCrontabCall {\n action: 'list' | 'remove' | 'install';\n user?: string;\n text?: string;\n}\n\nexport type JsCrontabAnswer =\n | { text: string; error?: undefined }\n | { error: string; text?: undefined };\n\nexport type JsSudoAnswer =\n | { error: string; errno: string }\n | { list: string }\n | { run: string[] }\n | { pid: number };\n\nexport type JsStrayListener = (error: unknown, promise?: Promise<unknown>) => void;\n\nexport interface JsStrays {\n exception: Set<JsStrayListener>;\n rejection: Set<JsStrayListener>;\n}\n\nfunction listen(listeners: Set<JsStrayListener>, listener: JsStrayListener): () => void {\n const own = (error: unknown, promise?: Promise<unknown>) => listener(error, promise);\n listeners.add(own);\n return () => void listeners.delete(own);\n}\n\nexport class JsExit extends Error {\n readonly status: number;\n\n constructor(status: number) {\n super(`exit ${status}`);\n this.name = 'JsExit';\n this.status = status;\n }\n}\n\nexport interface ContextOptions {\n kernel: JsKernel;\n argv: readonly string[];\n env: Readonly<Record<string, string>>;\n pid: number;\n ppid: number;\n cwd: string;\n exit(status: number): void;\n random?: (bytes: Uint8Array) => void;\n lane?: SyncCall;\n strays?: JsStrays;\n thread: JsThreadContext;\n memory?: (() => JsMemory) | undefined;\n asyncContext?: (() => JsAsyncContext) | undefined;\n fs?: { owners: boolean; links: boolean };\n owned?: SharedArrayBuffer;\n held?: HeldCwdInit | undefined;\n failed?: () => number | undefined;\n}\n\nconst encoder = new TextEncoder();\n\nexport interface Identity {\n pid: number;\n ppid: number;\n}\n\nexport function identityOf(answer: unknown, fallback: { pid: number; ppid?: number }): Identity {\n const id = answer as Partial<Identity> | null;\n return {\n pid: typeof id?.pid === 'number' ? id.pid : fallback.pid,\n ppid: typeof id?.ppid === 'number' ? id.ppid : (fallback.ppid ?? 1),\n };\n}\n\nexport function signalNumber(signal: JsSignal): number {\n if (typeof signal === 'number') {\n if (Number.isInteger(signal) && signal >= 1 && signal <= 31) return signal;\n throw new JsCallError('EINVAL', `signal ${signal}`);\n }\n const name = signal.slice(3);\n if (!signal.startsWith('SIG') || !Object.hasOwn(SIG, name)) {\n throw new JsCallError('EINVAL', `signal ${signal}`);\n }\n return (SIG as Record<string, number>)[name] as number;\n}\n\nexport function resolvePath(cwd: string, path: string): string {\n const parts: string[] = [];\n for (const part of (path.startsWith('/') ? path : `${cwd}/${path}`).split('/')) {\n if (part === '' || part === '.') continue;\n if (part === '..') parts.pop();\n else parts.push(part);\n }\n return `/${parts.join('/')}`;\n}\n\nexport interface CreatedContext {\n ctx: JsProgramContext;\n drain(): Promise<unknown>;\n}\n\ninterface KillerDeps {\n self: number;\n kernel: JsKernel;\n syncKernel: JsSyncKernel;\n lane: SyncCall;\n writes: Set<PendingWrite>;\n modes: () => SavedMode[];\n}\n\nfunction killer(d: KillerDeps): JsSyncContext['kill'] {\n return (pid, signal = 'SIGTERM') => {\n const sig = signal === 0 ? 0 : signalNumber(signal);\n const self = sig !== 0 && includesSelf(d.syncKernel, d.self, pid);\n if (!self || d.kernel.disposition(sig) !== 'terminate') {\n d.syncKernel.call({ op: 'proc-kill', pid, sig });\n return;\n }\n const target = pid === d.self ? {} : { target: pid };\n const r = d.lane({ op: 'proc-kill-self', sig, ...target, probe: true });\n if (!r.ok) throw new JsCallError(r.errno, 'kill');\n if (r.kind === 'void') return;\n exitAtOnce(d.lane, [...d.writes], d.modes(), 128 + sig, {\n op: 'proc-kill-self',\n sig,\n ...target,\n });\n };\n}\n\nfunction includesSelf(kernel: JsSyncKernel, self: number, pid: number): boolean {\n if (pid === self || pid === 0) return true;\n if (pid > 0 || pid === -1) return false;\n return kernel.json({ op: 'proc-getpgid', pid: 0 }) === -pid;\n}\n\nfunction writer(kernel: JsKernel, info: (fd: number) => Promise<FdInfo>, pid: number) {\n const writes = new Set<PendingWrite>();\n const sendAll = async (\n fd: number,\n data: Uint8Array,\n i: FdInfo,\n w: PendingWrite,\n signal?: AbortSignal\n ): Promise<void> => {\n while (w.at < data.length) {\n const body = data.subarray(w.at, w.at + MAX_IO);\n w.len = body.length;\n try {\n w.at += signal\n ? await sendSome(kernel, fd, body, signal)\n : written(\n await kernel.blocking({ op: 'fd-write', fd, body }, undefined, (id) => {\n if (w.op !== undefined) kernel.ack(w.op);\n w.op = id;\n }),\n body.length\n );\n if (w.op !== undefined) kernel.ack(w.op);\n w.op = undefined;\n } catch (err) {\n if (brokenPipe(err, i)) await kernel.call({ op: 'proc-kill', pid, sig: SIG.PIPE });\n throw err;\n }\n }\n };\n const writeAll = async (fd: number, data: Uint8Array, signal?: AbortSignal): Promise<void> => {\n const w: PendingWrite = { fd, data, at: 0, len: 0 };\n if (!signal) writes.add(w);\n try {\n const i = await info(fd);\n if (writeDevice(i)) return;\n await sendAll(fd, data, i, w, signal);\n } finally {\n writes.delete(w);\n }\n };\n\n const writeSome = async (fd: number, data: Uint8Array): Promise<number> => {\n const i = await info(fd);\n if (writeDevice(i)) return data.length;\n const body = data.subarray(0, MAX_IO);\n const r = await kernel.raw({ op: 'fd-write', fd, body, nonblock: true });\n if (r.ok) return written(r, body.length);\n if (brokenPipe(callError(r, 'fd-write'), i))\n await kernel.call({ op: 'proc-kill', pid, sig: SIG.PIPE });\n throw callError(r, 'fd-write');\n };\n return { writes, writeAll, writeSome };\n}\n\nfunction readable(read: (fd: number) => Promise<Uint8Array>): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>(\n {\n async pull(controller) {\n const chunk = await read(0);\n if (chunk.length === 0) controller.close();\n else controller.enqueue(chunk);\n },\n },\n { highWaterMark: 0 }\n );\n}\n\nasync function resolveDevAsync(kernel: JsKernel, abs: string): Promise<string | undefined> {\n try {\n const resolved = await physicalPathAsync(\n {\n async lstat(p) {\n return parseSyncFsStat(await kernel.json({ op: 'lstat', path: p })) ?? {};\n },\n async readlink(p) {\n return String(await kernel.json({ op: 'readlink', path: p }));\n },\n },\n abs\n );\n return resolved !== abs && inDev(resolved) ? resolved : undefined;\n } catch {\n return undefined;\n }\n}\n\nasync function vfsStat(\n kernel: JsKernel,\n abs: string,\n op: 'stat' | 'lstat',\n tryDev: (abs: string) => Promise<string | undefined>\n): Promise<SyncFsBridgeStat> {\n try {\n await kernel.call({ op: 'fd-path-flush', path: abs });\n const s = parseSyncFsStat(await kernel.json({ op, path: abs }));\n if (!s) throw new JsCallError('EIO', op);\n return s;\n } catch (err) {\n if (!(err instanceof JsCallError) || err.code !== 'ENOENT') throw err;\n const devPath = await tryDev(abs);\n if (!devPath) throw err;\n return devAsync(kernel, devStat(devPath, op === 'stat'));\n }\n}\n\ninterface PipeIo {\n infos: Map<number, FdInfo>;\n handles: Map<number, () => void>;\n read(fd: number, max?: number, signal?: AbortSignal): Promise<Uint8Array>;\n write(fd: number, data: Uint8Array, signal?: AbortSignal): Promise<void>;\n}\n\nasync function fifoOpen(\n kernel: JsKernel,\n abs: string,\n options: JsOpenOptions,\n io: PipeIo\n): Promise<JsFile> {\n options.signal?.throwIfAborted();\n const req = { ...openRequest(abs, { ...options, create: false }), fifo: true };\n const r = await kernel.blocking(req, options.signal);\n const fd = (r.ok && r.kind === 'json' ? r.json : -1) as number;\n io.infos.set(fd, { kind: 'stream' });\n let open = true;\n const live = (): void => {\n if (!open) throw new JsCallError('EBADF', abs);\n };\n const seekless = (position: number, what: string): void => {\n live();\n if (position !== 0) throw new JsCallError('ESPIPE', what);\n };\n io.handles.set(fd, () => {\n open = false;\n });\n return {\n fd,\n path: abs,\n async size() {\n live();\n return 0;\n },\n async read(position, length) {\n seekless(position, 'read');\n return io.read(fd, length);\n },\n async write(position, data) {\n seekless(position, 'write');\n await io.write(fd, data);\n return data.length;\n },\n async truncate() {\n live();\n throw new JsCallError('EINVAL', 'truncate');\n },\n sync: async () => live(),\n async close() {\n if (!open) return;\n open = false;\n io.infos.delete(fd);\n io.handles.delete(fd);\n await kernel.raw({ op: 'fd-close', fd });\n },\n };\n}\n\nasync function vfsOpen(\n kernel: JsKernel,\n abs: string,\n options: JsOpenOptions,\n statOf: (op: 'stat' | 'lstat', path: string) => Promise<SyncFsBridgeStat>,\n io: PipeIo,\n whole: boolean\n): Promise<JsFile> {\n const { infos, handles } = io;\n const existing = await statOf(isExclusive(options) ? 'lstat' : 'stat', abs).catch(absent);\n checkOpen(abs, options, existing);\n const special = existing?.isSocket || (whole && existing?.isFifo);\n if (special && !isExclusive(options)) throw new JsCallError('ENXIO', abs);\n if (existing?.isFifo && !isExclusive(options)) return fifoOpen(kernel, abs, options, io);\n const fd = (await kernel.json(openRequest(abs, options))) as number;\n try {\n await kernel.call({ op: 'fd-vfs-stat', fd });\n } catch (err) {\n await kernel.raw({ op: 'fd-close', fd });\n throw err;\n }\n infos.set(fd, { kind: 'file' });\n const handle = fileHandle(kernel, fd, abs, options.append === true, () => {\n infos.delete(fd);\n handles.delete(fd);\n });\n handles.set(fd, handle.invalidate);\n return handle.file;\n}\n\nfunction setcredOn(syncKernel: JsSyncKernel): JsSyncContext['setcred'] {\n return (change) => {\n if (typeof change !== 'object' || change === null || Array.isArray(change)) {\n throw new JsCallError('EINVAL', 'setcred');\n }\n return syncKernel.json({ op: 'proc-setcred', change: { ...change } }) as JsCred;\n };\n}\n\nfunction watchingSyncOps(kernel: JsKernel, syncKernel: JsSyncKernel, shared: SyncShared) {\n const ops = syncOps(syncKernel, shared);\n const watch: JsSyncContext['fs']['watch'] = (path, options, listener) => {\n const [given, onNote] = watchArgs(options, listener);\n const id = syncKernel.json(watchRequest(shared.resolve(path), given)) as number;\n return follow(kernel, id, onNote);\n };\n return { ...ops, fs: { ...ops.fs, watch } };\n}\n\nfunction pendingReads(\n kernel: ContextOptions['kernel'],\n info: (fd: number) => Promise<FdInfo>,\n random: (bytes: Uint8Array) => void\n) {\n const reading = new Map<number, Set<AbortController>>();\n const read = async (fd: number, max = CHUNK, signal?: AbortSignal): Promise<Uint8Array> => {\n index(max, 'read');\n const emulated = readDevice(await info(fd), max, random);\n if (emulated) return emulated;\n const stop = new AbortController();\n const waits = reading.get(fd) ?? new Set();\n reading.set(fd, waits.add(stop));\n try {\n const n = Math.min(max, MAX_IO);\n if (signal) return await readPipe(kernel, fd, n, AbortSignal.any([signal, stop.signal]));\n const r = await kernel.blocking({ op: 'fd-read', fd, max: n }, stop.signal);\n return r.ok && r.kind === 'bytes' ? r.bytes : new Uint8Array(0);\n } finally {\n waits.delete(stop);\n if (waits.size === 0 && reading.get(fd) === waits) reading.delete(fd);\n }\n };\n const closing = (fd: number) => {\n for (const stop of reading.get(fd) ?? []) stop.abort(new JsCallError('EBADF', 'read'));\n reading.delete(fd);\n };\n return { read, closing };\n}\n\nconst cryptoRandom = (bytes: Uint8Array) =>\n void crypto.getRandomValues(bytes as Uint8Array<ArrayBuffer>);\n\nfunction tracked(\n pending: Set<Promise<unknown>>,\n writeAll: (fd: number, data: Uint8Array) => Promise<void>,\n writeSome: (fd: number, data: Uint8Array) => Promise<number>,\n failed?: () => number | undefined\n) {\n return (fd: number, data: Uint8Array | string, options?: JsWriteOptions): Promise<number> => {\n const status = failed?.();\n if (status !== undefined) return Promise.reject(new JsExit(status));\n const bytes = typeof data === 'string' ? encoder.encode(data) : data;\n let settle!: () => void;\n const settled = new Promise<void>((resolve) => (settle = resolve));\n pending.add(settled);\n return (async () => {\n try {\n if (options?.nonblock === true) return await writeSome(fd, bytes);\n await writeAll(fd, bytes);\n return bytes.length;\n } finally {\n pending.delete(settled);\n settle();\n }\n })();\n };\n}\n\nfunction heldOn(\n init: HeldCwdInit | undefined,\n lane: SyncCall,\n syncKernel: JsSyncKernel\n): HeldCwd | undefined {\n if (!init || lane === noLane) return undefined;\n const ask = () => syncKernel.json({ op: 'cwd-check' }) as CwdAnswer;\n return new HeldCwd(init.sab, init.slot, ask, init);\n}\n\nconst MEMORY_FIELDS = ['heapUsed', 'heapTotal', 'heapLimit', 'external', 'arrayBuffers'] as const;\n\nfunction measured(measure: (() => JsMemory) | undefined): JsMemory {\n const got = measure?.() ?? {};\n const out: JsMemory = {};\n for (const field of MEMORY_FIELDS) {\n const value = got[field];\n if (typeof value === 'number' && Number.isFinite(value)) out[field] = value;\n }\n return out;\n}\n\nfunction hostExtras(o: ContextOptions): {\n memory: () => JsMemory;\n asyncContext?: JsAsyncContext;\n} {\n return {\n memory: () => measured(o.memory),\n ...(o.asyncContext ? { asyncContext: o.asyncContext() } : {}),\n };\n}\n\nexport function createContext(o: ContextOptions): CreatedContext {\n const { kernel } = o;\n const infos = new Map<number, FdInfo>();\n const handles = new Map<number, () => void>();\n const pending = new Set<Promise<unknown>>();\n const random = o.random ?? cryptoRandom;\n let held: HeldCwd | undefined;\n const resolve = (path: string) => resolvePath(cwdFor(o.cwd, held, path), path);\n const tryDev = (abs: string) => resolveDevAsync(kernel, abs);\n let exiting: number | undefined;\n const exit = (code = 0): never => {\n exiting ??= code;\n o.exit(code);\n throw new JsExit(code);\n };\n const unwind = (): void => {\n if (exiting !== undefined) throw new JsExit(exiting);\n if (kernel.faulted) throw new JsExit(1);\n };\n const info = async (fd: number): Promise<FdInfo> => {\n const known = infos.get(fd);\n if (known) return known;\n const got = (await kernel.json({ op: 'fd-info', fd })) as FdInfo;\n infos.set(fd, got);\n return got;\n };\n const { read, closing } = pendingReads(kernel, info, random);\n\n const { writes, writeAll, writeSome } = writer(kernel, info, o.pid);\n\n const write = tracked(pending, writeAll, writeSome, o.failed);\n\n const writable = (fd: number) =>\n new WritableStream<Uint8Array>({\n write: async (chunk) => {\n await write(fd, chunk);\n },\n });\n\n const statOf = async (op: 'stat' | 'lstat', path: string): Promise<SyncFsBridgeStat> => {\n const abs = resolve(path);\n if (inDev(abs)) return devAsync(kernel, devStat(abs, op === 'stat'));\n return vfsStat(kernel, abs, op, tryDev);\n };\n\n const devIo = { infos, handles, read, write: writeAll };\n\n const open = async (\n path: string,\n options: JsOpenOptions = {},\n whole = false\n ): Promise<JsFile> => {\n const abs = resolve(path);\n if (inDev(abs)) return openDev(kernel, abs, options, devIo);\n try {\n return await vfsOpen(kernel, abs, options, statOf, devIo, whole);\n } catch (err) {\n if (!(err instanceof JsCallError) || err.code !== 'ENOENT') throw err;\n const devPath = await tryDev(abs);\n if (!devPath) throw err;\n return openDev(kernel, devPath, options, devIo);\n }\n };\n\n const fs = procFsAsync(pathOps(kernel, resolve, statOf, open, tryDev), kernel, {\n resolve,\n pid: o.pid,\n });\n const lane = o.lane ?? laneOf(undefined);\n if (o.lane && o.lane !== noLane) kernel.syncLane = o.lane;\n const syncKernel = new JsSyncKernel(lane, kernel, unwind);\n held = heldOn(o.held, lane, syncKernel);\n const terminal = ttyOps(kernel, syncKernel);\n const shared = { pid: o.pid, resolve, random, infos, handles, closing };\n const wasi = wasiFor({ lane, pid: o.pid, cwd: o.cwd, resolve, fs: o.fs, owned: o.owned });\n const sync: JsSyncContext = {\n kernel: KERNEL_INFO,\n tty: terminal.syncTty,\n ...watchingSyncOps(kernel, syncKernel, shared),\n run: (options) =>\n runSync(syncKernel, { env: o.env, cwd: o.cwd, resolve, signal: signalNumber }, options),\n spawn: (options) => spawnSync(options),\n wasi: { create: wasi.create },\n net: { listen: (options) => syncNet.listen(options) },\n exit: (status = 0): never => {\n exiting ??= status & 0xff;\n wasi.closeAll();\n return exitAtOnce(lane, [...writes], terminal.modes(), exiting);\n },\n kill: killer({ self: o.pid, kernel, syncKernel, lane, writes, modes: terminal.modes }),\n cred: () => syncKernel.json({ op: 'proc-cred' }) as JsCred,\n umask: (mask) => syncKernel.json(umaskRequest(mask)) as number,\n setcred: setcredOn(syncKernel),\n };\n\n const io = { read, send: writeAll, close: (fd: number) => ctx.close(fd) };\n const defaults = { env: o.env, cwd: o.cwd, signal: signalNumber };\n const { spawnSync, ...children } = childOps(kernel, io, defaults, syncKernel);\n const { sync: syncNet, ...net } = netOps(kernel, io, syncKernel);\n\n const strays = o.strays ?? { exception: new Set(), rejection: new Set() };\n const ctx: JsProgramContext = {\n kernel: KERNEL_INFO,\n argv: o.argv,\n env: o.env,\n pid: o.pid,\n ppid: async () => identityOf(await kernel.json({ op: 'proc-identity' }), o).ppid,\n cwd: o.cwd,\n stdin: readable(read),\n stdout: writable(1),\n stderr: writable(2),\n read,\n write,\n async close(fd) {\n handles.get(fd)?.();\n handles.delete(fd);\n infos.delete(fd);\n closing(fd);\n await kernel.call({ op: 'fd-close', fd });\n },\n socketpair: async () =>\n (await kernel.json({ op: 'sock-pair', domain: 'unix', type: 'stream' })) as [number, number],\n pipe: async () => (await kernel.json({ op: 'fd-pipe' })) as [number, number],\n select: (sets, options) => selectOp(kernel, sets, options?.signal),\n async fdStatus(fd) {\n const type = typeOf(await info(fd));\n return { type, tty: type === 'tty', seekable: type === 'file' };\n },\n isatty: async (fd) => typeOf(await info(fd)) === 'tty',\n open: procOpenAsync(open, kernel, { resolve, pid: o.pid }),\n resolve,\n fs,\n signals: {\n on: async (signal, handler) => kernel.setHandler(signalNumber(signal), handler),\n ignore: async (signal) => kernel.setHandler(signalNumber(signal), 'ignore'),\n reset: async (signal) => kernel.setHandler(signalNumber(signal), 'default'),\n },\n sync,\n fetch: fetchOp(kernel),\n umask: async (mask) => (await kernel.json(umaskRequest(mask))) as number,\n sudo: async (args) =>\n (await kernel.json({\n op: 'proc-sudo',\n args: [...args],\n cwd: o.cwd,\n ...(o.env.TERM !== undefined ? { term: o.env.TERM } : {}),\n })) as JsSudoAnswer,\n crontab: async (call) =>\n (await kernel.json({ ...call, op: 'proc-crontab' })) as JsCrontabAnswer,\n ...children,\n net,\n websocket: websocketOp(kernel),\n tty: terminal.tty,\n exit,\n thread: o.thread,\n ...hostExtras(o),\n onUncaught: (listener) => listen(strays.exception, listener),\n onUnhandledRejection: (listener) => listen(strays.rejection, listener),\n };\n const drain = async (): Promise<void> => {\n wasi.closeAll();\n for (;;) {\n await Promise.all([...pending]);\n await new Promise((resolve) => setTimeout(resolve, 0));\n if (pending.size === 0) break;\n }\n await terminal.restore();\n };\n return { ctx, drain };\n}\n\ninterface DevState {\n infos: Map<number, FdInfo>;\n handles: Map<number, () => void>;\n read(fd: number, max: number): Promise<Uint8Array>;\n write(fd: number, data: Uint8Array): Promise<void>;\n}\n\nasync function openDev(\n kernel: JsKernel,\n abs: string,\n options: JsOpenOptions,\n state: DevState\n): Promise<JsFile> {\n const { fd, file, ...access } = await devAsync(kernel, devOpen(abs, options));\n const forget = () => {\n state.infos.delete(fd);\n state.handles.delete(fd);\n };\n if (file) state.infos.set(fd, { kind: 'file' });\n const close = async (n: number) => {\n forget();\n await kernel.call({ op: 'fd-close', fd: n });\n };\n const handle = file\n ? fileHandle(kernel, fd, abs, options.append === true, forget)\n : streamFile(\n fd,\n abs,\n { read: (n, max) => state.read(n, max), write: state.write, close },\n access\n );\n state.handles.set(fd, handle.invalidate);\n return handle.file;\n}\n\nfunction fileHandle(\n kernel: JsKernel,\n fd: number,\n path: string,\n append: boolean,\n forget: () => void\n): { file: JsFile; invalidate: () => void } {\n let open = true;\n const live = (): void => {\n if (!open) throw new JsCallError('EBADF', path);\n };\n const pread = async (\n position: number,\n length: number,\n target?: { into: Uint8Array; at: number }\n ): Promise<Uint8Array | number> => {\n index(position, 'read');\n index(length, 'read');\n const parts: Uint8Array[] = [];\n let got = 0;\n do {\n live();\n const max = Math.min(length - got, MAX_PREAD);\n if (max <= 0) break;\n const chunk = await kernel.bytes({ op: 'fd-pread', fd, offset: position + got, max });\n if (chunk.length === 0) break;\n if (target) target.into.set(chunk, target.at + got);\n else parts.push(chunk);\n got += chunk.length;\n } while (got < length);\n return target ? got : joined(parts, got);\n };\n const file: JsFile = {\n fd,\n path,\n async size() {\n live();\n const s = (await kernel.json({ op: 'fd-vfs-stat', fd })) as { size: number };\n return s.size;\n },\n async readInto(position: number, into: Uint8Array, offset = 0, length = into.length - offset) {\n return (await pread(position, length, intoTarget(into, offset, length))) as number;\n },\n async read(position: number, length: number) {\n return (await pread(position, length)) as Uint8Array;\n },\n async write(position, data) {\n index(position, 'write');\n let at = 0;\n do {\n live();\n if (at >= data.length) break;\n const body = data.subarray(at, at + MAX_IO);\n const n = (await kernel.json(fileWrite(fd, append, position + at, body))) as number;\n if (!(n > 0)) throw new JsCallError('EIO', 'write');\n at += n;\n } while (at < data.length);\n return at;\n },\n async truncate(size) {\n live();\n index(size, 'truncate');\n await kernel.call({ op: 'fd-resize', fd, size });\n },\n async sync() {\n live();\n await kernel.call({ op: 'fd-flush', fd });\n },\n async close() {\n live();\n open = false;\n forget();\n await kernel.call({ op: 'fd-close', fd });\n },\n };\n return {\n file,\n invalidate: () => {\n open = false;\n },\n };\n}\n\nasync function readPipe(\n kernel: JsKernel,\n fd: number,\n max: number,\n signal: AbortSignal | undefined\n): Promise<Uint8Array> {\n if (signal) return receiveSome(kernel, fd, max, signal);\n const r = await kernel.blocking({ op: 'fd-read', fd, max });\n return r.ok && r.kind === 'bytes' ? r.bytes : new Uint8Array(0);\n}\n\nasync function receiveSome(\n kernel: JsKernel,\n fd: number,\n max: number,\n signal: AbortSignal\n): Promise<Uint8Array> {\n for (;;) {\n signal.throwIfAborted();\n const r = await kernel.raw({ op: 'fd-read', fd, max, nonblock: true });\n if (r.ok) return r.kind === 'bytes' ? r.bytes : new Uint8Array(0);\n if (r.errno !== 'EAGAIN') throw callError(r, 'fd-read');\n await kernel.blocking({ op: 'fd-select', read: [fd], write: [], timeoutMs: -1 }, signal);\n }\n}\n\nasync function sendSome(\n kernel: JsKernel,\n fd: number,\n body: Uint8Array,\n signal: AbortSignal\n): Promise<number> {\n for (;;) {\n signal.throwIfAborted();\n const r = await kernel.raw({ op: 'fd-write', fd, body, nonblock: true });\n if (r.ok) return written(r, body.length);\n if (r.errno !== 'EAGAIN') throw callError(r, 'fd-write');\n await kernel.blocking({ op: 'fd-select', read: [], write: [fd], timeoutMs: -1 }, signal);\n }\n}\n\nfunction pathOps(\n kernel: JsKernel,\n resolve: (path: string) => string,\n statOf: (op: 'stat' | 'lstat', path: string) => Promise<SyncFsBridgeStat>,\n open: (path: string, options?: JsOpenOptions, whole?: boolean) => Promise<JsFile>,\n tryDev: (abs: string) => Promise<string | undefined>\n): JsProgramContext['fs'] {\n return {\n stat: (path) => statOf('stat', path),\n lstat: (path) => statOf('lstat', path),\n async exists(path) {\n const abs = resolve(path);\n if (inDev(abs)) return devAsync(kernel, devExists(abs));\n if ((await kernel.json({ op: 'exists', path: abs })) === true) return true;\n const devPath = await tryDev(abs);\n return devPath ? devAsync(kernel, devExists(devPath)) : false;\n },\n async readdir(path) {\n const abs = resolve(path);\n if (inDev(abs)) return devAsync(kernel, devReaddir(abs));\n return (await kernel.json({ op: 'readdir', path: abs })) as string[];\n },\n mkdir: async (path, options) =>\n void (await kernel.call({\n op: 'mkdir',\n path: resolve(path),\n ...(options?.recursive === false ? { exclusive: true } : {}),\n mode: options?.mode === undefined ? 0o777 : modeOf(options.mode),\n })),\n rm: async (path) => void (await kernel.call({ op: 'rm', path: resolve(path) })),\n unlink: async (path) => void (await kernel.call({ op: 'unlink', path: resolve(path) })),\n rename: async (from, to) =>\n void (await kernel.call({ op: 'rename', path: resolve(from), arg2: resolve(to) })),\n chmod: async (path, mode) =>\n void (await kernel.call({ op: 'chmod', path: resolve(path), mode: modeOf(mode) })),\n link: async (from, to) =>\n void (await kernel.call({ op: 'link', path: resolve(from), arg2: resolve(to) })),\n symlink: async (target, path) =>\n void (await kernel.call({ op: 'symlink', path: resolve(path), arg2: target })),\n async readlink(path) {\n const abs = resolve(path);\n if (inDev(abs)) return devAsync(kernel, devReadlink(abs));\n return String(await kernel.json({ op: 'readlink', path: abs }));\n },\n async statfs(path) {\n let abs = resolve(path);\n if (inDev(abs)) {\n const target = await devAsync(kernel, devResolveTarget(abs)).catch(() => undefined);\n if (target?.startsWith('/')) abs = target;\n }\n await statOf('stat', abs);\n return statFsOf(await kernel.json({ op: 'statfs', path: abs }));\n },\n async watch(path, options, listener) {\n const [given, onNote] = watchArgs(options, listener);\n const id = (await kernel.json(watchRequest(resolve(path), given))) as number;\n return follow(kernel, id, onNote);\n },\n async readFile(path) {\n const abs = resolve(path);\n if (inDev(abs)) return readWhole(await open(abs));\n try {\n await kernel.call({ op: 'fd-path-flush', path: abs });\n return await kernel.bytes({ op: 'read', path: abs });\n } catch (err) {\n if (!(err instanceof JsCallError) || err.code !== 'ENOENT') throw err;\n const devPath = await tryDev(abs);\n if (!devPath) throw err;\n return readWhole(await open(devPath));\n }\n },\n async writeFile(path, data, options) {\n const mode = options?.mode;\n const file = await open(\n path,\n { write: true, create: true, truncate: true, ...(mode !== undefined ? { mode } : {}) },\n true\n );\n try {\n await file.write(0, typeof data === 'string' ? encoder.encode(data) : data);\n } finally {\n await file.close();\n }\n },\n };\n}\n", "import {\n JS_THREAD_CRASHED,\n JS_THREAD_NO_MEMORY,\n JS_THREAD_SPAWN,\n type JsThreadControl,\n type JsThreadSpawnMsg,\n type JsThreadStart,\n} from '../../kernel/protocol.ts';\nimport type { SabPostLike } from '../../realm/sync-sab-bridge.ts';\nimport { JsCallError } from './js-kernel.ts';\n\nexport interface JsThread {\n readonly tid: number;\n readonly port: MessagePort;\n readonly exited: Promise<number>;\n terminate(): Promise<void>;\n}\n\nexport interface JsThreadSpawnOptions {\n data?: unknown;\n transfer?: readonly Transferable[];\n}\n\nexport interface JsThreadContext {\n readonly tid: number;\n readonly port: MessagePort | undefined;\n readonly data: unknown;\n readonly NO_MEMORY: number;\n readonly CRASHED: number;\n spawn(options?: JsThreadSpawnOptions): Promise<JsThread>;\n}\n\nconst NativeChannel = globalThis.MessageChannel;\n\nconst OOM = /out of memory|Array buffer allocation failed|Cannot allocate Wasm memory/i;\n\nexport function outOfMemory(err: unknown): boolean {\n return err instanceof RangeError && OOM.test(err.message);\n}\n\nfunction optionsOf(options: unknown): JsThreadSpawnOptions {\n if (options === undefined) return {};\n if (typeof options !== 'object' || options === null || Array.isArray(options)) {\n throw new JsCallError('EINVAL', 'thread.spawn');\n }\n const { transfer } = options as JsThreadSpawnOptions;\n if (transfer !== undefined && !Array.isArray(transfer)) {\n throw new JsCallError('EINVAL', 'thread.spawn');\n }\n return options as JsThreadSpawnOptions;\n}\n\nfunction started(port: MessagePort, control: MessagePort): Promise<JsThread> {\n const exited = Promise.withResolvers<number>();\n return new Promise<JsThread>((resolve, reject) => {\n const thread = (tid: number): JsThread =>\n Object.freeze({\n tid,\n port,\n exited: exited.promise,\n async terminate() {\n control.postMessage({ terminate: true });\n await exited.promise;\n },\n });\n control.onmessage = (event: MessageEvent) => {\n const said = event.data as JsThreadControl;\n if ('tid' in said) resolve(thread(said.tid));\n else if ('errno' in said) {\n control.close();\n port.close();\n reject(new JsCallError(said.errno, 'thread.spawn', said.message));\n } else if ('exited' in said) {\n control.close();\n exited.resolve(said.exited);\n }\n };\n });\n}\n\nexport function threadContext(post: SabPostLike, start?: JsThreadStart): JsThreadContext {\n const spawn = (options?: JsThreadSpawnOptions): Promise<JsThread> => {\n let asked: JsThreadSpawnOptions;\n try {\n asked = optionsOf(options);\n } catch (err) {\n return Promise.reject(err);\n }\n const channel = new NativeChannel();\n const control = new NativeChannel();\n const transfer = [...(asked.transfer ?? [])];\n const msg: JsThreadSpawnMsg = {\n type: JS_THREAD_SPAWN,\n data: asked.data,\n port: channel.port2,\n control: control.port2,\n transfer,\n };\n try {\n post.postMessage(msg, [channel.port2, control.port2, ...transfer]);\n } catch (err) {\n channel.port1.close();\n control.port1.close();\n return Promise.reject(err);\n }\n return started(channel.port1, control.port1);\n };\n return Object.freeze({\n tid: start?.tid ?? 0,\n port: start?.port,\n data: start?.data,\n NO_MEMORY: JS_THREAD_NO_MEMORY,\n CRASHED: JS_THREAD_CRASHED,\n spawn,\n });\n}\n", "import {\n JS_THREAD_NO_MEMORY,\n type JsProcessInitMsg,\n type JsThreadInitMsg,\n type JsThreadStart,\n} from '../../kernel/protocol.ts';\nimport type { SabPostLike } from '../../realm/sync-sab-bridge.ts';\nimport { importSource } from '../wasi/wasi-imports.ts';\nimport { createAsyncSabTransport, type WaitAsyncLike } from './async-sab.ts';\nimport type { JsAsyncContext, JsMemory } from './js-context.ts';\nimport {\n createContext,\n identityOf,\n JsExit,\n type JsProgramContext,\n type JsStrays,\n} from './js-context.ts';\nimport { JsKernel } from './js-kernel.ts';\nimport { laneOf } from './js-sync.ts';\nimport { outOfMemory, threadContext } from './js-thread.ts';\nimport { lockdown } from './lockdown.ts';\n\nexport type JsMain = (ctx: JsProgramContext) => unknown;\n\nexport interface JsRuntimeDeps {\n waitAsync?: WaitAsyncLike;\n load?: (source: string) => Promise<Record<string, unknown>>;\n lockdown?: () => void;\n scope?: object;\n memory?: () => JsMemory;\n asyncContext?: () => JsAsyncContext;\n imported?: () => void;\n}\n\nconst NOT_RUNNABLE = 126;\n\ntype StrayKind = keyof JsStrays;\ntype Stray = (kind: StrayKind, err: unknown, promise?: Promise<unknown>) => void;\n\ninterface StrayScope {\n process?: {\n on?: (event: string, listener: (err: unknown, promise?: Promise<unknown>) => void) => void;\n };\n addEventListener?: (\n type: string,\n listener: (event: {\n preventDefault(): void;\n reason?: unknown;\n error?: unknown;\n promise?: Promise<unknown>;\n }) => void\n ) => void;\n}\n\nexport function trapStrays(scope: StrayScope, stray: Stray): void {\n if (typeof scope.process?.on === 'function') {\n scope.process.on('unhandledRejection', (err, promise) => stray('rejection', err, promise));\n scope.process.on('uncaughtException', (err) => stray('exception', err));\n return;\n }\n scope.addEventListener?.('unhandledrejection', (event) => {\n event.preventDefault();\n stray('rejection', event.reason, event.promise);\n });\n scope.addEventListener?.('error', (event) => {\n event.preventDefault();\n stray('exception', event.error);\n });\n}\n\nasync function settledStrays(): Promise<void> {\n for (let turn = 0; turn < 2; turn++) await new Promise((resolve) => setTimeout(resolve, 0));\n}\n\nfunction message(err: unknown): string {\n return err instanceof Error ? err.message : String(err);\n}\n\nfunction statusOf(value: unknown): number {\n return typeof value === 'number' && Number.isInteger(value) ? value & 0xff : 0;\n}\n\nexport function mainOf(module: Record<string, unknown>): JsMain | undefined {\n const main = typeof module.default === 'function' ? module.default : module.main;\n return typeof main === 'function' ? (main as JsMain) : undefined;\n}\n\nexport function runJsProcess(\n init: JsProcessInitMsg,\n port: SabPostLike,\n deps: JsRuntimeDeps = {}\n): Promise<number> {\n return runJs(init, port, deps, undefined);\n}\n\nexport function runJsThread(\n init: JsThreadInitMsg,\n port: SabPostLike,\n deps: JsRuntimeDeps = {}\n): Promise<number> {\n const { thread, ...rest } = init;\n return runJs(rest as unknown as JsProcessInitMsg, port, deps, thread);\n}\n\nasync function runJs(\n init: JsProcessInitMsg,\n port: SabPostLike,\n deps: JsRuntimeDeps,\n thread: JsThreadStart | undefined\n): Promise<number> {\n const failed = (err: unknown): number => (thread && outOfMemory(err) ? JS_THREAD_NO_MEMORY : 1);\n const transport = createAsyncSabTransport(init.sab, port, deps.waitAsync);\n let resolveExit!: (status: number) => void;\n const exit = new Promise<number>((resolve) => (resolveExit = resolve));\n let exitedWith: number | undefined;\n const exited = (status: number): void => {\n exitedWith ??= status;\n resolveExit(status);\n };\n let failing: Promise<void> | undefined;\n let failedWith: number | undefined;\n const fail = (err: unknown): void => {\n if (err instanceof JsExit) return;\n failing ??= (thread ? Promise.resolve() : say(message(err))).then(() => exited(failed(err)));\n failedWith ??= failed(err);\n };\n const kernel = new JsKernel({\n sab: init.sab,\n transport,\n onError: fail,\n waitAsync: deps.waitAsync,\n });\n void kernel.watchStops();\n const strays: JsStrays = { exception: new Set(), rejection: new Set() };\n const id = identityOf(await kernel.json({ op: 'proc-identity' }), init);\n kernel.pid = id.pid;\n const { ctx, drain } = createContext({\n kernel,\n argv: [init.argv0, ...init.args],\n env: init.env,\n pid: id.pid,\n ppid: id.ppid,\n cwd: init.cwd,\n exit: (status) => exited(statusOf(status)),\n lane: laneOf(init.lane),\n fs: { owners: init.owners === true, links: init.links === true },\n strays,\n thread: threadContext(port, thread),\n memory: deps.memory,\n asyncContext: deps.asyncContext,\n ...(thread?.owned ? { owned: thread.owned } : {}),\n held: init.held,\n failed: () => failedWith,\n });\n const say = (text: string) => ctx.write(2, `${init.argv0}: ${text}\\n`).catch(() => undefined);\n\n let main: JsMain | undefined;\n trapStrays((deps.scope ?? globalThis) as StrayScope, (kind, err, promise) => {\n const listeners = [...strays[kind]];\n if (listeners.length === 0) return fail(err);\n for (const listener of listeners) {\n try {\n listener(err, promise);\n } catch (thrown) {\n fail(thrown);\n }\n }\n });\n try {\n (deps.lockdown ?? lockdown)();\n const { url, glue } = init.program;\n main = mainOf(await (url ? import(url) : (deps.load ?? importSource)(glue)));\n deps.imported?.();\n } catch (err) {\n await say(message(err));\n return NOT_RUNNABLE;\n }\n if (!main) {\n await say(`${init.program.path} exports no main function`);\n return NOT_RUNNABLE;\n }\n const program = main;\n const ran = Promise.resolve()\n .then(() => program(ctx))\n .then(statusOf, async (err: unknown) => {\n if (err instanceof JsExit) return err.status;\n if (!thread) await say(message(err));\n return failed(err);\n });\n const status = await Promise.race([ran, exit]);\n await drain();\n await settledStrays();\n await failing;\n if (exitedWith !== undefined) return exitedWith;\n return status;\n}\n", "const MEM_INFO = 1;\nconst NEEDED = 2;\nconst RUNTIME_PATH = 5;\n\nexport interface DylinkInfo {\n memorySize: number;\n\n memoryAlign: number;\n\n tableSize: number;\n tableAlign: number;\n\n needed: string[];\n\n runtimePath: string[];\n}\n\nexport function dylinkInfo(module: WebAssembly.Module): DylinkInfo | undefined {\n const [section] = WebAssembly.Module.customSections(module, 'dylink.0');\n if (!section) return undefined;\n const bytes = new Uint8Array(section);\n let at = 0;\n const uleb = (): number => {\n let value = 0;\n let shift = 0;\n for (;;) {\n const b = bytes[at++];\n value += (b & 0x7f) * 2 ** shift;\n if (!(b & 0x80)) return value;\n shift += 7;\n }\n };\n const string = (): string => {\n const len = uleb();\n const s = new TextDecoder().decode(bytes.subarray(at, at + len));\n at += len;\n return s;\n };\n const info: DylinkInfo = {\n memorySize: 0,\n memoryAlign: 0,\n tableSize: 0,\n tableAlign: 0,\n needed: [],\n runtimePath: [],\n };\n while (at < bytes.length) {\n const kind = bytes[at++];\n const len = uleb();\n const end = at + len;\n if (kind === MEM_INFO) {\n info.memorySize = uleb();\n info.memoryAlign = uleb();\n info.tableSize = uleb();\n info.tableAlign = uleb();\n } else if (kind === NEEDED) {\n for (let n = uleb(); n > 0; n--) info.needed.push(string());\n } else if (kind === RUNTIME_PATH) {\n for (let n = uleb(); n > 0; n--) info.runtimePath.push(string());\n }\n at = end;\n }\n return info;\n}\n", "export interface ImportedMemory {\n module: string;\n name: string;\n initial: number;\n maximum?: number;\n shared: boolean;\n}\n\nexport function importedMemory(bytes: Uint8Array): ImportedMemory | undefined {\n let at = 8;\n const u32 = (): number => {\n let result = 0;\n let shift = 0;\n for (;;) {\n const b = bytes[at++];\n result |= (b & 0x7f) << shift;\n if (!(b & 0x80)) return result >>> 0;\n shift += 7;\n }\n };\n const name = (): string => {\n const len = u32();\n const s = new TextDecoder().decode(bytes.subarray(at, at + len));\n at += len;\n return s;\n };\n const limits = () => {\n const flags = bytes[at++];\n const initial = u32();\n const maximum = flags & 1 ? u32() : undefined;\n return { initial, maximum, shared: (flags & 2) !== 0 };\n };\n while (at < bytes.length) {\n const id = bytes[at++];\n const size = u32();\n const end = at + size;\n if (id !== 2) {\n at = end;\n continue;\n }\n const count = u32();\n for (let i = 0; i < count; i++) {\n const module = name();\n const field = name();\n const kind = bytes[at++];\n if (kind === 0) u32();\n else if (kind === 1) {\n at++;\n limits();\n } else if (kind === 2) {\n const l = limits();\n return { module, name: field, ...l };\n } else if (kind === 3) at += 2;\n else if (kind === 4) {\n at++;\n u32();\n }\n }\n return undefined;\n }\n return undefined;\n}\n\nexport const RESERVED_NAMESPACES: ReadonlySet<string> = new Set([\n 'wasi_snapshot_preview1',\n 'wasix_32v1',\n 'wasi',\n 'env',\n]);\n\nexport type ForeignResult = 'none' | 'i32' | 'i64' | 'f32' | 'f64' | 'other';\n\nexport type ForeignResults = Record<string, Record<string, ForeignResult>>;\n\nconst RESULTS: Readonly<Record<number, ForeignResult>> = {\n 127: 'i32',\n 126: 'i64',\n 125: 'f32',\n 124: 'f64',\n};\n\nfunction resultOf(results: number[]): ForeignResult {\n if (results.length === 0) return 'none';\n return (results.length === 1 && RESULTS[results[0]]) || 'other';\n}\n\nclass Reader {\n at = 8;\n readonly bytes: Uint8Array;\n\n constructor(bytes: Uint8Array) {\n this.bytes = bytes;\n }\n\n byte(): number {\n return this.bytes[this.at++];\n }\n\n u32(): number {\n let result = 0;\n let shift = 0;\n for (;;) {\n const b = this.byte();\n result |= (b & 0x7f) << shift;\n if (!(b & 0x80)) return result >>> 0;\n shift += 7;\n }\n }\n\n name(): string {\n const len = this.u32();\n const s = new TextDecoder().decode(this.bytes.subarray(this.at, this.at + len));\n this.at += len;\n return s;\n }\n\n valtype(): number {\n const code = this.byte();\n if (code === 0x63 || code === 0x64) this.u32();\n return code;\n }\n\n limits(): void {\n const flags = this.byte();\n this.u32();\n if (flags & 1) this.u32();\n }\n}\n\nfunction readTypes(r: Reader): ForeignResult[] | undefined {\n const types: ForeignResult[] = [];\n for (let i = r.u32(); i > 0; i--) {\n if (r.byte() !== 0x60) return undefined;\n for (let n = r.u32(); n > 0; n--) r.valtype();\n const results: number[] = [];\n for (let n = r.u32(); n > 0; n--) results.push(r.valtype());\n types.push(resultOf(results));\n }\n return types;\n}\n\nfunction skipImport(r: Reader, kind: number): void {\n if (kind === 1) {\n r.valtype();\n r.limits();\n } else if (kind === 2) r.limits();\n else if (kind === 3) {\n r.valtype();\n r.byte();\n } else {\n r.byte();\n r.u32();\n }\n}\n\nfunction readImports(r: Reader, types: ForeignResult[]): ForeignResults {\n const foreign: ForeignResults = {};\n for (let i = r.u32(); i > 0; i--) {\n const module = r.name();\n const field = r.name();\n const kind = r.byte();\n if (kind !== 0) skipImport(r, kind);\n else {\n const type = types[r.u32()] ?? 'other';\n if (!RESERVED_NAMESPACES.has(module)) (foreign[module] ??= {})[field] = type;\n }\n }\n return foreign;\n}\n\nexport function foreignImports(bytes: Uint8Array): ForeignResults | undefined {\n const r = new Reader(bytes);\n let types: ForeignResult[] | undefined = [];\n while (r.at < bytes.length) {\n const id = r.byte();\n const end = r.u32() + r.at;\n if (id === 1) types = readTypes(r);\n if (!types) return undefined;\n if (id === 2) return readImports(r, types);\n r.at = end;\n }\n return {};\n}\n\nconst LIBC_MARK = /^wasix-sysroot \\d{4}\\.\\d+\\.\\d+-(\\d+)/;\n\nexport function libcVersion(module: WebAssembly.Module): number | undefined {\n for (const section of WebAssembly.Module.customSections(module, 'slicc.libc')) {\n const found = LIBC_MARK.exec(new TextDecoder().decode(section));\n if (found) return Number(found[1]);\n }\n return undefined;\n}\n", "import type { WasmSyscall } from '../../kernel/process.ts';\nimport {\n type SyncFsBridgeStat,\n type SyncFsPosixBridge,\n syncError,\n} from '../../realm/sync-fs-wire.ts';\nimport { devStat, devSync } from '../js/js-dev.ts';\n\nconst PTS = '/dev/pts';\nconst PTS_ENTRY = /^\\/dev\\/pts\\/(\\d+)$/;\n\nexport function ptsBridge<T extends SyncFsPosixBridge>(\n fs: T,\n call: (req: WasmSyscall) => unknown\n): T {\n const open = (): number[] => call({ op: 'pty-list' }) as number[];\n const kernel = { json: (req: Parameters<typeof call>[0]) => call(req) };\n const entry = (p: string, known = open()): SyncFsBridgeStat => {\n const n = PTS_ENTRY.exec(p)?.[1];\n if (n === undefined || !known.includes(Number(n))) throw syncError('ENOENT', p);\n return devSync(kernel, devStat(p, true));\n };\n const listedEntry = (name: string, known: number[]): [string, SyncFsBridgeStat | null] => {\n try {\n return [name, entry(`${PTS}/${name}`, known)];\n } catch {\n return [name, null];\n }\n };\n const dir = (): SyncFsBridgeStat => devSync(kernel, devStat(PTS, true));\n const statOf = (p: string, real: () => SyncFsBridgeStat): SyncFsBridgeStat => {\n if (p === PTS) return dir();\n return PTS_ENTRY.test(p) ? entry(p) : real();\n };\n const names = (known = open()): string[] => known.map(String).sort();\n const over: Partial<Record<keyof SyncFsPosixBridge, unknown>> = {\n stat: (p: string) => statOf(p, () => fs.stat(p)),\n lstat: (p: string) => statOf(p, () => fs.lstat(p)),\n exists: (p: string) => {\n if (p === PTS) return true;\n if (!PTS_ENTRY.test(p)) return fs.exists(p);\n return open().includes(Number(PTS_ENTRY.exec(p)?.[1]));\n },\n readdir: (p: string) => {\n if (p === PTS) return names();\n const listed = fs.readdir(p);\n return p === '/dev' && !listed.includes('pts') ? [...listed, 'pts'] : listed;\n },\n readdirStat: (p: string) => {\n if (p === PTS) {\n const known = open();\n return names(known).map((name) => listedEntry(name, known));\n }\n const listed = fs.readdirStat(p);\n if (p !== '/dev' || listed.some(([name]) => name === 'pts')) return listed;\n return [...listed, ['pts', dir()]];\n },\n };\n return new Proxy(fs, {\n get(target, key, receiver) {\n if (Object.hasOwn(over, key)) return over[key as keyof SyncFsPosixBridge];\n const value = Reflect.get(target, key, receiver);\n return typeof value === 'function' ? value.bind(target) : value;\n },\n });\n}\n", "import { defaultAction, SIG, sigbit } from '../../kernel/signals.ts';\nimport type { SignalHooks, SignalMasks } from '../process-signals.ts';\nimport { E } from './wasi-abi.ts';\nimport { WasiExit } from './wasi-host.ts';\n\nconst DELIVERED_MASK = Object.values(SIG)\n .filter((sig) => sig !== SIG.KILL && sig !== SIG.STOP)\n .reduce((m, sig) => m | sigbit(sig), 0);\n\nconst KERNEL_DEFAULTS = [SIG.TSTP, SIG.TTIN, SIG.TTOU, SIG.CHLD, SIG.CONT, SIG.URG, SIG.WINCH]\n .map(sigbit)\n .reduce((m, bit) => m | bit, 0);\n\nconst LIBC_DEFAULT_EXIT = 127;\n\nconst SA_RESTART = 0x10000000;\nconst SA_NODEFER = 0x40000000;\nconst SA_NOCLDWAIT = 2;\nconst DISPOSITION_IGNORE = 1;\nconst DISPOSITION_HANDLER = 2;\n\nexport interface WasiSignalState {\n callback?: string;\n hooked?: true;\n handlers: number;\n ignoring: number;\n restarting: number;\n uncaught: number;\n nocldwait?: true;\n}\n\nconst withBit = (mask: number, bit: number, on: boolean): number => (on ? mask | bit : mask & ~bit);\n\nconst WASIX_LIBC_DEFAULT_LINE = /^Program recieved (?:stop|termination|fatal) signal: [^\\n]+\\n$/;\n\nexport class WasiSignals implements SignalHooks {\n private exports: WebAssembly.Exports | undefined;\n private callback: string | undefined;\n\n private uncaught = 0;\n\n private delivering: number | undefined;\n\n private defaulted = false;\n\n private libcDefault = false;\n\n private hooked = false;\n\n private handlers = 0;\n\n private ignoring = 0;\n\n private restarting = 0;\n\n private nodefer = 0;\n\n private running = 0;\n\n private deferred = 0;\n\n private lifted = 0;\n\n unblocking(bits: number): void {\n this.lifted |= bits & this.running;\n }\n\n private defaults = 0;\n\n private nocldwait = false;\n\n private readonly fallBack: (sig: number) => void;\n private readonly onKilled: ((code: number) => void) | undefined;\n constructor(fallBack: (sig: number) => void, onKilled?: (code: number) => void) {\n this.fallBack = fallBack;\n this.onKilled = onKilled;\n }\n\n killed(code: number): void {\n this.onKilled?.(code);\n }\n\n bind(exports: WebAssembly.Exports): void {\n this.exports = exports;\n }\n\n register(name: string): void {\n if (typeof this.exports?.[name] === 'function') this.callback = name;\n }\n\n useHook(): void {\n this.hooked = true;\n }\n\n disposition(sig: number, disposition: number, flags: number): number {\n if (sig < 1 || sig > 31 || (DELIVERED_MASK & sigbit(sig)) === 0) return E.INVAL;\n const bit = sigbit(sig);\n this.handlers = withBit(this.handlers, bit, disposition === DISPOSITION_HANDLER);\n this.ignoring = withBit(this.ignoring, bit, disposition === DISPOSITION_IGNORE);\n this.restarting = withBit(this.restarting, bit, (flags & SA_RESTART) !== 0);\n this.nodefer = withBit(this.nodefer, bit, (flags & SA_NODEFER) !== 0);\n this.defaults = withBit(this.defaults, bit, disposition === 0);\n if (sig === SIG.CHLD) this.nocldwait = (flags & SA_NOCLDWAIT) !== 0;\n return E.SUCCESS;\n }\n\n snapshot(): WasiSignalState {\n return {\n ...(this.callback ? { callback: this.callback } : {}),\n ...(this.hooked ? { hooked: true as const } : {}),\n handlers: this.handlers,\n ignoring: this.ignoring,\n restarting: this.restarting,\n uncaught: this.uncaught,\n ...(this.nocldwait ? { nocldwait: true as const } : {}),\n };\n }\n\n restore(state: WasiSignalState): void {\n if (state.callback) this.register(state.callback);\n if (state.hooked) this.hooked = true;\n this.handlers = state.handlers;\n this.ignoring = state.ignoring;\n this.restarting = state.restarting;\n this.uncaught = state.uncaught;\n this.nocldwait = state.nocldwait === true;\n }\n\n masks(): SignalMasks | null {\n if (this.hooked) {\n const caught = this.handler() ? this.handlers : 0;\n const defaults = this.defaults;\n this.defaults = 0;\n const nocldwait = this.nocldwait ? { nocldwait: true } : {};\n return { caught, ignored: this.ignoring, restart: this.restarting, defaults, ...nocldwait };\n }\n if (!this.handler()) return null;\n return { caught: DELIVERED_MASK & ~this.uncaught & ~KERNEL_DEFAULTS, ignored: 0, restart: 0 };\n }\n\n raise(sig: number): void {\n const handler = this.handler();\n if (!handler && !this.hooked) return;\n if (!handler || (this.hooked && (this.handlers & sigbit(sig)) === 0)) {\n if ((this.ignoring & sigbit(sig)) === 0) this.defaultAction(sig);\n return;\n }\n const bit = sigbit(sig);\n if ((this.running & bit) !== 0 && ((this.nodefer | this.lifted) & bit) === 0) {\n this.deferred |= bit;\n return;\n }\n const outer = { running: this.running & bit, lifted: this.lifted & bit };\n this.running |= bit;\n this.lifted &= ~bit;\n try {\n this.run(handler, sig);\n } finally {\n this.running = (this.running & ~bit) | outer.running;\n this.lifted = (this.lifted & ~bit) | outer.lifted;\n }\n if ((this.deferred & bit) === 0) return;\n this.deferred &= ~bit;\n this.raise(sig);\n }\n\n ran = 0;\n\n private run(handler: (sig: number) => void, sig: number): void {\n this.ran++;\n const outer = { sig: this.delivering, defaulted: this.defaulted, libc: this.libcDefault };\n this.delivering = sig;\n this.defaulted = false;\n this.libcDefault = false;\n try {\n handler(sig);\n } catch (e) {\n const libcExit = e instanceof WasiExit && e.code === LIBC_DEFAULT_EXIT && this.libcDefault;\n if (!(libcExit && !this.defaulted) && !(e instanceof WebAssembly.RuntimeError)) throw e;\n if (!this.defaulted) this.defaultAction(sig);\n } finally {\n this.delivering = outer.sig;\n this.defaulted = outer.defaulted;\n this.libcDefault = outer.libc;\n }\n }\n\n muted(fd: number, data: Uint8Array): boolean {\n if (fd !== 2 || this.delivering === undefined) return false;\n if (!WASIX_LIBC_DEFAULT_LINE.test(new TextDecoder().decode(data))) return false;\n this.libcDefault = true;\n return true;\n }\n\n raised(sig: number): boolean {\n if (sig !== SIG.ABRT || this.delivering === undefined) return false;\n if (!this.defaulted) this.defaultAction(this.delivering);\n return true;\n }\n\n private defaultAction(sig: number): void {\n this.defaulted = true;\n this.uncaught |= sigbit(sig);\n this.fallBack(sig);\n if (defaultAction(sig) !== 'terminate') this.uncaught &= ~sigbit(sig);\n }\n\n private handler(): ((sig: number) => void) | undefined {\n const fn = this.callback ? this.exports?.[this.callback] : undefined;\n return typeof fn === 'function' ? (fn as (sig: number) => void) : undefined;\n }\n}\n", "interface Row {\n n: number;\n ms: number;\n max: number;\n}\n\nexport class WasiStats {\n private readonly rows = new Map<string, Row>();\n private readonly phases: Array<[string, number]> = [];\n private mark = performance.now();\n\n wrap<T extends object>(tag: string, table: T): T {\n return Object.fromEntries(\n Object.entries(table).map(([name, value]) => {\n if (typeof value !== 'function') return [name, value];\n const fn = value as (...args: unknown[]) => unknown;\n const key = `${tag}.${name}`;\n return [name, (...args: unknown[]) => this.time(key, () => fn.apply(table, args))];\n })\n ) as T;\n }\n\n time<T>(key: string, fn: () => T): T {\n const t = performance.now();\n try {\n return fn();\n } finally {\n this.count(key, performance.now() - t);\n }\n }\n\n phase(name: string): void {\n const now = performance.now();\n this.phases.push([name, now - this.mark]);\n this.mark = now;\n }\n\n private count(key: string, ms: number): void {\n const row = this.rows.get(key) ?? { n: 0, ms: 0, max: 0 };\n row.n++;\n row.ms += ms;\n row.max = Math.max(row.max, ms);\n this.rows.set(key, row);\n }\n\n report(): string {\n const ms = (v: number) => v.toFixed(1).padStart(9);\n const lines = this.phases.map(([name, t]) => `${ms(t)} ms ${name}`);\n lines.push(`${'total ms'.padStart(12)} ${'calls'.padStart(7)} ${'max ms'.padStart(9)} call`);\n const sorted = [...this.rows].sort((a, b) => b[1].ms - a[1].ms);\n for (const [key, row] of sorted) {\n lines.push(`${ms(row.ms)} ${String(row.n).padStart(7)} ${ms(row.max)} ${key}`);\n }\n return `${lines.join('\\n')}\\n`;\n }\n}\n", "import type { BlockedMask } from '../../realm/sync-sab-wire.ts';\nimport { E } from './wasi-abi.ts';\nimport type { WasiForkFd } from './wasi-fds.ts';\nimport type { WasiMemory } from './wasi-memory.ts';\nimport type { WasiSignalState } from './wasi-signals.ts';\n\nexport interface WasiForkState {\n asyncifyData: number;\n\n globals: Array<[string, number]>;\n fds: WasiForkFd[];\n cloexec: number[];\n cwd: string;\n\n shared?: true;\n\n setjmps?: WasiSetjmps;\n\n signals?: WasiSignalState;\n\n blocked?: BlockedMask;\n\n tls?: Array<[number, number]>;\n\n modules?: Record<string, WebAssembly.Module>;\n\n entry?: ThreadEntry;\n}\n\nexport interface ThreadEntry {\n tid: number;\n arg: number;\n low: number;\n}\n\nexport interface WasiSetjmps {\n next: number;\n snapshots: Array<[number, Snapshot]>;\n}\n\ninterface Snapshot {\n frames: Uint8Array;\n globals: Array<[string, number]>;\n}\n\ninterface AsyncifyExports {\n asyncify_start_unwind?: (data: number) => void;\n asyncify_stop_unwind?: () => void;\n asyncify_start_rewind?: (data: number) => void;\n asyncify_stop_rewind?: () => void;\n asyncify_get_state?: () => number;\n}\n\nconst STACK_POINTER = '__stack_pointer';\n\nconst UNWINDING = 1;\nconst REWINDING = 2;\n\nfunction mutableGlobals(exports: WebAssembly.Exports): Array<[string, number]> {\n const out: Array<[string, number]> = [];\n for (const [name, value] of Object.entries(exports)) {\n if (!(value instanceof WebAssembly.Global) || typeof value.value !== 'number') continue;\n try {\n const v = value.value as number;\n value.value = v;\n out.push([name, v]);\n } catch {}\n }\n return out;\n}\n\nexport function reseatTls(\n exports: WebAssembly.Exports,\n bytes: (at: number, length: number) => Uint8Array\n): void {\n const init = exports.__wasm_init_tls;\n const base = exports.__tls_base;\n const size = exports.__tls_size;\n if (\n typeof init !== 'function' ||\n !(base instanceof WebAssembly.Global) ||\n !(size instanceof WebAssembly.Global)\n ) {\n return;\n }\n const at = base.value as number;\n const block = bytes(at, size.value as number).slice();\n init(at);\n bytes(at, block.length).set(block);\n}\n\nexport class AsyncifyDriver {\n private exports: WebAssembly.Exports & AsyncifyExports = {};\n\n private stackUpper = 0;\n\n private linked: { pointer: WebAssembly.Global; low: number } | undefined;\n\n private pending: (() => number) | undefined;\n\n private answer = 0;\n private readonly snapshots = new Map<number, Snapshot>();\n private nextSnapshot = 1;\n\n private readonly mem: WasiMemory;\n constructor(mem: WasiMemory) {\n this.mem = mem;\n }\n\n useStack(pointer: WebAssembly.Global, low: number): void {\n this.linked = { pointer, low };\n }\n\n private threadStack = false;\n\n useThreadStack(pointer: WebAssembly.Global, low: number): void {\n this.useStack(pointer, low);\n this.threadStack = true;\n }\n\n bind(exports: WebAssembly.Exports): void {\n this.exports = exports as WebAssembly.Exports & AsyncifyExports;\n this.stackUpper = this.stackPointer();\n }\n\n get supported(): boolean {\n return typeof this.exports.asyncify_start_unwind === 'function';\n }\n\n get idle(): boolean {\n const state = this.exports.asyncify_get_state;\n return !this.supported || typeof state !== 'function' || state() === 0;\n }\n\n resume(): boolean {\n if (this.exports.asyncify_get_state?.() !== UNWINDING) return false;\n this.exports.asyncify_stop_unwind?.();\n const op = this.pending;\n this.pending = undefined;\n if (!op) throw new Error('WASIX: unwound with nothing to do');\n this.exports.asyncify_start_rewind?.(op());\n return true;\n }\n\n setjmps(): WasiSetjmps {\n return { next: this.nextSnapshot, snapshots: [...this.snapshots] };\n }\n\n startChild(state: WasiForkState): void {\n for (const [id, snap] of state.setjmps?.snapshots ?? []) this.snapshots.set(id, snap);\n this.nextSnapshot = Math.max(this.nextSnapshot, state.setjmps?.next ?? 1);\n this.restoreGlobals(state.globals);\n reseatTls(this.exports, (at, length) => this.mem.bytes(at, length));\n this.answer = 0;\n this.exports.asyncify_start_rewind?.(state.asyncifyData);\n }\n\n rewound(): number | undefined {\n if (this.exports.asyncify_get_state?.() !== REWINDING) return undefined;\n this.exports.asyncify_stop_rewind?.();\n return this.answer;\n }\n\n fork(\n fork: (asyncifyData: number, globals: Array<[string, number]>, sp: number) => number\n ): number {\n const sp = this.stackPointer();\n const globals = this.globals();\n return this.unwind((data) => {\n this.answer = fork(data, globals, sp);\n });\n }\n\n checkpoint(snapPtr: number, retPtr: number): number {\n const id = this.nextSnapshot++;\n const v = this.mem.view();\n v.setBigUint64(snapPtr, BigInt(retPtr), true);\n v.setBigUint64(snapPtr + 8, BigInt(id), true);\n v.setBigUint64(snapPtr + 16, 0x51cc5117n, true);\n const globals = this.globals();\n return this.unwind((data) => {\n const end = this.mem.view().getUint32(data, true);\n this.snapshots.set(id, { frames: this.mem.bytes(data + 8, end - data - 8).slice(), globals });\n this.answer = 0;\n });\n }\n\n restore(snapPtr: number, val: bigint): number {\n const id = Number(this.mem.view().getBigUint64(snapPtr + 8, true));\n const snap = this.snapshots.get(id);\n if (!snap) throw new Error(`WASIX: longjmp to an unknown setjmp (${id})`);\n return this.unwind((data) => {\n this.mem.bytes(data + 8, snap.frames.length).set(snap.frames);\n this.mem.view().setUint32(data, data + 8 + snap.frames.length, true);\n this.restoreGlobals(snap.globals);\n this.answer = Number(val) || 1;\n });\n }\n\n private stackGlobal(): WebAssembly.Global | undefined {\n const g = this.exports[STACK_POINTER];\n return g instanceof WebAssembly.Global ? g : this.linked?.pointer;\n }\n\n private stackPointer(): number {\n return (this.stackGlobal()?.value as number | undefined) ?? 0;\n }\n\n private globals(): Array<[string, number]> {\n const out = mutableGlobals(this.exports);\n if (this.linked && !out.some(([name]) => name === STACK_POINTER)) {\n out.push([STACK_POINTER, this.linked.pointer.value as number]);\n }\n return out;\n }\n\n private dataPointer(): number {\n const own = this.exports[STACK_POINTER] instanceof WebAssembly.Global;\n if (this.linked && (this.threadStack || !own)) return (this.linked.low + 15) & ~15;\n const g = this.exports.__data_end;\n const dataEnd = g instanceof WebAssembly.Global ? (g.value as number) : 0;\n return dataEnd < this.stackUpper ? (dataEnd + 15) & ~15 : 16;\n }\n\n private unwind(then: (data: number) => void): number {\n if (!this.supported) return E.NOSYS;\n const data = this.dataPointer();\n const v = this.mem.view();\n v.setUint32(data, data + 8, true);\n v.setUint32(data + 4, this.stackPointer() - 16, true);\n this.pending = () => {\n then(data);\n return data;\n };\n this.exports.asyncify_start_unwind?.(data);\n return E.SUCCESS;\n }\n\n private restoreGlobals(globals: Array<[string, number]>): void {\n for (const [name, value] of globals) {\n const g = name === STACK_POINTER ? this.stackGlobal() : this.exports[name];\n if (g instanceof WebAssembly.Global) g.value = value;\n }\n }\n}\n", "import { WasiError } from './wasi-files.ts';\nimport type { WasiMemory } from './wasi-memory.ts';\nimport type { FuncTypes, ValType } from './wasm-functypes.ts';\n\ntype Scalar = Exclude<ValType, 'other'>;\ntype Value = number | bigint;\n\nconst SIZE: Readonly<Record<Scalar, number>> = { i32: 4, i64: 8, f32: 4, f64: 8 };\n\nfunction read(view: DataView, at: number, type: Scalar): Value {\n if (type === 'i32') return view.getInt32(at, true);\n if (type === 'i64') return view.getBigInt64(at, true);\n if (type === 'f32') return view.getFloat32(at, true);\n return view.getFloat64(at, true);\n}\n\nfunction readSome(view: DataView, at: number, end: number, type: Scalar): Value {\n if (at + SIZE[type] <= end) return read(view, at, type);\n const some = new DataView(new ArrayBuffer(8));\n for (let i = 0; at + i < end; i++) some.setUint8(i, view.getUint8(at + i));\n return read(some, 0, type);\n}\n\nfunction write(view: DataView, at: number, type: Scalar, value: Value): void {\n if (type === 'i32') view.setInt32(at, Number(value), true);\n else if (type === 'i64') view.setBigInt64(at, BigInt(value), true);\n else if (type === 'f32') view.setFloat32(at, Number(value), true);\n else view.setFloat64(at, Number(value), true);\n}\n\nfunction scalars(types: ValType[]): Scalar[] {\n if (types.includes('other')) throw new WasiError('EINVAL');\n return types as Scalar[];\n}\n\nexport interface FfiContext {\n mem: WasiMemory;\n table(): WebAssembly.Table | undefined;\n types: FuncTypes;\n}\n\nexport function callDynamic(\n ctx: FfiContext,\n ...operands: [number, number, number, number, number, number]\n): void {\n const [id, values, valuesLen, results, resultsLen, strict] = operands.map((n) => n >>> 0);\n const table = ctx.table();\n if (!table) throw new WasiError('ENOTSUP');\n const fn = id < table.length ? table.get(id) : null;\n const sig = fn ? ctx.types.of(fn) : undefined;\n if (!fn || !sig) throw new WasiError('EINVAL');\n const params = scalars(sig.params);\n const outs = scalars(sig.results);\n const size = (types: Scalar[]) => types.reduce((n, type) => n + SIZE[type], 0);\n if (strict && (size(params) !== valuesLen || size(outs) !== resultsLen)) {\n throw new WasiError('EINVAL');\n }\n const view = ctx.mem.view();\n if (values + valuesLen > view.byteLength || results + resultsLen > view.byteLength) {\n throw new WasiError('EFAULT');\n }\n const end = values + valuesLen;\n let at = values;\n const args = params.map((type) => {\n const v = readSome(view, at, end, type);\n at += SIZE[type];\n return v;\n });\n const returned = (fn as (...a: Value[]) => Value | Value[] | undefined)(...args);\n const got = outs.length === 1 ? [returned as Value] : ((returned ?? []) as Value[]);\n const after = ctx.mem.view();\n const stop = results + resultsLen;\n let out = results;\n outs.forEach((type, i) => {\n if (out + SIZE[type] > stop) return;\n write(after, out, type, got[i] as Value);\n out += SIZE[type];\n });\n}\n", "import type { FuncSig, ValType } from './wasm-functypes.ts';\n\nexport type Scalar = 'i32' | 'i64' | 'f32' | 'f64' | 'v128';\n\nconst CODES: readonly Scalar[] = ['i32', 'i64', 'f32', 'f64', 'v128'];\n\nconst VALTYPE: Readonly<Record<Scalar, number>> = {\n i32: 0x7f,\n i64: 0x7e,\n f32: 0x7d,\n f64: 0x7c,\n v128: 0x7b,\n};\n\nconst SIZE: Readonly<Record<Scalar, number>> = { i32: 4, i64: 8, f32: 4, f64: 8, v128: 16 };\n\nconst STORE: Readonly<Record<Scalar, number[]>> = {\n i32: [0x36],\n i64: [0x37],\n f32: [0x38],\n f64: [0x39],\n v128: [0xfd, 0x0b],\n};\n\nconst LOAD: Readonly<Record<Scalar, number[]>> = {\n i32: [0x28],\n i64: [0x29],\n f32: [0x2a],\n f64: [0x2b],\n v128: [0xfd, 0x00],\n};\n\nexport function valueTypes(codes: Uint8Array): Scalar[] | undefined {\n const out: Scalar[] = [];\n for (const code of codes) {\n const type = CODES[code];\n if (!type) return undefined;\n out.push(type);\n }\n return out;\n}\n\nfunction u32(n: number): number[] {\n const out: number[] = [];\n let v = n >>> 0;\n do {\n let b = v & 0x7f;\n v >>>= 7;\n if (v) b |= 0x80;\n out.push(b);\n } while (v);\n return out;\n}\n\nfunction s32(n: number): number[] {\n const out: number[] = [];\n let v = n | 0;\n for (;;) {\n const b = v & 0x7f;\n v >>= 7;\n if ((v === 0 && !(b & 0x40)) || (v === -1 && b & 0x40)) {\n out.push(b);\n return out;\n }\n out.push(b | 0x80);\n }\n}\n\nfunction name(s: string): number[] {\n const bytes = [...new TextEncoder().encode(s)];\n return [...u32(bytes.length), ...bytes];\n}\n\nfunction section(id: number, body: number[]): number[] {\n return [id, ...u32(body.length), ...body];\n}\n\nfunction vec(items: number[][]): number[] {\n return [...u32(items.length), ...items.flat()];\n}\n\nfunction align16(n: number): number {\n return Math.ceil(n / 16) * 16;\n}\n\nexport function trampolineBytes(\n params: Scalar[],\n results: Scalar[],\n shared: boolean\n): Uint8Array<ArrayBuffer> {\n const sig = [\n 0x60,\n ...vec(params.map((t) => [VALTYPE[t]])),\n ...vec(results.map((t) => [VALTYPE[t]])),\n ];\n const backing = [0x60, ...vec([[0x7f], [0x7f], [0x7f]]), ...vec([])];\n const memory = shared ? [0x03, 0x00, ...u32(65536)] : [0x00, 0x00];\n const imports = vec([\n [...name('env'), ...name('memory'), 0x02, ...memory],\n [...name('env'), ...name('__indirect_function_table'), 0x01, 0x70, 0x00, 0x00],\n [...name('env'), ...name('__stack_pointer'), 0x03, 0x7f, 0x01],\n [...name('env'), ...name('backing'), 0x03, 0x7f, 0x00],\n [...name('env'), ...name('user_data'), 0x03, 0x7f, 0x00],\n ]);\n const n = params.length;\n const [orig, args, res] = [n, n + 1, n + 2];\n const valuesSize = align16(params.reduce((sum, t) => sum + SIZE[t], 0));\n const resultsSize = align16(results.reduce((sum, t) => sum + SIZE[t], 0));\n const body: number[] = [\n 0x23,\n 0,\n 0x22,\n ...u32(orig),\n 0x41,\n ...s32(resultsSize),\n 0x6b,\n 0x22,\n ...u32(res),\n ];\n body.push(0x41, ...s32(valuesSize), 0x6b, 0x22, ...u32(args), 0x24, 0);\n let at = 0;\n params.forEach((t, i) => {\n body.push(0x20, ...u32(args), 0x20, ...u32(i), ...STORE[t], 0, ...u32(at));\n at += SIZE[t];\n });\n body.push(0x20, ...u32(args), 0x20, ...u32(res), 0x23, 2, 0x23, 1, 0x11, 1, 0);\n at = 0;\n for (const t of results) {\n body.push(0x20, ...u32(res), ...LOAD[t], 0, ...u32(at));\n at += SIZE[t];\n }\n body.push(0x20, ...u32(orig), 0x24, 0, 0x0b);\n const func = [...vec([[...u32(3), 0x7f]]), ...body];\n return Uint8Array.from([\n 0x00,\n 0x61,\n 0x73,\n 0x6d,\n 0x01,\n 0x00,\n 0x00,\n 0x00,\n ...section(1, vec([sig, backing])),\n ...section(2, imports),\n ...section(3, vec([[0]])),\n ...section(7, vec([[...name('t'), 0x00, 0x00]])),\n ...section(10, vec([[...u32(func.length), ...func]])),\n ]);\n}\n\nexport class Trampolines {\n private readonly modules = new Map<string, WebAssembly.Module>();\n\n get compiled(): number {\n return this.modules.size;\n }\n\n make(\n params: Scalar[],\n results: Scalar[],\n env: {\n memory: WebAssembly.Memory;\n table: WebAssembly.Table;\n stackPointer: WebAssembly.Global;\n backing: number;\n userData: number;\n }\n ): { fn: (...args: unknown[]) => unknown; sig: FuncSig } {\n const shared = env.memory.buffer instanceof SharedArrayBuffer;\n const key = `${params.join(',')}>${results.join(',')}${shared ? 's' : ''}`;\n let module = this.modules.get(key);\n if (!module) {\n module = new WebAssembly.Module(trampolineBytes(params, results, shared));\n this.modules.set(key, module);\n }\n const i32 = (v: number) => new WebAssembly.Global({ value: 'i32', mutable: false }, v);\n const instance = new WebAssembly.Instance(module, {\n env: {\n memory: env.memory,\n __indirect_function_table: env.table,\n __stack_pointer: env.stackPointer,\n backing: i32(env.backing),\n user_data: i32(env.userData),\n },\n });\n const sig: FuncSig = {\n params: params.map((t) => (t === 'v128' ? 'other' : t)) as ValType[],\n results: results.map((t) => (t === 'v128' ? 'other' : t)) as ValType[],\n };\n return { fn: instance.exports.t as (...args: unknown[]) => unknown, sig };\n }\n}\n", "export type ValType = 'i32' | 'i64' | 'f32' | 'f64' | 'other';\n\nexport interface FuncSig {\n params: ValType[];\n results: ValType[];\n}\n\nexport interface ElemSegment {\n offset: number;\n tableBase: boolean;\n funcs: number[];\n}\n\nexport interface FuncTypeInfo {\n sigs: FuncSig[];\n funcs: number[];\n exports: Record<string, number>;\n elems: ElemSegment[];\n}\n\nconst VALTYPES: Readonly<Record<number, ValType>> = {\n 127: 'i32',\n 126: 'i64',\n 125: 'f32',\n 124: 'f64',\n};\n\nconst TABLE_BASE = '__table_base';\n\nclass Reader {\n at = 8;\n readonly bytes: Uint8Array;\n\n constructor(bytes: Uint8Array) {\n this.bytes = bytes;\n }\n\n byte(): number {\n return this.bytes[this.at++] ?? 0;\n }\n\n u32(): number {\n let result = 0;\n let shift = 0;\n for (;;) {\n const b = this.byte();\n result |= (b & 0x7f) << shift;\n if (!(b & 0x80)) return result >>> 0;\n shift += 7;\n }\n }\n\n s32(): number {\n let result = 0;\n let shift = 0;\n let b: number;\n do {\n b = this.byte();\n result |= (b & 0x7f) << shift;\n shift += 7;\n } while (b & 0x80);\n return shift < 32 && b & 0x40 ? result | (-1 << shift) : result;\n }\n\n name(): string {\n const len = this.u32();\n const s = new TextDecoder().decode(this.bytes.subarray(this.at, this.at + len));\n this.at += len;\n return s;\n }\n\n valtype(): ValType {\n const code = this.byte();\n if (code === 0x63 || code === 0x64) this.s32();\n return VALTYPES[code] ?? 'other';\n }\n\n limits(): void {\n const flags = this.byte();\n this.u32();\n if (flags & 1) this.u32();\n }\n}\n\ninterface Scan {\n info: FuncTypeInfo;\n globals: Array<string | number | undefined>;\n}\n\nfunction readTypes(r: Reader, s: Scan): void {\n for (let i = r.u32(); i > 0; i--) {\n r.byte();\n const params: ValType[] = [];\n for (let n = r.u32(); n > 0; n--) params.push(r.valtype());\n const results: ValType[] = [];\n for (let n = r.u32(); n > 0; n--) results.push(r.valtype());\n s.info.sigs.push({ params, results });\n }\n}\n\nfunction readImports(r: Reader, s: Scan): void {\n for (let i = r.u32(); i > 0; i--) {\n r.name();\n const field = r.name();\n const kind = r.byte();\n if (kind === 0) s.info.funcs.push(r.u32());\n else if (kind === 1) {\n r.valtype();\n r.limits();\n } else if (kind === 2) r.limits();\n else if (kind === 3) {\n r.valtype();\n r.byte();\n s.globals.push(field);\n } else {\n r.byte();\n r.u32();\n }\n }\n}\n\nfunction readFunctions(r: Reader, s: Scan): void {\n for (let i = r.u32(); i > 0; i--) s.info.funcs.push(r.u32());\n}\n\nconst SKIP: Readonly<Record<number, (r: Reader) => void>> = {\n 66: (r) => r.s32(),\n 67: (r) => {\n r.at += 4;\n },\n 68: (r) => {\n r.at += 8;\n },\n 208: (r) => r.valtype(),\n};\n\nfunction constExpr(r: Reader, s: Scan): { value: number; tableBase: boolean } | undefined {\n let value = 0;\n let tableBase = false;\n let known = true;\n for (;;) {\n const op = r.byte();\n if (op === 0x0b) return known ? { value, tableBase } : undefined;\n if (op === 0x41) value += r.s32();\n else if (op === 0x23) {\n const g = s.globals[r.u32()];\n if (g === TABLE_BASE) tableBase = true;\n else if (typeof g === 'number') value += g;\n else known = false;\n } else if (op === 0xd2) {\n value = r.u32();\n } else if (op in SKIP) {\n SKIP[op]?.(r);\n known = false;\n } else if (op !== 0x6a) {\n r.at = r.bytes.length;\n return undefined;\n }\n }\n}\n\nfunction readGlobals(r: Reader, s: Scan): void {\n for (let i = r.u32(); i > 0; i--) {\n r.valtype();\n r.byte();\n const init = constExpr(r, s);\n s.globals.push(init && !init.tableBase ? init.value : undefined);\n }\n}\n\nfunction readExports(r: Reader, s: Scan): void {\n for (let i = r.u32(); i > 0; i--) {\n const name = r.name();\n const kind = r.byte();\n const index = r.u32();\n if (kind === 0) s.info.exports[name] = index;\n }\n}\n\nfunction readElems(r: Reader, s: Scan): void {\n for (let i = r.u32(); i > 0; i--) {\n const flags = r.u32();\n const active = (flags & 1) === 0;\n const table = flags & 2 ? (active ? r.u32() : 0) : 0;\n const offset = active ? constExpr(r, s) : undefined;\n if (flags & 3) r.valtype();\n const funcs: number[] = [];\n for (let n = r.u32(); n > 0; n--) {\n if (flags & 4) {\n const ref = constExpr(r, s);\n funcs.push(ref ? ref.value : -1);\n } else funcs.push(r.u32());\n }\n if (offset && table === 0) {\n s.info.elems.push({ offset: offset.value, tableBase: offset.tableBase, funcs });\n }\n }\n}\n\nconst SECTIONS: Readonly<Record<number, (r: Reader, s: Scan) => void>> = {\n 1: readTypes,\n 2: readImports,\n 3: readFunctions,\n 6: readGlobals,\n 7: readExports,\n 9: readElems,\n};\n\nexport function funcTypeInfo(bytes: Uint8Array): FuncTypeInfo {\n const r = new Reader(bytes);\n const s: Scan = { info: { sigs: [], funcs: [], exports: {}, elems: [] }, globals: [] };\n while (r.at < bytes.length) {\n const id = r.byte();\n const end = r.u32() + r.at;\n SECTIONS[id]?.(r, s);\n r.at = end;\n }\n return s.info;\n}\n\nexport class FuncTypes {\n private readonly known = new WeakMap<object, FuncSig>();\n private pending: Array<() => void> = [];\n\n register(\n read: () => Uint8Array | undefined,\n instance: WebAssembly.Instance,\n table: WebAssembly.Table | undefined,\n tableBase: number\n ): void {\n this.pending.push(() => {\n const bytes = read();\n if (bytes) this.add(funcTypeInfo(bytes), instance, table, tableBase);\n });\n }\n\n add(\n info: FuncTypeInfo,\n instance: WebAssembly.Instance,\n table: WebAssembly.Table | undefined,\n tableBase: number\n ): void {\n const sig = (func: number) => info.sigs[info.funcs[func] ?? -1];\n for (const [name, func] of Object.entries(info.exports)) {\n const fn = instance.exports[name];\n const type = sig(func);\n if (typeof fn === 'function' && type) this.known.set(fn, type);\n }\n if (!table) return;\n for (const seg of info.elems) {\n const start = seg.offset + (seg.tableBase ? tableBase : 0);\n seg.funcs.forEach((func, i) => {\n const type = sig(func);\n const fn = start + i < table.length ? table.get(start + i) : null;\n if (fn && type) this.known.set(fn, type);\n });\n }\n }\n\n set(fn: object, sig: FuncSig): void {\n this.known.set(fn, sig);\n }\n\n of(fn: object): FuncSig | undefined {\n const known = this.known.get(fn);\n if (known || this.pending.length === 0) return known;\n const pending = this.pending;\n this.pending = [];\n for (const run of pending) run();\n return this.known.get(fn);\n }\n}\n", "import { type DylinkInfo, dylinkInfo } from './dylink.ts';\nimport { normalize } from './wasi-files.ts';\nimport { reseatTls } from './wasix-fork.ts';\nimport { type Scalar, Trampolines } from './wasix-trampoline.ts';\nimport { FuncTypes } from './wasm-functypes.ts';\n\nexport const TABLE_BASE = 1;\nconst PAGE = 65536;\n\nexport const STACK_SIZE = 8 * 1024 * 1024;\n\nconst LIBRARY_DIRS = ['/lib', '/usr/lib', '/usr/local/lib'];\n\nfunction expandOrigin(entry: string, dir: string): string {\n return entry.replace(/\\$(?:ORIGIN\\b|\\{ORIGIN\\})/g, dir);\n}\n\nexport type LinkRecord =\n | {\n kind: 'load';\n handle: number;\n path: string;\n memoryBase: number;\n tableBase: number;\n needed?: number[];\n }\n | { kind: 'slot'; index: number; handle: number; name: string }\n | { kind: 'closure'; index: number }\n | { kind: 'closure-free'; index: number }\n | {\n kind: 'closure-prepare';\n index: number;\n backing: number;\n userData: number;\n params: Scalar[];\n results: Scalar[];\n };\n\nexport interface LinkerHost {\n read(path: string): Uint8Array<ArrayBuffer> | undefined;\n\n hostImports(module: WebAssembly.Module): WebAssembly.Imports;\n\n real?(path: string): string;\n}\n\ninterface Linked {\n handle: number;\n path: string;\n module: WebAssembly.Module;\n info: DylinkInfo;\n instance: WebAssembly.Instance;\n memoryBase: number;\n tableBase: number;\n\n needed: number[];\n}\n\nexport class DlError extends Error {}\n\nexport class WasixLinker {\n readonly table: WebAssembly.Table;\n readonly stackPointer: WebAssembly.Global;\n readonly memoryBase: number;\n readonly stackLow: number;\n readonly stackHigh: number;\n private readonly cLongjmp: WebAssembly.Tag;\n private readonly cppException: WebAssembly.Tag;\n private main: WebAssembly.Instance | undefined;\n private readonly modules = new Map<number, Linked>();\n\n forkedTls: Map<number, number> | undefined;\n private readonly byPath = new Map<string, Linked>();\n\n private mainGot: Array<() => void> = [];\n private readonly slots = new Map<unknown, number>();\n private nextHandle = 1;\n\n publisher: ((record: LinkRecord) => void) | undefined;\n\n indices:\n | {\n reserve(floor: number, size: number): number;\n load(floor: number, size: number): { base: number; handle: number };\n lock(): void;\n unlock(): void;\n allocate(floor: number): number;\n free(index: number): void;\n }\n | undefined;\n\n types = new FuncTypes();\n\n readonly trampolines = new Trampolines();\n\n private readonly memory: WebAssembly.Memory;\n private readonly host: LinkerHost;\n constructor(\n memory: WebAssembly.Memory,\n mainInfo: DylinkInfo,\n host: LinkerHost,\n\n thread = false\n ) {\n this.memory = memory;\n this.host = host;\n this.memoryBase = Math.max(1, 2 ** mainInfo.memoryAlign);\n this.stackLow = align(this.memoryBase + mainInfo.memorySize, 1024);\n this.stackHigh = this.stackLow + STACK_SIZE;\n if (!thread) growTo(memory, this.stackHigh);\n this.table = new WebAssembly.Table({\n element: 'anyfunc',\n initial: TABLE_BASE + mainInfo.tableSize,\n });\n this.stackPointer = new WebAssembly.Global(\n { value: 'i32', mutable: true },\n thread ? 0 : this.stackHigh\n );\n const tag = () =>\n new (\n WebAssembly as unknown as { Tag: new (t: { parameters: string[] }) => WebAssembly.Tag }\n ).Tag({\n parameters: ['i32'],\n });\n this.cLongjmp = tag();\n this.cppException = tag();\n }\n\n mainImports(module: WebAssembly.Module): Record<string, Record<string, WebAssembly.ImportValue>> {\n const i32 = (v: number) => new WebAssembly.Global({ value: 'i32', mutable: false }, v);\n const got = (v: number) => new WebAssembly.Global({ value: 'i32', mutable: true }, v);\n const env: Record<string, WebAssembly.ImportValue> = {\n memory: this.memory,\n __indirect_function_table: this.table,\n __stack_pointer: this.stackPointer,\n __memory_base: i32(this.memoryBase),\n __table_base: i32(TABLE_BASE),\n __c_longjmp: this.cLongjmp as unknown as WebAssembly.ImportValue,\n __cpp_exception: this.cppException as unknown as WebAssembly.ImportValue,\n };\n const gotMem: Record<string, WebAssembly.Global> = {\n __stack_high: got(this.stackHigh),\n __stack_low: got(this.stackLow),\n __heap_base: got(this.stackHigh),\n };\n const gotFunc: Record<string, WebAssembly.Global> = {};\n this.mainGot = [];\n\n for (const imp of WebAssembly.Module.imports(module)) {\n if (imp.module === 'env' && imp.kind === 'function' && !(imp.name in env)) {\n env[imp.name] = this.functionImport(imp.name);\n } else if (imp.module === 'GOT.func' || (imp.module === 'GOT.mem' && !(imp.name in gotMem))) {\n const g = got(0);\n (imp.module === 'GOT.func' ? gotFunc : gotMem)[imp.name] = g;\n const kind = imp.module;\n this.mainGot.push(() => {\n g.value = kind === 'GOT.func' ? this.slotOrNull(imp.name) : this.addressOrNull(imp.name);\n });\n }\n }\n return { env, 'GOT.mem': gotMem, 'GOT.func': gotFunc };\n }\n\n bindMainGot(): void {\n for (const resolve of this.mainGot) resolve();\n }\n\n bindMain(instance: WebAssembly.Instance, relocate: boolean): void {\n this.main = instance;\n\n if (relocate) call(instance, '__wasm_apply_data_relocs');\n }\n\n mainPath: string | undefined;\n\n private isMain(path: string): boolean {\n if (this.mainPath === undefined) return false;\n if (path === this.mainPath) return true;\n const real = this.host.real;\n if (real === undefined) return false;\n try {\n return real(path) === real(this.mainPath);\n } catch {\n return false;\n }\n }\n\n open(name: string, cwd: string, ldPath: readonly string[]): number {\n const path = this.locate(name, cwd, ldPath);\n if (this.isMain(path)) return 0;\n this.indices?.lock();\n try {\n return this.load(path, cwd, ldPath).handle;\n } finally {\n this.indices?.unlock();\n }\n }\n\n symbol(handle: number, name: string): number {\n const found =\n handle === 0 ? this.find(name) : this.findIn(this.module(handle), name, new Set());\n if (!found) throw new DlError(`undefined symbol: ${name}`);\n const [owner, value] = found;\n if (typeof value === 'function') return this.slot(value, owner, name);\n if (value instanceof WebAssembly.Global) return this.baseOf(owner) + (value.value as number);\n throw new DlError(`${name} is neither a function nor data`);\n }\n\n invalid(handle: number): boolean {\n return !this.modules.has(handle);\n }\n\n cache: Readonly<Record<string, WebAssembly.Module>> | undefined;\n\n compiled(): Record<string, WebAssembly.Module> {\n const out: Record<string, WebAssembly.Module> = {};\n for (const [path, linked] of this.byPath) out[path] = linked.module;\n return out;\n }\n\n allocateClosure(): number {\n const index = (this.indices as NonNullable<WasixLinker['indices']>).allocate(this.table.length);\n growTable(this.table, index + 1);\n this.live.add(index);\n return index;\n }\n\n freeClosure(index: number): void {\n this.indices?.free(index);\n this.live.delete(index);\n this.table.set(index, null);\n }\n\n private readonly live = new Set<number>();\n\n prepareClosure(record: Omit<Extract<LinkRecord, { kind: 'closure-prepare' }>, 'kind'>): void {\n if (!this.live.has(record.index)) throw new DlError(`closure ${record.index}: not allocated`);\n const full: LinkRecord = { kind: 'closure-prepare', ...record };\n this.install(full);\n this.publisher?.(full);\n }\n\n private install(record: Extract<LinkRecord, { kind: 'closure-prepare' }>): void {\n growTable(this.table, record.index + 1);\n const { fn, sig } = this.trampolines.make(record.params, record.results, {\n memory: this.memory,\n table: this.table,\n stackPointer: this.stackPointer,\n backing: record.backing,\n userData: record.userData,\n });\n this.table.set(record.index, fn as never);\n this.types.set(fn, sig);\n }\n\n private reserveLoad(size: number): { base: number; handle: number } {\n return (\n this.indices?.load(this.table.length, size) ?? {\n base: this.table.length,\n handle: this.nextHandle++,\n }\n );\n }\n\n private reserve(size: number): number {\n return this.indices?.reserve(this.table.length, size) ?? this.table.length;\n }\n\n tlsBases(): Array<[number, number]> {\n const bases: Array<[number, number]> = [];\n for (const [handle, linked] of this.modules) {\n const base = linked.instance.exports.__tls_base;\n if (base instanceof WebAssembly.Global) bases.push([handle, base.value as number]);\n }\n return bases;\n }\n\n private carryTls(linked: Linked): boolean {\n const base = this.forkedTls?.get(linked.handle);\n const global = linked.instance.exports.__tls_base;\n if (base === undefined || !(global instanceof WebAssembly.Global)) return false;\n global.value = base;\n reseatTls(\n linked.instance.exports,\n (at, length) => new Uint8Array(this.memory.buffer, at, length)\n );\n return true;\n }\n\n replay(record: LinkRecord): void {\n if (record.kind === 'closure') {\n growTable(this.table, record.index + 1);\n this.live.add(record.index);\n return;\n }\n if (record.kind === 'closure-free') {\n this.live.delete(record.index);\n if (record.index < this.table.length) this.table.set(record.index, null);\n return;\n }\n if (record.kind === 'closure-prepare') {\n this.install(record);\n return;\n }\n if (record.kind === 'load') {\n if (this.modules.has(record.handle)) return;\n const linked = this.instantiate(record.path, this.moduleAt(record.path), record, false);\n linked.needed.push(...(record.needed ?? []));\n this.nextHandle = Math.max(this.nextHandle, record.handle + 1);\n return;\n }\n const value =\n record.handle === 0\n ? this.main?.exports[record.name]\n : this.module(record.handle).instance.exports[record.name];\n if (typeof value !== 'function') throw new DlError(`${record.name}: not a function`);\n growTable(this.table, record.index + 1);\n this.table.set(record.index, value);\n this.slots.set(value, record.index);\n }\n\n private moduleAt(path: string): WebAssembly.Module {\n const cached = this.cache?.[path];\n if (cached) return cached;\n const bytes = this.host.read(path);\n if (!bytes) throw new DlError(`${path}: gone`);\n return new WebAssembly.Module(bytes);\n }\n\n private module(handle: number): Linked {\n const m = this.modules.get(handle);\n if (!m) throw new DlError(`invalid handle ${handle}`);\n return m;\n }\n\n private locate(name: string, cwd: string, ldPath: readonly string[]): string {\n if (name.includes('/'))\n return name.startsWith('/') ? normalize(name) : normalize(`${cwd}/${name}`);\n for (const dir of [...ldPath.filter(Boolean), ...LIBRARY_DIRS]) {\n const path = normalize(`${dir.startsWith('/') ? '' : `${cwd}/`}${dir}/${name}`);\n if (this.byPath.has(path) || this.host.read(path)) return path;\n }\n throw new DlError(`${name}: not found`);\n }\n\n private load(path: string, cwd: string, ldPath: readonly string[]): Linked {\n const loaded = this.byPath.get(path);\n if (loaded) return loaded;\n const bytes = this.host.read(path);\n if (!bytes) throw new DlError(`${path}: no such file`);\n let module: WebAssembly.Module;\n try {\n module = new WebAssembly.Module(bytes);\n } catch (e) {\n throw new DlError(`${path}: not a wasm module (${(e as Error).message})`);\n }\n const info = dylinkInfo(module);\n if (!info) throw new DlError(`${path}: not a side module (no dylink.0)`);\n\n const dir = path.slice(0, path.lastIndexOf('/')) || '/';\n const search = [dir, ...ldPath, ...info.runtimePath.map((p) => expandOrigin(p, dir))];\n const needed = info.needed.map(\n (n) => this.load(this.locate(n, cwd, search), cwd, ldPath).handle\n );\n const memoryBase = this.allocate(info.memorySize, 2 ** info.memoryAlign);\n const { base: tableBase, handle } = this.reserveLoad(info.tableSize);\n const record: LinkRecord = {\n kind: 'load',\n handle,\n path,\n memoryBase,\n tableBase,\n ...(needed.length > 0 ? { needed } : {}),\n };\n const linked = this.instantiate(path, module, record, true);\n linked.needed.push(...needed);\n this.publisher?.(record);\n return linked;\n }\n\n private instantiate(\n path: string,\n module: WebAssembly.Module,\n at: { handle: number; memoryBase: number; tableBase: number },\n init: boolean\n ): Linked {\n const info = dylinkInfo(module) as DylinkInfo;\n growTable(this.table, at.tableBase + info.tableSize);\n const pending: Array<() => void> = [];\n const env: Record<string, WebAssembly.ImportValue> = {\n memory: this.memory,\n __indirect_function_table: this.table,\n __stack_pointer: this.stackPointer,\n __memory_base: new WebAssembly.Global({ value: 'i32', mutable: false }, at.memoryBase),\n __table_base: new WebAssembly.Global({ value: 'i32', mutable: false }, at.tableBase),\n __c_longjmp: this.cLongjmp as unknown as WebAssembly.ImportValue,\n __cpp_exception: this.cppException as unknown as WebAssembly.ImportValue,\n };\n const gotMem: Record<string, WebAssembly.Global> = {};\n const gotFunc: Record<string, WebAssembly.Global> = {};\n const linked: Linked = {\n handle: at.handle,\n path,\n module,\n info,\n instance: undefined as never,\n memoryBase: at.memoryBase,\n tableBase: at.tableBase,\n needed: [],\n };\n for (const imp of WebAssembly.Module.imports(module)) {\n if (imp.module === 'env' && imp.kind === 'function' && !(imp.name in env)) {\n env[imp.name] = this.functionImport(imp.name);\n } else if (imp.module === 'GOT.mem') {\n const g = new WebAssembly.Global({ value: 'i32', mutable: true }, 0);\n gotMem[imp.name] = g;\n\n pending.push(() => {\n g.value = this.addressOrNull(imp.name);\n });\n } else if (imp.module === 'GOT.func') {\n const g = new WebAssembly.Global({ value: 'i32', mutable: true }, 0);\n gotFunc[imp.name] = g;\n pending.push(() => {\n g.value = this.slotOrNull(imp.name);\n });\n }\n }\n const imports: WebAssembly.Imports = {\n ...this.host.hostImports(module),\n env,\n 'GOT.mem': gotMem,\n 'GOT.func': gotFunc,\n };\n linked.instance = new WebAssembly.Instance(module, imports);\n this.types.register(() => this.host.read(path), linked.instance, this.table, at.tableBase);\n this.modules.set(at.handle, linked);\n const first = this.byPath.get(path);\n if (!first || at.handle < first.handle) this.byPath.set(path, linked);\n for (const resolve of pending) resolve();\n if (init) {\n call(linked.instance, '__wasm_apply_data_relocs');\n call(linked.instance, '__wasm_call_ctors');\n } else if (!this.carryTls(linked)) {\n call(linked.instance, '__wasix_init_tls');\n }\n return linked;\n }\n\n private functionImport(name: string): WebAssembly.ImportValue {\n const now = this.find(name);\n if (now && typeof now[1] === 'function') return now[1] as WebAssembly.ImportValue;\n let resolved: ((...args: unknown[]) => unknown) | undefined;\n return (...args: unknown[]) => {\n if (!resolved) {\n const later = this.find(name);\n\n if (!later || typeof later[1] !== 'function')\n throw new WebAssembly.RuntimeError(`unresolved symbol ${name}`);\n resolved = later[1] as (...args: unknown[]) => unknown;\n }\n return resolved(...args);\n };\n }\n\n private addressOrNull(name: string): number {\n const found = this.find(name);\n if (!found || !(found[1] instanceof WebAssembly.Global)) return 0;\n return this.baseOf(found[0]) + (found[1].value as number);\n }\n\n private slotOrNull(name: string): number {\n const found = this.find(name);\n if (!found || typeof found[1] !== 'function') return 0;\n return this.slot(found[1], found[0], name);\n }\n\n private find(name: string): [number, unknown] | undefined {\n const inMain = this.main?.exports[name];\n if (inMain !== undefined) return [0, inMain];\n for (const m of this.modules.values()) {\n const v = m.instance?.exports[name];\n if (v !== undefined) return [m.handle, v];\n }\n return undefined;\n }\n\n private findIn(m: Linked, name: string, seen: Set<number>): [number, unknown] | undefined {\n if (seen.has(m.handle)) return undefined;\n seen.add(m.handle);\n const v = m.instance.exports[name];\n if (v !== undefined) return [m.handle, v];\n for (const h of m.needed) {\n const found = this.findIn(this.module(h), name, seen);\n if (found) return found;\n }\n return undefined;\n }\n\n private baseOf(handle: number): number {\n return handle === 0 ? this.memoryBase : this.module(handle).memoryBase;\n }\n\n private indexed = 0;\n\n private indexTable(): void {\n for (let i = this.indexed; i < this.table.length; i++) {\n const fn = this.table.get(i);\n if (fn && !this.slots.has(fn)) this.slots.set(fn, i);\n }\n this.indexed = this.table.length;\n }\n\n private slot(fn: unknown, handle: number, name: string): number {\n this.indexTable();\n const known = this.slots.get(fn);\n if (known !== undefined) return known;\n const index = this.reserve(1);\n growTable(this.table, index + 1);\n this.table.set(index, fn as never);\n this.slots.set(fn, index);\n this.publisher?.({ kind: 'slot', index, handle, name });\n return index;\n }\n\n private heapAlloc(bytes: number): number | undefined {\n const exports = this.main?.exports;\n const calloc = exports?.calloc;\n if (typeof calloc !== 'function') return undefined;\n const state = exports?.asyncify_get_state;\n if (typeof state === 'function' && (state as () => number)() !== 0) return undefined;\n const at = (calloc as Calloc)(1, bytes) >>> 0;\n return at === 0 ? undefined : at;\n }\n\n private allocate(size: number, alignment: number): number {\n if (size === 0) return 0;\n const to = Math.max(alignment, 16);\n const heap = this.heapAlloc(size + to - 16);\n if (heap !== undefined) return align(heap, to);\n const pages = Math.ceil((size + (to > PAGE ? to : 0)) / PAGE);\n return align(this.memory.grow(pages) * PAGE, to);\n }\n}\n\ntype Calloc = (count: number, size: number) => number;\n\nfunction align(n: number, to: number): number {\n return Math.ceil(n / to) * to;\n}\n\nfunction growTo(memory: WebAssembly.Memory, bytes: number): void {\n const pages = Math.ceil(bytes / PAGE) - memory.buffer.byteLength / PAGE;\n if (pages > 0) memory.grow(pages);\n}\n\nfunction growTable(table: WebAssembly.Table, length: number): void {\n if (table.length < length) table.grow(length - table.length);\n}\n\nfunction call(instance: WebAssembly.Instance, name: string): void {\n const fn = instance.exports[name];\n if (typeof fn === 'function') (fn as () => void)();\n}\n", "import { E, FDFLAGS, wasiErrnoOf, wasixSignal } from './wasi-abi.ts';\nimport { WasiError } from './wasi-files.ts';\nimport { WasiExit, type WasiFunction, type WasiHost, wrap } from './wasi-host.ts';\nimport { libcVersion } from './wasi-module.ts';\nimport type { WasiSignals } from './wasi-signals.ts';\nimport { MAIN_TID, ThreadExit, type WasiThreads } from './wasi-threads.ts';\nimport { wasixEpollImports } from './wasix-epoll.ts';\nimport { callDynamic } from './wasix-ffi.ts';\nimport type { AsyncifyDriver } from './wasix-fork.ts';\nimport { DlError, type WasixLinker } from './wasix-linker.ts';\nimport { type SpawnFdOp, WasixProcess } from './wasix-process.ts';\nimport { wasixSocketImports } from './wasix-sockets.ts';\nimport { valueTypes } from './wasix-trampoline.ts';\nimport { FuncTypes } from './wasm-functypes.ts';\n\nconst FDFLAGSEXT_CLOEXEC = 1;\nconst SPAWN_OP_SIZE = 56;\nconst SPAWN_OPS = ['close', 'dup2', 'open', 'chdir', 'fchdir'] as const;\nconst RIGHTS_FD_WRITE = 1n << 6n;\n\nconst ICANON = 0o2;\nconst ECHO = 0o10;\n\nexport const COMPAT: Readonly<Record<string, readonly string[]>> = {\n exit: ['proc_exit2'],\n exec: ['proc_exec', 'proc_exec2', 'proc_exec3', 'proc_exec4'],\n spawn: ['proc_spawn2', 'proc_spawn3'],\n open: ['path_open2'],\n dup: ['fd_dup', 'fd_dup2'],\n alarm: ['proc_raise_interval', 'proc_raise_interval2'],\n};\n\nconst FUTEX_SLICE_MS = 50;\n\nexport function futexWait(\n view: Int32Array,\n index: number,\n expected: number,\n ms: number,\n interrupted: (() => boolean) | undefined\n): boolean {\n const deadline = performance.now() + ms;\n for (;;) {\n const slice = interrupted ? Math.min(FUTEX_SLICE_MS, ms) : ms;\n if (Atomics.wait(view, index, expected, slice) !== 'timed-out') return true;\n if (interrupted?.()) return true;\n ms = deadline - performance.now();\n if (ms <= 0) return false;\n }\n}\n\nconst EINTR_LIBC = 22;\nconst STRICT_EPOLL_LIBC = 29;\nconst CWD_FD_LIBC = 41;\nconst MAIN_HANDLE = 0x7fffffff;\n\nexport class WasixHost {\n private readonly process: WasixProcess;\n\n threads: WasiThreads | undefined;\n\n linker: WasixLinker | undefined;\n\n types = new FuncTypes();\n\n table: WebAssembly.Table | undefined;\n\n signals: WasiSignals | undefined;\n\n private readonly host: WasiHost;\n private readonly driver: AsyncifyDriver;\n constructor(host: WasiHost, driver: AsyncifyDriver, module?: WebAssembly.Module) {\n this.host = host;\n this.driver = driver;\n this.process = new WasixProcess(\n host,\n driver,\n () => (this.threads?.tid ?? MAIN_TID) !== MAIN_TID\n );\n\n const libc = module ? (libcVersion(module) ?? 0) : undefined;\n if (libc !== undefined) host.strictEpoll = libc >= STRICT_EPOLL_LIBC;\n if (libc !== undefined) host.cwdFd = libc >= CWD_FD_LIBC;\n if (module && !WebAssembly.Module.imports(module).some((i) => i.name === 'fd_fdflags_set')) {\n host.fds.implicitCloexec = true;\n\n host.interruptWakes = (libcVersion(module) ?? 0) < EINTR_LIBC;\n }\n }\n\n private get mem() {\n return this.host.mem;\n }\n\n private str(ptr: number, len: number): string {\n const s = this.mem.string(ptr, len);\n return s.endsWith('\\0') ? s.slice(0, -1) : s;\n }\n\n private cStrings(ptr: number, count: number): string[] {\n const v = this.mem.view();\n return Array.from({ length: count }, (_, i) =>\n this.mem.cString(v.getUint32(ptr + i * 4, true))\n );\n }\n\n private execOrExit(n: number, nl: number, a: number, al: number, e: number, el: number): never {\n try {\n return this.process.exec({\n name: this.str(n, nl),\n argv: WasixHost.lines(this.str(a, al)),\n env: WasixHost.env(e === 0 ? undefined : WasixHost.lines(this.str(e, el))),\n search: false,\n path: '',\n });\n } catch (err) {\n if (err instanceof WasiExit) throw err;\n const code = err instanceof WasiError ? err.code : (err as { code?: unknown } | null)?.code;\n throw new WasiExit(wasiErrnoOf(typeof code === 'string' ? code : 'ENOEXEC'));\n }\n }\n\n private static env(entries: readonly string[] | undefined): Record<string, string> | undefined {\n if (!entries) return undefined;\n const env: Record<string, string> = {};\n for (const line of entries) {\n const eq = line.indexOf('=');\n if (eq > 0) env[line.slice(0, eq)] = line.slice(eq + 1);\n }\n return env;\n }\n\n private static lines(text: string): string[] {\n return text.split('\\n').filter((line, i, all) => line !== '' || i < all.length - 1);\n }\n\n private spawnOps(ptr: number, count: number): SpawnFdOp[] {\n const v = this.mem.view();\n return Array.from({ length: count }, (_, i) => {\n const p = ptr + i * SPAWN_OP_SIZE;\n const cmd = SPAWN_OPS[v.getUint8(p)];\n if (!cmd) throw new WasiError('EINVAL');\n return {\n cmd,\n fd: v.getUint32(p + 4, true),\n srcFd: v.getUint32(p + 8, true),\n path: this.str(v.getUint32(p + 12, true), v.getUint32(p + 16, true)),\n oflags: v.getUint16(p + 24, true),\n rightsWrite: (v.getBigUint64(p + 32, true) & RIGHTS_FD_WRITE) !== 0n,\n append: (v.getUint16(p + 48, true) & FDFLAGS.APPEND) !== 0,\n };\n });\n }\n\n imports(): Record<string, WasiFunction> {\n return wrap({\n ...this.startupImports(),\n ...this.fdImports(),\n ...this.processImports(),\n ...this.threadImports(),\n ...this.dlImports(),\n closure_allocate: (out: number) => {\n if (!this.linker) throw new WasiError('ENOTSUP');\n this.mem.view().setUint32(out, this.linker.allocateClosure(), true);\n },\n closure_prepare: (\n backing: number,\n index: number,\n argTypes: number,\n argCount: number,\n resultTypes: number,\n resultCount: number,\n userData: number\n ) => {\n if (!this.linker) throw new WasiError('ENOTSUP');\n const params = valueTypes(this.mem.bytes(argTypes, argCount));\n const results = valueTypes(this.mem.bytes(resultTypes, resultCount));\n if (!params || !results) throw new WasiError('EINVAL');\n try {\n this.linker.prepareClosure({ index, backing, userData, params, results });\n } catch (e) {\n if (e instanceof DlError) throw new WasiError('EINVAL');\n throw e;\n }\n },\n closure_free: (index: number) => {\n if (!this.linker) throw new WasiError('ENOTSUP');\n this.linker.freeClosure(index);\n },\n call_dynamic: (...a: number[]) =>\n void callDynamic(\n { mem: this.mem, table: () => this.table, types: this.types },\n ...(a as [number, number, number, number, number, number])\n ),\n ...wasixSocketImports(this.host, this.host.imports()),\n ...wasixEpollImports(this.host),\n });\n }\n\n preview1(): Record<string, WasiFunction> {\n const { fds } = this.host;\n return wrap({\n fd_renumber: (from: number, to: number) => void fds.renumber(from, to, true),\n fd_close: (fd: number) => {\n const e = fds.get(fd);\n if (e.type !== 'dir' || !e.preopen) fds.close(fd);\n },\n });\n }\n\n private startupImports(): Record<string, WasiFunction> {\n const { host, mem } = this;\n return {\n proc_exit2: (code: number) => {\n throw new WasiExit(code);\n },\n\n proc_signals_sizes_get: (out: number) => void mem.view().setUint32(out, 0, true),\n proc_signals_get: () => E.SUCCESS,\n\n callback_signal: (name: number, len: number) =>\n void this.signals?.register(this.str(name, len)),\n\n proc_raise_interval: (sig: number, interval: bigint, repeat: number) =>\n void host.o.kernel.call({\n op: 'proc-alarm',\n sig: posixSignal(sig),\n ms: nsToMs(interval),\n repeat: repeat !== 0,\n }),\n\n proc_raise_interval2: (sig: number, initial: bigint, interval: bigint, repeat: number) => {\n const ms = nsToMs(interval);\n host.o.kernel.call({\n op: 'proc-alarm',\n sig: posixSignal(sig),\n ms,\n firstMs: nsToMs(initial),\n repeat: repeat !== 0 && ms > 0,\n });\n },\n proc_id: (out: number) => void mem.view().setUint32(out, host.o.pid, true),\n proc_parent: (pid: number, out: number) => {\n if (pid !== 0 && pid !== host.o.pid) throw new WasiError('ESRCH');\n mem.view().setUint32(out, host.o.parent?.() ?? host.o.ppid ?? 1, true);\n },\n getcwd: (buf: number, lenPtr: number) => {\n if (host.cwdFd && host.fds.held && !host.fds.held.alive()) return E.NOENT;\n const bytes = new TextEncoder().encode(host.cwd);\n const max = mem.view().getUint32(lenPtr, true);\n mem.view().setUint32(lenPtr, bytes.length, true);\n if (bytes.length > max) return E.RANGE;\n mem.bytes(buf, bytes.length).set(bytes);\n if (bytes.length < max) mem.view().setUint8(buf + bytes.length, 0);\n return E.SUCCESS;\n },\n chdir: (ptr: number, len: number) => {\n const path = host.fds.resolve(3, this.str(ptr, len));\n if (!host.o.fs.stat(path).isDirectory) throw new WasiError('ENOTDIR');\n host.fds.chdir(path);\n },\n };\n }\n\n private fdImports(): Record<string, WasiFunction> {\n const { host, mem } = this;\n const preview1 = host.imports() as Record<string, (...a: unknown[]) => number>;\n return {\n fd_dup: (fd: number, out: number) =>\n void mem.view().setUint32(out, host.fds.dup(fd, 0, false), true),\n fd_dup2: (fd: number, min: number, cloexec: number, out: number) =>\n void mem.view().setUint32(out, host.fds.dup(fd, min, cloexec !== 0), true),\n fd_pipe: (rPtr: number, wPtr: number) => {\n const [r, w] = host.fds.pipe();\n mem.view().setUint32(rPtr, r, true);\n mem.view().setUint32(wPtr, w, true);\n },\n fd_fdflags_get: (fd: number, out: number) => {\n host.fds.get(fd);\n mem.view().setUint16(out, host.fds.cloexec.has(fd) ? FDFLAGSEXT_CLOEXEC : 0, true);\n },\n fd_fdflags_set: (fd: number, flags: number) =>\n void host.fds.setCloexec(fd, (flags & FDFLAGSEXT_CLOEXEC) !== 0),\n path_open2: (\n dirfd: number,\n lookup: number,\n p: number,\n l: number,\n oflags: number,\n rights: bigint,\n inheriting: bigint,\n fdflags: number,\n fdflagsext: number,\n out: number\n ) => {\n const r = preview1.path_open(dirfd, lookup, p, l, oflags, rights, inheriting, fdflags, out);\n if (r === E.SUCCESS && fdflagsext & FDFLAGSEXT_CLOEXEC)\n host.fds.setCloexec(mem.view().getUint32(out, true), true);\n return r;\n },\n tty_get: (ptr: number) => void this.ttyGet(ptr),\n tty_set: (ptr: number) => void this.ttySet(ptr),\n };\n }\n\n private processImports(): Record<string, WasiFunction> {\n const { mem, process } = this;\n return {\n proc_fork: (_copy: number, pidPtr: number) => process.fork(pidPtr),\n stack_checkpoint: (snapPtr: number, retPtr: number) => {\n const back = this.driver.rewound();\n if (back === undefined) return this.driver.checkpoint(snapPtr, retPtr);\n mem.view().setBigUint64(retPtr, BigInt(back), true);\n return E.SUCCESS;\n },\n stack_restore: (snapPtr: number, val: bigint) => void this.driver.restore(snapPtr, val),\n proc_join: (pidPtr: number, flags: number, statusPtr: number) =>\n void process.join(pidPtr, flags, statusPtr),\n proc_signal: (pid: number, sig: number) => {\n const posix = sig === 0 ? 0 : wasixSignal(sig);\n if (posix === undefined) throw new WasiError('EINVAL');\n if (pid === this.host.o.pid && posix !== 0 && this.host.onRaise?.(posix)) return;\n this.host.o.kernel.call({ op: 'proc-kill', pid, sig: posix });\n },\n\n proc_exec: (n: number, nl: number, a: number, al: number) =>\n this.execOrExit(n, nl, a, al, 0, 0),\n proc_exec2: (n: number, nl: number, a: number, al: number, e: number, el: number) =>\n this.execOrExit(n, nl, a, al, e, el),\n\n proc_exec3: (\n n: number,\n nl: number,\n a: number,\n al: number,\n e: number,\n el: number,\n search: number,\n p: number,\n pl: number\n ) =>\n process.exec({\n name: this.str(n, nl),\n argv: WasixHost.lines(this.str(a, al)),\n env: WasixHost.env(WasixHost.lines(this.str(e, el))),\n search: search !== 0,\n path: this.str(p, pl),\n }),\n\n proc_exec4: (\n n: number,\n nl: number,\n a: number,\n ac: number,\n e: number,\n ec: number,\n search: number,\n p: number,\n pl: number\n ) =>\n process.exec({\n name: this.str(n, nl),\n argv: this.cStrings(a, ac),\n env: WasixHost.env(e === 0 ? undefined : this.cStrings(e, ec)),\n search: search !== 0,\n path: this.str(p, pl),\n }),\n proc_spawn2: (...args: number[]) => {\n const [n, nl, a, al, e, el, ops, opc, , , search, p, pl, out] = args;\n const pid = process.spawn({\n name: this.str(n, nl),\n argv: WasixHost.lines(this.str(a, al)),\n env: WasixHost.env(WasixHost.lines(this.str(e, el))),\n search: search !== 0,\n path: this.str(p, pl),\n ops: this.spawnOps(ops, opc),\n });\n mem.view().setUint32(out, pid, true);\n },\n proc_spawn3: (...args: number[]) => {\n const [n, nl, a, ac, e, ec, ops, opc, , , search, p, pl, out] = args;\n const pid = process.spawn({\n name: this.str(n, nl),\n argv: this.cStrings(a, ac),\n env: WasixHost.env(e === 0 ? undefined : this.cStrings(e, ec)),\n search: search !== 0,\n path: this.str(p, pl),\n ops: this.spawnOps(ops, opc),\n });\n mem.view().setUint32(out, pid, true);\n },\n };\n }\n\n private dlImports(): Record<string, WasiFunction> {\n const { mem, host } = this;\n const failed = (message: string, buf: number, len: number): number => {\n if (len > 0) {\n const bytes = new TextEncoder().encode(message).subarray(0, len - 1);\n mem.bytes(buf, bytes.length).set(bytes);\n mem.view().setUint8(buf + bytes.length, 0);\n }\n return E.NOEXEC;\n };\n const linked = <T>(\n buf: number,\n len: number,\n op: (l: WasixLinker) => T,\n out: (v: T) => void\n ): number => {\n if (!this.linker) return failed('not a dynamically-linked program', buf, len);\n try {\n out(op(this.linker));\n return E.SUCCESS;\n } catch (e) {\n if (e instanceof DlError) return failed(e.message, buf, len);\n throw e;\n }\n };\n return {\n dlopen: (\n p: number,\n pl: number,\n _flags: number,\n buf: number,\n len: number,\n lp: number,\n ll: number,\n out: number\n ) => {\n if (p === 0) {\n if (!this.linker) return failed('not a dynamically-linked program', buf, len);\n mem.view().setUint32(out, MAIN_HANDLE, true);\n return E.SUCCESS;\n }\n return linked(\n buf,\n len,\n (l) => l.open(this.str(p, pl), host.cwd, lp === 0 ? [] : this.str(lp, ll).split(':')),\n (h) => void mem.view().setUint32(out, h === 0 ? MAIN_HANDLE : h, true)\n );\n },\n\n dlsym: (handle: number, s: number, sl: number, buf: number, len: number, out: number) =>\n linked(\n buf,\n len,\n (l) => l.symbol(handle === MAIN_HANDLE ? 0 : handle, this.str(s, sl)),\n (v) => void mem.view().setUint32(out, v, true)\n ),\n dl_invalid_handle: (handle: number) =>\n this.linker && (handle === MAIN_HANDLE || (handle !== 0 && !this.linker.invalid(handle)))\n ? E.SUCCESS\n : E.NOEXEC,\n };\n }\n\n private threadImports(): Record<string, WasiFunction> {\n const { mem, host } = this;\n const i32 = () => new Int32Array(mem.view().buffer);\n return {\n thread_id: (out: number) =>\n void mem.view().setUint32(out, this.threads?.tid ?? MAIN_TID, true),\n thread_parallelism: (out: number) =>\n void mem.view().setUint32(out, this.threads?.parallelism() ?? 1, true),\n\n thread_exit: (code: number) => {\n if (this.threads && this.threads.tid !== MAIN_TID) throw new ThreadExit();\n throw new WasiExit(code);\n },\n\n thread_signal: (tid: number, sig: number) => {\n if (!(this.threads?.known(tid) ?? tid === MAIN_TID)) throw new WasiError('ESRCH');\n const posix = posixSignal(sig);\n if (host.onRaise?.(posix)) return;\n host.o.kernel.call({ op: 'thread-kill', tid, sig: posix });\n },\n\n thread_spawn_v2: (startPtr: number, tidPtr: number) => {\n if (!this.threads) return E.NOTSUP;\n const tid = this.threads.spawn(startPtr);\n if (tid < 0) return E.AGAIN;\n mem.view().setUint32(tidPtr, tid, true);\n return E.SUCCESS;\n },\n futex_wait: (ptr: number, expected: number, timeoutPtr: number, wokenPtr: number) => {\n const v = mem.view();\n const timed = timeoutPtr !== 0 && v.getUint8(timeoutPtr) === 1;\n const ms = timed\n ? Number(v.getBigUint64(timeoutPtr + 8, true)) / 1e6\n : Number.POSITIVE_INFINITY;\n const woken =\n host.entered || futexWait(i32(), ptr >> 2, expected | 0, ms, host.interrupted);\n v.setUint8(wokenPtr, woken ? 1 : 0);\n },\n\n futex_wake: (ptr: number, wokenPtr: number) => {\n Atomics.notify(i32(), ptr >> 2, 1);\n mem.view().setUint8(wokenPtr, 1);\n },\n futex_wake_all: (ptr: number, wokenPtr: number) => {\n Atomics.notify(i32(), ptr >> 2);\n mem.view().setUint8(wokenPtr, 1);\n },\n };\n }\n\n private ttyFd(): number | undefined {\n for (const fd of [0, 1, 2]) {\n const e = this.host.fds.find(fd);\n if (e?.type === 'kernel' && this.host.fds.kind(fd, e) === 'tty') return fd;\n }\n return this.host.fds.terminals().find((fd) => fd > 2);\n }\n\n private ttyGet(ptr: number): void {\n const { host, mem } = this;\n host.interrupted?.();\n const v = mem.view();\n mem.bytes(ptr, 24).fill(0);\n const fd = this.ttyFd();\n const isTty = (n: number) => {\n const e = host.fds.find(n);\n return e?.type === 'kernel' && host.fds.kind(n, e) === 'tty' ? 1 : 0;\n };\n v.setUint8(ptr + 16, isTty(0));\n v.setUint8(ptr + 17, isTty(1));\n v.setUint8(ptr + 18, isTty(2));\n if (fd === undefined) throw new WasiError('ENOTTY');\n const [rows, cols] = host.o.kernel.sys.winsize?.(fd) ?? [24, 80];\n const termios = host.o.kernel.sys.tcgets?.(fd);\n v.setUint32(ptr, cols, true);\n v.setUint32(ptr + 4, rows, true);\n v.setUint8(ptr + 19, termios && termios.c_lflag & ECHO ? 1 : 0);\n v.setUint8(ptr + 20, termios && termios.c_lflag & ICANON ? 1 : 0);\n }\n\n private ttySet(ptr: number): void {\n this.host.interrupted?.();\n const fd = this.ttyFd();\n if (fd === undefined) throw new WasiError('ENOTTY');\n const { sys } = this.host.o.kernel;\n const termios = sys.tcgets?.(fd);\n if (!termios) throw new WasiError('ENOTTY');\n const v = this.mem.view();\n let lflag = termios.c_lflag & ~(ECHO | ICANON);\n if (v.getUint8(ptr + 19)) lflag |= ECHO;\n if (v.getUint8(ptr + 20)) lflag |= ICANON;\n sys.tcsets?.(fd, { ...termios, c_lflag: lflag });\n }\n}\n\nfunction posixSignal(sig: number): number {\n const posix = wasixSignal(sig);\n if (posix === undefined) throw new WasiError('EINVAL');\n return posix;\n}\n\nfunction nsToMs(ns: bigint): number {\n return Math.ceil(Number(ns) / 1e6);\n}\n", "export function parseFunctionNames(payload: Uint8Array): Map<number, string> {\n const names = new Map<number, string>();\n const decoder = new TextDecoder();\n let at = 0;\n const leb = (): number => {\n let value = 0;\n let shift = 0;\n let byte: number;\n do {\n if (at >= payload.length) throw new RangeError('truncated name section');\n byte = payload[at++] as number;\n value += (byte & 0x7f) * 2 ** shift;\n shift += 7;\n } while (byte & 0x80);\n return value;\n };\n while (at < payload.length) {\n const id = payload[at++];\n const size = leb();\n const end = at + size;\n if (end > payload.length) throw new RangeError('truncated name section');\n if (id === 1) {\n for (let count = leb(); count > 0; count--) {\n const index = leb();\n const length = leb();\n if (at + length > end) throw new RangeError('truncated name section');\n names.set(index, decoder.decode(payload.subarray(at, at + length)));\n at += length;\n }\n }\n at = end;\n }\n return names;\n}\n\nconst UNNAMED_FRAME = /^(\\s+at )(wasm:\\/\\/wasm\\/([^\\s()]+?):wasm-function\\[(\\d+)\\]:0x[0-9a-f]+)$/;\n\nconst WASM_MODULE = /wasm:\\/\\/wasm\\/([^\\s()]+?):wasm-function\\[/;\n\nexport function mainModule(lines: readonly string[]): string | undefined {\n for (let i = lines.length - 1; i >= 0; i--) {\n const m = WASM_MODULE.exec(lines[i] as string);\n if (!m) continue;\n return lines.slice(i + 1).some((line) => /^\\s+at /.test(line)) ? m[1] : undefined;\n }\n return undefined;\n}\n\nexport function nameFrame(\n line: string,\n module: string,\n name: (index: number) => string | undefined\n): string {\n const m = UNNAMED_FRAME.exec(line);\n if (!m || m[3] !== module) return line;\n const found = name(Number(m[4]));\n return found === undefined ? line : `${m[1]}${found} (${m[2]})`;\n}\n\nexport function definedFunctions(bytes: Uint8Array): number {\n let at = 8;\n const leb = (): number => {\n let value = 0;\n let shift = 0;\n let byte: number;\n do {\n if (at >= bytes.length) throw new RangeError('truncated module');\n byte = bytes[at++] as number;\n value += (byte & 0x7f) * 2 ** shift;\n shift += 7;\n } while (byte & 0x80);\n return value;\n };\n while (at < bytes.length) {\n const id = bytes[at++];\n const size = leb();\n if (id === 3) return leb();\n at += size;\n }\n return 0;\n}\n\nexport interface SidecarFit {\n functions(): number;\n warn(line: string): void;\n}\n\nexport function sidecarNames(\n read: (path: string) => Uint8Array,\n path: string,\n fit?: SidecarFit\n): (index: number) => string | undefined {\n let names: Map<number, string> | undefined;\n return (index) => {\n if (!names) {\n try {\n names = parseFunctionNames(read(path));\n } catch {\n names = new Map();\n }\n let want = names.size;\n try {\n if (fit) want = fit.functions();\n } catch {\n fit?.warn(`${path} can't be checked against the module, so the frames show raw indices`);\n names = new Map();\n return undefined;\n }\n if (fit && names.size !== want) {\n fit.warn(\n `${path} names ${names.size} functions, but the module has ${want}: it doesn't fit, so the frames show raw indices`\n );\n names = new Map();\n }\n }\n return names.get(index);\n };\n}\n", "import { physicalPath } from '../../fs/physical-path.ts';\nimport { type CwdAnswer, HeldCwd } from '../../kernel/held-cwd.ts';\nimport type { MountLine, ProcessListing } from '../../kernel/proc-info.ts';\nimport type { WasmSyscall } from '../../kernel/process.ts';\nimport {\n type HeldCwdInit,\n WASM_PROCESS_EXIT,\n WASM_PROCESS_READY,\n type WasmProcessInitMsg,\n type WasmProgram,\n type WasmThreadInitMsg,\n} from '../../kernel/protocol.ts';\nimport { defaultAction } from '../../kernel/signals.ts';\nimport type { SyncFsResult } from '../../realm/sync-fs-wire.ts';\nimport {\n createSyncFsSabBridge,\n createSyncSabTransport,\n type SabPostLike,\n} from '../../realm/sync-sab-bridge.ts';\nimport { loadBlocked, publishMemory, SAB_HEADER_I32 } from '../../realm/sync-sab-wire.ts';\nimport { SyscallError } from '../kernel-streams.ts';\nimport { identify, kernelSys } from '../process-runtime.ts';\nimport { SignalGate, type SignalHooks } from '../process-signals.ts';\nimport { dylinkInfo } from './dylink.ts';\nimport { cachingBridge } from './wasi-files.ts';\nimport { WasiExit, type WasiFunction, WasiHost, type WasiHostOptions } from './wasi-host.ts';\nimport { importsContext, loadImports, type ProgramImports, type Raw } from './wasi-imports.ts';\nimport { type ForeignResults, type ImportedMemory, RESERVED_NAMESPACES } from './wasi-module.ts';\nimport { ProcTree, procfsBridge } from './wasi-procfs.ts';\nimport { ptsBridge } from './wasi-ptsfs.ts';\nimport { WasiSigmask } from './wasi-sigmask.ts';\nimport { WasiSignals } from './wasi-signals.ts';\nimport { WasiStats } from './wasi-stats.ts';\nimport { MAIN_TID, ThreadExit, threadCap, WasiThreads } from './wasi-threads.ts';\nimport { AsyncifyDriver, type WasiForkState } from './wasix-fork.ts';\nimport { WasixHost } from './wasix-host.ts';\nimport { type LinkerHost, type LinkRecord, TABLE_BASE, WasixLinker } from './wasix-linker.ts';\nimport { definedFunctions, mainModule, nameFrame, sidecarNames } from './wasm-names.ts';\n\ntype ProgramOption = (\n memory: () => WebAssembly.Memory,\n instance: () => WebAssembly.Instance | undefined\n) => ProgramImports;\n\nconst TRAPPED = 134;\n\nconst PREVIEW1 = 'wasi_snapshot_preview1';\nconst WASIX = 'wasix_32v1';\nconst SLICC = 'slicc';\n\nconst SIGNAL_CALLBACK = '__wasm_signal';\n\nconst takeDefault =\n (call: (req: WasmSyscall) => unknown, pid: number) =>\n (sig: number): void => {\n call({ op: 'proc-kill', pid, sig });\n if (defaultAction(sig) === 'terminate') throw new WasiExit(128 + sig);\n };\n\nexport const takeThreadDefault =\n (call: (req: WasmSyscall) => unknown, pid: number) =>\n (sig: number): void => {\n if (defaultAction(sig) !== 'terminate') {\n call({ op: 'proc-kill', pid, sig });\n return;\n }\n try {\n call({ op: 'proc-kill-self', sig });\n } catch {}\n throw new WasiExit(128 + sig);\n };\n\nconst SLICC_FS = 'slicc_fs';\nconst SLICC_TTY = 'slicc_tty';\n\nconst RESERVED = RESERVED_NAMESPACES;\n\nexport const UNDELIVERED: Readonly<Record<string, readonly string[]>> = {\n [PREVIEW1]: ['proc_exit', 'clock_time_get'],\n [WASIX]: ['proc_exit2', 'thread_exit', 'thread_spawn_v2', 'callback_signal'],\n [SLICC]: ['sigaction_set', 'siginfo_take'],\n wasi: ['thread-spawn'],\n};\n\nconst DELIVERED = [PREVIEW1, WASIX, SLICC, SLICC_FS, SLICC_TTY];\n\nexport function wireSignals(host: WasiHost, gate: SignalGate): void {\n host.interrupted = () => gate.interrupt();\n host.raisedOnEntry = () => gate.raisedOnEntry();\n host.quietly = (fn) => gate.quiet(fn);\n host.deliverDue = () => void gate.interrupt();\n host.fds.restartable = () => gate.restartable();\n}\n\nexport function catchUpFirst(\n host: WasiHost,\n sync: { current(): void } | undefined\n): (() => void) | undefined {\n return sync && (() => host.quietly(() => sync.current()));\n}\n\nfunction deliverAll(\n imports: WebAssembly.Imports,\n host: WasiHost,\n driver: AsyncifyDriver,\n before?: () => void\n): void {\n for (const ns of DELIVERED) {\n const table = imports[ns];\n if (table) imports[ns] = delivering(ns, table, host, driver, before);\n }\n}\n\nexport function delivering(\n ns: string,\n table: WebAssembly.ModuleImports,\n host: WasiHost,\n driver: AsyncifyDriver,\n before?: () => void\n): WebAssembly.ModuleImports {\n const exempt = new Set(UNDELIVERED[ns]);\n const out: WebAssembly.ModuleImports = {};\n for (const [name, value] of Object.entries(table)) {\n if (exempt.has(name) || typeof value !== 'function') {\n out[name] = value;\n continue;\n }\n const fn = value as (...args: unknown[]) => unknown;\n out[name] = (...args: unknown[]) => {\n host.entered = false;\n if (driver.idle) {\n before?.();\n host.entered = host.interrupted?.() === true;\n host.enteredSignals = host.entered ? (host.raisedOnEntry?.() ?? -1) : 0;\n }\n return fn(...args);\n };\n }\n return out;\n}\n\nconst importsSlicc = (module: WebAssembly.Module, name: string): boolean =>\n WebAssembly.Module.imports(module).some((i) => i.module === SLICC && i.name === name);\n\nconst importsSigactionHook = (module: WebAssembly.Module): boolean =>\n importsSlicc(module, 'sigaction_set');\n\nexport function sigmaskOf(\n module: WebAssembly.Module,\n sab: SharedArrayBuffer,\n gate: Pick<SignalGate, 'deliver'>,\n threads: WasiThreads | undefined,\n process?: SharedArrayBuffer\n): WasiSigmask | undefined {\n const header = new Int32Array(sab, 0, SAB_HEADER_I32);\n if (!importsSlicc(module, 'sigmask_set')) {\n WasiSigmask.unsupported(header);\n return undefined;\n }\n if (threads) threads.blocked = () => loadBlocked(header);\n const shared = process && new Int32Array(process, 0, SAB_HEADER_I32);\n return new WasiSigmask(header, () => gate.deliver(), shared, threads?.tid ?? MAIN_TID);\n}\n\nconst noErrno = (key: string) =>\n `imports ${key}: its result cannot carry ENOSYS, and this host does not provide it`;\n\nfunction enosys(module: string, name: string, foreign: ForeignResults | undefined) {\n const type = foreign?.[module]?.[name];\n if (type === 'other') throw new Error(noErrno(`${module}.${name}`));\n if (type === 'none') return () => undefined;\n if (type === 'i64') return () => 52n;\n return () => 52;\n}\n\nfunction firstOther(foreign: ForeignResults): string | undefined {\n for (const [module, fields] of Object.entries(foreign)) {\n const name = Object.keys(fields).find((field) => fields[field] === 'other');\n if (name !== undefined) return `${module}.${name}`;\n }\n return undefined;\n}\n\ninterface ImportScope {\n extended: boolean;\n wasi: boolean;\n wasix: boolean;\n pie: boolean;\n memory: ImportedMemory | undefined;\n}\n\nfunction accepted(imp: WebAssembly.ModuleImportDescriptor, scope: ImportScope): boolean {\n const { module, name, kind } = imp;\n if (module === PREVIEW1 || module === WASIX) return true;\n if (!RESERVED.has(module) && (scope.extended || (scope.wasi && kind === 'function'))) return true;\n if (scope.pie && (module === 'GOT.mem' || module === 'GOT.func')) return true;\n if (scope.pie && module === 'env' && kind !== 'memory') return true;\n if (kind === 'memory' && scope.memory?.module === module && scope.memory.name === name)\n return true;\n return module === 'wasi' && name === 'thread-spawn' && (scope.wasix || !!scope.memory?.shared);\n}\n\nexport function unsupportedImport(\n module: WebAssembly.Module,\n memory?: ImportedMemory,\n extended = false,\n foreign: ForeignResults = {}\n): string | undefined {\n const imports = WebAssembly.Module.imports(module);\n const wasix = imports.some((i) => i.module === WASIX);\n const wasi = wasix || imports.some((i) => i.module === PREVIEW1);\n const scope = { extended, wasi, wasix, pie: dylinkInfo(module) !== undefined, memory };\n const refused = imports.find((imp) => !accepted(imp, scope));\n if (refused) {\n if (refused.kind === 'memory' || refused.module === 'wasi') {\n return `imports ${refused.module}.${refused.name}: no WASI program this host runs`;\n }\n return `imports ${refused.module}.${refused.name}: no WASI preview1 program (an Emscripten one runs with its glue)`;\n }\n const unanswerable = extended ? undefined : firstOther(foreign);\n if (unanswerable) return noErrno(unanswerable);\n if (!WebAssembly.Module.exports(module).some((e) => e.name === '_start')) {\n return 'no WASI command (it exports no _start)';\n }\n return undefined;\n}\n\nfunction linkImports(\n module: WebAssembly.Module,\n preview1: Record<string, WasiFunction>,\n wasix: Record<string, WasiFunction> | undefined,\n memory: WebAssembly.Memory | undefined,\n threads: WasiThreads | undefined,\n program: ProgramImports = {},\n foreign?: ForeignResults,\n slicc: Record<string, WasiFunction> = {},\n sliccFs: Record<string, WasiFunction> = {},\n sliccTty: Record<string, WasiFunction> = {}\n): WebAssembly.Imports {\n for (const ns of Object.keys(program)) {\n if (RESERVED.has(ns) || ns === SLICC || ns === SLICC_FS || ns === SLICC_TTY)\n throw new Error(`the imports module may not define ${ns}`);\n }\n const imports: Record<string, Record<string, WebAssembly.ImportValue>> = {\n ...program,\n [SLICC]: { ...slicc },\n [SLICC_FS]: { ...sliccFs },\n [SLICC_TTY]: { ...sliccTty },\n [PREVIEW1]: preview1,\n ...(wasix ? { [WASIX]: { ...wasix } } : {}),\n ...(threads ? { wasi: { 'thread-spawn': (arg: number) => threads.spawn(arg) } } : {}),\n };\n for (const imp of WebAssembly.Module.imports(module)) {\n const ns = (imports[imp.module] ??= {});\n if (imp.name in ns) continue;\n if (imp.kind === 'memory' && memory) ns[imp.name] = memory;\n else if (imp.module === 'wasi' && imp.name === 'thread-spawn') ns[imp.name] = () => -1;\n else if (imp.kind === 'function') ns[imp.name] = enosys(imp.module, imp.name, foreign);\n }\n return imports;\n}\n\nexport const FALLBACK_MAXIMUM_PAGES = 32768;\n\nfunction newImportedMemory(spec: ImportedMemory): WebAssembly.Memory {\n const maximum = spec.maximum ?? 65536;\n try {\n return new WebAssembly.Memory({ initial: spec.initial, maximum, shared: spec.shared });\n } catch (err) {\n if (!(err instanceof RangeError) || maximum <= FALLBACK_MAXIMUM_PAGES) throw err;\n if (spec.initial > FALLBACK_MAXIMUM_PAGES) throw err;\n return new WebAssembly.Memory({\n initial: spec.initial,\n maximum: FALLBACK_MAXIMUM_PAGES,\n shared: spec.shared,\n });\n }\n}\n\nexport function createImportedMemory(\n spec: ImportedMemory | undefined,\n copy?: Uint8Array\n): WebAssembly.Memory | undefined {\n if (!spec) return undefined;\n const memory = newImportedMemory(spec);\n if (copy) fillMemory(memory, copy);\n return memory;\n}\n\nfunction restoreExportedMemory(\n instance: WebAssembly.Instance,\n imported: WebAssembly.Memory | undefined,\n init: WasmProcessInitMsg\n): void {\n if (imported || !init.fork?.wasi) return;\n fillMemory(instance.exports.memory as WebAssembly.Memory, init.fork.memory);\n}\n\nfunction fillMemory(memory: WebAssembly.Memory, copy: Uint8Array): void {\n const pages = copy.byteLength / 65536 - memory.buffer.byteLength / 65536;\n if (pages > 0) memory.grow(pages);\n new Uint8Array(memory.buffer).set(copy);\n}\n\nfunction sizeOf(main: { memory?: WebAssembly.Memory }): () => number {\n return () => main.memory?.buffer.byteLength ?? 0;\n}\n\nfunction memoryOf(\n instance: WebAssembly.Instance,\n imported: WebAssembly.Memory | undefined\n): WebAssembly.Memory | undefined {\n return imported ?? (instance.exports.memory as WebAssembly.Memory | undefined);\n}\n\nfunction kernelOf(\n init: { sab: SharedArrayBuffer; argv0: string },\n port: SabPostLike,\n\n hooks: SignalHooks = { masks: () => null, raise: () => {} },\n memory?: () => number\n) {\n const gate = new SignalGate(\n createSyncSabTransport(init.sab, port, memory ? { memory } : {}),\n new Int32Array(init.sab, 0, SAB_HEADER_I32),\n hooks\n );\n const transport = gate.transport();\n const sys = kernelSys(transport);\n const call = (req: WasmSyscall): unknown => {\n const r: SyncFsResult = transport.call(req, Number.POSITIVE_INFINITY, req.op);\n if (!r.ok) throw new SyscallError(r.errno);\n return r.kind === 'json' ? r.json : r.kind === 'bytes' ? r.bytes : undefined;\n };\n const say = (text: string) => sys.write(2, new TextEncoder().encode(`${init.argv0}: ${text}\\n`));\n return { transport, sys, call, say, gate };\n}\n\nfunction traced<T extends object>(stats: WasiStats | undefined, tag: string, table: T): T {\n return stats ? stats.wrap(tag, table) : table;\n}\n\nfunction timedCalls(stats: WasiStats, call: (req: WasmSyscall) => unknown) {\n return (req: WasmSyscall): unknown => stats.time(`kernel.${req.op}`, () => call(req));\n}\n\nfunction report(stats: WasiStats, sys: { write(fd: number, bytes: Uint8Array): unknown }): void {\n stats.phase('run');\n try {\n sys.write(2, new TextEncoder().encode(stats.report()));\n } catch {}\n}\n\nconst START_STACK = 0;\nconst START_STACK_SIZE = 56;\n\nfunction isWasix(module: WebAssembly.Module): boolean {\n return WebAssembly.Module.imports(module).some((i) => i.module === WASIX);\n}\n\nconst MIN_THREAD_STACK = 4096;\nconst START_ARGS_SLACK = 64;\n\nexport function threadStackLow(memory: DataView, start: number): number | undefined {\n if (start < 0 || start + START_ARGS_SLACK > memory.byteLength) return undefined;\n const stack = memory.getUint32(start + START_STACK, true);\n const size = memory.getUint32(start + START_STACK_SIZE, true);\n if (size < MIN_THREAD_STACK || size > memory.byteLength || size > stack) return undefined;\n if (stack % 16 !== 0 || stack > start + START_ARGS_SLACK || stack + START_ARGS_SLACK < start) {\n return undefined;\n }\n return stack - size;\n}\n\nfunction ownStack(\n driver: AsyncifyDriver,\n instance: WebAssembly.Instance,\n linked: WebAssembly.Global | undefined,\n low: number\n): boolean {\n const own = instance.exports.__stack_pointer;\n const pointer = own instanceof WebAssembly.Global ? own : linked;\n if (!pointer) return false;\n driver.useThreadStack(pointer, low);\n return true;\n}\n\nfunction untilDone(run: () => void, driver: AsyncifyDriver): void {\n do run();\n while (driver.resume());\n}\n\nfunction threadStart(instance: WebAssembly.Instance): (tid: number, arg: number) => void {\n return instance.exports.wasi_thread_start as (tid: number, arg: number) => void;\n}\n\nfunction spawnsThreads(module: WebAssembly.Module): boolean {\n return WebAssembly.Module.imports(module).some(\n (i) =>\n (i.module === 'wasi' && i.name === 'thread-spawn') ||\n (i.module === WASIX && i.name === 'thread_spawn_v2')\n );\n}\n\nasync function instantiate(\n host: WasiHost,\n module: WebAssembly.Module,\n memory: WebAssembly.Memory | undefined,\n threads: WasiThreads | undefined,\n {\n thread = false,\n forked,\n stats,\n signals,\n program,\n foreign,\n path,\n }: {\n thread?: boolean;\n forked?: Pick<WasiForkState, 'tls' | 'modules'>;\n stats?: WasiStats;\n signals?: WasiSignals;\n program?: ProgramOption;\n foreign?: ForeignResults | undefined;\n path?: string | undefined;\n } = {}\n): Promise<{\n instance: WebAssembly.Instance;\n driver: AsyncifyDriver;\n linkedStack: WebAssembly.Global | undefined;\n}> {\n const driver = new AsyncifyDriver(host.mem);\n const wasixHost = WebAssembly.Module.imports(module).some((i) => i.module === WASIX)\n ? new WasixHost(host, driver, module)\n : undefined;\n if (wasixHost) {\n wasixHost.threads = threads;\n wasixHost.signals = signals;\n }\n let preview1: Record<string, WasiFunction> = traced(stats, 'wasi', {\n ...host.imports(),\n ...wasixHost?.preview1(),\n });\n let wasix = wasixHost && traced(stats, 'wasix', wasixHost.imports());\n\n const info = dylinkInfo(module);\n const sync: LinkSync | undefined =\n info && memory\n ? new LinkSync(\n new WasixLinker(\n memory,\n info,\n linkerHost(host, (): WebAssembly.Imports => imports),\n thread\n ),\n (req) => host.o.kernel.call(req),\n threads\n )\n : undefined;\n if (sync) {\n ({ preview1, wasix } = sync.guard(preview1, wasix));\n if (wasixHost) {\n wasixHost.linker = sync.linker;\n wasixHost.types = sync.linker.types;\n }\n\n if (threads) {\n sync.linker.cache = threads.received;\n threads.modules = () => sync.linker.compiled();\n }\n }\n let instance: WebAssembly.Instance | undefined;\n const extra = program?.(\n () => memory ?? (instance?.exports.memory as WebAssembly.Memory),\n () => instance\n );\n const slicc = traced(stats, 'slicc', host.sliccImports());\n const sliccFs = traced(stats, 'slicc_fs', host.sliccFsImports());\n const sliccTty = traced(stats, 'slicc_tty', host.sliccTtyImports());\n const hostImports = linkImports(\n module,\n preview1,\n wasix,\n memory,\n threads,\n extra,\n foreign,\n slicc,\n sliccFs,\n sliccTty\n );\n deliverAll(hostImports, host, driver, catchUpFirst(host, sync));\n const imports: WebAssembly.Imports = sync\n ? merge(hostImports, sync.linker.mainImports(module))\n : hostImports;\n instance = await WebAssembly.instantiate(module, imports);\n stats?.phase('instantiate');\n const exports = instance.exports as { memory?: WebAssembly.Memory };\n host.mem.bind(memory ?? (exports.memory as WebAssembly.Memory));\n if (wasixHost) {\n const table = sync?.linker.table ?? exportedTable(instance);\n wasixHost.table = table;\n if (path !== undefined) {\n const read = linkerHost(host, () => ({})).read;\n wasixHost.types.register(() => read(path), instance, table, sync ? TABLE_BASE : 0);\n }\n }\n if (sync) bindLinker(host, sync, instance, { thread, forked, path });\n if (sync && !thread) driver.useStack(sync.linker.stackPointer, sync.linker.stackLow);\n return { instance, driver, linkedStack: sync?.linker.stackPointer };\n}\n\nfunction bindLinker(\n host: WasiHost,\n sync: LinkSync,\n instance: WebAssembly.Instance,\n at: {\n thread: boolean;\n forked: Pick<WasiForkState, 'tls' | 'modules'> | undefined;\n path: string | undefined;\n }\n): void {\n sync.linker.bindMain(instance, !at.thread && !at.forked);\n if (at.path !== undefined) sync.linker.mainPath = at.path;\n host.linkedTls = () => sync.linker.tlsBases();\n host.linkedModules = () => sync.linker.compiled();\n if (at.forked) {\n sync.linker.forkedTls = new Map(at.forked.tls ?? []);\n sync.linker.cache = at.forked.modules;\n }\n if (at.thread || at.forked) sync.catchUp();\n sync.linker.bindMainGot();\n}\n\nfunction procTree(call: (req: WasmSyscall) => unknown, pid: number): ProcTree {\n return new ProcTree(\n {\n procList: () => call({ op: 'proc-list' }) as ProcessListing,\n mountList: () => call({ op: 'mount-list' }) as MountLine[],\n },\n pid\n );\n}\n\nfunction exportedTable(instance: WebAssembly.Instance): WebAssembly.Table | undefined {\n const table = instance.exports.__indirect_function_table;\n return table instanceof WebAssembly.Table ? table : undefined;\n}\n\nfunction linkerHost(host: WasiHost, imports: () => WebAssembly.Imports): LinkerHost {\n return {\n read: (path) => {\n try {\n return host.o.fs.readFile(path) as Uint8Array<ArrayBuffer>;\n } catch {\n return undefined;\n }\n },\n hostImports: () => {\n const { env: _env, 'GOT.mem': _mem, 'GOT.func': _func, ...rest } = imports();\n return rest;\n },\n real: (path) => physicalPath(host.o.fs, path),\n };\n}\n\nfunction merge(\n base: WebAssembly.Imports,\n extra: Record<string, Record<string, WebAssembly.ImportValue>>\n): WebAssembly.Imports {\n const out: WebAssembly.Imports = { ...base };\n for (const [ns, values] of Object.entries(extra)) out[ns] = { ...base[ns], ...values };\n return out;\n}\n\nexport class LinkSync {\n private count = 0;\n private gen = 0;\n\n readonly linker: WasixLinker;\n private readonly call: (req: WasmSyscall) => unknown;\n private readonly ids: Int32Array | undefined;\n private readonly owner: number;\n constructor(\n linker: WasixLinker,\n call: (req: WasmSyscall) => unknown,\n threads: Pick<WasiThreads, 'ids' | 'tid'> | undefined\n ) {\n this.linker = linker;\n this.call = call;\n this.ids = threads?.ids;\n this.owner = threads?.tid ?? 0;\n linker.publisher = (record) => this.publish(record);\n linker.indices = {\n reserve: (floor, size) => this.call({ op: 'dl-reserve', floor, size }) as number,\n load: (floor, size) =>\n this.call({ op: 'dl-load-reserve', floor, size }) as { base: number; handle: number },\n lock: () => {\n this.call({ op: 'dl-lock', owner: this.owner });\n try {\n this.catchUp();\n } catch (e) {\n this.call({ op: 'dl-unlock', owner: this.owner });\n throw e;\n }\n },\n unlock: () => this.call({ op: 'dl-unlock', owner: this.owner }),\n allocate: (floor) => {\n const index = this.call({ op: 'dl-closure', floor }) as number;\n this.catchUp();\n this.bump();\n return index;\n },\n free: (index) => {\n this.call({ op: 'dl-closure-free', index });\n this.bump();\n },\n };\n }\n\n private bump(): void {\n if (this.ids) Atomics.add(this.ids, DL_GEN, 1);\n }\n\n private publish(record: LinkRecord): void {\n const since = this.call({ op: 'dl-log', append: record, from: this.count }) as LinkRecord[];\n\n for (const r of since.slice(0, -1)) this.linker.replay(r);\n this.count += since.length;\n this.bump();\n this.catchUp();\n }\n\n current(): void {\n if (this.ids && Atomics.load(this.ids, DL_GEN) !== this.gen) this.catchUp();\n }\n\n catchUp(): void {\n for (;;) {\n const gen = this.ids ? Atomics.load(this.ids, DL_GEN) : 0;\n const since = this.call({ op: 'dl-log', from: this.count }) as LinkRecord[];\n for (const r of since) this.linker.replay(r);\n this.count += since.length;\n if (!this.ids || Atomics.load(this.ids, DL_GEN) === gen) {\n this.gen = gen;\n return;\n }\n }\n }\n\n guard(\n preview1: Record<string, WasiFunction>,\n wasix: Record<string, WasiFunction> | undefined\n ): { preview1: Record<string, WasiFunction>; wasix: Record<string, WasiFunction> | undefined } {\n const ids = this.ids;\n if (!ids) return { preview1, wasix };\n const wrap = (table: Record<string, WasiFunction>) =>\n Object.fromEntries(\n Object.entries(table).map(([name, fn]) => [\n name,\n ((...args: never[]) => {\n this.current();\n const result = fn(...args);\n this.current();\n return result;\n }) as WasiFunction,\n ])\n );\n return { preview1: wrap(preview1), wasix: wasix && wrap(wasix) };\n }\n}\n\nconst DL_GEN = 3;\n\nfunction descriptors(\n init: WasmProcessInitMsg,\n fork: WasiForkState | undefined,\n threads: WasiThreads | undefined\n): Pick<WasiHostOptions, 'shared' | 'forked' | 'inherited' | 'preopenRoot'> {\n if (fork?.shared && threads) return { shared: threads.ids };\n if (fork) return { forked: { fds: fork.fds, cloexec: fork.cloexec } };\n return { inherited: init.fds ?? [], ...(init.program.preopenRoot ? { preopenRoot: true } : {}) };\n}\n\nfunction ownersOf(init: { owners?: boolean; links?: boolean; changes?: SharedArrayBuffer }): {\n owners?: boolean;\n links?: boolean;\n changes?: SharedArrayBuffer;\n} {\n return {\n ...(init.owners ? { owners: true } : {}),\n ...(init.links ? { links: true } : {}),\n ...(init.changes ? { changes: init.changes } : {}),\n };\n}\n\nfunction heldOf(\n init: { held?: HeldCwdInit; cwd: string },\n call: (req: WasmSyscall) => unknown\n): { held?: HeldCwd } {\n const { held } = init;\n if (!held) return {};\n const ask = () => call({ op: 'cwd-check' }) as CwdAnswer;\n return { held: new HeldCwd(held.sab, held.slot, ask, { ...held, path: init.cwd }) };\n}\n\nexport async function runWasiProcess(init: WasmProcessInitMsg, port: SabPostLike): Promise<number> {\n captureBacktraces(init.env);\n\n const signals = new WasiSignals(\n takeDefault((req) => call(req), init.pid),\n (code) => {\n throw new WasiExit(code);\n }\n );\n const main: { memory?: WebAssembly.Memory } = {};\n const {\n transport,\n sys,\n call: kernelCall,\n say,\n gate,\n } = kernelOf(init, port, signals, sizeOf(main));\n const id = identify(transport, init);\n\n const stats = init.env.SLICC_WASI_STATS === '1' ? new WasiStats() : undefined;\n const call = stats ? timedCalls(stats, kernelCall) : kernelCall;\n const { module } = init.program;\n const refused = unsupportedImport(\n module,\n init.program.memory,\n init.program.imports !== undefined,\n init.program.foreign\n );\n if (refused) {\n say(refused);\n return 126;\n }\n const fork = init.fork?.wasi;\n const memory = createImportedMemory(init.program.memory, fork ? init.fork?.memory : undefined);\n const threads =\n memory?.buffer instanceof SharedArrayBuffer && spawnsThreads(module)\n ? new WasiThreads(port, memory, threadCap(init.env), MAIN_TID)\n : undefined;\n const host = new WasiHost({\n args: [init.argv0, ...init.args],\n env: init.env,\n cwd: fork?.cwd ?? init.cwd,\n pid: id.pid,\n ppid: id.ppid,\n parent: () => identify(transport, init).ppid,\n kernel: { sys: traced(stats, 'kernel', sys), call },\n fs: ptsBridge(\n procfsBridge(\n cachingBridge(\n traced(\n stats,\n 'fs',\n createSyncFsSabBridge(transport, { ...ownersOf(init), direct: true })\n ),\n undefined,\n threads?.ids\n ),\n procTree(call, id.pid)\n ),\n call\n ),\n ...descriptors(init, fork, threads),\n ...heldOf(init, call),\n ...(threads ? { credGen: threads.ids } : {}),\n });\n host.sigmask = sigmaskOf(module, init.sab, gate, threads);\n if (threads) {\n threads.beforeSpawn = () => {\n if (!host.fds.isShared) host.fds.share(threads.ids, false);\n };\n }\n const program = await programImports(init.program, host, transport, MAIN_TID);\n const { instance, driver, linkedStack } = await instantiate(host, module, memory, threads, {\n ...(fork ? { forked: fork } : {}),\n stats,\n signals,\n foreign: init.program.foreign,\n path: init.program.path,\n ...(program ? { program } : {}),\n });\n restoreExportedMemory(instance, memory, init);\n main.memory = memoryOf(instance, memory);\n publishMemory(init.sab, sizeOf(main)());\n port.postMessage({ type: WASM_PROCESS_READY });\n signals.bind(instance.exports);\n if (importsSigactionHook(module)) signals.useHook();\n if (fork?.signals) signals.restore(fork.signals);\n host.signals = signals;\n wireSignals(host, gate);\n host.onRaise = (sig) => signals.raised(sig);\n host.muted = (fd, data) => signals.muted(fd, data);\n const exports = instance.exports as { _start: () => void };\n driver.bind(instance.exports);\n const entry = fork?.entry;\n if (entry) {\n ownStack(driver, instance, linkedStack, entry.low);\n host.threadEntry = entry;\n }\n const run = entry ? () => threadStart(instance)(entry.tid, entry.arg) : () => exports._start();\n try {\n if (fork) driver.startChild(fork);\n\n untilDone(run, driver);\n return 0;\n } catch (e) {\n if (e instanceof WasiExit) return e.code;\n if (!(e instanceof WebAssembly.RuntimeError)) throw e;\n try {\n say(trapReport(e, init, host, ''));\n } catch {\n throw new Error(`${init.argv0}: wasm trap: ${e.message}`);\n }\n return TRAPPED;\n } finally {\n host.flushAll();\n if (stats) report(stats, sys);\n }\n}\n\nconst BACKTRACE_FRAMES = 40;\n\nexport function trapMessage(\n e: WebAssembly.RuntimeError,\n env: Readonly<Record<string, string>>,\n where = '',\n name?: (index: number) => string | undefined\n): string {\n const head = `wasm trap${where}: ${e.message}`;\n if (env.SLICC_WASM_BACKTRACE !== '1') return head;\n const lines = (e.stack ?? '').split('\\n');\n\n const main = name && mainModule(lines);\n\n const frames = lines\n .filter((line) => /^\\s+at .*wasm:\\/\\/wasm\\//.test(line))\n .slice(0, BACKTRACE_FRAMES)\n .map((line) => (name && main ? nameFrame(line, main, name) : line));\n return frames.length ? `${head}\\n${frames.join('\\n')}` : head;\n}\n\nfunction trapReport(\n e: WebAssembly.RuntimeError,\n init: { env: Readonly<Record<string, string>>; program: WasmProgram; argv0: string },\n host: WasiHost,\n where: string\n): string {\n const warned: string[] = [];\n const message = trapMessage(e, init.env, where, programNames(host, init.program, warned));\n return [...warned, message].join(`\\n${init.argv0}: `);\n}\n\nfunction programNames(\n host: WasiHost,\n program: WasmProgram,\n warned: string[]\n): ((index: number) => string | undefined) | undefined {\n const path = program.names;\n if (path === undefined) return undefined;\n const read = (p: string) => host.o.fs.readFile(p);\n const imported = WebAssembly.Module.imports(program.module).filter((i) => i.kind === 'function');\n return sidecarNames(read, path, {\n functions: () => imported.length + definedFunctions(read(program.path as string)),\n warn: (line) => warned.push(line),\n });\n}\n\nasync function programImports(\n program: WasmProgram,\n host: WasiHost,\n transport: { call(req: WasmSyscall, timeoutMs: number, label: string): SyncFsResult },\n tid: number\n): Promise<ProgramOption | undefined> {\n if (program.imports === undefined) return undefined;\n const create = await loadImports(program.imports);\n const raw: Raw = (req) => transport.call(req as WasmSyscall, Number.POSITIVE_INFINITY, req.op);\n return (memory, instance) => create(importsContext({ host, raw, tid, memory, instance }));\n}\n\nexport function captureBacktraces(env: Readonly<Record<string, string>>): void {\n if (env.SLICC_WASM_BACKTRACE !== '1') return;\n\n const v8 = Error as ErrorConstructor & { stackTraceLimit?: number };\n v8.stackTraceLimit = Math.max(v8.stackTraceLimit ?? 0, BACKTRACE_FRAMES + 20);\n}\n\nexport async function runWasiThread(init: WasmThreadInitMsg, port: SabPostLike): Promise<void> {\n captureBacktraces(init.env);\n const { thread } = init;\n const { transport, sys, call, say, gate } = kernelOf(init, port, {\n masks: () => null,\n raise: (sig) => signals.raise(sig),\n });\n const signals = new WasiSignals(takeThreadDefault(call, init.pid));\n const threads = new WasiThreads(port, thread.memory, threadCap(init.env), thread.tid, thread.ids);\n threads.received = thread.modules;\n const id = identify(transport, init);\n const host = new WasiHost({\n args: [init.argv0, ...init.args],\n env: init.env,\n cwd: init.cwd,\n pid: id.pid,\n ppid: id.ppid,\n parent: () => identify(transport, init).ppid,\n kernel: { sys, call },\n fs: ptsBridge(\n procfsBridge(\n cachingBridge(\n createSyncFsSabBridge(transport, { ...ownersOf(init), direct: true }),\n undefined,\n threads.ids\n ),\n procTree(call, id.pid)\n ),\n call\n ),\n shared: threads.ids,\n ...heldOf(init, call),\n });\n host.tid = thread.tid;\n host.sigmask = sigmaskOf(init.program.module, init.sab, gate, threads, init.signals);\n\n const program = await programImports(init.program, host, transport, thread.tid);\n const { module } = init.program;\n const { memory } = thread;\n const { instance, driver, linkedStack } = await instantiate(host, module, memory, threads, {\n thread: true,\n foreign: init.program.foreign,\n path: init.program.path,\n ...(program ? { program } : {}),\n });\n signals.bind(instance.exports);\n signals.register(SIGNAL_CALLBACK);\n wireSignals(host, gate);\n host.onRaise = (sig) => signals.raised(sig);\n const low = isWasix(module) ? threadStackLow(host.mem.view(), thread.arg) : undefined;\n if (low !== undefined && ownStack(driver, instance, linkedStack, low)) {\n driver.bind(instance.exports);\n host.threadEntry = { tid: thread.tid, arg: thread.arg, low };\n }\n const start = threadStart(instance);\n try {\n untilDone(() => start(thread.tid, thread.arg), driver);\n threads.exited();\n } catch (e) {\n if (e instanceof ThreadExit) {\n threads.exited();\n return;\n }\n if (e instanceof WasiExit) {\n port.postMessage({ type: WASM_PROCESS_EXIT, code: e.code });\n return;\n }\n if (e instanceof WebAssembly.RuntimeError) {\n try {\n say(trapReport(e, init, host, ` in thread ${thread.tid}`));\n } catch {}\n port.postMessage({ type: WASM_PROCESS_EXIT, code: TRAPPED });\n return;\n }\n throw e;\n }\n}\n", "import { createRequire, enableCompileCache, flushCompileCache } from 'node:module';\nimport { parentPort, workerData } from 'node:worker_threads';\nimport {\n glueUrl,\n nodeAsyncContext,\n nodeLockdown,\n nodeMemory,\n nodeProcess,\n ownCache,\n workerShaped,\n} from './node-lockdown.ts';\nimport { runJsProcess, runJsThread } from './process/js/js-runtime.ts';\nimport { processEntry } from './process/process-entry.ts';\nimport { runWasmProcess } from './process/process-runtime.ts';\nimport * as wasiRuntime from './process/wasi/wasi-runtime.ts';\n\nconst scope = globalThis as { require?: unknown; __filename?: string; __dirname?: string };\nscope.require ??= createRequire(import.meta.url);\nscope.__filename ??= new URL(import.meta.url).pathname;\nscope.__dirname ??= new URL('.', import.meta.url).pathname;\n\nconst cacheDir = (workerData as { compileCache?: unknown } | null)?.compileCache;\nconst cached = typeof cacheDir === 'string' && ownCache(cacheDir, enableCompileCache(cacheDir));\nconst imported = cached ? () => flushCompileCache() : undefined;\n\nconst port = parentPort as NonNullable<typeof parentPort>;\nconst post = {\n postMessage: (message: unknown, transfer?: Transferable[]) =>\n port.postMessage(message, transfer as never),\n};\nconst strayScope = nodeProcess ? { process: nodeProcess } : {};\nconst onMessage = processEntry(\n post,\n (init, at) => {\n workerShaped(globalThis, glueUrl(init.program?.path));\n return runWasmProcess(init, at);\n },\n async () => wasiRuntime,\n async () => ({\n runJsProcess: (init, at) =>\n runJsProcess(init, at, {\n lockdown: () => nodeLockdown(),\n scope: strayScope,\n memory: nodeMemory,\n asyncContext: nodeAsyncContext,\n imported,\n }),\n runJsThread: (init, at) =>\n runJsThread(init, at, {\n lockdown: () => nodeLockdown(),\n scope: strayScope,\n memory: nodeMemory,\n asyncContext: nodeAsyncContext,\n imported,\n }),\n }),\n () => nodeLockdown()\n);\nport.on('message', onMessage);\n", "import { AsyncLocalStorage } from 'node:async_hooks';\nimport { isBuiltin, registerHooks } from 'node:module';\nimport { resolve, sep } from 'node:path';\nimport { getHeapStatistics } from 'node:v8';\nimport { hide, lockdown, vacate } from './process/js/lockdown.ts';\n\nexport { vacate };\n\nexport const NODE_GLOBALS: readonly string[] = ['localStorage', 'sessionStorage'];\n\nexport const NODE_SLOTS: readonly string[] = [\n 'require',\n 'module',\n 'exports',\n '__filename',\n '__dirname',\n 'process',\n 'global',\n 'setImmediate',\n 'clearImmediate',\n];\n\nexport function zeroedBuffers(buffer: typeof Buffer): void {\n const alloc = buffer.alloc.bind(buffer);\n const fixed = (value: unknown) => ({ value, writable: false, configurable: false });\n Object.defineProperties(buffer, {\n allocUnsafe: fixed((size: number) => alloc(size)),\n allocUnsafeSlow: fixed((size: number) => alloc(size)),\n poolSize: fixed(0),\n });\n}\n\nfunction refused(specifier: string): Error {\n return Object.assign(new Error(`slicc-kernel: a JS program cannot import ${specifier}`), {\n code: 'ERR_ACCESS_DENIED',\n });\n}\n\nconst BASE64_MODULE = 'data:text/javascript;base64,';\nconst fromBase64 = Buffer.from.bind(Buffer);\nconst toText = Function.prototype.call.bind(Buffer.prototype.toString) as (\n bytes: Buffer,\n encoding: 'utf8'\n) => string;\nconst PLAIN_BASE64 = /^[A-Za-z0-9+/]+={0,2}$/;\n\nexport function refuseModules(): void {\n registerHooks({\n resolve(specifier, context, next) {\n if (isBuiltin(specifier)) throw refused(specifier);\n const resolved = next(specifier, context);\n if (!resolved.url.startsWith('data:')) throw refused(resolved.url);\n return resolved;\n },\n load(url, context, next) {\n const payload = url.startsWith(BASE64_MODULE) ? url.slice(BASE64_MODULE.length) : '';\n const typed = Object.keys(context.importAttributes ?? {}).length > 0;\n if (typed || payload.length % 4 !== 0 || !PLAIN_BASE64.test(payload))\n return next(url, context);\n const source = toText(fromBase64(payload, 'base64'), 'utf8');\n return { format: 'module', source, shortCircuit: true };\n },\n });\n}\n\nconst locked = new WeakSet<object>();\n\nconst nodeProcess =\n typeof globalThis.process === 'object' && globalThis.process !== null\n ? globalThis.process\n : undefined;\n\nexport { nodeProcess };\n\nconst heapStatistics = getHeapStatistics;\nconst memoryUsage = process.memoryUsage.bind(process);\n\nexport function nodeMemory(): {\n heapUsed: number;\n heapTotal: number;\n heapLimit: number;\n external: number;\n arrayBuffers: number;\n} {\n const heap = heapStatistics();\n const usage = memoryUsage();\n return {\n heapUsed: heap.used_heap_size,\n heapTotal: heap.total_heap_size,\n heapLimit: heap.heap_size_limit,\n external: heap.external_memory,\n arrayBuffers: usage.arrayBuffers,\n };\n}\n\nexport function nodeLockdown(scope: object = globalThis): void {\n if (locked.has(scope)) return;\n locked.add(scope);\n zeroedBuffers(Buffer);\n lockdown(scope);\n hide(scope, NODE_GLOBALS);\n vacate(scope, NODE_SLOTS);\n refuseModules();\n}\n\nclass WorkerGlobalScope {}\n\nexport function glueUrl(path: string | undefined): string {\n const at = path?.startsWith('/') ? path : '/';\n return `file://${at.split('/').map(encodeURIComponent).join('/')}`;\n}\n\nexport function workerShaped(scope: object, href: string): void {\n const slot = (value: unknown) => ({\n value,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n Object.defineProperties(scope, {\n WorkerGlobalScope: slot(WorkerGlobalScope),\n self: slot(scope),\n location: slot(Object.freeze({ href })),\n });\n}\n\nexport function ownCache(dir: string, result: { directory?: string }): boolean {\n const active = result.directory;\n if (active === undefined) return false;\n if (!`${resolve(active)}${sep}`.startsWith(`${resolve(dir)}${sep}`)) {\n throw new Error(\n `slicc-kernel: compileCache ${dir} was asked for, but this worker already caches in ${active} (a host preload enabled it): refusing to run programs`\n );\n }\n return true;\n}\n\nconst Storage = AsyncLocalStorage;\nconst apply = Reflect.apply;\nconst freeze = Object.freeze;\nconst blank = Object.create;\n\nexport function nodeAsyncContext(): {\n run<R>(store: unknown, fn: (...args: unknown[]) => R, ...args: unknown[]): R;\n getStore(): unknown;\n enterWith(store: unknown): void;\n} {\n const storage = new Storage<unknown>();\n const run = storage.run.bind(storage);\n const getStore = storage.getStore.bind(storage);\n const enterWith = storage.enterWith.bind(storage);\n const api = blank(null);\n api.run = freeze(<R>(store: unknown, fn: (...args: unknown[]) => R, ...args: unknown[]): R => {\n if (typeof fn !== 'function') throw new TypeError('asyncContext.run needs a function');\n return run(store, () => apply(fn, undefined, args));\n });\n api.getStore = freeze((): unknown => getStore());\n api.enterWith = freeze((store: unknown): void => enterWith(store));\n return freeze(api);\n}\n", "import { useLocalClock } from '../kernel/cpu-clock.ts';\nimport {\n JS_THREAD_EXIT,\n JS_THREAD_INIT,\n type JsProcessInitMsg,\n type JsThreadExitMsg,\n type JsThreadInitMsg,\n type ProcessInitMsg,\n WASM_PROCESS_ERROR,\n WASM_PROCESS_EXIT,\n WASM_PROCESS_INIT,\n WASM_THREAD_INIT,\n type WasmProcessErrorMsg,\n type WasmProcessExitMsg,\n type WasmProcessInitMsg,\n type WasmThreadInitMsg,\n} from '../kernel/protocol.ts';\nimport type { SabPostLike } from '../realm/sync-sab-bridge.ts';\nimport { runWasmProcess } from './process-runtime.ts';\n\nexport type ProcessRunner = (init: WasmProcessInitMsg, port: SabPostLike) => Promise<number>;\n\nexport interface WasiRuntime {\n runWasiProcess(init: WasmProcessInitMsg, port: SabPostLike): Promise<number>;\n runWasiThread(init: WasmThreadInitMsg, port: SabPostLike): Promise<void>;\n}\n\nexport type WasiLoader = () => Promise<WasiRuntime>;\n\nexport interface JsRuntime {\n runJsProcess(init: JsProcessInitMsg, port: SabPostLike): Promise<number>;\n runJsThread?(init: JsThreadInitMsg, port: SabPostLike): Promise<number>;\n}\n\nexport type JsLoader = () => Promise<JsRuntime>;\n\nconst loadWasi: WasiLoader = () => import('./wasi/wasi-runtime.ts');\n\nconst loadJs: JsLoader = () => import('./js/js-runtime.ts');\n\nconst NOT_RUNNABLE = 126;\n\nfunction started(\n init: ProcessInitMsg,\n port: SabPostLike,\n run: ProcessRunner,\n wasi: WasiLoader,\n js: JsLoader\n): Promise<number> {\n if (init.program?.abi === 'js') {\n const jsInit = init as JsProcessInitMsg;\n return js().then((m) => m.runJsProcess(jsInit, port));\n }\n const wasmInit = init as WasmProcessInitMsg;\n if (wasmInit.program?.abi === 'wasi') return wasi().then((m) => m.runWasiProcess(wasmInit, port));\n return run(wasmInit, port);\n}\n\nexport function processEntry(\n port: SabPostLike,\n run: ProcessRunner = runWasmProcess,\n wasi: WasiLoader = loadWasi,\n js: JsLoader = loadJs,\n seal: () => void = () => {}\n): (data: unknown) => void {\n const failed = (err: unknown, code?: number): void =>\n port.postMessage({\n type: WASM_PROCESS_ERROR,\n message: err instanceof Error ? (err.stack ?? err.message) : String(err),\n ...(code === undefined ? {} : { code }),\n } satisfies WasmProcessErrorMsg);\n let refused: { error: unknown } | null | undefined;\n const sealOnce = (): { error: unknown } | null => {\n if (refused === undefined) {\n try {\n seal();\n refused = null;\n } catch (error) {\n refused = { error };\n }\n }\n return refused;\n };\n return (data) => {\n const type = (data as { type?: string } | undefined)?.type;\n if (type !== WASM_THREAD_INIT && type !== WASM_PROCESS_INIT && type !== JS_THREAD_INIT) return;\n const refusal = sealOnce();\n if (type === JS_THREAD_INIT) {\n if (refusal) return failed(refusal.error);\n js()\n .then((m) => {\n if (!m.runJsThread) throw new Error('this process worker runs no JS threads');\n return m.runJsThread(data as JsThreadInitMsg, port);\n })\n .then(\n (code) => port.postMessage({ type: JS_THREAD_EXIT, code } satisfies JsThreadExitMsg),\n failed\n );\n return;\n }\n const init = data as { sab?: SharedArrayBuffer; program?: { abi?: string } } | undefined;\n if (type === WASM_THREAD_INIT || init?.program?.abi !== 'js') useLocalClock(init?.sab);\n if (type === WASM_THREAD_INIT) {\n if (refusal) return failed(refusal.error);\n wasi()\n .then((m) => m.runWasiThread(data as WasmThreadInitMsg, port))\n .catch(failed);\n return;\n }\n if (refusal) return failed(refusal.error, NOT_RUNNABLE);\n started(data as ProcessInitMsg, port, run, wasi, js).then(\n (code) => port.postMessage({ type: WASM_PROCESS_EXIT, code } satisfies WasmProcessExitMsg),\n failed\n );\n };\n}\n"],
5
- "mappings": "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",
5
+ "mappings": ";;;;;;;;;;;;;;;;AAmCA,SAAS,MAAM,QAA0B;AACvC,QAAM,MAAgB,CAAC;AACvB,WAAS,KAAoB,QAAQ,MAAM,OAAO,OAAO,aAAa;AACpE,QAAI,KAAK,EAAE;AACX,SAAK,OAAO,eAAe,EAAE;AAAA,EAC/B;AACA,SAAO;AACT;AAEO,SAAS,KAAK,QAAgB,OAAgC;AACnE,aAAWA,SAAQ,OAAO;AACxB,UAAM,UAAU,MAAM,MAAM;AAC5B,eAAW,UAAU,QAAS,SAAQ,eAAe,QAAQA,KAAI;AACjE,UAAM,OAAO,QAAQ,MAAM,CAAC,EAAE,KAAK,CAAC,WAAW,OAAO,OAAO,QAAQA,KAAI,CAAC;AAC1E,UAAM,UAAU,QAAQ,eAAe,QAAQA,OAAM;AAAA,MACnD,OAAO;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,QAAS,CAAC,WAAW,QAAQ,IAAI,QAAQA,KAAI,MAAM,QAAY;AACjE,YAAM,IAAI,MAAM,iCAAiCA,KAAI,oBAAoB;AAAA,IAC3E;AAAA,EACF;AACF;AAEO,SAAS,OAAO,QAAgB,OAAgC;AACrE,aAAWA,SAAQ,OAAO;AACxB,UAAM,UAAU,MAAM,MAAM;AAC5B,eAAW,UAAU,QAAS,SAAQ,eAAe,QAAQA,KAAI;AACjE,UAAM,OAAO,QAAQ,MAAM,CAAC,EAAE,KAAK,CAAC,WAAW,OAAO,OAAO,QAAQA,KAAI,CAAC;AAC1E,UAAMC,UAAS,QAAQ,eAAe,QAAQD,OAAM;AAAA,MAClD,OAAO;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,QAAQ,CAACC,WAAU,QAAQ,IAAI,QAAQD,KAAI,MAAM,QAAW;AAC9D,YAAM,IAAI,MAAM,iCAAiCA,KAAI,oBAAoB;AAAA,IAC3E;AAAA,EACF;AACF;AAEO,SAAS,SAASE,SAAgB,YAAkB;AACzD,OAAKA,QAAO,eAAe;AAC3B,SAAOA,QAAO,UAAU;AACxB,MAAI,UAAUA,QAAO;AACnB,YAAQ,eAAeA,QAAO,QAAQ;AAAA,MACpC,OAAOA;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AACA,QAAM,YAAaA,OAAkC;AACrD,MAAI,aAAa,OAAO,cAAc,SAAU,MAAK,WAAW,iBAAiB;AACnF;AA3FA,IAAa,iBAgBA,mBAUA;AA1Bb;AAAA;AAAA;AAAO,IAAM,kBAAqC;AAAA,MAChD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEO,IAAM,oBAAuC;AAAA,MAClD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEO,IAAM,aAAgC;AAAA,MAC3C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA;AAAA;;;ACjCA,IAOa,mBACA,mBACA,oBACA,oBACA,mBACA,kBACA,kBACA,kBACA,sBACA,iBACA,gBACA,gBAGA,qBACA;AAtBb;AAAA;AAAA;AAOO,IAAM,oBAAoB;AAC1B,IAAM,oBAAoB;AAC1B,IAAM,qBAAqB;AAC3B,IAAM,qBAAqB;AAC3B,IAAM,oBAAoB;AAC1B,IAAM,mBAAmB;AACzB,IAAM,mBAAmB;AACzB,IAAM,mBAAmB;AACzB,IAAM,uBAAuB;AAC7B,IAAM,kBAAkB;AACxB,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AAGvB,IAAM,sBAAsB;AAC5B,IAAM,oBAAoB;AAAA;AAAA;;;AC0D1B,SAAS,YAAYC,OAAkC;AAC5D,MAAI,CAACA,MAAM,QAAO,EAAE;AACpB,QAAMC,QAAOD,MAAK,WAAW,GAAG,IAAIA,MAAK,MAAM,CAAC,IAAIA;AACpD,MAAIC,UAAS,YAAa,QAAO,EAAE;AACnC,MAAIA,UAAS,aAAc,QAAO,EAAE;AACpC,MAAIA,UAAS,WAAY,QAAO,EAAE;AAClC,SAAQ,EAA6BA,KAAI,KAAK,EAAE;AAClD;AAqDO,SAAS,YAAY,KAAiC;AAC3D,SAAO,OAAO,UAAU,GAAG,KAAK,OAAO,KAAK,OAAO,KAAK,MAAM;AAChE;AA9IA,IAAa,GAyFA,UAWA,QAYA,QACA,SACA,uBACA,QACA,OACA,UACA,WACA,kBAEA,2BAEA,SAEA,SACA,iBAEA,MAQA;AAxIb;AAAA;AAAA;AAAO,IAAM,IAAI;AAAA,MACf,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,WAAW;AAAA,MACX,cAAc;AAAA,MACd,aAAa;AAAA,MACb,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO;AAAA,MACP,aAAa;AAAA,MACb,aAAa;AAAA,MACb,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,MACb,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,aAAa;AAAA,MACb,SAAS;AAAA,MACT,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,MACV,WAAW;AAAA,MACX,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,YAAY;AAAA,IACd;AAWO,IAAM,WAAW;AAAA,MACtB,SAAS;AAAA,MACT,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,WAAW;AAAA,MACX,cAAc;AAAA,MACd,cAAc;AAAA,MACd,eAAe;AAAA,MACf,eAAe;AAAA,IACjB;AAEO,IAAM,SAAS;AAAA,MACpB,aAAa,MAAM;AAAA,MACnB,SAAS,MAAM;AAAA,MACf,SAAS,MAAM;AAAA,MACf,qBAAqB,MAAM;AAAA,MAC3B,SAAS,MAAM;AAAA,MACf,SAAS,MAAM;AAAA,MACf,UAAU,MAAM;AAAA,MAEhB,MAAM,MAAM,OAAO;AAAA,IACrB;AAEO,IAAM,SAAS,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,EAAE;AAC3D,IAAM,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG;AACvE,IAAM,wBAAwB;AAC9B,IAAM,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE;AACxC,IAAM,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,iBAAiB,GAAG,gBAAgB,EAAE;AACjF,IAAM,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,EAAE;AAC9D,IAAM,YAAY,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,EAAE;AACtD,IAAM,mBAAmB;AAEzB,IAAM,4BAA4B;AAElC,IAAM,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE;AAEtC,IAAM,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE;AAC/B,IAAM,kBAAkB;AAExB,IAAM,OAAO;AAAA,MAClB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,OAAO;AAAA,IACT;AAEO,IAAM,uBAAyD,OAAO;AAAA,MAC3E,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC;AAAA,IAC1E;AAAA;AAAA;;;AC7HO,SAAS,WAAW,MAAsB;AAC/C,MAAI,IAAI;AACR,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,SAAK,KAAK,WAAW,CAAC;AACtB,QAAI,KAAK,KAAK,GAAG,QAAU;AAAA,EAC7B;AACA,SAAO,MAAM,IAAI,IAAI;AACvB;AAEA,SAAS,OAAO,MAAsB;AACpC,QAAM,QAAkB,CAAC;AACzB,aAAW,QAAQ,KAAK,MAAM,GAAG,GAAG;AAClC,QAAI,SAAS,MAAM,SAAS,IAAK;AACjC,QAAI,SAAS,KAAM,OAAM,IAAI;AAAA,QACxB,OAAM,KAAK,IAAI;AAAA,EACtB;AACA,SAAO,IAAI,MAAM,KAAK,GAAG,CAAC;AAC5B;AA9BA,IAAM,KACA,MACA,WACA,MACO,eACA,gBAEP,OACA,SACA,SAEO,eA2DA;AAtEb;AAAA;AAAA;AAAA,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,YAAY;AAClB,IAAM,OAAO;AACN,IAAM,gBAAgB;AACtB,IAAM,iBAAiB;AAE9B,IAAM,QAAQ,OAAO,YAAY;AACjC,IAAM,UAAU,QAAQ;AACxB,IAAM,UAAU,UAAU;AAEnB,IAAM,iBAAiB,UAAU,KAAK;AA2DtC,IAAM,aAAN,MAAiB;AAAA,MACL;AAAA,MAEjB,YAAY,KAAwB;AAClC,aAAK,OAAO,IAAI,WAAW,GAAG;AAAA,MAChC;AAAA,MAEA,MAAc;AACZ,eAAO,QAAQ,KAAK,KAAK,MAAM,GAAG;AAAA,MACpC;AAAA,MAEA,QAAiB;AACf,eAAO,KAAK,KAAK,SAAS,SAAS,QAAQ,KAAK,KAAK,MAAM,KAAK,MAAM;AAAA,MACxE;AAAA,MAEA,UAAmB;AACjB,eAAO,KAAK,KAAK,SAAS,WAAW,QAAQ,KAAK,KAAK,MAAM,OAAO,MAAM;AAAA,MAC5E;AAAA,MAEA,UAAkB;AAChB,eAAO,KAAK,KAAK,SAAS,UAAU,QAAQ,KAAK,KAAK,MAAM,OAAO,IAAI;AAAA,MACzE;AAAA,MAEA,YAAY,MAAc,IAAoB;AAC5C,YAAI,KAAK,KAAK,SAAS,QAAS,SAAQ,KAAK,KAAK,MAAM,SAAS,MAAM,EAAE;AACzE,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,MAEA,aAAa,MAAc,MAAiD;AAC1E,cAAM,MAAM,QAAQ,KAAK,KAAK,MAAM,GAAG;AACvC,cAAM,WAAY,MAAM,SAAU;AAClC,YAAI,aAAa,EAAG,QAAO,EAAE,KAAK,SAAS,MAAM;AACjD,YAAI,WAAW,UAAW,QAAO,EAAE,KAAK,SAAS,KAAK;AACtD,cAAM,OAAO,WAAW,OAAO,IAAI,CAAC;AACpC,iBAAS,IAAI,GAAG,KAAK,UAAU,KAAK;AAClC,gBAAM,IAAK,OAAO,IAAK;AACvB,gBAAM,KAAK,QAAQ,IAAK,YAAY,KAAM;AAC1C,cAAI,QAAQ,KAAK,KAAK,MAAM,EAAE,MAAM,EAAG,QAAO,EAAE,KAAK,SAAS,KAAK;AACnE,gBAAM,MAAM,QAAQ,KAAK,KAAK,MAAM,KAAK,CAAC,MAAM;AAChD,cAAI,QAAQ,KAAK,KAAK,MAAM,EAAE,MAAM,EAAG,QAAO,EAAE,KAAK,SAAS,KAAK;AACnE,cAAI,IAAK,QAAO,EAAE,KAAK,SAAS,KAAK;AAAA,QACvC;AACA,eAAO,EAAE,KAAK,SAAS,MAAM;AAAA,MAC/B;AAAA,IACF;AAAA;AAAA;;;AClHA,IAAa,MACA,WACA,aACA,WACA,KAaA;AAjBb;AAAA;AAAA;AAAO,IAAM,OAAO,KAAK;AAClB,IAAM,YAAY,OAAO;AACzB,IAAM,cAAc,IAAI,OAAO;AAC/B,IAAM,YAAY,IAAI,OAAO;AAC7B,IAAM,MAAM,OAAO;AAanB,IAAM,QAAN,MAAY;AAAA,MACjB;AAAA,MACQ;AAAA,MACA;AAAA,MACS,QAAQ,oBAAI,IAAwB;AAAA,MACpC,QAAQ,oBAAI,IAAY;AAAA,MACxB,OAAqB,CAAC;AAAA,MAC/B,SAAS;AAAA,MAEjB,YAAY,MAAc;AACxB,aAAK,SAAS;AACd,aAAK,SAAS;AAAA,MAChB;AAAA,MAEA,IAAI,aAAqB;AACvB,eAAO,KAAK,MAAM,OAAO;AAAA,MAC3B;AAAA,MAEA,IAAI,UAAmB;AACrB,eAAO,KAAK,MAAM,OAAO,KAAK,KAAK,WAAW,UAAa,KAAK,WAAW,KAAK;AAAA,MAClF;AAAA,MAEA,QAAQ,IAAY,QAAyC;AAC3D,aAAK,MAAM;AACX,cAAM,MAAM,KAAK,IAAI,KAAK,QAAQ,KAAK,QAAQ,KAAK,MAAM;AAC1D,cAAM,OAAgC,CAAC;AACvC,iBAAS,OAAO,KAAK,MAAM,KAAK,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ;AAChE,cAAI,KAAK,MAAM,IAAI,IAAI,EAAG;AAC1B,gBAAMC,QAAO,KAAK,KAAK,SAAS,CAAC;AACjC,cAAIA,SAAQA,MAAK,CAAC,IAAIA,MAAK,CAAC,MAAM,OAAO,KAAM,CAAAA,MAAK,CAAC,KAAK;AAAA,cACrD,MAAK,KAAK,CAAC,OAAO,MAAM,IAAI,CAAC;AAAA,QACpC;AACA,cAAM,OAAO,KAAK,KAAK,SAAS,CAAC;AACjC,YAAI,KAAM,MAAK,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,WAAW,KAAK,SAAS,KAAK,CAAC,CAAC,CAAC;AAChF,eAAO,KAAK,IAAI,CAAC,CAACC,QAAO,CAAC,MAAM,CAACA,QAAO,KAAK,IAAI,GAAG,KAAK,SAASA,MAAK,CAAC,CAAC;AAAA,MAC3E;AAAA,MAEA,QAAQ,IAAY,QAAyC;AAC3D,YAAI,WAAW,EAAG,QAAO,CAAC;AAC1B,aAAK,MAAM;AACX,cAAM,QAAQ,oBAAI,IAAI,CAAC,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,OAAO,KAAK,SAAS,KAAK,IAAI,CAAC,CAAC;AACnF,cAAM,OAAgC,CAAC;AACvC,mBAAW,QAAQ,OAAO;AACxB,gBAAMA,SAAQ,OAAO;AACrB,gBAAM,UAAU,MAAMA,UAAS,KAAK,UAAUA,SAAQ;AACtD,cAAI,WAAW,KAAK,MAAM,IAAI,IAAI,KAAKA,UAAS,KAAK,OAAQ;AAC7D,eAAK,KAAK,CAACA,QAAO,KAAK,IAAI,MAAM,KAAK,SAASA,MAAK,CAAC,CAAC;AAAA,QACxD;AACA,eAAO;AAAA,MACT;AAAA,MAEA,KAAKA,QAAe,OAAyB;AAC3C,iBAAS,KAAK,GAAG,KAAK,MAAM,QAAQ,MAAM,MAAM;AAC9C,gBAAM,QAAQA,SAAQ,MAAM;AAC5B,cAAI,KAAK,MAAM,IAAI,IAAI,EAAG;AAC1B,gBAAM,OAAO,MAAM,SAAS,IAAI,KAAK,IAAI,KAAK,MAAM,MAAM,MAAM,CAAC;AACjE,gBAAM,QAAQ,KAAK,KAAK,KAAK,MAAM;AACnC,gBAAM,IAAI,IAAI;AACd,eAAK,MAAM,IAAI,MAAM,KAAK;AAAA,QAC5B;AAAA,MACF;AAAA,MAEA,KAAK,IAAY,QAA4B;AAC3C,cAAM,MAAM,IAAI,WAAW,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,QAAQ,KAAK,MAAM,IAAI,EAAE,CAAC;AAC/E,aAAK,SAAS,IAAI,GAAG;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,SAAS,IAAY,KAAyB;AAC5C,cAAM,MAAM,KAAK,IAAI,KAAK,QAAQ,KAAK,IAAI,MAAM;AACjD,iBAAS,MAAM,IAAI,MAAM,OAAO;AAC9B,gBAAM,OAAO,KAAK,MAAM,MAAM,IAAI;AAClC,gBAAM,OAAO,MAAM,OAAO;AAC1B,gBAAM,IAAI,KAAK,IAAI,OAAO,MAAM,MAAM,GAAG;AACzC,gBAAM,QAAQ,KAAK,MAAM,IAAI,IAAI;AACjC,cAAI,MAAO,KAAI,IAAI,MAAM,SAAS,MAAM,OAAO,CAAC,GAAG,MAAM,EAAE;AAAA,cACtD,KAAI,KAAK,GAAG,MAAM,IAAI,MAAM,KAAK,CAAC;AACvC,iBAAO;AAAA,QACT;AACA,eAAO,KAAK,IAAI,GAAG,MAAM,EAAE;AAAA,MAC7B;AAAA,MAEA,MAAM,IAAY,OAAyB;AACzC,iBAAS,OAAO,GAAG,OAAO,MAAM,UAAU;AACxC,gBAAM,MAAM,KAAK;AACjB,gBAAM,OAAO,KAAK,MAAM,MAAM,IAAI;AAClC,gBAAM,OAAO,MAAM,OAAO;AAC1B,gBAAM,IAAI,KAAK,IAAI,OAAO,MAAM,MAAM,SAAS,IAAI;AACnD,cAAI,SAAS,KAAK,MAAM,IAAI,IAAI;AAChC,cAAI,CAAC,QAAQ;AACX,qBAAS,KAAK,KAAK,CAAC;AACpB,iBAAK,MAAM,IAAI,MAAM,MAAM;AAAA,UAC7B;AACA,iBAAO,IAAI,MAAM,SAAS,MAAM,OAAO,CAAC,GAAG,IAAI;AAC/C,eAAK,MAAM,IAAI,IAAI;AACnB,kBAAQ;AAAA,QACV;AACA,aAAK,SAAS,KAAK,IAAI,KAAK,QAAQ,KAAK,MAAM,MAAM;AAAA,MACvD;AAAA,MAEA,SAAS,MAAoB;AAC3B,YAAI,OAAO,KAAK,QAAQ;AACtB,eAAK,SAAS;AACd,eAAK,SAAS,KAAK,IAAI,KAAK,UAAU,MAAM,IAAI;AAAA,QAClD;AACA,YAAI,OAAO,KAAK,QAAQ;AACtB,gBAAM,OAAO,KAAK,MAAM,OAAO,IAAI;AACnC,qBAAW,QAAQ,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,GAAG;AACzC,gBAAI,OAAO,QAAS,SAAS,QAAQ,SAAS,OAAO,KAAO,MAAK,KAAK,IAAI;AAAA,UAC5E;AACA,eAAK,MAAM,IAAI,IAAI,GAAG,KAAK,GAAG,OAAO,OAAO,IAAI;AAAA,QAClD;AACA,aAAK,SAAS;AAAA,MAChB;AAAA,MAEA,OAAkB;AAChB,cAAM,OAAc,CAAC;AACrB,cAAM,SAAS,CAAC,GAAG,KAAK,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AACnD,iBAAS,IAAI,GAAG,IAAI,OAAO,UAAU;AACnC,cAAI,IAAI,IAAI;AACZ,gBAAM,QAAQ,OAAO,CAAC;AACtB,iBACE,IAAI,OAAO,UACX,OAAO,CAAC,MAAM,SAAS,IAAI,MACzB,OAAO,CAAC,IAAe,OAAQ,QAAQ,GACzC;AACA;AAAA,UACF;AACA,gBAAMA,SAAQ,QAAQ;AACtB,gBAAM,MAAM,KAAK,IAAI,KAAK,SAAS,SAAS,IAAI,MAAM,IAAI;AAC1D,gBAAM,QAAQ,IAAI,WAAW,MAAMA,MAAK;AACxC,mBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,kBAAM,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,CAAW;AAC/C,kBAAM,IAAI,KAAK,SAAS,GAAG,KAAK,IAAI,MAAM,OAAO,IAAI,KAAK,OAAOA,MAAK,CAAC,IAAI,IAAI,KAAK,IAAI;AAAA,UAC1F;AACA,eAAK,KAAK,EAAE,QAAQA,QAAO,MAAM,CAAC;AAClC,cAAI;AAAA,QACN;AACA,cAAMC,WAAU,KAAK,IAAI,KAAK,QAAQ,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACnF,eAAO;AAAA,UACL,GAAI,KAAK,WAAW,SAAY,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,UAC3D;AAAA,UACA,GAAI,KAAK,SAASA,WAAU,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,QACzD;AAAA,MACF;AAAA,MAEA,UAAgB;AACd,aAAK,MAAM,MAAM;AACjB,aAAK,SAAS;AACd,aAAK,SAAS,KAAK;AACnB,aAAK,MAAM;AAAA,MACb;AAAA,MAEA,MAAY;AACV,aAAK,SAAS;AAAA,MAChB;AAAA,MAEA,MAAM,MAAoB;AACxB,YAAI,KAAK,OAAQ;AACjB,mBAAW,QAAQ,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,EAAG,KAAI,CAAC,KAAK,MAAM,IAAI,IAAI,EAAG,MAAK,KAAK,IAAI;AACpF,YAAI,KAAK,QAAS;AAClB,aAAK,SAAS;AACd,aAAK,SAAS;AAAA,MAChB;AAAA,MAEA,QAAQ,MAAoB;AAC1B,YAAI,KAAK,OAAQ;AACjB,mBAAW,QAAQ,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,EAAG,KAAI,CAAC,KAAK,MAAM,IAAI,IAAI,EAAG,MAAK,KAAK,IAAI;AACpF,cAAM,UAAU,KAAK,WAAW,KAAK,UAAU,KAAK,WAAW;AAC/D,YAAI,KAAK,WAAW,OAAW,MAAK,SAAS;AAC7C,aAAK,SAAS,UAAU,KAAK,IAAI,KAAK,QAAQ,KAAK,MAAM,IAAI;AAAA,MAC/D;AAAA,MAEQ,QAAc;AACpB,YAAI,KAAK,OAAQ;AACjB,YAAI,SAAS,KAAK,MAAM,OAAO,KAAK,MAAM,QAAQ;AAClD,mBAAW,QAAQ,KAAK,MAAM,KAAK,GAAG;AACpC,cAAI,SAAS,YAAa;AAC1B,cAAI,KAAK,MAAM,IAAI,IAAI,EAAG;AAC1B,eAAK,KAAK,IAAI;AACd,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MAEQ,KAAK,MAA0B;AACrC,cAAM,OAAO,KAAK,KAAK,IAAI;AAC3B,YAAI,CAAC,KAAM,QAAO,IAAI,WAAW,IAAI;AACrC,aAAK,KAAK,GAAG,IAAI;AACjB,eAAO;AAAA,MACT;AAAA,MAEQ,KAAK,MAAoB;AAC/B,cAAM,QAAQ,KAAK,MAAM,IAAI,IAAI;AACjC,aAAK,MAAM,OAAO,IAAI;AACtB,aAAK,MAAM,OAAO,IAAI;AACtB,YAAI,KAAK,KAAK,SAAS,cAAc,KAAM,MAAK,KAAK,KAAK,KAAK;AAAA,MACjE;AAAA,IACF;AAAA;AAAA;;;AC7LO,SAAS,YAAmC,OAAU,IAAkB;AAC7E,OAAK,GAAG,SAAS,KAAK,EAAG,QAAO;AAChC,QAAM,SAAS;AACf,QAAM,MAAM,YAAY,EAAE;AAC1B,SAAO;AACT;AAEA,SAAS,SAAS,OAAoB,MAAc,MAAuB;AACzE,MAAI,MAAM,aAAa,QAAW;AAChC,QAAI;AACJ,QAAI;AACF,aAAO,MAAM,OAAO;AAAA,IACtB,QAAQ;AAAA,IAAC;AACT,UAAM,WAAW,QAAQ,SAAS,OAAO,OAAO;AAAA,EAClD;AACA,SAAO,MAAM,aAAa,QAAQ,MAAM,KAAK,aAAa,MAAM,MAAM,QAAQ,EAAE;AAClF;AAEA,SAAS,QAAQ,OAAoB,MAAuB;AAC1D,MAAI,CAAC,MAAM,OAAQ,QAAO;AAC1B,MAAI;AACJ,MAAI;AACF,UAAM,YAAY,MAAM,KAAK,IAAI,CAAC;AAAA,EACpC,QAAQ;AACN,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,MAAM,IAAK,QAAO;AAC9B,QAAM,MAAM;AACZ,SAAO;AACT;AAEO,SAAS,cACd,OACA,MACA,MACmC;AACnC,QAAM,OAAO,MAAM,KAAK,aAAa,MAAM,IAAI;AAC/C,MAAI,KAAK,WAAW,KAAK,QAAQ,KAAM,QAAO;AAC9C,SAAO,EAAE,KAAK,KAAK,KAAK,SAAS,SAAS,OAAO,MAAM,IAAI,KAAK,QAAQ,OAAO,IAAI,EAAE;AACvF;AAhEA,IAsBa,aAwDA;AA9Eb;AAAA;AAAA;AACA;AAqBO,IAAM,cAAc,CAAC,OAC1B,GAAG,GAAG,WAAW,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,WAAW,EAAE;AAuD7C,IAAM,aAAN,MAAiB;AAAA,MACL;AAAA,MACA;AAAA,MACT,SAAS;AAAA,MACT;AAAA,MACS;AAAA,MACT,OAAO;AAAA,MACf;AAAA,MAEA,YAAY,IAAc,MAAc,MAAc,SAAkB,OAAqB;AAC3F,aAAK,KAAK;AACV,aAAK,OAAO;AACZ,aAAK,UAAU;AACf,aAAK,QAAQ,IAAI,MAAM,IAAI;AAC3B,aAAK,QAAQ;AACb,YAAI,MAAO,MAAK,OAAO,MAAM,QAAQ,MAAM,KAAK,IAAI;AAAA,MACtD;AAAA,MAEQ,QAAc;AACpB,cAAM,QAAQ,KAAK;AACnB,YAAI,CAAC,SAAS,KAAK,OAAQ;AAC3B,cAAM,EAAE,KAAK,SAAAC,SAAQ,IAAI,cAAc,OAAO,KAAK,MAAM,KAAK,IAAI;AAClE,aAAK,OAAO;AACZ,YAAIA,SAAS,MAAK,OAAO;AAAA,MAC3B;AAAA,MAEA,SAAe;AACb,cAAM,QAAQ,KAAK;AACnB,YAAI,CAAC,SAAS,KAAK,UAAU,KAAK,MAAM,QAAS;AACjD,YAAI;AACJ,YAAI;AACF,eAAK,MAAM,KAAK,KAAK,IAAI;AAAA,QAC3B,QAAQ;AACN;AAAA,QACF;AACA,YAAI,MAAM,QAAQ,UAAa,GAAG,QAAQ,MAAM,IAAK;AACrD,aAAK,UAAU,GAAG;AAClB,aAAK,MAAM,QAAQ,GAAG,IAAI;AAAA,MAC5B;AAAA,MAEA,IAAI,UAAmB;AACrB,eAAO,KAAK,MAAM;AAAA,MACpB;AAAA,MAEA,IAAI,gBAAoC;AACtC,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,SAAe;AACb,aAAK,MAAM,MAAM,KAAK,MAAM,MAAM;AAAA,MACpC;AAAA,MAEA,OAAe;AACb,aAAK,MAAM;AACX,eAAO,KAAK,MAAM;AAAA,MACpB;AAAA,MAEQ,MAAM,MAAqC;AACjD,mBAAW,CAACC,QAAO,CAAC,KAAK,MAAM;AAC7B,eAAK,MAAM,KAAKA,QAAO,KAAK,GAAG,MAAM,KAAK,MAAMA,QAAO,GAAG,KAAK,OAAO,CAAC;AAAA,QACzE;AAAA,MACF;AAAA,MAEA,KAAK,IAAY,QAA4B;AAC3C,aAAK,MAAM;AACX,aAAK,MAAM,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC;AACzC,eAAO,KAAK,MAAM,KAAK,IAAI,MAAM;AAAA,MACnC;AAAA,MAEA,SAAS,IAAY,KAAyB;AAC5C,aAAK,MAAM;AACX,aAAK,MAAM,KAAK,MAAM,QAAQ,IAAI,IAAI,MAAM,CAAC;AAC7C,eAAO,KAAK,MAAM,SAAS,IAAI,GAAG;AAAA,MACpC;AAAA,MAEA,MAAM,IAAY,OAAyB;AACzC,aAAK,MAAM;AACX,aAAK,MAAM,KAAK,MAAM,QAAQ,IAAI,MAAM,MAAM,CAAC;AAC/C,aAAK,MAAM,MAAM,IAAI,KAAK;AAC1B,YAAI,CAAC,KAAK,UAAU,KAAK,MAAM,cAAc,UAAW,MAAK,MAAM;AAAA,MACrE;AAAA,MAEA,SAAS,MAAoB;AAC3B,aAAK,MAAM,SAAS,IAAI;AAAA,MAC1B;AAAA,MAEA,QAAc;AACZ,YAAI,KAAK,UAAU,CAAC,KAAK,MAAM,QAAS;AACxC,cAAM,OAAO,KAAK,MAAM,KAAK;AAC7B,YAAI,KAAK,WAAW,OAAW,MAAK,GAAG,SAAS,KAAK,MAAM,KAAK,MAAM;AACtE,mBAAW,OAAO,KAAK,KAAM,MAAK,GAAG,OAAO,KAAK,MAAM,IAAI,QAAQ,IAAI,OAAO,IAAI;AAClF,YAAI,KAAK,WAAW,OAAW,MAAK,GAAG,SAAS,KAAK,MAAM,KAAK,MAAM;AACtE,aAAK,UAAU;AACf,aAAK,MAAM,QAAQ;AAAA,MACrB;AAAA,MAEA,MAAY;AACV,aAAK,SAAS;AACd,aAAK,MAAM,IAAI;AACf,aAAK,SAAS;AAAA,MAChB;AAAA,MAEA,WAAiB;AACf,aAAK,MAAM;AACX,aAAK,MAAM,KAAK,MAAM,QAAQ,GAAG,KAAK,MAAM,MAAM,CAAC;AAAA,MACrD;AAAA,MAEA,MAAM,MAAoB;AACxB,aAAK,MAAM,MAAM,IAAI;AAAA,MACvB;AAAA,IACF;AAAA;AAAA;;;AChEO,SAAS,iBAAiBC,OAAmC;AAClE,QAAM,IAAIA;AACV,MAAI,CAAC,KAAK,OAAO,EAAE,UAAU,YAAY,OAAO,EAAE,UAAU,SAAU,QAAO;AAC7E,SAAO,EAAE,OAAO,EAAE,OAAO,OAAO,EAAE,MAAM;AAC1C;AAqEO,SAAS,UAAUC,OAAc,OAAyC;AAC/E,SAAO,OAAO,OAAO,IAAI,MAAM,GAAGA,KAAI,KAAK,KAAK,EAAE,GAAG,EAAE,MAAAA,MAAK,CAAC;AAC/D;AAEO,SAAS,gBAAgBD,OAAwC;AACtE,QAAM,IAAIA;AACV,MACE,CAAC,KACD,OAAO,EAAE,WAAW,aACpB,OAAO,EAAE,gBAAgB,aACzB,OAAO,EAAE,SAAS,UAClB;AACA,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,QAAQ,EAAE;AAAA,IACV,aAAa,EAAE;AAAA,IACf,gBAAgB,EAAE;AAAA,IAClB,GAAI,EAAE,aAAa,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,IAChD,GAAI,EAAE,WAAW,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,IAC5C,MAAM,EAAE;AAAA,IACR,GAAI,OAAO,EAAE,SAAS,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;AAAA,IACrD,GAAI,OAAO,EAAE,YAAY,WAAW,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC9D,GAAI,OAAO,EAAE,YAAY,WAAW,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC9D,GAAI,OAAO,EAAE,YAAY,WAAW,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC9D,GAAI,OAAO,EAAE,QAAQ,WAAW,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;AAAA,IAClD,GAAI,OAAO,EAAE,UAAU,WAAW,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAAA,IACxD,GAAI,OAAO,EAAE,QAAQ,WAAW,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;AAAA,IAClD,GAAI,EAAE,aAAa,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,IAChD,GAAI,OAAO,EAAE,YAAY,WAAW,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC9D,GAAI,EAAE,WAAW,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,IAC5C,GAAI,EAAE,aAAa,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,IAChD,GAAI,OAAO,EAAE,YAAY,WAAW,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC9D,GAAI,OAAO,EAAE,QAAQ,WAAW,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;AAAA,IAClD,GAAI,OAAO,EAAE,QAAQ,WAAW,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;AAAA,IAClD,GAAI,OAAO,EAAE,QAAQ,WAAW,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;AAAA,EACpD;AACF;AA1OA,IACa,aAqCA,WACA,YACA,cAmCA,4BAEA;AA7Eb;AAAA;AAAA;AACO,IAAM,cAAc;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAIO,IAAM,YAAY;AAClB,IAAM,aAAa;AACnB,IAAM,eAAe;AAmCrB,IAAM,6BAA6B;AAEnC,IAAM,oBAAyC,oBAAI,IAAI;AAAA,MAC5D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA;AAAA;;;AC4PM,SAAS,UAAU,MAAsB;AAC9C,QAAM,MAAgB,CAAC;AACvB,aAAW,OAAO,KAAK,MAAM,GAAG,GAAG;AACjC,QAAI,QAAQ,MAAM,QAAQ,IAAK;AAC/B,QAAI,QAAQ,KAAM,KAAI,IAAI;AAAA,QACrB,KAAI,KAAK,GAAG;AAAA,EACnB;AACA,SAAO,IAAI,IAAI,KAAK,GAAG,CAAC;AAC1B;AAIO,SAAS,SACd,IACA,MACQ;AACR,MAAI,OAAiB,CAAC;AACtB,MAAI,OAAO,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,SAAS,SAAS,MAAM,SAAS,GAAG;AACvE,MAAI,OAAO;AACX,SAAO,KAAK,SAAS,GAAG;AACtB,UAAM,OAAO,KAAK,MAAM;AACxB,QAAI,SAAS,MAAM;AACjB,WAAK,IAAI;AACT;AAAA,IACF;AACA,QAAI,CAAC,KAAK,SAAS,IAAI,GAAG;AACxB,WAAK,KAAK,IAAI;AACd;AAAA,IACF;AACA,UAAM,KAAK,IAAI,CAAC,GAAG,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC;AACxC,UAAM,KAAK,GAAG,MAAM,EAAE;AACtB,QAAI,GAAG,gBAAgB;AACrB,UAAI,EAAE,OAAO,UAAW,OAAM,IAAI,UAAU,OAAO;AACnD,UAAI,GAAG,MAAO,IAAG,SAAS,IAAI,GAAG,UAAU,IAAI;AAC/C,YAAM,SAAS,GAAG,SAAS,EAAE;AAC7B,UAAI,OAAO,WAAW,GAAG,EAAG,QAAO,CAAC;AACpC,aAAO,CAAC,GAAG,OAAO,MAAM,GAAG,EAAE,OAAO,CAAC,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI;AAAA,IAC5E,WAAW,CAAC,GAAG,aAAa;AAC1B,YAAM,IAAI,UAAU,SAAS;AAAA,IAC/B,OAAO;AACL,WAAK,KAAK,IAAI;AAAA,IAChB;AAAA,EACF;AACA,SAAO,IAAI,KAAK,KAAK,GAAG,CAAC;AAC3B;AAEO,SAAS,OAAO,IAAmD,MAAsB;AAC9F,MAAI,OAAiB,CAAC;AACtB,MAAI,OAAO,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,SAAS,SAAS,MAAM,SAAS,GAAG;AACvE,MAAI,OAAO;AACX,SAAO,KAAK,SAAS,GAAG;AACtB,UAAM,OAAO,KAAK,MAAM;AACxB,QAAI,SAAS,MAAM;AACjB,WAAK,IAAI;AACT;AAAA,IACF;AACA,UAAM,KAAK,IAAI,CAAC,GAAG,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC;AACxC,QAAI,CAAC,GAAG,MAAM,EAAE,EAAE,gBAAgB;AAChC,WAAK,KAAK,IAAI;AACd;AAAA,IACF;AACA,QAAI,EAAE,OAAO,UAAW,OAAM,IAAI,UAAU,OAAO;AACnD,UAAM,SAAS,GAAG,SAAS,EAAE;AAC7B,QAAI,OAAO,WAAW,GAAG,EAAG,QAAO,CAAC;AACpC,WAAO,CAAC,GAAG,OAAO,MAAM,GAAG,EAAE,OAAO,CAAC,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI;AAAA,EAC5E;AACA,SAAO,IAAI,KAAK,KAAK,GAAG,CAAC;AAC3B;AAEO,SAAS,aAAa,KAAa,MAAsB;AAC9D,SAAO,UAAU,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,IAAI,EAAE;AACjE;AAEO,SAAS,UAAU,MAAsB;AAC9C,MAAI,IAAI;AACR,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,SAAK,OAAO,KAAK,WAAW,CAAC,CAAC;AAC9B,QAAK,IAAI,iBAAkB;AAAA,EAC7B;AACA,SAAO;AACT;AAuBA,SAAS,OAAO,IAAoB;AAClC,SAAO,SAAS,MAAM,OAAO,GAAG,QAAQ,WAAY,GAAG,MAAM,aAAc,IAAI;AACjF;AAEA,SAAS,SAAS,MAAsB;AACtC,MAAI,IAAI;AACR,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAK,KAAI,KAAK,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,QAAU;AACtF,SAAO,MAAM,IAAI,IAAI;AACvB;AAwIA,SAAS,MAAM,KAA+B,KAAa,MAAoB;AAC7E,QAAM,QAAQ,IAAI,IAAI,GAAG,KAAK,oBAAI,IAAY;AAC9C,QAAM,IAAI,IAAI;AACd,MAAI,IAAI,KAAK,KAAK;AACpB;AAuCA,SAAS,UACP,MACA,MACA,MACkB;AAClB,WAAS,KAAK,KAAK,YAAY,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,YAAY,KAAK,KAAK,CAAC,GAAG;AAC/E,UAAM,KAAK,KAAK,MAAM,GAAG,EAAE;AAC3B,eAAW,OAAO,MAAM;AACtB,YAAM,MAAM,IAAI,IAAI,EAAE;AACtB,YAAME,QAAO,OAAO,WAAW,MAAO,IAAI,MAA4B,OAAO;AAC7E,UAAI,OAAO,WAAW,OAAOA,UAAS,YAAY,KAAK,KAAK,EAAE,EAAG,QAAO;AAAA,IAC1E;AAAA,EACF;AACA,SAAO;AACT;AAaA,SAAS,QACP,QACA,UACA,OACiC;AACjC,QAAM,EAAE,MAAAC,MAAK,IAAI;AACjB,MAAI,CAACA,MAAM,QAAO,CAAC;AACnB,SAAO;AAAA,IACL,MAAM,CAAC,MAAM,IAAI,MAAM,cACrB,SAAS,MAAMA,MAAK,KAAK,QAAQ,MAAM,IAAI,MAAM,SAAS,GAAG,GAAG,MAAM,EAAE,CAAC;AAAA,EAC7E;AACF;AAqBA,SAAS,OACP,EAAE,OAAO,MAAM,QAAAC,QAAO,GACtB,GACA,MACA,KACA,OACM;AACN,QAAM,OAAO,MAAM,MAAM,KAAK;AAC9B,aAAW,CAACC,OAAM,EAAE,KAAK,MAAM;AAC7B,QAAI,CAAC,GAAI;AACT,IAAAD,QAAO,IAAI,IAAI,KAAK;AACpB,UAAM,KAAK,GAAG,IAAI,IAAIC,KAAI;AAC1B,UAAM,IAAI,MAAM,QAAQ,IAAI,EAAE;AAC9B,QAAI,QAAQ,OAAW,MAAK,IAAI,MAAM,QAAQ,IAAI,GAAG;AACrD,QAAI,GAAG,eAAgB;AACvB,UAAM,IAAI,MAAM,OAAO,IAAI,EAAE;AAC7B,QAAI,QAAQ,OAAW,MAAK,IAAI,MAAM,OAAO,IAAI,GAAG;AAAA,EACtD;AACF;AAEA,SAAS,QACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAAD;AAAA,EACA;AACF,GAOA,KACA,MACA,KACQ;AACR,QAAM,MAAM,MAAM,IAAI;AACtB,QAAM,QAAQ,IAAI;AAClB,MAAI;AACJ,MAAI;AACF,UAAM,IAAI;AACV,QAAI,QAAQ,OAAW,MAAK,IAAI,KAAK,MAAM,GAAG;AAAA,EAChD,SAAS,GAAG;AACV,UAAM,EAAE,OAAO,GAAY,OAAO,QAAQ,aAAa,GAAI,QAAQ,SAAY,EAAE,IAAI,IAAI,CAAC,EAAG;AAAA,EAC/F;AACA,EAAAA,QAAO,IAAI,KAAK,KAAK;AACrB,QAAM,IAAI,KAAK,MAAM,GAAG;AACxB,SAAO;AACT;AAEO,SAAS,cACd,QACA,MAAoB,MAAM,YAAY,IAAI,GAC1C,QAKA;AACA,QAAM,QAAQ,WAAW,UAAa,OAAO,SAAS,IAAI;AAC1D,QAAM,QAAQ,IAAI,UAAU,QAAQ,SAAY,MAAM;AACtD,QAAM,EAAE,OAAO,OAAO,IAAI;AAC1B,QAAM,OAAO,OAAO;AACpB,QAAMA,UAAS,IAAI,MAAM,MAAM,GAAG;AAClC,QAAME,SAAQ,CAACC,WAAkBH,QAAO,MAAMG,MAAK;AACnD,QAAM,OAAO,CAAC,MAAY,SACxB,KAAK,QAAQ,IAAI,KACjBD,OAAM,IAAI,MACT,SAAS,UAAa,KAAK,QAAQ,UAAa,CAAC,KAAK,aAAa,KAAK,KAAK,IAAI,EAAE;AACtF,QAAM,OAAO,IAAI,OAAO,MAAM,MAAM;AACpC,QAAM,OAAO,SAAS,OAAO,MAAM,OAAO,CAACC,WAAUH,QAAO,IAAIG,MAAK,CAAC;AACtE,QAAMC,QAAO,CAAC,SAAiB,UAAU,CAAC,QAAQ,KAAK,GAAG,MAAM,IAAI;AACpE,QAAM,SAAS,CAAC,KAAmB,SAAqC;AACtE,UAAM,MAAM,IAAI,IAAI,IAAI;AACxB,QAAI,QAAQ,OAAW,QAAO;AAC9B,QAAI,WAAW,IAAK,QAAO,KAAK,KAAK,IAAI,IAAI,MAAM;AACnD,WAAOF,OAAM,GAAG,KAAK,CAAC,KAAK,QAAQ,KAAK,IAAI,IAAI,MAAM;AAAA,EACxD;AACA,QAAMG,UAAS,CAAC,KAAmB,MAAc,QAAgC;AAC/E,QAAI,MAAO,QAAO,IAAI;AACtB,UAAM,MAAM;AACZ,QAAI,MAAM,OAAO,KAAK,IAAI;AAC1B,QAAI,QAAQ,QAAW;AACrB,YAAMC,WAAUF,MAAK,IAAI;AACzB,UAAIE,SAAS,OAAMA,SAAQ;AAC3B,YAAM,QAAQ,EAAE,MAAM,KAAK,MAAM,QAAAN,SAAQ,MAAM,GAAG,KAAK,MAAM,GAAG;AAAA,IAClE;AACA,QAAI,WAAW,IAAK,OAAM,IAAI;AAC9B,WAAO;AAAA,EACT;AACA,QAAM,aAAa,MAAM,MAAM,QAAQ,CAAC,CAAC;AACzC,QAAM,UAAU,CAAC,MAAe,QAAiB,MAAM,QAAQ,MAAM,GAAG;AAExE,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,WAAW,CAAI,OAAgB,UAAuB;AAC1D,QAAI;AACF,aAAO,GAAG;AAAA,IACZ,UAAE;AACA,YAAM,QAAQ,KAAK;AAAA,IACrB;AAAA,EACF;AACA,MAAI,QAAQ;AACZ,QAAM,WAAW,MAAM;AACrB,QAAI,SAAS,WAAW,UAAa,CAAC,OAAO,SAAU;AACvD,YAAQ;AACR,WAAO,SAAS;AAAA,EAClB;AACA,QAAM,aAAa,CAAI,GAAW,IAAa,SAAsB;AACnE,QAAI;AACF,aAAO,GAAG;AAAA,IACZ,UAAE;AACA,YAAM,KAAK,OAAO,aAAa,KAAK;AACpC,UAAI,GAAI,OAAM,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG;AAAA,UACrC,OAAM,QAAQ,CAAC,CAAC;AAAA,IACvB;AAAA,EACF;AACA,QAAM,aAAa,CAAI,GAAW,OAAmB;AACnD,QAAI,SAAS,CAAC,OAAO,aAAc,QAAO,UAAU,GAAG,EAAE;AACzD,WAAO,aAAa;AACpB,QAAI;AACF,aAAO,GAAG;AAAA,IACZ,UAAE;AACA,YAAM,KAAK,OAAO,aAAa,KAAK;AACpC,UAAI,GAAI,OAAM,QAAQ,CAAC,CAAC,GAAG,GAAG,GAAG;AAAA,UAC5B,OAAM,QAAQ,CAAC,CAAC;AAAA,IACvB;AAAA,EACF;AACA,QAAM,YAAY,CAAI,GAAW,OAAgB,SAAsB;AACrE,QAAI,MAAO,QAAO,WAAW,GAAG,IAAI,IAAI;AACxC,UAAM,MAAM,MAAM,MAAM,GAAG,MAAM,OAAO,KAAK,CAAC,CAAC;AAC/C,QAAI;AACF,aAAO,GAAG;AAAA,IACZ,UAAE;AACA,YAAM,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG;AAAA,IACjC;AAAA,EACF;AACA,QAAM,QAAQ,CAAC,MAAc,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,YAAY,GAAG,CAAC,KAAK,GAAG;AACtE,SAAO;AAAA,IACL,GAAI,OAAO,UAAU,EAAE,SAAS,OAAO,QAAQ,IAAI,CAAC;AAAA,IACpD,GAAI,OAAO,UAAU,EAAE,SAAS,OAAO,QAAQ,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,IACjE,UAAU,CAAC,MAAM,OAAO,SAAS,CAAC;AAAA,IAClC,SAAS,CAAC,MAAM,OAAO,QAAQ,CAAC;AAAA,IAEhC,aAAa,CAAC,MAAc;AAC1B,YAAM,MAAM,MAAM,IAAI;AACtB,YAAM,QAAQ,IAAI;AAClB,YAAM,OAAO,OAAO,YAAY,CAAC;AACjC,UAAI,CAAC,MAAO,QAAO,EAAE,OAAO,MAAM,QAAAA,QAAO,GAAG,GAAG,MAAM,KAAK,KAAK;AAC/D,aAAO;AAAA,IACT;AAAA,IACA,UAAU,CAAC,MAAM;AACf,YAAM,QAAQ,QAAQ,UAAa,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC;AAC9D,YAAM,MAAM,KAAK,MAAM,CAAC;AACxB,YAAMO,WAAU,SAAS,UAAa,QAAQ,UAAa,CAAC,KAAK,aAAa,KAAK,CAAC,EAAE;AACtF,UAAI,SAASA,YAAW,EAAE,WAAW,UAAUL,OAAM,KAAK,KAAK,CAAC,MAAM,gBAAgB;AACpF,cAAM,UAAU,UAAU,IAAI,CAAC,0BAA0B;AAAA,MAC3D;AACA,aAAO,OAAO,SAAS,CAAC;AAAA,IAC1B;AAAA,IACA,MAAM,CAAC,MAAMG,QAAO,OAAO,GAAG,MAAM,OAAO,KAAK,CAAC,CAAC;AAAA,IAClD,OAAO,CAAC,MAAMA,QAAO,QAAQ,GAAG,MAAM,OAAO,MAAM,CAAC,CAAC;AAAA,IACrD,QAAQ,CAAC,MAAM;AACb,UAAI;AACF,QAAAA,QAAO,OAAO,GAAG,MAAM,OAAO,KAAK,CAAC,CAAC;AACrC,eAAO;AAAA,MACT,QAAQ;AACN,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,WAAW,CAAC,GAAG,OAAO,SACpB,UAAU,GAAG,MAAM,OAAO,UAAU,GAAG,OAAO,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAAA,IAC3E,OAAO,CAAC,MAAM,SAAS,MAAM,OAAO,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;AAAA,IACzD,IAAI,CAAC,MAAM,SAAS,MAAM,OAAO,GAAG,CAAC,CAAC;AAAA,IACtC,QAAQ,CAAC,MAAM,OAAO,SAAS,MAAM,OAAO,OAAO,MAAM,EAAE,CAAC;AAAA,IAC5D,MAAM,CAAC,MAAM,IAAIG,YAAW,SAAS,MAAM,OAAO,KAAK,MAAM,IAAIA,OAAM,CAAC;AAAA,IACxE,QAAQ,CAAC,MAAM,SAAS,MAAM,OAAO,OAAO,CAAC,CAAC;AAAA,IAC9C,OAAO,CAAC,MAAM,SAAS,MAAM,OAAO,MAAM,CAAC,CAAC;AAAA,IAC5C,SAAS,CAAC,QAAQ,SAAS,SAAS,MAAM,OAAO,QAAQ,QAAQ,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC;AAAA,IACtF,OAAO,CAAC,GAAG,SAAS,WAAW,GAAG,MAAM,OAAO,MAAM,GAAG,IAAI,CAAC;AAAA,IAC7D,QAAQ,CAAC,GAAG,GAAG,GAAGC,SAAQ,WAAW,GAAG,MAAM,OAAO,OAAO,GAAG,GAAG,GAAGA,IAAG,CAAC;AAAA,IACzE,SAAS,CAAC,GAAG,GAAG,GAAGA,SAAQ,SAAS,MAAM,OAAO,QAAQ,GAAG,GAAG,GAAGA,IAAG,CAAC;AAAA,IACtE,GAAI,OAAO,OAAO,EAAE,MAAM,OAAO,KAAK,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,IACxD,GAAI,OAAO,SAAS,EAAE,QAAQ,OAAO,OAAO,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,IAC9D,GAAI,OAAO,OAAO,EAAE,MAAM,OAAO,KAAK,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,IACxD,GAAI,OAAO,WAAW,EAAE,UAAU,OAAO,SAAS,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,IACpE,GAAI,OAAO,SAAS,EAAE,QAAQ,CAAC,WAAmB,SAAS,QAAQ,QAAQ,SAAS,EAAE,IAAI,CAAC;AAAA,IAC3F,GAAI,OAAO,SACP;AAAA,MACE,QAAQ,CAAC,GAAW,MAAeC,aACjC;AAAA,QACE;AAAA,QACA,SAAS,MAAM,OAAO,SAAS,GAAG,MAAMA,QAAO,GAAG,GAAG,MAAM,CAAC,CAAC;AAAA,MAC/D;AAAA,IACJ,IACA,CAAC;AAAA,IACL,GAAI,OAAO,SACP;AAAA,MACE,QAAQ,CAAC,GAAW,SAClB,SAAS,MAAM,OAAO,SAAS,GAAG,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC;AAAA,IACxD,IACA,CAAC;AAAA,IACL,GAAG,QAAQ,QAAQ,UAAU,KAAK;AAAA,IAClC,GAAI,QACA;AAAA,MACE,OAAO,CAAC,MAAcC,UACpB,WAAW,GAAG,MAAM,MAAM,KAAK,QAAQ,GAAG,GAAGA,KAAI,CAAC;AAAA,IACtD,IACA,CAAC;AAAA,IACL,GAAI,OAAO,SAAS,OAAO,UAAU,OAAO,WACxC;AAAA,MACE,OAAO,OAAO,MAAM,KAAK,MAAM;AAAA,MAC/B,QAAQ,CAAC,GAAW,IAAY,OAAmB,aACjD,UAAU,GAAG,MAAM,OAAO,SAAS,GAAG,IAAI,OAAO,QAAQ,CAAC;AAAA,MAC5D,UAAU,CAAC,GAAW,SAAiB,UAAU,GAAG,MAAM,OAAO,WAAW,GAAG,IAAI,CAAC;AAAA,IACtF,IACA,CAAC;AAAA,IACL,GAAI,OAAO,SACP;AAAA,MACE,QAAQ,CAAC,GAAW,UAClB,UAAU,GAAG,MAAO,OAAO,OAA6C,GAAG,KAAK,CAAC;AAAA,IACrF,IACA,CAAC;AAAA,IACL,GAAI,OAAO,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,IACxC,GAAI,OAAO,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,SACP,QACA,QACA,WACc;AACd,QAAM,KAAM,OAAO,OAAoD,MAAM;AAC7E,QAAM,EAAE,OAAO,QAAQ,SAAS,IAAI;AACpC,SAAO;AAAA,IACL,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;AAAA,IAC9B,WAAW,CAAC,GAAG,OAAO,SAAS,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,IAAI,CAAC;AAAA,IAC9E,OAAO,CAAC,GAAG,IAAI,GAAG,YAAY,MAAM,GAAG,IAAI,GAAG,OAAO;AAAA,IACrD,QAAQ,CAAC,GAAG,IAAI,OAAO,aAAa,UAAU,GAAG,MAAM,OAAO,GAAG,IAAI,OAAO,QAAQ,CAAC;AAAA,IACrF,UAAU,CAAC,GAAG,SAAS,UAAU,GAAG,MAAM,SAAS,GAAG,IAAI,CAAC;AAAA,IAC3D,GAAI,GAAG,SACH;AAAA,MACE,QAAQ,CAAC,GAAW,UAClB,UAAU,GAAG,MAAO,GAAG,OAAyC,GAAG,KAAK,CAAC;AAAA,IAC7E,IACA,CAAC;AAAA,EACP;AACF;AA/6BA,IAea,WAQA,YAiOA,WAwGP,WAwEO,aACP,WAQO,QACA,UACA,OACPC,OACAC,YACAC,OACO,SACA,cACA,kBAcP,WA4IA,UAEA,QAmDA,UAwBA;AAhqBN;AAAA;AAAA;AAAA;AAIA;AAEA;AASO,IAAM,YAAN,cAAwB,MAAM;AAAA,MAC1B;AAAA,MACT,YAAYhB,OAAc;AACxB,cAAMA,KAAI;AACV,aAAK,OAAOA;AAAA,MACd;AAAA,IACF;AAEO,IAAM,aAAN,MAAiB;AAAA,MACd;AAAA,MACA,SAAS;AAAA,MACT,QAAQ;AAAA,MAER,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,KAAK;AAAA,MAEL,WAAW;AAAA,MAEnB,QAAQ;AAAA,MAES;AAAA,MACT;AAAA,MACS;AAAA,MACA;AAAA,MACT,OAAO;AAAA,MAEf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA,YACE,IACA,MAEA,OACA,SACA,MACA,SACA,OACA;AACA,aAAK,KAAK;AACV,aAAK,QAAQ;AACb,aAAK,UAAU;AACf,cAAM,EAAE,OAAO,QAAQ,SAAS,IAAI;AACpC,aAAK,QAAQ;AACb,aAAK,OAAO,OAAO,QAAQ,OAAO,KAAK,IAAI,KAAK;AAChD,YAAI,SAAS,UAAa,SAAS,UAAU,UAAU;AACrD,gBAAM,KAAK;AAAA,YACT,OAAO,CAAC,MAAca,UACpB,KAAK,QAAQ,MAAM,MAAM,KAAK,IAAI,KAAK,OAAO,GAAGA,KAAI,CAAC;AAAA,YACxD,QAAQ,CAAC,MAAcA,UACrB,KAAK,QAAQ,MAAM,OAAO,KAAK,IAAI,KAAK,OAAO,GAAGA,KAAI,CAAC;AAAA,YACzD,UAAU,CAAC,GAAWI,UACpB,KAAK,QAAQ,MAAM,SAAS,KAAK,IAAI,KAAK,OAAOA,KAAI,CAAC;AAAA,UAC1D;AACA,eAAK,SAAS,IAAI,WAAW,IAAI,MAAM,MAAM,SAAS,KAAK;AAC3D,cAAI,MAAO,MAAK,SAAS,CAAC;AAAA,QAC5B,WAAW,OAAO;AAChB,eAAK,OAAO,IAAI,WAAW,CAAC;AAC5B,eAAK,QAAQ;AACb,eAAK,QAAQ;AAAA,QACf;AAAA,MACF;AAAA,MAEA,IAAI,OAAe;AACjB,eAAO,KAAK;AAAA,MACd;AAAA,MAEQ,QAAW,IAAgB;AACjC,YAAI;AACF,iBAAO,GAAG;AAAA,QACZ,SAAS,KAAK;AACZ,cAAK,IAA2B,SAAS,YAAY,CAAC,KAAK,QAAQ,IAAI,EAAG,OAAM;AAChF,iBAAO,GAAG;AAAA,QACZ;AAAA,MACF;AAAA,MAEA,IAAI,KAAK,MAAc;AACrB,aAAK,QAAQ;AACb,YAAI,KAAK,OAAQ,MAAK,OAAO,OAAO;AAAA,MACtC;AAAA,MAEA,IAAI,WAAoB;AACtB,eAAO,KAAK,WAAW;AAAA,MACzB;AAAA,MAEA,IAAI,MAA0B;AAC5B,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,MAEA,OAAa;AACX,YAAI,KAAK,OAAQ,MAAK,OAAO,IAAI;AAAA,YAC5B,MAAK,KAAK;AAAA,MACjB;AAAA,MAEA,WAAiB;AACf,YAAI,KAAK,OAAQ,MAAK,OAAO,SAAS;AAAA,YACjC,MAAK,KAAK;AAAA,MACjB;AAAA,MAEA,OAAmB;AACjB,cAAM,OAAO,KAAK,OAAO;AACzB,YAAI,KAAK,QAAQ,QAAQ,KAAK,SAAS,CAAC,KAAK,OAAO;AAClD,gBAAM,EAAE,KAAK,SAAAC,SAAQ,IAAI,cAAc,KAAK,OAAO,KAAK,MAAM,KAAK,IAAI;AACvE,eAAK,OAAO;AACZ,cAAIA,SAAS,MAAK,OAAO;AAAA,QAC3B;AACA,YAAI,CAAC,KAAK,MAAM;AACd,eAAK,OAAO,MAAM,IAAI,KAAK;AAC3B,eAAK,OAAO,KAAK,QAAQ,MAAM,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC;AAC1D,eAAK,SAAS,KAAK,KAAK;AAAA,QAC1B;AACA,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,OAAe;AACb,YAAI,KAAK,OAAQ,QAAO,KAAK,OAAO,KAAK;AACzC,aAAK,KAAK;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,MAAM,KAAa,IAAwB;AACzC,YAAI,KAAK,OAAQ,QAAO,KAAK,OAAO,KAAK,IAAI,GAAG;AAChD,cAAM,QAAQ,KAAK,KAAK;AACxB,cAAM,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;AACrD,eAAO,MAAM,SAAS,IAAI,KAAK,CAAC;AAAA,MAClC;AAAA,MAEA,KAAK,KAAmB;AACtB,YAAI,KAAK,YAAY,UAAa,MAAM,KAAK,QAAS,OAAM,IAAI,UAAU,OAAO;AAAA,MACnF;AAAA,MAEA,OAAO,OAAmB,IAAoB;AAC5C,YAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,cAAM,MAAM,KAAK,MAAM;AACvB,aAAK,KAAK,GAAG;AACb,aAAK,QAAQ;AACb,YAAI,KAAK,QAAQ;AACf,eAAK,OAAO,MAAM,IAAI,KAAK;AAC3B,iBAAO,MAAM;AAAA,QACf;AACA,aAAK,KAAK;AACV,aAAK,OAAO,GAAG;AACf,cAAM,MAAM,KAAK;AACjB,aAAK,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,KAAK,MAAM;AAC/C,aAAK,KAAK,KAAK,IAAI,KAAK,IAAI,GAAG;AAC/B,YAAI,KAAK,KAAK,OAAQ,KAAI,KAAK,GAAG,KAAK,QAAQ,EAAE;AACjD,YAAI,IAAI,OAAO,EAAE;AACjB,aAAK,SAAS,KAAK,IAAI,KAAK,QAAQ,GAAG;AACvC,eAAO,MAAM;AAAA,MACf;AAAA,MAEA,OAAO,OAAuC;AAC5C,cAAM,EAAE,OAAO,IAAI,KAAK;AACxB,YAAI,CAAC,UAAU,KAAK,SAAU,QAAO;AACrC,aAAK,QAAQ,KAAK;AAClB,aAAK,MAAM;AACX,cAAM,MAAM,KAAK,QAAQ,MAAM,OAAO,KAAK,KAAK,IAAI,KAAK,MAAM,KAAK,CAAC;AACrE,YAAI,CAAC,KAAK,QAAQ;AAChB,eAAK,OAAO;AACZ,eAAK,SAAS;AAAA,QAChB;AACA,eAAO;AAAA,MACT;AAAA,MAEA,SAAS,MAAoB;AAC3B,aAAK,KAAK,IAAI;AACd,aAAK,QAAQ;AACb,YAAI,KAAK,QAAQ;AACf,eAAK,OAAO,SAAS,IAAI;AACzB;AAAA,QACF;AACA,aAAK,KAAK;AACV,aAAK,OAAO,IAAI;AAChB,aAAK,QAAQ;AACb,YAAI,OAAO,KAAK,OAAQ,CAAC,KAAK,KAAoB,KAAK,GAAG,KAAK,QAAQ,IAAI;AAC3E,aAAK,SAAS;AAAA,MAChB;AAAA,MAEQ,OAAO,MAAoB;AACjC,cAAM,MAAM,KAAK;AACjB,YAAI,IAAI,UAAU,KAAM;AACxB,cAAM,QAAQ,IAAI,WAAW,KAAK,IAAI,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC;AACjE,cAAM,IAAI,IAAI,SAAS,GAAG,KAAK,MAAM,CAAC;AACtC,aAAK,OAAO;AAAA,MACd;AAAA,MAEA,SAAe;AACb,aAAK,WAAW;AAChB,aAAK,QAAQ,IAAI;AAAA,MACnB;AAAA,MAEA,SAAe;AACb,YAAI,KAAK,SAAS,KAAK,SAAU;AACjC,YAAI,KAAK,OAAQ,MAAK,OAAO,OAAO;AAAA,YAC/B,MAAK,OAAO;AAAA,MACnB;AAAA,MAEA,WAAoB;AAClB,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,UAAmB;AACjB,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAuB;AACrB,YAAI,KAAK,OAAQ,QAAO,KAAK,OAAO,KAAK,GAAG,KAAK,OAAO,KAAK,CAAC;AAC9D,eAAO,KAAK,KAAK,EAAE,MAAM,GAAG,KAAK,MAAM;AAAA,MACzC;AAAA,MAEA,QAAc;AACZ,YAAI,KAAK,YAAY,CAAC,KAAK,MAAO;AAClC,aAAK,QAAQ,KAAK;AAClB,YAAI,KAAK,OAAQ,MAAK,OAAO,MAAM;AAAA,iBAC1B,CAAC,KAAK,KAAM;AAAA,iBACZ,KAAK,SAAS,CAAC,KAAK,GAAG,QAAQ;AACtC,gBAAM,QAAQ,KAAK,KAAK,MAAM,GAAG,KAAK,MAAM;AAC5C,eAAK,QAAQ,MAAM,KAAK,GAAG,UAAU,KAAK,MAAM,OAAO,IAAI,CAAC;AAAA,QAC9D,OAAO;AACL,gBAAM,EAAE,OAAO,IAAI,KAAK;AACxB,gBAAM,MAAM,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,EAAE;AAC9C,eAAK,QAAQ,MAAM,OAAO,KAAK,KAAK,IAAI,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC;AAAA,QAC1E;AACA,aAAK,QAAQ;AACb,aAAK,QAAQ;AACb,aAAK,OAAO;AACZ,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAEO,IAAM,YAAN,MAAgB;AAAA,MACrB,SAAS;AAAA,MACT,OAAO;AAAA,MACP;AAAA,MAES;AAAA,MACA;AAAA,MACA;AAAA,MACT;AAAA,MACA,YAAY,QAAoBC,WAAmBC,WAAmB,QAAiB;AACrF,aAAK,SAAS;AACd,aAAK,WAAWD;AAChB,aAAK,WAAWC;AAChB,aAAK,SAAS;AAAA,MAChB;AAAA,MAEA,IAAI,OAAe;AACjB,eAAO,KAAK,OAAO;AAAA,MACrB;AAAA,MAEA,OAAe;AACb,eAAO,KAAK,OAAO,KAAK;AAAA,MAC1B;AAAA,MAEA,MAAM,KAAa,IAAwB;AACzC,eAAO,KAAK,OAAO,MAAM,KAAK,EAAE;AAAA,MAClC;AAAA,MAEA,KAAK,KAAyB;AAC5B,cAAM,MAAM,KAAK,OAAO,MAAM,KAAK,KAAK,MAAM;AAC9C,aAAK,UAAU,IAAI;AACnB,eAAO;AAAA,MACT;AAAA,MAEA,OAAO,OAAmB,IAAoB;AAC5C,eAAO,KAAK,OAAO,OAAO,OAAO,EAAE;AAAA,MACrC;AAAA,MAEA,MAAM,OAA2B;AAC/B,YAAI,KAAK,UAAU,MAAM,SAAS,GAAG;AACnC,eAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI,MAAM,MAAM;AAClD,gBAAM,MAAM,KAAK,OAAO,OAAO,KAAK;AACpC,cAAI,QAAQ,QAAW;AACrB,iBAAK,SAAS;AACd,mBAAO,MAAM;AAAA,UACf;AAAA,QACF;AACA,YAAI,KAAK,OAAQ,MAAK,SAAS,KAAK,OAAO,KAAK;AAChD,cAAM,IAAI,KAAK,OAAO,OAAO,OAAO,KAAK,MAAM;AAC/C,aAAK,UAAU;AACf,eAAO;AAAA,MACT;AAAA,MAEA,SAAS,MAAoB;AAC3B,aAAK,OAAO,SAAS,IAAI;AAAA,MAC3B;AAAA,MAEA,QAAc;AACZ,aAAK,OAAO,MAAM;AAAA,MACpB;AAAA,IACF;AA4CA,IAAM,YAAY;AAwEX,IAAM,cAAc;AAC3B,IAAM,YAAY;AAQX,IAAM,SAAS;AACf,IAAM,WAAW;AACjB,IAAM,QAAQ;AACrB,IAAMN,QAAO;AACb,IAAMC,aAAY;AAClB,IAAMC,QAAO;AACN,IAAM,UAAUF,QAAOC,aAAYC;AACnC,IAAM,eAAe;AACrB,IAAM,oBAAoB,UAAU,eAAe,KAAK;AAc/D,IAAM,YAAN,MAAgB;AAAA,MACL,QAAQ,oBAAI,IAAoB;AAAA,MAChC,SAAS,oBAAI,IAAoB;AAAA,MACzB,SAAS,oBAAI,IAAyB;AAAA,MACtC,QAAQ,oBAAI,IAAyB;AAAA,MACrC,SAAS,oBAAI,IAAsC;AAAA,MACnD;AAAA,MACT;AAAA,MACR,YAAY,QAAgC;AAC1C,aAAK,SAAS;AACd,aAAK,OAAO,SAAS,QAAQ,KAAK,QAAQ,MAAM,IAAI;AAAA,MACtD;AAAA,MAEA,IAAI,KAA0B,MAAc,OAAqB;AAC/D,YAAI,KAAK,MAAM,OAAO,KAAK,OAAO,OAAO,KAAK,OAAO,OAAO,KAAK,MAAM,QAAQ;AAC7E,eAAK,MAAM;AACb,YAAI,IAAI,MAAM,KAAK;AACnB,YAAI,WAAW,OAAO;AACpB,gBAAM,QAAQ,KAAK,OAAO,IAAI,GAAG,KAAK,oBAAI,IAAY;AACtD,gBAAM,IAAI,IAAI;AACd,eAAK,OAAO,IAAI,KAAK,KAAK;AAAA,QAC5B;AACA,YAAI,CAAC,KAAK,OAAQ;AAClB,cAAM,KAAK,QAAQ,SAAS,IAAI,GAAG,IAAI;AACvC,cAAM,MAAM,OAAO,KAAK;AACxB,YAAI,QAAQ,EAAG,OAAM,KAAK,OAAO,KAAK,IAAI;AAAA,MAC5C;AAAA,MAEA,QAAc;AACZ,YAAI,CAAC,KAAK,OAAQ;AAClB,cAAM,MAAM,QAAQ,KAAK,KAAK,QAAQ,MAAM;AAC5C,YAAI,QAAQ,KAAK,KAAM;AACvB,aAAK,OAAO,GAAG;AACf,aAAK,OAAO;AAAA,MACd;AAAA,MAEA,QAAQ,MAA0B,MAAM,GAAS;AAC/C,cAAM,MAAO,MAAM,aAAc;AACjC,YAAI,KAAK,QAAQ;AACf,gBAAM,IAAI,KAAK,QAAQ,KAAK,QAAQ,SAAS,SAAY,IAAI,SAAS,IAAI,GAAG,GAAG;AAChF,eAAK,OAAO,IAAI,CAAC;AACjB,eAAK,OAAO;AACZ,cAAI,SAAS,OAAW,MAAK,MAAM;AAAA,cAC9B,MAAK,KAAK,SAAS,IAAI,GAAG,GAAG;AAAA,QACpC;AACA,YAAI,SAAS,OAAW;AACxB,aAAK,MAAM,OAAO,IAAI;AACtB,aAAK,OAAO,OAAO,IAAI;AAAA,MACzB;AAAA,MAEA,QAAQ,OAA0B,MAAM,GAAS;AAC/C,cAAM,MAAO,MAAM,aAAc;AACjC,YAAI,MAAM,WAAW,KAAK,CAAC,KAAK,OAAQ,MAAK,MAAM;AACnD,YAAI,CAAC,KAAK,OAAQ;AAClB,mBAAW,CAAC,GAAG,IAAI,MAAM,MAAM,SAAS,IAAI,MAAM,IAAI,QAAQ,IAAI,CAAC,CAAC,GAAG,QAAQ,GAAG;AAChF,gBAAM,IAAI,KAAK,QAAQ,KAAK,QAAQ,MAAM,MAAM,IAAI,MAAM,CAAC;AAC3D,cAAI,MAAM,SAAS,EAAG,MAAK,OAAO,IAAI,CAAC;AACvC,eAAK,OAAO;AAAA,QACd;AACA,YAAI,MAAM,WAAW,EAAG;AACxB,mBAAW,CAAC,GAAG,IAAI,KAAK,MAAM,QAAQ,GAAG;AACvC,eAAK,MAAM,OAAO,IAAI;AACtB,eAAK,OAAO,OAAO,IAAI;AACvB,eAAK,KAAK,SAAS,IAAI,GAAG,MAAM,IAAI,MAAM,CAAC;AAAA,QAC7C;AACA,aAAK,aAAa;AAAA,MACpB;AAAA,MAEA,MAAM,MAAc,MAAsC;AACxD,YAAI,CAAC,KAAK,OAAQ,QAAO;AACzB,aAAK,MAAM;AACX,cAAM,MAAM,KAAK,MAAM,IAAI,IAAI;AAC/B,YAAI,OAAO,SAAS,OAAO,OAAO,IAAI,QAAQ,SAAU,QAAO,IAAI;AACnE,YAAI;AACF,iBAAO,KAAK,EAAE,OAAO;AAAA,QACvB,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEQ,QAAQ,QAAoB,MAAc,KAAqB;AACrE,cAAM,IAAI,QAAQ,IAAI,QAAQ,QAAQ,CAAC,IAAI;AAC3C,cAAM,KAAKF,QAAQ,IAAIC,aAAaC;AACpC,gBAAQ,MAAM,QAAQ,IAAI,CAAC;AAC3B,gBAAQ,MAAM,QAAQ,KAAK,GAAG,IAAI;AAClC,gBAAQ,MAAM,QAAQ,KAAK,GAAG,GAAG;AACjC,gBAAQ,MAAM,QAAQ,IAAI,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,MAEQ,OAAO,MAAoB;AACjC,cAAM,SAAS,KAAK;AACpB,cAAM,SAAkC,CAAC;AACzC,iBAAS,IAAI,KAAK,OAAO,GAAG,KAAK,QAAQ,OAAO,KAAK,QAAQD,YAAW,KAAK;AAC3E,gBAAM,KAAKD,QAAQ,IAAIC,aAAaC;AACpC,gBAAM,MAAM,QAAQ,KAAK,QAAQ,EAAE;AACnC,gBAAM,OAAO,QAAQ,KAAK,QAAQ,KAAK,CAAC;AACxC,gBAAM,MAAM,QAAQ,KAAK,QAAQ,KAAK,CAAC;AACvC,cAAI,QAAQ,KAAK,SAAS,KAAK,QAAQ,KAAK,QAAQ,EAAE,MAAM,EAAG;AAC/D,iBAAO,KAAK,CAAC,MAAM,GAAG,CAAC;AAAA,QACzB;AACA,YAAI,OAAO,SAAS,OAAO,KAAK,KAAM,MAAK,MAAM;AAAA,YAC5C,YAAW,CAAC,MAAM,GAAG,KAAK,OAAQ,MAAK,KAAK,MAAM,GAAG;AAAA,MAC5D;AAAA,MAEQ,KAAK,MAAc,KAAmB;AAC5C,cAAM,QAAQ;AAAA,UACZ,GAAI,KAAK,OAAO,IAAI,IAAI,KAAK,CAAC;AAAA,UAC9B,GAAI,QAAQ,IAAI,CAAC,IAAK,KAAK,MAAM,IAAI,GAAG,KAAK,CAAC;AAAA,QAChD;AACA,mBAAW,QAAQ,OAAO;AACxB,eAAK,MAAM,OAAO,IAAI;AACtB,eAAK,OAAO,OAAO,IAAI;AAAA,QACzB;AACA,aAAK,OAAO,OAAO,IAAI;AACvB,YAAI,QAAQ,EAAG,MAAK,MAAM,OAAO,GAAG;AAAA,MACtC;AAAA,MAEQ,eAAqB;AAC3B,mBAAW,CAAC,KAAK,KAAK,KAAK,KAAK,QAAQ;AACtC,qBAAW,QAAQ,MAAO,KAAI,YAAY,IAAI,IAAI,IAAI,KAAK,CAAC,GAAI,KAAI,OAAO,IAAI;AAAA,QACjF;AACA,aAAK,OAAO,MAAM;AAAA,MACpB;AAAA,MAEQ,QAAc;AACpB,aAAK,OAAO,MAAM;AAClB,aAAK,MAAM,MAAM;AACjB,aAAK,OAAO,MAAM;AAClB,aAAK,OAAO,MAAM;AAClB,aAAK,MAAM,MAAM;AAAA,MACnB;AAAA,IACF;AAQA,IAAM,WAAW;AAEjB,IAAM,SAAN,MAAa;AAAA,MACM;AAAA,MACA;AAAA,MACA,QAAQ,oBAAI,IAAoB;AAAA,MAChC,QAAQ,oBAAI,IAAoB;AAAA,MACjD,YAAY,MAA8B,QAA6B;AACrE,aAAK,OAAO;AACZ,aAAK,SAAS;AAAA,MAChB;AAAA,MAEQ,GAAG,KAA+C;AACxD,eAAO,QAAQ,KAAK,SAAS,KAAK,QAAQ,KAAK;AAAA,MACjD;AAAA,MAEA,MAAM,MAAkC;AACtC,eAAO,KAAK,MAAM,IAAI,IAAI;AAAA,MAC5B;AAAA,MAEA,IAAI,KAA0B,MAAc,KAAmB;AAC7D,cAAM,OAAO,KAAK,GAAG,GAAG;AACxB,YAAI,KAAK,QAAQ,SAAU,MAAK,MAAM;AACtC,aAAK,IAAI,MAAM,GAAG;AAAA,MACpB;AAAA,MAEA,QAAQ,KAA0B,MAAuB;AACvD,YAAI,KAAK,SAAS,OAAW,QAAO;AACpC,cAAM,OAAO,KAAK,GAAG,GAAG;AACxB,cAAM,MAAM,KAAK,IAAI,IAAI;AACzB,YAAI,QAAQ,OAAW,QAAO;AAC9B,cAAM,QAAQ,KAAK,KAAK,aAAa,KAAK,IAAI;AAC9C,YAAI,CAAC,MAAM,QAAS,MAAK,IAAI,MAAM,MAAM,GAAG;AAC5C,eAAO,MAAM;AAAA,MACf;AAAA,IACF;AAkBA,IAAM,WACJ,CAAC,OAAkB,MAAc,OAAgB,SACjD,CAAC,MAAc,SAA6E;AAC1F,UAAI,CAAC,QAAQ,MAAO,QAAO;AAC3B,YAAM,EAAE,MAAM,IAAI,GAAG,GAAG,IAAI;AAC5B,WAAK,EAAE;AACP,YAAM,IAAI,MAAM,OAAO,MAAM,EAAE;AAC/B,UAAI,OAAO,OAAW,MAAK,IAAI,MAAM,OAAO,MAAM,EAAE;AACpD,aAAO;AAAA,IACT;AAeF,IAAM,QAAN,MAAY;AAAA,MACO,KAAK,oBAAI,QAAwB;AAAA,MACjC;AAAA,MACA;AAAA,MACjB,YAAY,MAA8B,KAAmB;AAC3D,aAAK,OAAO;AACZ,aAAK,MAAM;AAAA,MACb;AAAA,MAEA,IAAI,OAAe,KAAK,KAAK,IAAI,GAAS;AACxC,aAAK,GAAG,IAAI,OAAO,EAAE;AAAA,MACvB;AAAA,MAEA,MAAM,OAAwB;AAC5B,YAAI,CAAC,KAAK,MAAM,QAAQ,EAAG,QAAO;AAClC,eAAO,KAAK,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,OAAO,qBAAqB;AAAA,MACzE;AAAA,IACF;AAAA;AAAA;;;AC1oBO,SAAS,YAAY,QAAiC;AAC3D,SAAO,CAAC,QAAQ,KAAK,QAAQ,aAAa,GAAG,QAAQ,KAAK,QAAQ,gBAAgB,CAAC;AACrF;AAEO,SAAS,aAAa,QAAoB,CAAC,KAAK,IAAI,GAAsB;AAC/E,UAAQ,MAAM,QAAQ,kBAAkB,IAAI;AAC5C,UAAQ,MAAM,QAAQ,eAAe,GAAG;AAC1C;AAYO,SAAS,QAAQ,QAAoB,IAAY,IAAoB;AAC1E,UAAQ,QAAQ,KAAK,QAAQ,EAAE,MAAM,KAAK,QAAQ,KAAK,QAAQ,EAAE,IAAI;AACvE;AAEO,SAAS,cAAc,KAAwB,OAAqB;AACzE,MAAI,QAAQ;AACV,YAAQ,MAAM,IAAI,WAAW,KAAK,GAAG,cAAc,GAAG,cAAc,KAAK,KAAK,QAAQ,KAAK,CAAC;AAChG;AA+DO,SAAS,gBAAgBK,SAAgB,SAAmC;AACjF,UAAQA,SAAQ;AAAA,IACd,KAAK;AACH,aAAO,EAAE,IAAI,MAAM,MAAM,SAAS,OAAO,QAAQ;AAAA,IACnD,KAAK;AACH,aAAO,EAAE,IAAI,MAAM,MAAM,OAAO;AAAA,IAClC,KAAK,iBAAiB;AACpB,UAAI;AACF,eAAO,EAAE,IAAI,MAAM,MAAM,QAAQ,MAAM,KAAK,MAAM,QAAQ,OAAO,OAAO,CAAC,EAAE;AAAA,MAC7E,QAAQ;AACN,eAAO,EAAE,IAAI,OAAO,OAAO,OAAO,SAAS,mCAAmC;AAAA,MAChF;AAAA,IACF;AAAA,IACA,KAAK,kBAAkB;AACrB,UAAI;AACF,cAAM,SAAS,KAAK,MAAM,QAAQ,OAAO,OAAO,CAAC;AAKjD,cAAMC,SACJ,OAAO,OAAO,UAAU,YAAY,yBAAyB,KAAK,OAAO,KAAK,IAC1E,OAAO,QACP;AACN,cAAMC,WAAU,OAAO,OAAO,WAAWD,MAAK;AAC9C,eAAO,OAAO,WAAW,OACrB,EAAE,IAAI,OAAO,OAAAA,QAAO,SAAAC,UAAS,QAAQ,KAAK,IAC1C,EAAE,IAAI,OAAO,OAAAD,QAAO,SAAAC,SAAQ;AAAA,MAClC,QAAQ;AACN,eAAO,EAAE,IAAI,OAAO,OAAO,OAAO,SAAS,oCAAoC;AAAA,MACjF;AAAA,IACF;AAAA,IACA;AACE,aAAO,EAAE,IAAI,OAAO,OAAO,OAAO,SAAS,4BAA4BF,OAAM,GAAG;AAAA,EACpF;AACF;AAOO,SAAS,SAAS,KAAkC;AACzD,MAAI,IAAI,aAAa,eAAe;AAClC,UAAM,IAAI,MAAM,+BAA+B,IAAI,UAAU,MAAM,aAAa,GAAG;AAAA,EACrF;AACA,SAAO;AAAA,IACL,QAAQ,IAAI,WAAW,KAAK,GAAG,cAAc;AAAA,IAC7C,QAAQ,IAAI,WAAW,KAAK,gBAAgB;AAAA,EAC9C;AACF;AAlLA,IAGa,gBACA,kBACA,eACA,kBAEA,aACA,WACA,cACA,aACA,aACA,cACA,WACA,WAEA,eAEA,cAEA,cAEA,gBAEA,iBAEA,cAEA,aAEA,YAEA,eAEA,kBAaA,YAGP,KAgBO,gBACA,mBACA,iBAEA,kBACA,iBACA,iBACA,kBAEA,0BAEA,eAEA,kBAEA,mBAoBP,SACA;AAvGN;AAAA;AAAA;AAGO,IAAM,iBAAiB;AACvB,IAAM,mBAAmB,iBAAiB;AAC1C,IAAM,gBAAgB;AACtB,IAAM,mBAAmB,mBAAmB,gBAAgB;AAE5D,IAAM,cAAc;AACpB,IAAM,YAAY;AAClB,IAAM,eAAe;AACrB,IAAM,cAAc;AACpB,IAAM,cAAc;AACpB,IAAM,eAAe;AACrB,IAAM,YAAY;AAClB,IAAM,YAAY;AAElB,IAAM,gBAAgB;AAEtB,IAAM,eAAe;AAErB,IAAM,eAAe;AAErB,IAAM,iBAAiB;AAEvB,IAAM,kBAAkB;AAExB,IAAM,eAAe;AAErB,IAAM,cAAc;AAEpB,IAAM,aAAa;AAEnB,IAAM,gBAAgB;AAEtB,IAAM,mBAAmB;AAazB,IAAM,aAAa,CAAC,SACzB,SAAS,WAAc,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AAEtD,IAAM,MAAM,KAAK;AAgBV,IAAM,iBAAiB;AACvB,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;AAExB,IAAM,mBAAmB;AACzB,IAAM,kBAAkB;AACxB,IAAM,kBAAkB;AACxB,IAAM,mBAAmB;AAEzB,IAAM,2BAA2B,OAAO;AAExC,IAAM,gBAAgB,mBAAmB;AAEzC,IAAM,mBAAmB;AAEzB,IAAM,oBAAoB;AAoBjC,IAAM,UAAU,IAAI,YAAY;AAChC,IAAM,UAAU,IAAI,YAAY;AAAA;AAAA;;;AClFzB,SAAS,UAAU,KAA+C;AACvE,QAAM,QAAQ,OAAO,SAAS,IAAI,sBAAsB,IAAI,EAAE;AAC9D,SAAO,SAAS,IAAI,KAAK,IAAI,OAAO,gBAAgB,IAAI;AAC1D;AAxBA,IAUM,UACA,SAEO,UAEA,YAWA;AA1Bb;AAAA;AAAA;AAAA;AAOA;AACA;AAEA,IAAM,WAAW;AACjB,IAAM,UAAU;AAET,IAAM,WAAW;AAEjB,IAAM,aAAN,cAAyB,MAAM;AAAA,MACpC,cAAc;AACZ,cAAM,aAAa;AAAA,MACrB;AAAA,IACF;AAOO,IAAM,cAAN,MAAkB;AAAA,MACd;AAAA,MAET;AAAA,MAEA;AAAA,MAEA;AAAA,MAEA;AAAA,MAEiB;AAAA,MACA;AAAA,MACA;AAAA,MACR;AAAA,MACT,YACEG,OACA,QACA,KAEA,KACA,KACA;AACA,aAAK,OAAOA;AACZ,aAAK,SAAS;AACd,aAAK,MAAM;AACX,aAAK,MAAM;AACX,aAAK,MAAM,IAAI,WAAW,OAAO,IAAI,kBAAkB,gBAAgB,CAAC;AACxE,YAAI,CAAC,IAAK,SAAQ,MAAM,KAAK,KAAK,UAAU,QAAQ;AAAA,MACtD;AAAA,MAEA,MAAM,KAAqB;AACzB,YAAI,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC,IAAI,KAAK,KAAK,KAAK;AACrD,kBAAQ,IAAI,KAAK,KAAK,SAAS,CAAC;AAChC,iBAAO;AAAA,QACT;AACA,aAAK,cAAc;AACnB,cAAM,MAAM,QAAQ,IAAI,KAAK,KAAK,UAAU,CAAC,IAAI;AACjD,cAAM,UAAU,KAAK,UAAU;AAC/B,cAAM,UAAU,KAAK,UAAU;AAC/B,aAAK,KAAK,YAAY;AAAA,UACpB,MAAM;AAAA,UACN,QAAQ;AAAA,YACN;AAAA,YACA;AAAA,YACA,QAAQ,KAAK;AAAA,YACb,KAAK,KAAK,IAAI;AAAA,YACd,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAA,YAC7B,GAAI,WAAW,OAAO,IAAI,EAAE,QAAQ,IAAI,CAAC;AAAA,UAC3C;AAAA,QACF,CAAC;AACD,eAAO;AAAA,MACT;AAAA,MAEA,SAAe;AACb,gBAAQ,IAAI,KAAK,KAAK,SAAS,CAAC;AAChC,aAAK,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAAA,MAClD;AAAA,MAEA,MAAM,KAAsB;AAC1B,eAAO,OAAO,YAAY,OAAO,QAAQ,KAAK,KAAK,KAAK,QAAQ;AAAA,MAClE;AAAA,MAEA,cAAsB;AACpB,cAAM,QAAS,WAAgE,WAC3E;AACJ,eAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,SAAS,KAAK,GAAG,CAAC;AAAA,MAC1D;AAAA,IACF;AAAA;AAAA;;;ACtFA,SAAS,MAAM,MAAoB;AACjC,SAAO,EAAE,MAAM,CAAC,GAAG,MAAM,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,MAAM,MAAM,EAAE,GAAG,MAAM,EAAE;AAC5E;AAEA,SAAS,KAAK,MAAgC;AAC5C,SAAO,KAAK,KAAK,SAAS,GAAG;AAC3B,UAAM,OAAO,KAAK,KAAK,MAAM;AAC7B,QAAI,SAAS,IAAK;AAClB,QAAI,SAAS,MAAM;AACjB,WAAK,KAAK,IAAI;AACd;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,QAAQ,MAAsB;AACrC,QAAM,OAAO,MAAM,IAAI;AACvB,WAAS,OAAO,KAAK,IAAI,GAAG,SAAS,QAAW,OAAO,KAAK,IAAI,EAAG,MAAK,KAAK,KAAK,IAAI;AACtF,SAAO,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC;AAChC;AAEA,SAAS,KAAK,MAAY,MAAsB;AAC9C,SAAO,QAAQ,IAAI,CAAC,GAAG,KAAK,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE;AACnE;AAEA,SAAS,OAAO,MAAY,QAAyB;AACnD,MAAI,EAAE,KAAK,OAAO,SAAU,QAAO;AACnC,MAAI,OAAO,WAAW,GAAG,EAAG,MAAK,KAAK,SAAS;AAC/C,OAAK,OAAO,CAAC,GAAG,OAAO,MAAM,GAAG,EAAE,OAAO,CAAC,MAAM,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI;AACvE,SAAO;AACT;AAOO,SAAS,aAAa,IAAgB,MAAsB;AACjE,QAAM,OAAO,MAAM,IAAI;AACvB,WAAS,OAAO,KAAK,IAAI,GAAG,SAAS,QAAW,OAAO,KAAK,IAAI,GAAG;AACjE,UAAM,KAAK,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC;AAC7C,QAAI;AACJ,QAAI;AACF,eAAS,GAAG,MAAM,EAAE,EAAE,iBAAiB,GAAG,SAAS,EAAE,IAAI;AAAA,IAC3D,QAAQ;AACN,aAAO,KAAK,MAAM,IAAI;AAAA,IACxB;AACA,QAAI,WAAW,OAAW,MAAK,KAAK,KAAK,IAAI;AAAA,aACpC,CAAC,OAAO,MAAM,MAAM,GAAG;AAC9B,YAAM,OAAO,OAAO,IAAI,MAAM,mCAAmC,GAAG,EAAE,MAAM,QAAQ,CAAC;AAAA,IACvF;AAAA,EACF;AACA,SAAO,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC;AAChC;AAEO,SAAS,aAAa,IAAgB,MAAkC;AAC7E,QAAM,OAAO,MAAM,IAAI;AACvB,WAAS,OAAO,KAAK,IAAI,GAAG,SAAS,QAAW,OAAO,KAAK,IAAI,GAAG;AACjE,UAAM,KAAK,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC;AAC7C,QAAI;AACJ,QAAI;AACF,eAAS,GAAG,MAAM,EAAE,EAAE,iBAAiB,GAAG,SAAS,EAAE,IAAI;AAAA,IAC3D,QAAQ;AACN,YAAM,OAAO,KAAK;AAClB,aAAO,KAAK,KAAK,CAAC,MAAM,MAAM,OAAO,MAAM,IAAI,IAAI,SAAY,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG;AAAA,IACvF;AACA,QAAI,WAAW,OAAW,MAAK,KAAK,KAAK,IAAI;AAAA,aACpC,CAAC,OAAO,MAAM,MAAM,EAAG,QAAO;AAAA,EACzC;AACA,SAAO,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC;AAChC;AAOA,eAAsB,kBAAkB,IAAqB,MAA+B;AAC1F,QAAM,OAAO,MAAM,IAAI;AACvB,WAAS,OAAO,KAAK,IAAI,GAAG,SAAS,QAAW,OAAO,KAAK,IAAI,GAAG;AACjE,UAAM,KAAK,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC;AAC7C,QAAI;AACJ,QAAI;AACF,gBAAU,MAAM,GAAG,MAAM,EAAE,GAAG,iBAAiB,MAAM,GAAG,SAAS,EAAE,IAAI;AAAA,IACzE,QAAQ;AACN,aAAO,KAAK,MAAM,IAAI;AAAA,IACxB;AACA,QAAI,WAAW,OAAW,MAAK,KAAK,KAAK,IAAI;AAAA,aACpC,CAAC,OAAO,MAAM,MAAM,EAAG,QAAO,QAAQ,IAAI;AAAA,EACrD;AACA,SAAO,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC;AAChC;AArGA,IAAM;AAAN;AAAA;AAAA;AAAA,IAAM,WAAW;AAAA;AAAA;;;ACEV,SAAS,MAAM,MAAuB;AAC3C,SAAO,SAAS,OAAO,KAAK,WAAW,GAAG,GAAG,GAAG;AAClD;AAEO,SAAS,UAAU,MAAuB;AAC/C,MAAI,KAAK,WAAW,GAAG,GAAG,GAAG,EAAG,QAAO;AACvC,SAAO,SAAS,UAAU,KAAK,WAAW,OAAO;AACnD;AAEO,SAAS,WACd,MACA,MAC0C;AAC1C,MAAI,CAAC,UAAU,IAAI,EAAG,QAAO;AAC7B,MAAI,QAAQ,KAAK,SAAS,EAAG,QAAO;AACpC,SAAO,SAAS,SAAS,UAAU;AACrC;AAEO,SAAS,YACd,MACA,MAC0C;AAC1C,MAAI,SAAS,WAAW,KAAK,WAAW,QAAQ,EAAG,QAAO;AAC1D,MAAI,SAAS,UAAU,CAAC,UAAU,IAAI,EAAG,QAAO;AAChD,SAAO,QAAQ,KAAK,SAAS,IAAI,WAAW;AAC9C;AA3BA,IAAa;AAAb;AAAA;AAAA;AAAO,IAAM,MAAM;AAAA;AAAA;;;ACQZ,SAAS,cAAsB;AACpC,SAAO,KAAK,OAAO,YAAY,aAAa,YAAY,IAAI,KAAK,GAAI;AACvE;AAEA,SAAS,MAAM,KAAuC;AACpD,SAAO,IAAI,cAAc,KAAK,OAAO,aAAa;AACpD;AAaO,SAAS,cAAc,KAA0C;AACtE,UAAQ,OAAO,IAAI,cAAc,QAAQ,gBAAgB,IAAI,MAAM,GAAG,IAAI;AAC1E,MAAI,CAAC,MAAO;AACZ,aAAW;AACX,eAAa,YAAY;AACzB,QAAMC,QAAO,CAAC,OAAmBC,QAAeC,QAAe,YAC7D;AAAA,IACE,MAAM,QAAQ,OAAOD,QAAOC,QAAO,OAAO;AAAA,IAC1C,YAAY,KAAK,QAAQ,KAAK,OAAOD,MAAK,MAAMC;AAAA,EAClD;AACF,EAAC,QAA6C,OAAOF;AACvD;AAEO,SAAS,UAAaA,OAAe,SAAS,MAAS;AAC5D,QAAM,QAAQ;AACd,MAAI,CAAC,SAAS,CAAC,OAAQ,QAAOA,MAAK;AACnC,QAAMG,SAAQ,OAAO,YAAY,CAAC;AAClC,QAAM,OAAO,QAAQ,KAAK,OAAO,IAAI;AACrC,UAAQ,MAAM,OAAO,MAAM,OAAOA,MAAK;AACvC,MAAI;AACF,WAAOH,MAAK;AAAA,EACd,UAAE;AACA,UAAM,MAAM,OAAO,YAAY,CAAC;AAChC,YAAQ,MAAM,OAAO,MAAM,QAAQ,MAAMG,SAAQ,MAAMA,SAAQ,GAAG;AAAA,EACpE;AACF;AAEO,SAAS,gBAAoC;AAClD,MAAI,CAAC,SAAS,CAAC,SAAU,QAAO;AAChC,QAAM,MAAM,YAAY;AACxB,QAAM,UAAU,OAAO,QAAQ,KAAK,OAAO,OAAO,CAAC,IAAI,UAAU,UAAU,GAAG,EAAE;AAChF,SAAO,OAAO,KAAK,IAAI,GAAG,MAAM,aAAa,OAAO,CAAC,IAAI;AAC3D;AAEO,SAAS,UAAU,KAAwB,KAAiD;AACjG,QAAM,QAAQ,OAAO,QAAQ,KAAK,MAAM,GAAG,GAAG,IAAI,CAAC;AACnD,MAAI,SAAS,EAAG,QAAO,EAAE,MAAM,OAAO,SAAS,MAAM;AACrD,SAAO,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,KAAK,GAAG,SAAS,KAAK;AACzD;AAjEA,IAIM,OACA,SACA,MAUF,OACA,UACA,YAES;AApBb;AAAA;AAAA;AAAA;AAIA,IAAM,QAAQ;AACd,IAAM,UAAU;AAChB,IAAM,OAAO;AAYb,IAAI,aAAa;AAEV,IAAM,UAK2B,QAAQ,KAAK,KAAK,OAAO;AAAA;AAAA;;;ACkJ1D,SAAS,cAAc,MAAsB;AAClD,QAAM,QAAkB,CAAC;AACzB,aAAW,QAAQ,KAAK,MAAM,GAAG,GAAG;AAClC,QAAI,SAAS,MAAM,SAAS,IAAK;AACjC,QAAI,SAAS,KAAM,OAAM,IAAI;AAAA,QACxB,OAAM,KAAK,IAAI;AAAA,EACtB;AACA,SAAO,IAAI,MAAM,KAAK,GAAG,CAAC;AAC5B;AAMO,SAAS,QAAQ,MAAsB;AAC5C,MAAI,KAAK;AACT,MAAI,KAAK;AACT,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,IAAI,KAAK,WAAW,CAAC;AAC3B,SAAK,KAAK,KAAK,KAAK,GAAG,UAAU;AACjC,SAAK,KAAK,KAAK,KAAK,GAAG,UAAU;AAAA,EACnC;AACA,OAAK,KAAK,KAAK,KAAM,OAAO,IAAK,UAAU,IAAI,KAAK,KAAK,KAAM,OAAO,IAAK,UAAU;AACrF,OAAK,KAAK,KAAK,KAAM,OAAO,IAAK,UAAU,IAAI,KAAK,KAAK,KAAM,OAAO,IAAK,UAAU;AACrF,SAAO,cAAc,UAAU,OAAO,OAAO,MAAM;AACrD;AApMA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAca,MAWA;AAzBb;AAAA;AAAA;AAAA;AAcO,IAAM,OAAuB,OAAO,OAAO;AAAA,MAChD,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ,CAAC,CAAC;AAAA,IACZ,CAAC;AAGM,IAAM,aAAa;AAAA;AAAA;;;ACcnB,SAAS,cAAc,KAA4B;AACxD,MAAI,QAAQ,IAAI,KAAM,QAAO;AAC7B,MAAI,SAAS,IAAI,GAAG,EAAG,QAAO;AAC9B,SAAO,mBAAmB,IAAI,GAAG,IAAI,WAAW;AAClD;AAMO,SAAS,OAAO,KAAqB;AAC1C,SAAO,KAAK;AACd;AAEO,SAAS,UAAU,MAAwB;AAChD,QAAM,MAAgB,CAAC;AACvB,WAAS,MAAM,GAAG,OAAO,IAAI,MAAO,KAAI,OAAO,OAAO,GAAG,EAAG,KAAI,KAAK,GAAG;AACxE,SAAO;AACT;AAzDA,IAAa,KAoCP,oBACA,UAqCO,gBAiBA,IAIA;AA/Fb;AAAA;AAAA;AAAO,IAAM,MAAM;AAAA,MACjB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAIA,IAAM,qBAA0C,oBAAI,IAAI,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC;AACtF,IAAM,WAAgC,oBAAI,IAAI,CAAC,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC;AAqC/E,IAAM,iBAET;AAAA,MACF,QAAQ,IAAI;AAAA,MACZ,SAAS,IAAI;AAAA,MACb,SAAS,IAAI;AAAA,MACb,SAAS,IAAI;AAAA,MACb,SAAS,IAAI;AAAA,IACf;AASO,IAAM,KAAK,EAAE,MAAM,GAAG,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAK;AAIpE,IAAM,iBAAoC,OAAO,OAAO;AAAA,MAC7D,MAAM,GAAG;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,QAAQ;AAAA,IACV,CAAC;AAAA;AAAA;;;ACnCM,SAAS,UACd,KACA,WAA2B,CAAC,GACU;AACtC,QAAM,OAAiB,IAA2B;AAClD,MAAI,CAAC,YAAY,OAAO,IAAI,EAAG,QAAO,EAAE,KAAK,SAAS;AACtD,MAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM,MAAM,8BAA8B;AAChF,WAAO,EAAE,KAAK,SAAS;AAAA,EACzB;AACA,QAAM,QACH,KAAmC,gBAAgB,cACpD,KAAK,eAAe,KACpB,KAAK,eAAe,KAAK,OAAO;AAClC,MAAI,MAAO,QAAO,EAAE,KAAK,SAAS;AAClC,QAAMC,QAAO,IAAI,WAAW,KAAK,UAAU;AAC3C,EAAAA,MAAK,IAAI,IAAI,WAAW,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU,CAAC;AACtE,SAAO,EAAE,KAAK,EAAE,GAAG,KAAK,MAAMA,MAAK,GAAG,UAAU,CAAC,GAAG,UAAUA,MAAK,MAAM,EAAE;AAC7E;AAEO,SAAS,gBAAwB;AACtC,SAAO;AACT;AAIO,SAAS,gBAAsB;AACpC;AACF;AAEO,SAAS,YAAoB;AAClC,SAAO,QAAQ;AACjB;AASO,SAAS,uBACd,KACAC,OACA,OAA8E,CAAC,GAC7D;AAClB,QAAM,QAAkB,SAAS,GAAG;AACpC,QAAM,EAAE,QAAQ,OAAO,IAAI;AAC3B,QAAMC,QAAwB,KAAK,SAAS,CAAC,GAAG,GAAG,GAAG,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC;AAC9E,QAAM,MAAM,KAAK,QAAQ,MAAM,YAAY,IAAI;AAC/C,MAAI,MAAM;AACV,MAAI,UAAU;AAEd,QAAM,QAAQ,CAAC,OACb,QAAQ,KAAK,QAAQ,WAAW,MAAM,mBAAmB,QAAQ,KAAK,QAAQ,SAAS,MAAM;AAE/F,WAAS,UAAU,IAAY,OAAwB;AACrD,aAAS,SAAS,GAAG,SAAS,cAAc,UAAU;AACpD,eAAS,IAAI,GAAG,IAAI,aAAa,IAAK,KAAI,MAAM,EAAE,EAAG,QAAO;AAC5D,UAAI,IAAI,KAAK,MAAO,QAAO;AAAA,IAC7B;AACA,WAAO;AAAA,EACT;AAEA,WAASC,SAAQC,QAAqB;AACpC,gBAAY,KAAK,IAAI,IAAI,IAAIA,QAAO,WAAW,IAAI,WAAW;AAAA,EAChE;AAEA,WAAS,WAAW,IAAY,UAAkB,OAAqB;AACrE,UAAMA,SAAQ,IAAI;AAClB,QAAI,YAAY,UAAU,WAAW,UAAU,IAAIA,SAAQ,OAAO,GAAG;AACnE,MAAAD,SAAQC,MAAK;AACb;AAAA,IACF;AACA,eAAS;AACP,YAAM,YAAY,QAAQ,KAAK,QAAQ,SAAS;AAChD,UAAI,MAAM,EAAE,GAAG;AACb,QAAAD,SAAQC,MAAK;AACb;AAAA,MACF;AACA,YAAM,YAAY,WAAW,IAAI;AACjC,UAAI,aAAa,EAAG,OAAM,UAAU,OAAO,KAAK;AAChD,MAAAF,MAAK,QAAQ,WAAW,WAAW,SAAS;AAAA,IAC9C;AAAA,EACF;AAEA,SAAO;AAAA,IACL,KAAK,OAAOG,YAAW,OAAO,QAAQ,CAAC,GAAiB;AACtD,UAAI,KAAK,OAAQ,eAAc,KAAK,KAAK,OAAO,CAAC;AACjD,YAAM,EAAE,KAAK,SAAS,IAAI,UAAU,OAAO,KAAK;AAChD,YAAM,KAAK,EAAE;AACb,eAAS,OAAO,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;AAC1C,UAAI,MAAyB;AAC7B,UAAIC,UAAS;AACb,UAAI,SAAS;AACb,cAAQ,MAAM,QAAQ,WAAW,EAAE;AACnC,UAAI;AACF,mBAAS;AACP,kBAAQ,MAAM,QAAQ,aAAa,iBAAiB;AACpD,gBAAM,MACJ,WAAW,IACP,EAAE,MAAM,kBAAkB,IAAI,IAAI,IAClC,EAAE,MAAM,mBAAmB,IAAI,OAAO;AAC5C,cAAI;AACF,gBAAI,WAAW,KAAK,SAAS,SAAS,EAAG,CAAAL,MAAK,YAAY,KAAK,QAAQ;AAAA,gBAClE,CAAAA,MAAK,YAAY,GAAG;AAAA,UAC3B,QAAQ;AACN,kBAAM,UAAU,OAAO,KAAK;AAAA,UAC9B;AACA,qBAAW,IAAI,IAAI,IAAII,YAAW,KAAK;AACvC,gBAAM,QAAQ,QAAQ,QAAQ,aAAa,cAAc;AACzD,gBAAM,QAAQ,QAAQ,KAAK,QAAQ,WAAW;AAC9C,gBAAM,KAAK,QAAQ,QAAQ,cAAc,eAAe;AACxD,cAAI,OAAO,UAAU,QAAQ,KAAK,QAAQ,KAAK,SAAS,QAAQ,OAAO;AACrE,kBAAM,UAAU,OAAO,KAAK;AAAA,UAC9B;AACA,cAAI,QAAQ,MAAM;AAChB,YAAAC,UAAS,QAAQ,KAAK,QAAQ,YAAY;AAC1C,kBAAM,IAAI,WAAW,KAAK;AAAA,UAC5B;AACA,cAAI,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,MAAM;AACzC,oBAAU;AACV,cAAI,UAAU,MAAO;AAErB,cAAI,UAAU,EAAG,OAAM,UAAU,OAAO,KAAK;AAAA,QAC/C;AAAA,MACF,UAAE;AACA,gBAAQ,MAAM,QAAQ,WAAW,CAAC;AAClC,gBAAQ,MAAM,QAAQ,aAAa,cAAc;AAAA,MACnD;AACA,aAAO,gBAAgBA,SAAQ,GAAG;AAAA,IACpC;AAAA,EACF;AACF;AAEA,SAAS,WAAWC,OAAc,MAAc,QAAyC;AACvF,QAAM,MAAM,UAAUA,OAAM,qBAAqB,IAAI,GAAG;AACxD,SAAO,SAAS,OAAO,OAAO,KAAK,EAAE,OAAO,CAAC,IAAI;AACnD;AAEA,SAAS,SAAS,MAA0D;AAC1E,SAAO,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAI,KAAK,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC,EAAG;AACtF;AAEO,SAAS,sBACd,WACA,OAMI,CAAC,GACc;AACnB,QAAM,SAAS,KAAK,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;AACjD,QAAMF,aAAY,KAAK,aAAa;AACpC,MAAI,WAAuD,CAAC;AAC5D,MAAI,OAAO;AACX,MAAI,OAAgC;AAEpC,WAAS,IAAI,KAAyB,MAAc,UAAyC;AAC3F,WAAO;AACP,UAAM,UAAU,kBAAkB,IAAI,IAAI,EAAE,IAAIA,aAAY,OAAO;AACnE,UAAM,SAAS,UAAU,KAAK,KAAK,SAAS,qBAAqB,IAAI,KAAK,QAAQ;AAClF,QAAI,CAAC,OAAO,GAAI,OAAM,WAAW,OAAO,OAAO,MAAM,OAAO,MAAM;AAClE,WAAO;AAAA,EACT;AACA,WAAS,MAAM,KAAyB,MAA0B;AAChE,UAAM,IAAI,IAAI,KAAK,IAAI;AACvB,QAAI,EAAE,MAAM,EAAE,SAAS,QAAS,QAAO,EAAE;AACzC,UAAM,WAAW,OAAO,IAAI;AAAA,EAC9B;AACA,WAASG,MAAK,KAAyB,MAAuB;AAC5D,UAAM,IAAI,IAAI,KAAK,IAAI;AACvB,QAAI,EAAE,MAAM,EAAE,SAAS,OAAQ,QAAO,EAAE;AACxC,UAAM,WAAW,OAAO,IAAI;AAAA,EAC9B;AAEA,QAAM,WAAW,CAAC,KAAyB,MAAc,aAAoC;AAC3F,UAAM,MAAM,OAAO,EAAE,UAAU,KAAc,IAAI;AACjD,WAAO;AACP,UAAM,IAAI,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,QAAQ;AAChD,QAAI,EAAE,MAAM,EAAE,SAAS,OAAQ,QAAO,gBAAgB,EAAE,IAAI;AAAA,EAC9D;AAEA,QAAM,KAAK,CAAC,QAA2C;AAAA,IACrD,UAAU,CAAC,SAAS,MAAM,EAAE,IAAI,QAAQ,MAAM,GAAG,GAAG,GAAG,IAAI;AAAA,IAC3D,WAAW,CAAC,MAAM,MAAM,SAAS;AAC/B,eAAS,EAAE,IAAI,SAAS,MAAM,MAAM,MAAM,GAAI,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,GAAI,GAAG,GAAG,GAAG,IAAI;AAAA,IACvF;AAAA,IACA,OAAO,CAAC,MAAM,QAAQ,QAAQ,YAC5B,MAAM,EAAE,IAAI,SAAS,MAAM,QAAQ,QAAQ,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC,GAAI,GAAG,GAAG,GAAG,IAAI;AAAA,IAC3F,QAAQ,CAAC,MAAM,QAAQ,MAAM,aAAa;AACxC,YAAM,QAAQ,KAAK,eAAe,KAAK,KAAK,eAAe,KAAK,OAAO;AACvE,YAAM,QAAQ,YAAY,SAAS,KAAK,kBAAkB;AAC1D,YAAM,cAAc,QAAQ,CAAC,KAAK,MAAqB,IAAI,CAAC;AAC5D,eAAS,EAAE,IAAI,UAAU,MAAM,QAAQ,MAAM,GAAG,GAAG,GAAG,MAAM,WAAW;AAAA,IACzE;AAAA,IACA,UAAU,CAAC,MAAM,WAAW;AAC1B,eAAS,EAAE,IAAI,YAAY,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI;AAAA,IACxD;AAAA,IACA,QAAQ,CAAC,MAAM,SAASA,MAAK,EAAE,IAAI,UAAU,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI;AAAA,EACxE;AAEA,SAAO;AAAA,IACL,GAAG,GAAG,CAAC,CAAC;AAAA,IACR,QAAQ,CAAC,WAAW,GAAG,EAAE,OAAO,CAAC;AAAA,IACjC,MAAM,CAAC,WAAWA,MAAK,EAAE,IAAI,QAAQ,MAAM,KAAK,OAAO,GAAG,GAAG,MAAM;AAAA,IACnE,UAAU,CAAC,WAAW;AACpB,YAAM,IAAI,gBAAgBA,MAAK,EAAE,IAAI,QAAQ,MAAM,KAAK,OAAO,GAAG,GAAG,CAAC;AACtE,UAAI,CAAC,EAAG,OAAM,WAAW,OAAO,GAAG;AACnC,aAAO;AAAA,IACT;AAAA,IACA,MAAM,CAAC,SAAS;AACd,YAAM,IAAI,gBAAgBA,MAAK,EAAE,IAAI,QAAQ,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AACrE,UAAI,CAAC,EAAG,OAAM,WAAW,OAAO,IAAI;AACpC,aAAO;AAAA,IACT;AAAA,IACA,OAAO,CAAC,SAAS;AACf,YAAM,IAAI,gBAAgBA,MAAK,EAAE,IAAI,SAAS,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AACtE,UAAI,CAAC,EAAG,OAAM,WAAW,OAAO,IAAI;AACpC,aAAO;AAAA,IACT;AAAA,IACA,SAAS,CAAC,SAAS;AACjB,YAAM,OAAOA,MAAK,EAAE,IAAI,WAAW,KAAK,GAAG,IAAI;AAC/C,UAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ,GAAG;AACrE,cAAM,WAAW,OAAO,IAAI;AAAA,MAC9B;AACA,aAAO;AAAA,IACT;AAAA,IACA,aAAa,CAAC,SAAS;AACrB,YAAM,OAAOA,MAAK,EAAE,IAAI,gBAAgB,KAAK,GAAG,IAAI;AACpD,UAAI,CAAC,MAAM,QAAQ,IAAI,EAAG,OAAM,WAAW,OAAO,IAAI;AACtD,aAAO,KAAK,IAAI,CAAC,UAA6C;AAC5D,YAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,OAAO,MAAM,CAAC,MAAM,SAAU,OAAM,WAAW,OAAO,IAAI;AAEvF,YAAI,MAAM,CAAC,MAAM,KAAM,QAAO,CAAC,MAAM,CAAC,GAAG,IAAI;AAC7C,cAAM,OAAO,gBAAgB,MAAM,CAAC,CAAC;AACrC,YAAI,CAAC,KAAM,OAAM,WAAW,OAAO,IAAI;AACvC,eAAO,CAAC,MAAM,CAAC,GAAG,IAAI;AAAA,MACxB,CAAC;AAAA,IACH;AAAA,IACA,QAAQ,CAAC,SAAS;AAChB,YAAM,IAAIA,MAAK,EAAE,IAAI,UAAU,KAAK,GAAG,IAAI;AAC3C,UAAI,OAAO,MAAM,UAAW,OAAM,WAAW,OAAO,IAAI;AACxD,aAAO;AAAA,IACT;AAAA,IACA,OAAO,CAAC,MAAM,SAAS;AACrB,UAAI,EAAE,IAAI,SAAS,MAAM,WAAW,MAAM,GAAI,SAAS,SAAY,EAAE,KAAK,IAAI,CAAC,EAAG,GAAG,IAAI;AAAA,IAC3F;AAAA,IACA,IAAI,CAAC,SAAS;AACZ,UAAI,EAAE,IAAI,MAAM,KAAK,GAAG,IAAI;AAAA,IAC9B;AAAA,IACA,QAAQ,CAAC,MAAM,OAAO;AACpB,YAAM,IAAI,IAAI,EAAE,IAAI,UAAU,MAAM,MAAM,MAAM,GAAG,GAAG,IAAI;AAC1D,YAAM,MAAM,EAAE,MAAM,EAAE,SAAS,SAAU,EAAE,KAA2B,MAAM;AAC5E,aAAO,OAAO,QAAQ,WAAW,MAAM;AAAA,IACzC;AAAA,IACA,MAAM,CAAC,MAAM,IAAIC,YAAW;AAC1B,UAAI,EAAE,IAAI,QAAQ,MAAM,MAAM,MAAM,IAAI,GAAIA,UAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAG,GAAG,IAAI;AAAA,IAChF;AAAA,IACA,QAAQ,CAAC,SAAS;AAChB,UAAI,EAAE,IAAI,UAAU,KAAK,GAAG,IAAI;AAAA,IAClC;AAAA,IACA,OAAO,CAAC,SAAS;AACf,UAAI,EAAE,IAAI,SAAS,KAAK,GAAG,IAAI;AAAA,IACjC;AAAA,IACA,SAAS,CAAC,QAAQ,aAAa;AAC7B,UAAI,EAAE,IAAI,WAAW,MAAM,UAAU,MAAM,OAAO,GAAG,QAAQ;AAAA,IAC/D;AAAA,IACA,UAAU,CAAC,SAAS;AAClB,YAAM,SAASD,MAAK,EAAE,IAAI,YAAY,KAAK,GAAG,IAAI;AAClD,UAAI,OAAO,WAAW,SAAU,OAAM,WAAW,OAAO,IAAI;AAC5D,aAAO;AAAA,IACT;AAAA,IACA,OAAO,CAAC,MAAM,SAAS;AACrB,eAAS,EAAE,IAAI,SAAS,MAAM,KAAK,GAAG,IAAI;AAAA,IAC5C;AAAA,IACA,QAAQ,CAAC,MAAM,SAAS,SAAS,QAAQ;AACvC,eAAS,EAAE,IAAI,UAAU,MAAM,SAAS,SAAS,GAAI,MAAM,EAAE,IAAI,IAAI,CAAC,EAAG,GAAG,IAAI;AAAA,IAClF;AAAA,IACA,UAAU,MAAM;AACd,iBAAW,EAAE,UAAU,KAAK;AAAA,IAC9B;AAAA,IACA,cAAc,MAAM;AAClB,aAAO;AACP,aAAO;AAAA,IACT;AAAA,IACA,YAAY,MAAM;AAChB,aAAO;AACP,aAAO;AAAA,IACT;AAAA,IACA,SAAS,CAAC,MAAM,SAAS,SAAS,QAAQ;AACxC,UAAI,EAAE,IAAI,WAAW,MAAM,SAAS,SAAS,GAAI,MAAM,EAAE,IAAI,IAAI,CAAC,EAAG,GAAG,IAAI;AAAA,IAC9E;AAAA,IACA,QAAQ,CAAC,MAAM,SAAS;AACtB,UAAI,EAAE,IAAI,UAAU,MAAM,KAAK,GAAG,IAAI;AAAA,IACxC;AAAA,IACA,MAAM,CAAC,MAAM,IAAI,MAAM,cAAc;AACnC,UAAI,EAAE,IAAI,QAAQ,MAAM,MAAM,MAAM,IAAI,MAAM,GAAI,YAAY,EAAE,UAAU,IAAI,CAAC,EAAG,GAAG,EAAE;AAAA,IACzF;AAAA,IACA,QAAQ,CAAC,MAAM,MAAME,aAAY;AAC/B,YAAM,QAAQ,EAAE,GAAI,SAAS,SAAY,EAAE,KAAK,IAAI,CAAC,GAAI,GAAIA,WAAU,EAAE,SAAAA,SAAQ,IAAI,CAAC,EAAG;AACzF,YAAM,IAAI,IAAI,EAAE,IAAI,UAAU,MAAM,GAAG,OAAO,UAAU,KAAK,GAAG,IAAI;AACpE,UAAI,CAAC,EAAE,MAAM,EAAE,SAAS,OAAQ,QAAO;AACvC,YAAM,KAAK,gBAAgB,EAAE,IAAI;AACjC,UAAI,CAAC,GAAI,QAAO;AAChB,YAAM,EAAE,KAAK,IAAI,EAAE;AACnB,aAAO,OAAO,SAAS,WAAW,EAAE,GAAG,IAAI,KAAK,IAAI;AAAA,IACtD;AAAA,IACA,OAAO,CAAC,MAAM,KAAK,KAAKD,SAAQ,WAAW;AACzC,YAAM,MAAM,EAAE,GAAI,QAAQ,SAAY,EAAE,IAAI,IAAI,CAAC,GAAI,GAAI,QAAQ,SAAY,EAAE,IAAI,IAAI,CAAC,EAAG;AAC3F;AAAA,QACE;AAAA,UACE,IAAIA,UAAS,UAAU;AAAA,UACvB;AAAA,UACA,GAAG;AAAA,UACH,GAAI,WAAW,SAAY,EAAE,OAAO,IAAI,CAAC;AAAA,QAC3C;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,GAAI,KAAK,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,IACtC,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAAA,IACpC,GAAI,KAAK,UAAU,EAAE,SAAS,IAAI,WAAW,KAAK,OAAO,EAAE,IAAI,CAAC;AAAA,IAChE,QAAQ,CAAC,MAAM,MAAM,OAAO,UAAU,aAAa;AACjD,UAAI,EAAE,IAAI,UAAU,MAAM,MAAM,MAAM,MAAM,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC,EAAG,GAAG,IAAI;AAAA,IACvF;AAAA,IACA,MAAM,CAAC,MAAME,OAAM,MAAM,QAAQ,OAAO,GAAG,OAAO,CAAC,MAAM;AACvD,YAAM,QAAQA,QAAO,IAAI,MAAM,OAAO,IAAI;AAC1C,UAAI,SAAS,GAAG;AACd,eAAOH,MAAK,EAAE,IAAI,QAAQ,MAAM,MAAM,OAAO,MAAM,GAAG,SAAS,IAAI,EAAE,GAAG,IAAI;AAAA,MAC9E;AACA,UAAI,EAAE,IAAI,QAAQ,MAAM,MAAM,GAAI,WAAW,SAAY,EAAE,OAAO,IAAI,CAAC,EAAG,GAAG,IAAI;AACjF,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,CAAC,OAAO,QAAQ,iBAAiBA,MAAK,EAAE,IAAI,UAAU,KAAK,GAAG,IAAI,CAAC;AAAA,IAC3E,SAAS,CAAC,OAAOG,UACfH;AAAA,MACE,EAAE,IAAI,WAAW,MAAM,KAAK,QAAQ,OAAO,MAAM,KAAK,UAAUG,KAAI,EAAE;AAAA,MACtE;AAAA,IACF;AAAA,EACJ;AACF;AAvZA,IA6DM,eAEF,OAyBA,OAUE,SACA,aACA,cACA,YACA,UACA;AAvGN;AAAA;AAAA;AAAA;AACA;AACA;AAaA;AA8CA,IAAM,gBAAqC,oBAAI,IAAI,CAAC,GAAG,aAAa,aAAa,WAAW,CAAC;AAE7F,IAAI,QAAQ;AAyBZ,IAAI,QAAQ;AAUZ,IAAM,UAAU;AAChB,IAAM,cAAc;AACpB,IAAM,eAAe;AACrB,IAAM,aAAa;AACnB,IAAM,YAAY,WAAW,WAAW,uBAAuB,MAAM;AACrE,IAAM,cAAc;AAAA;AAAA;;;AC9DpB,eAAsB,QACpB,QACAC,QACA,MACA,YAA2B,kBACZ;AACf,QAAM,SAAS,UAAU,QAAQA,QAAO,IAAI;AAC5C,MAAI,OAAO,MAAO,OAAM,OAAO;AACjC;AAEO,SAAS,wBACd,KACAC,OACA,YAA2B,kBACR;AACnB,QAAM,EAAE,QAAQ,OAAO,IAAI,SAAS,GAAG;AACvC,MAAI,MAAM;AACV,MAAI,OAAyB,QAAQ,QAAQ;AAE7C,iBAAe,MAAM,IAA2B;AAC9C,eAAS;AACP,YAAM,YAAY,QAAQ,KAAK,QAAQ,SAAS;AAChD,UACE,QAAQ,KAAK,QAAQ,WAAW,MAAM,mBACtC,QAAQ,KAAK,QAAQ,SAAS,MAAM,IACpC;AACA;AAAA,MACF;AACA,YAAM,QAAQ,QAAQ,WAAW,WAAW,SAAS;AAAA,IACvD;AAAA,EACF;AAEA,iBAAe,KAAK,OAAkD;AACpE,UAAM,EAAE,KAAK,SAAS,IAAI,UAAU,KAAK;AACzC,UAAM,KAAK,EAAE;AACb,QAAI,MAAyB;AAC7B,QAAIC,UAAS;AACb,QAAI,SAAS;AACb,YAAQ,MAAM,QAAQ,WAAW,EAAE;AACnC,QAAI;AACF,iBAAS;AACP,gBAAQ,MAAM,QAAQ,aAAa,iBAAiB;AACpD,YAAI,WAAW,EAAG,CAAAD,MAAK,YAAY,EAAE,MAAM,kBAAkB,IAAI,IAAI,GAAG,QAAQ;AAAA,YAC3E,CAAAA,MAAK,YAAY,EAAE,MAAM,mBAAmB,IAAI,OAAO,CAAC;AAC7D,cAAM,MAAM,EAAE;AACd,cAAM,QAAQ,QAAQ,QAAQ,aAAa,cAAc;AACzD,cAAM,QAAQ,QAAQ,KAAK,QAAQ,WAAW;AAC9C,cAAM,KAAK,QAAQ,QAAQ,cAAc,eAAe;AACxD,YAAI,OAAO,UAAU,QAAQ,KAAK,QAAQ,KAAK,SAAS,QAAQ,OAAO;AACrE,iBAAO,EAAE,IAAI,OAAO,OAAO,OAAO,SAAS,uBAAuB;AAAA,QACpE;AACA,YAAI,QAAQ,MAAM;AAChB,UAAAC,UAAS,QAAQ,KAAK,QAAQ,YAAY;AAC1C,gBAAM,IAAI,WAAW,KAAK;AAAA,QAC5B;AACA,YAAI,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,MAAM;AACzC,kBAAU;AACV,YAAI,UAAU,MAAO;AACrB,YAAI,UAAU,EAAG,QAAO,EAAE,IAAI,OAAO,OAAO,OAAO,SAAS,wBAAwB;AAAA,MACtF;AAAA,IACF,UAAE;AACA,cAAQ,MAAM,QAAQ,WAAW,CAAC;AAClC,cAAQ,MAAM,QAAQ,aAAa,cAAc;AAAA,IACnD;AACA,WAAO,gBAAgBA,SAAQ,GAAG;AAAA,EACpC;AAEA,SAAO;AAAA,IACL,KAAK,KAAK;AACR,YAAM,MAAM,KAAK,KAAK,MAAM,KAAK,GAAG,CAAC;AACrC,aAAO,IAAI,MAAM,MAAM,MAAS;AAChC,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAnHA,IAkCM;AAlCN;AAAA;AAAA;AACA;AACA;AAgCA,IAAM,mBAAkC,CAAC,GAAG,GAAG,MAE3C,QAGA,UAAU,GAAG,GAAG,CAAC;AAAA;AAAA;;;ACJd,SAAS,aAAa,MAAoD;AAC/E,MAAI,SAAS,OAAW,QAAO,EAAE,IAAI,aAAa;AAClD,MAAI,CAAC,OAAO,UAAU,IAAI,KAAM,OAAkB,KAAM,OAAkB,KAAO;AAC/E,UAAM,IAAI,YAAY,UAAU,OAAO;AAAA,EACzC;AACA,SAAO,EAAE,IAAI,cAAc,KAAqB;AAClD;AAEO,SAAS,OAAO,MAAuB;AAC5C,MAAI,CAAC,OAAO,UAAU,IAAI,KAAM,OAAkB,KAAM,OAAkB,MAAQ;AAChF,UAAM,IAAI,YAAY,UAAU,OAAO;AAAA,EACzC;AACA,SAAO;AACT;AAEO,SAAS,UAAU,QAA4C,IAAyB;AAC7F,QAAM,EAAE,OAAAC,QAAO,SAAAC,SAAQ,IAAI;AAC3B,QAAM,WAAW,OAAOA,aAAY,YAAYA,aAAYD,UAAS,SAAS,IAAI,EAAE;AACpF,SAAO,IAAI;AAAA,IACTA;AAAA,IACA,WAAW,GAAG,EAAE,KAAKC,QAAO,KAAK;AAAA,IACjC,WAAWA,WAAU;AAAA,EACvB;AACF;AAEA,SAAS,aAAa,MAAqB,QAAgD;AACzF,MAAI,CAAC,OAAQ,QAAO;AACpB,SAAO,IAAI,QAAc,CAACC,aAAY;AACpC,UAAM,OAAO,MAAM;AACjB,aAAO,oBAAoB,SAAS,IAAI;AACxC,MAAAA,SAAQ;AAAA,IACV;AACA,WAAO,iBAAiB,SAAS,MAAM,EAAE,MAAM,KAAK,CAAC;AACrD,SAAK,KAAK,MAAM,IAAI;AAAA,EACtB,CAAC;AACH;AAWA,SAAS,SAAS,UAA8C;AAC9D,MAAI,SAAS;AACb,aAAW,OAAO,SAAS,KAAK,EAAG,WAAU,OAAO,GAAG;AACvD,SAAO;AACT;AArFA,IAYa,aAaP,UA8DO;AAvFb;AAAA;AAAA;AACA;AAEA;AAOA;AAEO,IAAM,cAAN,cAA0B,MAAM;AAAA,MAC5B;AAAA,MAEA;AAAA,MAET,YAAYC,OAAc,MAAc,QAAiB;AACvD,cAAM,GAAG,IAAI,KAAKA,KAAI,EAAE;AACxB,aAAK,OAAO;AACZ,aAAK,OAAOA;AACZ,aAAK,SAAS;AAAA,MAChB;AAAA,IACF;AAEA,IAAM,WAAgC,oBAAI,IAAI;AAAA,MAC5C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAsDM,IAAM,WAAN,MAAe;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACT,WAAW,oBAAI,IAA2B;AAAA,MAC1C,UAAU;AAAA,MACV,WAA6B,QAAQ,QAAQ;AAAA,MACrD,MAAM;AAAA,MACE,WAAW,EAAE,QAAQ,GAAG,SAAS,EAAE;AAAA,MACnC,WAAW;AAAA,MACnB,UAAU;AAAA,MACV;AAAA,MAEA,YAAY,GAAoB;AAC9B,aAAK,SAAS,IAAI,WAAW,EAAE,KAAK,GAAG,cAAc;AACrD,aAAK,YAAY,EAAE;AACnB,aAAK,YAAY,EAAE;AACnB,aAAK,UAAU,EAAE;AAAA,MACnB;AAAA,MAEA,MAAM,IAAI,KAAgD;AACxD,cAAM,SAAS,MAAM,KAAK,UAAU,KAAK,GAAG;AAC5C,aAAK,QAAQ;AACb,eAAO;AAAA,MACT;AAAA,MAEA,MAAM,KAAK,KAAgD;AACzD,cAAM,SAAS,MAAM,KAAK,IAAI,GAAG;AACjC,YAAI,CAAC,OAAO,GAAI,OAAM,UAAU,QAAQ,IAAI,EAAE;AAC9C,eAAO;AAAA,MACT;AAAA,MAEA,MAAM,KAAK,KAA2C;AACpD,cAAM,SAAS,MAAM,KAAK,KAAK,GAAG;AAClC,eAAO,OAAO,MAAM,OAAO,SAAS,SAAS,OAAO,OAAO;AAAA,MAC7D;AAAA,MAEA,MAAM,MAAM,KAA8C;AACxD,cAAM,SAAS,MAAM,KAAK,KAAK,GAAG;AAClC,eAAO,OAAO,MAAM,OAAO,SAAS,UAAU,OAAO,QAAQ,IAAI,WAAW,CAAC;AAAA,MAC/E;AAAA,MAEA,MAAM,SACJ,KACA,QACA,OACuB;AACvB,mBAAS;AACP,gBAAM,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK;AACvC,gBAAM,SAAS,MAAM,KAAK,QAAQ,IAAI,MAAM;AAC5C,cAAI,OAAO,GAAI,QAAO;AACtB,cAAI,OAAO,UAAU,QAAS,OAAM,UAAU,QAAQ,IAAI,EAAE;AAAA,QAC9D;AAAA,MACF;AAAA,MAEQ,OAAiB,CAAC;AAAA,MAE1B,IAAI,IAAkB;AACpB,aAAK,KAAK,KAAK,EAAE;AAAA,MACnB;AAAA,MAEA,MAAc,OAAO,KAAkB,OAA+C;AACpF,cAAM,MAAM,KAAK;AACjB,aAAK,OAAO,CAAC;AACb,cAAM,IAAI,MAAM,KAAK,UAAU,KAAK;AAAA,UAClC,IAAI;AAAA,UACJ;AAAA,UACA,GAAI,IAAI,SAAS,IAAI,EAAE,IAAI,IAAI,CAAC;AAAA,QAClC,CAAC;AACD,cAAM,KAAK,EAAE,MAAM,EAAE,SAAS,SAAU,EAAE,OAAkB;AAC5D,YAAI,OAAO,OAAW,SAAQ,EAAE;AAChC,aAAK,QAAQ;AACb,YAAI,OAAO,OAAW,OAAM,IAAI,YAAY,EAAE,KAAK,QAAQ,EAAE,OAAO,cAAc;AAClF,eAAO;AAAA,MACT;AAAA,MAEA,MAAc,QAAQ,IAAY,QAA6C;AAC7E,mBAAS;AACP,gBAAM,OAAO,QAAQ,KAAK,KAAK,QAAQ,WAAW;AAClD,gBAAM,QAAQ,MAAM,KAAK,IAAI,EAAE,IAAI,cAAc,GAAG,CAAC;AACrD,cAAI,MAAM,MAAM,MAAM,UAAU,SAAU,QAAO;AACjD,cAAI,QAAQ,SAAS;AACnB,kBAAM,KAAK,IAAI,EAAE,IAAI,gBAAgB,GAAG,CAAC;AACzC,kBAAM,OAAO;AAAA,UACf;AACA,gBAAM,aAAa,QAAQ,KAAK,QAAQ,aAAa,MAAM,KAAK,SAAS,GAAG,MAAM;AAAA,QACpF;AAAA,MACF;AAAA,MAEA,UAAgB;AACd,cAAM,UAAU,QAAQ,SAAS,KAAK,QAAQ,eAAe,CAAC;AAC9D,mBAAW,OAAO,UAAU,OAAO,GAAG;AACpC,gBAAM,UAAU,KAAK,SAAS,IAAI,GAAG;AACrC,cAAI,CAAC,SAAS;AACZ,gBAAI,EAAE,KAAK,UAAU,OAAO,GAAG,GAAI,MAAK,MAAM,GAAG;AACjD;AAAA,UACF;AACA,cAAI;AACF,oBAAQ,QAAQ,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,KAAK,MAAM,GAAG,CAAC;AAAA,UAC9D,SAAS,KAAK;AACZ,iBAAK,MAAM,GAAG;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,MAAM,KAAoB;AAChC,aAAK,UAAU;AACf,aAAK,QAAQ,GAAG;AAAA,MAClB;AAAA,MAEA,MAAM,QAAuB;AAC3B,YAAI,KAAK,SAAU;AACnB,aAAK,WAAW;AAChB,mBAAS;AACP,gBAAM,QAAQ,KAAK,QAAQ,eAAe,GAAG,KAAK,SAAS;AAC3D,eAAK,QAAQ;AAAA,QACf;AAAA,MACF;AAAA,MAEA,MAAM,aAA4B;AAChC,mBAAS;AACP,gBAAM,QAAQ,KAAK,QAAQ,YAAY,GAAG,KAAK,SAAS;AACxD,eAAK,OAAO;AAAA,QACd;AAAA,MACF;AAAA,MAEA,SAAe;AACb,eAAO,QAAQ,KAAK,KAAK,QAAQ,UAAU,MAAM,EAAG,SAAQ,KAAK,KAAK,QAAQ,YAAY,CAAC;AAAA,MAC7F;AAAA,MAEA,YAAY,KAAmD;AAC7D,YAAI,KAAK,SAAS,IAAI,GAAG,EAAG,QAAO;AACnC,YAAI,KAAK,UAAU,OAAO,GAAG,EAAG,QAAO;AACvC,eAAO,cAAc,GAAG;AAAA,MAC1B;AAAA,MAEA,WAAW,KAAa,SAA8D;AACpF,YAAI,QAAQ,IAAI,QAAQ,QAAQ,IAAI,MAAM;AACxC,iBAAO,QAAQ,OAAO,IAAI,YAAY,UAAU,QAAQ,CAAC;AAAA,QAC3D;AACA,YAAI,KAAK,UAAU;AACjB,cAAI;AACF,iBAAK,UAAU,KAAK,UAAU,KAAK,OAAO;AAC1C,mBAAO,QAAQ,QAAQ;AAAA,UACzB,SAAS,KAAK;AACZ,mBAAO,QAAQ,OAAO,GAAG;AAAA,UAC3B;AAAA,QACF;AACA,cAAM,MAAM,KAAK,SAAS,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,CAAC;AAC9D,aAAK,WAAW,IAAI,MAAM,MAAM,MAAS;AACzC,eAAO;AAAA,MACT;AAAA,MAEQ,UACN,MACA,KACA,SACM;AACN,cAAM,EAAE,UAAU,QAAQ,IAAI,KAAK,SAAS,KAAK,OAAO;AACxD,cAAM,WAAW,YAAY,YAAY,OAAO,GAAG,IAAI;AACvD,cAAM,SAAS,SAAS,QAAQ;AAChC,YAAI,WAAW,KAAK,SAAS,UAAU,YAAY,KAAK,SAAS,WAAW,aAAa,GAAG;AAC1F,gBAAM,IAAI,KAAK,EAAE,IAAI,YAAY,QAAQ,SAAS,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC,EAAG,CAAC;AACrF,cAAI,CAAC,EAAE,GAAI,OAAM,IAAI,YAAY,EAAE,OAAO,UAAU;AACpD,eAAK,WAAW,EAAE,QAAQ,QAAQ;AAAA,QACpC;AACA,aAAK,WAAW;AAChB,aAAK,UAAU;AACf,YAAI,SAAS,OAAO,EAAG,MAAK,KAAK,MAAM;AAAA,MACzC;AAAA,MAEQ,SACN,KACA,SAC2D;AAC3D,cAAM,WAAW,IAAI,IAAI,KAAK,QAAQ;AACtC,iBAAS,OAAO,GAAG;AACnB,YAAI,UAAU,KAAK,UAAU,CAAC,OAAO,GAAG;AACxC,YAAI,YAAY,SAAU,YAAW,OAAO,GAAG;AAAA,iBACtC,YAAY,UAAW,UAAS,IAAI,KAAK,OAAO;AACzD,eAAO,EAAE,UAAU,QAAQ;AAAA,MAC7B;AAAA,MAEA,MAAc,OAAO,KAAa,SAA8D;AAC9F,cAAM,EAAE,UAAU,QAAQ,IAAI,KAAK,SAAS,KAAK,OAAO;AACxD,cAAM,KAAK,OAAO,UAAU,SAAS,YAAY,YAAY,OAAO,GAAG,IAAI,CAAC;AAC5E,aAAK,WAAW;AAChB,aAAK,UAAU;AACf,YAAI,SAAS,OAAO,EAAG,MAAK,KAAK,MAAM;AAAA,MACzC;AAAA,MAEQ,MAAM,KAAmB;AAC/B,aAAK,KAAK,EAAE,IAAI,aAAa,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO;AAAA,MACvE;AAAA,MAEA,MAAc,OACZ,UACA,SACA,UACe;AACf,cAAM,SAAS,SAAS,QAAQ;AAChC,cAAMC,QAAO,WAAW,KAAK,SAAS,UAAU,YAAY,KAAK,SAAS;AAC1E,YAAIA,SAAQ,aAAa,EAAG;AAC5B,aAAK,WAAW,EAAE,QAAQ,QAAQ;AAClC,cAAM,KAAK,KAAK,EAAE,IAAI,YAAY,QAAQ,SAAS,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC,EAAG,CAAC;AAAA,MACxF;AAAA,IACF;AAAA;AAAA;;;AChQO,SAAS,WACd,MACA,QACA,QAC8C;AAC9C,MAAI,CAAC,KAAM,QAAO;AAClB,MAAI,CAAC,OAAO,cAAc,MAAM,KAAK,SAAS,KAAK,SAAS,SAAS,KAAK;AACxE,UAAM,OAAO,OAAO,IAAI,WAAW,+BAA+B,GAAG,EAAE,MAAM,SAAS,CAAC;AACzF,SAAO,EAAE,MAAM,IAAI,OAAO;AAC5B;AAKO,SAAS,OAAO,MAAwB;AAC7C,MAAI,KAAK,QAAQ,SAAS,KAAK,KAAM,QAAO;AAC5C,MAAI,KAAK,QAAQ,YAAY,KAAK,KAAM,QAAO;AAC/C,MAAI,KAAK,OAAO,KAAK,SAAS,MAAO,QAAO;AAC5C,MAAI,KAAK,SAAS,SAAU,QAAO;AACnC,SAAO,KAAK,SAAS,SAAS,SAAS;AACzC;AAEA,SAAS,OAAO,MAAsC;AACpD,SAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,KAAK,OAAO;AAC1D;AAEO,SAAS,WACd,MACA,KACA,QACwB;AACxB,MAAI,OAAO,IAAI,MAAM,YAAa,OAAM,IAAI,YAAY,UAAU,MAAM;AACxE,QAAM,MAAM,OAAO,IAAI;AACvB,MAAI,CAAC,IAAK,QAAO;AACjB,MAAI,IAAI,WAAW,QAAS,OAAM,IAAI,YAAY,SAAS,MAAM;AACjE,MAAI,IAAI,WAAW,OAAQ,QAAO,IAAI,WAAW,CAAC;AAClD,QAAM,MAAM,IAAI,WAAW,KAAK,IAAI,KAAK,KAAK,CAAC;AAC/C,MAAI,IAAI,WAAW,UAAW,QAAO,GAAG;AACxC,SAAO;AACT;AAEO,SAAS,YAAY,MAAuB;AACjD,MAAI,OAAO,IAAI,MAAM,YAAa,OAAM,IAAI,YAAY,UAAU,OAAO;AACzE,QAAM,MAAM,OAAO,IAAI;AACvB,MAAI,CAAC,IAAK,QAAO;AACjB,MAAI,IAAI,WAAW,OAAQ,OAAM,IAAI,YAAY,SAAS,OAAO;AACjE,MAAI,IAAI,WAAW,OAAQ,OAAM,IAAI,YAAY,UAAU,OAAO;AAClE,SAAO;AACT;AAEO,SAAS,WAAW,KAAc,MAAuB;AAC9D,SAAO,eAAe,eAAe,IAAI,SAAS,WAAW,OAAO,IAAI,MAAM;AAChF;AAEO,SAAS,QAAQ,GAAiB,UAA0B;AACjE,SAAO,EAAE,MAAM,EAAE,SAAS,UAAU,OAAO,EAAE,SAAS,WAAW,EAAE,OAAO;AAC5E;AAgBO,SAAS,SAASC,OAAyB;AAChD,QAAM,QAAQ,iBAAiBA,KAAI;AACnC,QAAM,SAAS,QAAQ,KAAK,KAAK,MAAM,QAAQ,KAAK,IAAI;AACxD,QAAM,OAAO,QAAQ,KAAK,IAAI,GAAG,KAAK,OAAO,MAAM,QAAQ,MAAM,SAAS,KAAK,CAAC,IAAI;AACpF,QAAM,QAAQ,EAAE,OAAO,OAAO,SAAS,GAAG,OAAO,OAAO,SAAS,EAAE;AACnE,SAAO,EAAE,MAAM,GAAG,OAAO,OAAO,QAAQ,OAAO,MAAM,QAAQ,MAAM,OAAO,GAAG,OAAO,GAAG,GAAG,MAAM;AAClG;AAEO,SAAS,OAAO,OAAqB,QAA4B;AACtE,MAAI,MAAM,WAAW,EAAG,QAAO,MAAM,CAAC;AACtC,QAAM,MAAM,IAAI,WAAW,MAAM;AACjC,MAAI,KAAK;AACT,aAAW,QAAQ,OAAO;AACxB,QAAI,IAAI,MAAM,EAAE;AAChB,UAAM,KAAK;AAAA,EACb;AACA,SAAO;AACT;AAEO,SAAS,UAAU,IAAY,QAAiB,QAAgB,MAAkB;AACvF,SAAO,SACH,EAAE,IAAI,YAAqB,IAAI,KAAK,IACpC,EAAE,IAAI,aAAsB,IAAI,QAAQ,KAAK;AACnD;AAEO,SAAS,YAAY,GAA2B;AACrD,SAAO,EAAE,WAAW,QAAQ,EAAE,cAAc;AAC9C;AAEO,SAAS,OAAO,KAAyB;AAC9C,MAAI,eAAe,eAAe,IAAI,SAAS,SAAU,QAAO;AAChE,QAAM;AACR;AAEO,SAAS,UAAU,KAAa,GAAkB,UAAmC;AAC1F,MAAI,YAAY,YAAY,CAAC,EAAG,OAAM,IAAI,YAAY,UAAU,GAAG;AACnE,MAAI,CAAC,YAAY,CAAC,EAAE,OAAQ,OAAM,IAAI,YAAY,UAAU,GAAG;AAC/D,MAAI,UAAU,YAAa,OAAM,IAAI,YAAY,UAAU,GAAG;AAChE;AAEA,SAAS,QAAQ,GAA0B;AACzC,QAAMC,SAAQ,EAAE,SAAS,EAAE,UAAU,EAAE;AACvC,QAAM,SAASA,SAAS,EAAE,OAAO,SAAS,WAAY;AACtD,SAAO,UAAU,EAAE,SAAS,WAAW,MAAM,EAAE,WAAW,kBAAkB;AAC9E;AAIO,SAAS,YAAY,KAAa,GAAkB;AACzD,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,OAAO,QAAQ,CAAC;AAAA,IAChB,UAAU;AAAA,IACV,GAAI,YAAY,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,EAAE,SAAS,EAAE,QAAQ,KAAK,IAAI,EAAE,UAAU,KAAK;AAAA,IAC1F,GAAI,EAAE,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,IACvC,GAAI,EAAE,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAY,MAAQ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AAAA,EAC9F;AACF;AAEO,SAASC,OAAM,GAAW,MAAoB;AACnD,MAAI,CAAC,OAAO,cAAc,CAAC,KAAK,IAAI,EAAG,OAAM,IAAI,YAAY,UAAU,IAAI;AAC7E;AA5KA,IAkCa,OACA,QACA,WAYP,UACA,QACA,UA0DA,OAgDA;AA5JN;AAAA;AAAA;AACA;AAKA;AA4BO,IAAM,QAAQ,KAAK;AACnB,IAAM,SAAS,OAAO;AACtB,IAAM,YAAY,KAAK,OAAO;AAYrC,IAAM,WAAW;AACjB,IAAM,SAAS;AACf,IAAM,WAAW;AA0DjB,IAAM,QAAQ;AAgDd,IAAM,kBAAkB;AAAA;AAAA;;;ACxGjB,SAAS,MAAM,KAAsB;AAC1C,SAAO,IAAI,WAAW,MAAM,MAAM,IAAI,WAAW,KAAK,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,GAAG;AACrF;AAEA,SAAS,QAAQ,MAAqB;AACpC,QAAM,IAAI,YAAY,UAAU,IAAI;AACtC;AAEA,SAAS,SAAS,MAAc,OAAO,GAAG,OAAwD;AAChG,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,cAAc,OAAO,YAAY;AAAA,IACjC,iBAAiB,OAAO,YAAY;AAAA,IACpC;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,KAAK,OAAO,OAAO;AAAA,IACnB,KAAK,OAAO,OAAO;AAAA,EACrB;AACF;AAEA,UAAU,OAAO,KAA+B;AAC9C,MAAI,QAAQ,OAAQ,QAAO,EAAE,MAAM,OAAO,MAAM,MAAM,IAAM;AAC5D,QAAMC,QAAO,IAAI,MAAM,QAAQ,MAAM;AACrC,MAAI,QAAQ,SAASA,KAAI,EAAG,QAAO,EAAE,MAAM,SAAS;AACpD,MAAIA,UAAS,MAAO,QAAO,EAAE,MAAM,MAAM;AACzC,MAAIA,UAAS,YAAa,QAAO,EAAE,MAAM,YAAY;AACrD,MAAIA,UAAS,SAAU,QAAO,EAAE,MAAM,SAAS;AAC/C,QAAM,MAAM,MAAM,QAAQA,KAAI;AAC9B,MAAI,OAAO,EAAG,QAAO,EAAE,MAAM,QAAQ,QAAQ,GAAG,OAAO,IAAI,GAAG,IAAI,IAAI,IAAI;AAC1E,MAAIA,UAAS,KAAM,QAAO,EAAE,MAAM,QAAQ,QAAQ,QAAQ;AAC1D,QAAM,KAAK,cAAc,KAAKA,KAAI,IAAI,CAAC;AACvC,MAAI,OAAO,OAAW,QAAO,EAAE,MAAM,MAAM,IAAI,OAAO,EAAE,EAAE;AAC1D,MAAI,WAAW,KAAKA,KAAI,GAAG;AACzB,UAAM,QAAS,MAAM,EAAE,IAAI,eAAe;AAC1C,QAAI,MAAM,SAAS,GAAG,EAAG,QAAO,EAAE,MAAM,YAAY,MAAM,IAAI;AAAA,EAChE;AACA,MAAIA,UAAS,MAAO,QAAO,EAAE,MAAM,OAAO,MAAM,MAAM,IAAM;AAC5D,QAAM,MAAM,eAAe,KAAKA,KAAI,IAAI,CAAC;AACzC,MAAI,QAAQ,QAAW;AACrB,UAAM,OAAQ,MAAM,EAAE,IAAI,WAAW;AACrC,QAAI,KAAK,SAAS,OAAO,GAAG,CAAC,EAAG,QAAO,EAAE,MAAM,YAAY,MAAM,KAAK,KAAK,OAAO,GAAG,EAAE;AAAA,EACzF;AACA,SAAO,QAAQ,GAAG;AACpB;AAEA,UAAU,OAAO,IAAY,MAA+B;AAC1D,MAAI;AACF,WAAQ,MAAM,EAAE,IAAI,WAAW,GAAG;AAAA,EACpC,SAAS,KAAK;AACZ,QAAI,eAAe,eAAe,IAAI,SAAS,QAAS,QAAO,QAAQ,IAAI;AAC3E,UAAM;AAAA,EACR;AACF;AAEA,UAAU,SAAS,MAAyC;AAC1D,QAAM,IAAI,gBAAgB,MAAM,EAAE,IAAI,QAAQ,KAAK,CAAC;AACpD,MAAI,CAAC,EAAG,OAAM,IAAI,YAAY,OAAO,MAAM;AAC3C,SAAO;AACT;AAEA,UAAU,aAAaA,OAAyC;AAC9D,QAAM,QAAS,MAAM,EAAE,IAAI,gBAAgB,MAAAA,MAAK;AAChD,MAAI,MAAO,QAAO,SAAS,QAAQ,MAAM,QAAQ,MAAQ,GAAG,KAAK;AACjE,SAAO,SAAS,QAAQA,MAAK,WAAW,WAAW,IAAI,MAAQ,IAAM;AACvE;AAEA,UAAU,OAAO,IAAY,MAAyC;AACpE,QAAM,OAAO,OAAO,OAAO,IAAI,IAAI;AACnC,MAAI,KAAK,QAAQ,SAAS,KAAK,KAAM,QAAO,OAAO,SAAS,KAAK,KAAK,GAAG;AACzE,MAAI,KAAK,SAAS,QAAQ;AACxB,UAAM,OAAQ,MAAM,EAAE,IAAI,eAAe,GAAG;AAC5C,QAAI,KAAK,OAAQ,QAAO,EAAE,GAAG,SAAS,OAAU,KAAK,IAAI,GAAG,QAAQ,KAAK;AACzE,UAAM,KAAK,OAAO,SAAS,KAAK,IAAI;AACpC,WAAO,EAAE,GAAG,IAAI,MAAM,KAAK,KAAK;AAAA,EAClC;AACA,MAAI,KAAK,SAAU,QAAO,OAAO,aAAa,KAAK,QAAQ;AAC3D,MAAI,WAAW,IAAI,KAAK,IAAI,EAAG,QAAO,SAAS,OAAO,GAAK;AAC3D,MAAI,KAAK,SAAS,SAAU,QAAO,SAAS,KAAQ;AACpD,SAAO,SAAS,IAAQ;AAC1B;AAEA,UAAU,SAAS,IAAY,MAA+B;AAC5D,QAAM,OAAO,OAAO,OAAO,IAAI,IAAI;AACnC,MAAI,KAAK,QAAQ,SAAS,KAAK,KAAM,QAAO,KAAK,KAAK;AACtD,MAAI,KAAK,SAAS,OAAQ,SAAS,MAAM,EAAE,IAAI,eAAe,GAAG,GAAwB;AACzF,MAAI,KAAK,SAAU,QAAO,KAAK;AAC/B,MAAI,KAAK,QAAQ,YAAY,KAAK,KAAM,QAAO,QAAS,KAAK,KAAoB,MAAM;AACvF,MAAI,KAAK,SAAS,eAAe,KAAK,SAAS,SAAU,QAAO,QAAQ,KAAK,IAAI;AACjF,SAAO,GAAG,KAAK,SAAS,WAAW,WAAW,MAAM,KAAK,EAAE;AAC7D;AAEO,SAAS,UAAU,IAAuC;AAC/D,SAAO,OAAO,IAAI,WAAW,EAAE,EAAE;AACnC;AAEA,SAAS,SAAS,QAAkC;AAClD,SAAO,SAAS,OAAO,KAAO,OAAO,MAAM;AAC7C;AAEO,UAAU,QAAQ,KAAaC,SAA4C;AAChF,QAAM,OAAO,OAAO,OAAO,GAAG;AAC9B,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK;AACH,aAAO,SAAS,KAAK,IAAI;AAAA,IAC3B,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,SAAS,OAAO,GAAK;AAAA,IAC9B,KAAK;AACH,aAAO,OAAO,aAAa,KAAK,IAAI;AAAA,IACtC,KAAK;AACH,UAAI,CAACA,QAAQ,QAAO,SAAS,KAAK,MAAM;AACxC,aAAO,KAAK,OAAO,SAAY,SAAS,MAAM,GAAK,IAAI,OAAO,OAAO,KAAK,IAAI,GAAG;AAAA,IACnF,KAAK;AACH,aAAOA,UAAS,OAAO,OAAO,KAAK,IAAI,GAAG,IAAI,SAAS,OAAO,SAAS,KAAK,IAAI,GAAG,CAAC;AAAA,EACxF;AACF;AAEO,UAAU,UAAU,KAA+B;AACxD,MAAI;AACF,WAAO,QAAQ,KAAK,IAAI;AACxB,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,QAAI,eAAe,YAAa,QAAO;AACvC,UAAM;AAAA,EACR;AACF;AAEO,UAAU,YAAY,KAA8B;AACzD,QAAM,OAAO,OAAO,OAAO,GAAG;AAC9B,MAAI,KAAK,SAAS,OAAQ,QAAO,KAAK;AACtC,MAAI,KAAK,SAAS,KAAM,QAAO,OAAO,SAAS,KAAK,IAAI,GAAG;AAC3D,QAAM,IAAI,YAAY,UAAU,GAAG;AACrC;AAEO,UAAU,iBAAiB,KAA0C;AAC1E,QAAM,OAAO,OAAO,OAAO,GAAG;AAC9B,MAAI,KAAK,SAAS,KAAM,QAAO,OAAO,SAAS,KAAK,IAAI,GAAG;AAC3D,MAAI,KAAK,SAAS,UAAU,KAAK,OAAO,OAAW,QAAO,OAAO,SAAS,KAAK,IAAI,GAAG;AACtF,SAAO;AACT;AAEO,UAAU,WAAW,KAAgC;AAC1D,MAAI,QAAQ,WAAW;AACrB,UAAM,MAAO,MAAM,EAAE,IAAI,UAAU;AACnC,WAAO,IAAI,IAAI,CAAC,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;AAAA,EACvC;AACA,MAAI,QAAQ,YAAY;AACtB,UAAM,OAAQ,MAAM,EAAE,IAAI,WAAW;AACrC,WAAO,KAAK,IAAI,MAAM,EAAE,KAAK;AAAA,EAC/B;AACA,QAAM,OAAO,OAAO,OAAO,GAAG;AAC9B,MAAI,KAAK,SAAS,MAAO,OAAM,IAAI,YAAY,WAAW,GAAG;AAC7D,QAAM,QAAS,MAAM,EAAE,IAAI,eAAe;AAC1C,QAAM,OAAO,MAAM,OAAO,CAAC,MAAM,kBAAkB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjF,SAAO,CAAC,GAAG,SAAS,aAAa,UAAU,OAAO,MAAM,OAAO,OAAO,GAAG,OAAO,GAAG,IAAI,EAAE,KAAK;AAChG;AASA,UAAU,QACR,IACA,KACA,GAC4C;AAC5C,QAAM,OAAO,OAAO,OAAO,IAAI,GAAG;AAClC,QAAM,OAAO,KAAK,SAAS;AAC3B,MAAI,MAAM;AACR,UAAM,KAAM,MAAM,EAAE,IAAI,eAAe,GAAG;AAC1C,QAAI,CAAC,GAAG;AACN,aAAO,EAAE,IAAK,MAAM,YAAY,GAAG,MAAM,EAAE,GAAG,GAAG,QAAQ,MAAM,CAAC,GAAc,KAAK;AACrF,UAAM,YAAY,EAAE,UAAU,QAAQ,EAAE,WAAW,QAAQ,EAAE,aAAa;AAC1E,QAAI,aAAa,KAAK,WAAW,OAAQ,OAAM,IAAI,YAAY,SAAS,GAAG;AAC3E,QAAI,CAAC,aAAa,KAAK,WAAW,QAAS,OAAM,IAAI,YAAY,SAAS,GAAG;AAAA,EAC/E;AACA,QAAMC,QAAQ,MAAM,EAAE,IAAI,UAAU,IAAI,KAAK,EAAE;AAC/C,MAAI,QAAQ,EAAE,UAAU;AACtB,QAAI;AACF,YAAM,EAAE,IAAI,aAAa,IAAIA,OAAM,MAAM,EAAE;AAAA,IAC7C,SAAS,KAAK;AACZ,YAAM,EAAE,IAAI,YAAY,IAAIA,MAAK;AACjC,YAAM;AAAA,IACR;AAAA,EACF;AACA,SAAO,EAAE,IAAIA,OAAM,KAAK;AAC1B;AAEA,SAAS,YAAY,GAA0B;AAC7C,QAAMC,SAAQ,EAAE,UAAU,QAAQ,EAAE,WAAW,QAAQ,EAAE,aAAa;AACtE,SAAOA,SAAS,EAAE,SAAS,OAAO,IAAI,IAAK;AAC7C;AAEA,UAAU,OAAO,KAAa,GAA8D;AAC1F,QAAM,OAAO,OAAO,OAAO,GAAG;AAC9B,MAAI,YAAY,CAAC,EAAG,OAAM,IAAI,YAAY,UAAU,GAAG;AACvD,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK;AACH,aAAO,EAAE,IAAK,MAAM,YAAY,KAAK,EAAE,GAAG,GAAG,QAAQ,MAAM,CAAC,GAAc,MAAM,MAAM;AAAA,IACxF,KAAK;AACH,aAAO,EAAE,IAAK,MAAM,EAAE,IAAI,cAAc,GAAc,MAAM,MAAM;AAAA,IACpE,KAAK;AACH,aAAO;AAAA,QACL,IAAK,MAAM,EAAE,IAAI,qBAAqB,OAAO,YAAY,CAAC,EAAE;AAAA,QAC5D,MAAM;AAAA,MACR;AAAA,IACF,KAAK;AACH,aAAO,EAAE,IAAK,MAAM,EAAE,IAAI,kBAAkB,OAAO,YAAY,CAAC,EAAE,GAAc,MAAM,MAAM;AAAA,IAC9F,KAAK,YAAY;AACf,YAAM,MACJ,KAAK,QAAQ,SACT,EAAE,IAAI,eAAwB,MAAM,KAAK,KAAK,IAC9C,EAAE,IAAI,kBAA2B,GAAG,KAAK,KAAK,QAAQ,KAAK;AACjE,aAAO,EAAE,IAAK,MAAM,KAAgB,MAAM,MAAM;AAAA,IAClD;AAAA,IACA,KAAK;AACH,aAAO,OAAO,QAAQ,KAAK,IAAI,KAAK,CAAC;AAAA,IACvC,KAAK;AACH,UAAI,KAAK,OAAO,OAAW,QAAO,OAAO,QAAQ,KAAK,IAAI,KAAK,CAAC;AAChE,YAAM,IAAI,YAAY,UAAU,GAAG;AAAA,IACrC,KAAK;AACH,YAAM,IAAI,YAAY,UAAU,GAAG;AAAA,EACvC;AACF;AAEO,UAAU,QAAQ,KAAa,GAAsC;AAC1E,QAAMA,SAAQ,EAAE,UAAU,QAAQ,EAAE,WAAW,QAAQ,EAAE,aAAa;AACtE,SAAO,EAAE,GAAI,OAAO,OAAO,KAAK,CAAC,GAAI,MAAM,EAAE,SAAS,QAAQ,CAACA,QAAO,OAAAA,OAAM;AAC9E;AAEA,eAAsB,SACpB,QACA,MACY;AACZ,MAAIC,QAAO,KAAK,KAAK;AACrB,SAAO,CAACA,MAAK,MAAM;AACjB,QAAIC;AACJ,QAAI;AACF,MAAAA,UAAS,EAAE,OAAO,MAAM,OAAO,KAAKD,MAAK,KAAK,EAAE;AAAA,IAClD,SAAS,OAAO;AACd,MAAAC,UAAS,EAAE,MAAM;AAAA,IACnB;AACA,IAAAD,QAAO,WAAWC,UAAS,KAAK,KAAKA,QAAO,KAAK,IAAI,KAAK,MAAMA,QAAO,KAAK;AAAA,EAC9E;AACA,SAAOD,MAAK;AACd;AAEO,SAAS,QACd,QACA,MACG;AACH,MAAIA,QAAO,KAAK,KAAK;AACrB,SAAO,CAACA,MAAK,MAAM;AACjB,QAAIC;AACJ,QAAI;AACF,MAAAA,UAAS,EAAE,OAAO,OAAO,KAAKD,MAAK,KAAK,EAAE;AAAA,IAC5C,SAAS,OAAO;AACd,MAAAC,UAAS,EAAE,MAAM;AAAA,IACnB;AACA,IAAAD,QAAO,WAAWC,UAAS,KAAK,KAAKA,QAAO,KAAK,IAAI,KAAK,MAAMA,QAAO,KAAK;AAAA,EAC9E;AACA,SAAOD,MAAK;AACd;AAEA,SAAS,SAAS,KAAmB;AACnC,MAAI,MAAM,aAAc,OAAM,IAAI,YAAY,SAAS,UAAU;AACnE;AAcA,SAAS,SAAS,MAAc;AAC9B,MAAI,OAAO;AACX,SAAO;AAAA,IACL,MAAM,MAAY;AAChB,UAAI,CAAC,KAAM,OAAM,IAAI,YAAY,SAAS,IAAI;AAAA,IAChD;AAAA,IACA,KAAK,MAAY;AACf,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAOA,SAAS,QAAQ,KAAc,MAAoB;AACjD,MAAI,CAAC,IAAK,OAAM,IAAI,YAAY,SAAS,IAAI;AAC/C;AAEO,SAAS,WACd,IACA,MACA,IACA,QAC0C;AAC1C,QAAM,EAAE,MAAM,IAAI,IAAI,SAAS,IAAI;AACnC,QAAM,OAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA,MAAM,OAAO;AACX,WAAK;AACL,aAAO;AAAA,IACT;AAAA,IACA,MAAM,KAAK,UAAU,QAAQ;AAC3B,MAAAE,OAAM,UAAU,MAAM;AACtB,MAAAA,OAAM,QAAQ,MAAM;AACpB,WAAK;AACL,cAAQ,OAAO,MAAM,MAAM;AAC3B,aAAO,WAAW,IAAI,IAAI,WAAW,CAAC,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,QAAQ,MAAM,CAAC;AAAA,IAChF;AAAA,IACA,MAAM,MAAM,UAAU,MAAM;AAC1B,MAAAA,OAAM,UAAU,OAAO;AACvB,WAAK;AACL,cAAQ,OAAO,OAAO,OAAO;AAC7B,YAAM,GAAG,MAAM,IAAI,IAAI;AACvB,aAAO,KAAK;AAAA,IACd;AAAA,IACA,MAAM,SAAS,MAAM;AACnB,WAAK;AACL,MAAAA,OAAM,MAAM,UAAU;AACtB,YAAM,IAAI,YAAY,UAAU,UAAU;AAAA,IAC5C;AAAA,IACA,MAAM,YAAY,KAAK;AAAA,IACvB,MAAM,QAAQ;AACZ,WAAK;AACL,UAAI;AACJ,YAAM,GAAG,MAAM,EAAE;AAAA,IACnB;AAAA,EACF;AACA,SAAO,EAAE,MAAM,YAAY,IAAI;AACjC;AAEO,SAAS,eACd,IACA,MACA,IACA,QAC8C;AAC9C,QAAM,EAAE,MAAM,IAAI,IAAI,SAAS,IAAI;AACnC,QAAM,OAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA,OAAO;AACL,WAAK;AACL,aAAO;AAAA,IACT;AAAA,IACA,KAAK,UAAU,QAAQ;AACrB,MAAAA,OAAM,UAAU,MAAM;AACtB,MAAAA,OAAM,QAAQ,MAAM;AACpB,WAAK;AACL,cAAQ,OAAO,MAAM,MAAM;AAC3B,aAAO,WAAW,IAAI,IAAI,WAAW,CAAC,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,QAAQ,MAAM,CAAC;AAAA,IAChF;AAAA,IACA,MAAM,UAAU,MAAM;AACpB,MAAAA,OAAM,UAAU,OAAO;AACvB,WAAK;AACL,cAAQ,OAAO,OAAO,OAAO;AAC7B,SAAG,MAAM,IAAI,IAAI;AACjB,aAAO,KAAK;AAAA,IACd;AAAA,IACA,SAAS,MAAM;AACb,WAAK;AACL,MAAAA,OAAM,MAAM,UAAU;AACtB,YAAM,IAAI,YAAY,UAAU,UAAU;AAAA,IAC5C;AAAA,IACA,MAAM,MAAM,KAAK;AAAA,IACjB,QAAQ;AACN,WAAK;AACL,UAAI;AACJ,SAAG,MAAM,EAAE;AAAA,IACb;AAAA,EACF;AACA,SAAO,EAAE,MAAM,YAAY,IAAI;AACjC;AAEA,eAAsB,UAAU,MAAmC;AACjE,MAAI;AACF,UAAM,QAAsB,CAAC;AAC7B,QAAI,MAAM;AACV,eAAS;AACP,YAAM,QAAQ,MAAM,KAAK,KAAK,KAAK,MAAM;AACzC,UAAI,MAAM,WAAW,EAAG,QAAO,OAAO,OAAO,GAAG;AAChD,aAAO,MAAM;AACb,eAAS,GAAG;AACZ,YAAM,KAAK,KAAK;AAAA,IAClB;AAAA,EACF,UAAE;AACA,UAAM,KAAK,MAAM;AAAA,EACnB;AACF;AAEO,SAAS,cAAc,MAA8B;AAC1D,MAAI;AACF,UAAM,QAAsB,CAAC;AAC7B,QAAI,MAAM;AACV,eAAS;AACP,YAAM,QAAQ,KAAK,KAAK,KAAK,MAAM;AACnC,UAAI,MAAM,WAAW,EAAG,QAAO,OAAO,OAAO,GAAG;AAChD,aAAO,MAAM;AACb,eAAS,GAAG;AACZ,YAAM,KAAK,KAAK;AAAA,IAClB;AAAA,EACF,UAAE;AACA,SAAK,MAAM;AAAA,EACb;AACF;AA9dA,IAmBa,cAEP,SACA,OACA,SACA,QACA,KACA,MACA,MACA,MACA;AA7BN;AAAA;AAAA;AAAA;AAEA;AAGA;AASA;AAKO,IAAM,eAAe,KAAK,OAAO;AAExC,IAAM,UAA6B,CAAC,QAAQ,QAAQ,QAAQ,UAAU,SAAS;AAC/E,IAAM,QAA2B,CAAC,SAAS,UAAU,QAAQ;AAC7D,IAAM,UAAU;AAChB,IAAM,SAAS;AACf,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,OAAO,KAAK,IAAI;AACtB,IAAM,aAA8C,oBAAI,IAAI;AAAA,MAC1D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA;AAAA;;;ACkBD,SAAS,OAAO,MAAmC;AACjD,MAAI,SAAS,QAAS,QAAO;AAC7B,MAAI,SAAS,QAAS,QAAO;AAC7B,MAAI,SAAS,QAAS,QAAO;AAC7B,QAAM,IAAI,UAAU,QAAQ;AAC9B;AAEA,SAAS,OAAO,MAAkB,QAAwB;AACxD,MAAI,WAAW,SAAU,QAAO;AAChC,MAAI,WAAW,SAAU,QAAO,KAAK,OAAO;AAC5C,MAAI,WAAW,SAAU,QAAO,KAAK,KAAK;AAC1C,QAAM,IAAI,UAAU,QAAQ;AAC9B;AAEA,SAAS,YAAY,MAAgB,IAAY,OAA8B;AAC7E,MAAI,CAAC,OAAO;AACV,SAAK,SAAS,IAAI,SAAS,IAAI;AAC/B;AAAA,EACF;AACA,OAAK,SAAS,IAAI,MAAM,SAAS,SAAS,UAAU,SAAS,IAAI;AACjE,OAAK,SAAS,KAAK,GAAG,UAAU,IAAI;AACpC,OAAK,YAAY,KAAK,GAAG,OAAO,MAAM,KAAK,GAAG,IAAI;AAClD,OAAK,YAAY,KAAK,IAAI,OAAO,MAAM,GAAG,GAAG,IAAI;AACjD,OAAK,SAAS,KAAK,IAAI,MAAM,KAAK,IAAI;AACxC;AAEO,SAAS,YAAY,MAA8C;AACxE,SAAO;AAAA,IACL,OAAO,CAAC,IAAY,OAAe;AACjC,WAAK,QAAQ,EAAE;AACf,YAAM,OAAO,UAAU,KAAK,CAAC,OAAO;AACpC,UAAI,CAAC,KAAM,OAAM,IAAI,UAAU,QAAQ;AACvC,YAAM,SAAS,KAAK,MAAM,MAAM,IAAI,MAAM,SAAS,aAAa,KAAK,aAAa,CAAC;AACnF,UAAI,SAAS,YAAY,WAAW,KAAM,MAAK,OAAO,EAAE;AAAA,IAC1D;AAAA,IACA,YAAY,CAAC,IAAY,KAAa,OAAe;AACnD,UAAI,QAAQ,WAAW,QAAQ,WAAW,QAAQ,SAAU,OAAM,IAAI,UAAU,QAAQ;AACxF,WAAK,QAAQ,IAAI,IAAI;AACrB,YAAM,OAAO,KAAK,KAAK,EAAE;AACzB,YAAM,OAAO,KAAK,IAAI,KAAK;AAC3B,YAAM,OAAO,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC;AAC3C,YAAMC,SACJ,OAAO,MAAM,KAAK,SAAS,KAAK,GAAG,IAAI,CAAC,IAAI,OAAO,KAAK,YAAY,KAAK,GAAG,IAAI,CAAC;AACnF,YAAM,MAAM,OAAO,KAAK,YAAY,KAAK,IAAI,IAAI,CAAC;AAClD,UAAI,QAAQ,SAAS;AACnB,YAAI,SAAS,SAAU,OAAM,IAAI,UAAU,QAAQ;AACnD,oBAAY,MAAM,IAAI,KAAK,MAAM,IAAI,KAAK,QAAQ,MAAMA,QAAO,GAAG,CAAC;AACnE;AAAA,MACF;AACA,UACG,SAAS,UAAU,KAAK,aAAa,SACrC,SAAS,WAAW,KAAK,aAAa;AAEvC,cAAM,IAAI,UAAU,OAAO;AAC7B,UAAI,SAAS,QAAS,MAAK,MAAM,IAAI;AACrC,YAAM,SAAS,KAAK,MAAM,IAAI,KAAK,QAAQ,MAAMA,QAAO,KAAK,QAAQ,QAAQ;AAC7E,UAAI,SAAS,SAAU;AACvB,WAAK,OAAO;AACZ,UAAI,WAAW,KAAM,MAAK,OAAO,EAAE;AAAA,IACrC;AAAA,EACF;AACF;AAjHA,IAKa,SACA,SACA,UAEP,SACA,SACA,SACA,UACA,UACA,UAWA,SACA;AA1BN;AAAA;AAAA;AACA;AAIO,IAAM,UAAU;AAChB,IAAM,UAAU;AAChB,IAAM,WAAW;AAExB,IAAM,UAAU;AAChB,IAAM,UAAU;AAChB,IAAM,UAAU;AAChB,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,WAAW;AAWjB,IAAM,UAAU;AAChB,IAAM,YAAiD,EAAE,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS;AAAA;AAAA;;;AChB3F,SAAS,YAAY,UAAkB,KAAqB;AACjE,MAAI,YAAY,IAAK,QAAO;AAC5B,SAAO,QAAQ,WAAW,MAAM,YAAY,MAAM,SAAS;AAC7D;AAEO,SAAS,WAAW,MAA8C;AACvE,QAAM,EAAE,IAAI,IAAI;AAChB,QAAMC,QAAO,CAAC,QAAkD,KAAK,EAAE,OAAO,KAAK,GAAG;AACtF,QAAMC,QAAO,CAAC,KAAa,QAAgB,IAAI,OAAO,KAAK,GAAG;AAC9D,SAAO;AAAA,IACL,UAAU,CAAC,IAAY,IAAY,OAAe,MAAcC,QAAe,QAAgB;AAC7F,YAAM,SAASF,MAAK;AAAA,QAClB,IAAI;AAAA,QACJ,MAAMC,MAAK,IAAI,EAAE;AAAA,QACjB,SAAS,QAAQ,eAAe;AAAA,QAChC,YAAY,QAAQ,cAAc;AAAA,QAClC;AAAA,QACA,OAAAC;AAAA,MACF,CAAC;AACD,UAAI,KAAK,EAAE,UAAU,KAAK,QAAQ,IAAI;AAAA,IACxC;AAAA,IACA,WAAW,CAAC,WAAmB,KAAKF,MAAK,EAAE,IAAI,aAAa,OAAO,CAAC;AAAA,IACpE,YAAY,CAAC,IAAY,OAAe,KAAKA,MAAK,EAAE,IAAI,cAAc,MAAMC,MAAK,IAAI,EAAE,EAAE,CAAC;AAAA,IAC1F,UAAU,CAAC,WAAmB,KAAKD,MAAK,EAAE,IAAI,YAAY,OAAO,CAAC;AAAA,IAClE,UAAU,CAAC,QAAgB,KAAa,OAAe,aAAqB;AAC1E,YAAM,OAAO,IAAI,GAAG;AACpB,UAAI,CAAC,KAAM,OAAM,IAAI,UAAU,QAAQ;AACvC,UAAIG,aAAY;AAChB,UAAI,SAAS,SAAS;AACpB,YAAI,WAAW,GAAI,OAAM,IAAI,UAAU,QAAQ;AAC/C,YAAI,UAAU,MAAM,YAAY,UAAU,MAAM,UAAW,OAAM,IAAI,UAAU,QAAQ;AACvF,QAAAA,aAAY,YAAY,UAAU,KAAK,IAAI,KAAK,CAAC;AAAA,MACnD;AACA,MAAAH,MAAK,EAAE,IAAI,YAAY,QAAQ,KAAK,MAAM,WAAAG,WAAU,CAAC;AAAA,IACvD;AAAA,IACA,cAAc,CAAC,QAAgB,QAC7B,KAAK,IAAI,KAAK,EAAE,SAAS,KAAKH,MAAK,EAAE,IAAI,gBAAgB,OAAO,CAAC,GAAa,IAAI;AAAA,EACtF;AACF;AAhDA,IAKM,WACA,UACA,KACA;AARN;AAAA;AAAA;AACA;AACA;AAGA,IAAM,YAAY;AAClB,IAAM,WAAW;AACjB,IAAM,MAA6B,CAAC,SAAS,OAAO,OAAO;AAC3D,IAAM,YAAY;AAAA;AAAA;;;ACRlB,IAGa,WAsCP,OACA,QAOO,SAEA;AAnDb;AAAA;AAAA;AACA;AAEO,IAAM,YAAN,MAAgB;AAAA,MACb;AAAA,MACA,QAAQ;AAAA,MACC;AAAA,MACA;AAAA,MAEjB,YAAY,OAAmB,QAAqB;AAClD,aAAK,QAAQ;AACb,aAAK,SAAS;AAAA,MAChB;AAAA,MAEQ,MAAc;AACpB,eAAO,KAAK,SAAS,QAAQ,KAAK,KAAK,QAAQ,QAAQ,IAAI;AAAA,MAC7D;AAAA,MAEA,MAAY;AACV,cAAM,MAAM,KAAK,IAAI;AACrB,YAAI,KAAK,SAAS,UAAa,KAAK,UAAU,KAAK;AACjD,eAAK,OAAO,KAAK,MAAM;AACvB,eAAK,QAAQ;AAAA,QACf;AACA,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,OAAOI,QAAyB;AAC9B,cAAM,OAAO,KAAK,IAAI;AACtB,cAAM,OAAOA,OAAM;AACnB,YAAI,CAAC,KAAK,QAAQ;AAChB,eAAK,OAAO;AACZ,iBAAO;AAAA,QACT;AACA,cAAM,MAAM,QAAQ,IAAI,KAAK,QAAQ,UAAU,CAAC;AAChD,aAAK,OAAO,QAAQ,OAAO,OAAO;AAClC,aAAK,QAAQ,MAAM;AACnB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,IAAM,QAAQ;AACd,IAAM,SAAS;AAOR,IAAM,UAAwB,EAAE,OAAO,CAAC,OAAO,GAAG,GAAG,SAAS,MAAM;AAAA,IAAC,EAAE;AAEvE,IAAM,aAAN,MAAiB;AAAA,MACd;AAAA,MACS;AAAA,MACA;AAAA,MACA;AAAA,MAEjB,YAAYC,OAAiC,QAAqB,UAAU,SAAS;AACnF,aAAK,OAAOA;AACZ,aAAK,SAAS;AACd,aAAK,UAAU;AAAA,MACjB;AAAA,MAEA,MAAc;AACZ,cAAM,EAAE,OAAO,IAAI;AACnB,YAAI,CAAC,QAAQ;AACX,eAAK,SAAS,KAAK,KAAK;AACxB,iBAAO,KAAK;AAAA,QACd;AACA,mBAAS;AACP,gBAAM,OAAO,QAAQ,KAAK,QAAQ,KAAK;AACvC,cAAI,OAAO,OAAQ,SAAQ,KAAK,QAAQ,OAAO,IAAI;AAAA,mBAC1C,OAAO,MAAO,QAAO,OAAO;AAAA,eAChC;AACH,kBAAM,OAAO,KAAK,KAAK;AACvB,gBAAI,QAAQ,gBAAgB,QAAQ,OAAO,GAAG,OAAO,KAAK,MAAM,EAAG,QAAO;AAAA,UAC5E;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,MAAsB;AACxB,YAAI;AACF,iBAAO,KAAK,QAAQ,MAAM,MAAM,KAAK,OAAO,IAAI,CAAC;AAAA,QACnD,UAAE;AACA,eAAK,QAAQ,QAAQ;AAAA,QACvB;AAAA,MACF;AAAA,MAEQ,OAAO,MAAsB;AACnC,cAAM,EAAE,OAAO,IAAI;AACnB,YAAI,CAAC,QAAQ;AACX,gBAAM,MAAM,KAAK,KAAK,IAAI;AAC1B,eAAK,OAAO,OAAO;AACnB,iBAAO;AAAA,QACT;AACA,cAAM,OAAO,KAAK,KAAK,MAAM;AAC7B,YAAIC,QAAO;AACX,YAAI;AACF,gBAAM,MAAM,KAAK,KAAK,IAAI;AAC1B,UAAAA,QAAQ,OAAO,MAAS;AACxB,iBAAO;AAAA,QACT,UAAE;AACA,kBAAQ,MAAM,QAAQ,OAAOA,KAAI;AACjC,kBAAQ,OAAO,QAAQ,KAAK;AAAA,QAC9B;AAAA,MACF;AAAA,MAEQ,KAAK,QAA4B;AACvC,mBAAS;AACP,gBAAM,OAAO,QAAQ,KAAK,QAAQ,KAAK;AACvC,cAAI,OAAO,OAAQ,SAAQ,KAAK,QAAQ,OAAO,IAAI;AAAA,mBAC1C,QAAQ,gBAAgB,QAAQ,OAAO,MAAM,OAAO,MAAM,MAAM,KAAM,QAAO;AAAA,QACxF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AClHA,IAAa;AAAb;AAAA;AAAA;AAAO,IAAM,gBAAgB,KAAK;AAAA;AAAA;;;ACmS3B,SAAS,SAAS,MAAwC;AAC/D,SAAO,aAAa,IAAI,IAAI;AAC9B;AArSA,IA2RM;AA3RN;AAAA;AAAA;AACA;AA0RA,IAAM,eAAkD,oBAAI,IAAI;AAAA,MAC9D,CAAC,aAAa,MAAM;AAAA,MACpB,CAAC,aAAa,MAAM;AAAA,MACpB,CAAC,aAAa,MAAM;AAAA,MACpB,CAAC,gBAAgB,SAAS;AAAA,MAC1B,CAAC,eAAe,SAAS;AAAA,IAC3B,CAAC;AAAA;AAAA;;;AC7OD,SAAS,WAAW,MAAkC;AACpD,QAAM,IAAI,mDAAmD,KAAK,IAAI;AACtE,MAAI,CAAC,EAAG,QAAO;AACf,SAAO,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;AACrD;AAKO,SAAS,SAAS,MAAkC;AACzD,SAAO,SAAS,IAAI;AACtB;AAEA,SAAS,YAAY,MAAuB;AAC1C,MAAI,SAAS,IAAI,KAAK,WAAW,IAAI,MAAM,OAAW,QAAO;AAC7D,SAAO,SAAS,eAAe,SAAS,kBAAkB,SAAS;AACrE;AAEA,SAAS,OAAO,MAAc,MAAuB;AACnD,SAAO,SAAS,QAAQ,KAAK,WAAW,SAAS,MAAM,MAAM,GAAG,IAAI,GAAG;AACzE;AAokCA,SAAS,cAAsD;AAC7D,SAAO,EAAE,MAAM,UAAU,UAAU,OAAO,QAAQ,MAAM;AAC1D;AAIA,SAAS,OAAO,QAA6B;AAC3C,SAAO,OAAO,UAAU,UAAU,eAAe;AACnD;AAEA,SAAS,YAAY,MAA0D;AAC7E,SAAO,EAAE,MAAM,UAAU,QAAQ,KAAK,QAAQ,GAAI,KAAK,SAAS,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC,EAAG;AAChG;AAEA,SAAS,YAAY,GAAuC,QAAgB,QAAsB;AAChG,QAAM,UAAU,SAAS,OAAO,cAAc,OAAO,SAAS,OAAO,WAAW;AAChF,MAAI,GAAG,YAAY,OAAQ,OAAM,IAAI,UAAU,OAAO;AACxD;AAEA,SAAS,UAAU,GAA6E;AAC9F,SAAO;AAAA,IACL,GAAI,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC1C,GAAI,EAAE,SAAS,SAAY,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;AAAA,EACjD;AACF;AAEA,SAAS,OAAO,GAAoC;AAClD,MAAI,EAAE,SAAS,MAAO,QAAO,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,EAAE;AAC5D,MAAI,EAAE,SAAS,SAAU,QAAO,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,IAAI,CAAC,EAAG;AAC9F,SAAO;AACT;AAEA,SAAS,QAAQ,MAAqC;AACpD,MAAI,KAAK,QAAQ,SAAS,KAAK,MAAM;AACnC,WAAO,EAAE,MAAM,OAAO,MAAM,KAAK,KAAK,KAAK,GAAG,UAAU,KAAK,IAAI,EAAE;AAAA,EACrE;AACA,MAAI,KAAK,QAAQ,YAAY,KAAK,KAAM,QAAO,YAAY,KAAK,IAAI;AACpE,MAAI,KAAK,SAAS,OAAQ,QAAO;AACjC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,KAAK;AAAA,IACX,OAAO,KAAK,UAAU;AAAA,IACtB,YAAY,KAAK,SAAS,KAAK,gBAAgB;AAAA,IAC/C,UAAU,KAAK,SAAS,KAAKC,eAAc;AAAA,EAC7C;AACF;AAEA,SAAS,OAAO,QAAgB,QAAwB;AACtD,QAAMC,UAAS,SAAS,OAAO,cAAc,OAAO,SAAS,OAAO,WAAW;AAC/E,QAAMC,SAAQ,SAAS,OAAO,aAAa,MAAM,CAACD;AAClD,UAAQC,QAAO,IAAI,MAAMD,SAAQ,IAAI;AACvC;AAEA,SAAS,WACP,UACA,QACA,QAC0C;AAC1C,QAAM,WAAW,UAAU,aAAa;AACxC,QAAM,WAAW,WAAW,OAAO,QAAQ,OAAO,QAAQ,OAAO;AACjE,QAAME,aAAY,SAAS,OAAO,cAAc,OAAO,SAAS,cAAc;AAC9E,MAAIA,aAAY,SAAU,OAAM,IAAI,UAAU,OAAO;AACrD,SAAO,EAAE,WAAW,SAAS,OAAO,aAAa,MAAM,CAACA,WAAU,UAAAA,UAAS;AAC7E;AAEA,SAAS,eACP,IACA,GACA,QAC4C;AAC5C,QAAM,SAAS,EAAE,OAAO,SAAS,MAAM,EAAE,OAAO,UAAU,KAAK;AAC/D,MAAI,CAAC,UAAU,EAAE,OAAO,SAAU,GAAE,OAAO,MAAM;AACjD,QAAM,QAAQ,CAAC,WAAW,OAAO,IAAI,EAAE,MAAM,KAAK,EAAE,OAAO;AAC3D,SAAO;AAAA,IACL,IAAI;AAAA,IACJ;AAAA,IACA,MAAM,EAAE;AAAA,IACR,QAAQ,EAAE,WAAY,EAAE,WAAWC,UAASC,YAAY,MAAM,EAAE,SAASL,YAAW;AAAA,IACpF,UAAU,EAAE;AAAA,IACZ,GAAI,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,SAAS,EAAE;AAAA,IACjD,GAAI,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,IACjC,GAAI,CAAC,UAAU,EAAE,OAAO,QAAQ,SAC5B,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,KAAK,MAAM,EAAE,OAAO,KAAK,EAAE,EAAE,IACxD,CAAC;AAAA,IAEL,GAAI,CAAC,SAAS,EAAE,OAAO,QAAQ,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AAAA,IACtD,GAAI,EAAE,OAAO,WAAW,SAAY,EAAE,QAAQ,EAAE,OAAO,OAAO,IAAI,CAAC;AAAA,IACnE,GAAI,EAAE,OAAO,WAAW,UAAa,EAAE,QAAQ,SAAY,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;AAAA,EAC/E;AACF;AAruCA,IAgCM,gBAUA,YACAK,WACAD,SACAJ,WAaO,aACA,gBAeA,SAskCPM;AAhpCN;AAAA;AAAA;AAAA;AACA;AACA;AASA;AAQA;AACA;AAYA,IAAM,iBAAiB,CAAC,OAAO,KAAK;AAUpC,IAAM,aAAa;AACnB,IAAMD,YAAW;AACjB,IAAMD,UAAS;AACf,IAAMJ,YAAW;AAaV,IAAM,cAAc;AACpB,IAAM,iBAAiB;AAevB,IAAM,UAAN,MAAc;AAAA,MACF,QAAQ,oBAAI,IAAuB;AAAA,MAEnC,UAAU,oBAAI,IAAwB;AAAA,MAEtC,WAAW,oBAAI,QAAoB;AAAA,MAEnC,OAAO,oBAAI,IAAwB;AAAA,MAEnC,MAAM,oBAAI,IAAwB;AAAA,MAElC;AAAA,MACA;AAAA,MACT;AAAA,MACR,YAAY,QAAoB,IAAuB;AACrD,aAAK,SAAS;AACd,aAAK,KAAK;AACV,aAAK,cAAc,GAAG,SAAS,QAAQ,KAAK;AAAA,MAC9C;AAAA,MAEA,UAAU,KAA+B;AACvC,YAAI,QAAQ,UAAa,SAAU,KAAK,cAAc,IAAK,GAAI,MAAK,cAAc;AAAA,MACpF;AAAA,MAEA,cAAcO,WAAU,OAAgB;AACtC,cAAM,OAAO,KAAK,GAAG;AACrB,YAAI,MAAM,MAAM,QAAQ,KAAK;AAC7B,YAAIA,YAAW,QAAQ,QAAQ,KAAK,YAAa,OAAM,KAAK,YAAY,KAAK,cAAc;AAC3F,YAAI,QAAQ,KAAK,eAAe,CAAC,KAAK,GAAG,QAAS,QAAO;AACzD,cAAMC,QAAO,CAAC,GAAG,KAAK,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9E,YAAIA,MAAK,WAAW,GAAG;AACrB,eAAK,cAAc;AACnB,iBAAO;AAAA,QACT;AACA,cAAM,EAAE,KAAK,MAAM,QAAQ,IAAI,KAAK,GAAG,QAAQ,KAAK,aAAaA,KAAI;AACrE,aAAK,cAAc;AACnB,mBAAW,CAAC,MAAM,EAAE,KAAK,QAAS,MAAK,QAAQ,MAAM,IAAI,QAAW,IAAI;AACxE,eAAO,QAAQ,SAAS;AAAA,MAC1B;AAAA,MAEA,MACE,KACA,WAMA,OAAO,OACD;AACN,mBAAW,MAAM,CAAC,GAAG,GAAG,CAAC,EAAG,MAAK,MAAM,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;AAClE,cAAM,WAAW,KAAK,SAAS,KAAK,IAAI;AACxC,cAAM,MAAM,IAAI,SAAS;AACzB,mBAAW,EAAE,IAAI,MAAM,OAAO,QAAAC,QAAO,KAAK,WAAW;AACnD,cAAI,KAAK;AACT,cAAI,KAAK,KAAK;AACZ,iBAAK,KAAK,OAAO,KAAK,EAAE,IAAI,UAAU,IAAI,KAAK,IAAI,CAAC;AACpD,iBAAK,OAAO,IAAI,MAAM,EAAE;AAAA,UAC1B;AACA,cAAIA,SAAQ;AACV,iBAAK,MAAM,IAAI,IAAI,YAAYA,OAAM,CAAC;AACtC;AAAA,UACF;AAEA,gBAAM,aAAa,SAAS,KAAK,gBAAgB;AACjD,eAAK,MAAM,IAAI,IAAI,EAAE,GAAG,YAAY,GAAG,UAAU,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC,EAAG,CAAC;AAAA,QAC9E;AACA,iBAAS,QAAQ,CAAC,OAAO,MAAM;AAC7B,eAAK,OAAO,KAAK,EAAE,IAAI,cAAc,IAAI,IAAI,GAAG,MAAM,OAAO,KAAK,EAAc,CAAC;AACjF,eAAK,MAAM,IAAI,IAAI,GAAG,KAAK;AAAA,QAC7B,CAAC;AAAA,MACH;AAAA,MAEA,UAAU,IAAoB;AAC5B,cAAM,KAAK,KAAK,OAAO,KAAK,EAAE,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;AACxD,aAAK,MAAM,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;AACtC,eAAO;AAAA,MACT;AAAA,MAEA,UAAU,MAAcC,OAAsB;AAC5C,eAAO,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM,UAAU,IAAI,GAAG,SAASA,MAAK,CAAC;AAAA,MAC3E;AAAA,MAEQ,SAAS,KAAa,MAA4B;AACxD,cAAM,OAAO,UAAU,GAAG;AAC1B,cAAM,MAA2C,EAAE,MAAM,OAAO,MAAM,MAAM,SAAS,IAAI;AACzF,cAAM,MAAmB,CAAC,GAAG;AAC7B,YAAI,QAAkB,CAAC;AACvB,YAAI;AACF,kBAAQ,KAAK,GAAG,QAAQ,GAAG;AAAA,QAC7B,QAAQ;AACN,iBAAO;AAAA,QACT;AAEA,mBAAWA,SAAQ,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,OAAO,OAAO,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG;AAC5E,gBAAM,OAAO,IAAIA,KAAI;AACrB,cAAI,SAAS,QAAQ;AACnB,gBAAI,KAAK,EAAE,MAAM,OAAO,MAAM,SAAS,KAAK,CAAC;AAC7C;AAAA,UACF;AACA,cAAI;AACF,gBAAI,KAAK,GAAG,KAAK,IAAI,EAAE,YAAa,KAAI,KAAK,EAAE,MAAM,OAAO,MAAM,SAAS,KAAK,CAAC;AAAA,UACnF,QAAQ;AAAA,UAAC;AAAA,QACX;AACA,YAAI,MAAM;AACR,cAAI;AAAA,YACF,EAAE,MAAM,OAAO,MAAM,KAAK,SAAS,IAAI;AAAA,YACvC,EAAE,MAAM,OAAO,MAAM,MAAM,SAAS,KAAK;AAAA,UAC3C;AACA,cAAI,OAAO,IAAI,IAAI,SAAS;AAAA,QAC9B;AACA,eAAO;AAAA,MACT;AAAA,MAEA,KAAK,IAAmC;AACtC,YAAI,CAAC,KAAK,OAAQ,QAAO,KAAK,MAAM,IAAI,EAAE;AAC1C,aAAK,KAAK;AACV,eAAO,KAAK,MAAM,IAAI,EAAE,KAAK,KAAK,MAAM,EAAE;AAAA,MAC5C;AAAA,MAEQ;AAAA,MACA,OAAO;AAAA,MAEf,IAAI,WAAoB;AACtB,eAAO,KAAK,WAAW;AAAA,MACzB;AAAA,MAEA,MAAM,KAAiB,OAAsB;AAC3C,YAAI,CAAC,OAAO;AACV,eAAK,aAAa;AAClB,qBAAW,MAAM,KAAK,QAAS,MAAK,OAAO,KAAK,EAAE,IAAI,cAAc,IAAI,IAAI,KAAK,CAAC;AAClF,qBAAW,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO;AAChC,gBAAI,EAAE,SAAS,aAAa,EAAE,YAAY,EAAE,QAAS,MAAK,aAAa,IAAI,CAAC;AAAA,UAC9E;AAAA,QACF,OAAO;AACL,eAAK,MAAM,MAAM;AACjB,eAAK,QAAQ,MAAM;AAAA,QACrB;AACA,aAAK,SAAS;AACd,QAAC,KAAK,GAA6B,WAAW;AAC9C,aAAK,OAAO,QAAQ,KAAK,KAAKJ,IAAG;AAAA,MACnC;AAAA,MAEQ,OAAa;AACnB,cAAM,SAAS,KAAK;AACpB,cAAM,MAAM,QAAQ,KAAK,QAAQA,IAAG;AACpC,YAAI,QAAQ,KAAK,KAAM;AACvB,YAAI,CAAC,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC7B,eAAK,MAAM,MAAM;AACjB,eAAK,QAAQ,MAAM;AAAA,QACrB;AACA,aAAK,OAAO;AAAA,MACd;AAAA,MAEQ,OAAO,QAAoB,MAAuB;AACxD,YAAI,OAAO,KAAK,OAAO,gBAAgB,CAAC,OAAO,MAAM,EAAG,QAAO;AAC/D,cAAMK,WAAoB,CAAC;AAC3B,iBAAS,IAAI,KAAK,OAAO,GAAG,KAAK,MAAM,KAAK;AAC1C,gBAAM,KAAK,UAAW,IAAI,eAAgB;AAC1C,cAAI,QAAQ,KAAK,QAAQ,EAAE,MAAM,EAAG,QAAO;AAC3C,gBAAM,KAAK,QAAQ,KAAK,QAAQ,KAAK,CAAC;AACtC,cAAI,KAAK,KAAK,QAAQ,KAAK,QAAQ,EAAE,MAAM,EAAG,QAAO;AACrD,UAAAA,SAAQ,KAAK,EAAE;AAAA,QACjB;AACA,mBAAW,MAAMA,UAAS;AACxB,eAAK,MAAM,OAAO,EAAE;AACpB,eAAK,QAAQ,OAAO,EAAE;AAAA,QACxB;AACA,eAAO;AAAA,MACT;AAAA,MAEQ,QAAQ,KAAqB;AACnC,YAAI,CAAC,KAAK,OAAQ;AAClB,cAAM,SAAS,KAAK;AACpB,mBAAW,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC,EAAE,GAAG;AAC5C,gBAAM,MAAM,QAAQ,IAAI,QAAQL,MAAK,CAAC,IAAI;AAC1C,cAAI,OAAO,MAAM,GAAG;AAClB,kBAAM,KAAK,UAAW,MAAM,eAAgB;AAC5C,oBAAQ,MAAM,QAAQ,IAAI,CAAC;AAC3B,oBAAQ,MAAM,QAAQ,KAAK,GAAG,EAAE;AAChC,oBAAQ,MAAM,QAAQ,IAAI,GAAG;AAAA,UAC/B;AACA,cAAI,MAAM,MAAM,KAAK,KAAM,MAAK,OAAO;AAAA,QACzC;AAAA,MACF;AAAA,MAEQ,WAAW,IAAuB;AACxC,YAAI;AACJ,YAAI;AACF,iBAAO,KAAK,OAAO,KAAK,EAAE,IAAI,WAAW,GAAG,CAAC;AAAA,QAC/C,QAAQ;AACN,iBAAO,YAAY;AAAA,QACrB;AACA,eAAO,MAAM,QAAQ,SAAS,KAAK,OAAO,EAAE,MAAM,OAAO,MAAM,KAAK,KAAK,IAAI,IAAI,YAAY;AAAA,MAC/F;AAAA,MAEQ,MAAM,IAAmC;AAC/C,YAAI;AACJ,YAAI;AACF,iBAAO,KAAK,OAAO,KAAK,EAAE,IAAI,WAAW,GAAG,CAAC;AAAA,QAC/C,QAAQ;AACN,iBAAO;AAAA,QACT;AACA,cAAM,IAAI,QAAQ,IAAI;AACtB,YAAI,CAAC,EAAG,QAAO;AACf,aAAK,MAAM,IAAI,IAAI,CAAC;AACpB,YAAI,KAAK,QAAS,MAAK,QAAQ,IAAI,EAAE;AACrC,eAAO;AAAA,MACT;AAAA,MAEQ,SAA8C;AACpD,cAAM,MAA2C,CAAC;AAClD,mBAAW,QAAQ,KAAK,OAAO,KAAK,EAAE,IAAI,UAAU,CAAC,GAAqC;AACxF,gBAAM,IAAI,QAAQ,IAAI;AACtB,cAAI,EAAG,KAAI,KAAK,CAAC,KAAK,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC;AAAA,QACrD;AACA,eAAO;AAAA,MACT;AAAA,MAEQ,aAAa,IAAY,GAAiD;AAChF,cAAM,SAAS,EAAE,WAAW,aAAa,MAAM,EAAE,SAASN,YAAW;AACrE,aAAK,OAAO,KAAK,EAAE,IAAI,YAAY,IAAI,MAAM,CAAC;AAAA,MAChD;AAAA,MAEA,SAAS,IAAY,UAAmB,QAAuB;AAC7D,cAAM,IAAI,KAAK,IAAI,EAAE;AACrB,YAAI,EAAE,SAAS,UAAU;AACvB,YAAE,WAAW;AACb,YAAE,SAAS;AACX,cAAI,KAAK,QAAQ;AACf,iBAAK,aAAa,IAAI,CAAC;AACvB,iBAAK,KAAK,EAAE;AAAA,UACd;AAAA,QACF,WAAW,EAAE,SAAS,OAAQ,GAAE,KAAK,SAAS;AAAA,MAChD;AAAA,MAEA,WAAW,IAAY,IAAmB;AACxC,aAAK,IAAI,EAAE;AACX,YAAI,GAAI,MAAK,QAAQ,IAAI,EAAE;AAAA,YACtB,MAAK,QAAQ,OAAO,EAAE;AAC3B,YAAI,KAAK,QAAQ;AACf,eAAK,OAAO,KAAK,EAAE,IAAI,cAAc,IAAI,GAAG,CAAC;AAC7C,eAAK,KAAK,EAAE;AAAA,QACd;AAAA,MACF;AAAA,MAEA,MAA0B;AACxB,cAAM,MAAM,KAAK,KAAK,CAAC;AACvB,eAAO,KAAK,SAAS,SAAS,IAAI,YAAY,MAAM,IAAI,OAAO;AAAA,MACjE;AAAA,MAEA,YAAsB;AACpB,cAAM,MAAM,KAAK,SACZ,KAAK,OAAO,KAAK,EAAE,IAAI,UAAU,CAAC,EAChC,OAAO,CAAC,SAAS,KAAK,GAAG,EACzB,IAAI,CAAC,SAAS,KAAK,EAAE,IACxB,CAAC,GAAG,KAAK,KAAK,EACX,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,SAAS,KAAK,EACzD,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE;AACvB,eAAO,IAAI,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,MACjC;AAAA,MAEA,UAAoB;AAClB,eAAO,CAAC,GAAG,KAAK,KAAK,EAClB,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,SAAS,QAAQ,EAC5D,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAChB,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,MACzB;AAAA,MAEA,MAAM,IAAY,MAAoB,UAAmB,QAAQ,OAAa;AAC5E,aAAK,MAAM,IAAI,IAAI,EAAE,MAAM,UAAU,MAAM,OAAO,UAAU,QAAQ,MAAM,CAAC;AAC3E,YAAI,KAAK,UAAU,SAAU,MAAK,aAAa,IAAI,EAAE,UAAU,QAAQ,MAAM,CAAC;AAC9E,aAAK,KAAK,EAAE;AAAA,MACd;AAAA,MAEA,IAAI,IAAuB;AACzB,cAAM,IAAI,KAAK,KAAK,EAAE;AACtB,YAAI,CAAC,EAAG,OAAM,IAAI,UAAU,OAAO;AACnC,YAAI,EAAE,SAAS,OAAQ,MAAK,cAAc;AAC1C,eAAO;AAAA,MACT;AAAA,MAEA,QAAQ,IAAuE;AAC7E,cAAM,IAAI,KAAK,KAAK,EAAE;AACtB,YAAI,GAAG,SAAS,SAAS,EAAE,YAAY,OAAW,OAAM,IAAI,UAAU,OAAO;AAC7E,eAAO;AAAA,MACT;AAAA,MAEA,IAAI,IAAiD;AACnD,cAAM,IAAI,KAAK,IAAI,EAAE;AACrB,YAAI,EAAE,SAAS,MAAO,OAAM,IAAI,UAAU,SAAS;AACnD,eAAO;AAAA,MACT;AAAA,MAEQ,QAAQ,GAAc,MAAM,GAAW;AAC7C,cAAM,OAAO,OAAO,CAAC;AACrB,cAAM,KAAK,KAAK,OAAO,KAAK;AAAA,UAC1B,IAAI;AAAA,UACJ,GAAI,MAAM,IAAI,EAAE,IAAI,IAAI,CAAC;AAAA,UACzB,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,QACzB,CAAC;AACD,aAAK,MAAM,IAAI,IAAI,CAAC;AACpB,aAAK,KAAK,EAAE;AACZ,eAAO;AAAA,MACT;AAAA,MAES,UAAU,oBAAI,IAAY;AAAA,MAEnC,kBAAkB;AAAA,MAElB,IAAI,IAAY,KAAa,SAA0B;AACrD,cAAM,IAAI,KAAK,IAAI,EAAE;AACrB,YAAI;AACJ,YAAI,EAAE,SAAS,QAAQ;AACrB,eAAK,KAAK,OAAO,KAAK,EAAE,IAAI,UAAU,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,CAAC;AACjE,eAAK,MAAM,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;AAAA,QAC7B,OAAO;AACL,YAAE,KAAK;AACP,eAAK,KAAK,QAAQ,GAAG,GAAG;AAAA,QAC1B;AACA,YAAI,QAAS,MAAK,WAAW,IAAI,IAAI;AACrC,aAAK,KAAK,EAAE;AACZ,eAAO;AAAA,MACT;AAAA,MAEA,OAAyB;AACvB,cAAM,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK;AACpC,aAAK,MAAM,IAAI,GAAG,EAAE,MAAM,UAAU,MAAM,UAAU,UAAU,OAAO,QAAQ,MAAM,CAAC;AACpF,aAAK,MAAM,IAAI,GAAG,EAAE,MAAM,UAAU,MAAM,UAAU,UAAU,OAAO,QAAQ,MAAM,CAAC;AACpF,aAAK,KAAK,GAAG,CAAC;AACd,eAAO,CAAC,GAAG,CAAC;AAAA,MACd;AAAA,MAEA,MAAM,MAAoB;AACxB,cAAM,MAAM,KAAK,KAAK,CAAC;AACvB,YAAI,KAAK,SAAS,SAAS,IAAI,YAAY,IAAK;AAChD,cAAM,QAA8D,CAAC,CAAC,GAAG,GAAG,CAAC;AAC7E,cAAM,OAAO,IAAI,SAAS,SAAY,SAAY,KAAK,KAAK,IAAI,IAAI;AACpE,YAAI,MAAM,SAAS,SAAS,KAAK,YAAY,KAAM,OAAM,KAAK,CAAC,IAAI,MAAgB,IAAI,CAAC;AACxF,mBAAW,CAAC,IAAI,CAAC,KAAK,OAAO;AAC3B,YAAE,OAAO;AACT,eAAK,OAAO,KAAK,EAAE,IAAI,WAAW,IAAI,MAAM,OAAO,CAAC,EAAc,CAAC;AAAA,QACrE;AACA,aAAK,MAAM,MAAM,KAAK,OAAO,KAAK,EAAE,IAAI,aAAa,KAAK,CAAC,GAAmB,IAAI;AAClF,aAAK,KAAK;AAAA,MACZ;AAAA,MAEA,QAAQ,IAAY,QAAQ,OAAa;AACvC,cAAM,IAAI,KAAK,IAAI,EAAE;AACrB,YAAI,EAAE,SAAS,WAAW,CAAC,SAAS,KAAK,MAAM,EAAE,GAAI,MAAK,aAAa,EAAE,KAAK,MAAM;AAAA,MACtF;AAAA,MAEA,aAAa,MAAyB;AACpC,cAAM,WAAW,oBAAI,IAAuB;AAE5C,cAAM,SAAS,oBAAI,IAAgB;AACnC,mBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,GAAG;AACrC,cAAI,EAAE,SAAS,UAAW,QAAQ,EAAE,KAAK,WAAW,KAAO;AAC3D,gBAAM,QAAQ,SAAS,IAAI,EAAE,IAAI;AACjC,cAAI,UAAU,QAAW;AACvB,iBAAK,OAAO,KAAK,EAAE,IAAI,cAAc,IAAI,OAAO,MAAM,CAAC;AAAA,UACzD,OAAO;AACL,iBAAK,OAAO,KAAK,eAAe,IAAI,EAAE,MAAM,MAAM,CAAC;AACnD,mBAAO,IAAI,EAAE,KAAK,MAAM;AACxB,qBAAS,IAAI,EAAE,MAAM,EAAE;AAAA,UACzB;AACA,eAAK,MAAM,IAAI,IAAI;AAAA,YACjB,MAAM;AAAA,YACN,MAAM;AAAA,YACN,UAAU;AAAA,YACV,QAAQ,EAAE,KAAK;AAAA,YACf,MAAM,EAAE,KAAK;AAAA,YACb,KAAK,KAAK,MAAM,EAAE,KAAK,IAAI;AAAA,UAC7B,CAAC;AAAA,QACH;AACA,mBAAW,QAAQ,SAAS,KAAK,GAAG;AAClC,cAAI,EAAE,KAAK,OAAO,SAAS,GAAG;AAC5B,iBAAK,OAAO,KAAK,MAAM;AACvB,iBAAK,MAAM,KAAK,MAAM;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,WAAyB;AACvB,cAAM,MAAoB,CAAC;AAE3B,YAAI,KAAK,OAAQ,QAAO;AACxB,mBAAW,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO;AAChC,cAAI,EAAE,SAAS;AACb,gBAAI,KAAK,EAAE,IAAI,MAAM,UAAU,UAAU,EAAE,UAAU,QAAQ,EAAE,OAAO,CAAC;AAAA,mBAChE,EAAE,SAAS,MAAO,KAAI,KAAK,EAAE,IAAI,MAAM,OAAO,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;AAAA,mBAC7E,EAAE,SAAS,SAAU,KAAI,KAAK,EAAE,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC;AAAA,QAClE;AACA,eAAO;AAAA,MACT;AAAA,MAEA,QAAQ,KAA4B,SAAkC;AACpE,aAAK,MAAM,MAAM;AACjB,mBAAW,KAAK,KAAK;AACnB,cAAI,EAAE,SAAS;AACb,iBAAK,MAAM,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,UAAU,EAAE,UAAU,QAAQ,EAAE,OAAO,CAAC;AAAA,mBACxE,EAAE,SAAS;AAClB,iBAAK,MAAM,IAAI,EAAE,IAAI,EAAE,MAAM,OAAO,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;AAAA,cAChE,MAAK,MAAM,IAAI,EAAE,IAAI,YAAY,CAAC,CAAC;AAAA,QAC1C;AACA,mBAAW,MAAM,QAAS,MAAK,QAAQ,IAAI,EAAE;AAAA,MAC/C;AAAA,MAEA,cAAmC;AACjC,cAAM,MAAM,oBAAI,IAAoB;AACpC,cAAM,MAAM,KAAK,SACb,KAAK,OAAO,IACZ,CAAC,GAAG,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAoC;AAAA,UAC7D;AAAA,UACA;AAAA,UACA,KAAK,QAAQ,IAAI,EAAE;AAAA,QACrB,CAAC;AACL,mBAAW,CAAC,IAAI,GAAG,OAAO,KAAK,KAAK;AAClC,cAAI,EAAE,SAAS,YAAY,QAAS;AACpC,cAAI,KAAK,mBAAmB,KAAK,EAAG;AACpC,cAAI,IAAI,IAAI,EAAE;AAAA,QAChB;AACA,eAAO;AAAA,MACT;AAAA,MAEQ,UAAU;AAAA,MAElB,YAAkB;AAChB,aAAK,UAAU;AAAA,MACjB;AAAA,MAEQ,UAAU,GAAgC;AAChD,YAAI,CAAC,KAAK,WAAW,GAAG,SAAS,OAAQ;AACzC,YAAI;AACF,eAAK,OAAO,KAAK,EAAE,IAAI,YAAY,MAAM,EAAE,KAAK,KAAK,CAAC;AAAA,QACxD,QAAQ;AAAA,QAAC;AAAA,MACX;AAAA,MAEA,MAAM,IAAkB;AACtB,cAAM,IAAI,KAAK,IAAI,EAAE;AACrB,aAAK,MAAM,OAAO,EAAE;AACpB,aAAK,QAAQ,OAAO,EAAE;AACtB,YAAI;AACF,eAAK,OAAO,IAAI,MAAM,EAAE;AAAA,QAC1B,UAAE;AACA,eAAK,QAAQ,CAAC;AACd,eAAK,UAAU,CAAC;AAChB,eAAK,KAAK,EAAE;AAAA,QACd;AAAA,MACF;AAAA,MAEA,SAAS,MAAc,IAAY,OAAO,OAAa;AACrD,cAAM,IAAI,KAAK,IAAI,IAAI;AAEvB,cAAM,MAAM,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE;AAC9C,YAAI,SAAS,GAAI;AACjB,aAAK,OAAO,KAAK,EAAE,IAAI,eAAe,MAAM,IAAI,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC,EAAG,CAAC;AAC3E,aAAK,QAAQ,OAAO,EAAE;AACtB,YAAI,MAAM;AACR,cAAI,EAAE,SAAS,OAAQ,GAAE,KAAK;AAC9B,eAAK,MAAM,IAAI,IAAI,EAAE,SAAS,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC;AAAA,QACrD,OAAO;AACL,eAAK,MAAM,OAAO,IAAI;AACtB,eAAK,MAAM,IAAI,IAAI,CAAC;AACpB,cAAI,KAAK,QAAQ,OAAO,IAAI,EAAG,MAAK,QAAQ,IAAI,EAAE;AAAA,QACpD;AACA,YAAI,IAAK,MAAK,QAAQ,GAAG;AACzB,aAAK,UAAU,GAAG;AAClB,aAAK,KAAK,MAAM,EAAE;AAAA,MACpB;AAAA,MAEQ,QAAQ,GAAoB;AAClC,YAAI,EAAE,SAAS,UAAU,EAAE,EAAE,KAAK,OAAO,EAAG;AAC5C,cAAM,EAAE,OAAO,IAAI,EAAE;AACrB,YAAI;AACF,iBAAO,MAAM;AACb,eAAK,SAAS,OAAO,MAAM;AAAA,QAC7B,SAAS,KAAK;AACZ,eAAK,SAAS,IAAI,MAAM;AACxB,eAAK,KAAK,MAAM;AAChB,gBAAM;AAAA,QACR;AACA,aAAK,KAAK,MAAM;AAAA,MAClB;AAAA,MAEQ,KAAK,QAA0B;AACrC,YAAI,EAAE,OAAO,QAAQ,EAAG;AACxB,aAAK,OAAO,MAAM;AAClB,aAAK,MAAM,MAAM;AAAA,MACnB;AAAA,MAEQ,OAAO,QAA0B;AACvC,mBAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,OAAO,EAAG,KAAI,MAAM,OAAQ,MAAK,QAAQ,OAAO,CAAC;AAC/E,cAAM,KAAK,KAAK,IAAI,IAAI,MAAM;AAC9B,YAAI,OAAO,UAAa,KAAK,KAAK,IAAI,EAAE,MAAM,OAAQ,MAAK,KAAK,OAAO,EAAE;AACzE,aAAK,IAAI,OAAO,MAAM;AAAA,MACxB;AAAA,MAEQ,KAAK,QAAoB,IAAkB;AACjD,YAAI,KAAK,IAAI,IAAI,MAAM,EAAG;AAC1B,aAAK,IAAI,IAAI,QAAQ,EAAE;AACvB,YAAI,CAAC,KAAK,KAAK,IAAI,EAAE,EAAG,MAAK,KAAK,IAAI,IAAI,MAAM;AAAA,MAClD;AAAA,MAEQ,SAAS,IAAsD;AACrE,YAAI,CAAC,MAAM,GAAG,QAAQ,WAAc,GAAG,SAAS,KAAK,EAAG,QAAO;AAC/D,eAAO,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG;AAAA,MACjC;AAAA,MAEQ,QAAQ,MAAc,IAA0D;AACtF,YAAI,IAAI,QAAQ,OAAW,QAAO;AAClC,cAAM,KAAK,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG;AACnC,YAAI,CAAC,KAAK,KAAK,IAAI,EAAE,KAAK,KAAK,SAAS,EAAE,MAAM,OAAW,MAAK,MAAM;AACtE,cAAM,SAAS,KAAK,KAAK,IAAI,EAAE;AAC/B,YAAI,CAAC,OAAQ,QAAO;AACpB,aAAK,QAAQ,IAAI,MAAM,MAAM;AAC7B,eAAO;AAAA,MACT;AAAA,MAEQ,QAAc;AACpB,mBAAW,CAAC,GAAG,MAAM,KAAK,KAAK,SAAS;AACtC,cAAI,KAAK,IAAI,IAAI,MAAM,KAAK,OAAO,SAAS,EAAG;AAC/C,gBAAM,QAAQ,KAAK,SAAS,KAAK,cAAc,CAAC,CAAC;AACjD,cAAI,UAAU,OAAW,MAAK,KAAK,QAAQ,KAAK;AAAA,QAClD;AAAA,MACF;AAAA,MAEA,OAAO,MAAc,IAAkB;AACrC,cAAM,SAAS,KAAK,QAAQ,IAAI,IAAI;AACpC,YAAI,CAAC,UAAU,OAAO,SAAS,EAAG;AAClC,cAAM,KAAK,KAAK,SAAS,KAAK,cAAc,EAAE,CAAC;AAC/C,YAAI,OAAO,OAAW;AACtB,aAAK,KAAK,QAAQ,EAAE;AACpB,YAAI,CAAC,KAAK,QAAQ,IAAI,EAAE,EAAG,MAAK,QAAQ,IAAI,IAAI,MAAM;AAAA,MACxD;AAAA,MAEQ,MAAM,QAA0B;AACtC,aAAK,GAAG,OAAO,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM;AAAA,MACxD;AAAA,MAEA,KAAK,IAAY,GAAyD;AACxE,YAAI,CAAC,EAAE,MAAM;AACX,gBAAM,OAAO,KAAK,OAAO,KAAK,EAAE,IAAI,WAAW,GAAG,CAAC;AAKnD,YAAE,OAAO,KAAK,SAAS,KAAK,MAAM,QAAQ;AAC1C,YAAE,QAAQ,KAAK,UAAU;AAAA,QAC3B;AACA,eAAO,EAAE;AAAA,MACX;AAAA,MAEA,SAAS,IAAY,GAAoD;AACvE,YAAI,KAAK,KAAK,IAAI,CAAC,MAAM,SAAU,QAAO;AAC1C,YAAI,EAAE,UAAU,QAAW;AACzB,YAAE,QAAS,KAAK,OAAO,KAAK,EAAE,IAAI,WAAW,GAAG,CAAC,EAAuB,UAAU;AAAA,QACpF;AACA,eAAO,EAAE;AAAA,MACX;AAAA,MAEA,WAAiB;AACf,mBAAW,UAAU,KAAK,QAAQ,OAAO,GAAG;AAC1C,cAAI;AACF,mBAAO,MAAM;AACb,iBAAK,SAAS,OAAO,MAAM;AAAA,UAC7B,SAAS,KAAK;AACZ,gBAAI,CAAC,KAAK,SAAS,IAAI,MAAM,EAAG,OAAM;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,MAEA,aAAmB;AACjB,mBAAW,UAAU,KAAK,QAAQ,OAAO,GAAG;AAC1C,cAAI;AACF,mBAAO,MAAM;AAAA,UACf,QAAQ;AAAA,UAAC;AAAA,QACX;AAAA,MACF;AAAA,MAEA,OAAO,IAAkB;AACvB,cAAM,IAAI,KAAK,IAAI,EAAE;AACrB,YAAI,EAAE,SAAS,OAAQ,GAAE,KAAK,OAAO,OAAO;AAAA,MAC9C;AAAA,MAEA,UAAU,MAAoB;AAC5B,mBAAW,CAAC,GAAG,MAAM,KAAK,KAAK,QAAS,KAAI,OAAO,GAAG,IAAI,EAAG,QAAO,MAAM;AAE1E,YAAI,KAAK,UAAU,CAAC,KAAK,GAAG,SAAS,MAAM,EAAG,MAAK,OAAO,KAAK,EAAE,IAAI,iBAAiB,KAAK,CAAC;AAAA,MAC9F;AAAA,MAEA,WAAW,MAAuB;AAChC,mBAAW,KAAK,KAAK,QAAQ,KAAK,EAAG,KAAI,OAAO,GAAG,IAAI,EAAG,QAAO;AACjE,eAAO;AAAA,MACT;AAAA,MAEA,UAAU,MAAoB;AAC5B,mBAAW,CAAC,GAAG,MAAM,KAAK,KAAK,SAAS;AACtC,cAAI,CAAC,OAAO,GAAG,IAAI,EAAG;AACtB,cAAI;AACF,mBAAO,SAAS;AAAA,UAClB,QAAQ;AAAA,UAAC;AAAA,QACX;AAAA,MACF;AAAA,MAEA,UAAU,MAAc,QAAiC;AACvD,cAAM,SAAS,KAAK,QAAQ,IAAI,IAAI;AACpC,YAAI,UAAU,KAAK,SAAS,QAAQ,MAAM,EAAG,QAAO,MAAM;AAAA,YACrD,SAAQ,KAAK;AAClB,YAAI,KAAK,OAAQ,MAAK,OAAO,KAAK,EAAE,IAAI,qBAAqB,KAAK,CAAC;AAAA,MACrE;AAAA,MAEA,SAAS,MAAc,QAAiC;AACtD,YAAI,KAAK,OAAQ,MAAK,OAAO,KAAK,EAAE,IAAI,oBAAoB,KAAK,CAAC;AAClE,cAAM,SAAS,KAAK,QAAQ,IAAI,IAAI;AACpC,YAAI,CAAC,OAAQ;AACb,aAAK,OAAO,QAAQ,MAAM;AAC1B,aAAK,QAAQ,OAAO,IAAI;AAAA,MAC1B;AAAA,MAEQ,UAAU,IAAgC;AAChD,YAAI;AACF,iBAAQ,KAAK,OAAO,KAAK,EAAE,IAAI,eAAe,IAAI,UAAU,KAAK,CAAC,EAAuB;AAAA,QAC3F,SAAS,KAAK;AACZ,eAAK,OAAO,IAAI,MAAM,EAAE;AACxB,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEA,MAAM,IAAqB;AACzB,cAAM,IAAI,KAAK,IAAI,EAAE;AACrB,YAAI,EAAE,SAAS,OAAQ,QAAO;AAC9B,YAAI,EAAE,KAAK,OAAO,SAAS,EAAG,QAAO;AACrC,eAAO,EAAE,KAAK,QAAQ,UAAa,KAAK,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,KAAK;AAAA,MACxE;AAAA,MAEQ,MAAM,MAAkC;AAC9C,YAAI;AACF,iBAAO,KAAK,GAAG,KAAK,IAAI,EAAE;AAAA,QAC5B,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEQ,SAAS,QAAoB,QAA+C;AAClF,eAAO,WAAW,UAAa,OAAO,WAAW;AAAA,MACnD;AAAA,MAEQ,OAAO,QAAoB,QAA4C;AAC7E,YAAI,KAAK,SAAS,QAAQ,MAAM,GAAG;AACjC,gBAAM,KAAK,KAAK,SAAS,MAAM;AAC/B,cAAI,OAAO,OAAW,MAAK,KAAK,QAAQ,EAAE;AAC1C;AAAA,QACF;AACA,eAAO,OAAO;AACd,aAAK,OAAO,MAAM;AAAA,MACpB;AAAA,MAEA,QAAQ,MAAc,IAAY,gBAAmC,UAAU,OAAa;AAC1F,YAAI,SAAS,GAAI;AACjB,YAAI,KAAK,UAAU,CAAC,QAAS,MAAK,OAAO,KAAK,EAAE,IAAI,mBAAmB,MAAM,GAAG,CAAC;AACjF,mBAAW,KAAK,KAAK,MAAM,OAAO,GAAG;AACnC,cAAI,EAAE,SAAS,YAAY,EAAE,SAAS,UAAa,OAAO,EAAE,MAAM,IAAI,GAAG;AACvE,cAAE,OAAO,KAAK,EAAE,KAAK,MAAM,KAAK,MAAM;AAAA,UACxC;AAAA,QACF;AACA,cAAM,QAAqC,CAAC;AAC5C,mBAAW,CAAC,GAAG,MAAM,KAAK,KAAK,SAAS;AACtC,cAAI,WAAW,OAAO,SAAS,EAAG;AAClC,cAAI,OAAO,GAAG,IAAI,EAAG,OAAM,KAAK,CAAC,GAAG,MAAM,CAAC;AAAA,mBAClC,OAAO,GAAG,EAAE,GAAG;AACtB,iBAAK,OAAO,QAAQ,cAAc;AAClC,iBAAK,QAAQ,OAAO,CAAC;AAAA,UACvB;AAAA,QACF;AACA,mBAAW,CAAC,CAAC,KAAK,MAAO,MAAK,QAAQ,OAAO,CAAC;AAC9C,mBAAW,CAAC,GAAG,MAAM,KAAK,OAAO;AAC/B,gBAAMY,QAAO,KAAK,EAAE,MAAM,KAAK,MAAM;AACrC,cAAI,OAAO,SAAS,EAAG,QAAO,OAAOA;AACrC,eAAK,QAAQ,IAAIA,OAAM,MAAM;AAAA,QAC/B;AAAA,MACF;AAAA,MAEA;AAAA,MAEQ,SAAS,KAAmD;AAClE,eAAO,IAAI,YAAY,OAAO,IAAI,YAAY;AAAA,MAChD;AAAA,MAEA,QAAQ,KAAmD;AACzD,eAAO,KAAK,SAAS,UAAa,KAAK,SAAS,GAAG,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI;AAAA,MACnF;AAAA,MAEA,QAAQ,OAAe,MAAsB;AAC3C,YAAI,SAAS,GAAI,OAAM,IAAI,UAAU,QAAQ;AAC7C,YAAI,KAAK,WAAW,GAAG,EAAG,QAAO,KAAK,OAAO,IAAI;AACjD,cAAM,MAAM,KAAK,IAAI,KAAK;AAC1B,YAAI,KAAK,MAAM,GAAG,EAAE,CAAC,MAAM,QAAQ,KAAK,QAAQ,GAAG,EAAG,OAAM,IAAI,UAAU,QAAQ;AAClF,eAAO,KAAK,OAAO,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE;AAAA,MAC1C;AAAA,MAEQ,OAAOC,SAAwB;AACrC,eAAOA,QAAO,MAAM,GAAG,EAAE,SAAS,IAAI,IAAI,SAAS,KAAK,IAAIA,OAAM,IAAI,UAAUA,OAAM;AAAA,MACxF;AAAA,MAEQ,iBACN,MACA,QACA,SACA,QACoB;AACpB,cAAM,EAAE,YAAY,eAAe,QAAQ,IAAI,KAAK,OAAO;AAC3D,cAAM,YAAY,UAAU,QAAQ,cAAc;AAClD,YAAI;AACJ,YAAI;AACJ,YAAI,SAAS,eAAe,YAAY;AACtC,eAAK,KAAK,eAAe,YAAY,QAAQ,MAAM;AACnD,iBAAO;AAAA,QACT,WAAW,SAAS,kBAAkB,eAAe;AACnD,eAAK,KAAK,eAAe,eAAe,QAAQ,MAAM;AACtD,iBAAO;AAAA,QACT,WAAW,SAAS,cAAc,kBAAkB,KAAK,IAAI,GAAG;AAC9D,gBAAM,aAAa,SAAS,OAAO,WAAW,MAAM,SAAS,OAAO,UAAU;AAC9E,cAAI;AACF,iBAAK,SAAS,KAAK,KAAK,OAAO,KAAK,SAAS,aAAa,SAAY,IAAI;AAAA,UAC5E,SAAS,KAAK;AACZ,gBAAI,aAAc,IAA0B,SAAS;AACnD,oBAAM,IAAI,UAAU,QAAQ;AAC9B,kBAAM;AAAA,UACR;AACA,cAAI,OAAO,OAAW,OAAM,IAAI,UAAU,OAAO;AACjD,cAAI,WAAW;AACb,iBAAK,OAAO,IAAI,MAAM,EAAE;AACxB,kBAAM,IAAI,UAAU,QAAQ;AAAA,UAC9B;AACA,iBAAO;AAAA,QACT,MAAO,QAAO;AACd,aAAK,MAAM,IAAI,MAAM,QAAQ;AAC7B,eAAO;AAAA,MACT;AAAA,MAEQ,eACNC,aACA,QACA,QACQ;AACR,YAAI,SAAS,OAAO,UAAW,OAAM,IAAI,UAAU,SAAS;AAC5D,YAAI,SAAS,OAAO,SAAS,SAAS,OAAO,KAAM,OAAM,IAAI,UAAU,QAAQ;AAC/E,cAAM,OAAO,OAAO,QAAQ,MAAM;AAClC,cAAM,QAAQ,SAAS,IAAIV,UAAS,SAAS,IAAIC,YAAW;AAC5D,eAAOS,YAAW,KAAK,KAAK,OAAO,KAAK,KAAK;AAAA,MAC/C;AAAA,MAEA,KACE,MACA,QACA,QACA,SACA,MACA,WAAW,OACH;AACR,aAAK,OAAO;AACZ,aAAK,UAAU;AACf,aAAK,WAAW;AAChB,cAAM,aAAa,SAAS,OAAO,WAAW,MAAM,SAAS,OAAO,UAAU;AAC9E,cAAM,UAAU,KAAK,YAAY,MAAM,QAAQ,QAAQ,SAAS,SAAS;AACzE,YAAI,YAAY,OAAW,QAAO;AAClC,cAAM,UAAU,KAAK,QAAQ,MAAM,QAAQ,MAAM;AACjD,YAAI,YAAY,OAAW,QAAO,KAAK,KAAK,SAAS,QAAQ,QAAQ,SAAS,IAAI;AAClF,YAAI,aAAa,EAAE,SAAS,OAAO,cAAc,KAAK,WAAW,MAAM,IAAI,GAAG;AAC5E,iBAAO,KAAK,QAAQ,MAAM,QAAW,QAAQ,QAAQ,SAAS,MAAM,IAAI;AAAA,QAC1E;AACA,YAAI,aAAa,CAAC,YAAY,KAAK,OAAO,IAAI,EAAG,OAAM,IAAI,UAAU,QAAQ;AAC7E,cAAM,IAAI,WAAW,KAAK,eAAe,IAAI,IAAI,KAAK,cAAc,IAAI;AACxE,YAAI,GAAG,eAAgB,OAAM,IAAI,UAAU,YAAY,WAAW,OAAO;AACzE,YAAI,aAAa,EAAG,OAAM,IAAI,UAAU,QAAQ;AAChD,YAAI,GAAG,WAAW,QAAW;AAC3B,sBAAY,EAAE,UAAU,KAAK,GAAG,QAAQ,MAAM;AAC9C,iBAAO,KAAK,KAAK,EAAE,QAAQ,QAAQ,QAAQ,SAAS,IAAI;AAAA,QAC1D;AACA,YAAI,SAAS,OAAO,aAAa,CAAC,GAAG,aAAa;AAChD,gBAAM,IAAI,UAAU,IAAI,YAAY,QAAQ;AAAA,QAC9C;AACA,YAAI,GAAG,aAAa;AAClB,gBAAM,SAAS,SAAS,OAAO,eAAe,MAAM,SAAS,OAAO,cAAc;AAClF,cAAI,UAAU,UAAU,OAAO,QAAQ,OAAO,YAAY,EAAG,OAAM,IAAI,UAAU,QAAQ;AACzF,iBAAO,KAAK,QAAQ,EAAE,MAAM,OAAO,KAAK,CAAC;AAAA,QAC3C;AACA,YAAI,CAAC,KAAK,EAAE,SAAS,OAAO,OAAQ,OAAM,IAAI,UAAU,QAAQ;AAChE,oBAAY,GAAG,QAAQ,MAAM;AAC7B,eAAO,KAAK,QAAQ,MAAM,GAAG,QAAQ,QAAQ,SAAS,IAAI;AAAA,MAC5D;AAAA,MAEQ,WAAW;AAAA,MAEF,OAAO,oBAAI,QAA4B;AAAA,MAEhD,UAAU,QAAoB,IAA2C;AAC/E,cAAM,MAAM,KAAK,KAAK,IAAI,MAAM;AAChC,eAAO,QAAQ,UAAa,IAAI,QAAQ,UAAa,QAAQ,GAAG;AAAA,MAClE;AAAA,MAEQ,YACN,MACA,QACA,QACA,SACA,WACoB;AACpB,YAAI,aAAa,YAAY,IAAI,EAAG,OAAM,IAAI,UAAU,QAAQ;AAChE,cAAML,UAAS,SAAS,IAAI;AAC5B,YAAIA,QAAQ,QAAO,KAAK,QAAQ,EAAE,MAAM,UAAU,QAAAA,QAAO,CAAC;AAC1D,cAAM,eAAe,KAAK,iBAAiB,MAAM,QAAQ,SAAS,MAAM;AACxE,YAAI,iBAAiB,OAAW,QAAO;AACvC,cAAM,QAAQ,WAAW,IAAI;AAC7B,YAAI,UAAU,OAAW,QAAO;AAChC,YAAI,KAAK,SAAU,OAAM,IAAI,UAAU,OAAO;AAC9C,eAAO,KAAK,OAAO,KAAK;AAAA,MAC1B;AAAA,MAEQ,QAAQ,MAAc,QAAgB,QAAoC;AAChF,cAAM,UAAU,KAAK,GAAG,SAAS,IAAI;AACrC,YAAI,YAAY,OAAW,QAAO;AAClC,oBAAY,EAAE,UAAU,KAAK,GAAG,UAAU,SAAS,OAAO,QAAQ,OAAO,QAAQ,IAAI,MAAM;AAC3F,eAAO;AAAA,MACT;AAAA,MAEQ,QACN,MACA,GACA,QACA,QACA,SACA,MACA,UAAU,OACF;AACR,YAAI,GAAG,OAAQ,QAAO,KAAK,WAAW,MAAM,GAAG,QAAQ,QAAQ,OAAO;AACtE,YAAI,GAAG,SAAU,OAAM,IAAI,UAAU,OAAO;AAC5C,YAAI,KAAK,UAAU,KAAK,YAAY,MAAM,CAAC,GAAG;AAC5C,iBAAO,KAAK,WAAW,MAAM,GAAG,QAAQ,QAAQ,SAAS,MAAM,OAAO;AAAA,QACxE;AACA,eAAO,KAAK,QAAQ;AAAA,UAClB,MAAM;AAAA,UACN,MAAM,KAAK,KAAK,MAAM,GAAG,QAAQ,QAAQ,SAAS,MAAM,OAAO;AAAA,QACjE,CAAC;AAAA,MACH;AAAA,MAEQ,YAAY,MAAc,IAA2C;AAC3E,mBAAW,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO;AAChC,cAAI,EAAE,SAAS,YAAY,KAAK,KAAK,IAAI,CAAC,MAAM,OAAQ;AACxD,eAAK,MAAM,IAAI,CAAC;AAChB,cAAI,EAAE,SAAS,QAAS,IAAI,QAAQ,UAAa,EAAE,QAAQ,GAAG,IAAM,QAAO;AAAA,QAC7E;AACA,eAAO;AAAA,MACT;AAAA,MAEiB,UAAU,oBAAI,QAAgB;AAAA,MAEvC,MAAM,IAAY,GAA0C;AAClE,YAAI,EAAE,SAAS,UAAa,KAAK,QAAQ,IAAI,CAAC,EAAG;AACjD,aAAK,QAAQ,IAAI,CAAC;AAClB,YAAI;AACF,gBAAM,MAAM,KAAK,OAAO,KAAK,EAAE,IAAI,eAAe,IAAI,UAAU,KAAK,CAAC;AAKtE,cAAI,IAAI,UAAU,IAAI,SAAS,OAAW;AAC1C,YAAE,OAAO,IAAI;AACb,YAAE,MAAM,IAAI,OAAO,KAAK,MAAM,IAAI,IAAI;AAAA,QACxC,QAAQ;AAAA,QAAC;AAAA,MACX;AAAA,MAEQ,KACN,MACA,UACA,QACA,QACA,SACA,MACA,UAAU,OACC;AACX,cAAM,EAAE,UAAAM,WAAU,UAAAZ,UAAS,IAAI,WAAW,UAAU,QAAQ,MAAM;AAClE,aAAK,cAAc;AACnB,YAAI,SAAS,UAAU,SAAY,KAAK,QAAQ,IAAI,IAAI;AACxD,YAAI,QAAQ,WAAW,UAAa,KAAK,GAAG,OAAO,OAAO,MAAM,GAAG;AACjE,eAAK,QAAQ,OAAO,IAAI;AACxB,mBAAS;AAAA,QACX;AACA,mBAAW,KAAK,QAAQ,MAAM,QAAQ;AACtC,YAAI,UAAU,KAAK,YAAY,KAAK,UAAU,QAAQ,QAAQ,EAAG,UAAS;AAC1E,cAAM,OAAO,OAAO,QAAQ,MAAM;AAClC,YAAI,QAAQ;AACV,cAAI,KAAK,GAAG,OAAQ,MAAK,GAAG,SAAS,MAAM,MAAM,MAAM;AACvD,cAAI,SAAS,OAAO,MAAO,QAAO,SAAS,CAAC;AAAA,QAC9C,OAAO;AACL,mBAAS,KAAK,YAAY,MAAM,UAAU,QAAQ,MAAM,MAAM,OAAO;AAAA,QACvE;AACA,eAAO;AACP,cAAM,OAAO,IAAI,UAAU,QAAQY,WAAUZ,YAAW,UAAU,QAAQ,YAAY,CAAC;AACvF,aAAK,MAAM,UAAU;AACrB,eAAO;AAAA,MACT;AAAA,MAEQ,YACN,MACA,UACA,QACA,MACA,MACA,UAAU,OACE;AACZ,cAAM,OAAO,WAAY,CAAC,YAAY,KAAK,UAAU,MAAM,QAAQ,IAAI;AACvE,cAAM,QAAQ,OAAO,KAAK,OAAO;AACjC,aAAK,OAAO;AACZ,cAAM,QAAQ,SAAS,SAAS,OAAO,WAAW;AAClD,YAAI,UAAU,OAAQ,CAAC,KAAK,GAA+B,aAAa;AACxE,cAAM,OAAO,QAAQ,MAAM,OAAO,KAAK,GAAG,SAAS,IAAI;AACvD,cAAM,KAAK,OAAO,OAAO,UAAU,UAAU,CAAC,WAAW,KAAK,GAAG,KAAK,IAAI,IAAI;AAC9E,cAAM,SAAS,GAAG,SAAS,GAAG,OAAO;AACrC,cAAM,SACH,OAAO,IAAI,YAAY,MAAM,OAAO,IAAI,aAAa,MAAM,OAAO,eAAe;AACpF,cAAM,SAAS,KAAK,GAAG,OAAO,MAAM,MAAM,MAAM,QAAW,KAAK,GAAG,SAAS,QAAQ,GAAG;AAAA,UACrF,KAAK,GAAG;AAAA,UACR,GAAI,KAAK,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,UAC1C,GAAI,GAAG,QAAQ,SAAY,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC;AAAA,QAChD,CAAC;AACD,cAAM,KAAK,WAAW,UAAa,KAAK,GAAG,SAAS,KAAK,GAAG,OAAO,MAAM,IAAI,KAAK;AAClF,cAAM,OAAO,KAAK,GAAG;AACrB,cAAM,QACJ,QACA;AAAA,UACE;AAAA,YACE;AAAA,YACA,KAAK,GAAG;AAAA,YACR;AAAA,YACA,MAAM,CAAC,OAAe;AACpB,cAAC,KAAK,GAA+B,aAAa;AAClD,qBAAO,KAAK,GAAG,KAAK,EAAE;AAAA,YACxB;AAAA,YACA,MAAM,MAAM,OAAO,KAAK,IAAI,IAAI;AAAA,UAClC;AAAA,UACA;AAAA,QACF;AACF,cAAM,SAAS,IAAI,WAAW,IAAI,MAAM,OAAO,GAAG,SAAS,QAAQ,GAAG,SAAS,KAAK;AACpF,eAAO,QAAQ,CAACI,aAAY,KAAK,cAAcA,QAAO;AACtD,eAAO,QAAQ;AACf,eAAO,SAAS;AAChB,YAAI,GAAG,QAAQ,OAAW,MAAK,KAAK,IAAI,QAAQ,GAAG,GAAG;AACtD,aAAK,QAAQ,IAAI,MAAM,MAAM;AAC7B,cAAM,KAAK,KAAK,SAAS,EAAE;AAC3B,YAAI,OAAO,OAAW,MAAK,KAAK,QAAQ,EAAE;AAC1C,eAAO;AAAA,MACT;AAAA,MAEQ,WACN,MACA,UACA,QACA,QACA,SACA,MACA,UAAU,OACF;AACR,cAAM,EAAE,UAAAQ,WAAU,UAAAZ,UAAS,IAAI,WAAW,UAAU,QAAQ,MAAM;AAClE,cAAM,UAAU,UAAU,QAAQ,YAAY;AAC9C,cAAM,SAASA,YAAYY,YAAWX,UAASC,YAAY,MAAM,SAASL,YAAW;AAErF,cAAM,OAAO,WAAY,CAAC,YAAY,KAAK,UAAU,MAAM,QAAQ,IAAI;AAEvE,cAAM,WAAW,SAAS,SAAS,OAAO,WAAW;AACrD,cAAM,KAAK,KAAK,OAAO,IAAI,QAAQ,MAAM,OAAO,GAAG;AAAA,UACjD,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,UAC/B,GAAI,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,UAChC,GAAI,KAAK,YAAY,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,QACrD,CAAC;AACD,cAAM,MAAMG,YAAY,KAAK,UAAU,EAAE,KAAK,KAAK,MAAM,IAAI,IAAK;AAClE,YAAI,SAAU,CAAC,KAAK,GAAuD,UAAU,MAAM,GAAG;AAC9F,aAAK,MAAM,IAAI,IAAI,EAAE,MAAM,UAAU,MAAM,QAAQ,UAAU,OAAO,QAAQ,MAAM,IAAI,CAAC;AACvF,YAAI,OAAQ,MAAK,aAAa,IAAI,EAAE,UAAU,OAAO,OAAO,CAAC;AAC7D,aAAK,KAAK,EAAE;AACZ,eAAO;AAAA,MACT;AAAA,MAEQ,WACN,MACA,UACA,QACA,QACA,SACQ;AACR,cAAM,EAAE,UAAAY,WAAU,UAAAZ,UAAS,IAAI,WAAW,UAAU,QAAQ,MAAM;AAClE,cAAM,YAAY,UAAU,QAAQ,cAAc;AAClD,cAAM,SAASA,YAAYY,YAAWX,UAASC,YAAY;AAC3D,cAAM,KAAK,KAAK;AAAA,UAAW,MACzB,KAAK,OAAO,IAAI,QAAQ,MAAM,UAAU,WAAW,aAAa,IAAI,GAAG,EAAE,MAAM,KAAK,CAAC;AAAA,QACvF;AACA,aAAK,MAAM,IAAI,IAAI,EAAE,MAAM,UAAU,MAAM,UAAU,UAAU,QAAQ,MAAM,CAAC;AAC9E,YAAI,SAAU,MAAK,aAAa,IAAI,EAAE,UAAU,QAAQ,MAAM,CAAC;AAC/D,aAAK,KAAK,EAAE;AACZ,eAAO;AAAA,MACT;AAAA,MAEA;AAAA,MAEA,WAAcW,OAAkB;AAC9B,mBAAS;AACP,cAAI;AACF,mBAAOA,MAAK;AAAA,UACd,SAAS,KAAK;AACZ,gBAAK,IAA2B,SAAS,WAAW,CAAC,KAAK,cAAc,EAAG,OAAM;AAAA,UACnF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,UAAU;AAAA,MAEF;AAAA,MAEA,SAAS,MAAc,MAAqB;AAClD,cAAM,KAAK,KAAK,GAAG,SAAS,MAAM,MAAM,IAAI;AAC5C,aAAK,OAAO,KAAK,EAAE,IAAI,MAAM,GAAG,KAAK,IAAI;AACzC,aAAK,UAAU;AAAA,MACjB;AAAA,MAEQ,WAAW,MAAc,MAAwB;AACvD,YAAI,CAAC,KAAK,GAAG,OAAQ,QAAO;AAC5B,YAAI;AACF,eAAK,SAAS,MAAM,IAAI;AACxB,iBAAO;AAAA,QACT,SAAS,KAAK;AACZ,cAAK,IAA0B,SAAS,SAAU,OAAM;AACxD,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEQ,UAAU,MAAc,QAAgB,MAAwB;AACtE,YAAI,CAAC,KAAK,GAAG,QAAQ;AACnB,eAAK,GAAG,UAAU,MAAM,IAAI,WAAW,CAAC,CAAC;AACzC,eAAK,UAAU;AACf,iBAAO;AAAA,QACT;AACA,YAAI;AACF,eAAK,SAAS,MAAM,IAAI;AACxB,iBAAO;AAAA,QACT,SAAS,KAAK;AACZ,cAAI,SAAS,OAAO,QAAS,IAA0B,SAAS,SAAU,OAAM;AAChF,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEQ,OAAO,MAAuB;AACpC,YAAI;AACF,iBAAO,KAAK,GAAG,MAAM,IAAI,EAAE,mBAAmB;AAAA,QAChD,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEQ,eAAe,MAA4C;AACjE,YAAI;AACF,iBAAO,KAAK,GAAG,MAAM,IAAI;AAAA,QAC3B,SAAS,GAAG;AACV,cAAK,EAAwB,SAAS,SAAU,QAAO;AACvD,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEQ,cAAc,MAA4C;AAChE,YAAI;AACF,iBAAO,KAAK,GAAG,KAAK,IAAI;AAAA,QAC1B,SAAS,GAAG;AACV,cAAK,EAAwB,SAAS,SAAU,QAAO;AACvD,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEQ,OAAO,IAAoB;AACjC,cAAM,IAAI,KAAK,IAAI,EAAE;AACrB,YAAI,EAAE,SAAS,UAAU;AACvB,gBAAM,KAAK,KAAK,OAAO,KAAK,EAAE,IAAI,UAAU,GAAG,CAAC;AAChD,eAAK,MAAM,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;AAC3B,eAAK,KAAK,EAAE;AACZ,iBAAO;AAAA,QACT;AACA,YAAI,EAAE,SAAS,OAAQ,GAAE,KAAK;AAC9B,eAAO,KAAK,QAAQ,EAAE,SAAS,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC;AAAA,MACtD;AAAA,IACF;AAMA,IAAMV,OAAM;AAAA;AAAA;;;AChpCZ,IAAMW,UAEO;AAFb;AAAA;AAAA;AAAA,IAAMA,WAAU,IAAI,YAAY;AAEzB,IAAM,aAAN,MAAiB;AAAA,MACd;AAAA,MAER,KAAK,QAAkC;AACrC,aAAK,SAAS;AAAA,MAChB;AAAA,MAEQ,SAAsB;AAC5B,YAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,uBAAuB;AACzD,eAAO,KAAK,OAAO;AAAA,MACrB;AAAA,MAEA,OAAiB;AACf,eAAO,IAAI,SAAS,KAAK,OAAO,CAAC;AAAA,MACnC;AAAA,MAEA,MAAM,KAAa,KAAyB;AAC1C,eAAO,IAAI,WAAW,KAAK,OAAO,GAAG,KAAK,GAAG;AAAA,MAC/C;AAAA,MAEA,OAAO,KAAa,KAAqB;AACvC,eAAOA,SAAQ,OAAO,KAAK,MAAM,KAAK,GAAG,EAAE,MAAM,CAAC;AAAA,MACpD;AAAA,MAEA,QAAQ,KAAqB;AAC3B,cAAM,QAAQ,IAAI,WAAW,KAAK,OAAO,CAAC;AAC1C,YAAI,MAAM;AACV,eAAO,MAAM,MAAM,UAAU,MAAM,GAAG,MAAM,EAAG;AAC/C,eAAOA,SAAQ,OAAO,MAAM,MAAM,KAAK,GAAG,CAAC;AAAA,MAC7C;AAAA,MAEA,OAAe;AACb,eAAO,KAAK,OAAO,EAAE;AAAA,MACvB;AAAA,MAEA,OAAO,KAAa,OAAwC;AAC1D,cAAM,IAAI,KAAK,KAAK;AACpB,cAAM,MAA+B,CAAC;AACtC,iBAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,cAAI,KAAK,CAAC,EAAE,UAAU,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,UAAU,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,QAC/E;AACA,eAAO;AAAA,MACT;AAAA,MAEA,SAAS,KAAa,OAAuB;AAC3C,eAAO,KAAK,OAAO,KAAK,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC;AAAA,MAClE;AAAA,MAEA,OAAO,KAAa,OAA2B;AAC7C,cAAM,OAAO,KAAK,OAAO,KAAK,KAAK;AACnC,YAAI,KAAK,WAAW,EAAG,QAAO,KAAK,MAAM,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM;AACvE,cAAM,MAAM,IAAI,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,CAAC;AAClE,YAAI,KAAK;AACT,mBAAW,CAAC,MAAM,GAAG,KAAK,MAAM;AAC9B,cAAI,IAAI,KAAK,MAAM,MAAM,GAAG,GAAG,EAAE;AACjC,gBAAM;AAAA,QACR;AACA,eAAO;AAAA,MACT;AAAA,MAEA,QAAQ,KAAa,OAAe,MAA0B;AAC5D,YAAI,KAAK;AACT,mBAAW,CAAC,MAAM,GAAG,KAAK,KAAK,OAAO,KAAK,KAAK,GAAG;AACjD,cAAI,MAAM,KAAK,OAAQ;AACvB,gBAAM,IAAI,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE;AACxC,eAAK,MAAM,MAAM,CAAC,EAAE,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC;AACjD,gBAAM;AAAA,QACR;AACA,eAAO;AAAA,MACT;AAAA,MAEA,WAAW,MAAyB,MAAc,KAAmB;AACnE,cAAMC,WAAU,IAAI,YAAY;AAChC,cAAM,IAAI,KAAK,KAAK;AACpB,YAAI,KAAK;AACT,aAAK,QAAQ,CAAC,GAAG,MAAM;AACrB,gBAAM,IAAIA,SAAQ,OAAO,CAAC;AAC1B,YAAE,UAAU,OAAO,IAAI,GAAG,IAAI,IAAI;AAClC,eAAK,MAAM,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;AAC9B,YAAE,SAAS,KAAK,EAAE,QAAQ,CAAC;AAC3B,gBAAM,EAAE,SAAS;AAAA,QACnB,CAAC;AAAA,MACH;AAAA,MAEA,SAAS,MAAyB,UAAkB,SAAuB;AACzE,cAAMA,WAAU,IAAI,YAAY;AAChC,cAAM,IAAI,KAAK,KAAK;AACpB,UAAE,UAAU,UAAU,KAAK,QAAQ,IAAI;AACvC,UAAE;AAAA,UACA;AAAA,UACA,KAAK,OAAO,CAAC,GAAG,MAAM,IAAIA,SAAQ,OAAO,CAAC,EAAE,SAAS,GAAG,CAAC;AAAA,UACzD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACxEA,SAAS,kBAAkB,KAAiB,KAAa,GAAW,KAA+B;AACjG,QAAM,IAAI,IAAI,KAAK;AACnB,QAAM,KAAK,YAAY,IAAI;AAC3B,QAAM,OAAuB,CAAC;AAC9B,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAM,IAAI,MAAM,IAAI,KAAK;AACzB,UAAM,OAAO,EAAE,SAAS,IAAI,CAAC;AAC7B,UAAM,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,IAAI,IAAI,UAAU,SAAS;AAClF,QAAI,SAAS,UAAU,OAAO;AAC5B,YAAM,KAAK,EAAE,UAAU,IAAI,IAAI,IAAI;AACnC,UAAI,KAAK,OAAO,EAAE,aAAa,IAAI,IAAI,IAAI,CAAC,IAAI;AAChD,UAAI,EAAE,UAAU,IAAI,IAAI,IAAI,IAAI,iBAAkB,OAAM,OAAO,IAAI,EAAE,CAAC,IAAI;AAC1E,UAAI,WAAW,KAAK,KAAK,IAAI,GAAG,EAAE;AAAA,IACpC,OAAO;AACL,UAAI,KAAK,EAAE,UAAU,IAAI,IAAI,IAAI;AAAA,IACnC;AACA,SAAK,KAAK,GAAG;AAAA,EACf;AACA,SAAO;AACT;AAEA,SAAS,YAAY,KAAiB,KAAa,QAAoC;AACrF,QAAM,IAAI,IAAI,KAAK;AACnB,SAAO,QAAQ,CAAC,IAAI,MAAM;AACxB,UAAM,IAAI,MAAM,IAAI,KAAK;AACzB,QAAI,MAAM,GAAG,KAAK,KAAK,EAAE,KAAK,CAAC;AAC/B,MAAE,aAAa,GAAG,GAAG,UAAU,IAAI;AACnC,MAAE,UAAU,IAAI,GAAG,GAAG,OAAO,IAAI;AACjC,MAAE,SAAS,IAAI,IAAI,GAAG,IAAI;AAE1B,QAAI,GAAG,SAAS,UAAU,OAAO;AAC/B,QAAE,aAAa,IAAI,IAAI,OAAO,GAAG,UAAU,CAAC,GAAG,IAAI;AACnD,UAAI,GAAG,OAAQ,GAAE,UAAU,IAAI,IAAI,2BAA2B,IAAI;AAAA,IACpE;AAAA,EACF,CAAC;AACH;AAEA,SAAS,SACP,KACA,MAC0D;AAC1D,QAAM,SAAsB,CAAC;AAC7B,QAAMC,QAAiB,CAAC;AACxB,QAAMC,SAAkB,CAAC;AACzB,aAAW,KAAK,MAAM;AACpB,QAAI,EAAE,SAAS,UAAU,MAAO;AAChC,UAAM,IAAI,IAAI,KAAK,EAAE,EAAE;AACvB,QAAI,CAAC,EAAG,QAAO,KAAK,EAAE,UAAU,EAAE,UAAU,OAAO,EAAE,MAAM,MAAM,EAAE,KAAK,CAAC;AAAA,aAChE,EAAE,SAAS;AAClB,aAAO,KAAK,EAAE,UAAU,EAAE,UAAU,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC;AAAA,QACjE,EAAC,EAAE,SAAS,UAAU,UAAUD,QAAOC,QAAO,KAAK,EAAE,EAAE;AAAA,EAC9D;AACA,SAAO,EAAE,QAAQ,MAAAD,OAAM,OAAAC,OAAM;AAC/B;AASA,SAAS,SAAS,GAAiB,OAAmC;AACpE,QAAM,IAAI,EAAE,SAAS,UAAU,UAAU,MAAM,QAAQ,EAAE,EAAE,IAAI;AAC/D,SAAO,MAAM,SAAY,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC5C;AAEA,SAAS,YAAY,MAA+B,OAA2B;AAC7E,SAAO,KACJ;AAAA,IACC,CAAC,MACE,EAAE,SAAS,UAAU,WAAW,MAAM,KAAK,SAAS,EAAE,EAAE,KACxD,EAAE,SAAS,UAAU,YAAY,MAAM,MAAM,SAAS,EAAE,EAAE;AAAA,EAC/D,EACC,IAAI,CAAC,OAAO;AAAA,IACX,UAAU,EAAE;AAAA,IACZ,OAAO,EAAE;AAAA,IACT,MAAM,EAAE;AAAA,IACR,QAAQ,MAAM,QAAQ,SAAS,EAAE,EAAE,MAAM;AAAA,IACzC,GAAG,SAAS,GAAG,KAAK;AAAA,EACtB,EAAE;AACN;AAiBA,SAAS,WACP,MACAD,OACAC,QACAC,YACA,WACwD;AACxD,MAAI;AACF,UAAM,QAAQ,KAAK,OAAO,KAAK,EAAE,IAAI,aAAa,MAAAF,OAAM,OAAAC,QAAO,WAAAC,WAAU,CAAC;AAC1E,WAAO,EAAE,OAAuB,aAAa,MAAM;AAAA,EACrD,SAAS,GAAG;AACV,QAAK,EAAyB,SAAS,QAAS,OAAM;AACtD,QAAI,CAAC,KAAK,kBAAkB,aAAa,KAAK,UAAU,GAAG;AACzD,aAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,GAAG,aAAa,OAAO,SAAS,KAAK;AAAA,IAC7E;AACA,QAAI,CAAC,KAAK,eAAgB,OAAM;AAChC,WAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,GAAG,aAAa,KAAK;AAAA,EAC7D;AACF;AAEA,SAAS,WACP,MACA,MACA,EAAE,QAAQ,MAAAF,OAAM,OAAAC,OAAM,GACtB,SACS;AACT,QAAM,WAAW,KAAK,OAAO,CAAC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,QAAQ,GAAG,QAAQ;AAC5E,QAAM,UAAU,MAAc;AAC5B,QAAI,OAAO,SAAS,KAAK,QAAS,QAAO;AACzC,WAAO,aAAa,WAAW,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,WAAW,YAAY,IAAI,CAAC,CAAC;AAAA,EACzF;AACA,WAAS,UAAU,OAAO;AACxB,UAAM,EAAE,OAAO,aAAa,QAAQ,IAAI;AAAA,MACtC;AAAA,MACAD;AAAA,MACAC;AAAA,MACA,QAAQ;AAAA,MACR,YAAY;AAAA,IACd;AACA,QAAI,QAAS;AACb,WAAO,KAAK,GAAG,YAAY,MAAM,KAAK,CAAC;AACvC,QAAI,YAAa,QAAO;AACxB,QAAI,OAAO,SAAS,KAAK,WAAW,aAAa,SAAU,QAAO;AAClE,QAAI,YAAY,IAAI,KAAK,SAAU,QAAO;AAAA,EAC5C;AACF;AAEO,SAAS,WACd,MACA,OACA,QACA,OACA,YACQ;AACR,MAAI,UAAU,EAAG,QAAO,EAAE;AAC1B,QAAM,EAAE,IAAI,IAAI;AAChB,QAAM,OAAO,kBAAkB,KAAK,OAAO,OAAO,KAAK,GAAG;AAC1D,QAAM,QAAQ,SAAS,KAAK,KAAK,IAAI;AACrC,QAAM,EAAE,QAAQ,MAAAD,OAAM,OAAAC,OAAM,IAAI;AAChC,QAAM,UAAU,KAAK,YAAY,QAAQ,KAAK,mBAAmB;AACjE,QAAM,QAAQD,MAAK,SAAS,KAAKC,OAAM,SAAS,KAAK,OAAO,WAAW;AACvE,QAAM,cAAc,SAAS,WAAW,MAAM,MAAM,OAAO,OAAO;AAClE,QAAM,QAAQ,YAAY,IAAI;AAC9B,MAAI,WAAW,OAAO,WAAW,KAAK,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,YAAY,KAAK,EAAG,QAAO,EAAE;AAEvF,aAAW,KAAK,MAAM;AACpB,QAAI,EAAE,SAAS,UAAU,UAAU,eAAe,EAAE,YAAY,QAAQ;AACtE,aAAO,KAAK,EAAE,UAAU,EAAE,UAAU,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC;AAAA,IACtE;AAAA,EACF;AACA,cAAY,KAAK,QAAQ,MAAM;AAC/B,MAAI,KAAK,EAAE,UAAU,YAAY,OAAO,QAAQ,IAAI;AACpD,SAAO,EAAE;AACX;AAnMA,IAwHM;AAxHN;AAAA;AAAA;AAAA;AAwHA,IAAM,UAAU;AAAA;AAAA;;;ACxHhB,IAYM,aACA,kBAEA,SACAE,YACA,SAEO,WACA,aACA,aAEA,YAEA,UAEPC,QAMO;AAjCb;AAAA;AAAA;AAAA;AACA;AASA;AAEA,IAAM,cAAc,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI;AACtD,IAAM,mBAAoB,KAAM,IAAI,OAAO,IAAO,KAAM,IAAI,OAAO;AAEnE,IAAM,UAAU;AAChB,IAAMD,aAAY;AAClB,IAAM,UAAU;AAET,IAAM,YAAY;AAClB,IAAM,cAAc;AACpB,IAAM,cAAc;AAEpB,IAAM,aAAa,CAAC,OAAwB,MAAM,IAAK,CAAC;AAExD,IAAM,WAAW,CAAC,SAA0B,SAAS,IAAK,CAAC;AAElE,IAAMC,SAAQ,CAAC,KAAa,MAAc,QAAwB;AAChE,UAAI,QAAQ,UAAW,QAAO,OAAO;AACrC,UAAI,QAAQ,YAAa,QAAO,OAAO,CAAC;AACxC,aAAO;AAAA,IACT;AAEO,IAAM,cAAN,MAAkB;AAAA,MACf;AAAA,MACA;AAAA,MACS;AAAA,MACA;AAAA,MACA;AAAA,MACR;AAAA,MACT,YAAY,QAAoB,SAAqBC,UAAsB,MAAM,GAAG;AAClF,aAAK,SAAS;AACd,aAAK,UAAU;AACf,aAAK,UAAUA;AACf,aAAK,MAAM;AACX,aAAK,KAAK,SAAS,QAAQ,KAAK,QAAQ,aAAa,CAAC;AACtD,aAAK,KAAK,QAAQ,KAAK,QAAQ,gBAAgB;AAAA,MACjD;AAAA,MAEA,OAAO,YAAY,QAA0B;AAC3C,qBAAa,QAAQ,CAAC,GAAG,CAAC,CAAC;AAAA,MAC7B;AAAA,MAEA,IAAI,KAAa,OAAe,OAAe,KAA+C;AAC5F,YAAI,QAAQ,aAAa,QAAQ,eAAe,QAAQ,YAAa,QAAO,EAAE;AAC9E,YAAI,KAAK,OAAO,GAAG,KAAK,OAAO,CAAC;AAChC,aAAK,KAAKD,OAAM,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC;AAC5C,aAAK,KAAKA,OAAM,KAAK,KAAK,IAAI,QAAQ,CAAC;AACvC,cAAM,MAAM,WAAW,KAAK,EAAE;AAC9B,qBAAa,KAAK,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;AACxC,aAAK,QAAQ,KAAK,KAAK,QAAQ,aAAa,IAAI,CAAC,SAAS,EAAG,MAAK,QAAQ;AAC1E,eAAO,EAAE;AAAA,MACX;AAAA,MAEA,KAAK,OAAe,OAAiC;AACnD,cAAM,MAAwB,CAAC,KAAK,IAAI,KAAK,EAAE;AAC/C,aAAK,KAAK,QAAQ,CAAC;AACnB,aAAK,KAAK,QAAQ;AAClB,qBAAa,KAAK,QAAQ,CAAC,WAAW,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC;AACxD,eAAO;AAAA,MACT;AAAA,MAEA,mBAA4B;AAC1B,cAAM,MAAM,QAAQ,KAAK,KAAK,QAAQ,aAAa;AACnD,aAAK,QAAQ,KAAK,KAAK,QAAQ,aAAa,IAAI,CAAC,SAAS,EAAG,QAAO;AACpE,aAAK,QAAQ;AACb,eAAO;AAAA,MACT;AAAA,MAEA,QAAQ,CAAC,IAAI,EAAE,GAA2B;AACxC,aAAK,IAAI,aAAa,IAAI,IAAI,MAAM;AAAA,QAAC,CAAC;AAAA,MACxC;AAAA,MAEA,cAAsB;AACpB,eAAO,QAAQ,KAAK,KAAK,QAAQ,aAAa;AAAA,MAChD;AAAA,MAEA,OAAO,KAAsB;AAC3B,gBAAQ,QAAQ,KAAK,KAAK,QAAQ,aAAa,IAAI,OAAO,GAAG,OAAO;AAAA,MACtE;AAAA,MAEA,YAAyB;AACvB,eAAO,CAAC,WAAW,KAAK,EAAE,GAAG,KAAK,EAAE;AAAA,MACtC;AAAA,MAEA,QAAQ,KAAmB;AACzB,gBAAQ,IAAI,KAAK,QAAQ,eAAe,CAAC,OAAO,GAAG,CAAC;AACpD,YAAI,KAAK,QAAS,SAAQ,IAAI,KAAK,SAAS,eAAe,CAAC,OAAO,GAAG,CAAC;AAAA,MACzE;AAAA,MAEA,QACE,OACA,WACA,SACA,MACA,UAAU,OACF;AACR,cAAM,MAAM,WAAW,QAAQ,CAAC;AAChC,cAAME,SAAQ,OAAO,QAAQ,IAAI,SAAS;AAC1C,cAAM,WACJA,WAAU,UACN,OAAO,oBACP,YAAY,IAAI,IAAI,QAAQA,SAAQH,aAAY,MAAMA,UAAS;AACrE,gBAAQ,GAAG;AACX,YAAI;AACF,qBAAS;AACP,kBAAM,OAAO,QAAQ,KAAK,KAAK,QAAQ,aAAa;AACpD,kBAAM,MAAM,KAAK,KAAK,GAAG;AACzB,gBAAI,QAAQ,GAAG;AACb,mBAAK,GAAG;AACR,qBAAO,EAAE;AAAA,YACX;AACA,gBAAI,WAAW,KAAK,iBAAiB,KAAK,KAAK,YAAY,EAAG,QAAO,EAAE;AACvE,kBAAM,OAAO,WAAW,YAAY,IAAI;AACxC,gBAAI,QAAQ,EAAG,QAAO,EAAE;AACxB,oBAAQ,KAAK,KAAK,QAAQ,eAAe,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC;AAAA,UACxE;AAAA,QACF,UAAE;AACA,kBAAQ,CAAC;AAAA,QACX;AAAA,MACF;AAAA,MAEQ,KAAK,KAAqB;AAChC,mBAAW,UAAU,KAAK,UAAU,CAAC,KAAK,QAAQ,KAAK,OAAO,IAAI,CAAC,KAAK,MAAM,GAAG;AAC/E,gBAAM,QAAQ,QAAQ,KAAK,QAAQ,aAAa,IAAI;AACpD,cAAI,UAAU,EAAG;AACjB,gBAAM,MAAM,QAAQ,CAAC;AACrB,eAAK,QAAQ,IAAI,QAAQ,eAAe,CAAC,GAAG,IAAI,SAAS,EAAG,QAAO,KAAK,KAAK,MAAM,GAAG;AAAA,QACxF;AACA,eAAO;AAAA,MACT;AAAA,MAEQ,cAAuB;AAC7B,cAAM,SAAS,KAAK,WAAW,KAAK;AACpC,YAAI,QAAQ,KAAK,QAAQ,YAAY,MAAM,GAAG;AAC5C,eAAK,QAAQ;AACb,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ,KAAK,QAAQ,UAAU,MAAM,EAAG,QAAO;AACnD,eAAO,QAAQ,KAAK,QAAQ,UAAU,MAAM,EAAG,SAAQ,KAAK,QAAQ,YAAY,CAAC;AACjF,eAAO;AAAA,MACT;AAAA,MAEA,UAAkB;AAChB,cAAM,MAAM,QAAQ,KAAK,KAAK,QAAQ,aAAa;AACnD,eAAO,SAAS,OAAO,KAAK,UAAU,QAAQ,KAAK,KAAK,SAAS,aAAa,IAAI,EAAE;AAAA,MACtF;AAAA,IACF;AAAA;AAAA;;;AChJO,SAAS,aAAa,KAAiB,KAAa,SAAwB;AACjF,MAAI,MAAM,KAAK,SAAS,CAAC,EAAE,KAAK,CAAC;AACjC,QAAM,IAAI,IAAI,KAAK;AACnB,IAAE,UAAU,KAAK,QAAQ,SAAS,IAAI;AACtC,IAAE,UAAU,MAAM,GAAG,QAAQ,SAAS,IAAI;AAC1C,IAAE,UAAU,MAAM,GAAG,QAAQ,SAAS,IAAI;AAC1C,IAAE,UAAU,MAAM,IAAI,QAAQ,SAAS,IAAI;AAC3C,WAAS,IAAI,GAAG,IAAI,MAAM,IAAK,GAAE,SAAS,MAAM,OAAO,GAAG,QAAQ,KAAK,CAAC,KAAK,CAAC;AAC9E,IAAE,SAAS,MAAM,QAAQ,CAAC;AAC1B,IAAE,UAAU,MAAM,QAAQ,QAAQ,IAAI;AACtC,IAAE,UAAU,MAAM,QAAQ,QAAQ,IAAI;AACxC;AAEO,SAAS,YAAY,KAAiB,KAAsB;AACjE,QAAM,IAAI,IAAI,KAAK;AACnB,SAAO;AAAA,IACL,SAAS,EAAE,UAAU,KAAK,IAAI;AAAA,IAC9B,SAAS,EAAE,UAAU,MAAM,GAAG,IAAI;AAAA,IAClC,SAAS,EAAE,UAAU,MAAM,GAAG,IAAI;AAAA,IAClC,SAAS,EAAE,UAAU,MAAM,IAAI,IAAI;AAAA,IACnC,MAAM,MAAM,KAAK,EAAE,QAAQ,KAAK,GAAG,CAAC,GAAG,MAAM,EAAE,SAAS,MAAM,OAAO,CAAC,CAAC;AAAA,EACzE;AACF;AAEO,SAAS,SACd,KACA,KACA,QACA,cAA0B,MAAM,QAChC;AACA,QAAM,EAAE,IAAI,IAAI;AAChB,QAAM,WAAW,CAAC,OAAuB;AACvC,UAAM,IAAI,IAAI,KAAK,EAAE;AACrB,QAAI,CAAC,EAAG,OAAM,IAAI,UAAU,OAAO;AACnC,QAAI,EAAE,SAAS,YAAY,IAAI,KAAK,IAAI,CAAC,MAAM,MAAO,OAAM,IAAI,UAAU,QAAQ;AAClF,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,CAAII,WAA4B;AAC5C,QAAIA,WAAU,OAAW,OAAM,IAAI,UAAU,QAAQ;AACrD,WAAOA;AAAA,EACT;AACA,QAAM,UAAU,CAAC,IAAY,QAAsB;AACjD,gBAAY;AACZ,iBAAa,KAAK,KAAK,MAAM,IAAI,SAAS,SAAS,EAAE,CAAC,CAAC,CAAC;AAAA,EAC1D;AACA,QAAM,UAAU,CAAC,IAAY,SAAiB,QAAsB;AAClE,gBAAY;AACZ,QAAI,UAAU,KAAK,UAAU,UAAW,OAAM,IAAI,UAAU,QAAQ;AACpE,UAAM,KAAK,SAAS,EAAE;AACtB,UAAM,IAAI,MAAM;AAChB,QAAI,SAAS,IAAI,YAAY,KAAK,GAAG,GAAG,YAAY,SAAS;AAAA,EAC/D;AACA,QAAM,OAAO,CAAC,IAAY,QAAsB;AAC9C,gBAAY;AACZ,UAAM,CAAC,MAAM,IAAI,IAAI,MAAM,IAAI,UAAU,SAAS,EAAE,CAAC,CAAC;AACtD,QAAI,MAAM,KAAK,CAAC,EAAE,KAAK,CAAC;AACxB,UAAM,IAAI,IAAI,KAAK;AACnB,MAAE,UAAU,KAAK,MAAM,IAAI;AAC3B,MAAE,UAAU,MAAM,GAAG,MAAM,IAAI;AAAA,EACjC;AACA,SAAO;AAAA,IACL,WAAW,CAAC,IAAY,QAAgB,KAAK,QAAQ,IAAI,GAAG;AAAA,IAC5D,WAAW,CAAC,IAAY,SAAiB,QAAgB,KAAK,QAAQ,IAAI,SAAS,GAAG;AAAA,IACtF,SAAS,CAAC,IAAY,QAAgB,KAAK,KAAK,IAAI,GAAG;AAAA,EACzD;AACF;AA9EA,IAKM,MACA,QACA,MACA,QACA,QACA,QACA;AAXN;AAAA;AAAA;AAEA;AAGA,IAAM,OAAO;AACb,IAAM,SAAS;AACf,IAAM,OAAO;AACb,IAAM,SAAS;AACf,IAAM,SAAS;AACf,IAAM,SAAS;AACf,IAAM,YAAY;AAAA;AAAA;;;ACOX,SAAS,UAAU,IAAoB;AAC5C,QAAMC,SAAQ,OAAO,QAAQ,IAAI,EAAE;AACnC,MAAIA,WAAUC,SAAS,QAAO;AAC9B,QAAM,MAAMD,SAAQE,aAAY,MAAMA;AACtC,SAAO,KAAK,OAAO,cAAc,IAAI,KAAK,OAAO,EAAE;AACrD;AAEO,SAAS,kBAAkB,MAA8C;AAC9E,QAAM,EAAE,KAAK,KAAK,EAAE,IAAI;AACxB,QAAMC,QAAO,CAAC,QAA6C,EAAE,OAAO,KAAK,GAAG;AAC5E,QAAM,WAAW,CAAC,IAAYC,aAAsC;AAClE,UAAM,IAAI,IAAI,KAAK,EAAE;AACrB,QAAI,CAAC,EAAG,OAAM,IAAI,UAAU,OAAO;AACnC,QAAI,EAAE,SAAS,SAAU,OAAM,IAAI,UAAUA,QAAO;AAAA,EACtD;AACA,QAAMC,eAAc,CAAC,KAAa,WAAwC;AACxE,UAAM,OAAO,IAAI,KAAK;AACtB,WAAO,QAAQ,CAAC,IAAI,MAAM;AACxB,YAAM,KAAK,MAAM,IAAI;AACrB,UAAI,MAAM,IAAI,UAAU,EAAE,KAAK,CAAC;AAChC,WAAK,UAAU,IAAI,GAAG,QAAQ,IAAI;AAClC,UAAI,MAAM,KAAK,aAAa,SAAS,EAAE,IAAI,GAAG,IAAI;AAAA,IACpD,CAAC;AAAA,EACH;AACA,SAAO;AAAA,IACL,cAAc,CAAC,QAAgB;AAC7B,YAAM,KAAKF,MAAK,EAAE,IAAI,eAAe,CAAC;AACtC,UAAI,MAAM,IAAI,UAAU,KAAK;AAC7B,UAAI,KAAK,EAAE,UAAU,KAAK,IAAI,IAAI;AAAA,IACpC;AAAA,IACA,WAAW,CAAC,MAAc,IAAY,IAAY,UAAkB;AAClE,YAAM,OAAO,KAAK,cAAc,YAAY,UAAU,EAAE;AACxD,UAAI,CAAC,IAAK,OAAM,IAAI,UAAU,QAAQ;AACtC,eAAS,MAAM,QAAQ;AACvB,eAAS,IAAI,OAAO;AACpB,UAAI,QAAQ,SAAS,UAAU,EAAG,OAAM,IAAI,UAAU,QAAQ;AAC9D,YAAM,SAAS,UAAU,IAAI,IAAI,IAAI,KAAK,EAAE,UAAU,OAAO,IAAI;AACjE,YAAM,OAAO,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,QAAQ,aAAa,SAAS,CAAC;AAC7E,MAAAA,MAAK,EAAE,IAAI,aAAa,MAAM,KAAK,IAAI,QAAQ,KAAK,CAAC;AAAA,IACvD;AAAA,IACA,YAAY,CAAC,MAAc,KAAa,WAAmB,SAAiB,QAAgB;AAC1F,UAAI,KAAK,EAAE,UAAU,KAAK,GAAG,IAAI;AACjC,WAAK,YAAY,MAAM,EAAG,OAAM,IAAI,UAAU,QAAQ;AACtD,eAAS,MAAM,QAAQ;AACvB,YAAM,MAAM,KAAK,IAAI,YAAY,GAAG,UAAU;AAC9C,YAAM,KAAK,KAAK,UAAU,IAAI,UAAU,OAAO;AAC/C,YAAM,SAASA,MAAK,EAAE,IAAI,cAAc,MAAM,KAAK,WAAW,GAAG,CAAC;AAClE,UAAI,KAAK,WAAW,OAAO,WAAW,KAAK,UAAU,OAAO,MAAM,EAAG,QAAO,EAAE;AAC9E,MAAAE,aAAY,KAAK,MAAM;AACvB,UAAI,KAAK,EAAE,UAAU,KAAK,OAAO,QAAQ,IAAI;AAC7C,aAAO,EAAE;AAAA,IACX;AAAA,IACA,UAAU,CAAC,SAAiB,OAAe,QAAgB;AACzD,YAAML,SAAQ,OAAO,QAAQ,IAAI,OAAO;AACxC,UAAIA,SAAQ,YAAa,OAAM,IAAI,UAAU,QAAQ;AACrD,YAAM,KAAKG,MAAK;AAAA,QACd,IAAI;AAAA,QACJ,SAASH,OAAM,SAAS;AAAA,QACxB,YAAY,QAAQ,uBAAuB;AAAA,MAC7C,CAAC;AACD,UAAI,MAAM,IAAI,WAAW,QAAQ,sBAAsB,CAAC;AACxD,UAAI,KAAK,EAAE,UAAU,KAAK,IAAI,IAAI;AAAA,IACpC;AAAA,EACF;AACF;AAlFA,IAKM,YACA,aACA,WACA,YACAC,UACA,gBACAC,YACA,mBACA,kBACA,aACA,WACA;AAhBN;AAAA;AAAA;AACA;AACA;AAGA,IAAM,aAAa;AACnB,IAAM,cAAc;AACpB,IAAM,YAAY;AAClB,IAAM,aAAa;AACnB,IAAMD,WAAU;AAChB,IAAM,iBAAiB;AACvB,IAAMC,aAAY;AAClB,IAAM,oBAAoB;AAC1B,IAAM,mBAAmB;AACzB,IAAM,cAAc;AACpB,IAAM,YAAgC,CAAC,OAAO,OAAO,KAAK;AAC1D,IAAM,WAA+B,CAAC,OAAO,OAAO,OAAO,KAAK;AAAA;AAAA;;;ACIzD,SAAS,eAAe,KAA2B;AACxD,QAAM,OAAO,IAAI,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AACpE,QAAM,SAAS,KAAK,SAAS,CAAC;AAC9B,SAAO;AAAA,IACL,YAAY,KAAK,SAAS,CAAC,IAAI,OAAO;AAAA,IACtC,OAAO,KAAK,SAAS,CAAC,IAAI,OAAO;AAAA,IACjC,MAAM,KAAK,UAAU,CAAC;AAAA,IACtB,MAAM,IAAI,YAAY,EAAE,OAAO,IAAI,SAAS,GAAG,IAAI,MAAM,CAAC;AAAA,IAC1D,OAAO,IAAI,SAAS,IAAI,MAAM;AAAA,EAChC;AACF;AA9BA;AAAA;AAAA;AAAA;AAAA;;;AC0BO,SAAS,qBAAqB,UAA2B;AAC9D,QAAM,OAAO,SACV,QAAQ,cAAc,IAAI,EAC1B,QAAQ,OAAO,EAAE,EACjB,YAAY;AACf,SACE,SAAS,eACT,KAAK,SAAS,YAAY,KAC1B,SAAS,aACT,YAAY,KAAK,IAAI,KACrB,YAAY,IAAI,IAAI,KACpB,UAAU,KAAK,IAAI;AAEvB;AAwBA,SAAS,SAASI,OAAuB;AACvC,QAAM,QAAQA,MAAK,YAAY;AAC/B,SACE,UAAU,eACV,MAAM,SAAS,YAAY,KAC3B,UAAU,iBACV,UAAU,eACV,kBAAkB,KAAK,KAAK;AAEhC;AAEO,SAAS,WAAWA,OAA+B;AACxD,MAAI,OAAOA,UAAS,YAAYA,MAAK,SAAS,OAAO,SAASA,KAAI,EAAG,QAAO;AAC5E,SAAOA,MAAK,MAAM,GAAG,EAAE,MAAM,CAAC,MAAM,MAAM,KAAK,CAAC,CAAC;AACnD;AAEO,SAAS,WAAW,KAA+C;AACxE,SAAO,WAAW,IAAI,QAAQ,IAAI,IAAI,WAAW;AACnD;AAEO,SAAS,aAAa,MAGlB;AACT,SAAO,WAAW,KAAK,QAAQ,IAAI,KAAK,WAAW,WAAW,KAAK,GAAG;AACxE;AAEO,SAAS,SAAS,UAA4B;AACnD,SAAO,CAAC,GAAG,oBAAI,IAAI,CAAC,SAAS,YAAY,GAAG,GAAG,cAAc,CAAC,CAAC;AACjE;AAEO,SAAS,UAAU,WAAmB,kBAA0B;AACrE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,GAAG,gBAAgB,IAAI,SAAS,QAAQ,EAAE,KAAK,GAAG,CAAC;AAAA,IACnD,GAAG,sBAAsB,KAAK,GAAG,CAAC,IAAI,aAAa;AAAA,IACnD;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAtGA,IAAa,eAEA,uBAEA,eAEA,mBASP,aACA,aACA,WAsCO,kBAEA,kBAEA,gBAEP;AA7DN;AAAA;AAAA;AAAO,IAAM,gBAAgB;AAEtB,IAAM,wBAAwB,CAAC,IAAI,GAAG,GAAG,CAAC;AAE1C,IAAM,gBAAgB;AAEtB,IAAM,oBAAoB,iBAAiB,aAAa;AAS/D,IAAM,cAAc;AACpB,IAAM,cAAc,oBAAI,IAAI,CAAC,OAAO,MAAM,iBAAiB,CAAC;AAC5D,IAAM,YAAY;AAsCX,IAAM,mBAAmB;AAEzB,IAAM,mBAAmB;AAEzB,IAAM,iBAAoC,CAAC,cAAc,WAAW;AAE3E,IAAM,QAAQ;AAAA;AAAA;;;AC5CP,SAAS,UAAU,MAAoC;AAC5D,QAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,MAAI,MAAM,WAAW,KAAK,CAAC,MAAM,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,EAAG,QAAO;AAC3E,QAAM,QAAQ,MAAM,IAAI,MAAM;AAC9B,SAAO,MAAM,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ;AAChD;AAEO,SAAS,WAAW,MAAoC;AAC7D,MAAI,CAAC,KAAK,SAAS,GAAG,EAAG,QAAO;AAChC,MAAI;AACJ,MAAI;AACF,gBAAY,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE,SAAS,MAAM,GAAG,EAAE;AAAA,EAC/D,QAAQ;AACN,WAAO;AAAA,EACT;AACA,QAAM,CAAC,MAAM,IAAI,IAAI,UAAU,MAAM,IAAI;AACzC,QAAM,OAAO,CAAC,MACZ,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,OAAO,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC;AACzD,QAAM,QAAQ,KAAK,IAAI;AACvB,QAAM,OAAO,KAAK,IAAI;AACtB,SAAO,SAAS,SACZ,QACA,CAAC,GAAG,OAAO,GAAG,IAAI,MAAc,IAAI,MAAM,SAAS,KAAK,MAAM,EAAE,KAAK,CAAC,GAAG,GAAG,IAAI;AACtF;AAEA,SAAS,OAAO,QAAkB,OAAuB;AACvD,SAAO,OAAO,OAAO,CAAC,KAAK,MAAO,OAAO,OAAO,KAAK,IAAK,OAAO,CAAC,GAAG,EAAE;AACzE;AAEA,SAAS,YAAY,MAAyD;AAC5E,QAAM,KAAK,UAAU,IAAI;AACzB,MAAI,GAAI,QAAO,EAAE,IAAI,OAAO,MAAM,OAAO,IAAI,CAAC,EAAE;AAChD,QAAM,KAAK,WAAW,IAAI;AAC1B,SAAO,KAAK,EAAE,IAAI,MAAM,MAAM,OAAO,IAAI,EAAE,EAAE,IAAI;AACnD;AAEA,SAAS,YAAY,MAAkC;AACrD,QAAM,QAAQ,KAAK,KAAK,EAAE,MAAM,GAAG;AACnC,MAAI,MAAM,SAAS,EAAG,QAAO;AAC7B,QAAM,CAAC,UAAU,IAAI,IAAI,IAAI;AAC7B,QAAM,SAAS,YAAY,OAAO;AAClC,MAAI,CAAC,OAAQ,QAAO;AACpB,QAAM,MAAM,OAAO,KAAK,MAAM;AAC9B,QAAM,SAAS,SAAS,SAAY,MAAM,YAAY,KAAK,IAAI,IAAI,OAAO,IAAI,IAAI;AAClF,MAAI,SAAS,KAAK,SAAS,IAAK,QAAO;AACvC,SAAO,EAAE,GAAG,QAAQ,OAAO;AAC7B;AA/DA,IAeM,cAwDA;AAvEN;AAAA;AAAA;AAAA;AAeA,IAAM,eAAe,sBAAsB,KAAK,GAAG;AAwDnD,IAAM,WAAW;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,IAAI,CAAC,MAAM,YAAY,CAAC,CAAW;AAAA;AAAA;;;AChD9B,SAAS,SAAS,MAAgB,KAAuB;AAC9D,QAAM,MAAM,KAAK,SAAS,GAAG;AAC7B,MAAI,QAAQ,MAAM;AAChB,QAAI,MAAM,MAAM;AAChB,WAAO,MAAM,MAAM,OAAO,KAAK,SAAS,GAAG,MAAM,EAAG;AACpD,UAAM,OAAO,IAAI,YAAY,EAAE;AAAA,MAC7B,IAAI,WAAW,KAAK,QAAQ,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,MAAM;AAAA,IAC5D;AACA,WAAO,EAAE,QAAQ,QAAQ,KAAK;AAAA,EAChC;AACA,QAAMC,QAAO,KAAK,UAAU,MAAM,GAAG,IAAI;AACzC,MAAI,QAAQ,OAAO;AACjB,UAAM,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG;AACzE,WAAO,EAAE,QAAQ,QAAQ,MAAM,MAAAA,MAAK;AAAA,EACtC;AACA,MAAI,QAAQ,OAAO;AACjB,WAAO,EAAE,QAAQ,QAAQ,MAAM,SAAS,IAAI,WAAW,KAAK,QAAQ,MAAM,GAAG,EAAE,CAAC,GAAG,MAAAA,MAAK;AAAA,EAC1F;AACA,QAAM,IAAI,UAAU,cAAc;AACpC;AAEA,SAAS,SAAS,OAA2B;AAC3C,QAAM,QAAQ,CAAC,MAAc,MAAM,SAAS,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,MAAM,CAAC;AACtE,MAAI,MAAM,EAAE,EAAG,QAAO;AACtB,MAAI,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,EAAG,QAAO;AACzC,MAAI,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,OAAQ,MAAM,EAAE,MAAM,IAAM,QAAO,MAAM,SAAS,EAAE,EAAE,KAAK,GAAG;AAC7F,QAAM,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE;AAAA,IAAI,CAAC,OAC5C,MAAM,CAAC,KAAK,IAAK,MAAM,IAAI,CAAC,GAAG,SAAS,EAAE;AAAA,EAC9C;AACA,SAAO,IAAI,IAAI,WAAW,OAAO,KAAK,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,GAAG,EAAE;AACtE;AAEO,SAAS,UAAU,MAAgB,KAAa,MAAkC;AACvF,MAAI,WAAW,KAAK,QAAQ,KAAK,GAAG,EAAE,KAAK,CAAC;AAC5C,MAAI,CAAC,KAAM;AACX,MAAI,KAAK,WAAW,QAAQ;AAC1B,SAAK,SAAS,KAAK,IAAI;AACvB,QAAI,WAAW,KAAK,QAAQ,MAAM,GAAG,GAAG,EAAE;AAAA,MACxC,IAAI,YAAY,EAAE,OAAO,KAAK,IAAI,EAAE,SAAS,GAAG,GAAG;AAAA,IACrD;AACA;AAAA,EACF;AACA,OAAK,UAAU,MAAM,GAAG,KAAK,MAAM,IAAI;AACvC,QAAM,SAAS,KAAK,KAAK,IAAI,IAAI,SAAY,WAAW,KAAK,IAAI;AACjE,MAAI,QAAQ;AACV,SAAK,SAAS,KAAK,KAAK;AACxB,WAAO,QAAQ,CAAC,GAAG,MAAM,KAAK,KAAK,UAAU,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC;AAChE;AAAA,EACF;AACA,OAAK,SAAS,KAAK,KAAK;AACxB,QAAM,SAAS,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AAC/C,SAAO,QAAQ,CAAC,GAAG,MAAM,KAAK,KAAK,SAAS,MAAM,IAAI,GAAG,CAAC,CAAC;AAC7D;AAEA,SAAS,QAAQ,MAAoC;AACnD,QAAM,SAAS,KAAK,IAAI,IAAI,SAAY,WAAW,IAAI;AACvD,SAAO,SAAS,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,GAAI,CAAC,IAAI,KAAK,IAAI;AACvE;AAEA,SAAS,KAAK,MAAoC;AAChD,QAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,MAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,QAAM,QAAQ,MAAM,IAAI,CAAC,MAAO,YAAY,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,OAAO,GAAI;AAC7E,SAAO,MAAM,MAAM,CAAC,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI,QAAQ;AAC1D;AAEA,SAASC,aAAY,IAAY,MAAc;AAC7C,MAAI,OAAO,SAAS,OAAO,SAAS,OAAO,KAAM,OAAM,IAAI,UAAU,cAAc;AACnF,MAAI,SAAS,UAAU,SAAS,MAAO,OAAM,IAAI,UAAU,iBAAiB;AAC5E,QAAM,SAAS,OAAO,OAAQ,SAAoB;AAClD,SAAO;AAAA,IACL,IAAI;AAAA,IACJ;AAAA,IACA,GAAI,SAAS,QAAQ,EAAE,MAAM,QAAiB,IAAI,CAAC;AAAA,EACrD;AACF;AAEA,SAAS,YAAY,IAAY,MAAc;AAC7C,MAAI,OAAO;AACT,UAAM,IAAI,UAAU,OAAO,SAAS,OAAO,QAAQ,eAAe,cAAc;AAClF,MAAI,SAAS,UAAU,SAAS,MAAO,OAAM,IAAI,UAAU,iBAAiB;AAC5E,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,GAAI,SAAS,QAAQ,EAAE,MAAM,QAAiB,IAAI,CAAC;AAAA,EACrD;AACF;AAEA,SAAS,SAAS,KAAa,MAA0B;AACvD,MAAI,KAAK,WAAW,UAAU,KAAK,SAAS,MAAM,KAAK,KAAK,WAAW,IAAI,EAAG,QAAO;AACrF,SAAO,KAAK,KAAK,WAAW,GAAG,IAAI,OAAO,EAAE,QAAQ,QAAQ,MAAM,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG;AAC1F;AAEA,SAAS,aAAa,MAAgB,KAAmC;AACvE,MAAI,QAAQ,KAAK,KAAK,SAAS,GAAG,MAAM,EAAG,QAAO;AAClD,SAAO,SAAS,MAAM,GAAG;AAC3B;AAEO,SAAS,cAAc,MAAgB;AAC5C,QAAM,EAAE,KAAK,EAAE,IAAI;AACnB,QAAMC,QAAO,CAAC,QAA6C,EAAE,OAAO,KAAK,GAAG;AAC5E,SAAO;AAAA,IACL,SACE,IACA,UACA,MACA,GACA,SACA,QACA,UACA,SACQ;AACR,YAAM,MAAM,KAAK,IAAI,IAAI,SAAS,MAAM,CAAC,GAAG,YAAY;AACxD,YAAM,QAAQ,UAAU,iBAAiB;AACzC,YAAM,MAAMA,MAAK,EAAE,IAAI,iBAAiB,IAAI,KAAK,MAAM,SAAS,CAAC;AACjE,YAAM,MAAM,eAAe,GAAiB;AAC5C,YAAM,OAAO,IAAI,KAAK;AACtB,WAAK,UAAU,QAAQ,IAAI,QAAQ,MAAM,GAAG,IAAI,KAAK,GAAG,IAAI;AAC5D,WAAK,UAAU,UAAU,IAAI,YAAY,sBAAsB,GAAG,IAAI;AACtE,YAAM,OAAiB,IAAI,OACvB,EAAE,QAAQ,QAAQ,MAAM,IAAI,KAAK,IACjC,EAAE,QAAQ,QAAQ,MAAM,IAAI,MAAM,MAAM,IAAI,KAAK;AACrD,UAAI,QAAS,WAAU,IAAI,KAAK,GAAG,SAAS,IAAI;AAChD,aAAO,EAAE;AAAA,IACX;AAAA,IACA,OAAO,IAAY,UAAmB,MAAc,GAAW,MAAc,KAAa;AACxF,YAAM,QAAQ,aAAa,IAAI,KAAK,GAAG,IAAI;AAC3C,YAAM,KAAK,SAAS,SAAS,KAAK,KAAK,KAAK;AAC5C,YAAM,OAAO,IAAI,OAAO,MAAM,CAAC;AAC/B,YAAM,OAAOA,MAAK,EAAE,IAAI,eAAe,IAAI,MAAM,GAAI,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,GAAI,SAAS,CAAC;AACxF,UAAI,KAAK,EAAE,UAAU,KAAK,MAAgB,IAAI;AAC9C,aAAO,EAAE;AAAA,IACX;AAAA,EACF;AACF;AAEO,SAAS,mBACd,MACA,UAC8B;AAC9B,QAAM,EAAE,KAAK,KAAK,EAAE,IAAI;AACxB,QAAMA,QAAO,CAAC,QAA6C,EAAE,OAAO,KAAK,GAAG;AAE5E,QAAM,SAAS,CAAC,OAAe;AAC7B,UAAM,IAAI,IAAI,IAAI,EAAE;AACpB,QAAI,EAAE,SAAS,YAAY,IAAI,KAAK,IAAI,CAAC,MAAM,SAAU,OAAM,IAAI,UAAU,UAAU;AACvF,WAAO;AAAA,EACT;AACA,QAAM,SAAS,CAAC,QAAuD,QAAQ,GAAG;AAClF,QAAM,YAAY,CAAC,OAAwB;AACzC,QAAI;AACF,YAAM,IAAI,IAAI,IAAI,EAAE;AACpB,aAAO,EAAE,SAAS,YAAY,IAAI,SAAS,IAAI,CAAC;AAAA,IAClD,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AACA,QAAM,QAAQ,cAAc,IAAI;AAChC,SAAO;AAAA,IACL,WAAW,CAAC,IAAY,MAAc,QAAgB,QAAgB;AACpE,YAAM,MAAMD,aAAY,IAAI,IAAI;AAChC,YAAM,KAAKC,MAAK,GAAG;AACnB,UAAI,MAAM,IAAI,UAAU,OAAO,UAAU,GAAG;AAC5C,UAAI,KAAK,EAAE,UAAU,KAAK,IAAI,IAAI;AAAA,IACpC;AAAA,IACA,WAAW,CAAC,IAAY,MAAc,QAAgB,MAAc,SAAiB;AACnF,YAAM,MAAM,YAAY,IAAI,IAAI;AAChC,UAAI,KAAK,EAAE,UAAU,MAAM,GAAG,IAAI;AAClC,UAAI,KAAK,EAAE,UAAU,MAAM,GAAG,IAAI;AAClC,YAAM,CAAC,GAAG,CAAC,IAAIA,MAAK,GAAG;AACvB,UAAI,MAAM,GAAG,UAAU,OAAO,UAAU,GAAG;AAC3C,UAAI,MAAM,GAAG,UAAU,OAAO,UAAU,GAAG;AAC3C,UAAI,KAAK,EAAE,UAAU,MAAM,GAAG,IAAI;AAClC,UAAI,KAAK,EAAE,UAAU,MAAM,GAAG,IAAI;AAAA,IACpC;AAAA,IACA,WAAW,CAAC,IAAY,SAAiB;AACvC,aAAO,EAAE;AACT,MAAAA,MAAK,EAAE,IAAI,aAAa,IAAI,MAAM,SAAS,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;AAAA,IACpF;AAAA,IACA,aAAa,CAAC,IAAY,YAAoB;AAC5C,aAAO,EAAE;AACT,MAAAA,MAAK,EAAE,IAAI,eAAe,IAAI,QAAQ,CAAC;AAAA,IACzC;AAAA,IACA,cAAc,CAAC,IAAY,SAAiB;AAC1C,YAAM,IAAI,OAAO,EAAE;AACnB,YAAM,KAAK,SAAS,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC;AACxD,MAAAA,MAAK,EAAE,IAAI,gBAAgB,IAAI,MAAM,IAAI,UAAU,EAAE,SAAS,CAAC;AAAA,IACjE;AAAA,IACA,gBAAgB,CAAC,IAAY,OAAe,OAAe,YAAoB;AAC7E,YAAM,IAAI,OAAO,EAAE;AACnB,YAAM,IAAIA,MAAK,EAAE,IAAI,eAAe,IAAI,UAAU,EAAE,SAAS,CAAC;AAI9D,UAAI,MAAM,EAAE,IAAI,WAAW,QAAQ,QAAQ,cAAc,CAAC;AAC1D,UAAI,KAAK,EAAE,UAAU,OAAO,EAAE,IAAI,IAAI;AACtC,gBAAU,IAAI,KAAK,GAAG,SAAS,EAAE,IAAI;AAAA,IACvC;AAAA,IACA,iBAAiB,CAAC,IAAY,QAAgB;AAC5C,aAAO,EAAE;AACT,gBAAU,IAAI,KAAK,GAAG,KAAKA,MAAK,EAAE,IAAI,aAAa,IAAI,MAAM,MAAM,CAAC,CAAa;AAAA,IACnF;AAAA,IACA,gBAAgB,CAAC,IAAY,QAAgB;AAC3C,aAAO,EAAE;AACT,gBAAU,IAAI,KAAK,GAAG,KAAKA,MAAK,EAAE,IAAI,aAAa,IAAI,MAAM,KAAK,CAAC,CAAa;AAAA,IAClF;AAAA,IAEA,gBAAgB,CACd,IACA,MACA,GACA,SACA,QACA,UACA,YACG;AACH,UAAI,UAAU,EAAE,GAAG;AACjB,cAAM,IAAI,OAAO,EAAE;AACnB,eAAO,MAAM,SAAS,IAAI,EAAE,UAAU,MAAM,GAAG,SAAS,QAAQ,UAAU,OAAO;AAAA,MACnF;AACA,YAAM,IAAI,SAAS;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,UAAI,MAAM,EAAE,QAAS,QAAO;AAC5B,gBAAU,IAAI,KAAK,GAAG,SAASA,MAAK,EAAE,IAAI,aAAa,IAAI,MAAM,KAAK,CAAC,CAAa;AACpF,aAAO,EAAE;AAAA,IACX;AAAA,IACA,cAAc,CACZ,IACA,MACA,GACA,OACA,MACA,QACG;AACH,UAAI,UAAU,EAAE,EAAG,QAAO,MAAM,OAAO,IAAI,OAAO,EAAE,EAAE,UAAU,MAAM,GAAG,MAAM,GAAG;AAClF,aAAO,SAAS;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa,CAAC,IAAY,QAAgB;AACxC,aAAO,EAAE;AACT,UAAI,KAAK,EAAE,SAAS,KAAK,CAAC;AAAA,IAC5B;AAAA,IACA,mBAAmB,CAAC,IAAY,KAAa,QAAgB;AAC3D,aAAO,EAAE;AACT,YAAM,OAAO,OAAO,GAAG;AACvB,YAAM,IAAI,OACLA,MAAK,EAAE,IAAI,eAAe,IAAI,OAAO,KAAK,CAAC,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,IAC9D;AACJ,UAAI,KAAK,EAAE,SAAS,KAAK,IAAI,IAAI,CAAC;AAAA,IACpC;AAAA,IACA,mBAAmB,CAAC,IAAY,KAAa,SAAiB;AAC5D,aAAO,EAAE;AACT,YAAM,OAAO,OAAO,GAAG;AACvB,UAAI,KAAM,CAAAA,MAAK,EAAE,IAAI,eAAe,IAAI,OAAO,KAAK,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,OAAO,IAAI,EAAE,CAAC;AAAA,IAC9F;AAAA,IACA,mBAAmB,CAAC,IAAY,KAAa,QAAgB;AAC3D,aAAO,EAAE;AACT,YAAM,OAAO,OAAO,GAAG;AACvB,YAAM,IAAI,OACLA,MAAK,EAAE,IAAI,eAAe,IAAI,OAAO,KAAK,CAAC,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,IAC9D;AACJ,UAAI,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,IAAI;AAAA,IAC9C;AAAA,IACA,mBAAmB,CAAC,IAAY,KAAa,SAAiB;AAC5D,aAAO,EAAE;AACT,YAAM,OAAO,OAAO,GAAG;AACvB,UAAI,KAAM,CAAAA,MAAK,EAAE,IAAI,eAAe,IAAI,OAAO,KAAK,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,OAAO,IAAI,EAAE,CAAC;AAAA,IAC9F;AAAA,IAEA,mBAAmB,CAAC,IAAY,MAAc,QAAgB;AAC5D,aAAO,EAAE;AACT,UAAI,WAAW,IAAI,KAAK,EAAE,QAAQ,KAAK,EAAE,EAAE,KAAK,CAAC;AAAA,IACnD;AAAA,IACA,mBAAmB,CAAC,OAAe,KAAK,OAAO,EAAE;AAAA,IAEjD,gBAAgB,MAAM,EAAE;AAAA,IAExB,SAAS,CACPC,OACA,KACA,OACA,OACA,QACA,QACG;AACH,YAAM,QAAQD,MAAK,EAAE,IAAI,gBAAgB,MAAM,IAAI,OAAOC,OAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;AACjF,YAAM,MAAO,MAAmB,IAAI,OAAO,EAAE,OAAO,CAAC,OAAO,OAAO,MAAS;AAC5E,UAAI,IAAI,WAAW,EAAG,OAAM,IAAI,UAAU,QAAQ;AAClD,UAAI,SAAS,EAAG,OAAM,IAAI,UAAU,QAAQ;AAC5C,YAAM,OAAO,IAAI,KAAK;AACtB,YAAM,QAAQ,KAAK,IAAI,IAAI,QAAQ,MAAM;AACzC,UAAI,WAAW,KAAK,QAAQ,OAAO,eAAe,KAAK,EAAE,KAAK,CAAC;AAC/D,eAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,cAAM,KAAK,QAAQ,IAAI;AACvB,aAAK,SAAS,IAAI,IAAI,CAAC,EAAE,WAAW,IAAI,QAAQ,KAAK;AACrD,YAAI,WAAW,KAAK,QAAQ,KAAK,GAAG,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC;AAAA,MAC/D;AACA,WAAK,UAAU,KAAK,OAAO,IAAI;AAAA,IACjC;AAAA,EACF;AACF;AAxVA,IAOM,OACA,OACA,MACA,QACA,OACA,qBACA,aACA,cACA,cACA,UAEA;AAlBN;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAGA,IAAM,QAAQ;AACd,IAAM,QAAQ;AACd,IAAM,OAAO;AACb,IAAM,SAAS;AACf,IAAM,QAAQ;AACd,IAAM,sBAAsB;AAC5B,IAAM,cAAc;AACpB,IAAM,eAAe;AACrB,IAAM,eAAe;AACrB,IAAM,WAAW;AAEjB,IAAM,UAA+D;AAAA,MACnE,GAAG,CAAC,GAAG,EAAE;AAAA,MACT,GAAG,CAAC,GAAG,CAAC;AAAA,MACR,GAAG,CAAC,GAAG,CAAC;AAAA,MACR,GAAG,CAAC,GAAG,CAAC;AAAA,MACR,GAAG,CAAC,GAAG,CAAC;AAAA,MACR,IAAI,CAAC,GAAG,EAAE;AAAA,MACV,IAAI,CAAC,GAAG,CAAC;AAAA,MACT,IAAI,CAAC,GAAG,CAAC;AAAA,MACT,IAAI,CAAC,GAAG,EAAE;AAAA,MACV,IAAI,CAAC,GAAG,CAAC;AAAA,MACT,IAAI,CAAC,GAAG,CAAC;AAAA,MACT,IAAI,CAAC,GAAG,CAAC;AAAA,IACX;AAAA;AAAA;;;ACsFA,SAAS,KAAKC,QAAmC;AAC/C,SAAOA,WAAU,MAAM,aAAa,SAAYA,WAAU;AAC5D;AAqCA,SAAS,SAAS,IAAoD;AACpE,UAAQ,GAAG,SAAS,KAAK,IAAI,KAAK;AACpC;AAEA,SAAS,gBACP,IACA,MAC8B;AAC9B,MAAI;AACF,WAAO,SAAS,GAAG,MAAM,IAAI,CAAC;AAAA,EAChC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,WAAW,GAAgD;AAClE,MAAI,CAAC,EAAG,QAAO,SAAS;AACxB,MAAI,EAAE,eAAgB,QAAO,SAAS;AACtC,MAAI,EAAE,YAAa,QAAO,SAAS;AACnC,MAAI,EAAE,SAAU,QAAO,SAAS;AAChC,QAAM,EAAE,QAAQ,KAAK,WAAc,KAAU,QAAO,SAAS;AAC7D,SAAO,EAAE,SAAS,SAAS,eAAe,SAAS;AACrD;AAEA,SAAS,WAAW,MAAc,GAA+B;AAC/D,SAAO;AAAA,IACL,UAAU,WAAW,CAAC;AAAA,IACtB,MAAM,OAAO,EAAE,IAAI;AAAA,IACnB,KAAK,EAAE,QAAQ,SAAY,OAAO,EAAE,GAAG,IAAI,UAAU,IAAI;AAAA,IACzD,GAAI,EAAE,UAAU,SAAY,EAAE,OAAO,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAAA,IAC1D,SAAS,OAAO,KAAK,MAAM,EAAE,WAAW,CAAC,CAAC,IAAIC;AAAA,EAChD;AACF;AAKA,SAAS,UAAU,MAAuB;AACxC,SAAO,MAAM,IAAI,KAAK,SAAS,eAAe,SAAS;AACzD;AAEA,SAAS,eAAe,MAAoD;AAC1E,UAAQ,MAAM;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,EAAE,UAAU,SAAS,kBAAkB,OAAO,MAAM;AAAA,IAC7D,KAAK;AACH,aAAO,EAAE,UAAU,SAAS,kBAAkB,OAAO,KAAK;AAAA,IAC5D,KAAK;AACH,aAAO,EAAE,UAAU,SAAS,eAAe,OAAO,MAAM;AAAA,IAC1D,KAAK;AACH,aAAO,EAAE,UAAU,SAAS,cAAc,OAAO,MAAM;AAAA,IACzD,KAAK;AACH,aAAO,EAAE,UAAU,SAAS,cAAc,OAAO,KAAK;AAAA,IACxD;AACE,aAAO,EAAE,UAAU,SAAS,SAAS,OAAO,MAAM;AAAA,EACtD;AACF;AAs6CA,SAAS,aAAaC,OAAc,KAAaC,OAAc,UAA8B;AAC3F,QAAM,YAAY,IAAI,YAAY,EAAE,OAAOA,KAAI;AAC/C,QAAM,SAAS,IAAI,WAAW,KAAK,SAAS,UAAU,MAAM;AAC5D,QAAM,IAAI,IAAI,SAAS,OAAO,MAAM;AACpC,IAAE,aAAa,GAAG,OAAOD,KAAI,GAAG,IAAI;AACpC,IAAE,aAAa,GAAG,KAAK,IAAI;AAC3B,IAAE,UAAU,IAAI,UAAU,QAAQ,IAAI;AACtC,IAAE,SAAS,IAAI,QAAQ;AACvB,SAAO,IAAI,WAAW,KAAK,MAAM;AACjC,SAAO;AACT;AAEO,SAAS,KAAK,OAAmE;AACtF,QAAM,MAAoC,CAAC;AAC3C,aAAW,CAACC,OAAM,EAAE,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC9C,QAAIA,KAAI,IAAI,IAAI,SAAkB;AAChC,UAAI;AACF,eAAO,GAAG,GAAG,IAAI,KAAK,EAAE;AAAA,MAC1B,SAAS,GAAG;AACV,YAAI,aAAa,SAAU,OAAM;AACjC,YAAI,aAAa,UAAW,QAAO,YAAY,EAAE,IAAI;AACrD,cAAMC,QAAQ,GAAiC;AAC/C,YAAI,OAAOA,UAAS,SAAU,QAAO,YAAYA,KAAI;AACrD,YAAI,aAAa,WAAY,QAAO,EAAE;AACtC,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAzpDA,IAwDa,UAkDP,KACAH,YACA,qBACA,UACA,WACA,WACA,YAEA,UACA,MAKA,SACA,SACA,eAEA,gBAEA,UACA,eAEA,UAEA,WAMA,cAEA,SAmDA,aACA,aAyBO;AAxNb;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAIA;AAEA;AAEA;AACA;AACA;AAgBA;AACA;AAQA;AASA;AACA;AACA;AAEA;AACA;AAEA;AAEO,IAAM,WAAN,cAAuB,MAAM;AAAA,MACzB;AAAA,MACT,YAAYG,OAAc;AACxB,cAAM,QAAQA,KAAI,EAAE;AACpB,aAAK,OAAOA;AAAA,MACd;AAAA,IACF;AA4CA,IAAM,MAAM,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM;AAC3D,IAAMH,aAAY;AAClB,IAAM,sBAAsB;AAC5B,IAAM,WAAW;AACjB,IAAM,YAAY;AAClB,IAAM,YAAY;AAClB,IAAM,aAAa;AAEnB,IAAM,WAAW,OAAO,OAAO,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;AACjD,IAAM,OAA4B,oBAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAK/D,IAAM,UAAU;AAChB,IAAM,UAAU;AAChB,IAAM,gBAAgB;AAEtB,IAAM,iBAAiB,OAAO,KAAK,MAAM,YAAY,UAAU,CAAC,IAAIA;AAEpE,IAAM,WAAW,OAAO;AACxB,IAAM,gBAAgB;AAEtB,IAAM,WACJ;AACF,IAAM,YAA8C,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,EAAE;AAMrF,IAAM,eAAe,MAAM,IAAI;AAE/B,IAAM,UAAU;AAmDhB,IAAM,cAAc;AACpB,IAAM,cAAc;AAyBb,IAAM,WAAN,MAAe;AAAA,MACX,MAAM,IAAI,WAAW;AAAA,MACrB;AAAA,MACQ;AAAA,MACA;AAAA,MACA,UAAU,YAAY,IAAI;AAAA,MACnC;AAAA,MAES;AAAA,MAEjB,iBAAiB;AAAA,MAEjB,cAAc;AAAA,MAEd,QAAQ;AAAA,MAER,UAAU;AAAA,MAEV,iBAAiB;AAAA,MAEjB;AAAA,MAEA;AAAA,MAEA;AAAA,MAEA;AAAA,MAEA;AAAA,MAEA,MAAM;AAAA,MAEN;AAAA,MAEA;AAAA,MAEA;AAAA,MAEA;AAAA,MAEA,UAAiC,QAAQ;AAAA,MAEzC,aAAyB,QAAQ;AAAA,MAEhB;AAAA,MAER;AAAA,MACT,YAAY,GAAoB;AAC9B,cAAM,EAAE,OAAO,IAAI;AACnB,cAAMI,QAA2B,CAAC,QAAQ;AACxC,cAAI,IAAI,OAAO,aAAc,MAAK,IAAI,WAAW;AACjD,iBAAO,OAAO,KAAK,GAAG;AAAA,QACxB;AACA,cAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAAA,UAChC,KAAK,CAAC,QAAQF,UAAS;AACrB,kBAAM,SAAS,QAAQ,IAAI,QAAQA,KAAI;AACvC,gBAAI,OAAO,WAAW,WAAY,QAAO;AACzC,mBAAO,IAAI,SAAoB;AAC7B,mBAAK,IAAI,WAAW;AACpB,qBAAO,OAAO,MAAM,QAAQ,IAAI;AAAA,YAClC;AAAA,UACF;AAAA,QACF,CAAC;AACD,aAAK,IAAI,EAAE,GAAG,GAAG,QAAQ,EAAE,KAAK,MAAAE,MAAK,EAAE;AACvC,aAAK,WAAW,EAAE;AAClB,aAAK,MAAM,IAAI,QAAQ,KAAK,EAAE,QAAQ,EAAE,EAAE;AAC1C,YAAI,EAAE,KAAM,MAAK,IAAI,OAAO,EAAE;AAC9B,aAAK,QAAQ,IAAI;AAAA,UACf,MAAM,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,YAAY,CAAC;AAAA,UAC5C,EAAE,WAAW,EAAE;AAAA,QACjB;AACA,aAAK,SAAS,IAAI;AAAA,UAChB,CAAC,SACC,KAAK,EAAE,OAAO;AAAA,YACZ,SAAS,SAAY,EAAE,IAAI,aAAa,IAAI,EAAE,IAAI,cAAc,KAAK;AAAA,UACvE;AAAA,UACF,EAAE,WAAW,EAAE;AAAA,UACf,EAAE,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,GAAG,SAAS,MAAM,KAAK,WAAW,EAAE;AAAA,QACtE;AACA,YAAI,EAAE,OAAQ,MAAK,IAAI,MAAM,EAAE,QAAQ,IAAI;AAAA,iBAClC,EAAE,OAAQ,MAAK,IAAI,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,OAAO;AAAA,iBACzD,CAAC,EAAE,KAAM,MAAK,IAAI,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,gBAAgB,IAAI;AACjF,aAAK,YAAY,EAAE,SAAS,CAAC,IAAI,KAAK,IAAI,QAAQ;AAAA,MACpD;AAAA,MAEQ,QAAQ,KAAqB;AACnC,eAAO,KAAK,IAAI,IAAI,MAAM,SACtB,KAAK,IAAI,QAAQ,GAAG,GAAG,KAAK,GAAG,IAAI,GAAG,EAAE,IACxC,KAAK,IAAI,QAAQ,GAAG,GAAG;AAAA,MAC7B;AAAA,MAEA,IAAI,MAAc;AAChB,eAAO,KAAK,IAAI,IAAI,KAAK,KAAK;AAAA,MAChC;AAAA,MAEA,MAAM,MAAuB;AAC3B,eAAO,SAAS,SAAY,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI;AAAA,MACtE;AAAA,MAEQ,aAA2B;AACjC,cAAM,EAAE,KAAK,IAAI,IAAI;AACrB,cAAM,QAAQ,CAAC,OAAe,GAAW,MAAsB;AAC7D,gBAAM,MAAM,IAAI,OAAO,GAAG,CAAC;AAC3B,cAAI,QAAQ,GAAI,OAAM,IAAI,UAAU,QAAQ;AAC5C,cAAI,IAAI,WAAW,GAAG,EAAG,QAAO,IAAI,QAAQ,GAAG,GAAG;AAClD,iBAAO,UAAU,WAAW,KAAK,QAAQ,GAAG,IAAI,IAAI,QAAQ,OAAO,GAAG;AAAA,QACxE;AACA,eAAO,IAAI,SAAmB;AAC5B,gBAAM,CAAC,UAAU,IAAI,IAAI,UAAU,IAAI,IAAI,MAAM,KAAK,IAAI;AAU1D,cAAI,CAAC,KAAK,EAAE,GAAG,KAAM,QAAO,EAAE;AAC9B,eAAK,QAAQ,EAAE,YAAY,gBAAgB,EAAG,OAAM,IAAI,UAAU,QAAQ;AAC1E,gBAAM,OAAO,MAAM,UAAU,IAAI,EAAE;AACnC,gBAAM,KAAK,MAAM,UAAU,IAAI,EAAE;AACjC,gBAAM,OAAO,QAAQ,YAAa,KAAK,EAAE,GAAG,KAAK,IAAI,EAAE,QAAQ,IAAK;AACpE,eAAK,SAAS,MAAM,IAAI,OAAO,QAAQ,eAAe,CAAC;AACvD,iBAAO,EAAE;AAAA,QACX;AAAA,MACF;AAAA,MAEA,SAAS,MAAc,IAAY,MAAc,WAA0B;AACzE,cAAM,EAAE,MAAAC,MAAK,IAAI,KAAK,EAAE;AACxB,YAAI,CAACA,MAAM,OAAM,IAAI,UAAU,QAAQ;AACvC,aAAK,IAAI,UAAU,IAAI;AACvB,QAAAA,MAAK,KAAK,KAAK,EAAE,IAAI,MAAM,IAAI,OAAO,OAAS,CAAC,KAAK,OAAO,IAAI,GAAG,SAAS;AAAA,MAC9E;AAAA,MAEQ,QAAQ,MAAc,MAAoB;AAChD,cAAM,QAAQ,KAAK,OAAO,IAAI;AAC9B,YAAI,UAAU,cAAe,MAAK,EAAE,GAAG,MAAM,MAAM,OAAO,CAAC,KAAK;AAAA,MAClE;AAAA,MAEA,kBAAgD;AAC9C,eAAO,KAAK,SAAS,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,QAAQ,MAAM,KAAK,cAAc,CAAC,CAAC;AAAA,MACrF;AAAA,MAEA,iBAA+C;AAC7C,cAAM,EAAE,KAAK,IAAI,IAAI;AACrB,cAAM,KAAK,CAAC,OAAe,GAAW,MAAc,IAAI,QAAQ,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC;AACvF,cAAM,SAAS,CAAC,OAAuB;AACrC,gBAAM,IAAI,IAAI,IAAI,EAAE;AACpB,cAAI,EAAE,SAAS,MAAO,QAAO,EAAE;AAC/B,cAAI,EAAE,SAAS,OAAQ,QAAO,EAAE,KAAK;AACrC,gBAAM,OACJ,EAAE,SAAS,YAAY,IAAI,KAAK,IAAI,CAAC,MAAM,SAAS,KAAK,WAAW,EAAE,EAAE,OAAO;AACjF,cAAI,SAAS,OAAW,OAAM,IAAI,UAAU,OAAO;AACnD,iBAAO;AAAA,QACT;AACA,cAAM,SAAS,CAAC,MAAc,UAA0B;AACtD,cAAI,QAAQ,uBAAuB,KAAK,EAAE,GAAG,MAAM,IAAI,EAAE,gBAAgB;AACvE,kBAAM,IAAI,UAAU,SAAS;AAAA,UAC/B;AACA,iBAAO;AAAA,QACT;AACA,cAAMC,UAAS,CAAC,QAA2B,GAAG,QAAQ,KAAK;AAC3D,cAAM,QAAQ,CAAC,MAAc,KAAa,KAAaC,SAAiB,WAAoB;AAC1F,gBAAM,EAAE,OAAO,IAAI,IAAI,KAAK,EAAE;AAC9B,cAAI,CAAC,IAAK,OAAM,IAAI,UAAU,QAAQ;AACtC,cAAI,KAAK,KAAK,EAAE,IAAI,MAAM,KAAK,GAAG,GAAG,KAAK,GAAG,GAAGA,SAAQ,MAAM;AAAA,QAChE;AACA,cAAM,SAAS,MAAwB;AACrC,gBAAM,OAAO,KAAK,MAAM,IAAI;AAC5B,iBAAO,CAAC,KAAK,MAAM,KAAK,IAAI;AAAA,QAC9B;AACA,cAAM,QAAQ,CAAC,IAAgD,QAAsB;AACnF,gBAAM,CAAC,KAAK,GAAG,IAAI,IAAI,QAAQ,SAAY,OAAO,IAAI,CAAC,GAAG,KAAK,GAAG,GAAa;AAC/E,gBAAM,OAAO,IAAI,KAAK;AACtB,eAAK,UAAU,MAAM,GAAG,IAAI;AAC5B,eAAK,UAAU,KAAK,KAAK,IAAI;AAC7B,eAAK,UAAU,MAAM,GAAG,KAAK,IAAI;AAAA,QACnC;AACA,cAAM,MAAM;AAAA,UACV,MAAM,CAAC,QAAwD,KAAK,EAAE,OAAO,KAAK,GAAG;AAAA,QACvF;AACA,cAAM,UAAU,CAAC,OAA2D;AAC1E,gBAAM,IAAI,IAAI,IAAI,EAAE;AACpB,cAAI,EAAE,SAAS,SAAU,QAAO;AAChC,gBAAM,OAAO,EAAE,SAAS,WAAW,IAAI,KAAK,IAAI,CAAC,IAAI;AACrD,cAAI,SAAS,YAAY,SAAS,YAAa,QAAO;AACtD,cAAI,SAAS,MAAO,QAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;AACrD,cAAI,SAAS,OAAQ,QAAO;AAC5B,cAAI;AACF,mBAAO,KAAK,EAAE,GAAG,KAAK,OAAO,EAAE,CAAC;AAAA,UAClC,SAAS,KAAK;AACZ,gBAAI,CAAC,KAAK,IAAK,KAA4B,IAAc,EAAG,OAAM;AAClE,mBAAO;AAAA,UACT;AAAA,QACF;AACA,cAAM,SAAS,CAAC,OAAuB;AACrC,gBAAM,IAAI,IAAI,IAAI,EAAE;AACpB,cAAI,EAAE,SAAS,SAAU,QAAO;AAChC,gBAAM,OAAO,EAAE,SAAS,WAAW,IAAI,KAAK,IAAI,CAAC,IAAI;AACrD,cAAI,SAAS,SAAU,QAAO,UAAU;AACxC,cAAI,SAAS,YAAY,SAAS,YAAa,QAAO;AACtD,cAAI,SAAS,UAAa,SAAS;AACjC,mBAAO,QAAQ,KAAK,UAAU,EAAE,CAAC,EAAE,QAAQ;AAC7C,iBAAOD,QAAO,KAAK,EAAE,GAAG,KAAK,OAAO,EAAE,CAAC,CAAC;AAAA,QAC1C;AACA,cAAM,YAAY,CAChB,MACAC,YAC+C;AAC/C,gBAAM,QAAQ,KAAK,QAAQ,IAAI;AAC/B,cAAI,SAAS,CAACA,QAAQ,QAAO,MAAM,QAAQ,WAAW;AACtD,cAAI,OAAO;AACT,iBAAK,OAAO,MAAM,EAAE;AACpB,mBAAO,QAAQ,MAAM,EAAE;AAAA,UACzB;AACA,cAAI,KAAK,UAAU,IAAI,EAAG,QAAO;AACjC,cAAI,UAAU,IAAI,EAAG,QAAO,QAAQ,KAAK,QAAQ,MAAMA,OAAM,CAAC;AAC9D,iBAAO,KAAK,OAAO,MAAMA,SAAQ,MAAM,KAAK,OAAO,MAAMA,OAAM,GAAG,SAAS;AAAA,QAC7E;AACA,cAAM,WAAW,CAAC,MAAcA,YAA4B;AAC1D,gBAAM,QAAQ,KAAK,QAAQ,IAAI;AAC/B,cAAI,SAAS,CAACA,SAAQ;AACpB,iBAAK,SAAS,KAAK;AACnB,mBAAO,UAAU;AAAA,UACnB;AACA,cAAI,OAAO;AACT,iBAAK,OAAO,MAAM,EAAE;AACpB,mBAAO,OAAO,MAAM,EAAE;AAAA,UACxB;AACA,cAAI,KAAK,UAAU,IAAI,KAAK,SAAS,IAAI,MAAM,OAAW,QAAO;AACjE,cAAI,UAAU,IAAI,EAAG,QAAO,QAAQ,KAAK,QAAQ,MAAMA,OAAM,CAAC,EAAE,QAAQ;AACxE,gBAAM,WAAW,CAAC,QAA0B,GAAG,SAAS,UAAU,KAAKD,QAAO,EAAE;AAChF,iBAAO,KAAK,OAAO,MAAMC,SAAQ,MAAM,SAAS,KAAK,OAAO,MAAMA,OAAM,CAAC,GAAG,QAAQ;AAAA,QACtF;AACA,eAAO,KAAK;AAAA,UACV,UAAU,CAAC,IAAY,KAAa,QAAgB;AAClD,kBAAM,IAAI,IAAI,IAAI,EAAE;AACpB,kBAAM,SAAS,EAAE,SAAS,SAAS,EAAE,KAAK,OAAO,SAAS;AAC1D,iBAAK,MAAM,OAAO,EAAE,GAAG,KAAK,KAAK,MAAM,MAAM;AAAA,UAC/C;AAAA,UACA,YAAY,CAAC,OAAe,GAAW,GAAW,KAAa,KAAa,UAC1E,KAAK,MAAM,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,MAAM,QAAQ,yBAAyB,CAAC;AAAA,UAC3E,UAAU,CAAC,IAAY,QAAgB;AACrC,gBAAI,CAAC,KAAK,EAAE,GAAG,OAAQ,OAAM,IAAI,UAAU,SAAS;AACpD,kBAAM,QAAQ,EAAE,GAAG,GAAG;AAAA,UACxB;AAAA,UACA,mBAAmB,CAAC,IAAY,SAAiB,QAAgB;AAC/D,gBAAI,CAAC,KAAK,EAAE,GAAG,OAAQ,OAAM,IAAI,UAAU,SAAS;AACpD,iBAAK,cAAc,SAAS,KAAK,WAAW,EAAE,CAAC;AAC/C,kBAAM,QAAQ,EAAE,GAAG,GAAG;AAAA,UACxB;AAAA,UACA,qBAAqB,CACnB,OACAC,SACA,GACA,GACA,SACA,QACG;AACH,kBAAM,OAAO,GAAG,OAAO,GAAG,CAAC;AAC3B,gBAAI,CAAC,KAAK,EAAE,GAAG,OAAQ,OAAM,IAAI,UAAU,SAAS;AACpD,iBAAK,cAAc,SAAS,KAAK,aAAa,MAAMA,OAAM,CAAC;AAC3D,kBAAM,UAAU,OAAOA,UAAS,2BAA2B,CAAC,GAAG,GAAG;AAAA,UACpE;AAAA,UACA,YAAY,CAAC,OAAe,GAAW,GAAW,OAAe,QAAgB;AAC/E,kBAAM,OAAO,GAAG,OAAO,GAAG,CAAC;AAC3B,gBAAI,CAAC,KAAK,EAAE,GAAG,OAAQ,OAAM,IAAI,UAAU,SAAS;AACpD,kBAAM,UAAU,OAAO,QAAQ,yBAAyB,CAAC,GAAG,GAAG;AAAA,UACjE;AAAA,UACA,aAAa,CAAC,OAAe,GAAW,GAAW,OAAe,UAAkB;AAClF,kBAAM,OAAO,GAAG,OAAO,GAAG,CAAC;AAC3B,kBAAM,YAAY,QAAQ,yBAAyB;AACnD,gBAAI,KAAK,UAAU,IAAI,GAAG;AACxB,kBAAI,KAAK,EAAE,GAAG,UAAU,QAAQ,EAAG,OAAM,IAAI,UAAU,QAAQ;AAC/D;AAAA,YACF;AACA,kBAAM,KAAK,UAAU,MAAM,CAAC,QAAQ;AACpC,gBAAI,QAAQ,KAAM,GAA8B,SAAU,OAAM,IAAI,UAAU,OAAO;AACrF,gBAAI,CAAC,KAAK,EAAE,GAAG,OAAQ;AACvB,kBAAM,OAAO,QAAQ,aAAa,YAAY;AAC9C,iBAAK,EAAE,GAAG,SAAS,MAAM,QAAQ,GAAG,MAAM,QAAQ;AAAA,UACpD;AAAA,UACA,UAAU,CAAC,IAAY,SAAiB,KAAK,KAAK,EAAE,GAAG,MAAM,OAAO,EAAE,GAAG,OAAO,IAAM;AAAA,UACtF,YAAY,CAAC,OAAe,GAAW,GAAW,MAAc,UAC9D,KAAK,KAAK,EAAE,GAAG,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,OAAO,IAAM;AAAA,UACpE,aAAa,CAAC,OAAe,GAAW,GAAW,SAAiB;AAClE,kBAAM,EAAE,OAAO,IAAI,KAAK,EAAE;AAC1B,gBAAI,CAAC,OAAQ,QAAO,EAAE;AACtB,kBAAM,MAAM,IAAI,OAAO,GAAG,CAAC;AAC3B,gBAAI,QAAQ,GAAI,OAAM,IAAI,UAAU,QAAQ;AAC5C,kBAAM,OACJ,UAAU,YAAY,CAAC,IAAI,WAAW,GAAG,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,OAAO,GAAG,CAAC;AACjF,kBAAM,QAAQ,KAAK,OAAO,IAAI;AAC9B,kBAAM,OAAO,OAAO,OAAS,CAAC;AAC9B,mBAAO,KAAK,KAAK,EAAE,IAAI,MAAM,IAAI;AACjC,kBAAM,QAAQ,KAAK,EAAE,GAAG,MAAM,IAAI,EAAE,QAAQ,KAAK;AACjD,iBAAK,OAAO,CAAC,UAAU,EAAG,MAAK,EAAE,GAAG,MAAM,MAAM,OAAO,IAAI;AAC3D,mBAAO,EAAE;AAAA,UACX;AAAA,UACA,gBAAgB,KAAK,WAAW;AAAA,UAChC,OAAO,CAAC,MAAc,QAAgB;AACpC,kBAAM,MAAM,KAAK,OAAO,IAAI,IAAI;AAChC,gBAAI,KAAK,EAAE,UAAU,KAAK,KAAK,IAAI;AAAA,UACrC;AAAA,UACA,SAAS,CAAC,IAAY,QAAgB,KAAK,IAAI,KAAK,EAAE,UAAU,KAAK,OAAO,EAAE,GAAG,IAAI;AAAA,UACrF,WAAW,CAAC,OAAe,GAAW,GAAW,OAAe,QAAgB;AAC9E,kBAAM,OAAO,GAAG,OAAO,GAAG,CAAC;AAC3B,kBAAM,OAAO,SAAS,OAAO,QAAQ,yBAAyB,CAAC;AAC/D,gBAAI,KAAK,EAAE,UAAU,KAAK,MAAM,IAAI;AAAA,UACtC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEQ,SAAS,KAA2B;AAC1C,eAAO;AAAA,UACL;AAAA,UACA,MAAM,CAAC,OAAO,KAAK,WAAW,EAAE;AAAA,UAChC,OAAO,CAAC,SAAS;AACf,gBAAI,KAAK,SAAS,OAAW,MAAK,IAAI,UAAU,KAAK,IAAI;AAAA,qBAChD,KAAK,OAAO,OAAO,OAAW,MAAK,EAAE,OAAO,IAAI,MAAM,KAAK,OAAO,EAAE;AAAA,UAC/E;AAAA,UACA,QAAQ,MAAM,KAAK,IAAI,UAAU;AAAA,UACjC,SAAS,CAAC,IAAI,UAAU,KAAK,IAAI,QAAQ,IAAI,KAAK;AAAA,UAClD,QAAQ,CAAC,OAAO,KAAK,IAAI,OAAO,EAAE;AAAA,UAClC,OAAO;AAAA,YACL,OAAO,CAAC,IAAI,MAAMC,UAChB,KAAK,IAAI;AAAA,cAAW,MAClB,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,SAAS,IAAI,MAAM,GAAIA,QAAO,EAAE,MAAAA,MAAK,IAAI,CAAC,EAAG,CAAC;AAAA,YACzE;AAAA,YACF,KAAK,CAAC,QAAQ,MAAMC,QAAO,KAAKD,UAC9B,KAAK,IAAI;AAAA,cAAW,MAClB,KAAK,EAAE,OAAO,KAAK;AAAA,gBACjB,IAAI;AAAA,gBACJ,GAAG;AAAA,gBACH;AAAA,gBACA,OAAAC;AAAA,gBACA;AAAA,gBACA,GAAID,QAAO,EAAE,MAAAA,MAAK,IAAI,CAAC;AAAA,cACzB,CAAC;AAAA,YACH;AAAA,YACF,KAAK,CAAC,QAAQ,MAAMC,QAAO,QACzB,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,UAAU,GAAG,QAAQ,MAAM,OAAAA,QAAO,IAAI,CAAC;AAAA,UACpE;AAAA,QACF;AAAA,MACF;AAAA,MAEA,eAA6C;AAC3C,cAAM,EAAE,IAAI,IAAI;AAChB,cAAM,OAAO,CAAC,GAAW,MAAc;AACrC,gBAAM,OAAO,IAAI,OAAO,GAAG,CAAC;AAC5B,iBAAO,SAAS,MAAM,KAAK,WAAW,GAAG,IAAI,OAAO,UAAU,GAAG,KAAK,GAAG,IAAI,IAAI,EAAE;AAAA,QACrF;AACA,eAAO,KAAK;AAAA,UACV,OAAO,CACL,IACA,IACA,IACA,IACA,IACA,IACA,OACA,IACA,OAEA,KAAK,KAAK,EAAE,OAAO,KAAK;AAAA,YACtB,IAAI;AAAA,YACJ,QAAQ,IAAI,OAAO,IAAI,EAAE;AAAA,YACzB,QAAQ,KAAK,IAAI,EAAE;AAAA,YACnB,MAAM,IAAI,OAAO,IAAI,EAAE;AAAA,YACvB;AAAA,YACA,MAAM,IAAI,OAAO,IAAI,EAAE;AAAA,UACzB,CAAC;AAAA,UACH,SAAS,CAAC,IAAY,IAAY,UAChC,KAAK,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,UAAU,QAAQ,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC;AAAA,UACvE,UAAU,CAAC,QAAgB;AACzB,kBAAM,OAAO,KAAK,MAAM,IAAI;AAC5B,kBAAM,OAAO,IAAI,KAAK;AACtB,iBAAK,UAAU,MAAM,IAAI,IAAI;AAC7B,gBAAI,QAAQ,CAAC,KAAK,MAAM,KAAK,KAAK,UAAU,MAAM,IAAI,GAAG,KAAK,GAAG,GAAG,IAAI,CAAC;AAAA,UAC3E;AAAA,UACA,UAAU,IAAI,QAAkB;AAC9B,kBAAM,SAAqB,CAAC;AAC5B,gBAAI,QAAQ,CAAC,KAAK,MAAM;AACtB,kBAAI,IAAI,CAAC,MAAM,GAAI,QAAO,GAAG,IAAK,IAAI,CAAC,MAAiB;AAAA,YAC1D,CAAC;AACD,iBAAK,KAAK,MAAM,OAAO,MAAM,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,gBAAgB,OAAO,CAAC,CAAS;AAAA,UACzF;AAAA,UACA,GAAG,WAAW,IAAI;AAAA,UAClB,GAAG,YAAY,KAAK,SAAS,GAAG,CAAC;AAAA,UACjC,YAAY,CAAC,KAAa,KAAa,UAAkB;AACvD,kBAAM,EAAE,OAAO,IAAI,KAAK,MAAM,IAAI;AAClC,gBAAI,QAAQ,KAAK,MAAM,OAAO,OAAQ,OAAM,IAAI,UAAU,QAAQ;AAClE,kBAAM,QAAQ,QAAQ,IAAI,CAAC,IAAI;AAC/B,kBAAM,OAAO,IAAI,KAAK;AACtB,iBAAK,UAAU,OAAO,IAAI;AAC1B,gBAAI,MAAM,SAAS,EAAG,MAAK,UAAU,OAAO,MAAM,SAAS,KAAK,GAAG,IAAI;AACvE,kBAAM,QAAQ,CAAC,GAAG,MAAM,KAAK,KAAK,UAAU,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC;AACjE,iBAAK,UAAU,OAAO,OAAO,QAAQ,IAAI;AAAA,UAC3C;AAAA,UACA,YAAY,CAAC,KAAa,MAAc;AACtC,gBAAI,IAAI,KAAK,IAAI,WAAY,OAAM,IAAI,UAAU,QAAQ;AACzD,kBAAM,OAAO,IAAI,KAAK;AACtB,kBAAM,SAAS,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAM,KAAK,UAAU,MAAM,IAAI,GAAG,IAAI,CAAC;AACpF,iBAAK,KAAK,MAAM;AAAA,cACd,MAAM,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,gBAAgB,QAAQ,EAAE,OAAO,EAAE,CAAC;AAAA,YACrE;AAAA,UACF;AAAA,UACA,eAAe,CAAC,KAAa,aAAqB,UAAkB;AAClE,gBAAI,CAAC,KAAK,QAAS,QAAO,EAAE;AAC5B,kBAAMC,SAAQ,KAAK,QAAQ,YAAY,KAAK,aAAa,KAAK;AAC9D,gBAAIA,WAAU,EAAE,WAAW,gBAAgB,QAAS,MAAK,SAAS,QAAQ,GAAG;AAC7E,mBAAOA;AAAA,UACT;AAAA,UACA,aAAa,CAAC,KAAa,IAAY,IAAY,QAAgB;AACjE,gBAAI,CAAC,KAAK,QAAS,QAAO,EAAE;AAC5B,gBAAI,QAAQ,eAAe,QAAQ,aAAa;AAC9C,mBAAK,SAAS,WAAW,QAAQ,cAAc,MAAM,IAAI,EAAE,MAAM,EAAE;AAAA,YACrE;AACA,mBAAO,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,UAAU;AACrD,kBAAI,QAAQ,EAAG;AACf,oBAAM,OAAO,IAAI,KAAK;AACtB,mBAAK,UAAU,KAAK,OAAO,IAAI;AAC/B,mBAAK,UAAU,MAAM,GAAG,OAAO,IAAI;AAAA,YACrC,CAAC;AAAA,UACH;AAAA,UACA,cAAc,CACZ,IACA,IACA,OACA,QACA,GACA,YAEA,KAAK,UACD,KAAK,WAAW,KAAK,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,QAAQ,GAAG,OAAO,CAAC,IACnE,EAAE;AAAA,UACR,oBAAoB,CAClB,IACA,IACA,MACA,QACA,KACA,SACA,YAEA,KAAK,UACD,KAAK;AAAA,YAAY,KAAK;AAAA,YAAS,CAAC,IAAI,EAAE;AAAA,YAAG;AAAA,YAAS,CAAC,UACjD,MAAM,MAAM,QAAQ,KAAK,SAAS,OAAO;AAAA,UAC3C,IACA,EAAE;AAAA,UACR,SAAS,CAAC,IAAY,KAAa,SAAiB,QAAgB;AAClE,kBAAM,OAAO,KAAK;AAClB,gBAAI,CAAC,KAAM,QAAO,EAAE;AACpB,gBAAI,KAAK,EAAE,UAAU,KAAK,GAAG,IAAI;AACjC,mBAAO,KAAK;AAAA,cACV;AAAA,cACA;AAAA,cACA,CAAC,QAAQ,KAAK,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,eAAe,KAAK,KAAK,KAAK,IAAI,CAAC;AAAA,cAC1E,CAAC,QAAQ,KAAK,IAAI,KAAK,EAAE,UAAU,KAAK,KAAK,IAAI;AAAA,cACjD,KAAK;AAAA,YACP;AAAA,UACF;AAAA,UACA,cAAc,CAAC,IAAY,KAAa,SAAiB,SAAiB;AACxE,kBAAM,OAAO,KAAK;AAClB,gBAAI,CAAC,KAAM,QAAO,EAAE;AACpB,gBAAI,OAAO;AACX,kBAAM,IAAI,KAAK;AAAA,cACb;AAAA,cACA;AAAA,cACA,CAAC,QAAQ,KAAK,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,eAAe,KAAK,KAAK,KAAK,IAAI,CAAC;AAAA,cAC1E,CAAC,QAAQ;AACP,uBAAO;AAAA,cACT;AAAA,cACA,KAAK;AAAA,YACP;AACA,gBAAI,MAAM,EAAE,QAAS,MAAK,aAAa,MAAM,MAAM,KAAK,GAAG;AAC3D,mBAAO;AAAA,UACT;AAAA,UACA,cAAc,CAAC,KAAa,SAC1B,KAAK,aAAa,MAAM,KAAK,KAAK,SAAS,OAAO,KAAK,KAAK,KAAK,IAAI,EAAE,UAAU,EAAE;AAAA,UACrF,qBAAqB,CAAC,QAAgB;AACpC,kBAAM,OAAO,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,gBAAgB,CAAC;AACvD,gBAAI,KAAK,EAAE,aAAa,KAAK,OAAO,SAAS,IAAI,MAAM,CAAC,GAAG,IAAI;AAC/D,mBAAO,EAAE;AAAA,UACX;AAAA,UACA,gBAAgB,CAAC,QAAgB;AAC/B,gBAAI,CAAC,KAAK,QAAS,QAAO,EAAE;AAC5B,gBAAI,KAAK,EAAE,aAAa,KAAK,OAAO,KAAK,QAAQ,QAAQ,CAAC,GAAG,IAAI;AACjE,mBAAO,EAAE;AAAA,UACX;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEQ,KAAK,OAAe,QAAgB,GAAW,SAAiB,SAAS,MAAc;AAC7F,cAAM,MAAM,KAAK,SAAS,OAAO;AACjC,YAAI;AACF,iBAAO;AAAA,YACL;AAAA,cACE,KAAK,KAAK;AAAA,cACV,KAAK,KAAK;AAAA,cACV,QAAQ,KAAK,EAAE;AAAA,cACf,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE;AAAA,cACxB,gBAAgB,KAAK;AAAA,cACrB,SAAS,KAAK;AAAA,cACd,GAAI,SAAS,EAAE,SAAS,MAAM,KAAK,YAAY,GAAG,EAAE,IAAI,CAAC;AAAA,YAC3D;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF,UAAE;AACA,eAAK,EAAE,GAAG,aAAa;AAAA,QACzB;AAAA,MACF;AAAA,MAEQ,YAAY,KAAsB;AACxC,aAAK,cAAc;AACnB,gBAAQ,KAAK,SAAS,OAAO,OAAO;AAAA,MACtC;AAAA,MAEQ,WACN,MACA,KACA,CAAC,OAAO,QAAQ,GAAG,OAAO,GAClB;AACR,cAAM,MAAM,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACpC,YAAI;AACF,eAAK,IAAI,KAAK,EAAE,UAAU,SAAS,GAAG,IAAI;AAC1C,cAAI,KAAK,iBAAiB,EAAG,QAAO,EAAE;AACtC,eAAK,YAAY,IAAI;AACrB,cAAI,IAAI,EAAG,QAAO,KAAK,KAAK,OAAO,QAAQ,GAAG,SAAS,KAAK;AAC5D,iBAAO,KAAK,UAAU,EAAE,OAAO,KAAK,QAAQ;AAAA,QAC9C,UAAE;AACA,eAAK,iBAAiB;AACtB,eAAK,QAAQ,GAAG;AAAA,QAClB;AAAA,MACF;AAAA,MAEQ;AAAA,MAEA,YAAY,MAAyB;AAC3C,YAAI,KAAK,YAAY,KAAK,iBAAiB,CAAC,KAAK,YAAY,OAAO,EAAG,MAAK,UAAU;AAAA,MACxF;AAAA,MAEQ,YACN,MACA,KACA,SACAF,OACQ;AACR,cAAM,MAAM,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACpC,YAAI;AACF,eAAK,IAAI,KAAK,EAAE,UAAU,SAAS,GAAG,IAAI;AAC1C,cAAI,KAAK,iBAAiB,EAAG,QAAO,EAAE;AACtC,eAAK,YAAY,IAAI;AACrB,eAAK,cAAc,kBAAkB,IAAI,EAAE;AAC3C,iBAAOA,MAAK,KAAK,SAAS,KAAK,EAAE;AAAA,QACnC,UAAE;AACA,eAAK,iBAAiB;AACtB,eAAK,QAAQ,GAAG;AAAA,QAClB;AAAA,MACF;AAAA,MAEQ,UAAkB;AACxB,mBAAS;AACP,cAAI;AACF,iBAAK,EAAE,OAAO,KAAK,EAAE,IAAI,aAAa,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,WAAW,GAAG,CAAC;AAAA,UAC5E,SAAS,GAAG;AACV,gBAAK,EAAyB,SAAS,QAAS,QAAO,EAAE;AACzD,kBAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,MAEA,UAAwC;AACtC,aAAK,UAAU,KAAK;AAAA,UAClB,GAAG,KAAK,eAAe;AAAA,UACvB,GAAG,KAAK,UAAU;AAAA,UAClB,GAAG,KAAK,YAAY;AAAA,UACpB,GAAG,KAAK,YAAY;AAAA,UACpB,GAAG,KAAK,cAAc;AAAA,UACtB,aAAa,CAAC,OAAe,QAAgB,GAAW,YACtD,KAAK,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,QACvC,CAAC;AACD,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,IAAI,IAAoB;AACtB,YAAI,OAAO,MAAM,SAAU,QAAO,OAAO,KAAK,IAAI,CAAC,IAAIT;AAEvD,YAAI,OAAO,MAAM,WAAW;AAC1B,iBAAO,iBAAiB,OAAO,KAAK,MAAM,YAAY,IAAI,IAAI,GAAG,CAAC;AAAA,QACpE;AACA,gBAAQ,cAAc,KAAK,OAAO,KAAK,OAAO,YAAY,IAAI,IAAI,KAAK,WAAW,GAAG,CAAC,KAAK;AAAA,MAC7F;AAAA,MAEQ,UAAoB;AAC1B,YAAI,KAAK,EAAE,KAAM,QAAO,OAAO,QAAQ,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE;AAC9E,cAAMY,UAAS,KAAK,UAAU,SAAS,IAAI,EAAE,kBAAkB,KAAK,UAAU,KAAK,GAAG,EAAE,IAAI,CAAC;AAC7F,cAAM,MAAM,EAAE,KAAK,KAAK,KAAK,GAAG,KAAK,EAAE,KAAK,GAAGA,QAAO;AACtD,eAAO,OAAO,QAAQ,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE;AAAA,MACxD;AAAA,MAEQ,iBAA+C;AACrD,cAAM,EAAE,IAAI,IAAI;AAChB,eAAO;AAAA,UACL,UAAU,CAAC,MAAc,QAAgB,KAAK,IAAI,WAAW,KAAK,EAAE,MAAM,MAAM,GAAG;AAAA,UACnF,gBAAgB,CAAC,GAAW,SAAiB,KAAK,IAAI,SAAS,KAAK,EAAE,MAAM,GAAG,IAAI;AAAA,UACnF,aAAa,CAAC,MAAc,QAAgB,KAAK,IAAI,WAAW,KAAK,QAAQ,GAAG,MAAM,GAAG;AAAA,UACzF,mBAAmB,CAAC,GAAW,SAAiB,KAAK,IAAI,SAAS,KAAK,QAAQ,GAAG,GAAG,IAAI;AAAA,UACzF,eAAe,CAAC,KAAa,QAAgB,KAAK,IAAI,KAAK,EAAE,aAAa,KAAK,OAAO,IAAI;AAAA,UAC1F,gBAAgB,CAAC,IAAY,YAAoB,QAC/C,KAAK,IAAI,KAAK,EAAE,aAAa,KAAK,KAAK,IAAI,EAAE,GAAG,IAAI;AAAA,UACtD,YAAY,CAAC,KAAa,QAAgB;AACxC,qBAAS,KAAK,GAAG,KAAK,KAAK,MAAM,OAAO;AACtC,oBAAM,QAAQ,IAAI,WAAW,KAAK,IAAI,OAAO,MAAM,EAAE,CAAC;AACtD,qBAAO,gBAAgB,KAAK;AAC5B,kBAAI,MAAM,MAAM,IAAI,MAAM,MAAM,EAAE,IAAI,KAAK;AAAA,YAC7C;AAAA,UACF;AAAA,UACA,aAAa,MAAM,EAAE;AAAA,UACrB,WAAW,CAACT,UAAiB;AAC3B,kBAAM,IAAI,SAASA,KAAI;AAAA,UACzB;AAAA,UACA,YAAY,CAAC,QAAgB;AAC3B,kBAAM,QAAQ,qBAAqB,GAAG;AACtC,gBAAI,UAAU,OAAW,OAAM,IAAI,UAAU,QAAQ;AACrD,gBAAI,KAAK,UAAU,KAAK,EAAG;AAC3B,iBAAK,EAAE,OAAO,KAAK,EAAE,IAAI,aAAa,KAAK,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;AAAA,UACrE;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,YAA0C;AAChD,cAAM,EAAE,KAAK,IAAI,IAAI;AACrB,eAAO;AAAA,UACL,UAAU,CAAC,IAAY,MAAc,GAAW,QAC9C,KAAK,IAAI,KAAK,EAAE,UAAU,KAAK,KAAK,MAAM,IAAI,IAAI,OAAO,MAAM,CAAC,CAAC,GAAG,IAAI;AAAA,UAC1E,SAAS,CAAC,IAAY,MAAc,GAAW,QAAgB;AAC7D,kBAAM,OAAO,KAAK,KAAK,IAAI,IAAI,SAAS,MAAM,CAAC,CAAC;AAChD,gBAAI,KAAK,EAAE,UAAU,KAAK,IAAI,QAAQ,MAAM,GAAG,IAAI,GAAG,IAAI;AAAA,UAC5D;AAAA,UACA,UAAU,CAAC,IAAY,MAAc,GAAW,IAAY,QAAgB;AAC1E,kBAAM,OAAO,KAAK,WAAW,IAAI,MAAM,EAAE,MAAM,IAAI,SAAS,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;AAChF,gBAAI,KAAK,EAAE,UAAU,KAAK,IAAI,QAAQ,MAAM,GAAG,IAAI,GAAG,IAAI;AAAA,UAC5D;AAAA,UACA,WAAW,CAAC,IAAY,MAAc,GAAW,IAAY,QAC3D,KAAK,IACF,KAAK,EACL;AAAA,YACC;AAAA,YACA,KAAK,WAAW,IAAI,OAAO,EAAE,OAAO,IAAI,OAAO,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;AAAA,YACnE;AAAA,UACF;AAAA,UACJ,SAAS,CAAC,IAAY,QAAgB,QAAgB,QACpD,KAAK,IAAI,KAAK,EAAE,aAAa,KAAK,OAAO,KAAK,KAAK,IAAI,OAAO,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;AAAA,UACvF,SAAS,CAAC,IAAY,QACpB,KAAK,IAAI,KAAK,EAAE,aAAa,KAAK,OAAO,KAAK,KAAK,IAAI,GAAG,OAAO,GAAG,CAAC,GAAG,IAAI;AAAA,UAC9E,UAAU,CAAC,OAAe,KAAK,IAAI,MAAM,EAAE;AAAA,UAC3C,aAAa,CAAC,MAAc,OAAe,KAAK,IAAI,SAAS,MAAM,EAAE;AAAA,UACrE,SAAS,CAAC,OAAe,KAAK,KAAK,KAAK,EAAE;AAAA,UAC1C,aAAa,CAAC,OAAe,KAAK,KAAK,KAAK,EAAE;AAAA,UAC9C,WAAW,CAAC,OAAe,KAAK,IAAI,IAAI,EAAE;AAAA,UAC1C,aAAa,CAAC,IAAY,QAAgB,QAAgB;AACxD,kBAAM,OAAO,KAAK,WAAW,IAAI,OAAO;AACxC,kBAAM,MAAM,OAAO,SAAS,GAAG;AAC/B,gBAAI,MAAM,KAAK,KAAK,EAAG,MAAK,SAAS,GAAG;AAAA,UAC1C;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,cAA4C;AAClD,cAAM,EAAE,KAAK,IAAI,IAAI;AACrB,eAAO;AAAA,UACL,eAAe,CAAC,IAAY,QAAgB,KAAK,KAAK,OAAO,IAAI,GAAG;AAAA,UACpE,qBAAqB,CAAC,IAAY,UAChC,KAAK,IAAI,SAAS,KAAK,QAAQ,QAAQ,cAAc,IAAI,QAAQ,QAAQ,YAAY,CAAC;AAAA,UACxF,sBAAsB,CAAC,OAAe,KAAK,IAAI,IAAI,EAAE;AAAA,UACrD,iBAAiB,CAAC,IAAY,QAC5B,KAAK,KAAK,cAAc,KAAK,KAAK,WAAW,EAAE,CAAC;AAAA,UAClD,sBAAsB,CAAC,IAAY,SACjC,KAAK,KAAK,WAAW,IAAI,OAAO,EAAE,SAAS,OAAO,IAAI,CAAC;AAAA,UACzD,uBAAuB,CAAC,IAAY,MAAc,MAAc,UAAkB;AAChF,kBAAM,IAAI,IAAI,IAAI,EAAE;AACpB,gBAAI,EAAE,SAAS,QAAQ;AACrB,gBAAE,KAAK,MAAM;AACb,mBAAK,SAAS,EAAE,KAAK,MAAM,MAAM,MAAM,KAAK;AAAA,YAC9C,WAAW,EAAE,SAAS,MAAO,MAAK,SAAS,EAAE,MAAM,MAAM,MAAM,KAAK;AAAA,UACtE;AAAA,UACA,gBAAgB,CAAC,IAAY,QAAgB;AAC3C,kBAAMD,QAAO,IAAI,YAAY,EAAE,OAAO,IAAI,QAAQ,EAAE,EAAE,OAAO;AAC7D,gBAAI,KAAK,EAAE,SAAS,KAAK,eAAe;AACxC,gBAAI,KAAK,EAAE,UAAU,MAAM,GAAGA,MAAK,QAAQ,IAAI;AAAA,UACjD;AAAA,UACA,qBAAqB,CAAC,IAAY,KAAa,QAAgB;AAC7D,kBAAMA,QAAO,IAAI,YAAY,EAAE,OAAO,IAAI,QAAQ,EAAE,EAAE,OAAO;AAC7D,gBAAI,MAAM,KAAK,KAAK,IAAI,KAAKA,MAAK,MAAM,CAAC,EAAE,IAAIA,MAAK,SAAS,GAAG,GAAG,CAAC;AAAA,UACtE;AAAA,UACA,YAAY,CAAC,IAAY,KAAa,KAAa,QAAgB,SACjE,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,MAAM,GAAG,IAAI;AAAA,QACxD;AAAA,MACF;AAAA,MAEQ,cAA4C;AAClD,cAAM,EAAE,KAAK,KAAK,EAAE,IAAI;AACxB,cAAM,KAAK,CAAC,OAAe,GAAW,MAAc,IAAI,QAAQ,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC;AACvF,eAAO;AAAA,UACL,WAAW,CACT,OACAM,SACA,GACA,GACA,QACA,QACA,aACA,SACA,QACG;AACH,kBAAMD,WAAUC,UAAS,2BAA2B;AACpD,gBAAI;AACF,oBAAM,QAAQ,GAAG,OAAO,GAAG,CAAC;AAC5B,oBAAM,QAAQ,KAAK,QAAQ,KAAK;AAChC,kBAAI,SAAS,CAAC,MAAM,MAAO,MAAK,OAAO,MAAM,EAAE;AAC/C,oBAAM,OAAO,SAAS,CAAC,MAAM,QAAQ,WAAW,MAAM,EAAE,KAAK;AAC7D,kBAAI,SAAS,IAAI,EAAG,MAAK,cAAc;AACvC,kBACG,KAAK,EACL,UAAU,KAAK,IAAI,KAAK,MAAM,QAAQ,QAAQ,SAAS,QAAW,CAACD,OAAM,GAAG,IAAI;AACnF,kBAAI,IAAI,QAAS,MAAK,QAAQ,MAAM,GAAK;AAAA,YAC3C,SAAS,KAAK;AACZ,kBAAK,IAA0B,SAAS,SAAU,OAAM;AACxD,oBAAM,MAAM,IAAI,OAAO,GAAG,CAAC;AAC3B,oBAAMM,UAAS,IAAI,WAAW,GAAG,IAAI,MAAM,GAAG,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,GAAG;AACxE,oBAAMC,YAAW,KAAK,cAAcD,SAAQN,OAAM;AAClD,kBAAI,CAACO,UAAU,OAAM;AACrB,kBACG,KAAK,EACL,UAAU,KAAK,IAAI,KAAKA,WAAU,QAAQ,QAAQ,SAAS,QAAW,CAACP,OAAM,GAAG,IAAI;AAAA,YACzF;AAAA,UACF;AAAA,UACA,mBAAmB,CAAC,OAAeC,SAAgB,GAAW,GAAW,QAAgB;AACvF,gBAAI;AACF,mBAAK,cAAc,KAAK,KAAK,aAAa,GAAG,OAAO,GAAG,CAAC,GAAGA,OAAM,CAAC;AAAA,YACpE,SAAS,KAAK;AACZ,kBAAK,IAA0B,SAAS,SAAU,OAAM;AACxD,oBAAM,MAAM,IAAI,OAAO,GAAG,CAAC;AAC3B,oBAAMK,UAAS,IAAI,WAAW,GAAG,IAAI,MAAM,GAAG,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,GAAG;AACxE,oBAAMC,YAAW,KAAK,cAAcD,UAASL,UAAS,2BAA2B,CAAC;AAClF,kBAAI,CAACM,UAAU,OAAM;AACrB,mBAAK,cAAc,KAAK,KAAK,aAAaA,WAAUN,OAAM,CAAC;AAAA,YAC7D;AAAA,UACF;AAAA,UACA,yBAAyB,CACvB,OACAA,SACA,GACA,GACA,MACA,MACA,UACG;AACH,kBAAM,OAAO,GAAG,OAAO,GAAG,CAAC;AAC3B,gBAAI,UAAU,IAAI;AAClB,iBAAK,SAAS,MAAM,MAAM,MAAM,QAAQA,UAAS,2BAA2B,CAAC;AAAA,UAC/E;AAAA,UACA,uBAAuB,CAAC,OAAe,GAAW,MAAc;AAC9D,kBAAM,OAAO,GAAG,OAAO,GAAG,CAAC;AAC3B,gBAAI,EAAE,GAAG,OAAO,IAAI,EAAG,OAAM,IAAI,UAAU,QAAQ;AACnD,cAAE,GAAG,MAAM,IAAI;AACf,iBAAK,QAAQ,MAAM,GAAK;AAAA,UAC1B;AAAA,UACA,uBAAuB,CAAC,OAAe,GAAW,MAChD,KAAK,EAAE,GAAG,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;AAAA,UACjC,kBAAkB,CAAC,OAAe,GAAW,MAAc;AACzD,kBAAM,OAAO,GAAG,OAAO,GAAG,CAAC;AAC3B,gBAAI,UAAU,IAAI,EAAG,QAAO,KAAK,EAAE,GAAG,OAAO,IAAI;AACjD,kBAAM,KAAK,EAAE,GAAG,MAAM,IAAI;AAC1B,gBAAI,GAAG,YAAa,OAAM,IAAI,UAAU,QAAQ;AAChD,kBAAM,SAAS,SAAS,EAAE;AAC1B,gBAAI,UAAU,MAAM,MAAM;AAC1B,cAAE,GAAG,OAAO,IAAI;AAChB,gBAAI,SAAS,MAAM,MAAM;AAAA,UAC3B;AAAA,UACA,aAAa,CAAC,IAAY,GAAW,GAAW,KAAa,IAAY,OAAe;AACtF,kBAAM,OAAO,GAAG,IAAI,GAAG,CAAC;AACxB,kBAAM,KAAK,GAAG,KAAK,IAAI,EAAE;AACzB,gBAAI,UAAU,IAAI;AAClB,kBAAM,WAAW,IAAI,WAAW,EAAE,IAAI,gBAAgB,EAAE,IAAI,EAAE,IAAI;AAClE,gBAAI,aAAa,OAAW,KAAI,UAAU,EAAE;AAC5C,kBAAM,MAAM,EAAE,GAAG,OAAO,MAAM,EAAE;AAChC,gBAAI,QAAQ,MAAM,IAAI,QAAQ;AAC9B,gBAAI,UAAU,OAAO,QAAQ,WAAW,MAAM,MAAS;AAAA,UACzD;AAAA,UACA,cAAc,CAAC,IAAY,IAAY,OAAe,GAAW,MAAc;AAC7E,kBAAM,OAAO,GAAG,OAAO,GAAG,CAAC;AAC3B,gBAAI,OAAO,EAAG,OAAM,IAAI,UAAU,QAAQ;AAC1C,cAAE,GAAG,QAAQ,IAAI,OAAO,IAAI,EAAE,GAAG,IAAI;AAAA,UACvC;AAAA,UACA,eAAe,CACb,OACA,GACA,GACA,KACA,KACA,SACG;AACH,kBAAM,OAAO,GAAG,OAAO,GAAG,CAAC;AAC3B,kBAAM,QAAQ,KAAK,QAAQ,IAAI;AAC/B,kBAAM,SAAS,IAAI,YAAY,EAAE,OAAO,QAAQ,KAAK,SAAS,KAAK,IAAI,EAAE,GAAG,SAAS,IAAI,CAAC;AAC1F,kBAAM,IAAI,KAAK,IAAI,KAAK,OAAO,MAAM;AACrC,gBAAI,MAAM,KAAK,CAAC,EAAE,IAAI,OAAO,SAAS,GAAG,CAAC,CAAC;AAC3C,gBAAI,KAAK,EAAE,UAAU,MAAM,GAAG,IAAI;AAAA,UACpC;AAAA,UAEA,WAAW,CACT,IACAA,SACA,GACA,GACA,KACA,IACA,OACG;AACH,kBAAM,OAAO,GAAG,IAAI,GAAG,CAAC;AACxB,kBAAM,KAAK,GAAG,KAAK,IAAI,EAAE;AACzB,kBAAMD,WAAUC,UAAS,2BAA2B;AACpD,kBAAM,SAASD,UAAS,aAAa,EAAE,IAAI,IAAI,IAAI;AACnD,gBAAI,UAAU,IAAI;AAClB,gBAAI,WAAW,KAAM,KAAI,UAAU,MAAM;AACzC,cAAE,GAAG,KAAK,MAAM,IAAIA,OAAM;AAC1B,gBAAI,OAAO,MAAM,EAAE;AACnB,gBAAI,WAAW,KAAM,KAAI,OAAO,QAAQ,EAAE;AAAA,UAC5C;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,OAAO,IAAoD;AACjE,cAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,YAAI,EAAE,SAAS,YAAY,KAAK,IAAI,KAAK,IAAI,CAAC,MAAM,SAAU,OAAM,IAAI,UAAU,UAAU;AAC5F,eAAO;AAAA,MACT;AAAA,MAEQ,gBAA8C;AACpD,cAAM,EAAE,KAAK,KAAK,EAAE,IAAI;AACxB,eAAO;AAAA,UACL,aAAa,CAAC,IAAY,OAAe,QAAgB;AACvD,kBAAM,WAAW,KAAK,OAAO,EAAE;AAC/B,kBAAM,IAAI,EAAE,OAAO,KAAK,EAAE,IAAI,eAAe,IAAI,UAAU,SAAS,SAAS,CAAC;AAG9E,gBAAI,MAAM,EAAE,IAAI,WAAW,QAAQ,QAAQ,cAAc,CAAC;AAC1D,gBAAI,KAAK,EAAE,UAAU,KAAK,EAAE,IAAI,IAAI;AAAA,UACtC;AAAA,UACA,WAAW,CACT,IACA,MACA,GACA,SACA,QACA,aACG;AACH,kBAAM,IAAI,KAAK,OAAO,EAAE;AACxB,gBAAI,KAAK,IAAI,SAAS,IAAI,CAAC,GAAG;AAC5B,qBAAO,cAAc,IAAI,EAAE;AAAA,gBACzB;AAAA,gBACA,EAAE;AAAA,gBACF;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,YACF;AACA,kBAAM,QAAQ,UAAU,QAAQ,UAAU;AAC1C,kBAAM,OAAO,IAAI,SAAS,MAAM,CAAC;AACjC,kBAAM,QACH,UAAU,QAAQ,aAAa,KAAK,CAAC,OAClC,KAAK,QAAQ,IAAI,MAAM,EAAE,QAAQ,IACjC,EAAE,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,QAAQ,GAAG,EAAE,UAAU,EAAE,UAAU,KAAK,CAAC;AACpF,gBAAI,KAAK,EAAE,UAAU,QAAQ,IAAI,QAAQ,MAAM,GAAG,IAAI,GAAG,IAAI;AAC7D,gBAAI,KAAK,EAAE,UAAU,UAAU,GAAG,IAAI;AAAA,UACxC;AAAA,UAEA,WAAW,CAAC,IAAY,MAAc,GAAW,QAAgB,QAAgB;AAC/E,kBAAM,IAAI,KAAK,OAAO,EAAE;AACxB,kBAAM,OAAO,EAAE,OAAO,IAAI,MAAM,IAAI,IAAI,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC;AACjF,gBAAI,KAAK,EAAE,UAAU,KAAK,MAAM,IAAI;AAAA,UACtC;AAAA,UACA,eAAe,CAAC,IAAY,QAAgB;AAC1C,iBAAK,OAAO,EAAE;AACd,kBAAM,OAAO,QAAQ,KAAK,QAAQ;AAClC,gBAAI,QAAQ,MAAM,MAAM,CAAC,UAAU,EAAG,OAAM,IAAI,UAAU,QAAQ;AAElE,cAAE,OAAO,KAAK;AAAA,cACZ,IAAI;AAAA,cACJ;AAAA,cACA,KAAK,QAAQ,OAAO,IAAI,QAAQ,QAAQ,KAAK,IAAI;AAAA,YACnD,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,QAAQ,IAAY,MAAc,UAA+B;AACvE,cAAM,SAAuB,CAAC;AAC9B,YAAI,MAAM;AACV,eAAO,MAAM,MAAM;AACjB,cAAI;AACJ,cAAI;AACF,oBAAQ,KAAK,EAAE,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,OAAO,KAAK,QAAQ,GAAG,EAAE,SAAS,CAAC;AAAA,UACjF,SAAS,KAAK;AACZ,gBAAI,QAAQ,EAAG,OAAM;AACrB;AAAA,UACF;AACA,cAAI,MAAM,WAAW,EAAG;AACxB,iBAAO,KAAK,KAAK;AACjB,iBAAO,MAAM;AAAA,QACf;AACA,cAAM,MAAM,IAAI,WAAW,GAAG;AAC9B,YAAI,KAAK;AACT,mBAAW,SAAS,QAAQ;AAC1B,cAAI,IAAI,OAAO,EAAE;AACjB,gBAAM,MAAM;AAAA,QACd;AACA,eAAO;AAAA,MACT;AAAA,MAEQ,KAAK,IAAY,QAA2B;AAClD,cAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,YAAI,EAAE,SAAS,QAAQ;AACrB,gBAAM,IAAI,UAAU,EAAE,SAAS,QAAQ,WAAW,EAAE,SAAS,WAAW,WAAW,QAAQ;AAAA,QAC7F;AACA,YAAK,WAAW,UAAU,CAAC,EAAE,KAAK,YAAc,WAAW,WAAW,CAAC,EAAE,KAAK,UAAW;AACvF,gBAAM,IAAI,UAAU,OAAO;AAAA,QAC7B;AACA,eAAO,EAAE;AAAA,MACX;AAAA,MAEQ,WAAW,IAAY,QAAuC;AACpE,cAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,cAAM,OAAO,EAAE,SAAS,WAAW,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AAC5D,YAAI,SAAS,SAAU,MAAK,cAAc;AAC1C,YAAI,SAAS,UAAU,EAAE,SAAS,SAAU,QAAO,KAAK,KAAK,IAAI,MAAM;AACvE,cAAM,SAAS,KAAK,EAAE;AACtB,eAAO;AAAA,UACL,OAAO,CAAC,KAAK,OAAO;AAClB,gBAAI,CAAC,OAAO,IAAI,MAAO,OAAM,IAAI,UAAU,QAAQ;AACnD,mBAAO,OAAO,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,QAAQ,GAAG,EAAE;AAAA,UACzD;AAAA,UACA,QAAQ,CAAC,MAAM,OACb,KAAK,QAAQ,IAAI,GAAG,OAAO,KAAK,EAAE,IAAI,aAAa,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAW;AAAA,UACtF,MAAM,MAAM,KAAK,WAAW,EAAE,EAAE;AAAA,UAChC,UAAU,CAAC,SAAS,KAAK,QAAQ,IAAI,GAAG,KAAK,OAAO,KAAK,EAAE,IAAI,aAAa,IAAI,KAAK,CAAC,CAAC;AAAA,QACzF;AAAA,MACF;AAAA,MAEiB,UAAU,oBAAI,QAAgB;AAAA,MAEvC,QAAW,IAAY,GAAoC,QAAc;AAC/E,YAAI,EAAE,SAAS,UAAa,CAAC,KAAK,QAAQ,IAAI,CAAC,EAAG,MAAK,UAAU,IAAI,CAAC;AACtE,aAAK,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,GAAG;AACjC,eAAO;AAAA,MACT;AAAA,MAEQ,UAAU,IAAY,GAA0C;AACtE,aAAK,QAAQ,IAAI,CAAC;AAClB,YAAI;AACJ,YAAI;AACF,gBAAM,KAAK,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,eAAe,IAAI,UAAU,KAAK,CAAC;AAKvE,iBAAO,GAAG,SAAS,SAAY,GAAG;AAClC,cAAI,SAAS,OAAW,GAAE,MAAM,GAAG,OAAO,KAAK,EAAE,GAAG,KAAK,IAAI,EAAE;AAAA,QACjE,QAAQ;AACN;AAAA,QACF;AACA,UAAE,OAAO;AAAA,MACX;AAAA,MAEQ,WAAW,IAAwB;AACzC,cAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,YAAI,EAAE,SAAS,QAAQ;AACrB,gBAAM,EAAE,KAAK,IAAI;AACjB,iBAAO;AAAA,YACL,QAAQ,EAAE,MAAM,KAAK,KAAK;AAAA,YAC1B,MAAM,KAAK;AAAA,YACX,UAAU,KAAK;AAAA,YACf,UAAU,KAAK;AAAA,YACf,QAAQ,MAAM,KAAK;AAAA,YACnB,MAAM,MAAM,KAAK,KAAK;AAAA,UACxB;AAAA,QACF;AACA,YAAI,EAAE,SAAS,SAAU,OAAM,IAAI,UAAU,OAAO;AACpD,YAAI,KAAK,IAAI,KAAK,IAAI,CAAC,MAAM,OAAQ,QAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,MAAM,GAAG,MAAM,MAAM,EAAE;AAC7F,eAAO;AAAA,UACL,QAAQ,EAAE,GAAG;AAAA,UACb,QAAQ,MAAM,KAAK,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,OAAO,GAAG;AAAA,UACtD,MAAM,MAAM,KAAK,WAAW,EAAE,EAAE;AAAA,QAClC;AAAA,MACF;AAAA,MAEQ,WAAW,IAA4D;AAC7E,eAAO,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,eAAe,GAAG,CAAC;AAAA,MAKrD;AAAA,MAEQ,MAAM,IAAY,MAA0B;AAClD,YAAI,KAAK,QAAQ,IAAI,IAAI,EAAG,QAAO,KAAK;AACxC,cAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,YAAI,EAAE,SAAS,UAAU;AACvB,cAAI;AACF,kBAAM,IAAI,KAAK,EAAE,OAAO,IAAI,MAAM,IAAI,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC;AACpE,mBAAO,KAAK,IAAI,KAAK,IAAI,CAAC,MAAM,SAAS,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI;AAAA,UACpE,SAAS,KAAK;AACZ,kBAAM,SAAU,IAA0B,SAAS;AACnD,gBAAI,UAAU,KAAK,IAAI,KAAK,IAAI,CAAC,MAAM,SAAU,MAAK,WAAW;AACjE,kBAAM;AAAA,UACR;AAAA,QACF;AACA,YAAI,EAAE,SAAS,UAAU;AACvB,eAAK,cAAc;AACnB,cAAI,EAAE,WAAW,OAAQ,OAAM,IAAI,UAAU,OAAO;AACpD,cAAI,EAAE,WAAW,UAAU,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,QAAQ;AACxE,iBAAO,KAAK;AAAA,QACd;AACA,eAAO,KAAK,KAAK,IAAI,OAAO,EAAE,MAAM,IAAI;AAAA,MAC1C;AAAA,MAEQ,aAAmB;AACzB,YAAI;AACJ,YAAI;AACF,mBAAS,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,kBAAkB,KAAK,IAAI,MAAM,KAAK,KAAK,CAAC;AAAA,QAChF,QAAQ;AACN,mBAAS;AAAA,QACX;AACA,YAAI,WAAW,SAAU;AACzB,YAAI,WAAW,eAAe,CAAC,KAAK,SAAS,OAAO,IAAI,IAAI,EAAG,OAAM,IAAI,SAAS,YAAY;AAC9F,aAAK,EAAE,OAAO,KAAK,EAAE,IAAI,eAAe,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC;AAAA,MACxE;AAAA,MAEQ,KAAK,IAAY,KAAyB;AAChD,cAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,YAAI,EAAE,SAAS,UAAU;AACvB,iBAAO,KAAK,EAAE,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC;AAAA,QACrF;AACA,YAAI,EAAE,SAAS,UAAU;AACvB,eAAK,cAAc;AACnB,cAAI,EAAE,WAAW,QAAS,OAAM,IAAI,UAAU,OAAO;AACrD,cAAI,EAAE,WAAW,OAAQ,QAAO,IAAI,WAAW,CAAC;AAChD,gBAAM,MAAM,IAAI,WAAW,KAAK,IAAI,KAAK,KAAK,CAAC;AAC/C,iBAAO,EAAE,WAAW,YAAY,OAAO,gBAAgB,GAAG,IAAI;AAAA,QAChE;AACA,eAAO,KAAK,KAAK,IAAI,MAAM,EAAE,KAAK,GAAG;AAAA,MACvC;AAAA,MAEQ,MAASQ,SAAc;AAC7B,aAAK,cAAc;AACnB,eAAOA;AAAA,MACT;AAAA,MAEQ,KAAK,IAAY,QAAgB,QAAwB;AAC/D,cAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,YAAI,EAAE,SAAS,UAAU;AACvB,gBAAM,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;AAChC,cAAI,SAAS,SAAU,QAAO,KAAK,MAAM,CAAC;AAC1C,cAAI,SAAS,OAAQ,OAAM,IAAI,UAAU,QAAQ;AACjD,iBAAO,KAAK,EAAE,OAAO,IAAI,KAAK,IAAI,QAAQ,MAAM;AAAA,QAClD;AACA,YAAI,EAAE,SAAS,SAAU,QAAO,KAAK,MAAM,CAAC;AAC5C,cAAM,OAAO,KAAK,KAAK,EAAE;AACzB,cAAM,OAAO,WAAW,OAAO,MAAM,IAAI,WAAW,OAAO,MAAM,KAAK,SAAS,KAAK,KAAK;AACzF,YAAI,SAAS,OAAO,OAAO,OAAO,SAAS,EAAG,OAAM,IAAI,UAAU,QAAQ;AAC1E,aAAK,SAAS,OAAO;AACrB,eAAO,KAAK;AAAA,MACd;AAAA,MAEQ,KAAK,IAAkB;AAC7B,cAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,YAAI,EAAE,SAAS,OAAQ,GAAE,KAAK,MAAM;AAAA,iBAC3B,EAAE,SAAS,SAAU,MAAK,cAAc;AAAA,iBACxC,EAAE,SAAS,UAAU;AAC5B,gBAAM,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;AAChC,cAAI,SAAS,OAAQ,MAAK,EAAE,OAAO,IAAI,MAAM,EAAE;AAAA,mBACtC,SAAS,SAAU,MAAK,cAAc;AAAA,QACjD;AAAA,MACF;AAAA,MAEQ,OAAO,IAAY,KAAmB;AAC5C,cAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,YAAI,EAAE,SAAS,SAAU,MAAK,cAAc;AAC5C,YAAI,WAAmB,SAAS;AAChC,YAAI,QAAQ;AACZ,YAAI,QAAQ;AACZ,YAAI,EAAE,SAAS,UAAU;AACvB,gBAAM,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;AAChC,cAAI,SAAS,SAAU,MAAK,cAAc;AAC1C,WAAC,EAAE,UAAU,MAAM,IAAI,eAAe,KAAK,IAAI,SAAS,IAAI,CAAC,IAAI,UAAU,IAAI;AAC/E,cAAI,EAAE,SAAU,UAAS,QAAQ;AACjC,cAAI,EAAE,OAAQ,UAAS,QAAQ;AAAA,QACjC,WAAW,EAAE,SAAS,QAAQ;AAC5B,qBAAW,SAAS;AACpB,cAAI,EAAE,KAAK,OAAQ,UAAS,QAAQ;AAAA,QACtC,WAAW,EAAE,SAAS,MAAO,YAAW,SAAS;AACjD,cAAM,IAAI,KAAK,IAAI,KAAK;AACxB,UAAE,SAAS,KAAK,QAAQ;AACxB,UAAE,UAAU,MAAM,GAAG,OAAO,IAAI;AAEhC,YAAI,SAAS,QAAQ,OAAO,MAAM,OAAO,MAAM,EAAE,OAAO,UAAU,OAAO;AACzE,YAAI,EAAE,SAAS,UAAU;AACvB,gBAAM,SAAS,KAAK,EAAE,OAAO,IAAI,SAAS,EAAE;AAC5C,cAAI,WAAW,OAAQ,WAAU,CAAC,OAAO;AAAA,mBAChC,WAAW,QAAS,WAAU,CAAC,OAAO;AAAA,QACjD;AACA,UAAE,aAAa,MAAM,GAAG,QAAQ,IAAI;AACpC,UAAE,aAAa,MAAM,IAAI,OAAO,KAAK,IAAI;AAAA,MAC3C;AAAA,MAEQ,cAAc,KAAa,GAAmB;AACpD,cAAM,IAAI,KAAK,IAAI,KAAK;AACxB,UAAE,aAAa,KAAK,IAAI,IAAI;AAC5B,UAAE,aAAa,MAAM,GAAG,EAAE,KAAK,IAAI;AACnC,UAAE,SAAS,MAAM,IAAI,EAAE,QAAQ;AAC/B,UAAE,aAAa,MAAM,IAAI,EAAE,SAAS,IAAI,IAAI;AAC5C,UAAE,aAAa,MAAM,IAAI,EAAE,MAAM,IAAI;AACrC,UAAE,aAAa,MAAM,IAAI,EAAE,SAAS,IAAI;AACxC,UAAE,aAAa,MAAM,IAAI,EAAE,SAAS,IAAI;AACxC,UAAE,aAAa,MAAM,IAAI,EAAE,SAAS,IAAI;AAAA,MAC1C;AAAA,MAEQ,WAAW,IAAsB;AACvC,cAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,YAAI,EAAE,SAAS,MAAO,QAAO,WAAW,EAAE,MAAM,KAAK,EAAE,GAAG,KAAK,EAAE,IAAI,CAAC;AACtE,YAAI,EAAE,SAAS,OAAQ,QAAO,KAAK,cAAc,EAAE,IAAI;AACvD,cAAM,OAAO,EAAE,SAAS,WAAW,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI;AAC1D,YAAI,SAAS,QAAQ;AACnB,gBAAM,MAAM,KAAK,WAAW,EAAE;AAC9B,cAAI,IAAI,KAAM,QAAO,KAAK,eAAe,IAAI,MAAM,IAAI,MAAM,IAAI,QAAQ,IAAI,MAAM;AAAA,QACrF;AACA,cAAM,WAAW,OAAO,eAAe,IAAI,EAAE,WAAW,SAAS;AACjE,eAAO,KAAK,MAAM,EAAE,UAAU,MAAM,IAAI,KAAK,OAAO,KAAK,CAAC,GAAG,SAAS,GAAG,CAAC;AAAA,MAC5E;AAAA,MAEQ,cAAc,MAA2B;AAC/C,cAAM,EAAE,OAAO,IAAI;AACnB,YAAI,OAAO,SAAS,GAAG;AACrB,gBAAMC,SAAQ,OAAO;AACrB,cAAI,CAACA,OAAO,QAAO,KAAK,eAAe,KAAK,MAAM,KAAK,KAAK,GAAG,OAAO,IAAI;AAC1E,iBAAO,EAAE,GAAG,KAAK,MAAM,KAAK,MAAMA,QAAO,KAAK,KAAK,CAAC,GAAG,OAAO,GAAG;AAAA,QACnE;AACA,YAAI;AACJ,YAAI;AACF,cAAI,KAAK,EAAE,GAAG,KAAK,KAAK,IAAI;AAAA,QAC9B,QAAQ;AACN,cAAI,KAAK,SAAS,OAAO,MAAM;AAAA,QACjC;AACA,cAAM,QAAQ,OAAO;AACrB,YAAI,KAAK,OAAO,QAAQ,UAAa,EAAE,QAAQ,MAAM,KAAK;AACxD,cAAI,KAAK,SAAS,OAAO,MAAM,KAAK;AAAA,QACtC;AACA,eAAO,KAAK,MAAM,KAAK,MAAM,GAAG,KAAK,KAAK,CAAC;AAAA,MAC7C;AAAA,MAEQ,SAAS,QAA0D;AACzE,YAAI,WAAW,OAAW,QAAO;AACjC,YAAI;AACF,iBAAO,KAAK,EAAE,GAAG,WAAW,MAAM;AAAA,QACpC,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEQ,MAAM,MAAc,GAAiC,MAAwB;AACnF,eAAO;AAAA,UACL,GAAG,WAAW,MAAM,KAAK,EAAE,QAAQ,MAAM,aAAa,OAAO,MAAM,EAAE,CAAC;AAAA,UACtE,MAAM,OAAO,IAAI;AAAA,QACnB;AAAA,MACF;AAAA,MAEQ,eAAe,MAAc,MAAc,SAAS,OAAOC,QAAO,OAAiB;AACzF,YAAI;AAEJ,YAAI,CAAC,QAAQ;AACX,cAAI;AACF,gBAAI,KAAK,EAAE,GAAG,KAAK,IAAI;AAAA,UACzB,QAAQ;AAAA,UAAC;AAAA,QACX;AACA,cAAM,MAAM,KAAK,MAAM,MAAM,GAAG,IAAI;AACpC,eAAOA,QAAO,EAAE,GAAG,KAAK,OAAO,GAAG,IAAI;AAAA,MACxC;AAAA,MAEQ,UAAU,MAAuB;AACvC,eACE,SAAS,IAAI,MAAM,UAClB,SAAS,eAAe,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,cAC5C,SAAS,kBAAkB,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI;AAAA,MAEpD;AAAA,MAEQ,UAAU,MAAcV,SAAqC;AACnE,YAAI,CAACA,QAAQ,QAAO;AACpB,cAAM,OAAO,aAAa,KAAK,EAAE,IAAI,IAAI;AACzC,eAAO,SAAS,UAAa,SAAS,QAAQ,UAAU,IAAI,IAAI,OAAO;AAAA,MACzE;AAAA,MAEQ,OAAO,MAAcA,SAAmC;AAC9D,eAAOA,UAAS,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,KAAK,EAAE,GAAG,MAAM,IAAI;AAAA,MAC7D;AAAA,MAEQ,OACN,MACAA,SACA,MACAW,SACG;AACH,YAAI;AACF,iBAAO,KAAK;AAAA,QACd,SAAS,KAAK;AACZ,gBAAM,SAAU,IAA0B,SAAS,YAAY,KAAK,UAAU,MAAMX,OAAM;AAC1F,cAAI,CAAC,OAAQ,OAAM;AACnB,iBAAOW,QAAO,QAAQ,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,MAEQ,QAAQ,MAAcX,SAA0B;AACtD,YAAI;AACF,gBAAMY,QAAO,CAAC,QAAwD,KAAK,EAAE,OAAO,KAAK,GAAG;AAC5F,gBAAM,KAAK,QAAQ,EAAE,MAAAA,MAAK,GAAG,QAAQ,MAAMZ,OAAM,CAAC;AAClD,mBAAS,GAAG,QAAQ,KAAK,WAAc;AAAA,QACzC,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEQ,cAAc,MAAcA,UAAS,MAA0B;AACrE,YAAI;AACF,cAAI,CAACA,SAAQ;AACX,kBAAM,QAAQ,KAAK,YAAY,GAAG;AAClC,gBAAI,SAAS,EAAG,QAAO;AACvB,kBAAM,SAAS,aAAa,KAAK,EAAE,IAAI,KAAK,MAAM,GAAG,KAAK,CAAC;AAC3D,kBAAMO,YAAW,WAAW,SAAY,SAAY,GAAG,MAAM,IAAI,KAAK,MAAM,QAAQ,CAAC,CAAC;AACtF,mBAAOA,cAAa,UAAaA,cAAa,QAAQ,KAAK,UAAUA,SAAQ,IACzEA,YACA;AAAA,UACN;AACA,gBAAMA,YAAW,aAAa,KAAK,EAAE,IAAI,IAAI;AAC7C,iBAAOA,cAAa,UAAaA,cAAa,QAAQ,KAAK,UAAUA,SAAQ,IACzEA,YACA;AAAA,QACN,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEQ,aAAa,IAAY,KAAa,KAAa,SAAS,MAAe;AACjF,cAAM,QAAQ,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,YAAY,KAAK,IAAI,CAAC;AAC7D,YAAI,CAAC,SAAS,CAAC,OAAQ,QAAO;AAC9B,cAAM,OAAO,SAAS;AACtB,cAAM,OAAO,KAAK,IAAI,KAAK;AAC3B,cAAM,OAAO,KAAK,IAAI,KAAK,UAAU,IAAI,IAAI,GAAG,aAAa;AAC7D,cAAM,SAAS,CAAC,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM;AAC/D,YAAIM,UAAS;AACb,mBAAW,CAAC,GAAGrB,MAAK,KAAK,OAAO,QAAQ,GAAG;AACzC,cAAI,KAAK,IAAI,KAAK,IAAI,KAAM;AAC5B,eAAK,SAAS,IAAI,KAAK,IAAI,GAAGA,QAAO,IAAI;AACzC,UAAAqB,UAAS,KAAK,IAAI,KAAK;AAAA,QACzB;AACA,aAAK,UAAU,IAAIA,SAAQ,IAAI;AAC/B,eAAO;AAAA,MACT;AAAA,MAEQ,QAAQ,MAAmC;AACjD,cAAM,IAAI,SAAS,KAAK,IAAI;AAC5B,YAAI,CAAC,EAAG,QAAO;AACf,YAAI,EAAE,CAAC,EAAG,QAAO,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC,GAAa,OAAO,KAAK;AAC9D,YAAI,EAAE,CAAC,MAAM,UAAa,EAAE,CAAC,MAAM,UAAU,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,IAAK,QAAO;AACjF,eAAO,EAAE,IAAI,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,OAAO,MAAM;AAAA,MAClD;AAAA,MAEQ,OAAO,IAAkB;AAC/B,YAAI;AACF,eAAK,IAAI,IAAI,EAAE;AAAA,QACjB,QAAQ;AACN,gBAAM,IAAI,UAAU,QAAQ;AAAA,QAC9B;AAAA,MACF;AAAA,MAEQ,SAAS,OAAwB;AACvC,YAAI,MAAM,MAAO,QAAO,iBAAiB,MAAM,EAAE;AACjD,aAAK,OAAO,MAAM,EAAE;AACpB,cAAM,IAAI,KAAK,IAAI,IAAI,MAAM,EAAE;AAC/B,YAAI,EAAE,SAAS,OAAQ,QAAO,EAAE,KAAK;AACrC,YAAI,EAAE,SAAS,MAAO,QAAO,EAAE;AAC/B,YAAI,EAAE,SAAS,SAAU,QAAO,QAAQ,EAAE,MAAM;AAChD,cAAM,OAAO,EAAE,SAAS,WAAW,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI;AAChE,YAAI,SAAS,QAAQ;AACnB,gBAAM,MAAM,KAAK,WAAW,MAAM,EAAE;AACpC,cAAI,IAAI,KAAM,QAAO,IAAI;AAAA,QAC3B;AACA,YAAI,SAAS,MAAO,QAAO;AAC3B,YAAI,SAAS,SAAU,QAAO;AAC9B,YAAI,SAAS,UAAU;AACrB,gBAAM,EAAE,KAAK,IAAI,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,WAAW,IAAI,MAAM,GAAG,CAAC;AACnE,cAAI,SAAS,OAAW,QAAO;AAAA,QACjC;AACA,cAAM,MAAM,KAAK,WAAW,MAAM,EAAE,EAAE;AACtC,YAAI,SAAS,SAAU,QAAO,SAAS,GAAG;AAC1C,YAAI,SAAS,SAAU,QAAO,WAAW,GAAG;AAC5C,eAAO,eAAe,QAAQ,IAAI;AAAA,MACpC;AAAA,MAEQ,cAAc,MAAc,OAAgBZ,SAA0B;AAC5E,aAAKA,UAAS,2BAA2B,GAAG;AAC1C,gBAAM,SAAS,KAAK,SAAS,KAAK;AAClC,iBAAO,KAAK,MAAM;AAAA,YAChB,UAAU,SAAS;AAAA,YACnB,MAAM,OAAO,IAAI,YAAY,EAAE,OAAO,MAAM,EAAE,MAAM;AAAA,YACpD,KAAK,UAAU,IAAI;AAAA,YACnB,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AACA,aAAK,OAAO,MAAM,EAAE;AACpB,eAAO,KAAK,WAAW,MAAM,EAAE;AAAA,MACjC;AAAA,MAEQ,aAAa,MAAcA,SAA0B;AAC3D,cAAM,QAAQ,KAAK,QAAQ,IAAI;AAC/B,YAAI,MAAO,QAAO,KAAK,cAAc,MAAM,OAAOA,OAAM;AACxD,YAAI,KAAK,UAAU,IAAI,GAAG;AACxB,iBAAO,KAAK,MAAM;AAAA,YAChB,UAAU,SAAS;AAAA,YACnB,MAAM;AAAA,YACN,KAAK,UAAU,IAAI;AAAA,YACnB,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AACA,aAAK,IAAI,UAAU,IAAI;AACvB,cAAMD,WAAUC,UAAS,2BAA2B;AACpD,YAAI;AACF,iBAAO,WAAW,MAAMD,UAAS,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC;AAAA,QAC/E,SAAS,KAAK;AACZ,cAAK,IAA0B,SAAS,SAAU,OAAM;AACxD,gBAAMW,UAAS,UAAU,IAAI,IAAI,OAAO,KAAK,UAAU,MAAMX,OAAM;AACnE,gBAAMc,SAAQH,WAAUA,YAAW,OAAO,KAAK,QAAQA,OAAM,IAAI;AACjE,cAAIA,WAAUG,OAAO,QAAO,KAAK,cAAcH,SAAQG,QAAOb,OAAM;AACpE,cAAIU,WAAU,KAAK,QAAQA,SAAQ,IAAI,GAAG;AACxC,mBAAO,KAAK,MAAM;AAAA,cAChB,UAAU,SAAS;AAAA,cACnB,MAAM;AAAA,cACN,KAAK,UAAUA,OAAM;AAAA,cACrB,SAAS;AAAA,YACX,CAAC;AAAA,UACH;AACA,gBAAMJ,YAAW,KAAK,cAAc,MAAMP,OAAM;AAChD,cAAI,CAACO,UAAU,OAAM;AACrB,iBAAO,KAAK,MAAM;AAAA,YAChB,UAAU,SAAS;AAAA,YACnB,MAAM;AAAA,YACN,KAAK,UAAUA,SAAQ;AAAA,YACvB,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEQ,SAAS,MAAc,MAAc,MAAc,OAAeP,UAAS,MAAY;AAC7F,cAAM,QAAQ,SAAS,OAAO,SAAS,WAAW,SAAS,OAAO,SAAS;AAC3E,YAAI,KAAK,EAAE,GAAG,WAAW,QAAQ,WAAW,EAAG;AAC/C,cAAM,MAAM,KAAK,IAAI;AACrB,YAAIe;AACJ,cAAM,SAASf,UAAS,KAAK,EAAE,GAAG,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,GAAG,MAAM,KAAK,KAAK,EAAE,EAAE;AACvF,cAAM,OAAO,CAACgB,WAAyC;AACrD,UAAAD,aAAY,OAAO,IAAI;AACvB,iBAAOA,SAAQC,MAAK,KAAKD,SAAQ,WAAW;AAAA,QAC9C;AACA,cAAM,OAAO,CACX,KACA,QACAvB,QACAwB,WACY,QAAQ,SAAS,MAAM,QAAQ,MAAM,OAAOxB,SAAQC,UAAS,IAAI,KAAKuB,MAAK;AACzF,SAAChB,UAAS,KAAK,EAAE,GAAG,SAAS,KAAK,EAAE,GAAG,SAAS;AAAA,UAC9C,KAAK,EAAE;AAAA,UACP;AAAA,UACA,KAAK,SAAS,MAAM,SAAS,UAAU,MAAM,SAAS;AAAA,UACtD,KAAK,SAAS,MAAM,SAAS,UAAU,MAAM,SAAS;AAAA,WACrD,SAAS,SAAS,OAAO,SAAS,WAAW;AAAA,QAChD;AAAA,MACF;AAAA,MAEQ,QAAQ,IAAY,KAAa,KAAa,QAAgB,SAAuB;AAC3F,cAAM,MAAM,KAAK,IAAI,IAAI,EAAE;AAC3B,YAAI,WAAW,KAAK,CAAC,IAAI,SAAS;AAChC,cAAI,UAAU,KAAK,IAAI,QAAQ,GAAG,IAAI,EAAE,OAAO,CAAC,GAAG,OAAO,oBAAI,IAAI,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI;AAAA,QAC5F;AACA,cAAM,EAAE,OAAO,MAAM,IAAI,IAAI;AAC7B,YAAI,KAAK;AACT,iBAAS,IAAI,QAAQ,IAAI,MAAM,UAAU,KAAK,KAAK,KAAK;AACtD,gBAAML,QAAO,MAAM,CAAC;AACpB,gBAAM,OACJA,UAAS,MACL,IAAI,OACJA,UAAS,OACP,UAAU,GAAG,IAAI,IAAI,KAAK,IAC1B,aAAa,IAAI,MAAMA,KAAI;AACnC,cAAI,CAAC,MAAM,IAAIA,KAAI,EAAG,OAAM,IAAIA,OAAM,KAAK,YAAY,IAAI,CAAC;AAC5D,gBAAM,KAAK,MAAM,IAAIA,KAAI,KAAK;AAC9B,gBAAM,SAAS;AAAA,YACb,IAAI;AAAA,YACJ,IAAI,QAAQ,SAAY,OAAO,GAAG,GAAG,IAAI,UAAU,IAAI;AAAA,YACvDA;AAAA,YACA,WAAW,EAAE;AAAA,UACf;AACA,gBAAM,IAAI,KAAK,IAAI,OAAO,QAAQ,MAAM,EAAE;AAC1C,eAAK,IAAI,MAAM,MAAM,IAAI,CAAC,EAAE,IAAI,OAAO,SAAS,GAAG,CAAC,CAAC;AACrD,gBAAM;AAAA,QACR;AACA,aAAK,IAAI,KAAK,EAAE,UAAU,SAAS,IAAI,IAAI;AAAA,MAC7C;AAAA,MAEQ,KAAK,MAA0B;AACrC,cAAM,EAAE,GAAG,IAAI,KAAK;AACpB,cAAMsB,UAAS,GAAG,YAAY,IAAI;AAClC,eAAO,EAAE,OAAO,CAAC,KAAK,MAAM,GAAGA,QAAO,IAAI,CAAC,CAACtB,KAAI,MAAMA,KAAI,CAAC,GAAG,OAAO,IAAI,IAAIsB,OAAM,EAAE;AAAA,MACvF;AAAA,MAEQ,YAAY,MAAuC;AACzD,YAAI;AACF,iBAAO,KAAK,EAAE,GAAG,MAAM,IAAI;AAAA,QAC7B,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEA,WAAiB;AACf,aAAK,IAAI,SAAS;AAAA,MACpB;AAAA,IACF;AAAA;AAAA;;;AChmDO,SAAS,UAAU,OAA+B;AACvD,aAAS;AACP,QAAI;AACF,aAAO,MAAM;AAAA,IACf,SAAS,GAAG;AACV,UAAK,GAAiC,SAAS,QAAS,OAAM;AAAA,IAChE;AAAA,EACF;AACF;AAEA,SAAS,YAAY,KAAa,MAAsB;AACtD,SAAO,UAAU,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,IAAI,EAAE;AACjE;AAtCA,IAwCMC,WACAC,SACAC,WACA,aACA,aACA,mBACA,mBACA,cAEO;AAjDb;AAAA;AAAA;AAAA;AAEA;AACA;AAqCA,IAAMF,YAAW;AACjB,IAAMC,UAAS;AACf,IAAMC,YAAW;AACjB,IAAM,cAAc;AACpB,IAAM,cAAc;AACpB,IAAM,oBAAoB;AAC1B,IAAM,oBAAoB;AAC1B,IAAM,eAAe;AAEd,IAAM,eAAN,MAAmB;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACjB,YAAY,MAAgB,QAAwB,WAA0B,MAAM,OAAO;AACzF,aAAK,OAAO;AACZ,aAAK,SAAS;AACd,aAAK,WAAW;AAAA,MAClB;AAAA,MAEQ,UAA8B;AACpC,eAAO,KAAK,SAAS,IAAI,CAAC,IAAI,EAAE,SAAS,KAAK;AAAA,MAChD;AAAA,MAEQ,KAAK,KAA8D;AACzE,eAAO,KAAK,KAAK,EAAE,OAAO,KAAK,GAAG;AAAA,MACpC;AAAA,MAEQ,cAAsC;AAC5C,eAAO,EAAE,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,KAAK,KAAK,IAAI;AAAA,MAClD;AAAA,MAEQ,OAAOC,OAAc,QAAiB,MAAsB;AAClE,YAAIA,MAAK,SAAS,GAAG;AACnB,iBAAOA,MAAK,WAAW,GAAG,IAAIA,QAAO,UAAU,GAAG,KAAK,KAAK,GAAG,IAAIA,KAAI,EAAE;AAC3E,YAAI,CAAC,OAAQ,QAAOA;AACpB,mBAAW,OAAO,KAAK,MAAM,GAAG,GAAG;AACjC,cAAI,CAAC,IAAK;AACV,gBAAM,YAAY;AAAA,YAChB,GAAG,IAAI,WAAW,GAAG,IAAI,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG,IAAIA,KAAI;AAAA,UACjE;AACA,cAAI,KAAK,KAAK,EAAE,GAAG,OAAO,SAAS,EAAG,QAAO;AAAA,QAC/C;AACA,eAAOA;AAAA,MACT;AAAA,MAEQ,SAAS,KAKf;AACA,cAAM,EAAE,IAAI,IAAI,KAAK;AACrB,YAAI,aAAa;AACjB,cAAM,MAAM,IAAI,YAAY;AAE5B,cAAM,QAAQ,oBAAI,IAAY;AAC9B,cAAMC,UAAmB,CAAC;AAC1B,YAAI,MAAM,KAAK,KAAK;AACpB,YAAI;AACF,qBAAW,MAAM,IAAK,OAAM,KAAK,UAAU,IAAI,EAAE,KAAK,OAAO,QAAAA,QAAO,GAAG,GAAG;AAAA,QAC5E,SAAS,GAAG;AACV,qBAAW,OAAOA,QAAQ,MAAK,KAAK,EAAE,OAAO,IAAI,MAAM,GAAG;AAC1D,gBAAM;AAAA,QACR;AACA,cAAM,QAAsB,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO;AAChD,gBAAM,IAAI,IAAI,IAAI,EAAE;AACpB,iBAAO,MAAM,SAAY,EAAE,MAAM,KAAK,IAAI,EAAE,IAAI,EAAE;AAAA,QACpD,CAAC;AACD,cAAM,UAA2B;AAAA,UAC/B,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,OAAO,EAAE,IAAI,OAAO,EAAE;AAAA,UAC3E,GAAG,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,QAAQ,OAAgB,EAAE;AAAA,QACpF;AACA,eAAO,EAAE,OAAO,SAAS,KAAK,QAAAA,QAAO;AAAA,MACvC;AAAA,MAEQ,UACN,IACAC,QACA,KACQ;AACR,cAAM,EAAE,KAAK,OAAO,QAAAD,QAAO,IAAIC;AAC/B,cAAM,EAAE,IAAI,IAAI,KAAK;AACrB,cAAM,QAAQ,CAAC,IAAY,QAA4B;AACrD,cAAI,QAAQ,QAAW;AACrB,gBAAI,OAAO,EAAE;AACb,kBAAM,IAAI,EAAE;AAAA,UACd,OAAO;AACL,gBAAI,IAAI,IAAI,GAAG;AACf,kBAAM,OAAO,EAAE;AAAA,UACjB;AAAA,QACF;AACA,YAAI,GAAG,QAAQ,SAAS;AACtB,cAAI,OAAO,GAAG,EAAE;AAChB,gBAAM,OAAO,GAAG,EAAE;AAAA,QACpB,WAAW,GAAG,QAAQ,UAAU,MAAM,IAAI,GAAG,KAAK,EAAG,OAAM,GAAG,IAAI,MAAS;AAAA,iBAClE,GAAG,QAAQ,QAAQ;AAC1B,gBAAM,MACJ,IAAI,IAAI,GAAG,KAAK,MAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,WAAW,GAAG,QAAQ;AAC3E,cAAI,QAAQ,OAAW,OAAM,OAAO,OAAO,IAAI,MAAM,OAAO,GAAG,EAAE,MAAM,QAAQ,CAAC;AAChF,gBAAM,GAAG,IAAI,GAAG;AAAA,QAClB,WAAW,GAAG,QAAQ,UAAU,YAAY,KAAK,GAAG,IAAI,MAAM,aAAa;AACzE,gBAAM,GAAG,IAAI,MAAS;AAAA,QACxB,WAAW,GAAG,QAAQ,QAAQ;AAC5B,gBAAM,MAAM,KAAK,QAAQ,IAAI,GAAG;AAChC,UAAAD,QAAO,KAAK,GAAG;AACf,gBAAM,GAAG,IAAI,GAAG;AAAA,QAClB,WAAW,GAAG,QAAQ,QAAS,QAAO,KAAK,aAAa,KAAK,GAAG,IAAI;AAAA,YAC/D,QAAO,aAAa,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,IAAI;AAC5D,eAAO;AAAA,MACT;AAAA,MAEQ,aAAa,KAAa,MAAsB;AACtD,eAAO,aAAa,KAAK,KAAK,EAAE,IAAI,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,IAAI,EAAE;AAAA,MACpF;AAAA,MAEQ,QAAQ,IAAe,KAAqB;AAClD,cAAM,OAAO,YAAY,KAAK,GAAG,IAAI;AACrC,cAAM,UAAU,GAAG,SAAS,iBAAiB;AAC7C,YAAI,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,GAAG,OAAO,IAAI,GAAG;AAC3C,gBAAM,OAAO,OAAO,IAAI,MAAM,QAAQ,GAAG,EAAE,MAAM,SAAS,CAAC;AAAA,QAC7D;AACA,cAAM,SAAS,GAAG,cAAcH,UAAS,MAAM,GAAG,SAASC,YAAW;AAEtE,eAAO,KAAK,KAAK,EAAE,OAAO,IAAI,QAAQ,MAAM,GAAG,cAAc,SAASF,YAAW,GAAG,GAAG;AAAA,UACrF,GAAI,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,UAC3B,GAAI,GAAG,SAAS,cAAc,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,QACtD,CAAC;AAAA,MACH;AAAA,MAEA,MAAM,KAAmB,OAAO,OAAe;AAC7C,cAAM,MAAM,IAAI,OAAO,CAAC;AACxB,cAAM,EAAE,OAAO,SAAS,KAAK,QAAAI,QAAO,IAAI,KAAK,SAAS,GAAG;AACzD,cAAM,QAAQ,IAAI,KAAK,CAAC,OAAO,GAAG,QAAQ,WAAW,GAAG,QAAQ,QAAQ;AACxE,YAAI;AACF,gBAAM,QAAQ;AAAA,YACZ,IAAI;AAAA,YACJ,MAAM,KAAK,OAAO,IAAI,MAAM,IAAI,QAAQ,IAAI,IAAI;AAAA,YAChD,GAAI,IAAI,SAAS,CAAC,IAAI,EAAE,QAAQ,MAAe;AAAA,YAC/C,MAAM,IAAI,KAAK,SAAS,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI;AAAA,YAChD,KAAK,IAAI,OAAO,KAAK,YAAY;AAAA,YACjC;AAAA,YACA,GAAI,QAAQ,EAAE,OAAO,KAAc,IAAI,CAAC;AAAA,YACxC;AAAA,YACA;AAAA,YACA,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,YACvB,GAAG,KAAK,QAAQ;AAAA,UAClB;AACA,iBAAO,UAAU,MAAM,KAAK,KAAK,KAAK,CAAC;AAAA,QACzC,UAAE;AACA,qBAAW,OAAOA,QAAQ,MAAK,KAAK,EAAE,OAAO,IAAI,MAAM,GAAG;AAE1D,eAAK,KAAK,EAAE,GAAG,aAAa;AAAA,QAC9B;AAAA,MACF;AAAA,MAEA,KAAK,KAA0B;AAC7B,cAAM,MAAM,KAAK,MAAM,KAAK,IAAI;AAChC,cAAM,CAAC,EAAEE,OAAM,IAAI,KAAK,KAAK,EAAE,IAAI,aAAa,IAAI,CAAC;AACrD,cAAM,MAAMA,UAAS;AACrB,cAAM,IAAI,SAAS,MAAM,MAAM,MAAOA,WAAU,IAAK,GAAI;AAAA,MAC3D;AAAA,MAEA,KAAK,QAAgB,OAAe,WAAyB;AAC3D,cAAM,IAAI,KAAK,KAAK,IAAI,KAAK;AAC7B,cAAM,MAAM,EAAE,SAAS,MAAM,MAAM,IAAI,EAAE,UAAU,SAAS,GAAG,IAAI,IAAI;AACvE,aAAK,KAAK,IAAI,MAAM,WAAW,CAAC,EAAE,KAAK,CAAC;AACxC,cAAM,CAAC,OAAOA,OAAM,IAAI,KAAK,KAAK;AAAA,UAChC,IAAI;AAAA,UACJ;AAAA,UACA,SAAS,QAAQ,uBAAuB;AAAA,UACxC,GAAI,QAAQ,oBAAoB,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,QACxD,CAAC;AACD,YAAI,UAAU,EAAG;AAEjB,aAAK,KAAK,EAAE,GAAG,aAAa;AAC5B,UAAE,SAAS,QAAQ,CAAC;AACpB,UAAE,UAAU,SAAS,GAAG,OAAO,IAAI;AACnC,cAAM,MAAMA,UAAS;AACrB,YAAI,QAAQ,KAAM;AAChB,YAAE,SAAS,WAAW,YAAY;AAClC,YAAE,SAAS,YAAY,GAAIA,WAAU,IAAK,GAAI;AAAA,QAChD,WAAW,KAAK;AACd,YAAE,SAAS,WAAW,CAAC;AACvB,YAAE,SAAS,YAAY,GAAG,GAAG;AAAA,QAC/B,OAAO;AACL,YAAE,SAAS,WAAW,CAAC;AACvB,YAAE,UAAU,YAAY,GAAIA,WAAU,IAAK,KAAM,IAAI;AAAA,QACvD;AAAA,MACF;AAAA,MAEA,KAAK,QAAoC;AACvC,cAAM,OAAO,KAAK,OAAO,QAAQ;AACjC,YAAI,SAAS,QAAW;AACtB,eAAK,KAAK,IAAI,KAAK,EAAE,UAAU,QAAQ,MAAM,IAAI;AACjD,iBAAO;AAAA,QACT;AACA,eAAO,KAAK,OAAO;AAAA,UACjB,CAAC,cAAc,SAAS,WACtB,UAAU,MAAM,KAAK,SAAS,cAAc,SAAS,MAAM,CAAC;AAAA,QAChE;AAAA,MACF;AAAA,MAEQ,SACN,cACA,SACA,QACS;AACT,cAAM,EAAE,IAAI,IAAI,KAAK;AACrB,YAAI,aAAa;AACjB,cAAM,SAAS,KAAK,KAAK,IAAI,MAAM,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE,MAAM;AAClE,cAAM,OAAsB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,KAAK,IAAI,SAAS;AAAA,UAClB,SAAS,CAAC,GAAG,IAAI,OAAO;AAAA,UACxB,KAAK,KAAK,KAAK;AAAA,UACf,GAAI,IAAI,WAAW,EAAE,QAAQ,KAAc,IAAI,CAAC;AAAA,UAChD,SAAS,KAAK,OAAO,QAAQ;AAAA,UAC7B,GAAI,KAAK,KAAK,UAAU,EAAE,SAAS,KAAK,KAAK,QAAQ,SAAS,EAAE,IAAI,CAAC;AAAA,UACrE,GAAI,KAAK,KAAK,UAAU,EAAE,SAAS,KAAK,KAAK,QAAQ,UAAU,EAAE,IAAI,CAAC;AAAA,UACtE,GAAI,KAAK,KAAK,YAAY,EAAE,KAAK,KAAK,KAAK,UAAU,EAAE,IAAI,CAAC;AAAA,UAC5D,GAAI,KAAK,KAAK,gBAAgB,EAAE,SAAS,KAAK,KAAK,cAAc,EAAE,IAAI,CAAC;AAAA,QAC1E;AACA,YAAI,KAAK,KAAK,YAAa,MAAK,QAAQ,KAAK,KAAK;AAClD,eAAO,KAAK,KAAK;AAAA,UACf,IAAI;AAAA,UACJ,OAAO,EAAE,QAAQ,UAAU,GAAG,QAAQ,gBAAgB,CAAC,GAAG,MAAM,KAAK,KAAK,EAAE,KAAK,KAAK;AAAA,UACtF,GAAG,KAAK,QAAQ;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;;;AC3JA,SAAS,OAAO,MAAsB;AACpC,QAAM,QAAQ,IAAI,YAAY,EAAE,OAAO,IAAI;AAC3C,MAAI,SAAS;AACb,WAAS,KAAK,GAAG,KAAK,MAAM,QAAQ,MAAM,OAAQ;AAChD,cAAU,OAAO,aAAa,GAAG,MAAM,SAAS,IAAI,KAAK,KAAM,CAAC;AAAA,EAClE;AACA,SAAO,KAAK,MAAM;AACpB;AAEO,SAAS,aAAa,QAAkD;AAC7E,SAAO,OAAO,+BAA+B,OAAO,MAAM,CAAC;AAC7D;AAEA,eAAsB,YAAY,QAAwC;AACxE,QAAM,SAAU,MAAM,aAAa,MAAM;AAGzC,MAAI,OAAO,OAAO,kBAAkB,YAAY;AAC9C,UAAM,IAAI,MAAM,sDAAsD;AAAA,EACxE;AACA,SAAO,OAAO;AAChB;AAEA,SAAS,MAAM,QAA+B;AAC5C,MAAI,CAAC,OAAO,GAAI,OAAM,IAAI,UAAU,OAAO,KAAK;AAChD,MAAI,OAAO,SAAS,OAAQ,QAAO,OAAO;AAC1C,SAAO,OAAO,SAAS,UAAU,OAAO,QAAQ;AAClD;AAEA,SAAS,KAAK,KAAkC;AAC9C,QAAM,IAAK,KAAmC;AAC9C,SAAO,OAAO,MAAM,WAAW,IAAI;AACrC;AAUO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmC;AACjC,QAAM,EAAE,GAAG,IAAI,KAAK;AACpB,QAAMC,QAAO,CAAC,QAAiB,MAAM,IAAI,GAAG,CAAC;AAC7C,QAAM,SAAS,CAAC,OAAmC;AACjD,UAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,QAAI,EAAE,SAAS,OAAQ,QAAO,EAAE,KAAK;AACrC,QAAI,EAAE,SAAS,MAAO,QAAO,EAAE;AAC/B,QAAI,EAAE,SAAS,YAAY,KAAK,IAAI,KAAK,IAAI,CAAC,MAAM,QAAQ;AAC1D,aAAQA,MAAK,EAAE,IAAI,eAAe,GAAG,CAAC,EAAwB;AAAA,IAChE;AACA,WAAO;AAAA,EACT;AACA,QAAM,UAAU,CAAC,OAA6D;AAC5E,UAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,QAAI,EAAE,SAAS,OAAQ,QAAO,EAAE,MAAM,EAAE,KAAK,MAAM,MAAM,EAAE,KAAK,KAAK,EAAE;AACvE,QAAI,EAAE,SAAS,YAAY,KAAK,IAAI,KAAK,IAAI,CAAC,MAAM,QAAQ;AAC1D,aAAOA,MAAK,EAAE,IAAI,eAAe,GAAG,CAAC;AAAA,IACvC;AACA,WAAO,EAAE,MAAM,OAAO,EAAE,EAAE;AAAA,EAC5B;AACA,QAAM,cAAc,CAAC,OAAuB;AAC1C,UAAM,OAAO,OAAO,EAAE;AACtB,QAAI,SAAS,OAAW,OAAM,IAAI,UAAU,OAAO;AACnD,WAAO;AAAA,EACT;AACA,QAAM,SAAS,GAAG,WAAW;AAC7B,QAAM,OAAO,MAAoC;AAC/C,QAAI,CAAC,OAAQ,QAAO,EAAE,KAAK,KAAK,KAAK,IAAI;AACzC,UAAM,OAAOA,MAAK,EAAE,IAAI,YAAY,CAAC;AACrC,WAAO,EAAE,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK;AAAA,EAC1C;AACA,QAAM,MAA6B;AAAA,IACjC,KAAK,MAAM,IAAI,CAAC,GAAG;AACjB,YAAM,MAAM,KAAK,IAAI,QAAQ,GAAG,IAAI;AACpC,YAAM,QAAQ,EAAE,WAAW,QAAQ,EAAE,cAAc,QAAQ,UAAU,GAAG,WAAW;AACnF,YAAM,UAAU,CAAC,SAAS,GAAG,OAAO,GAAG;AACvC,YAAM,UACH,EAAE,SAAS,OAAO,QAAQ,MAC1B,EAAE,YAAY,OAAO,OAAO,MAC5B,EAAE,WAAW,OAAO,QAAQ,MAC5B,EAAE,YAAY,OAAO,YAAY;AACpC,YAAM,UAAU,EAAE,QAAQ,OAAO,WAAW,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,OAAO,UAAU;AACzF,YAAM,QAAQ,EAAE,SAAS,QAAQ,SAAS;AAC1C,YAAM,KAAK,KAAK,IAAI;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,EAAE,OAAO;AAAA,QACjB,EAAE,aAAa;AAAA,MACjB;AACA,UAAI,EAAE,SAAS,UAAa,CAAC,WAAW,CAAC,MAAO,IAAG,MAAM,KAAK,EAAE,IAAI;AACpE,aAAO;AAAA,IACT;AAAA,IACA,MAAM,IAAI;AACR,WAAK,IAAI,MAAM,EAAE;AAAA,IACnB;AAAA,IACA,MAAM,IAAI;AACR,YAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,YAAM,EAAE,MAAM,KAAK,IAAI,QAAQ,EAAE;AACjC,UAAI,SAAS,QAAW;AACtB,cAAM,OAAO,EAAE,SAAS,WAAW,WAAW;AAC9C,eAAO,EAAE,MAAM,MAAM,SAAS,WAAW,OAAU,MAAS,GAAG,KAAK,GAAG,MAAM,EAAE;AAAA,MACjF;AACA,UAAI,SAAS,OAAW,MAAK,IAAI,UAAU,IAAI;AAC/C,YAAM,IAAI,GAAG,KAAK,IAAI;AACtB,aAAO;AAAA,QACL,MAAM,EAAE,cAAc,QAAQ;AAAA,QAC9B;AAAA,QACA,MAAM,EAAE,SAAS,EAAE,cAAc,QAAU;AAAA,QAC3C,GAAI,EAAE,QAAQ,UAAa,EAAE,QAAQ,SAAY,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,IAAI,IAAI,KAAK;AAAA,QACnF,MAAM,QAAQ,EAAE;AAAA,QAChB,GAAI,EAAE,QAAQ,SAAY,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;AAAA,QAC5C,GAAI,EAAE,YAAY,SAAY,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,OAAO,IAAI,MAAM;AACf,SAAG,MAAM,YAAY,EAAE,GAAG,IAAI;AAAA,IAChC;AAAA,IACA,QAAQ,IAAI,WAAW;AACrB,YAAM,OAAO,YAAY,EAAE;AAC3B,WAAK,IAAI,QAAQ,EAAE;AACnB,UAAI;AACF,QAAAA,MAAK,EAAE,IAAI,QAAQ,MAAM,WAAW,GAAG,CAAC;AAAA,MAC1C,SAAS,KAAK;AACZ,YAAI,KAAK,GAAG,MAAM,SAAU,QAAO,EAAE;AACrC,cAAM;AAAA,MACR;AACA,aAAO,EAAE;AAAA,IACX;AAAA,IACA,OAAO,IAAI;AACT,MAAAA,MAAK,EAAE,IAAI,UAAU,MAAM,YAAY,EAAE,GAAG,GAAG,CAAC;AAAA,IAClD;AAAA,EACF;AACA,QAAM,MAAsB;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,KAAK,EAAE;AAAA,IACb,KAAK,KAAK,EAAE;AAAA,IACZ,KAAK,MAAM,KAAK;AAAA,IAChB,IAAI,OAAO,OAAO,OAAO,OAAO,EAAE,GAAwB;AAAA,MACxD,SAAS,MAAc,IAAY,UAA6C,CAAC,GAAG;AAClF,cAAM,KAAK,CAAC,MAAc,KAAK,IAAI,QAAQ,GAAG,EAAE,WAAW,GAAG,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,EAAE;AACxF,aAAK,SAAS,GAAG,IAAI,GAAG,GAAG,EAAE,GAAG,QAAQ,QAAQ,KAAO,QAAQ,SAAS,IAAI;AAAA,MAC9E;AAAA,IACF,CAAC;AAAA,IACD;AAAA,IACA,SAAS,CAAC,QACR,IAAI,OAAO,eAAe,KAAK,MAAO,IAA0B,IAAI,IAAIA,MAAK,GAAG;AAAA,IAClF,KAAK,QAAQ,KAAKA,KAAI;AAAA,IACtB,GAAG,UAAU,MAAMA,OAAM,QAAQ,QAAQ;AAAA,IACzC,OAAO;AAAA,MACL,QAAQ,CAAC,QAAQA,MAAK,EAAE,IAAI,gBAAgB,IAAI,CAAC;AAAA,MACjD,KAAKC,YAAW;AACd,mBAAS;AACP,cAAI;AACF,mBAAOD,MAAK;AAAA,cACV,IAAI;AAAA,cACJ,GAAIC,eAAc,SAAY,EAAE,WAAAA,WAAU,IAAI,CAAC;AAAA,YACjD,CAAC;AAAA,UACH,SAAS,KAAK;AACZ,gBAAI,KAAK,GAAG,MAAM,QAAS,OAAM;AACjC,gBAAIA,eAAc,OAAW,QAAO;AAAA,UACtC;AAAA,QACF;AAAA,MACF;AAAA,MACA,KAAK,IAAI;AACP,cAAM,SAAS,IAAI,EAAE,IAAI,cAAc,GAAG,CAAC;AAC3C,YAAI,CAAC,OAAO,MAAM,OAAO,UAAU,SAAU,QAAO;AACpD,YAAI,CAAC,OAAO,GAAI,QAAO,EAAE,OAAO,OAAO,MAAM;AAC7C,eAAO,EAAE,OAAO,MAAM,MAAM,EAAE;AAAA,MAChC;AAAA,MACA,SAAS,CAAC,MAAMD,MAAK,EAAE,IAAI,iBAAiB,OAAO,EAAE,CAAC;AAAA,MACtD,MAAM,MAAMA,MAAK,EAAE,IAAI,aAAa,CAAC;AAAA,MACrC,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,IAAI,gBAAgB,GAAG,CAAC;AAAA,MACnD,OAAO,MAAM,KAAKA,MAAK,EAAE,IAAI,cAAc,CAAC;AAAA,IAC9C;AAAA,IACA,OAAO,CAAC,QAAQ,YAAY,KAAK,GAAG,CAAC;AAAA,EACvC;AACA,MAAI,CAAC,OAAQ,QAAO;AACpB,SAAO,OAAO,iBAAiB,KAAK;AAAA,IAClC,KAAK,EAAE,KAAK,MAAM,KAAK,EAAE,KAAK,YAAY,KAAK;AAAA,IAC/C,KAAK,EAAE,KAAK,MAAM,KAAK,EAAE,KAAK,YAAY,KAAK;AAAA,EACjD,CAAC;AACH;AAMA,SAAS,aAAa,MAAuB;AAC3C,MAAI,SAAS,YAAa,QAAO;AACjC,MAAI,OAAO,SAAS,YAAYE,UAAS,KAAK,IAAI,EAAG,QAAO;AAC5D,QAAM,IAAI,UAAU,QAAQ;AAC9B;AAEA,SAAS,QAAQ,KAAUF,OAAwD;AACjF,SAAO;AAAA,IACL,QAAQ,EAAE,MAAM,MAAAG,OAAM,WAAW,MAAM,GAAG;AACxC,YAAM,KAAK,aAAa,IAAI;AAC5B,UAAI,CAAC,OAAO,UAAUA,KAAI,KAAKA,QAAO,KAAKA,QAAO,MAAO,OAAM,IAAI,UAAU,QAAQ;AACrF,YAAM,KAAKH,MAAK,EAAE,IAAI,aAAa,QAAQ,OAAO,CAAC;AACnD,YAAM,OAAO,EAAE,QAAQ,QAAQ,MAAM,IAAI,MAAAG,MAAK;AAC9C,YAAM,IAAI,IAAI,EAAE,IAAI,gBAAgB,IAAI,MAAM,GAAI,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC,EAAG,CAAC;AACvF,UAAI,EAAE,MAAO,YAAY,EAAE,UAAU,cAAgB,QAAO;AAC5D,UAAI,EAAE,IAAI,YAAY,GAAG,CAAC;AAC1B,YAAM,IAAI,UAAU,EAAE,KAAK;AAAA,IAC7B;AAAA,IACA,MAAM,IAAI;AACR,YAAM,MAAMH,MAAK,EAAE,IAAI,aAAa,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC;AAGzE,UAAI,CAAC,IAAI,MAAM,SAAS,EAAE,EAAG,QAAO,EAAE;AACtC,aAAOA,MAAK,EAAE,IAAI,eAAe,IAAI,OAAO,YAAY,MAAM,SAAS,CAAC;AAAA,IAC1E;AAAA,EACF;AACF;AAMA,SAAS,UACP,MACAA,OACA,UACiD;AACjD,QAAM,QAAQ,CAAC,OAAe,KAAKA,MAAK,EAAE,IAAI,YAAY,GAAG,CAAC;AAC9D,QAAMI,QAAO,CAAC,GAAW,KAAY,MAAgB,WAAgC;AACnF,QAAI,QAAQ,UAAW,QAAO,EAAE,IAAI,EAAE;AACtC,QAAI,QAAQ,OAAQ,QAAO,EAAE,MAAM,KAAK;AACxC,UAAM,CAACC,OAAMC,MAAK,IAAIN,MAAK,EAAE,IAAI,UAAU,CAAC;AAC5C,SAAK,CAAC,IAAI,MAAM,IAAIM,SAAQD;AAC5B,WAAO,KAAK,MAAM,IAAIA,QAAOC,MAAK;AAClC,WAAO,EAAE,IAAI,MAAM,IAAID,QAAOC,OAAM;AAAA,EACtC;AACA,SAAO;AAAA,IACL,MAAM,GAAG;AACP,YAAM,OAAiB,CAAC;AACxB,YAAM,SAAmB,CAAC;AAC1B,WAAK,IAAI,aAAa;AACtB,UAAI;AACF,cAAM,QAAQC,OAAM,IAAI,CAACC,OAAM,MAAMJ,MAAK,GAAG,EAAEI,KAAI,KAAK,WAAW,MAAM,MAAM,CAAC;AAChF,cAAM,MAAM;AAAA,UACV,IAAI;AAAA,UACJ,MAAM,EAAE,KAAK,CAAC;AAAA,UACd,MAAM,EAAE;AAAA,UACR,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI;AAAA,UAC9B,KAAK,EAAE,OAAO,KAAK;AAAA,UACnB,GAAI,EAAE,QAAQ,SAAY,EAAE,OAAO,KAAc,IAAI,CAAC;AAAA,UACtD;AAAA,UACA,GAAI,WAAW,CAAC,IAAI,EAAE,SAAS,KAAc;AAAA,QAC/C;AACA,cAAM,MAAM,UAAU,MAAMR,MAAK,GAAG,CAAC;AACrC,cAAM,MAAe,EAAE,IAAI;AAC3B,QAAAO,OAAM,QAAQ,CAACC,OAAM,MAAM;AACzB,cAAI,KAAK,CAAC,MAAM,OAAW,KAAIA,KAAI,IAAI,KAAK,CAAC;AAAA,QAC/C,CAAC;AACD,eAAO;AAAA,MACT,SAAS,KAAK;AACZ,mBAAW,MAAM,KAAM,KAAI,OAAO,OAAW,OAAM,EAAE;AACrD,cAAM;AAAA,MACR,UAAE;AACA,mBAAW,MAAM,OAAQ,OAAM,EAAE;AACjC,aAAK,EAAE,GAAG,aAAa;AAAA,MACzB;AAAA,IACF;AAAA,IACA,KAAK,KAAK;AACR,iBAAS;AACP,YAAI;AACF,gBAAM,CAAC,EAAEC,OAAM,IAAIT,MAAK,EAAE,IAAI,aAAa,KAAK,QAAQ,MAAM,CAAC;AAC/D,eAAK,EAAE,GAAG,aAAa;AACvB,gBAAM,SAASS,UAAS;AACxB,iBAAO,SAAS,EAAE,QAAQ,MAAM,QAAQ,OAAO,IAAI,EAAE,QAASA,WAAU,IAAK,IAAK;AAAA,QACpF,SAAS,KAAK;AACZ,cAAI,KAAK,GAAG,MAAM,QAAS,OAAM;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,KAAK,KAAK;AACb,MAAAT,MAAK,EAAE,IAAI,aAAa,KAAK,IAAI,CAAC;AAAA,IACpC;AAAA,EACF;AACF;AAvZA,IAiHM,KAqMAE,WACA,YACA,UAgCAK;AAxVN;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AA2GA,IAAM,MAAM;AAqMZ,IAAML,YAAW;AACjB,IAAM,aAAa;AACnB,IAAM,WAAW;AAgCjB,IAAMK,SAAQ,CAAC,SAAS,UAAU,QAAQ;AAAA;AAAA;;;ACxV1C,IAEa,WAEA,WAoGA;AAxGb;AAAA;AAAA;AAEO,IAAM,YAAY;AAElB,IAAM,YAAY,YAAY;AAoG9B,IAAM,UAAN,MAAc;AAAA,MACF;AAAA,MACT;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACS;AAAA,MAEjB,YACE,KACAG,OACA,KACA,OACA;AACA,aAAK,OAAO,IAAI,WAAW,GAAG;AAC9B,aAAK,OAAOA;AACZ,aAAK,MAAM;AACX,aAAK,OAAO,MAAM;AAClB,aAAK,OAAO,MAAM;AAClB,aAAK,KAAK,MAAM;AAAA,MAClB;AAAA,MAEA,MAAM,OAAqB,MAAwB;AACjD,YAAI,MAAM,SAAS,OAAW,QAAO;AACrC,aAAK,OAAO,MAAM;AAClB,aAAK,OAAO,MAAM,QAAQ,QAAQ,KAAK,KAAK,MAAM,MAAM,IAAI;AAC5D,aAAK,OAAO,MAAM,SAAS;AAC3B,aAAK,KAAK;AACV,eAAO;AAAA,MACT;AAAA,MAEQ,SAAkB;AACxB,cAAMC,UAAS,KAAK,IAAI;AACxB,YAAIA,QAAO,SAAS,OAAW,MAAK,OAAOA,QAAO;AAClD,aAAK,OAAOA,QAAO;AACnB,aAAK,OAAO,CAACA,QAAO;AACpB,eAAOA,QAAO;AAAA,MAChB;AAAA,MAEA,MAAM,MAAwB;AAC5B,YAAI,SAAS,UAAa,KAAK,OAAO,UAAa,SAAS,KAAK,IAAI;AACnE,eAAK,KAAK;AACV,iBAAO,KAAK,OAAO;AAAA,QACrB;AACA,YAAI,KAAK,KAAM,QAAO;AACtB,YAAI,QAAQ,KAAK,KAAK,MAAM,KAAK,IAAI,MAAM,KAAK,KAAM,QAAO;AAC7D,eAAO,KAAK,OAAO;AAAA,MACrB;AAAA,MAEA,IAAI,UAAkB;AACpB,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA;AAAA;;;AC3IO,SAAS,WACd,IACAC,OACA,UACM;AACN,QAAM,EAAE,OAAO,IAAI,IAAI;AACvB,MAAI,CAAC,SAAS,CAAC,IAAK;AACpB,KAAG,eAAe,MAAM,IAAI,KAAK,EAAE;AACnC,KAAG,eAAe,MAAM,CAACA,MAAK,MAAM;AACpC,KAAG,MAAM,MAAM;AACb,UAAM,OAAO,IAAI,KAAK,EAAE;AACxB,WAAOA,MAAK,MAAM,IAAI,OAAO,GAAG,IAAI,GAAG,OAAO;AAAA,EAChD;AACA,KAAG,QAAQ,CAAC,SAAiB;AAC3B,UAAM,KAAK,IAAI,IAAI;AACnB,IAAAA,MAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC;AAAA,EACnC;AACF;AAlCA,IAEa,SAEA,cAGA;AAPb;AAAA;AAAA;AAEO,IAAM,UAAU;AAEhB,IAAM,eAAe,CAAC,SAC3B,CAAC,KAAK,WAAW,GAAG,KAAK,KAAK,MAAM,GAAG,EAAE,CAAC,MAAM;AAE3C,IAAM,SAAS,CAAC,KAAaA,OAA2B,SAC7DA,SAAQ,aAAa,IAAI,KAAK,CAACA,MAAK,MAAM,IAAI,GAAG,GAAG,GAAG,OAAO,KAAK;AAAA;AAAA;;;ACH9D,SAAS,cAAsB;AACpC,SAAO,iBAAiB,UAAU,kBAAkB,cAAc;AAAA;AACpE;AAPA,IAEa,gBACA;AAHb;AAAA;AAAA;AAEO,IAAM,iBAAiB,OAAoC,aAAgB;AAC3E,IAAM,aAAa;AAAA;AAAA;;;AC0DnB,SAAS,SAASC,SAA0B;AACjD,OAAKA,UAAS,SAAU;AACtB,WAAO,EAAE,QAAQ,OAAQA,WAAU,IAAK,MAAO,QAASA,WAAU,IAAK,KAAM,SAAS,KAAK;AAC7F,QAAM,SAASA,UAAS;AACxB,SAAO,SAAS,EAAE,QAAQ,MAAM,QAAQ,OAAO,IAAI,EAAE,QAASA,WAAU,IAAK,IAAK;AACpF;AAEA,SAAS,SAAS,IAAa,IAAwC;AACrE,QAAM,YAAY,IAAI,gBAAgB;AACtC,SAAO,IAAI;AAAA,IACT;AAAA,MACE,MAAM,KAAK,YAAY;AACrB,cAAM,QAAQ,MAAM,GAAG,KAAK,IAAI,QAAW,UAAU,MAAM,EAAE,MAAM,CAAC,QAAiB;AACnF,cAAI,UAAU,OAAO,QAAS,QAAO;AACrC,gBAAM;AAAA,QACR,CAAC;AACD,YAAI,UAAU,OAAW;AACzB,YAAI,MAAM,SAAS,GAAG;AACpB,qBAAW,QAAQ,KAAK;AACxB;AAAA,QACF;AACA,mBAAW,MAAM;AACjB,cAAM,GAAG,MAAM,EAAE;AAAA,MACnB;AAAA,MACA,QAAQ,MAAM;AACZ,kBAAU,MAAM;AAChB,eAAO,GAAG,MAAM,EAAE;AAAA,MACpB;AAAA,IACF;AAAA,IACA,EAAE,eAAe,EAAE;AAAA,EACrB;AACF;AAEA,SAAS,SAAS,IAAa,IAAwC;AACrE,SAAO,IAAI,eAA2B;AAAA,IACpC,OAAO,CAAC,OAAO,eAAe,GAAG,KAAK,IAAI,OAAO,WAAW,MAAM;AAAA,IAClE,OAAO,MAAM,GAAG,MAAM,EAAE;AAAA,IACxB,OAAO,MAAM,GAAG,MAAM,EAAE;AAAA,EAC1B,CAAC;AACH;AAEO,SAAS,SACd,QACA,IACA,UACA,MACA;AACA,QAAMC,QAAO,OAAO,KAAa,UAAyB,CAAC,MAAyB;AAClF,QAAI,OAAO,YAAY,YAAY,YAAY,KAAM,OAAM,IAAI,YAAY,UAAU,MAAM;AAC3F,UAAM,WAAW,QAAQ,aAAa,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;AACnE,UAAM,IAAI,MAAM,OAAO,SAAS,EAAE,IAAI,aAAa,KAAK,QAAQ,OAAO,GAAG,SAAS,CAAC;AACpF,UAAM,CAAC,EAAED,OAAM,IAAK,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC;AAC9D,WAAO,SAASA,OAAM;AAAA,EACxB;AACA,QAAM,OAAO,OAAO,KAAa,SAAkC,YAA2B;AAC5F,UAAM,OAAO,KAAK,EAAE,IAAI,aAAa,KAAK,KAAK,WAAW,IAAI,IAAI,SAAS,OAAO,MAAM,EAAE,CAAC;AAAA,EAC7F;AAEA,QAAM,UAAU,CAAC,KAAa,SAA6C;AACzE,UAAM,CAAC,OAAO,QAAQ,MAAM,IAAI;AAChC,WAAO;AAAA,MACL;AAAA,MACA,GAAI,UAAU,SAAY,EAAE,OAAO,SAAS,IAAI,KAAK,EAAE,IAAI,CAAC;AAAA,MAC5D,GAAI,WAAW,SAAY,EAAE,QAAQ,SAAS,IAAI,MAAM,EAAE,IAAI,CAAC;AAAA,MAC/D,GAAI,WAAW,SAAY,EAAE,QAAQ,SAAS,IAAI,MAAM,EAAE,IAAI,CAAC;AAAA,MAC/D,MAAM,CAAC,YAA4BC,MAAK,KAAK,OAAO;AAAA,MACpD,MAAM,CAAC,WAAqC,KAAK,KAAK,MAAM;AAAA,IAC9D;AAAA,EACF;AAEA,QAAM,UAAU,CAAC,MAAsB;AACrC,UAAM,CAAC,IAAI,IAAI,EAAE;AACjB,QAAI,SAAS,OAAW,OAAM,IAAI,YAAY,UAAU,OAAO;AAC/D,UAAM,QAAQ,QAAQ,GAAG,OAAO;AAChC,UAAM,QAAQ,QAAQ,EAAE,OAAO,OAAO;AACtC,UAAM,QAAQ,QAAQ,EAAE,mBAAmB,QAAQ;AACnD,UAAM,UAAU,MAAM,EAAE,GAAG;AAC3B,WAAO,CAAC,WAAuC;AAAA,MAC7C,IAAI;AAAA,MACJ;AAAA,MACA,MAAM,CAAC,GAAG,EAAE,IAAI;AAAA,MAChB,GAAG;AAAA,MACH,KAAK,EAAE,GAAI,EAAE,OAAO,SAAS,IAAK;AAAA,MAClC,KAAK,EAAE,OAAO,SAAS;AAAA,MACvB,GAAI,EAAE,QAAQ,SAAY,EAAE,OAAO,KAAc,IAAI,CAAC;AAAA,MACtD;AAAA,MACA,GAAI,QAAQ,SAAS,IAAI,EAAE,QAAQ,IAAI,CAAC;AAAA,MACxC,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,EACF;AAEA,QAAM,YAAY,CAAC,MAA+B;AAChD,UAAM,WAAW,QAAQ,CAAC;AAC1B,UAAM,OAAkC,CAAC;AACzC,UAAM,SAAmB,CAAC;AAC1B,QAAI;AACF,YAAM,QAAQ,UAAU,MAAM,GAAG,MAAM,MAAM;AAC7C,aAAO,QAAQ,KAAK,KAAK,SAAS,KAAK,CAAC,GAAa,IAAI;AAAA,IAC3D,SAAS,KAAK;AACZ,mBAAa,MAAM,IAAI;AACvB,YAAM;AAAA,IACR,UAAE;AACA,mBAAa,MAAM,MAAM;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,QAAQ,OAAO,MAAwC;AAC3D,UAAM,WAAW,QAAQ,CAAC;AAC1B,UAAM,OAAkC,CAAC;AACzC,UAAM,SAAmB,CAAC;AAC1B,QAAI;AACF,YAAM,QAAQ,MAAMC,OAAM,QAAQ,GAAG,MAAM,MAAM;AACjD,YAAM,MAAO,MAAM,OAAO,KAAK,SAAS,KAAK,CAAC;AAC9C,aAAO,QAAQ,KAAK,IAAI;AAAA,IAC1B,SAAS,KAAK;AACZ,YAAM,SAAS,IAAI,IAAI;AACvB,YAAM;AAAA,IACR,UAAE;AACA,YAAM,SAAS,IAAI,MAAM;AAAA,IAC3B;AAAA,EACF;AAEA,SAAO,EAAE,OAAO,MAAAD,OAAM,MAAM,UAAU;AACxC;AAEO,SAAS,MAAM,KAAqD;AACzE,MAAI,QAAQ,OAAW,QAAO,CAAC;AAC/B,MAAI,OAAO,QAAQ,YAAY,QAAQ,QAAQ,MAAM,QAAQ,GAAG,GAAG;AACjE,UAAM,IAAI,YAAY,UAAU,OAAO;AAAA,EACzC;AACA,SAAO,OAAO,QAAQ,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM;AAC9C,UAAM,KAAK,OAAO,GAAG;AACrB,UAAM,QAAQ,OAAO,UAAU,EAAE,KAAK,MAAM,KAAK,OAAO,EAAE,MAAM;AAChE,QAAI,CAAC,SAAS,CAAC,OAAO,UAAU,IAAI,KAAM,OAAkB,GAAG;AAC7D,YAAM,IAAI,YAAY,UAAU,OAAO;AAAA,IACzC;AACA,WAAO,EAAE,IAAI,QAAQ,KAAe;AAAA,EACtC,CAAC;AACH;AAEO,SAAS,QACd,GACAE,OACmC;AACnC,QAAM,EAAE,MAAM,QAAQ,IAAI;AAC1B,QAAM,QAAQ,SAAS,UAAc,OAAO,UAAU,IAAI,KAAK,QAAQ;AACvE,MAAI,CAAC,SAAU,YAAY,UAAa,OAAO,YAAY,WAAY;AACrE,UAAM,IAAI,YAAY,UAAUA,KAAI;AAAA,EACtC;AACA,MAAI,WAAW,SAAS,OAAW,OAAM,IAAI,YAAY,UAAUA,KAAI;AACvE,SAAO,UAAU,EAAE,SAAS,KAAK,IAAI,SAAS,SAAY,EAAE,KAAK,IAAI,CAAC;AACxE;AAEA,SAAS,QAAQ,QAAiB,UAAmD;AACnF,MAAI,WAAW,OAAW,QAAO,CAAC;AAClC,MAAI,OAAO,WAAW,YAAY,OAAO,WAAW,UAAU;AAC5D,UAAM,IAAI,YAAY,UAAU,OAAO;AAAA,EACzC;AACA,SAAO,EAAE,aAAa,SAAS,OAAO,MAAiC,EAAE;AAC3E;AAEO,SAAS,QAAQ,OAAgBA,OAAkC;AACxE,MAAI,UAAU,OAAW,QAAO,CAAC;AACjC,MAAI,OAAO,UAAU,SAAU,OAAM,IAAI,YAAY,UAAUA,KAAI;AACnE,SAAO,EAAE,MAAM;AACjB;AAEA,eAAe,SAAS,IAAa,KAAuD;AAC1F,aAAW,MAAM,IAAK,KAAI,OAAO,OAAW,OAAM,GAAG,MAAM,EAAE,EAAE,MAAM,MAAM,MAAS;AACtF;AAEA,SAAS,aAAa,MAAuB,KAA8C;AACzF,aAAW,MAAM,IAAK,KAAI,OAAO,OAAW,MAAK,IAAI,EAAE,IAAI,YAAY,GAAG,CAAC;AAC7E;AAEA,SAAS,QAAQ,MAAoC;AACnD,QAAM,MAAgB,CAAC;AACvB,aAAW,CAAC,GAAG,GAAG,KAAK,KAAK,QAAQ,GAAG;AACrC,QAAI,QAAQ,UAAU,QAAQ,OAAQ;AACtC,QAAI,QAAQ,aAAa,OAAO,QAAQ,SAAU,OAAM,IAAI,YAAY,UAAU,OAAO;AACzF,QAAI,KAAK,QAAQ,YAAY,IAAI,GAAG;AAAA,EACtC;AACA,SAAO;AACT;AAEA,eAAe,UAAU,QAAkB,MAAyC;AAClF,aAAW,MAAM,QAAQ,IAAI,EAAG,OAAM,OAAO,KAAK,EAAE,IAAI,WAAW,GAAG,CAAC;AACzE;AAEA,SAAS,KACP,GACA,KACA,MACA,MACA,QACM;AACN,MAAI,QAAQ,UAAW,QAAO,EAAE,IAAI,EAAE;AACtC,MAAI,QAAQ,OAAQ,QAAO,EAAE,MAAM,KAAK;AACxC,MAAI,OAAO,QAAQ,SAAU,QAAO,EAAE,IAAI,IAAI;AAC9C,QAAM,CAACC,OAAMC,MAAK,IAAI,KAAK;AAC3B,OAAK,CAAC,IAAI,MAAM,IAAIA,SAAQD;AAC5B,SAAO,KAAK,MAAM,IAAIA,QAAOC,MAAK;AAClC,SAAO,EAAE,IAAI,MAAM,IAAID,QAAOC,OAAM;AACtC;AAEA,SAAS,UACP,MACA,GACA,MACA,QACQ;AACR,QAAM,OAAOC,OAAM,IAAI,CAACC,UAAS,EAAEA,KAAI,KAAM,SAAmB;AAChE,aAAW,MAAM,QAAQ,IAAI,EAAG,MAAK,KAAK,EAAE,IAAI,WAAW,GAAG,CAAC;AAC/D,QAAM,OAAO,MAAM,KAAK,KAAK,EAAE,IAAI,UAAU,CAAC;AAC9C,SAAO,KAAK,IAAI,CAAC,KAAK,MAAM,KAAK,GAAG,KAAK,MAAM,MAAM,MAAM,CAAC;AAC9D;AAEA,eAAeL,OACb,QACA,GACA,MACA,QACiB;AACjB,QAAM,OAAOI,OAAM,IAAI,CAACC,UAAS,EAAEA,KAAI,KAAM,SAAmB;AAChE,QAAM,UAAU,QAAQ,IAAI;AAC5B,QAAM,QAAgB,CAAC;AACvB,aAAW,CAAC,GAAG,GAAG,KAAK,KAAK,QAAQ,GAAG;AACrC,UAAM,OAAO,QAAQ,SAAW,MAAM,OAAO,KAAK,EAAE,IAAI,UAAU,CAAC,IAA0B,CAAC;AAC9F,UAAM,KAAK,KAAK,GAAG,KAAK,MAAM,MAA0B,MAAM,MAAM,CAAC;AAAA,EACvE;AACA,SAAO;AACT;AArSA,IAwDMD,QACA;AAzDN;AAAA;AAAA;AAEA;AAsDA,IAAMA,SAAQ,CAAC,SAAS,UAAU,QAAQ;AAC1C,IAAM,UAAU;AAAA;AAAA;;;ACtChB,SAAS,KAAK,GAA0B;AACtC,SAAO,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO;AAC9C;AAEA,SAAS,YAAY,MAAgB,EAAE,UAAU,IAAI,QAAQ,GAAoB;AAC/E,QAAM,OAAQ,KAAK,KAAK,EAAE,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC;AAChD,QAAM,KAAK,KAAK,OAAO,CAAC,UAAU,MAAM,aAAa,QAAQ;AAC7D,QAAM,MAAM,GAAG,KAAK,CAAC,UAAU,MAAM,OAAO,EAAE,KAAK,GAAG,CAAC,IAAI;AAC3D,MAAI,OAAO,QAAW;AACpB,SAAK,EAAE,IAAI,WAAW,IAAI,IAAI,QAAQ,CAAuB;AAC7D;AAAA,EACF;AACA,QAAME,UAAS,KAAK,KAAK,EAAE,IAAI,eAAe,MAAM,SAAS,CAAC,CAAC;AAC/D,MAAI,OAAOA,YAAW,SAAU;AAChC,OAAK,EAAE,IAAI,WAAW,IAAIA,SAAQ,QAAQ,CAAuB;AACjE,OAAK,EAAE,IAAI,YAAY,IAAIA,QAAO,CAAC;AACrC;AAEA,SAAS,SAAS,MAAgB,IAAY,MAA2B;AACvE,MAAI,KAAK;AACT,SAAO,KAAK,KAAK,QAAQ;AACvB,UAAM,OAAO,KAAK,SAAS,IAAI,KAAK,MAAM;AAC1C,UAAM,IAAI,KAAK,EAAE,IAAI,YAAY,IAAI,KAAK,CAAC;AAC3C,QAAI,CAAC,EAAE,MAAM,EAAE,UAAU,QAAS;AAClC,QAAI,CAAC,EAAE,GAAI,QAAO;AAClB,UAAM,IAAI,QAAQ,GAAG,KAAK,MAAM;AAChC,QAAI,KAAK,EAAG,QAAO;AACnB,UAAM;AAAA,EACR;AACA,SAAO;AACT;AAEA,SAAS,SAAS,QAAyC,KAAqB;AAC9E,MAAI,CAAC,OAAQ,QAAO;AACpB,MAAI,OAAO,GAAI,QAAO,QAAQ,QAAQ,GAAG;AACzC,SAAO,OAAO,UAAU,UAAU,IAAI;AACxC;AAEA,SAAS,QAAQ,MAAgB,QAA4D;AAC3F,QAAM,WAAW,OAAO,OAAO,CAAC,MAAM,EAAE,OAAO,MAAS;AACxD,QAAM,MAAM,oBAAI,IAA0B;AAC1C,MAAI,SAAS,WAAW,EAAG,QAAO;AAClC,QAAM,IAAI,KAAK,EAAE,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,EAAY,EAAE,CAAC;AAC/E,QAAM,UAAW,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO,CAAC;AACvD,WAAS,QAAQ,CAAC,GAAG,MAAM;AACzB,UAAM,SAAS,QAAQ,CAAC;AACxB,QAAI,IAAI,GAAG,SAAS,QAAQ,EAAE,GAAG,CAAC;AAAA,EACpC,CAAC;AACD,SAAO;AACT;AAEO,SAAS,WACd,MACA,QACA,OACAC,SACA,OAA2B,EAAE,IAAI,aAAa,QAAQA,UAAS,IAAK,GAC7D;AACP,QAAM,OAAO,QAAQ,MAAM,MAAM;AACjC,QAAM,SAAS,oBAAI,IAAY;AAC/B,aAAW,KAAK,QAAQ;AACtB,UAAM,OAAO,KAAK,IAAI,CAAC;AACvB,QAAI,SAAS,GAAI,QAAO,IAAI,EAAE,EAAE;AAChC,QAAI,OAAO,IAAI,EAAE,EAAE,EAAG;AACtB,QAAI,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,EAAE,CAAC,EAAG,QAAO,IAAI,EAAE,EAAE;AAAA,EACjF;AACA,aAAW,QAAQ,MAAO,aAAY,MAAM,IAAI;AAChD,OAAK,IAAI;AACT,QAAM,SAAS,IAAI,WAAW,IAAI,kBAAkB,CAAC,CAAC;AACtD,YAAS,SAAQ,KAAK,QAAQ,GAAG,CAAC;AACpC;AAzFA;AAAA;AAAA;AAEA;AAAA;AAAA;;;ACiCA,SAAS,IAAI,KAAuB;AAClC,MAAI,EAAE,eAAe,gBAAgB,IAAI,SAAS,MAAO,QAAO;AAChE,SAAO,OAAO,OAAO,IAAI,MAAM,mBAAmB,GAAG;AAAA,IACnD,MAAM;AAAA,IACN,MAAM;AAAA,EACR,CAAC;AACH;AAEA,SAAS,WAAW,OAA0C;AAC5D,MAAI,UAAU,UAAa,iBAAiB,QAAS,QAAO,CAAC;AAC7D,QAAM,QAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,OAAO,QAAQ,KAAK;AACjE,SAAO,MAAM,IAAI,CAAC,SAAS,OAAO,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;AAC1D;AAEA,SAAS,QAAQ,SAAkB,OAAoD;AACrF,QAAM,MAAM,IAAI,IAAI,OAAO;AAC3B,QAAM,MAA0B,CAAC;AACjC,aAAWC,SAAQ,CAAC,GAAG,WAAW,KAAK,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG;AACxD,UAAMC,SAAQ,IAAI,IAAID,KAAI;AAC1B,QAAIC,WAAU,OAAW;AACzB,QAAI,OAAOD,KAAI;AACf,QAAI,KAAK,CAACA,OAAMC,MAAK,CAAC;AAAA,EACxB;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,KAAkB;AACzC,MAAI,OAAO;AACX,SAAO,IAAI;AACb;AAEA,SAAS,OAAO,KAAyB;AACvC,SAAO,IAAI,UAAU,gBAAgB,EAAE,OAAO,IAAI,CAAC;AACrD;AAEA,SAAS,MAAMC,SAAgB,MAAwB;AACrD,SAAO,IAAI,SAAS,MAAM;AAAA,IACxB,QAAAA;AAAA,IACA,SAAS,EAAE,gBAAgB,4BAA4B;AAAA,EACzD,CAAC;AACH;AAEA,SAASC,OAAM,KAAsB;AACnC,SAAO,qBAAqB,IAAI,IAAI,GAAG,EAAE,QAAQ;AACnD;AAUA,SAAS,QAAQ,KAAmB;AAClC,QAAMC,QAAO,IAAI,OAAO,OAAO,IAAI,IAAI,IAAI;AAC3C,SAAOA,UAAS,KAAK,UAAU,IAAIA,KAAI;AACzC;AAEA,SAAS,SAAS,KAAmB;AACnC,QAAM,SAAS,IAAI,IAAI,GAAG;AAC1B,QAAM,EAAE,SAAS,IAAI;AACrB,MAAI,aAAa,WAAW,aAAa,UAAU;AACjD,UAAM,OAAO,IAAI,YAAY,mBAAmB,QAAQ,CAAC;AAAA,EAC3D;AACA,MAAI,QAAQ,MAAM,EAAG,OAAM,OAAO,IAAI,MAAM,UAAU,CAAC;AACzD;AAEA,SAAS,QAAQ,KAAUF,SAAgB,UAAuB;AAChE,QAAMG,QAAO,IAAI,IAAI,UAAU,IAAI,GAAG;AACtC,WAASA,MAAK,IAAI;AAClB,MAAIF,OAAME,MAAK,IAAI,KAAK,CAACF,OAAM,IAAI,GAAG,GAAG;AACvC,UAAM,OAAO,IAAI,IAAI,IAAI,GAAG,EAAE;AAC9B,UAAM;AAAA,MACJ,IAAI,YAAY,UAAU,mBAAmB,IAAI,gCAAgCE,MAAK,IAAI,EAAE;AAAA,IAC9F;AAAA,EACF;AACA,QAAM,SACFH,YAAW,OAAOA,YAAW,QAAQ,IAAI,WAAW,UACrDA,YAAW,OAAO,IAAI,WAAW,SAAS,IAAI,WAAW;AAC5D,MAAI,IAAI,UAAU,CAAC,OAAO;AACxB,UAAM,OAAO,IAAI,YAAY,OAAO,KAAKA,OAAM,4CAA4C,CAAC;AAAA,EAC9F;AACA,QAAM,cAAcG,MAAK,WAAW,IAAI,IAAI,IAAI,GAAG,EAAE;AACrD,QAAM,UAAU,IAAI,QAAQ;AAAA,IAC1B,CAAC,CAACL,KAAI,MACJ,EAAE,SAAS,aAAa,IAAIA,MAAK,YAAY,CAAC,MAC9C,EAAE,eAAe,YAAY,IAAIA,MAAK,YAAY,CAAC;AAAA,EACvD;AACA,SAAO;AAAA,IACL,KAAK,gBAAgBK,KAAI;AAAA,IACzB,QAAQ,QAAQ,QAAQ,IAAI;AAAA,IAC5B;AAAA,IACA,MAAM,QAAQ,SAAY,IAAI;AAAA,EAChC;AACF;AASA,SAAS,MAAM,MAAmC;AAChD,SAAO,SAAS,UAAa,gBAAgB,KAAK,OAAO,aAAa,IAAI,CAAC;AAC7E;AAEA,SAAS,cAAc,OAA2B;AAChD,QAAM,QAAQ,IAAI,YAAY,EAAE,OAAO,KAAK;AAC5C,QAAM,MAAM,IAAI,WAAW,MAAM,MAAM;AACvC,MAAI,KAAK;AACT,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAM,OAAO,MAAM,CAAC;AACpB,QAAI,SAAS,MAAQ,MAAM,MAAM,IAAI,CAAC,CAAC,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,GAAG;AAC/D,UAAI,IAAI,IAAI,OAAO;AAAA,QACjB,OAAO,aAAa,MAAM,IAAI,CAAC,GAAa,MAAM,IAAI,CAAC,CAAW;AAAA,QAClE;AAAA,MACF;AACA,WAAK;AAAA,IACP,MAAO,KAAI,IAAI,IAAI;AAAA,EACrB;AACA,SAAO,IAAI,SAAS,GAAG,EAAE;AAC3B;AAEA,SAAS,OAAO,OAA2B;AACzC,MAAI,OAAO;AACX,WAAS,KAAK,GAAG,KAAK,MAAM,QAAQ,MAAM,OAAO;AAC/C,YAAQ,OAAO,aAAa,GAAG,MAAM,SAAS,IAAI,KAAK,KAAK,CAAC;AAAA,EAC/D;AACA,SAAO;AACT;AAEA,SAAS,OAAO,OAAe,MAAgC;AAC7D,MAAIJ,SAAQ;AACZ,MAAI,KAAK,OAAO;AAChB,SAAO,KAAK,MAAM,QAAQ;AACxB,UAAM,OAAO,MAAM,IAAI;AACvB,QAAI,SAAS,IAAK;AAClB,QAAI,SAAS,KAAM,CAAAA,UAAS;AAAA,aACnB,KAAK,MAAM,OAAQ,CAAAA,UAAS,MAAM,IAAI;AAAA,QAC1C,CAAAA,UAAS;AAAA,EAChB;AACA,SAAO,CAACA,QAAO,EAAE;AACnB;AAEA,SAAS,UAAU,MAAc,MAAc,QAAqC;AAClF,MAAI,KAAK,OAAO;AAChB,SAAO,MAAM,KAAK,KAAK,EAAE,KAAK,EAAE,EAAG;AACnC,MAAI,MAAM;AACV,SAAO,MAAM,KAAK,UAAU,KAAK,GAAG,MAAM,OAAO,KAAK,GAAG,MAAM,IAAK;AACpE,QAAMD,QAAO,KAAK,MAAM,IAAI,GAAG,EAAE,YAAY;AAC7C,MAAI,KAAK,GAAG,MAAM,IAAK,QAAO;AAC9B,QAAMM,SAAQ,MAAM;AACpB,MAAIL;AACJ,MAAI,KAAKK,MAAK,MAAM,KAAK;AACvB,KAACL,QAAO,EAAE,IAAI,OAAO,MAAMK,MAAK;AAChC,UAAM,KAAK,QAAQ,KAAK,EAAE;AAAA,EAC5B,OAAO;AACL,UAAM,KAAK,QAAQ,KAAKA,MAAK;AAC7B,IAAAL,SAAQ,KAAK,MAAMK,QAAO,MAAM,IAAI,SAAY,GAAG,EAAE,QAAQ,eAAe,EAAE;AAC9E,QAAI,CAACL,OAAO,QAAO,MAAM,IAAI,KAAK,SAAS;AAAA,EAC7C;AACA,MAAI,MAAM,EAAG,OAAM,KAAK;AACxB,MAAI,MAAM,KAAKD,KAAI,KAAK,SAAS,KAAKC,MAAK,KAAK,CAAC,OAAO,IAAID,KAAI,GAAG;AACjE,WAAO,IAAIA,OAAMC,MAAK;AAAA,EACxB;AACA,SAAO;AACT;AAEA,SAAS,SAAS,OAAmC;AACnD,QAAM,OAAO,MAAM,QAAQ,4BAA4B,EAAE;AACzD,QAAM,QAAQ,KAAK,QAAQ,GAAG;AAC9B,QAAM,OAAO,KAAK,QAAQ,KAAK,KAAK;AACpC,QAAM,OAAO,KAAK,MAAM,GAAG,KAAK;AAChC,QAAM,UAAU,KAAK,MAAM,QAAQ,GAAG,OAAO,IAAI,SAAY,IAAI,EAAE,QAAQ,eAAe,EAAE;AAC5F,MAAI,QAAQ,KAAK,CAAC,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAG,QAAO;AACnE,QAAM,SAAS,oBAAI,IAAoB;AACvC,WAAS,KAAK,OAAO,IAAI,KAAK,SAAS,MAAM,KAAK,KAAK,SAAU,MAAK,UAAU,MAAM,IAAI,MAAM;AAChG,MAAI,MAAM,GAAG,IAAI,IAAI,OAAO,GAAG,YAAY;AAC3C,aAAW,CAACD,OAAMC,MAAK,KAAK,QAAQ;AAClC,WAAO,IAAID,KAAI,IAAI,MAAM,KAAKC,MAAK,IAAIA,SAAQ,IAAIA,OAAM,QAAQ,UAAU,MAAM,CAAC,GAAG;AAAA,EACvF;AACA,SAAO;AACT;AAEA,SAAS,aAAa,SAA4B;AAChD,QAAM,MAAM,gBAAgB,IAAI,IAAI,QAAQ,GAAG,CAAC;AAChD,QAAMM,QAAO,IAAI,MAAM,QAAQ,MAAM;AACrC,QAAM,QAAQA,MAAK,QAAQ,GAAG;AAC9B,MAAI,QAAQ,EAAG,OAAM,OAAO,IAAI,YAAY,UAAU,6BAA6B,CAAC;AACpF,MAAI,OAAOA,MAAK,MAAM,GAAG,KAAK,EAAE,QAAQ,gCAAgC,EAAE;AAC1E,MAAI,OAAO,cAAcA,MAAK,MAAM,QAAQ,CAAC,CAAC;AAC9C,QAAMC,UAAS,OAAO,KAAK,IAAI;AAC/B,MAAIA,SAAQ;AACV,WAAO,KAAK,MAAM,GAAGA,QAAO,KAAK;AACjC,QAAI;AACJ,QAAI;AACF,eAAS,KAAK,OAAO,IAAI,CAAC;AAAA,IAC5B,QAAQ;AACN,YAAM,OAAO,IAAI,YAAY,UAAU,0CAA0C,CAAC;AAAA,IACpF;AACA,WAAO,WAAW,KAAK,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAAA,EACvD;AACA,MAAI,KAAK,WAAW,GAAG,EAAG,QAAO,aAAa,IAAI;AAClD,QAAM,WAAW,IAAI;AAAA,IACnB,QAAQ,WAAW,SAAS,OAAQ;AAAA,IACpC;AAAA,MACE,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,SAAS,EAAE,gBAAgB,SAAS,IAAI,KAAK,8BAA8B;AAAA,IAC7E;AAAA,EACF;AACA,SAAO,SAAS,UAAU,KAAK,KAAK;AACtC;AAEA,SAAS,SAAS,UAAoB,KAAa,YAA+B;AAChF,QAAM,QAAQ,SAAS,MAAM,KAAK,QAAQ;AAC1C,SAAO,eAAe,UAAU,OAAO,EAAE,OAAO,IAAI,CAAC;AACrD,SAAO,eAAe,UAAU,cAAc,EAAE,OAAO,WAAW,CAAC;AACnE,SAAO,eAAe,UAAU,SAAS,EAAE,OAAO,MAAM,SAAS,MAAM,GAAG,KAAK,UAAU,EAAE,CAAC;AAC5F,SAAO;AACT;AAEA,SAAS,QAAQ,OAA4B;AAC3C,MAAI,OAAO,UAAU,SAAU,QAAO,IAAI,YAAY,EAAE,OAAO,KAAK;AACpE,MAAI,iBAAiB,YAAa,QAAO,IAAI,WAAW,KAAK;AAC7D,MAAI,YAAY,OAAO,KAAK,GAAG;AAC7B,WAAO,IAAI,WAAW,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,EACxE;AACA,QAAM,OAAO,IAAI,UAAU,gDAAgD,CAAC;AAC9E;AAEA,eAAe,OACb,SACA,KACA,QAC+C;AAC/C,SAAO,eAAe;AACtB,MAAI,CAAC,QAAQ,QAAQ,QAAQ,WAAW,SAAS,QAAQ,WAAW,OAAQ,QAAO;AACnF,QAAM,SAAS,QAAQ,KAAK,UAAU;AACtC,QAAM,OAAO,MAAY,KAAK,OAAO,OAAO,OAAO,MAAM,EAAE,MAAM,MAAM,MAAS;AAChF,SAAO,iBAAiB,SAAS,MAAM,EAAE,MAAM,KAAK,CAAC;AACrD,QAAM,QAAsB,CAAC;AAC7B,MAAI,SAAS;AACb,MAAI;AACF,eAAS;AACP,YAAMH,QAAO,MAAM,OAAO,KAAK,EAAE,MAAM,CAAC,QAAiB;AACvD,cAAM,OAAO,UAAU,OAAO,SAAS,OAAO,GAAG;AAAA,MACnD,CAAC;AACD,aAAO,eAAe;AACtB,UAAIA,MAAK,KAAM;AACf,YAAM,QAAQ,QAAQA,MAAK,KAAK;AAChC,gBAAU,MAAM;AAChB,UAAI,SAAS,KAAK;AAChB,eAAO,OAAO,EAAE,MAAM,MAAM,MAAS;AACrC,eAAO;AAAA,MACT;AACA,YAAM,KAAK,KAAK;AAAA,IAClB;AAAA,EACF,UAAE;AACA,WAAO,oBAAoB,SAAS,IAAI;AAAA,EAC1C;AACA,MAAI,WAAW,EAAG,QAAO;AACzB,QAAM,MAAM,IAAI,WAAW,MAAM;AACjC,MAAI,KAAK;AACT,aAAW,QAAQ,OAAO;AACxB,QAAI,IAAI,MAAM,EAAE;AAChB,UAAM,KAAK;AAAA,EACb;AACA,SAAO;AACT;AAEA,SAAS,QACP,OACA,SACA,MACA,KACS;AACT,MAAI,MAAM,oBAAoB,QAAQ,EAAE,MAAM,gBAAgB,gBAAiB,QAAO;AACtF,SAAO,QAAQ,WAAW,SAAS,QAAQ,WAAW,UAAU,CAACF,OAAM,GAAG;AAC5E;AAEA,eAAe,KACb,QACA,QACA,QACA,QACe;AACf,QAAM,SAAS,OAAO,UAAU;AAChC,QAAM,OAAO,MAAY,KAAK,OAAO,OAAO,OAAO,MAAM,EAAE,MAAM,MAAM,MAAS;AAChF,SAAO,iBAAiB,SAAS,MAAM,EAAE,MAAM,KAAK,CAAC;AACrD,MAAI;AACF,UAAM,SAAS,QAAQ,QAAQ,QAAQ,MAAM;AAAA,EAC/C,UAAE;AACA,WAAO,oBAAoB,SAAS,IAAI;AAAA,EAC1C;AACF;AAEA,eAAe,SACb,QACA,QACA,QACA,QACe;AACf,aAAS;AACP,QAAI;AACJ,QAAI;AACF,YAAME,QAAO,MAAM,OAAO,KAAK;AAC/B,UAAIA,MAAK,KAAM;AACf,cAAQ,QAAQA,MAAK,KAAK;AAAA,IAC5B,SAAS,KAAK;AACZ,YAAM,OAAO,OAAO,GAAG,EAAE,MAAM,MAAM,MAAS;AAC9C,YAAM,OAAO,IAAI,EAAE,IAAI,aAAa,OAAO,CAAC;AAC5C;AAAA,IACF;AACA,QAAI,MAAM,WAAW,EAAG;AACxB,UAAM,QAAQ,MAAM,OAAO,SAAS,EAAE,IAAI,aAAa,QAAQ,MAAM,GAAG,MAAM,EAAE;AAAA,MAC9E,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AACA,QAAI,CAAC,OAAO;AACV,YAAM,OAAO,OAAO,EAAE,MAAM,MAAM,MAAS;AAC3C;AAAA,IACF;AAAA,EACF;AACA,QAAM,OAAO,IAAI,EAAE,IAAI,WAAW,OAAO,CAAC;AAC5C;AAEO,SAAS,QAAQ,QAAkB;AACxC,QAAM,SAAS,oBAAI,IAAmC;AACtD,QAAM,WAAW,CAAC,QAAsC;AACtD,UAAM,MAAMF,OAAM,GAAG;AACrB,UAAM,QACJ,OAAO,IAAI,GAAG,KAAM,OAAO,KAAK,EAAE,IAAI,cAAc,IAAI,CAAC;AAC3D,WAAO,IAAI,KAAK,KAAK;AACrB,UAAM,MAAM,MAAM;AAChB,aAAO,OAAO,GAAG;AAAA,IACnB,CAAC;AACD,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,CAAC,WAAqC,OAAO,IAAI,EAAE,IAAI,aAAa,OAAO,CAAC;AAE1F,QAAM,OAAO,OAAO,KAAU,WAA2C;AACvE,WAAO,eAAe;AACtB,UAAM,SAAU,MAAM,OAAO,KAAK;AAAA,MAChC,IAAI;AAAA,MACJ,KAAK,IAAI;AAAA,MACT,QAAQ,IAAI;AAAA,MACZ,SAAS,IAAI;AAAA,MACb,GAAI,IAAI,SAAS,EAAE,QAAQ,KAAK,IAAI,IAAI,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAAA,IACvE,CAAC;AACD,QAAI,IAAI,OAAQ,MAAK,KAAK,QAAQ,QAAQ,IAAI,QAAQ,MAAM;AAC5D,QAAI;AACF,YAAM,IAAI,MAAM,OAAO,SAAS,EAAE,IAAI,YAAY,OAAO,GAAG,MAAM;AAClE,aAAO,eAAe;AACtB,aAAQ,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO;AAAA,IAC/C,SAAS,KAAK;AACZ,YAAM,MAAM,MAAM;AAClB,YAAM,OAAO,UAAU,OAAO,SAAS,OAAO,GAAG;AAAA,IACnD;AAAA,EACF;AAEA,QAAM,OAAO,CAAC,QAAgB,YAAiD;AAC7E,UAAM,EAAE,OAAO,IAAI;AACnB,QAAI;AACJ,UAAM,SAAS,MAAY;AACzB,UAAI,QAAS,QAAO,oBAAoB,SAAS,OAAO;AAAA,IAC1D;AACA,UAAM,SAAS,IAAI;AAAA,MACjB;AAAA,QACE,MAAM,YAAY;AAChB,oBAAU,MAAM;AACd,uBAAW,MAAM,OAAO,MAAM;AAC9B,iBAAK,MAAM,MAAM;AAAA,UACnB;AACA,iBAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,QAC1D;AAAA,QACA,MAAM,KAAK,YAAY;AACrB,cAAI;AACJ,cAAI;AACF,mBAAO,eAAe;AACtB,gBAAI,MAAM,OAAO,SAAS,EAAE,IAAI,YAAY,QAAQ,KAAKM,OAAM,GAAG,MAAM;AAAA,UAC1E,SAAS,KAAK;AACZ,mBAAO;AACP,kBAAM,MAAM,MAAM;AAClB,kBAAM,OAAO,UAAU,OAAO,SAAS,IAAI,UAAU,cAAc,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC;AAAA,UACxF;AACA,gBAAM,QAAQ,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,QAAQ,IAAI,WAAW,CAAC;AACrE,cAAI,MAAM,SAAS,GAAG;AACpB,uBAAW,QAAQ,KAAK;AACxB;AAAA,UACF;AACA,iBAAO;AACP,qBAAW,MAAM;AACjB,gBAAM,MAAM,MAAM;AAAA,QACpB;AAAA,QACA,QAAQ,YAAY;AAClB,iBAAO;AACP,gBAAM,MAAM,MAAM;AAAA,QACpB;AAAA,MACF;AAAA,MACA,EAAE,eAAe,EAAE;AAAA,IACrB;AACA,iBAAa,IAAI,QAAQ,OAAO;AAChC,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,CACd,MACA,QACA,YACA,SACA,YACa;AACb,QAAI,KAAK,SAAS,OAAO,KAAK,SAAS,KAAK;AAC1C,WAAK,MAAM,KAAK,MAAM;AACtB,YAAM,OAAO,IAAI,YAAY,UAAU,UAAU,KAAK,MAAM,EAAE,CAAC;AAAA,IACjE;AACA,UAAM,QAAQ,WAAW,UAAU,UAAU,IAAI,KAAK,MAAM;AAC5D,QAAI,MAAO,MAAK,MAAM,KAAK,MAAM;AACjC,UAAM,UAAU,IAAI,QAAQ,KAAK,OAA2C;AAC5E,QAAI,SAA4C,QAAQ,OAAO,KAAK,KAAK,QAAQ,OAAO;AACxF,UAAM,SAAS,QAAQ,IAAI,kBAAkB,GAAG,KAAK,EAAE,YAAY;AACnE,QAAI,UAAU,WAAW,UAAU,QAAQ,IAAI,MAAM,GAAG;AACtD,YAAM,SAAS,WAAW,YAAY,YAAY;AAClD,eAAS,OAAO;AAAA,QACd,IAAI,oBAAoB,MAAM;AAAA,MAChC;AACA,cAAQ,OAAO,gBAAgB;AAC/B,mBAAa,IAAI,QAAQ,OAAO;AAAA,IAClC;AACA,UAAM,WAAW,IAAI,SAAS,QAAQ;AAAA,MACpC,QAAQ,KAAK;AAAA,MACb,YAAY,KAAK;AAAA,MACjB;AAAA,IACF,CAAC;AACD,WAAO,SAAS,UAAU,KAAK,KAAK,UAAU;AAAA,EAChD;AAEA,QAAM,WAAW,CAAC,OAChB,SAAS,EAAE,EAAE,MAAM,CAAC,QAAiB;AACnC,UAAM,OAAO,GAAG;AAAA,EAClB,CAAC;AAEH,QAAM,WAAW,OACf,KACAP,SACA,UACA,UACgC;AAChC,UAAMG,QAAO,QAAQ,KAAKH,SAAQ,QAAQ;AAC1C,WAAO,CAACG,OAAMF,OAAME,MAAK,GAAG,MAAMF,OAAM,IAAI,GAAG,IAAI,QAAQ,MAAM,SAASE,MAAK,GAAG,CAAC;AAAA,EACrF;AAEA,SAAO,OAAO,OAA0B,SAA0C;AAChF,UAAM,UAAU,IAAI,QAAQ,OAAO,IAAI;AACvC,UAAM,EAAE,OAAO,IAAI;AACnB,WAAO,eAAe;AACtB,UAAM,EAAE,SAAS,IAAI,IAAI,IAAI,QAAQ,GAAG;AACxC,QAAI,aAAa,QAAS,QAAO,aAAa,OAAO;AACrD,aAAS,QAAQ,GAAG;AACpB,QAAI,QAAQ,MAAM,SAAS,QAAQ,GAAG;AACtC,QAAI,CAAC,MAAM,mBAAmB,QAAQ,aAAa,UAAU;AAC3D,YAAM,OAAO,IAAI,YAAY,WAAW,aAAa,QAAQ,QAAQ,EAAE,CAAC;AAAA,IAC1E;AACA,UAAM,MAAM,gBAAgB,IAAI,IAAI,QAAQ,GAAG,CAAC;AAChD,UAAM,WAAW,QAAQ,OAAO,SAAS,MAAM,GAAG;AAClD,UAAM,QAAQ,WAAW,SAAY,MAAM,OAAO,SAAS,MAAM,gBAAgB,MAAM;AACvF,QAAI,UAAU,MAAM;AAClB,aAAO,SAAS,MAAM,KAAK,qBAAqB,MAAM,cAAc,QAAQ,GAAG,KAAK,KAAK;AAAA,IAC3F;AACA,QAAI,MAAW;AAAA,MACb;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB,SAAS,QAAQ,QAAQ,SAAS,MAAM,OAAO;AAAA,MAC/C,MAAM;AAAA,MACN,GAAI,YAAY,QAAQ,OAAO,EAAE,QAAQ,QAAQ,KAAK,IAAI,CAAC;AAAA,IAC7D;AACA,aAAS,OAAO,KAAK,QAAQ;AAC3B,YAAM,OAAO,MAAM,KAAK,KAAK,MAAM;AACnC,YAAM,WAAW,KAAK,QAAQ,KAAK,CAAC,CAACL,KAAI,MAAMA,MAAK,YAAY,MAAM,UAAU,IAAI,CAAC;AACrF,YAAMU,UACJ,MAAM,mBACN,UAAU,IAAI,KAAK,MAAM,KACzB,aAAa,UACb,QAAQ,aAAa;AACvB,UAAI,CAACA,SAAQ;AACX,cAAM,aAAa,OAAO,KAAK,KAAK,eAAe;AACnD,eAAO,QAAQ,MAAM,IAAI,QAAQ,YAAY,MAAM,eAAe,OAAO;AAAA,MAC3E;AACA,YAAM,MAAM,KAAK,MAAM;AACvB,UAAI,QAAQ,aAAa,QAAS,OAAM,OAAO,IAAI,MAAM,qBAAqB,CAAC;AAC/E,UAAI,QAAQ,cAAe,OAAM,OAAO,IAAI,YAAY,SAAS,IAAI,GAAG,CAAC;AACzE,OAAC,KAAK,KAAK,IAAI,MAAM,SAAS,KAAK,KAAK,QAAQ,UAAU,KAAK;AAAA,IACjE;AAAA,EACF;AACF;AArhBA,IAoBMD,QACA,eACA,cACA,WACA,WACA,cAOA,SACA,aAgDA,WAmDA,MACA,OACA,UACA,OACA,QACA;AAzIN;AAAA;AAAA;AACA;AAEA;AAiBA,IAAMA,SAAQ,KAAK;AACnB,IAAM,gBAAgB;AACtB,IAAM,eAAe,oBAAI,QAA6C;AACtE,IAAM,YAAY,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACnD,IAAM,YAAY,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACnD,IAAM,eAAe,oBAAI,IAAI;AAAA,MAC3B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,IAAM,UAAU,oBAAI,IAAI,CAAC,QAAQ,UAAU,SAAS,CAAC;AACrD,IAAM,cAAc,oBAAI,IAAI,CAAC,iBAAiB,uBAAuB,UAAU,SAAS,CAAC;AAgDzF,IAAM,YAAY,oBAAI,IAAI;AAAA,MACxB;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAC1F;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC1F;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAC1F;AAAA,MAAK;AAAA,MAAM;AAAA,MAAM;AAAA,MAAM;AAAA,MAAM;AAAA,MAAM;AAAA,MAAM;AAAA,MAAM;AAAA,MAAM;AAAA,MAAM;AAAA,MAAM;AAAA,MAAM;AAAA,MAAM;AAAA,MAAM;AAAA,MAAM;AAAA,MACzF;AAAA,MAAM;AAAA,MAAM;AAAA,IACd,CAAC;AA6CD,IAAM,OAAO,uBAAO,MAAM;AAC1B,IAAM,QAAQ;AACd,IAAM,WAAW;AACjB,IAAM,QAAQ;AACd,IAAM,SAAS;AACf,IAAM,QAAQ;AAAA;AAAA;;;AC3Bd,SAASE,YAAW,MAA0B;AAC5C,QAAM,MAAM,KAAK,IAAI;AACrB,QAAM,MAAM,IAAI,WAAW,IAAI,MAAM;AACrC,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,IAAK,KAAI,CAAC,IAAI,IAAI,WAAW,CAAC;AAC9D,SAAO;AACT;AAEA,SAAS,SAAS,OAA2B;AAC3C,MAAI,MAAM;AACV,aAAW,KAAK,MAAO,QAAO,OAAO,aAAa,CAAC;AACnD,SAAO,KAAK,GAAG;AACjB;AAIA,SAAS,OAAO,IAAuB;AACrC,QAAM,QAAQ,MAAM,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE;AAC1C,QAAM,MAAgB,CAAC;AACvB,aAAW,QAAQ,OAAO;AACxB,QAAI,gBAAgB,cAAc,KAAK,CAAC,MAAM,GAAM,KAAI,KAAK,SAAS,IAAI,CAAC;AAAA,SACtE;AACH,YAAM,OAAO,gBAAgB,aAAa,IAAI,YAAY,EAAE,OAAO,IAAI,IAAI,OAAO,IAAI;AACtF,UAAI,KAAK,GAAG,CAAC,GAAG,KAAK,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,MAAO,EAAE,CAAC,EAAa,QAAQ,QAAQ,EAAE,CAAC,CAAC;AAAA,IACtF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,QAAQ,KAAsB;AACrC,MAAI,eAAe,WAAY,QAAO,SAAS,GAAG;AAClD,MAAI,OAAO,QAAQ,SAAU,QAAO,SAAS,IAAI,YAAY,EAAE,OAAO,GAAG,CAAC;AAC1E,QAAM,IAAI,YAAY,UAAU,WAAW,qDAAqD;AAClG;AAEA,SAAS,WAAW,KAAmB;AACrC,MAAI,IAAI,QAAQ,QAAW;AACzB,UAAM,IAAI,YAAY,WAAW,WAAW,yCAAyC;AAAA,EACvF;AACA,MAAI,IAAI,SAAS,UAAa,IAAI,QAAQ,OAAW,QAAO,CAAC;AAC7D,QAAMC,SAAQ,IAAI,SAAS,SAAY,CAAC,IAAI,OAAO,IAAI,IAAI;AAC3D,MAAIA,OAAM,WAAW,KAAK,IAAI,QAAQ,QAAW;AAC/C,UAAM,IAAI,YAAY,UAAU,WAAW,iDAAiD;AAAA,EAC9F;AACA,QAAM,aAAa,IAAI,eAAe,SAAY,CAAC,IAAI,EAAE,YAAY,OAAO,IAAI,UAAU,EAAE;AAC5F,SAAO,EAAE,YAAY,EAAE,OAAAA,QAAO,KAAK,QAAQ,IAAI,GAAG,GAAG,GAAG,WAAW,EAAE;AACvE;AAEA,SAAS,WAAW,KAAmB;AACrC,SAAO;AAAA,IACL,GAAI,IAAI,aAAa,EAAE,YAAY,IAAI,WAAW,IAAI,CAAC;AAAA,IACvD,GAAI,IAAI,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,CAAC;AAAA,IAC1C,GAAI,IAAI,OAAO,SAAY,EAAE,IAAI,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC;AAAA,IACrD,GAAI,IAAI,uBAAuB,QAAQ,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,IAC7D,GAAI,IAAI,QAAQ,QAAQ,EAAE,KAAK,MAAe,IAAI,CAAC;AAAA,IACnD,GAAI,IAAI,kBAAkB,QAAQ,EAAE,eAAe,MAAe,IAAI,CAAC;AAAA,IACvE,GAAG,WAAW,GAAG;AAAA,EACnB;AACF;AAEA,SAAS,WAAW,GAAgB;AAClC,MAAI,CAAC,EAAE,OAAQ,QAAO,CAAC;AACvB,SAAO;AAAA,IACL,QAAQ,OAAO,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC;AAAA,IACrC,mBAAmB,EAAE,sBAAsB;AAAA,IAC3C,KAAK,EAAE,QAAQ;AAAA,IACf,iBAAiB,EAAE,oBAAoB;AAAA,IACvC,GAAI,EAAE,oBAAoB,SAAY,CAAC,IAAI,EAAE,iBAAiB,EAAE,gBAAgB;AAAA,IAChF,GAAI,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,IAAI,CAAC;AAAA,EACrD;AACF;AAEA,SAAS,UAAU,GAA8B;AAC/C,MAAI,EAAE,SAAS,UAAU;AACvB,WAAO,OAAO,OAAO;AAAA,MACnB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,MACV,cAAc,EAAE;AAAA,MAChB,YAAY;AAAA,MACZ,YAAY,EAAE;AAAA,IAChB,CAAC;AAAA,EACH;AACA,SAAO,OAAO,OAAO;AAAA,IACnB,MAAM;AAAA,IACN,aAAa,EAAE,gBAAgB;AAAA,IAC/B,UAAU,EAAE,aAAa;AAAA,IACzB,YAAY,EAAE,eAAe,YAAY,YAAY;AAAA,IACrD,UAAU,EAAE,YAAY;AAAA,IACxB,cAAc,EAAE;AAAA,IAChB,YAAY,EAAE,eAAe;AAAA,IAC7B,GAAI,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,IAAI,CAAC;AAAA,IAC3E,YAAY,EAAE;AAAA,IACd,kBAAkB,OAAO,QAAQ,EAAE,oBAAoB,CAAC,GAAG,IAAID,WAAU,CAAC;AAAA,IAC1E,GAAG,WAAW,CAAC;AAAA,EACjB,CAAC;AACH;AAMA,SAAS,UAAU,KAA+B;AAChD,QAAM,QAAQ,MAAM,KAAK,IAAI,UAAU,EAAE,IAAI,CAAC;AAC9C,SAAO,UAAU,SAAY,MAAM,OAAO,OAAO,KAAK,EAAE,OAAO,OAAO,KAAK,EAAE,CAAC;AAChF;AAEA,eAAe,WAAcE,OAAwB,OAAO,WAAuB;AACjF,MAAI;AACF,WAAO,MAAMA,MAAK;AAAA,EACpB,SAAS,KAAK;AACZ,UAAM,IAAI;AACV,UAAMC,QAAO,EAAE,SAAS,YAAY,EAAE,SAAS,SAAS,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI;AAC9E,QAAIA,MAAM,OAAM,UAAU,IAAI,YAAYA,OAAM,MAAM,EAAE,MAAM,CAAC;AAC/D,UAAM;AAAA,EACR;AACF;AAqBA,SAAS,UAAUC,QAAuB;AACxC,QAAM,QAAQ,OAAO,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,MAAMA,MAAK;AAC3D,SAAO,QAAQ,IAAI,MAAM,CAAC,CAAC,KAAK;AAClC;AAEA,SAAS,UAAU,MAA0B;AAC3C,QAAM,OAAO;AACb,SAAO,EAAE,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK;AAC5C;AAEA,SAAS,KAAK,GAAmB;AAC/B,MAAI,CAAC,OAAO,UAAU,CAAC,KAAK,IAAI,KAAK,IAAI,MAAO,OAAM,IAAI,YAAY,UAAU,QAAQ,CAAC,EAAE;AAC3F,SAAO;AACT;AAMO,SAAS,OACd,QACA,IACA,MAC6B;AAC7B,QAAMC,QAAO,OAAO,IAAY,SAC9B,UAAU,MAAM,OAAO,KAAK,EAAE,IAAI,aAAa,IAAI,KAAK,CAAC,CAAC;AAE5D,QAAM,aAAa,OAAO,OAAsC;AAC9D,UAAM,CAACC,QAAO,MAAM,IAAI,CAAC,MAAMD,MAAK,IAAI,KAAK,GAAG,MAAMA,MAAK,IAAI,IAAI,CAAC;AACpE,UAAM,OAAO,IAAI,gBAAgB;AACjC,QAAI;AACJ,UAAM,QAAQ,MAAqB;AACjC,WAAK,MAAM,IAAI,YAAY,SAAS,eAAe,CAAC;AACpD,iBAAW,GAAG,MAAM,EAAE;AACtB,aAAO;AAAA,IACT;AACA,UAAM,OAAO,CAAC,QAAkC,OAAO,IAAI,EAAE,IAAI,iBAAiB,IAAI,IAAI,CAAC;AAC3F,UAAME,YAAW,IAAI;AAAA,MACnB;AAAA,QACE,MAAM,KAAK,YAAY;AACrB,gBAAM,QAAQ,MAAM,WAAW,MAAM,GAAG,KAAK,IAAI,QAAW,KAAK,MAAM,GAAG,MAAM;AAChF,cAAI,MAAM,SAAS,EAAG,YAAW,QAAQ,KAAK;AAAA,cACzC,YAAW,MAAM;AAAA,QACxB;AAAA,QACA,QAAQ,YAAY,KAAM,MAAM,KAAK,OAAO;AAAA,MAC9C;AAAA,MACA,EAAE,eAAe,EAAE;AAAA,IACrB;AACA,UAAMC,YAAW,IAAI,eAA2B;AAAA,MAC9C,OAAO,CAAC,OAAO,eACb;AAAA,QACE,MAAM,GAAG,KAAK,IAAI,OAAO,YAAY,IAAI,CAAC,WAAW,QAAQ,KAAK,MAAM,CAAC,CAAC;AAAA,QAC1E;AAAA,MACF;AAAA,MACF,OAAO,YAAY,KAAM,MAAM,KAAK,OAAO;AAAA,MAC3C,OAAO,MAAM,MAAM;AAAA,IACrB,CAAC;AACD,WAAO,EAAE,IAAI,OAAAF,QAAO,QAAQ,UAAAC,WAAU,UAAAC,WAAU,MAAM;AAAA,EACxD;AAEA,QAAMC,WAAU,OAAO,MAAc,WAAyC;AAC5E,QAAI,KAAK,KAAK,IAAI,EAAG,QAAO;AAC5B,UAAM,IAAI,MAAM,OAAO,SAAS,EAAE,IAAI,gBAAgB,MAAM,MAAM,QAAQ,EAAE,GAAG,MAAM;AACrF,YAAS,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO,CAAC,GAAgB,CAAC;AAAA,EAClE;AAEA,QAAMC,UAAS,OAAU,QAAgD;AACvE,UAAM,KAAM,MAAM,OAAO,KAAK,EAAE,IAAI,aAAa,QAAQ,OAAO,CAAC;AACjE,QAAI;AACF,aAAO,MAAM,IAAI,EAAE;AAAA,IACrB,SAAS,KAAK;AACZ,YAAM,GAAG,MAAM,EAAE;AACjB,YAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,WAAW,CAAC,IAAY,OAA8B;AAC1D,UAAM,OAAO,IAAI,gBAAgB;AACjC,UAAM,SAAS,OAAO,UAAoC,CAAC,MAA6B;AACtF,YAAM,SAAS,YAAY,IAAI,CAAC,QAAQ,UAAU,OAAO,KAAK,MAAM,CAAC;AACrE,iBAAS;AACP,eAAO,eAAe;AACtB,cAAM,IAAI,MAAM,OAAO,IAAI,EAAE,IAAI,eAAe,IAAI,UAAU,KAAK,CAAC;AACpE,YAAI,EAAE,GAAI,QAAO,YAAa,EAAE,SAAS,SAAS,EAAE,OAAO,CAAC,GAAsB,EAAE;AACpF,YAAI,EAAE,UAAU,SAAU,OAAM,IAAI,YAAY,EAAE,OAAO,QAAQ;AACjE,cAAM,OAAO,SAAS,EAAE,IAAI,aAAa,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,WAAW,GAAG,GAAG,MAAM;AAAA,MACzF;AAAA,IACF;AACA,WAAO;AAAA,MACL;AAAA,MACA,GAAG;AAAA,MACH;AAAA,MACA,MAAM,QAAQ;AACZ,aAAK,MAAM,IAAI,YAAY,SAAS,iBAAiB,CAAC;AACtD,cAAM,GAAG,MAAM,EAAE;AAAA,MACnB;AAAA,MACA,QAAQ,OAAO,aAAa,IAAI;AAC9B,mBAAS;AACP,cAAI;AACF,kBAAM,MAAM,OAAO;AAAA,UACrB,SAAS,KAAK;AACZ,gBAAI,KAAK,OAAO,QAAS;AACzB,kBAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAa,OACjB,SACA,QAC0B;AAC1B,UAAM,SAAS;AAAA,MACb,QAAQ,UAAU,CAAC,IAAI,cAAc,QAAQ,OAAO,EAAE,GAAG,KAAK,YAAY,QAAQ,KAAK,IAAI;AAAA,IAC7F;AACA,UAAM,IAAK,MAAM;AAAA,MAAW,MAC1B,OAAO;AAAA,QACL,QAAQ,SACJ,EAAE,IAAI,oBAAoB,IAAI,QAAQ,OAAO,IAAI,GAAG,OAAO,IAC3D;AAAA,UACE,IAAI;AAAA,UACJ,MAAM,QAAQ,QAAQ;AAAA,UACtB,MAAM,KAAK,QAAQ,IAAc;AAAA,UACjC,GAAG;AAAA,UACH,GAAI,IAAI,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAAA,QACvC;AAAA,MACN;AAAA,IACF;AACA,UAAM,UAAU,UAAU,CAAC;AAC3B,QAAI,QAAQ,OAAQ,QAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,MAAM,GAAG,EAAE,KAAK,QAAQ,CAAC;AACxF,WAAO,OAAO,OAAO,MAAM,WAAW,EAAE,EAAY,GAAG,EAAE,KAAK,QAAQ,CAAC;AAAA,EACzE;AAEA,QAAMC,UAAS,OAAON,OAAc,UAA4B,CAAC,MAAyB;AACxF,UAAM,SAAS,QAAQ,UAAU;AACjC,QAAI,WAAW,KAAK,WAAW,KAAK,WAAW,GAAG;AAChD,YAAM,IAAI,YAAY,cAAc,WAAWA,KAAI,EAAE;AAAA,IACvD;AACA,UAAM,SAAS,QAAQ,UAAU;AACjC,WAAO,eAAe;AACtB,UAAM,MAAM,EAAE,IAAI,gBAAyB,MAAM,OAAOA,KAAI,GAAG,OAAO;AACtE,UAAM,IAAI,MAAM,OAAO,SAAS,KAAK,MAAM,EAAE,MAAM,CAAC,QAAiB;AACnE,aAAO,eAAe;AACtB,YAAMF,QAAQ,IAA2B;AACzC,UAAIA,UAAS,YAAa,OAAM,IAAI,YAAY,aAAa,WAAWE,KAAI,EAAE;AAC9E,UAAIF,UAAS,SAAU,OAAM;AAC7B,YAAM,IAAI,YAAY,aAAa,WAAWE,KAAI,EAAE;AAAA,IACtD,CAAC;AACD,WAAO,CAAC,GAAK,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO,CAAC,CAAe;AAAA,EACpE;AAEA,QAAM,SAAS,CAAC,aAAwC;AAAA,IACtD,QAAQ;AAAA,IACR,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,KAAK,QAAQ,QAAQ,CAAC;AAAA,EAC9B;AAEA,QAAM,aAAa,CAAC,UAA2B,CAAC,MAAkB;AAChE,UAAM,OAAO;AACb,UAAM,OAAO,OAAO,OAAO;AAC3B,UAAM,KAAK,KAAK,KAAK,EAAE,IAAI,aAAa,QAAQ,OAAO,CAAC;AACxD,QAAI;AACF,WAAK,KAAK,EAAE,IAAI,aAAa,IAAI,KAAK,CAAC;AACvC,WAAK,KAAK,EAAE,IAAI,eAAe,IAAI,SAAS,QAAQ,WAAW,IAAI,CAAC;AACpE,aAAO,SAAS,IAAI,UAAU,KAAK,KAAK,EAAE,IAAI,aAAa,IAAI,MAAM,MAAM,CAAC,CAAC,CAAC;AAAA,IAChF,SAAS,KAAK;AACZ,WAAK,IAAI,EAAE,IAAI,YAAY,GAAG,CAAC;AAC/B,YAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,EAAE,QAAQ,WAAW;AAAA,IAC3B,SAASM;AAAA,IACT,QAAQ,CAAC,UAAU,CAAC,MAClBD,QAAO,OAAO,OAAO;AACnB,YAAM,OAAO,OAAO,OAAO;AAC3B,YAAM,OAAO,KAAK,EAAE,IAAI,aAAa,IAAI,KAAK,CAAC;AAC/C,YAAM,OAAO,KAAK,EAAE,IAAI,eAAe,IAAI,SAAS,QAAQ,WAAW,IAAI,CAAC;AAC5E,aAAO,SAAS,IAAI,MAAML,MAAK,IAAI,KAAK,CAAC;AAAA,IAC3C,CAAC;AAAA,IACH,SAAS,OAAO,YAAY;AAC1B,YAAM,SAAS,QAAQ,UAAU;AACjC,aAAO,eAAe;AACtB,UAAI,QAAQ,IAAK,QAAO,WAAW,SAAS,QAAQ,GAAG;AACvD,YAAM,OAAO,QAAQ,QAAQ;AAC7B,UAAI,KAAK,SAAS,GAAG,EAAG,OAAM,IAAI,YAAY,iBAAiB,IAAI;AACnE,YAAM,OAAiB;AAAA,QACrB,QAAQ;AAAA,QACR,MAAM,MAAMI,SAAQ,MAAM,MAAM;AAAA,QAChC,MAAM,KAAK,QAAQ,IAAc;AAAA,MACnC;AACA,aAAOC,QAAO,OAAO,OAAO;AAC1B,cAAM,IAAI,MAAM,OAAO,IAAI,EAAE,IAAI,gBAAgB,IAAI,MAAM,UAAU,KAAK,CAAC;AAC3E,YAAI,CAAC,EAAE,MAAM,EAAE,UAAU,cAAe,OAAM,IAAI,YAAY,EAAE,OAAO,SAAS;AAChF,cAAM,OAAO,SAAS,EAAE,IAAI,aAAa,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,GAAG,WAAW,GAAG,GAAG,MAAM;AACvF,cAAME,UAAU,MAAM,OAAO,KAAK;AAAA,UAChC,IAAI;AAAA,UACJ;AAAA,UACA,OAAOC;AAAA,UACP,MAAMC;AAAA,QACR,CAAC;AACD,YAAIF,YAAW,EAAG,OAAM,IAAI,YAAY,UAAUA,OAAM,GAAG,SAAS;AACpE,eAAO,WAAW,EAAE;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAtcA,IA2HM,KAoFA,UAEA,OA8BA,SACA,SACA,MACA,OACAC,aACAC;AApPN;AAAA;AAAA;AAAA;AACA;AA0HA,IAAM,MAAM;AAoFZ,IAAM,WAAW;AAEjB,IAAM,QAAQ;AA8Bd,IAAM,UAAU;AAChB,IAAM,UAAU;AAChB,IAAM,OAAO;AACb,IAAM,QAAQ,IAAI,gBAAgB,EAAE;AACpC,IAAMD,cAAa;AACnB,IAAMC,YAAW;AAAA;AAAA;;;ACzLV,SAAS,SAAS,QAAiC,QAA8B;AACtF,QAAM,KAAK,QAAQ;AACnB,QAAM,KAAK,OAAO;AAClB,MAAI,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAG,QAAO;AACxC,QAAM,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG;AACzE,SAAO,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG;AAC7E;AAEO,SAAS,aACd,KACA,SACoB;AACpB,MAAI,QAAQ,UAAa,YAAY,UAAa,CAAC,OAAO,SAAS,OAAO,EAAG,QAAO;AACpF,SAAO,GAAG,GAAG,IAAI,KAAK,MAAM,OAAO,CAAC;AACtC;AAzEA;AAAA;AAAA;AAAA;AAAA;;;ACwCO,SAAS,QAAQ,MAAsB,KAAsB;AAClE,SAAO,KAAK,SAAS,OAAO,KAAK,OAAO,SAAS,GAAG;AACtD;AA1CA,IAIa;AAJb;AAAA;AAAA;AAEA;AAEO,IAAM,aAA8B,OAAO,OAAO,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;AAAA;AAAA;;;ACJ3E;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACgCO,SAAS,QAAQ,MAAsB,MAAY,MAAc,YAAY,MAAe;AACjG,QAAM,OAAO,KAAK,SAAS,YAAY,MAAQ;AAC/C,MAAI,KAAK,SAAS,EAAG,SAAQ,OAAO,UAAU,KAAK,cAAc,OAAO,QAAW;AACnF,QAAM,QAAQ,KAAK,SAAS,KAAK,MAAM,IAAI,QAAQ,MAAM,KAAK,GAAG,IAAI,IAAI;AACzE,UAAS,QAAQ,QAAS,UAAU;AACtC;AArCA,IAUa;AAVb;AAAA;AAAA;AACA;AACA;AAIA;AAIO,IAAM,OAAO;AAAA;AAAA;;;ACAb,SAAS,UAAUC,OAAsB;AAC9C,SAAO,WAAWA,KAAI,KAAK,EAAE;AAC/B;AAZA,IAEM;AAFN;AAAA;AAAA;AAAA;AAEA,IAAM,aAAwD;AAAA,MAC5D,GAAG,OAAO,YAAY,OAAO,QAAQ,CAAC,EAAE,IAAI,CAAC,CAACC,OAAMC,MAAK,MAAM,CAAC,IAAID,KAAI,IAAIC,MAAK,CAAC,CAAC;AAAA,MACnF,aAAa,EAAE;AAAA,MACf,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,WAAW;AAAA,IACb;AAAA;AAAA;;;AC4LA,SAAS,QAAQ,IAAe,KAAqB;AACnD,MAAK,KAA6B,UAAU,UAAa,eAAe,GAAG,YAAY;AACrF,WAAO;AAAA,EACT;AACA,QAAMC,QAAQ,KAA4B;AAC1C,QAAMC,SAAQ,UAAU,OAAOD,UAAS,WAAWA,QAAO,KAAK;AAC/D,SAAO,IAAI,GAAG,WAAWC,MAAK;AAChC;AAEO,SAAS,aAAa,MAA0B;AACrD,QAAM,QAAkB,CAAC;AACzB,MAAI,MAAM;AACV,SAAO,QAAQ,IAAI,MAAM,MAAM;AAC7B,UAAM,KAAK,IAAI,IAAI;AACnB,UAAM,IAAI;AAAA,EACZ;AACA,QAAM,OAAO,KAAK,MAAM,KAAK,KAAK,QAAQ,QAAQ,EAAE;AACpD,SAAO,MAAM,WAAW,IAAI,QAAQ,MAAM,GAAG,IAAI,IAAI,MAAM,QAAQ,EAAE,KAAK,GAAG,CAAC;AAChF;AAEA,SAAS,QAAQ,MAAkC;AACjD,SAAO,MAAM,MAAM,KAAK,OAAO,WAAW;AAC5C;AAEA,SAAS,aAAa,IAAsB,QAAQ,OAAe;AACjE,QAAM,OAAO,GAAG,iBACZC,WACA,GAAG,cACD,UACA,GAAG,WACD,WACA,GAAG,SACDC,WACA;AACV,QAAM,WAAW,GAAG,eAAe,GAAG,iBAAiB,MAAQ;AAC/D,QAAM,QAAQ,GAAG,QAAQ,YAAY;AACrC,SAAO,QAAQ,QAAQ,OAAO,QAAQ;AACxC;AAEA,SAAS,KAAK,GAAyD;AACrE,MAAI,MAAM,UAAa,MAAM,KAAM,QAAO;AAC1C,SAAO,aAAa,OAAO,EAAE,QAAQ,IAAI;AAC3C;AASA,SAAS,UAAU,GAAkB,MAA8B,MAA6B;AAC9F,MAAI,EAAE,UAAU,QAAQ,CAAC,EAAE,OAAO;AAChC,UAAM,QAAQ,EAAE,SAAS,EAAE,MAAM,MAAM,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG;AAC/D,UAAM,EAAE,KAAK,SAAAC,SAAQ,IAAI,cAAc,OAAO,EAAE,QAAQ,GAAG,KAAK,CAAC;AACjE,MAAE,OAAO;AACT,QAAIA,UAAS;AACX,QAAE,SAAS;AACX,QAAE,OAAO;AAAA,IACX;AAAA,EACF;AACA,MAAI,EAAE,OAAQ,QAAO;AACrB,IAAE,OAAO,MAAM,IAAI;AACnB,SAAO;AACT;AAEA,SAAS,YACP,QACAC,OACA,MACA,IACyB;AACzB,QAAM,OAAO,OAAO;AACpB,SAAO,QAAQ,YAAY,EAAE,MAAM,MAAM,MAAMA,MAAK,MAAM,OAAO,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE;AACtF;AAEA,SAAS,aACP,QACAA,OACA,MACA,IACY;AACZ,QAAM,OAAO,OAAO,SAAS,IAAI;AACjC,QAAM,OAAO,MAAMA,MAAK,MAAM,OAAO,KAAK,KAAK,CAAC,CAAC;AACjD,QAAM,KAAK,KAAK;AAChB,QAAM,QACJ,OAAO,WAAW,YAAY,EAAE,MAAM,OAAO,SAAS,KAAK,GAAG,KAAK,MAAM,KAAK,GAAG,EAAE;AACrF,SAAO,IAAI,WAAW,IAAI,KAAK,GAAG,GAAG,MAAM,GAAG,SAAS,KAAK;AAC9D;AAGA,SAAS,SAAY,IAA4B;AAC/C,MAAI;AACF,WAAO,GAAG;AAAA,EACZ,SAAS,KAAK;AACZ,QAAK,IAA4B,UAAU,UAAU,KAAK,EAAG,QAAO;AACpE,UAAM;AAAA,EACR;AACF;AAMA,SAASC,QAAO,OAAuB;AACrC,MAAI,QAAQ,OAAQ,QAAO;AAC3B,QAAM,OAAO,QAAQ;AACrB,QAAMC,QAAO,SAAS,IAAI,IAAI;AAC9B,QAAMC,SAAQ,SAAS,MAAM,QAAQ,aAAa,IAAI,aAAa;AACnE,SAAOD,QAAOC;AAChB;AAEA,SAAS,SAAS,MAAsB;AACtC,UAAQ,OAAO,YAAY,IAAI,MAAM,OAAO,aAAa,IAAI;AAC/D;AAEA,SAAS,QAAQ,KAAuB;AACtC,QAAMR,QAAQ,KAAmC;AACjD,SAAOA,UAAS,YAAYA,UAAS;AACvC;AAEA,SAAS,KAAK,KAAuB;AACnC,SAAQ,KAAmC,SAAS;AACtD;AAEA,SAAS,MAAM,GAA2B;AACxC,SAAO,YAAY,IAAI,KAAK,EAAE,YAAY,OAAO,qBAAqB;AACxE;AAEA,SAAS,WAAW,MAAkB,KAAc,MAA4B;AAC9E,QAAM,IAAI,KAAK;AACf,MAAI,MAAM,QAAQ,KAAK,CAAC,EAAE,OAAO;AAC/B,UAAM,MAAM,EAAE,WAAW,EAAE;AAC3B,QAAI,EAAE,YAAY,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,OAAW,QAAO;AAC9D,QAAI,KAAK,aAAa,KAAK,aAAa,IAAI,CAAC,EAAE,QAAS,QAAO;AAAA,EACjE;AACA,SAAO,EAAE,SAAS,WAAc,CAAC,OAAO,EAAE,WAAW,cAAc;AACrE;AAEA,SAAS,cACP,IACA,MACA,QACAK,OACM;AACN,QAAM,OAAO,GAAG;AAChB,MAAI,CAAC,KAAM;AACX,MAAI,MAAM,KAAK;AACf,SAAO,KAAK;AACV,UAAM,KAAK,IAAI,KAAK;AACpB,QAAI,MAAM,GAAG,QAAQ,UAAa,GAAG,SAAS,QAAW;AACvD,YAAM,OAAO,EAAE,KAAK,GAAG,KAAK,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,KAAO;AACrE,UAAI,CAAC,QAAQ,MAAM,MAAM,MAAM,IAAI,GAAG;AACpC,QAAAA,MAAK,MAAM,OAAO,SAAS,aAAa,GAAG,GAAG,MAAM,SAAS,CAAC;AAC9D,YAAI,KAAK,OAAO;AAChB;AAAA,MACF;AAAA,IACF,OAAO;AACL,MAAAA,MAAK,MAAM,OAAO,SAAS,aAAa,GAAG,GAAG,MAAM,SAAS,CAAC;AAC9D;AAAA,IACF;AACA,QAAI,QAAQ,IAAI,OAAQ;AACxB,UAAM,IAAI;AAAA,EACZ;AACF;AAIA,SAAS,aAAa,UAAmD;AACvE,QAAM,QAAQ,oBAAI,IAA+B;AACjD,QAAM,OAAO,oBAAI,IAA2B;AAC5C,QAAMI,QAAO,CAAC,OACZ,IAAI,QAAQ,WAAc,GAAG,SAAS,KAAK,IAAI,SAAY,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG;AAEhF,WAAS,KAAK,GAAkB,IAAkB;AAChD,MAAE,KAAK;AACP,QAAI,CAAC,KAAK,IAAI,EAAE,EAAG,MAAK,IAAI,IAAI,CAAC;AAAA,EACnC;AAEA,WAASC,SAAQ,MAAkB,IAAmB;AACpD,UAAM,IAAI,KAAK;AACf,QAAI,CAAC,IAAI;AACP,YAAM,OAAO,CAAC;AACd,UAAI,EAAE,OAAO,UAAa,KAAK,IAAI,EAAE,EAAE,MAAM,EAAG,MAAK,OAAO,EAAE,EAAE;AAChE,QAAE,KAAK;AACP;AAAA,IACF;AACA,UAAM,IAAI,GAAG,IAAI;AACjB,UAAM,KAAKD,MAAK,EAAE,IAAI;AACtB,QAAI,OAAO,OAAW,MAAK,GAAG,EAAE;AAAA,EAClC;AAEA,WAAS,WAAW,MAA6C;AAC/D,UAAM,KAAK,KAAK,KAAK;AACrB,QAAI,IAAI,QAAQ,OAAW,QAAO;AAClC,UAAM,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG;AAC9B,QAAI,CAAC,KAAK,IAAI,EAAE,KAAKA,MAAK,EAAE,MAAM,QAAW;AAC3C,iBAAW,CAACE,IAAG,KAAK,KAAK,OAAO;AAC9B,YAAIA,GAAE,OAAO,UAAaA,GAAE,OAAQ;AACpC,YAAIC;AACJ,YAAI;AACF,UAAAA,MAAK,SAAS,KAAK,EAAE,MAAM,aAAa,KAAK,CAAC;AAAA,QAChD,QAAQ;AAAA,QAAC;AACT,cAAM,QAAQH,MAAKG,GAAE;AACrB,YAAI,UAAU,OAAW,MAAKD,IAAG,KAAK;AAAA,MACxC;AAAA,IACF;AACA,UAAM,IAAI,KAAK,IAAI,EAAE;AACrB,WAAO,KAAK,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI;AAAA,EACjD;AACA,QAAM,SAAS,CAAC,SAAiC,MAAM,IAAI,KAAK,IAAI,KAAK;AACzE,SAAO,EAAE,SAAAD,UAAS,YAAY,MAAM,MAAAD,OAAM,OAAO;AACnD;AAEA,SAAS,OACP,GACA,MACA,OACM;AACN,SAAO,OAAO,GAAG,EAAE,MAAM,QAAQ,cAAc,GAAG,QAAQ,UAAU,GAAG,GAAG,MAAM,CAAC;AACnF;AAOA,SAAS,OAAO,QAAkC;AAChD,SAAO,EAAE,UAAU,YAAY,IAAI,GAAG,SAAS,OAAO,SAAS,IAAI,EAAE;AACvE;AAEA,SAAS,QAAQ,GAAyB;AACxC,SAAO,EAAE,UAAU,EAAE,YAAY,OAAO,mBAAmB,SAAS,EAAE,UAAU;AAClF;AAEA,SAAS,WAAW,MAAkB,OAA0B;AAC9D,SAAO,OAAO,KAAK,MAAM,KAAK;AAC9B,SAAO;AACT;AAEA,SAAS,WAAW,MAAwC;AAC1D,QAAM,OAAO,EAAE,KAAK,GAAG,QAAQ,OAAO,OAAO,OAAO,WAAW,EAAE;AACjE,SAAO,OACH,EAAE,MAAM,QAAQ,cAAc,GAAG,UAAU,YAAY,IAAI,GAAG,QAAQ,UAAU,GAAG,GAAG,KAAK,IAC3F;AACN;AAEA,SAAS,QAAQ,IAAe,MAA2B;AACzD,QAAM,QAAQ,GAAG;AACjB,QAAM,SAAS,KAAK;AACpB,QAAM,OAAO,GAAG,WAAW,OAAO,MAAM,GAAG,KAAK,IAAI;AACpD,MAAI,CAAC,SAAS,SAAS,OAAW,QAAO;AACzC,MAAI,KAAoC,MAAM,IAAI;AAClD,SAAO,IAAI;AACT,QAAI,OAAO,KAAM,QAAO;AACxB,SAAM,GAAsD;AAAA,EAC9D;AACA,SAAO;AACT;AAEA,SAAS,UAAUI,OAAkB,MAAsC;AACzE,MAAI,SAAiCA;AACrC,SAAO,UAAU,WAAW,OAAO,MAAM,QAAQ,aAAa,MAAM,MAAM,MAAM;AAC9E,aAAS,OAAO;AAAA,EAClB;AACA,SAAO,UAAU,WAAW,OAAO,MAAM,QAAQ,aAAa,MAAM,MAAM,OACtE,SACA;AACN;AAEA,SAAS,SAAS,IAAe,QAAoB,IAAkB;AACrE,QAAM,QAAQ,GAAG,YAAY,GAAG;AAChC,MAAI;AACJ,MAAI;AACF,UAAM,GAAG,aAAa,SAAS,IAAI,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,EAAE;AAAA,EAC/D,QAAQ;AAAA,EAAC;AACT,MAAI,CAAC,OAAO,IAAI,UAAU,OAAO,MAAO;AACxC,QAAMC,QAAO,GAAG,MAAM,QAAQ,CAAC;AAC/B,MAAI;AACF,UAAM,WAAW,GAAG,aAAa,KAAKA,KAAI;AAC1C,QAAI,YAAY,aAAa,OAAQ,IAAG,iBAAiB,QAAQ;AAAA,EACnE,QAAQ;AAAA,EAAC;AACT,SAAO,OAAO,KAAK,SAAS;AAC5B,MAAI,KAAK,SAAS;AAClB,KAAG,iBAAiB,MAAM;AAC1B,SAAO,OAAOA;AACd,SAAO,SAAS;AAChB,KAAG,cAAc,MAAM;AACvB,SAAO,KAAK,OAAO;AACrB;AAEA,SAAS,eACP,IACA,UACAT,OACA;AACA,QAAM,OAAO,oBAAI,IAAgB;AACjC,QAAM,OAAO,oBAAI,IAA+B;AAChD,QAAMU,UAAS,CAAC,MAAkBC,WAAU,UAAmB;AAC7D,UAAM,SAAS,SAAS,IAAI;AAC5B,UAAM,OAAO,OAAO;AACpB,UAAM,QAAQ,KAAK,IAAI,MAAM;AAC7B,QAAI,MAAM,MAAM,QAAQ,KAAK;AAC7B,QAAIA,YAAW,QAAQ,QAAQ,MAAO,OAAM,KAAK,YAAY,KAAK,cAAc;AAChF,UAAM,MAAM,OAAO,SAAS,KAAK,MAAM;AACvC,QAAI,UAAU,UAAa,QAAQ,SAAS,CAAC,IAAK,QAAO;AACzD,UAAMH,QAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,UAAU,SAAS,CAAC,MAAM,MAAM;AAC7E,QAAIA,MAAK,WAAW,GAAG;AACrB,WAAK,IAAI,QAAQ,GAAG;AACpB,aAAO;AAAA,IACT;AACA,UAAM,QAAQR;AAAA,MAAK,MACjB;AAAA,QACE;AAAA,QACAQ,MAAK,IAAI,CAAC,MAAM,aAAa,CAAC,CAAC;AAAA,MACjC;AAAA,IACF;AACA,SAAK,IAAI,QAAQ,MAAM,GAAG;AAC1B,eAAW,CAAC,MAAM,EAAE,KAAK,MAAM,SAAS;AACtC,iBAAW,KAAKA,OAAM;AACpB,cAAM,SAAS,UAAU,GAAG,IAAI;AAChC,YAAI,UAAU,QAAQ,IAAI,MAAM,EAAG,UAAS,IAAI,QAAQ,EAAE;AAAA,MAC5D;AAAA,IACF;AACA,WAAO,MAAM,QAAQ,SAAS;AAAA,EAChC;AACA,SAAO;AAAA,IACL;AAAA,IACA,QAAAE;AAAA,IACA,MAAM,MAAkB,IAAmB;AACzC,WAAK,KAAK,QAAQ,MAAM,KAAK,KAAK,MAAM,QAAQ,SAAY,KAAK,KAAK,OAAO;AAC7E,UAAI,CAAC,IAAI;AACP,aAAK,OAAO,IAAI;AAChB;AAAA,MACF;AACA,MAAAA,QAAO,IAAI;AACX,WAAK,IAAI,IAAI;AAAA,IACf;AAAA,IACA,aAAa,QAAiC;AAC5C,UAAI,CAAC,KAAK,IAAI,MAAM,EAAG,MAAK,IAAI,QAAQ,OAAO,SAAS,QAAQ,KAAK,CAAC;AAAA,IACxE;AAAA,IACA,UAAU,QAA2B,KAA+B;AAClE,YAAM,QAAQ,KAAK,IAAI,MAAM;AAC7B,UAAI,QAAQ,UAAa,UAAU,UAAa,SAAU,QAAQ,IAAK;AACrE,aAAK,IAAI,QAAQ,GAAG;AAAA,IACxB;AAAA,EACF;AACF;AAEA,SAAS,cAAcP,QAAmBO,SAA6B;AACrE,MAAI;AACF,IAAAP,OAAM;AAAA,EACR,SAAS,KAAK;AACZ,QAAK,IAA2B,UAAU,UAAU,QAAQ,KAAK,CAACO,QAAO,EAAG,OAAM;AAClF,IAAAP,OAAM;AAAA,EACR;AACF;AAEA,SAAS,aACP,GACA,KACAM,OACA,QACwD;AACxD,MAAI;AACJ,MAAI;AACF,WAAO,EAAE,GAAG,aAAa,KAAKA,KAAI;AAAA,EACpC,QAAQ;AACN,WAAO;AAAA,EACT;AACA,MAAI,CAAC,QAAQ,SAAS,UAAU,KAAK,MAAM,cAAc,KAAK,CAAC,EAAE,GAAG,OAAO,KAAK,IAAI;AAClF,WAAO;AACT,QAAM,KAAK,UAAU,GAAG,IAAI;AAC5B,OAAK,GAAG,SAAS,KAAK,EAAG,QAAO;AAChC,QAAM,SAAS,EAAE,SAAS,IAAI;AAC9B,MAAI,OAAQ,QAAO,SAAS;AAAA,MACvB,GAAE,aAAa,IAAI;AACxB,SAAO,EAAE,MAAM,GAAG;AACpB;AAEA,SAAS,YACP,GACA,KACAA,OACA,QACA,QACM;AACN,QAAM,WAAW,aAAa,GAAG,KAAKA,OAAM,MAAM;AAClD,SAAO;AACP,MAAI,UAAU;AACZ,MAAE,SAAS,SAAS,IAAI,GAAG,IAAI;AAC/B,aAAS,GAAG,SAAS,MAAM,SAAS,EAAE;AAAA,EACxC;AACA,MAAI;AACF,UAAM,WAAW,EAAE,GAAG,aAAa,KAAKA,KAAI;AAC5C,QAAI,YAAY,aAAa,OAAQ,GAAE,GAAG,iBAAiB,QAAQ;AAAA,EACrE,QAAQ;AAAA,EAAC;AACX;AAEA,SAAS,cAAc,GAAgB,MAAkB,MAAc,IAAkB;AACvF,QAAM,MAAM,EAAE,KAAK,MAAM,EAAE,SAAS,IAAI,EAAE,OAAO,MAAM,EAAE,CAAC;AAC1D,IAAE,UAAU,EAAE,SAAS,IAAI,GAAG,OAAO,QAAQ,WAAW,MAAM,MAAS;AACzE;AAEA,SAAS,WAAW,GAAgB,QAAsB,QAAsB;AAC9E,QAAM,IAAI,OAAO,KAAK;AACtB,OAAK,OAAO,QAAQ,OAAO,KAAK,EAAE,OAAQ;AAC1C,QAAM,SAAS,EAAE,WAAW;AAC5B,IAAE,UAAU,KAAK,IAAI,GAAG,SAAS,MAAM;AACvC,MAAK,WAAW,OAAQ,EAAE,YAAY,IAAI;AACxC,QAAI;AACF,QAAE,SAAS,OAAO,IAAI,EAAE,OAAO,aAAa,OAAO,IAAI,GAAG,EAAE,UAAU,CAAC;AAAA,IACzE,QAAQ;AAAA,IAAC;AAAA,EACX;AACF;AAEA,SAAS,QACP,MACA,IACA,OACS;AACT,QAAM,QAAQ,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,QAAQ;AAC1D,MAAI,SAAS,GAAG,QAAQ,MAAM,IAAK,QAAO;AAC1C,SAAO,KAAK,MAAM,IAAI,KAAK;AAC3B,OAAK,OAAO,aAAa,IAAI,QAAQ,IAAI,CAAC;AAC1C,SAAO;AACT;AAEA,SAAS,cAAc,IAAe,KAAoB;AACxD,QAAM,WAAW,CAAC,SAAwC,KAAK,MAAM,KAAK;AAC1E,QAAM,SAAS,CAAC,SAAmCG,UAAS,SAAS,IAAI,GAAG,KAAK,KAAK,MAAM;AAC5F,QAAM,QAAQ,oBAAI,IAAgB;AAClC,QAAM,UAAU,oBAAI,IAAgB;AACpC,QAAM,SAAS,aAAa,QAAQ;AACpC,QAAM,UAAU,eAAe,IAAI,UAAU,CAAC,OAAOZ,MAAK,EAAE,CAAC;AAC7D,WAAS,UAAU,MAAwB;AACzC,SAAK,KAAK,QAAQ;AAClB,UAAM,IAAI,IAAI;AAAA,EAChB;AAEA,WAAS,aAAmB;AAC1B,eAAW,QAAQ,CAAC,GAAG,KAAK,GAAG;AAC7B,YAAM,IAAI,KAAK;AACf,UAAI,CAAC,EAAE,SAAS,MAAM,CAAC,GAAG;AACxB,cAAM,OAAO,IAAI;AACjB;AAAA,MACF;AACA,UAAI,CAAC,EAAE,UAAU,EAAE,MAAM,iBAAkB;AAC3C,UAAI;AACF,kBAAU,IAAI;AACd,cAAM,OAAO,IAAI;AAAA,MACnB,QAAQ;AAAA,MAAC;AAAA,IACX;AAAA,EACF;AAEA,WAASA,MAAQ,IAAgB;AAC/B,QAAI;AACF,aAAO,GAAG;AAAA,IACZ,SAAS,KAAK;AACZ,YAAM,QAAQ,IAAI,GAAG;AAAA,IACvB;AAAA,EACF;AAEA,WAAS,aAAa,IAAsB;AAC1C,QAAI;AACF,MAAAA,MAAK,EAAE;AAAA,IACT,SAAS,KAAK;AACZ,UAAK,IAA2B,UAAU,UAAU,QAAQ,EAAG,OAAM;AAAA,IACvE;AAAA,EACF;AAEA,WAAS,SAAS,QAA2BS,OAAc,IAAkC;AAC3F,UAAM,OAAO,GAAG,WAAW,QAAQA,OAAM,aAAa,IAAI,QAAQ,MAAM,CAAC,GAAG,CAAC;AAC7E,SAAK,WAAW,IAAI;AACpB,SAAK,aAAa,IAAI;AACtB,SAAK,OAAO,WAAW,EAAE;AACzB,WAAO;AAAA,EACT;AAEA,WAAS,OAAO,MAAoC;AAClD,QAAI,KAAK,KAAK,QAAQ;AACpB,YAAM,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK,KAAK,KAAK;AACnD,aAAO,EAAE,GAAI,KAAK,KAAK,MAA2B,KAAK;AAAA,IACzD;AACA,UAAM,OAAO,SAAS,IAAI,EAAE;AAC5B,QAAI,CAAC,WAAW,MAAM,GAAG,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG;AAChD,YAAM,QAAQ,EAAE,SAAS,MAAM,IAAI,GAAG,UAAU,YAAY,IAAI,EAAE;AAClE,YAAM,KAAKT,MAAK,MAAM,SAAS,IAAI,EAAE,MAAM,aAAa,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC;AAC7E,UAAI,CAAC,QAAQ,MAAM,IAAI,KAAK,EAAG,QAAO,KAAK,KAAK;AAAA,IAClD;AACA,WAAO,KAAK,KAAK;AAAA,EACnB;AAEA,WAAS,UAAU,QAAoBS,OAAsB;AAC3D,UAAM,OAAO,aAAa,MAAM;AAChC,WAAO,SAAS,MAAM,IAAIA,KAAI,KAAK,GAAG,IAAI,IAAIA,KAAI;AAAA,EACpD;AAEA,WAAS,aAAa,MAAwB;AAC5C,UAAM,IAAI,KAAK;AACf,QAAI,CAAC,UAAU,GAAG,SAAS,IAAI,EAAE,SAAS,MAAM,aAAa,OAAO,OAAO,IAAI,CAAC,CAAC,EAAG;AACpF,UAAM,OAAO,MAAM,aAAa,OAAO,OAAO,IAAI,CAAC;AACnD,UAAM,QAAQT,MAAK,MAAM,OAAO,IAAI,EAAE,SAAS,KAAK,CAAC,CAAC;AACtD,WAAO,OAAO,GAAG,EAAE,MAAM,OAAO,KAAK,MAAM,QAAQ,QAAQ,KAAK,CAAC;AACjE,MAAE,QAAQ,YAAY,SAAS,IAAI,GAAGA,OAAM,MAAM,EAAE,QAAQ,EAAE,MAAM,MAAM,OAAO,CAAC;AAAA,EACpF;AAEA,WAAS,SAAS,MAA0C;AAC1D,UAAM,IAAI,KAAK;AACf,QAAI,EAAE,UAAU,CAAC,EAAE,OAAQ,QAAO,EAAE;AACpC,UAAM,SAAS,SAAS,IAAI;AAC5B,UAAM,OAAO,MAAM,aAAa,OAAO,OAAO,IAAI,CAAC;AACnD,UAAM,OAAO,MAAM,OAAO,IAAI;AAC9B,UAAM,KAAK;AAAA,MACT,OAAO,CAAC,GAAW,IAAY,GAAW,YACxC,KAAK,EAAE,MAAM,KAAK,GAAG,IAAI,GAAG,OAAO;AAAA,MACrC,QAAQ,CAAC,GAAW,IAAY,OAAmB,aACjD,KAAK,EAAE,OAAO,KAAK,GAAG,IAAI,OAAO,QAAQ;AAAA,MAC3C,UAAU,CAAC,GAAW,SAAiB,KAAK,EAAE,SAAS,KAAK,GAAG,IAAI;AAAA,IACrE;AACA,MAAE,SAAS,aAAa,QAAQA,OAAM,MAAM,EAAE;AAC9C,WAAO,EAAE;AAAA,EACX;AAEA,WAAS,eAAe,MAAkB,MAA0B;AAClE,UAAM,IAAI,KAAK;AACf,UAAM,MAAM,EAAE,QAAQ,IAAI,WAAW,CAAC;AACtC,QAAI,IAAI,UAAU,KAAM,QAAO;AAC/B,UAAM,QAAQ,IAAI,WAAW,KAAK,IAAI,MAAM,IAAI,SAAS,GAAG,GAAG,CAAC;AAChE,UAAM,IAAI,IAAI,SAAS,GAAG,EAAE,GAAG,CAAC;AAChC,MAAE,OAAO;AACT,WAAO;AAAA,EACT;AAEA,WAAS,UAAU,MAAwB;AACzC,UAAM,IAAI,KAAK;AACf,QAAI,CAAC,EAAE,SAAS,MAAM,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAS;AACnD,UAAM,QAAQ,MAAO,EAAE,KAAoB,MAAM,GAAG,EAAE,GAAG;AACzD,UAAMG,SAAQ,MACZ,EAAE,SACEH,MAAK,MAAM,EAAE,QAAQ,MAAM,CAAC,IAC5BA,MAAK,MAAM,OAAO,IAAI,EAAE,UAAU,aAAa,OAAO,OAAO,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;AACzF,kBAAcG,QAAO,MAAM,QAAQ,OAAO,MAAM,IAAI,CAAC;AACrD,MAAE,QAAQ;AACV,MAAE,OAAO;AAAA,EACX;AAEA,WAAS,SAAS,MAAkB,MAAoB;AACtD,UAAM,IAAI,KAAK;AACf,QAAI,CAAC,EAAE,QAAQ;AACb,YAAM,KAAK,OAAO,IAAI;AACtB,UAAI,GAAG,SAAU,OAAM,IAAI,GAAG,WAAW,UAAU,OAAO,CAAC;AAC3D,UAAI,GAAG,YAAY,UAAa,OAAO,GAAG,SAAS;AACjD,cAAM,IAAI,GAAG,WAAW,UAAU,OAAO,CAAC;AAAA,MAC5C;AAAA,IACF;AACA,UAAM,SAAS,EAAE,YAAY,IAAI,SAAS,IAAI,IAAI;AAClD,QAAI,QAAQ;AACV,aAAO,SAAS,IAAI;AACpB,gBAAU,IAAI;AACd;AAAA,IACF;AACA,QAAI,EAAE,YAAY,GAAG;AACnB,UAAI,OAAO,EAAG,cAAa,IAAI;AAAA,UAC1B,GAAE,SAAS;AAChB,YAAM,MAAM,eAAe,MAAM,IAAI;AACrC,UAAI,OAAO,EAAE,IAAK,KAAI,KAAK,GAAG,EAAE,KAAK,IAAI;AACzC,QAAE,MAAM;AACR,gBAAU,IAAI;AACd;AAAA,IACF;AAEA,UAAM,OAAO,aAAa,IAAI;AAC9B,UAAM,SAAS,SAAS,IAAI;AAC5B,QAAI,OAAO,IAAI,EAAE,UAAU,OAAO,UAAU;AAC1C,MAAAH,MAAK,MAAM,OAAO,WAAW,MAAM,IAAI,CAAC;AACxC,QAAE,OAAO;AACT;AAAA,IACF;AACA,UAAM,QAAQ,IAAI,WAAW,IAAI;AACjC,QAAI,OAAO,GAAG;AACZ,YAAM,MAAMA,MAAK,MAAM,SAAS,IAAI,EAAE,SAAS,IAAI,CAAC;AACpD,YAAM,IAAI,IAAI,SAAS,GAAG,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC;AAAA,IACvD;AACA,IAAAA,MAAK,MAAM,SAAS,IAAI,EAAE,UAAU,MAAM,KAAK,CAAC;AAChD,MAAE,OAAO;AAAA,EACX;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,IACH,MAAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAIA,SAAS,UAAU,GAAgB,MAAoC;AACrE,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,KAAK,OAAO,IAAI;AACtB,MAAI,CAAC,GAAG,SAAU,QAAO;AACzB,OAAK,KAAK,OAAO;AACjB,SAAO,OAAO,IAAI;AACpB;AAEA,SAAS,SAAS,GAAgB,MAAkB,IAA4B;AAC9E,QAAM,EAAE,SAAS,IAAI;AACrB,QAAM,IAAI,KAAK;AACf,QAAM,QAAQ,GAAG,SAAS;AAC1B,MAAI,OAAO;AACX,MAAI;AACF,WAAO,QAAQ,KAAK,EAAE,WAAW,UAAa,SAAS,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM;AAAA,EACpF,QAAQ;AAAA,EAAC;AACT,MAAI,QAAQ,KAAK,CAAC,QAAQ,EAAE,OAAO,OAAO,IAAI,MAAM,MAAM;AACxD,MAAE,OAAO;AACT;AAAA,EACF;AACA,IAAE,SAAS;AACX,MAAI,CAAC,KAAM;AACX,IAAE,OAAO;AACT,IAAE,OAAO,EAAE,GAAG,IAAI,OAAO,QAAQ,EAAE;AACnC,QAAM,KAAK,EAAE,OAAO,KAAK,EAAE;AAC3B,MAAI,OAAO,OAAW,GAAE,OAAO,KAAK,GAAG,EAAE;AAC3C;AAEA,SAAS,cAAc,GAA6B;AAClD,QAAM,EAAE,IAAI,UAAU,MAAAA,OAAM,cAAc,UAAU,QAAQ,WAAW,WAAW,SAAS,IAAI;AAC/F,QAAM,EAAE,aAAa,IAAI;AACzB,QAAM,WAAW,CAAC,MAAkB,MAAc,OAAe,UAAwB;AACvF,UAAM,MAAM,GAAG,eAAe;AAC9B,QAAI,GAAG,OAAO,KAAK,IAAI,GAAG;AACxB,mBAAa,MAAM,SAAS,IAAI,EAAE,QAAQ,MAAM,OAAO,OAAO,GAAG,CAAC;AAClE;AAAA,IACF;AACA,cAAU,IAAI;AACd,iBAAa,MAAM,SAAS,IAAI,EAAE,OAAO,MAAM,OAAO,OAAO,GAAG,CAAC;AAAA,EACnE;AACA,QAAM,UAAU,OAAQ,GAA+B,cAAc;AACrE,QAAM,UAAU,CAAC,MAAkBa,UAAoD;AACrF,UAAM,QAAQ,KAAKA,MAAK,KAAK,MAAM,UAAUA,MAAK,YAAY;AAC9D,UAAM,QAAQ,KAAKA,MAAK,KAAK;AAC7B,QAAI,UAAU,UAAaA,MAAK,UAAU,KAAM,QAAO,CAAC,SAAS,OAAO,KAAK;AAC7E,QAAI,UAAU,UAAa,UAAU,OAAW,QAAO;AACvD,UAAM,KAAK,OAAO,IAAI;AACtB,WAAO,CAAC,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAAA,EAC1E;AACA,SAAO;AAAA,IACL,QAAQ,MAAM;AACZ,YAAM,QAAQ,SAAS,IAAI,EAAE,WAAW;AACxC,UAAI,SAAS,GAAG,OAAO,KAAK,IAAI,KAAK,OAAO,IAAI,EAAE,QAAQ;AACxD,aAAK,KAAK,OAAO;AACnB,YAAMC,UAAS,SAAS,WAAW,MAAM,GAAG,MAAM,KAAK,IAAI,GAAG,SAAS,IAAI,EAAE,OAAO;AACpF,YAAM,KAAK,OAAO,IAAI;AACtB,UAAIA,QAAQ,eAAc,IAAI,MAAM,SAAS,IAAI,GAAGd,KAAI;AACxD,YAAM,IAAI,KAAK;AACf,YAAM,OAAO,GAAG,MAAM,KAAK,IAAI,IAAI,OAAQ,EAAE,QAAQ,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;AACtF,YAAM,QAAQ,IAAI,KAAK,GAAG,WAAW,CAAC;AACtC,aAAO;AAAA,QACL,KAAK,GAAG,OAAO;AAAA,QACf,KAAK,GAAG,OAAO,QAAQ,aAAa,IAAI,CAAC;AAAA,QACzC,MAAM,KAAK;AAAA,QACX,OAAO,GAAG,SAAS;AAAA,QACnB,KAAK,QAAS,GAAG,OAAO,IAAK;AAAA,QAC7B,KAAK,QAAS,GAAG,OAAO,IAAK;AAAA,QAC7B,MAAM;AAAA,QACN;AAAA,QACA,OAAO,IAAI,KAAK,GAAG,WAAW,MAAM,QAAQ,CAAC;AAAA,QAC7C;AAAA,QACA,OAAO,IAAI,KAAK,GAAG,WAAW,MAAM,QAAQ,CAAC;AAAA,QAC7C,SAAS;AAAA,QACT,QAAQ,KAAK,KAAK,OAAO,IAAI,IAAI;AAAA,MACnC;AAAA,IACF;AAAA,IACA,QAAQ,MAAMa,OAAM;AAClB,UAAI,KAAK,KAAK,QAAQ;AACpB,YAAIA,MAAK,SAAS,UAAaA,MAAK,SAAS,MAAM;AACjD,eAAK,OAAQ,KAAK,OAAO,CAAC,YAAcA,MAAK,OAAO;AAAA,QACtD;AACA,YAAIA,MAAK,SAAS,UAAaA,MAAK,SAAS,KAAM,UAAS,MAAMA,MAAK,IAAI;AAC3E;AAAA,MACF;AACA,YAAM,OAAO,aAAa,IAAI;AAC9B,UAAIA,MAAK,SAAS,UAAaA,MAAK,SAAS,MAAM;AACjD,YAAI,GAAG,OAAO,KAAK,IAAI,EAAG,OAAM,IAAI,GAAG,WAAW,UAAU,YAAY,CAAC;AACzE,cAAM,OAAOA,MAAK,OAAO;AACzB,YAAI,UAAU,KAAK,OAAO,YAAY;AACpC,uBAAa,MAAM,SAAS,IAAI,EAAE,MAAM,MAAM,IAAI,CAAC;AACnD,eAAK,OAAQ,KAAK,OAAO,CAAC,YAAa;AAAA,QACzC;AAAA,MACF;AACA,UAAIA,MAAK,SAAS,UAAaA,MAAK,SAAS,QAAQ,GAAG,OAAO,KAAK,IAAI,GAAG;AACzE,iBAAS,MAAMA,MAAK,IAAI;AAAA,MAC1B;AACA,YAAM,QAAQ,QAAQ,MAAMA,KAAI;AAChC,UAAI,MAAO,UAAS,MAAM,MAAM,GAAG,KAAK;AACxC,WAAK,KAAK,OAAO;AAAA,IACnB;AAAA,IACA,OAAO,QAAQJ,OAAM;AACnB,YAAMM,UAAS,OAAO,KAAK,QAAQ,IAAIN,KAAI;AAC3C,aAAO,KAAK,QAAQ,OAAOA,KAAI;AAC/B,YAAM,QAAQM,UAAS,QAAQ,OAAO,IAAI,IAAI,OAAO,SAAS,MAAM,CAAC;AACrE,YAAM,KAAKA,WAAUf,MAAK,MAAM,SAAS,MAAM,EAAE,MAAM,UAAU,QAAQS,KAAI,CAAC,CAAC;AAC/E,aAAO,WAAW,SAAS,QAAQA,OAAM,EAAE,GAAG,KAAK;AAAA,IACrD;AAAA,IACA,MAAM,QAAQA,OAAM,MAAM;AACxB,aAAO,KAAK,SAAS;AACrB,YAAM,OAAO,UAAU,QAAQA,KAAI;AACnC,YAAM,SAAS,SAAS,MAAM;AAC9B,YAAM,OAAO,OAAO,SAAS,OAAO,YAAY;AAChD,UAAI,GAAG,MAAM,IAAI,KAAK,SAAS,QAAW;AACxC,QAAAT,MAAK,MAAM,OAAO,MAAM,MAAM,IAAI,CAAC;AAAA,MACrC,WAAW,GAAG,MAAM,IAAI,GAAG;AACzB,QAAAA,MAAK,MAAM,OAAO,MAAM,IAAI,CAAC;AAE7B,cAAM,SAAS,OAAO,YAAY,CAACgB;AACnC,YAAI,WAAW,iBAAkB,cAAa,MAAM,OAAO,MAAM,MAAM,MAAM,CAAC;AAAA,MAChF,WAAW,GAAG,OAAO,IAAI,GAAG;AAC1B,QAAAhB;AAAA,UAAK,MACH,OAAO,SACH,OAAO,OAAO,MAAM,MAAO,QAAQ,IAAI,EAAE,EAAE,IAAe,CAAC,IAC3D,OAAO,UAAU,MAAM,IAAI,WAAW,CAAC,CAAC;AAAA,QAC9C;AAAA,MACF,YAAY,OAAOiB,aAAYnB,YAAW,OAAO,QAAQ;AACvD,QAAAE,MAAK,MAAM,OAAO,SAAS,MAAM,OAAO,SAAS,CAAC;AAAA,MACpD,OAAO;AACL,cAAM,IAAI,GAAG,WAAW,UAAU,OAAO,CAAC;AAAA,MAC5C;AACA,YAAM,OAAO,SAAS,QAAQS,OAAM;AAAA,QAClC,QAAQ,GAAG,OAAO,IAAI;AAAA,QACtB,IAAK,OAAOQ,aAAYnB,WAAU,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,QACtD,aAAa,GAAG,MAAM,IAAI;AAAA,QAC1B,gBAAgB;AAAA,QAChB,MAAM;AAAA,QACN;AAAA,QACA,SAAS,KAAK,IAAI;AAAA,MACpB,CAAC;AAED,WAAK,KAAK,OAAO;AACjB,UAAI,GAAG,OAAO,IAAI,EAAG,MAAK,KAAK,UAAU;AACzC,aAAO;AAAA,IACT;AAAA,IACA,OAAO,SAAS,QAAQ,SAAS;AAC/B,cAAQ,OAAO,KAAK,SAAS;AAC7B,aAAO,KAAK,SAAS;AACrB,YAAM,OAAO,aAAa,OAAO;AACjC,YAAM,KAAK,UAAU,QAAQ,OAAO;AACpC,gBAAU,OAAO;AACjB,kBAAY,GAAG,QAAQ,SAAS,SAAS,MAAM,cAAc,GAAG,SAAS,MAAM,EAAE,CAAC;AAClF,cAAQ,OAAO;AACf,cAAQ,SAAS;AACjB,cAAQ,KAAK,OAAO;AAAA,IACtB;AAAA,IACA,OAAO,QAAQW,OAAM;AACnB,aAAO,KAAK,SAAS;AACrB,UAAI;AACJ,UAAI;AACF,cAAM,OAAO,GAAG,aAAa,QAAQA,KAAI;AACzC,YAAI,QAAQ,KAAK,MAAM,YAAY,KAAK,GAAG,OAAO,KAAK,IAAI,EAAG,QAAO;AAAA,MACvE,QAAQ;AAAA,MAAC;AACT,YAAM,KAAK,QAAQ,UAAU,GAAG,IAAI;AACpC,UAAI,MAAM;AACR,cAAM,SAAS,EAAE,SAAS,IAAI;AAC9B,YAAI,OAAQ,QAAO,IAAI;AAAA,YAClB,cAAa,IAAI;AAAA,MACxB;AACA,MAAAT,MAAK,MAAM,SAAS,MAAM,EAAE,OAAO,UAAU,QAAQS,KAAI,CAAC,CAAC;AAC3D,UAAI,QAAQ,GAAI,UAAS,GAAG,MAAM,EAAE;AAAA,IACtC;AAAA,IACA,MAAM,QAAQA,OAAM;AAClB,aAAO,KAAK,SAAS;AACrB,MAAAT,MAAK,MAAM,SAAS,MAAM,EAAE,MAAM,UAAU,QAAQS,KAAI,CAAC,CAAC;AAAA,IAC5D;AAAA,IACA,QAAQ,MAAM;AACZ,YAAM,WAAW,YAAY,IAAI;AACjC,YAAM,YAAY,SAAS,IAAI,EAAE,SAAS,IAAI;AAC9C,YAAMM,UAASf,MAAK,MAAM,SAAS,IAAI,EAAE,YAAY,aAAa,IAAI,CAAC,CAAC;AACxE,WAAK,KAAK,SAAS,oBAAI,IAAI;AAC3B,aAAO,OAAO,KAAK,MAAM,EAAE,UAAU,UAAU,CAAC;AAChD,iBAAW,CAACS,OAAM,EAAE,KAAKM,QAAQ,KAAI,GAAI,MAAK,KAAK,OAAO,IAAIN,OAAM,EAAE;AACtE,aAAO,CAAC,KAAK,MAAM,GAAGM,QAAO,IAAI,CAAC,CAACN,KAAI,MAAMA,KAAI,CAAC;AAAA,IACpD;AAAA,IACA,QAAQ,QAAQ,SAAS,QAAQ;AAC/B,aAAO,KAAK,SAAS;AACrB,YAAM,OAAO,UAAU,QAAQ,OAAO;AACtC,MAAAT,MAAK,MAAM,SAAS,MAAM,EAAE,QAAQ,QAAQ,IAAI,CAAC;AACjD,aAAO,SAAS,QAAQ,SAAS;AAAA,QAC/B,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,gBAAgB;AAAA,QAChB,MAAM,IAAI,YAAY,EAAE,OAAO,MAAM,EAAE;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,UAAI,CAAC,GAAG,OAAO,KAAK,IAAI,EAAG,OAAM,IAAI,GAAG,WAAW,UAAU,QAAQ,CAAC;AACtE,YAAM,SAAS,SAAS,IAAI;AAC5B,YAAM,OAAO,aAAa,IAAI;AAC9B,UAAI,OAAO,SAAS,GAAG,iBAAiB,MAAM;AAC5C,QAAAA,MAAK,MAAM,OAAO,SAAS,MAAM,GAAG,UAAU,IAAI,CAAC;AAAA,MACrD;AACA,aAAOA,MAAK,MAAM,OAAO,SAAS,IAAI,CAAC;AAAA,IACzC;AAAA,EACF;AACF;AAEA,SAAS,cAAc,GAAgB,QAAsB,OAAkC;AAC7F,QAAM,OAAO,OAAO;AACpB,QAAM,IAAI,KAAK;AACf,QAAM,SAASY,UAAS,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,EAAE;AACpD,MAAI,CAAC,OAAQ,QAAO;AACpB,QAAM,OAAO,MAAM;AACnB,QAAM,KAAK,aAAa,EAAE,OAAO,OAAO,IAAI,CAAC;AAC7C,QAAM,QAAQ,SAAS,MAAM;AAC3B,MAAE,UAAU,IAAI;AAChB,WAAO,EAAE,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC;AAAA,EACtC,CAAC;AACD,MAAI,UAAU,OAAW,QAAO;AAChC,MAAI,CAAC,EAAE,QAAQ;AACb,MAAE,OAAO;AACT,MAAE,SAAS;AACX,MAAE,MAAM;AAAA,EACV;AACA,IAAE,OAAO;AACT,SAAO,WAAW,QAAQ,KAAK;AAC/B,SAAO;AACT;AAEA,SAAS,SACP,QACA,MACA,IACA,MACoB;AACpB,QAAM,IAAI,KAAK;AACf,QAAM,OACJ,MAAM,EAAE,OACJ,EAAE,KAAK,EAAE,KAAK,KAAK,GAAI,EAAE,KAAK,QAAQ,SAAY,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,EAAG,IAC5E;AACN,SAAO,OAAO,OAAO,aAAa,IAAI,GAAG,IAAI,MAAM,EAAE,QAAQ,MAAM,IAAI;AACzE;AAEA,SAAS,SAAS,GAA2B;AAC3C,MAAI,EAAE,cAAc,EAAG,QAAO;AAC9B,IAAE,aAAa;AACf,SAAO;AACT;AAEA,SAAS,gBAAgB,GAA+B;AACtD,QAAM,EAAE,IAAI,QAAQ,cAAc,gBAAgB,WAAW,UAAU,SAAS,IAAI;AACpF,QAAMJ,QAAO,CAAC,QAAsB,WAAmB,WAAW,GAAG,QAAQ,MAAM;AAEnF,QAAMU,UAAS,CAAC,MAAkB,IAAa,OAAO,MAAM;AAC1D,UAAM,IAAI,KAAK;AACf,QAAI;AACF,QAAE,MAAM,MAAM,EAAE;AAChB,YAAM,SAAS,SAAS,SAAS,IAAI,GAAG,MAAM,IAAI,IAAI;AACtD,QAAE,SAAS,KAAK,SAAS;AACzB,QAAE,OAAO,QAAQ,MAAM,EAAE;AACzB,UAAI,EAAE,WAAW,OAAW,GAAE,QAAQ,OAAO,IAAI;AAAA,UAC5C,GAAE,QAAQ,IAAI,IAAI;AAAA,IACzB,SAAS,KAAK;AACZ,UAAI,QAAQ,GAAG,KAAK,KAAK,GAAG,GAAG;AAC7B,cAAM,IAAI,GAAG,WAAW,UAAW,IAAyB,IAAI,CAAC;AAAA,MACnE;AAAA,IACF;AAAA,EACF;AACA,QAAM,YAAY,CAAC,QAAsB,YAA6B;AACpE,UAAM,IAAI,OAAO,KAAK;AACtB,UAAM,SAAS,SAAS,OAAO,IAAI;AACnC,QAAI,CAAC,OAAO,UAAU,EAAE,OAAQ,QAAO;AACvC,UAAM,OAAOjB,QAAO,OAAO,KAAK,KAAK,UAAU,eAAe;AAC9D,QAAI,EAAE,YAAY,KAAK,CAAC,SAAS;AAC/B,QAAE,KAAK,MAAM,OAAO,SAAS,aAAa,OAAO,IAAI,GAAG,SAAS,IAAI,GAAG,MAAM,CAAC;AAAA,IACjF;AACA,WAAO;AAAA,EACT;AACA,QAAM,OAAO,CAAC,WAAyB;AACrC,UAAM,OAAO,EAAE,GAAG;AAClB,QAAI;AACF,UAAI,CAAC,KAAM,OAAM,IAAI,GAAG,WAAW,UAAU,OAAO,CAAC;AACrD,WAAK,KAAK,EAAE,IAAI,QAAQ,aAAa,OAAO,IAAI,CAAC;AAAA,IACnD,SAAS,KAAK;AACZ,UAAI,OAAO,OAAO,OAAW,IAAG,cAAc,OAAO,EAAE;AACvD,YAAM;AAAA,IACR;AAAA,EACF;AACA,QAAM,YAAY,CAAC,WAAyB;AAC1C,SAAK,OAAO,KAAK,OAAOgB,aAAYnB,YAAW,EAAE,OAAO,QAAQ,QAAS,QAAO,KAAK,MAAM;AAC3F,SAAK,OAAO,KAAK,OAAOmB,aAAY,YAAY,EAAE,OAAO,QAAQ,SAAS;AACxE,UAAI,OAAO,OAAO,OAAW,IAAG,cAAc,OAAO,EAAE;AACvD,YAAM,IAAI,GAAG,WAAW,UAAU,OAAO,CAAC;AAAA,IAC5C;AACA,UAAM,SAAS,SAAS,OAAO,IAAI;AACnC,QAAI,CAAC,OAAO,UAAU,CAAC,GAAG,MAAM,OAAO,KAAK,IAAI,KAAK,OAAO,QAAQ,OAAQ;AAC5E,QAAI;AACF,QAAE;AAAA,QAAK,MACL,OAAO,SAAS,aAAa,OAAO,IAAI,GAAG,SAAShB,QAAO,OAAO,KAAK,CAAC,GAAG,MAAM;AAAA,MACnF;AAAA,IACF,SAAS,KAAK;AACZ,UAAI,OAAO,OAAO,OAAW,IAAG,cAAc,OAAO,EAAE;AACvD,YAAM;AAAA,IACR;AAAA,EACF;AACA,SAAO;AAAA,IACL,KAAK,QAAQ;AACX,UAAI,CAAC,GAAG,OAAO,OAAO,KAAK,IAAI,EAAG,QAAO,UAAU,MAAM;AACzD,YAAM,IAAI,OAAO,KAAK;AACtB,YAAM,UAAU,EAAE,YAAY;AAC9B,QAAE,UAAU;AACZ,UAAI,EAAE,cAAc,KAAK,CAAC,EAAE,QAAQ;AAClC,cAAM,SAAS,SAAS,OAAO,IAAI;AACnC,UAAE,SAAS,CAAC,EACV,OAAO,SACP,OAAO,UACP,OAAO,YACP,OAAO,OAAO,IAAI,EAAE;AAEtB,cAAM,SAAS,EAAE,OAAO,WAAW,OAAO,IAAI;AAC9C,YAAI,OAAQ,QAAO,KAAK,OAAO;AAAA,YAC1B,UAAS,OAAO,IAAI;AAAA,MAC3B;AACA,WAAK,OAAO,QAAQ,OAAO,GAAG;AAC5B,YAAI;AACF,gBAAM,KAAK,OAAO,OAAO,IAAI;AAC7B,cAAI,GAAG,SAAU,OAAM,IAAI,GAAG,WAAW,UAAU,OAAO,CAAC;AAC3D,iBAAO,KAAK,KAAK,UAAU,GAAG;AAAA,QAChC,SAAS,KAAK;AACZ,cAAI,OAAO,OAAO,OAAW,IAAG,cAAc,OAAO,EAAE;AACvD,gBAAM;AAAA,QACR;AAAA,MACF;AACA,YAAM,OAAO,OAAO,KAAK;AACzB,UAAI,UAAU;AACd,UAAI;AACF,cAAM,OAAO,UAAU,QAAQ,OAAO;AACtC,aAAK;AACL,kBAAU;AACV,YAAI,KAAK,cAAc,EAAG,CAAAiB,QAAO,OAAO,MAAM,MAAM,IAAI;AAAA,MAC1D,SAAS,KAAK;AACZ,YAAI,QAAS,MAAK;AAClB,YAAI,OAAO,OAAO,OAAW,IAAG,cAAc,OAAO,EAAE;AACvD,cAAM;AAAA,MACR;AACA,MAAAV,MAAK,QAAQ,CAAC;AAAA,IAChB;AAAA,IAEA,IAAI,QAAQ;AACV,UAAI,CAAC,GAAG,OAAO,OAAO,KAAK,IAAI,EAAG;AAClC,aAAO,KAAK,KAAK;AACjB,MAAAA,MAAK,QAAQ,CAAC;AAAA,IAChB;AAAA,IACA,MAAM,QAAQ;AACZ,YAAM,OAAO,OAAO;AACpB,UAAI,CAAC,GAAG,OAAO,KAAK,IAAI,EAAG;AAC3B,YAAM,IAAI,KAAK;AACf,UAAI,CAAC,SAAS,CAAC,EAAG;AAClB,QAAE,OAAO,IAAI;AACb,UAAI,EAAE,YAAY,GAAG;AACnB,QAAAA,MAAK,QAAQ,EAAE;AACf;AAAA,MACF;AACA,UAAI;AACF,kBAAU,IAAI;AAAA,MAChB,UAAE;AACA,UAAE,OAAO;AACT,UAAE,SAAS;AACX,UAAE,SAAS;AACX,UAAE,MAAM;AACR,UAAE,SAAS;AACX,QAAAA,MAAK,QAAQ,EAAE;AACf,UAAE,MAAM,MAAM,KAAK;AACnB,YAAI,EAAE,WAAW,OAAW,CAAAU,QAAO,MAAM,KAAK;AAAA,MAChD;AAAA,IACF;AAAA,IACA,KAAK,QAAQ,QAAQ,QAAQ,QAAQ,UAAU;AAC7C,YAAM,OAAO,OAAO;AACpB,UAAI,GAAG,MAAM,KAAK,IAAI,EAAG,OAAM,IAAI,GAAG,WAAW,UAAU,QAAQ,CAAC;AACpE,QAAE,OAAO,IAAI;AACb,YAAM,SAAS,SAAS,IAAI;AAC5B,UAAI,QAAQ;AACV,cAAMC,OAAM,IAAI,WAAW,OAAO,QAAQ,OAAO,aAAa,QAAQ,KAAK,IAAI,GAAG,MAAM,CAAC;AACzF,eAAO,EAAE,KAAK,MAAM,OAAO,SAAS,UAAUA,IAAG,CAAC;AAAA,MACpD;AACA,mBAAa,IAAI;AACjB,YAAM,IAAI,KAAK;AACf,UAAI,YAAY,EAAE,OAAO,UAAU,EAAG,QAAO;AAC7C,YAAM,IAAI,KAAK,IAAI,QAAQ,EAAE,MAAM,QAAQ;AAC3C,YAAM,MAAM,IAAI,WAAW,OAAO,QAAQ,OAAO,aAAa,QAAQ,CAAC;AACvE,UAAI,IAAK,EAAE,KAAoB,SAAS,UAAU,WAAW,CAAC,CAAC;AAC/D,aAAO;AAAA,IACT;AAAA,IACA,MAAM,QAAQ,QAAQ,QAAQ,QAAQ,UAAU;AAC9C,YAAM,OAAO,OAAO;AACpB,UAAI,GAAG,MAAM,KAAK,IAAI,EAAG,OAAM,IAAI,GAAG,WAAW,UAAU,QAAQ,CAAC;AACpE,UAAI,UAAU,EAAG,QAAO;AACxB,QAAE,OAAO,IAAI;AACb,YAAM,IAAI,KAAK;AACf,YAAM,MAAM,WAAW;AACvB,UAAI,EAAE,YAAY,UAAa,MAAM,EAAE,QAAS,OAAM,IAAI,GAAG,WAAW,UAAU,OAAO,CAAC;AAC1F,YAAM,QAAQ,MAAM,IAAI,WAAW,OAAO,QAAQ,OAAO,aAAa,QAAQ,MAAM,EAAE,MAAM;AAC5F,UAAI,OAAO,QAAQC,aAAY,cAAc,GAAG,QAAQ,KAAK,EAAG,QAAO;AACvE,YAAM,SAAS,SAAS,IAAI;AAC5B,UAAI,QAAQ;AACV,cAAMC,SAAQ,IAAI,WAAW,OAAO,QAAQ,OAAO,aAAa,QAAQ,MAAM;AAC9E,UAAE,KAAK,MAAM,OAAO,MAAM,UAAUA,MAAK,CAAC;AAC1C,UAAE,UAAU,IAAI;AAChB,eAAO;AAAA,MACT;AACA,mBAAa,IAAI;AACjB,YAAM,MAAM,eAAe,MAAM,GAAG;AACpC,UAAI,WAAW,EAAE,IAAK,KAAI,KAAK,GAAG,EAAE,KAAK,QAAQ;AACjD,UAAI,IAAI,IAAI,WAAW,OAAO,QAAQ,OAAO,aAAa,QAAQ,MAAM,GAAG,QAAQ;AACnF,QAAE,MAAM,KAAK,IAAI,EAAE,KAAK,GAAG;AAC3B,QAAE,UAAU,IAAI;AAChB,aAAO;AAAA,IACT;AAAA,IACA,OAAO,QAAQ,QAAQ,QAAQ;AAC7B,UAAI,MAAM;AACV,UAAI,WAAWC,UAAU,QAAO,OAAO;AAAA,eAC9B,WAAWC,aAAY,GAAG,OAAO,OAAO,KAAK,IAAI,GAAG;AAC3D,cAAM,IAAI,OAAO,KAAK;AACtB,eAAO,SAAS,OAAO,IAAI,GAAG,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,OAAO,IAAI,EAAE;AAAA,MAClF;AACA,UAAI,MAAM,EAAG,OAAM,IAAI,GAAG,WAAW,UAAU,QAAQ,CAAC;AACxD,aAAO;AAAA,IACT;AAAA,IACA,MAAM,QAAQ;AACZ,QAAE,OAAO,OAAO,IAAI;AACpB,gBAAU,OAAO,IAAI;AAAA,IACvB;AAAA,EACF;AACF;AAIA,SAAS,WAAW,IAAqB;AACvC,QAAM,EAAE,KAAK,IAAI;AACjB,MAAI,OAAO,SAAS,cAAc,QAAQ,IAAI,EAAE,EAAG;AACnD,UAAQ,IAAI,IAAI,CAAC;AACjB,KAAG,OAAO,YAA4B,MAAiB;AACrD,YAAQ,IAAI,KAAK,QAAQ,IAAI,EAAE,KAAK,KAAK,CAAC;AAC1C,QAAI;AACF,aAAO,KAAK,MAAM,MAAM,IAAI;AAAA,IAC9B,UAAE;AACA,cAAQ,IAAI,KAAK,QAAQ,IAAI,EAAE,KAAK,KAAK,CAAC;AAAA,IAC5C;AAAA,EACF;AACF;AAEO,SAAS,oBAAoB,IAA8B;AAChE,QAAM,SAAS,oBAAI,IAAiB;AACpC,QAAM,MAAqB,CAAC;AAC5B,QAAM,IAAI,cAAc,IAAI,GAAG;AAC/B,aAAW,EAAE;AACb,QAAM,UAAU,cAAc,CAAC;AAC/B,QAAM,YAAY,gBAAgB,CAAC;AACnC,MAAI,OAAO;AACX,MAAI,SAAS;AACb,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS,EAAE;AAAA,IACX,YAAY,MAAM,EAAE,WAAW;AAAA,IAC/B,MAAM,OAAO;AACX,YAAM,KAAK,EAAE,KAAK,MAAM,MAAM,KAAK,OAAO,KAAK,MAAM,KAAK,IAAI,CAAC;AAC/D,QAAE,aAAa,MAAM,KAAK,MAAM;AAChC,UAAI,CAAC,GAAG,YAAa,OAAM,IAAI,GAAG,WAAW,UAAU,SAAS,CAAC;AACjE,YAAM,OAAO,EAAE,SAAS,MAAM,KAAK,EAAE;AACrC,WAAK,OAAO,aAAa,IAAI,MAAM,KAAK,OAAO,WAAW,IAAI;AAC9D,aAAO,IAAI,KAAK;AAChB,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,QAAQ,QAAuB,MAAyD;AAC/F,SAAO,CAAC,CAAC,MAAM,QAAQ,OAAO,OAAO,IAAI,KAAK,KAAK;AACrD;AAEO,SAAS,aAAa,IAAe,QAA6B;AACvE,aAAW,QAAQ,GAAG,aAAa,CAAC,GAAG;AACrC,aAAS,OAAO,MAAM,MAAM,OAAQ,KAAoC,aAAa,MAAM;AACzF,YAAM,IAAI,KAAK;AACf,UAAI,CAAC,QAAQ,QAAQ,IAAI,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAS;AACjE,UAAI;AACF,YAAI,EAAE,OAAQ,GAAE,OAAO,MAAM;AAAA,aACxB;AACH,gBAAM,QAAS,EAAE,KAAoB,MAAM,GAAG,EAAE,GAAG;AACnD,UAAAX,UAAS,KAAK,MAAM,KAAK,QAAQ,EAAE,MAAM,EAAE,UAAU,aAAa,IAAI,GAAG,OAAO,IAAI;AAAA,QACtF;AACA,UAAE,QAAQ;AAAA,MACZ,SAAS,KAAK;AACZ,cAAM,QAAQ,IAAI,GAAG;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,QAAQ,GAAwB;AACvC,MAAI,EAAE,SAAS,EAAE,OAAQ;AACzB,MAAI,EAAE,QAAQ,kBAAkB,QAAW;AACzC,MAAE,OAAO,OAAO;AAChB;AAAA,EACF;AACA,IAAE,OAAO;AACT,IAAE,SAAS;AACX,IAAE,MAAM;AACR,IAAE,SAAS;AACb;AAEO,SAAS,kBAAkB,IAAe,QAA6B;AAC5E,QAAM,QAAQ,GAAG,aAAa,CAAC;AAC/B,QAAM,OAAqB,CAAC;AAC5B,aAAW,QAAQ,OAAO;AACxB,aAAS,OAAO,MAAM,MAAM,OAAQ,KAAoC,aAAa,MAAM;AACzF,UAAI,CAAC,QAAQ,QAAQ,IAAI,EAAG;AAC5B,YAAM,IAAI,KAAK;AACf,QAAE,OAAO;AACT,QAAE,SAAS;AACX,UAAI,EAAE,cAAc,GAAG;AACrB,YAAI,SAAS,KAAK,MAAM,QAAQ,CAAC,KAAK,QAAS,MAAK,KAAK,IAAI;AAAA,MAC/D,MAAO,SAAQ,CAAC;AAAA,IAClB;AAAA,EACF;AACA,MAAI,CAAC,GAAG,eAAgB;AACxB,aAAW,QAAQ,KAAM,IAAG,eAAe,IAAI;AACjD;AAkBA,SAAS,cAAc,MAAmC;AACxD,QAAM,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,QAAQ,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK;AAC9E,SAAO,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,EAAE,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC;AAC9F;AAEA,SAAS,mBAAmB,KAAsB;AAChD,MAAI,eAAe,MAAO,QAAO,IAAI;AACrC,QAAMhB,SAAS,KAAoC;AACnD,SAAO,OAAOA,WAAU,WAAW,SAASA,MAAK,KAAK,OAAO,GAAG;AAClE;AAEO,SAAS,iBACd,IACA,QACA,MACA,MAC8C;AAC9C,MAAI,GAAG,MAAM,MAAO,IAAG,KAAK,WAAW,GAAG,KAAK;AAC/C,MAAI,OAAO,GAAG,gBAAgB,YAAY,CAAC,GAAG,aAAa;AACzD,UAAM,IAAI;AAAA,MACR;AAAA,IAEF;AAAA,EACF;AACA,QAAM,SAAS,GAAG,YAAY,iBAAiB,oBAAoB,EAAE;AACrE,KAAG,YAAY,gBAAgB;AAC/B,cAAY,EAAE;AACd,QAAM,UAAoB,CAAC;AAC3B,aAAW,OAAO,cAAc,IAAI,GAAG;AACrC,QAAI,QAAQ,IAAK;AACjB,QAAI;AACF,SAAG,UAAU,GAAG;AAChB,SAAG,MAAM,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,GAAG;AAC3C,cAAQ,KAAK,GAAG;AAAA,IAClB,SAAS,KAAK;AACZ,WAAK,qBAAqB,GAAG,YAAY,mBAAmB,GAAG,CAAC,EAAE;AAAA,IACpE;AAAA,EACF;AACA,SAAO,EAAE,QAAQ,QAAQ;AAC3B;AAIO,SAAS,SAAS,IAAoB,QAAiC;AAC5E,QAAM,OAAO,GAAG;AAChB,QAAM,SAAS,GAAG,YAAY;AAC9B,MAAI,CAAC,QAAQ,CAAC,OAAQ;AACtB,OAAK,MAAM,OAAO,EAAE,MAAM,KAAK,OAAO;AACtC,OAAK,OAAO,EAAE,KAAK,GAAG,QAAQ,OAAO,OAAO,OAAO,WAAW,EAAE;AAChE,SAAO,OAAO,IAAI,KAAK,KAAK;AAC5B,oBAAkB,IAAI,MAAM;AAC5B,eAAa,EAAE;AACf,iBAAe,IAAI,OAAO,OAAO;AACjC,kBAAgB,IAAI,MAAM;AAC1B,gBAAc,EAAE;AAChB,cAAY,EAAE;AACd,QAAM,QAAQ,KAAK,SAAS,KAAK;AACjC,QAAM,OAAO,OAAO;AACpB,OAAK,QAAQ;AACb,QAAM,MAAM,CAACa,UAAiB,OAAO,OAAO,KAAK,YAAY,CAAC,GAAGA,KAAI;AACrE,OAAK,WAAW;AAAA,IACd,GAAG;AAAA,IACH,QAAQ,CAAC,QAAQA,UAAS,KAAK,OAAO,QAAQA,KAAI;AAAA,IAClD,OAAO,CAAC,QAAQA,OAAM,MAAM,QAAQ,KAAK,MAAM,QAAQA,OAAM,MAAM,GAAG;AAAA,IACtE,QAAQ,CAAC,QAAQA,UAAS,KAAK,OAAO,QAAQA,KAAI;AAAA,IAClD,OAAO,CAAC,QAAQA,WAAU,IAAIA,KAAI,IAAI,QAAQ,MAAM,MAAM,QAAQA,KAAI;AAAA,IACtE,SAAS,CAAC,QAAQA,OAAM,WAAW,KAAK,QAAQ,QAAQA,OAAM,MAAM;AAAA,IACpE,QAAQ,CAAC,MAAM,KAAKA,WAAU,KAAK,OAAO,OAAO,OAAO,OAAO,MAAM,KAAKA,KAAI;AAAA,IAC9E,QAAQ,MAAM;AACZ,YAAM,QAAQ,IAAI,IAAI,MAAM,QAAQ,IAAI,CAAC;AACzC,iBAAWA,SAAQ,KAAK,QAAQ,IAAI,EAAG,OAAM,IAAIA,KAAI;AACrD,aAAO,CAAC,GAAG,KAAK;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,QAAQ,IAAoB,MAAc,IAAqB;AACtE,QAAMe,YAAW,CAAC,SAChB,GAAG,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC,EAAE;AAC1C,QAAMf,QAAO,KAAK,QAAQ,QAAQ,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,KAAK;AAC1D,MAAI;AACF,UAAM,UAAUe,UAAS,IAAI;AAC7B,UAAM,OAAO,WAAW,GAAG,aAAa,SAASf,KAAI;AACrD,UAAM,MAAMe,UAAS,EAAE;AACvB,WAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI;AAAA,EAClD,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,YAAY,IAA0B;AAC7C,QAAM,aAAa,GAAG,YAAY,KAAK,EAAE;AACzC,MAAI,CAAC,cAAc,GAAG,YAAa;AACnC,KAAG,cAAc;AACjB,KAAG,aAAa,CAAC,SAAS;AACxB,UAAM,WAAW,WAAW,IAAI;AAChC,QAAI;AACJ,QAAI;AACF,cAAQ,KAAK,OAAO,KAAK,OAAO,MAAM,QAAQ,SAAS,aAAa,IAAI,CAAC,IAAI;AAAA,IAC/E,QAAQ;AACN,aAAO;AAAA,IACT;AACA,QAAI,CAAC,MAAO,QAAO;AACnB,UAAM,OAAO,KAAK,IAAI,GAAG,KAAK,OAAO,MAAM,QAAQ,MAAM,SAAS,IAAI,CAAC;AACvE,WAAO;AAAA,MACL,GAAG;AAAA,MACH,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ,KAAK,KAAK,MAAM,QAAQ,IAAI;AAAA,MACpC,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,EACF;AACF;AAEA,SAASZ,UAAS,QAA2B,QAA0C;AACrF,SAAO,WAAW,UAAa,OAAO,SAAS,OAAO,OAAO,MAAM,IAAI;AACzE;AAEA,SAAS,eAAe,IAAoB,SAA4C;AACtF,QAAM,OAAO,GAAG,MAAM,KAAK,EAAE;AAC7B,QAAM,SAAS,GAAG,gBAAgB,KAAK,EAAE;AACzC,MAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,WAAW,GAAG,UAAW;AACpE,KAAG,YAAY;AACf,QAAM,aAAa,GAAG,WAAW,KAAK,EAAE;AACxC,KAAG,OAAO,CAAC,MAAM,OAAO,SAAS;AAC/B,UAAMH,QAAO,KAAK,MAAM,KAAK,YAAY,GAAG,IAAI,CAAC;AACjD,QAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAACD,UAASA,MAAK,SAASC,KAAI,EAAG,QAAO,KAAK,MAAM,OAAO,IAAI;AACnF,QAAI;AACJ,QAAI;AACF,aAAO,WAAW,MAAM,EAAE,QAAQ,KAAK,CAAC,EAAE;AAAA,IAC5C,QAAQ;AAAA,IAAC;AACT,UAAM,SAAS,MAAM,MAAM,YAAY,KAAK,KAAK,SAAS;AAC1D,QAAI,QAAQ,WAAW,UAAa,KAAK,MAAM,KAAK,OAAO,OAAO,MAAM,EAAG,QAAO,IAAI;AACtF,WAAO,KAAK,MAAM,OAAO,IAAI;AAAA,EAC/B;AACF;AAEA,SAAS,SAAS,MAAkB,MAAkB,QAAyB;AAC7E,QAAM,IAAI,KAAK;AACf,MACE,KAAK,QAAQ,KACb,EAAE,WAAW,UAAU,KACvB,EAAE,cAAc,KAChB,CAAC,EAAE,SACH,SAAS,KAAK,MAAM,QACpB,CAAC,KAAK;AAEN,WAAO;AACT,MAAI,EAAE,UAAU,QAAW;AACzB,MAAE,QAAQ;AACV,WAAO;AAAA,EACT;AACA,MAAI,EAAE,UAAU,OAAQ,QAAO;AAC/B,QAAM,EAAE,KAAK,SAAAV,SAAQ,IAAI,KAAK,aAAa,EAAE,OAAO,aAAa,IAAI,CAAC;AACtE,IAAE,QAAQ;AACV,SAAOA,YAAW,EAAE,cAAc,KAAK,CAAC,EAAE,SAAS,SAAS,KAAK,MAAM,QAAQ,CAAC,KAAK;AACvF;AAEA,SAAS,gBAAgB,IAAoB,QAA6B;AACxE,QAAM,aAAa,GAAG,YAAY,KAAK,EAAE;AACzC,QAAM,SAAS,GAAG,gBAAgB,KAAK,EAAE;AACzC,MAAI,CAAC,cAAc,CAAC,UAAU,GAAG,WAAY;AAC7C,KAAG,aAAa;AAChB,KAAG,aAAa,CAAC,QAAQU,UAAS;AAChC,UAAM,OAAO,OAAO,OAAO,OAAO,MAAM,KAAK,OAAO,UAAU;AAC9D,UAAM,SAAS,MAAM,IAAI,KAAK;AAC9B,UAAM,OAAO,WAAW,QAAQA,KAAI;AACpC,QAAI,CAAC,QAAQ,CAAC,QAAQ,QAAQ,IAAI,KAAK,CAAC,SAAS,MAAM,MAAM,MAAM,EAAG,QAAO;AAC7E,WAAO,IAAI;AACX,UAAM,QAAQ,WAAW,QAAQA,KAAI;AACrC,QAAI,MAAM,KAAM,OAAM,KAAK,QAAQ;AACnC,WAAO;AAAA,EACT;AACF;AAcA,SAAS,cAAc,IAA0B;AAC/C,QAAM,SAAS,GAAG,gBAAgB,KAAK,EAAE;AACzC,MAAI,CAAC,UAAU,CAAC,GAAG,cAAc,GAAG,cAAe;AACnD,KAAG,gBAAgB;AACnB,QAAM,OAAmC;AACzC,QAAM,aAAa,GAAG,WAAW,KAAK,EAAE;AACxC,QAAM,MAAM;AACZ,QAAMK,UAAS,CAAC,MAAcJ,YAA4C;AACxE,QAAI;AACF,YAAM,OAAO,WAAW,MAAM,EAAE,QAAAA,QAAO,CAAC,EAAE;AAC1C,aAAO,KAAK,QAAQ,KAAK,KAAK,cAAc,KAAK,CAAC,KAAK,KAAK,QAAQ,OAAO;AAAA,IAC7E,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI;AACJ,aAAW,CAACD,OAAM,OAAO,KAAK,WAAW;AACvC,UAAM,KAAK,IAAIA,KAAI,GAAG,KAAK,EAAE;AAC7B,QAAIA,UAAS,OAAQ,QAAO;AAC5B,QAAI,GAAI,KAAIA,KAAI,IAAI,UAAU,IAAI,OAAO;AAAA,EAC3C;AACA,WAAS,UACP,IACA,SACiC;AACjC,WAAO,IAAI,SAAoB;AAC7B,UAAI;AACF,eAAO,GAAG,GAAG,IAAI;AAAA,MACnB,SAAS,KAAK;AACZ,cAAM,OAAO,KAAK,CAAC;AACnB,cAAMd,QAAQ,IAA4B;AAC1C,cAAM,QAAQA,UAAS,UAAU,QAAQ,KAAK,OAAO;AACrD,YAAKA,UAAS,UAAU,QAAQ,KAAK,CAAC,SAAU,OAAO,SAAS,SAAU,OAAM;AAChF,cAAM,OAAOmB,QAAO,MAAM,QAAQ,IAAI,CAAC;AACvC,YAAI,CAAC,KAAM,OAAM;AACjB,aAAK,IAAI;AACT,eAAO,GAAG,GAAG,IAAI;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,aAAa,IAA0B;AAC9C,QAAM,SAAS,GAAG,QAAQ,KAAK,EAAE;AACjC,MAAI,CAAC,UAAU,GAAG,YAAa;AAC/B,KAAG,cAAc;AACjB,KAAG,SAAS,CAAC,MAAM,OAAO;AACxB,QAAI,QAAQ,IAAI,MAAM,EAAE,EAAG,OAAM,IAAI,GAAG,WAAW,UAAU,OAAO,CAAC;AACrE,WAAO,MAAM,EAAE;AAAA,EACjB;AACF;AASA,SAASV,MAAKqB,QAAmC;AAC/C,SAAOA,WAAU,MAAMA,WAAU,aAAa,SAAYA,WAAU;AACtE;AAEA,SAAS,UACP,IACA,MACA,GACA,KACA,KACM;AACN,QAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,QAAM,SAAS,EAAE;AACjB,MAAI;AACF,WAAO,QAAQ,aAAa,IAAI,GAAGrB,MAAK,GAAG,GAAGA,MAAK,GAAG,GAAG,OAAO,MAAM;AAAA,EACxE,SAAS,KAAK;AACZ,UAAM,QAAQ,IAAI,GAAG;AAAA,EACvB;AACA,MAAI,KAAK,QAAQ,KAAM,MAAK,OAAO,KAAK,SAAS;AACjD,MAAI,CAAC,EAAE,QAAQ;AACb,MAAE,OAAO;AACT;AAAA,EACF;AACA,MAAI;AACF,UAAM,KAAK,OAAO,WAAW,MAAM;AACnC,QAAI,MAAM,EAAE,KAAM,GAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK;AAAA,EAClF,QAAQ;AAAA,EAAC;AACX;AAEO,SAAS,aAAa,IAAuB;AAClD,QAAM,QAAQ,GAAG,OAAO,KAAK,EAAE;AAC/B,MAAI,CAAC,MAAO;AACZ,KAAG,QAAQ,CAAC,MAAM,KAAK,KAAK,eAAe;AACzC,UAAM,OACJ,OAAO,SAAS,WAAW,GAAG,WAAW,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO;AAEjF,QAAI,CAAC,KAAK,QAAQ,KAAK,KAAK,OAAQ,QAAO,MAAM,MAAM,KAAK,KAAK,UAAU;AAC3E,QAAI;AACF,WAAK,MAAM,KAAK,OAAO,QAAQ,aAAa,IAAI,GAAGA,MAAK,GAAG,GAAGA,MAAK,GAAG,CAAC;AAAA,IACzE,SAAS,KAAK;AACZ,YAAM,QAAQ,IAAI,GAAG;AAAA,IACvB;AACA,SAAK,KAAK,OAAO;AACjB,QAAI,KAAK,QAAQ,KAAM,MAAK,OAAO,KAAK,SAAS;AAAA,EACnD;AACA,QAAM,EAAE,iBAAiB,IAAI;AAC7B,MAAI,CAAC,GAAG,UAAU,CAAC,iBAAkB;AACrC,KAAG,SAAS,CAAC,IAAI,KAAK,QAAQ;AAC5B,UAAM,SAAS,iBAAiB,KAAK,IAAI,EAAE;AAC3C,UAAM,OAAO,OAAO;AACpB,UAAM,IAAI,KAAK;AACf,QAAI,GAAG,WAAW,WAAc,CAAC,EAAE,UAAU,EAAE,MAAO,QAAO,UAAU,IAAI,MAAM,GAAG,KAAK,GAAG;AAC5F,UAAM,SAAS,MAAM,UAAa,OAAO,SAAS,SAAY,OAAO,OAAO,OAAO;AACnF,IAAC,GAAG,MAA4C,QAAQ,KAAK,GAAG;AAAA,EAClE;AACF;AAMA,SAAS,SAAS,IAAe,MAAwB;AACvD,QAAM,IAAI,KAAK;AACf,MAAI,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAS;AACnD,MAAI;AACF,QAAI,EAAE,OAAQ,GAAE,OAAO,MAAM;AAAA,SACxB;AACH,YAAM,QAAS,EAAE,KAAoB,MAAM,GAAG,EAAE,GAAG;AACnD,MAAAQ,UAAS,KAAK,MAAM,KAAK,QAAQ,EAAE,MAAM,EAAE,UAAU,aAAa,IAAI,GAAG,OAAO,IAAI;AAAA,IACtF;AAAA,EACF,SAAS,KAAK;AACZ,UAAM,QAAQ,IAAI,GAAG;AAAA,EACvB;AACA,IAAE,QAAQ;AACV,IAAE,OAAO;AACX;AAEA,SAAS,SAAS,QAA2B,MAAuB;AAClE,MAAI;AACF,WAAO,OAAO,MAAM,IAAI,EAAE,aAAa;AAAA,EACzC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,SAAS,SAAS,IAAgB,MAAc,IAAYF,SAA0B;AAC3F,QAAM,SAAS,GAAG,QAAQ,QAAQ,EAAE;AACpC,QAAM,QAAQ,OAAO,YAAY,GAAG;AACpC,QAAMD,QAAO,OAAO,MAAM,QAAQ,CAAC;AACnC,QAAM,SAAS,GAAG,WAAW,MAAM,EAAE,QAAAC,QAAO,CAAC,EAAE;AAC/C,QAAM,SAAS,GAAG,WAAW,OAAO,MAAM,GAAG,KAAK,KAAK,KAAK,EAAE,QAAQ,KAAK,CAAC,EAAE;AAC9E,MAAI,CAAC,OAAO,QAAQ,CAAC,OAAO,KAAM,QAAO;AACzC,WAAS,IAAI,MAAM;AACnB,QAAM,OAAO,aAAa,MAAM;AAChC,QAAM,SAAS,OAAO,MAAM,KAAK;AACjC,QAAM,OAAO,aAAa,MAAM;AAChC,MAAI;AACF,WAAO,KAAK,MAAM,SAAS,MAAM,IAAID,KAAI,KAAK,GAAG,IAAI,IAAIA,KAAI,EAAE;AAAA,EACjE,SAAS,KAAK;AACZ,UAAMiB,WAAU,QAAQ,IAAI,GAAG;AAC/B,QAAIA,SAAQ,UAAU,UAAU,OAAO,KAAK,SAAS,QAAQ,IAAI,EAAG,OAAMA;AAC1E,UAAM,IAAI,GAAG,WAAW,UAAU,QAAQ,CAAC;AAAA,EAC7C;AACA,SAAO,KAAK,OAAO;AACnB,SAAO,KAAK,SAAS;AACrB,SAAO;AACT;AAOO,SAAS,aAAa,IAA0B;AACrD,QAAM,WAAW,GAAG,UAAU,KAAK,EAAE;AACrC,MAAI,CAAC,SAAU;AACf,KAAG,WAAW,CAAC,SAAS;AACtB,UAAM,MAAM,GAAG;AACf,OAAG,eAAe,GAAG,WAAW,IAAI,EAAE;AACtC,QAAI;AACF,aAAO,SAAS,IAAI;AAAA,IACtB,UAAE;AACA,SAAG,eAAe;AAAA,IACpB;AAAA,EACF;AACF;AA9rDA,IAyBM,SACA,SACA7B,UACA,UACAC,UACAmB,SACA,WAEA,kBAEAD,QACAM,WACAC,WAgNA,kBAwCAH,WAWA,WACA,SACA,QAgEA,OAg3BA,SAgSA,YAEA;AA5/CN;AAAA;AAAA;AAAA;AACA;AACA;AAOA;AAEA;AACA;AASA;AAIA,IAAM,UAAU;AAChB,IAAM,UAAU;AAChB,IAAMvB,WAAU;AAChB,IAAM,WAAW;AACjB,IAAMC,WAAU;AAChB,IAAMmB,UAAS;AACf,IAAM,YAAY;AAElB,IAAM,mBAAmB;AAEzB,IAAMD,SAAQ;AACd,IAAMM,YAAW;AACjB,IAAMC,YAAW;AAgNjB,IAAM,mBAAmB,KAAK;AAwC9B,IAAMH,YAAW;AAWjB,IAAM,YAAY;AAClB,IAAM,UAAU;AAChB,IAAM,SAAS;AAgEf,IAAM,QAAQ,CAAC,MAA8B,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE;AAg3B9D,IAAM,UAAU,oBAAI,QAA2B;AAgS/C,IAAM,aAAa;AAEnB,IAAM,YAAmE;AAAA,MACvE,CAAC,QAAQ,CAAC,UAAW,KAAK,CAAC,IAAe,gBAAgB,CAAC;AAAA,MAC3D,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAAA,MAC3B,CAAC,SAAS,MAAM,KAAK;AAAA,MACrB,CAAC,UAAU,MAAM,KAAK;AAAA,MACtB,CAAC,UAAU,MAAM,KAAK;AAAA,MACtB,CAAC,YAAY,MAAM,KAAK;AAAA,MACxB,CAAC,YAAY,MAAM,IAAI;AAAA,IACzB;AAAA;AAAA;;;AC78CO,SAAS,WAAW,QAA+C;AACxE,MAAI,OAAO,mBAAmB,OAAO,kBAAkB,QAAW;AAChE,WAAO,EAAE,IAAI,OAAO,cAAc;AAAA,EACpC;AACA,QAAM,OAAO,OAAO;AACpB,SAAO,KAAK,QAAQ,KAAK,QAAQ,EAAE,MAAM,aAAa,IAAkB,EAAE,IAAI;AAChF;AAEA,SAAS,QAAQ,KAAsB;AACrC,QAAMO,QAAQ,KAAoD;AAClE,MAAI,OAAOA,UAAS,SAAU,QAAO,UAAUA,KAAI;AACnD,QAAMC,SAAS,KAAoC;AACnD,SAAO,OAAOA,WAAU,WAAWA,SAAQ,UAAU,KAAK;AAC5D;AAEA,SAAS,OAAO,IAAe,QAA+B;AAC5D,QAAM,KAAM,GAA+D,QAAQ,OAAO,EAAE;AAC5F,SAAO,IAAI,QAAQ;AACrB;AAEA,SAASC,QAAO,MAA+C;AAC7D,MAAI,SAASC,SAAS,QAAO;AAC7B,MAAI,SAASC,SAAS,QAAO;AAC7B,SAAO,SAASC,WAAU,WAAW;AACvC;AAQA,SAAS,UACP,MACA,IACA,MACmB;AACnB,QAAM,OAAOH,QAAO,KAAK,SAAS,IAAI,IAAI,CAAC;AAC3C,MAAI,SAAS,OAAW,QAAO;AAC/B,QAAMI,SAAQ,KAAK,KAAK,SAAS,KAAK,GAAG,IAAI,CAAC,IAAI,OAAO,KAAK,YAAY,KAAK,GAAG,IAAI,CAAC;AACvF,SAAO,EAAE,MAAM,OAAAA,QAAO,KAAK,OAAO,KAAK,YAAY,KAAK,IAAI,IAAI,CAAC,EAAE;AACrE;AAEA,SAASC,aAAY,MAAgB,IAAY,OAA8B;AAC7E,MAAI,CAAC,OAAO;AACV,SAAK,SAAS,IAAIF,UAAS,IAAI;AAC/B;AAAA,EACF;AACA,OAAK,SAAS,IAAI,MAAM,SAAS,SAASF,WAAUC,UAAS,IAAI;AACjE,OAAK,SAAS,KAAK,GAAG,GAAG,IAAI;AAC7B,OAAK,YAAY,KAAK,GAAG,OAAO,MAAM,KAAK,GAAG,IAAI;AAClD,OAAK,YAAY,KAAK,IAAI,OAAO,MAAM,GAAG,GAAG,IAAI;AACjD,OAAK,SAAS,KAAK,IAAI,MAAM,KAAK,IAAI;AACxC;AAEA,SAASI,SAAQ,MAA2B,OAAwB;AAClE,QAAM,SAAS,QAAQC;AACvB,SAAQ,SAAS,WAAW,WAAW,YAAc,SAAS,UAAU,WAAWC;AACrF;AAEA,SAASC,QAAO,IAAe,QAAmD;AAChF,SAAO,CAAC,WACN,WAAWC,YAAW,OAAO,WAAW,WAAWC,YAAW,OAAO,IAAI,MAAM,IAAI;AACvF;AAEO,SAAS,WACd,OACA,MACsD;AACtD,SAAO,CAAC,IAAI,KAAK,YAAY;AAC3B,QAAI,QAAQC,YAAW,QAAQC,YAAW,QAAQC,UAAU,QAAO,MAAM,IAAI,KAAK,OAAO;AACzF,UAAM,KAAK,KAAK,GAAG;AACnB,UAAM,SAAS,KAAK,OAAO;AAC3B,UAAM,SAAS,IAAI,UAAU,EAAE;AAC/B,QAAI,UAAU,MAAM,CAAC,OAAO,gBAAiB,eAAc,IAAI,EAAE,IAAI,EAAE,MAAM;AAC7E,UAAM,SAAS,SAAS,WAAW,MAAM,IAAI;AAC7C,QAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,OAAQ,QAAO,MAAM,IAAI,KAAK,OAAO;AACvE,UAAM,OAAO,IAAI,SAAS,MAAM;AAChC,UAAM,KAAK,KAAK,UAAU,SAAS,IAAI;AACvC,UAAM,OAAO,UAAU,MAAM,IAAIL,QAAO,IAAI,MAAM,CAAC;AACnD,QAAI,CAAC,QAAS,QAAQG,YAAW,KAAK,SAAS,SAAW,QAAO,CAAC,UAAU,QAAQ;AACpF,QAAI;AACF,UAAI,QAAQA,UAAS;AACnB,QAAAP;AAAA,UACE;AAAA,UACA;AAAA,UACA,KAAK,OAAO,QAAQ,QAAQ,KAAK,MAAkB,KAAK,OAAO,KAAK,GAAG;AAAA,QACzE;AACA,eAAO;AAAA,MACT;AACA,UAAIC,SAAQ,KAAK,MAAM,OAAO,KAAK,EAAG,QAAO,CAAC,UAAU,OAAO;AAC/D,UAAI,KAAK,SAAS,QAAS,MAAK,MAAM;AACtC,WAAK,OAAO,QAAQ,QAAQ,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK,QAAQQ,SAAQ;AAC7E,UAAI,KAAK,SAAS,SAAU,MAAK,IAAI,IAAI,IAAI;AAC7C,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,aAAO,CAAC,QAAQ,GAAG;AAAA,IACrB;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,IAAe,QAA0B;AACvE,QAAM,QAAS,GAAmD;AAClE,MAAI,OAAO,UAAU,WAAY;AACjC,EAAC,GAAkD,QAAQ,CAAC,WAAW;AACrE,UAAM,SAAS,KAAK,IAAI,EAAE,KAAK,CAAC,OAAO,kBAAkB,WAAW,MAAM,IAAI;AAC9E,UAAM,KAAK,IAAI,MAAM;AACrB,QAAI,CAAC,OAAQ;AACb,QAAI;AACF,aAAO,WAAW,MAAM;AAAA,IAC1B,QAAQ;AAAA,IAAC;AAAA,EACX;AACF;AAcO,SAAS,YAAY,MAAqD;AAC/E,SAAO,CAAC,IAAI,OAAO;AACjB,UAAM,OAAO,YAAY,KAAK,CAACC,QAAO;AACtC,QAAI,CAAC,KAAM,QAAO,CAAC,UAAU,QAAQ;AACrC,UAAM,KAAK,KAAK,GAAG;AACnB,UAAM,SAAS,IAAI,UAAU,EAAE;AAC/B,QAAI,CAAC,MAAM,CAAC,OAAQ,QAAO,CAAC,UAAU,OAAO;AAC7C,QAAI,OAAO,kBAAkB,OAAW,eAAc,IAAI,EAAE,IAAI,EAAE,MAAM;AACxE,QAAI,OAAO,kBAAkB,OAAW,QAAO;AAC/C,QAAI;AACF,WAAK,MAAM,OAAO,eAAe,MAAM,SAAS,aAAa,KAAKA,cAAa,CAAC;AAChF,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,aAAO,CAAC,QAAQ,GAAG;AAAA,IACrB;AAAA,EACF;AACF;AArMA,IAIaH,UACAC,UACAC,WAEPb,UACAC,UACAC,UACAO,WACAC,WACAJ,YACA,UACAC,WAoCO,eAEP,MAoHAO,UACA;AA1KN;AAAA;AAAA;AAAA;AAEA;AAEO,IAAMH,WAAU;AAChB,IAAMC,WAAU;AAChB,IAAMC,YAAW;AAExB,IAAMb,WAAU;AAChB,IAAMC,WAAU;AAChB,IAAMC,WAAU;AAChB,IAAMO,YAAW;AACjB,IAAMC,YAAW;AACjB,IAAMJ,aAAY;AAClB,IAAM,WAAW;AACjB,IAAMC,YAAW;AAoCV,IAAM,gBAAgB,oBAAI,QAAuD;AAExF,IAAM,OAAO,oBAAI,QAAyB;AAoH1C,IAAMO,WAAU;AAChB,IAAM,cAA2E;AAAA,MAC/E,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA;AAAA;;;ACjJA,SAASC,QAAO,GAAoB;AAClC,QAAMC,QAAQ,GAAiC;AAC/C,MAAI,OAAOA,UAAS,SAAU,QAAO,CAAC,UAAUA,KAAI;AACpD,QAAM;AACR;AAEO,SAAS,SAAS,OAAoB,MAAiC;AAC5E,SAAO,CAAC,IAAI,IAAI,YAAY;AAC1B,UAAM,UAAU,OAAO;AACvB,QACE,YAAY,YACZ,YAAY,cACZ,YAAY,aACZ,YAAY,cACZ,YAAY,SACZ;AACA,aAAO,MAAM,IAAI,IAAI,OAAO;AAAA,IAC9B;AACA,UAAM,SAAS,KAAK,GAAG,GAAG,UAAU,EAAE;AACtC,UAAM,MAAO,QAAmD;AAEhE,QAAI,QAAQ,OAAW,QAAO,MAAM,IAAI,IAAI,OAAO;AACnD,UAAM,OAAO,KAAK,KAAK;AACvB,QAAI,CAAC,KAAM,QAAO,CAAC,UAAU,QAAQ;AACrC,UAAM,QAAQ,KAAK,WAAW,CAAC,KAAK,OAAO;AAC3C,QAAI;AACF,aAAO,OAAO,SAAS,KAAK,MAAM,MAAM,KAAK,MAAM;AAAA,IACrD,SAAS,GAAG;AACV,aAAOD,QAAO,CAAC;AAAA,IACjB;AAAA,EACF;AACF;AAEA,SAAS,OACP,SACA,KACA,MACA,MACA,QACQ;AACR,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,WAAK,QAAQ,CAAC,IAAI,OAAO,UAAU,GAAG;AACtC,aAAO;AAAA,IACT,KAAK;AACH,aAAO,QAAQ,MAAM,KAAK,QAAQ,CAAC,KAAK,OAAO,CAAC;AAChD,aAAO;AAAA,IACT,KAAK;AACH,aAAO,uBAAuB,GAAG;AACjC,aAAO;AAAA,IACT,KAAK;AACH,aAAO,cAAc,MAAM,KAAK,QAAQ,CAAC,KAAK,OAAO,CAAC;AACtD,aAAO;AAAA,IACT,SAAS;AACP,YAAM,OAAO,KAAK,QAAQ,CAAC,KAAK;AAChC,aAAO,WAAW,KAAK,OAAO,OAAS,SAAS,KAAM,KAAM;AAC5D,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAxFA,IAIa,UACA,YACA,WACA,YACA;AARb;AAAA;AAAA;AAEA;AAEO,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,YAAY;AAClB,IAAM,aAAa;AACnB,IAAM,UAAU;AAAA;AAAA;;;ACahB,SAAS,aAAa,QAAgC;AAC3D,SAAO,OAAO,iBAAiB;AACjC;AAEO,SAAS,eAAe,QAAuB,IAAmB;AACvE,MAAI,GAAI,QAAO,eAAe;AAAA,MACzB,QAAO,OAAO;AACrB;AAIO,SAAS,iBAAiB,IAAqB;AACpD,MAAI,QAAQ,IAAI,EAAE,EAAG;AACrB,UAAQ,IAAI,EAAE;AACd,MAAI,OAAO,GAAG,cAAc,YAAY;AACtC,UAAM,YAAY,GAAG,UAAU,KAAK,EAAE;AACtC,OAAG,YAAY,CAAC,QAAQ,OAAO;AAC7B,YAAME,QAAO,UAAU,QAAQ,EAAE;AACjC,qBAAeA,OAAM,KAAK;AAC1B,aAAOA;AAAA,IACT;AAAA,EACF;AACA,MAAI,OAAO,GAAG,SAAS,YAAY;AACjC,UAAM,OAAO,GAAG,KAAK,KAAK,EAAE;AAC5B,OAAG,OAAO,CAAC,MAAM,OAAO,SAAS;AAC/B,YAAM,UAAU,OAAO,UAAU,aAAa,QAAQ,eAAe;AACrE,YAAM,SAAS,KAAK,MAAM,UAAU,QAAQ,CAAC,YAAY,OAAO,IAAI;AACpE,qBAAe,QAAQ,OAAO;AAC9B,aAAO;AAAA,IACT;AAAA,EACF;AACF;AA4BA,SAAS,OAAO,MAAsD;AACpE,SAAO,CAAC,IAAI,OAAO;AACjB,UAAM,SAAS,KAAK,GAAG,GAAG,UAAU,EAAE;AACtC,QAAI,OAAQ,gBAAe,QAAQ,EAAE;AAAA,EACvC;AACF;AAEA,SAAS,aAAa,OAAoB,MAAgC;AACxE,QAAM,OAAO,OAAO,IAAI;AACxB,SAAO,CAAC,IAAI,KAAK,YAAY;AAC3B,QAAI,QAAQ,iBAAiB;AAC3B,YAAMA,QAAO,MAAM,IAAI,SAAS,OAAO;AACvC,UAAIA,SAAQ,EAAG,MAAKA,OAAM,IAAI;AAC9B,aAAOA;AAAA,IACT;AACA,QAAI,QAAQ,SAAS;AACnB,YAAM,QAAQ,MAAM,IAAI,KAAK,OAAO;AACpC,aAAO,QAAQ,IAAI,QAAQ,QAAQ,CAAC;AAAA,IACtC;AACA,QAAI,QAAQ,WAAW,QAAQ,QAAS,QAAO,MAAM,IAAI,KAAK,OAAO;AACrE,UAAM,SAAS,KAAK,GAAG,GAAG,UAAU,EAAE;AACtC,QAAI,CAAC,OAAQ,QAAO,CAAC,UAAU,OAAO;AACtC,QAAI,QAAQ,QAAS,QAAO,aAAa,MAAM,IAAI,aAAa;AAChE,UAAM,MAAM,KAAK,KAAK,IAAI,WAAW,CAAC;AACtC,QAAI,QAAQ,OAAW,QAAO,CAAC,UAAU,QAAQ;AACjD,mBAAe,SAAS,MAAM,gBAAgB,CAAC;AAC/C,WAAO;AAAA,EACT;AACF;AAEA,SAAS,aAAa,OAAoB,MAAgC;AACxE,QAAM,OAAO,OAAO,IAAI;AACxB,SAAO,CAAC,OAAO,UAAU;AACvB,UAAM,IAAI,MAAM,OAAO,QAAQ,CAAC,SAAS;AACzC,UAAM,OAAO,KAAK,KAAK;AACvB,QAAI,MAAM,KAAK,QAAQ,aAAa,MAAM;AACxC,WAAK,KAAK,SAAS,CAAC,GAAa,IAAI;AACrC,WAAK,MAAM,SAAS,KAAK,CAAC,GAAa,IAAI;AAAA,IAC7C;AACA,WAAO;AAAA,EACT;AACF;AAEA,SAAS,YAAY,MAAmB,MAAgC;AACtE,SAAO,CAAC,KAAK,IAAI,QAAQ,IAAI,QAAQ,MAAMC,UAAS;AAClD,UAAM,KAAK,KAAK,GAAG;AACnB,UAAM,SAAS,OAAO,SAAS,UAAU,IAAI,SAAY,IAAI,UAAU,KAAK;AAC5E,QAAI,UAAU,IAAI,UAAU,EAAE,GAAG;AAC/B,UAAI;AACF,WAAG,QAAQ,MAAM;AAAA,MACnB,QAAQ;AAAA,MAAC;AAAA,IACX;AACA,WAAO,KAAK,IAAI,OAAO,OAAO,GAAGA,KAAI;AAAA,EACvC;AACF;AAEA,SAAS,cAAc,SAAsB,SAAiB,MAAgC;AAC5F,QAAM,OAAO,OAAO,IAAI;AACxB,SAAO,IAAI,SAAS;AAClB,UAAM,YAAY,KAAK,OAAO,KAAK,KAAK,eAAe;AACvD,QAAI,QAAS,MAAK,OAAO,IAAK,KAAK,OAAO,IAAe,CAAC;AAC1D,UAAM,KAAK,QAAQ,GAAG,IAAI;AAC1B,QAAI,MAAM,EAAG,MAAK,IAAI,OAAO;AAC7B,WAAO;AAAA,EACT;AACF;AAcA,SAAS,iBACP,MACqE;AACrE,QAAM,EAAE,KAAK,MAAM,IAAI;AACvB,SAAO;AAAA,IACL,GAAI,QAAQ,EAAE,WAAW,CAAC,MAAmB,YAAY,GAAG,KAAK,EAAE,IAAI,CAAC;AAAA,IACxE,OAAO,CAAC,MACN,aAAa,KAAK,QAAQ,WAAW,GAAG,EAAE,GAAG,KAAK,OAAO,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI;AAAA,IACnF,OAAO,CAAC,MAAM,aAAa,GAAG,IAAI;AAAA,IAElC,MAAM,CAAC,MAAM,cAAc,YAAY,GAAG,IAAI,GAAG,GAAG,IAAI;AAAA,IACxD,QAAQ,CAAC,MAAM,cAAc,GAAG,GAAG,IAAI;AAAA,IACvC,SAAS,CAAC,MAAM,cAAc,GAAG,GAAG,IAAI;AAAA,IACxC,GAAI,MACA,EAAE,OAAO,CAAC,MAAmB,SAAS,GAAG,EAAE,IAAI,KAAK,IAAI,MAAM,KAAK,MAAM,QAAQ,IAAI,CAAC,EAAE,IACxF,CAAC;AAAA,EACP;AACF;AAEA,SAAS,YAAY,WAAwB,OAA+C;AAC1F,SAAO,CAAC,OAAO,OAAO;AACpB,QAAI,UAAU,EAAG,QAAO,UAAU,OAAO,EAAE;AAC3C,UAAM,IAAI,MAAM,CAAC;AACjB,WAAO;AAAA,EACT;AACF;AAEA,SAAS,UAAU,MAAoBC,OAAcC,QAAyC;AAC5F,QAAM,QAAQ,OAAO,KAAK,YAAY;AACtC,QAAM,MAAM,MAAM,KAAK,CAAC,QAAQ,KAAK,GAAG,MAAM,UAAa,KAAK,GAAG,MAAMA,MAAK;AAC9E,MAAI,IAAK,QAAO;AAEhB,SAAO,OAAOA,WAAU,aACpB,MAAM,KAAK,CAAC,QAAQ,KAAK,GAAG,MAAM,UAAa,aAAa,GAAG,MAAMD,KAAI,IACzE;AACN;AAEO,SAAS,oBACd,SACA,MACA,MACM;AACN,MAAI,CAAC,KAAM;AACX,QAAM,YAAY,iBAAiB,IAAI;AACvC,QAAM,OAAO,oBAAI,IAAY;AAC7B,aAAW,aAAa,OAAO,OAAO,OAAO,GAAG;AAC9C,QAAI,CAAC,aAAa,OAAO,cAAc,YAAY,KAAK,IAAI,SAAS,EAAG;AACxE,SAAK,IAAI,SAAS;AAClB,eAAW,CAACA,OAAMC,MAAK,KAAK,OAAO,QAAQ,SAAS,GAAG;AACrD,YAAM,MAAM,UAAU,MAAMD,OAAMC,MAAK;AACvC,YAAMC,QAAO,OAAO,UAAU,GAAG;AACjC,UAAIA,MAAM,WAAUF,KAAI,IAAIE,MAAKD,MAAoB;AAAA,IACvD;AAAA,EACF;AACF;AAyBO,SAAS,eAAe,IAAqB;AAClD,QAAM,KAAK;AACX,QAAM,EAAE,SAAS,OAAO,IAAI;AAC5B,MAAI,CAAC,WAAW,CAAC,OAAQ;AACzB,KAAG,UAAU,CAAC,MAAM,UAClB,QAAQE,WAAU,OAAO,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,QAAQ,KAAK,IAAI,MAAM,KAAK;AACnF;AA0CO,SAAS,UACd,WACAH,OACA,MACoB;AACpB,QAAM,MAAM,OAAOA,KAAI;AACvB,MAAI,OAAO,QAAQ,YAAY;AAC7B,UAAM,QAAQ,OAAO,KAAK,SAAS,EAAE,KAAK,CAAC,MAAM,UAAU,CAAC,MAAM,GAAG;AACrE,QAAI,UAAU,OAAW,QAAO;AAAA,EAClC;AACA,QAAM,UAAU,SAASA,KAAI;AAC7B,SAAO,OAAO,UAAU,OAAO,MAAM,aAAa,UAAU;AAC9D;AAEO,SAAS,WACd,SACAA,OACA,MACAE,OACA,WAAW,OACL;AACN,MAAI,UAAU;AACd,aAAW,MAAM,WAAW,OAAO,GAAG;AACpC,UAAM,MAAM,UAAU,IAAIF,OAAM,IAAI;AACpC,QAAI,QAAQ,OAAW;AACvB,OAAG,GAAG,IAAIE,MAAK,GAAG,GAAG,CAAY;AACjC,cAAU;AAAA,EACZ;AACA,MAAI,CAAC,WAAW,CAAC,YAAY,OAAO,OAAOF,KAAI,MAAM,YAAY;AAC/D,UAAM,IAAI,MAAM,uCAAuC,SAASA,KAAI,CAAC,oBAAoB;AAAA,EAC3F;AACF;AASO,SAAS,YAAY,SAA8B,MAAuB;AAC/E,MAAI,QAAQ,KAAK,UAAU;AAC3B,QAAM,EAAE,KAAK,IAAI;AACjB,aAAW,SAAS,UAAU,MAAM,CAAC,WAAW,CAAC,OAAO,MAAM,OAAO,YAAY;AAC/E,UAAM,SAAS,KAAK,OAAO;AAC3B,QAAI,QAAQ,WAAW,WAAW,OAAQ,KAAI,WAAW,OAAO,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC;AAC1F,WAAO,OAAO,OAAO,MAAM,OAAO,OAAO;AAAA,EAC3C,CAAC;AACD;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,YAAY,CAAC,OAAO,MAAM,SAAS,QAAQ,OAAO,MAAM,OAAO,CAAC,KAAK;AAAA,EACxE;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,YAAY,CAAC,OAAO,MAAM,MAAM,QAAQ,QAAQ,OAAO,MAAM,OAAO,CAAC,OAAO,GAAG;AAAA,EAClF;AACA,aAAW,SAAS,SAAS,MAAM,CAAC,QAAQ;AAC1C,QAAI,KAAK;AACT,WAAO,CAAC,SAAS;AACf,YAAM,MAAM;AACZ,cAAQ,OAAO;AACf,UAAI,KAAK;AACT,WAAK,IAAI,KAAK;AACd,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;AAKA,SAAS,SAAS,OAAe,QAAiD;AAChF,MAAI,UAAU,EAAG,QAAO;AACxB,MAAI,CAAC,OAAQ,QAAO;AACpB,QAAM,OAAO,IAAI,WAAW,OAAO,MAAM;AACzC,QAAM,OAAO,CAAC,KAAM,QAAQ,KAAM,CAAC,GAAG,KAAM,QAAQ,MAAO,CAAC,CAAC;AAC7D,SAAO,KAAK,MAAM,CAAC,MAAM,MAAM,aAAa,MAAM,UAAU;AAC9D;AAEA,SAAS,MAAS,IAAyB,IAAa,KAAiB;AACvE,MAAI,CAAC,MAAM,CAAC,GAAI,QAAO,IAAI;AAC3B,KAAG,aAAa;AAChB,MAAI;AACF,WAAO,IAAI;AAAA,EACb,UAAE;AACA,OAAG,aAAa;AAAA,EAClB;AACF;AAMO,SAAS,eACd,SACA,IACA,MACA,SAA+C,MAAM,QAC/C;AACN;AAAA,IACE;AAAA,IACA;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,IAClB,CAAC,cAAc,CAAC,OAAO,MAAM,OAAO,UAAU;AAC5C,YAAM,KAAK,GAAG;AACd,YAAM,KAAK,SAAS,OAAO,OAAO,CAAC;AACnC,YAAM,EAAE,OAAO,YAAY,WAAW,IAAI,MAAM,CAAC;AACjD,UAAI,CAAC,MAAM,EAAE,QAAQI,yBAAwB,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY;AACjF,eAAO,MAAM,IAAI,IAAI,MAAM,UAAU,OAAO,MAAM,OAAO,KAAK,CAAC;AAAA,MACjE;AACA,SAAG,QAAQ,CAAC,IAAI,OAAO,UAAU;AAC/B,cAAM,EAAE,KAAK,IAAI,WAAW,KAAK,IAAI,IAAI,EAAE,QAAQ,MAAM,CAAC;AAC1D,YAAI,CAAC,KAAK,SAAS,QAAS,OAAM,IAAI,WAAW,gBAAgB;AACjE,aAAK,SAAS,QAAQ,MAAM,EAAE,OAAO,MAAM,CAAC;AAAA,MAC9C;AACA,UAAI;AACF,eAAO,MAAM,IAAI,IAAI,MAAM,UAAU,OAAO,MAAM,OAAO,KAAK,CAAC;AAAA,MACjE,UAAE;AACA,WAAG,QAAQ;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;AAIA,SAASC,SAAQ,KAAsB;AACrC,QAAM,EAAE,OAAAC,QAAO,MAAAC,MAAK,IAAK,OAAO,CAAC;AACjC,MAAI,OAAOD,WAAU,SAAU,QAAOA;AACtC,MAAI,OAAOC,UAAS,SAAU,QAAO,UAAUA,KAAI;AACnD,QAAM;AACR;AAEA,SAAS,eAAe,QAAgC;AACtD,QAAM,OAAO,OAAO,KAAK,OAAO;AAChC,SAAO,OAAO,MAAM,WAAW;AACjC;AAQA,SAAS,WAAW,SAA2D;AAC7E,QAAM,OAAO,oBAAI,IAA+B;AAChD,aAAW,aAAa,OAAO,OAAO,OAAO,GAAG;AAC9C,QAAI,aAAa,OAAO,cAAc,SAAU,MAAK,IAAI,SAAS;AAAA,EACpE;AACA,SAAO,CAAC,GAAG,IAAI;AACjB;AAEA,SAAS,MACP,WACAP,OACA,MACoB;AACpB,QAAM,MAAM,OAAOA,KAAI;AACvB,QAAM,QACJ,OAAO,QAAQ,aACX,OAAO,KAAK,SAAS,EAAE,KAAK,CAAC,MAAM,UAAU,CAAC,MAAM,GAAG,IACvD;AACN,SAAO,UAAU,OAAO,UAAUA,KAAI,MAAM,aAAaA,QAAO;AAClE;AAEO,SAAS,UACd,SACA,IACA,MACM;AACN,aAAW,aAAa,WAAW,OAAO,GAAG;AAC3C,UAAM,MAAM,MAAM,WAAW,WAAW,IAAI;AAC5C,UAAM,WAAW,QAAQ,SAAY,SAAa,UAAU,GAAG;AAC/D,QAAI,QAAQ,UAAa,CAAC,UAAU,QAAS;AAC7C,cAAU,GAAG,IAAI,CAAC,OAAe;AAC/B,YAAM,SAAS,GAAG,GAAG,UAAU,EAAE;AACjC,UAAI,CAAC,OAAQ,QAAO;AACpB,UAAI,eAAe,MAAM,EAAG,QAAO,SAAS,EAAE;AAC9C,UAAI;AACF,cAAM,SAAS,OAAO,WAAW,QAAQ,MAAM;AAC/C,eAAO,OAAO,WAAW,WAAW,SAAS;AAAA,MAC/C,SAAS,KAAK;AACZ,eAAOK,SAAQ,GAAG;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AACF;AAWA,SAAS,SAASN,OAA+C;AAC/D,QAAM,KACJA,MAAK,UAAU,IACX,OAAOA,MAAK,CAAC,CAAC,IAAI,KAAK,MAAM,OAAOA,MAAK,CAAC,CAAC,MAAM,KACjD,OAAO,OAAO,OAAO,IAAI,OAAOA,MAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,SAAO,MAAM,KAAK,OAAO,cAAc,EAAE,IAAI,KAAK;AACpD;AAEA,SAAS,SAAS,KAA4B,KAAa,QAAoB,IAAoB;AACjG,MAAI,OAAO;AACX,SAAO,OAAO,OAAO,QAAQ;AAC3B,UAAM,MAAM,IAAI,QAAQ,KAAK,OAAO,SAAS,MAAM,KAAK,IAAI,KAAK,IAAI,WAAW,CAAC;AACjF,QAAI,IAAI,WAAW,EAAG;AACtB,WAAO,IAAI,KAAK,IAAI;AACpB,YAAQ,IAAI;AAAA,EACd;AACA,SAAO;AACT;AAEA,SAAS,WAAW,UAAsBS,QAAgB,MAAkC;AAC1F,SAAO,CAAC,IAAI,KAAK,WAAWT,UAAS;AACnC,UAAM,SAAS,KAAK,GAAG,GAAG,UAAU,OAAO,EAAE,CAAC;AAC9C,UAAM,SAAS,KAAK,OAAO;AAC3B,UAAM,MAAM,QAAQ,kBAAkB,OAAO,gBAAgB;AAC7D,QAAI,QAAQ,UAAa,CAAC,UAAU,EAAES,SAAQ,KAAK,IAAI,SAAS,KAAK,IAAI,QAAQ;AAC/E,aAAO,SAAS,IAAI,KAAK,QAAQ,GAAGT,KAAI;AAAA,IAC1C;AACA,UAAM,KAAK,SAASA,KAAI;AACxB,QAAI,OAAO,OAAW,QAAO,UAAU,QAAQ;AAC/C,UAAM,OAAO,IAAI,SAAS,OAAO,MAAM;AACvC,QAAI,OAAO;AACX,QAAI;AACF,eAAS,IAAI,GAAG,IAAI,OAAO,MAAM,GAAG,KAAK;AACvC,cAAM,MAAM,KAAK,UAAU,OAAO,GAAG,IAAI,IAAI,GAAG,IAAI;AACpD,cAAM,MAAM,KAAK,UAAU,OAAO,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI;AACxD,cAAM,OAAO,IAAI,WAAW,OAAO,QAAQ,KAAK,GAAG;AACnD,cAAM,QAAQS,SACT,KAAK,IAAI,SAAS,KAAK,KAAK,MAAM,GAAG,KAAK,IAAI,KAAK,IACpD,SAAS,KAAK,KAAK,KAAK,MAAM,KAAK,IAAI;AAC3C,gBAAQ;AACR,YAAI,QAAQ,IAAK;AAAA,MACnB;AAAA,IACF,SAAS,KAAK;AACZ,aAAOH,SAAQ,GAAG;AAAA,IACpB;AACA,SAAK,UAAU,OAAON,MAAKA,MAAK,SAAS,CAAC,CAAC,GAAG,MAAM,IAAI;AACxD,WAAO;AAAA,EACT;AACF;AAEO,SAAS,aAAa,SAA8B,MAA4B;AACrF,aAAW,aAAa,WAAW,OAAO,GAAG;AAC3C,eAAW,CAACC,OAAMQ,MAAK,KAAK;AAAA,MAC1B,CAAC,YAAY,KAAK;AAAA,MAClB,CAAC,aAAa,IAAI;AAAA,IACpB,GAAY;AACV,YAAM,MAAM,MAAM,WAAWR,OAAM,KAAK,IAAI;AAC5C,UAAI,QAAQ,QAAW;AACrB,kBAAU,GAAG,IAAI,WAAW,UAAU,GAAG,GAAiBQ,QAAO,IAAI;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AACF;AAwBA,SAAS,QAAQ,IAAe,QAA4B;AAC1D,MAAI;AACF,WAAO,IAAI,WAAW,MAAM;AAAA,EAC9B,QAAQ;AACN,UAAM,IAAI,GAAG,WAAW,UAAU,QAAQ,CAAC;AAAA,EAC7C;AACF;AAEO,SAAS,YAAY,IAAe,MAAsB;AAC/D,QAAM,KAAK;AACX,QAAM,OAAO,GAAG;AAChB,MAAI,OAAO,SAAS,WAAY;AAChC,KAAG,OAAO,CAAC,QAAQ,QAAQ,UAAU,MAAM,UAAU;AACnD,UAAM,WAAW,KAAK,SAAS;AAC/B,UAAM,SAAS,KAAK,OAAO;AAC3B,UAAM,UAAU,QAAQ,cAAc,gBAAgB,OAAO,gBAAgB;AAC7E,UAAM,MAAM,OAAO,kBAAkB,OAAO,gBAAgB;AAC5D,QAAI,UAAU,QAAQ,OAAW,OAAM,IAAI,GAAG,WAAW,UAAU,QAAQ,CAAC;AAC5E,QACG,OAAO,WAAW,QAAQ,QAAQ,UACnC,CAAC,YACD,CAAC,UACD,UAAU,KACV,WACC,OAAO,QAAQC,gBAAeC,aAC/B,CAAC,GAAG,OAAO,OAAO,KAAK,IAAI,GAC3B;AACA,aAAO,KAAK,KAAK,IAAI,QAAQ,QAAQ,UAAU,MAAM,KAAK;AAAA,IAC5D;AACA,UAAM,OAAO,QAAQ,IAAI,MAAM;AAC/B,QAAI,OAAO;AACX,QAAI;AACF,UAAI,QAAQ,OAAW,QAAO,SAAS,KAAK,KAAK,KAAK,MAAM,QAAQ;AAAA,WAC/D;AACH,iBAAS,MAAM,GAAG,OAAO,UAAU,MAAM,GAAG,QAAQ,KAAK;AACvD,gBAAM,GAAG,KAAK,QAAQ,MAAM,MAAM,SAAS,MAAM,WAAW,IAAI;AAAA,QAClE;AAAA,MACF;AAAA,IACF,SAAS,KAAK;AACZ,YAAM,IAAI,GAAG,WAAWL,SAAQ,GAAG,CAAC;AAAA,IACtC;AACA,UAAM,OAAO,KAAK,KAAK,SAAS,SAAS,IAAI;AAC7C,UAAM,MAAM,SAAS,WAAW,IAAI;AACpC,QAAI,CAAC,IAAK,OAAM,IAAI,GAAG,WAAW,UAAU,QAAQ,CAAC;AACrD,UAAM,SAAS,IAAI,WAAW,OAAO,QAAQ,KAAK,IAAI;AACtD,WAAO,KAAK,CAAC;AACb,WAAO,IAAI,KAAK,SAAS,GAAG,IAAI,CAAC;AACjC,WAAO,EAAE,KAAK,WAAW,KAAK;AAAA,EAChC;AACF;AAEO,SAAS,WACd,UACA,SACgC;AAChC,QAAM,WAAW,CAAC,MAAwC,aAAa,YAAY;AACnF,QAAM,WAAW,OAAO,OAAO,SAAS,OAAO,EAAE,KAAK,QAAQ;AAC9D,MAAI,SAAU,QAAO;AACrB,aAAW,aAAa,OAAO,OAAO,OAAO,GAAG;AAC9C,UAAM,QAAQ,OAAO,OAAO,aAAa,CAAC,CAAC,EAAE,KAAK,QAAQ;AAC1D,QAAI,MAAO,QAAO;AAAA,EACpB;AACA,SAAO;AACT;AAEA,SAAS,WAAW,MAAc,KAAqB;AACrD,QAAM,QAAkB,CAAC;AACzB,aAAW,QAAQ,GAAG,KAAK,WAAW,GAAG,IAAI,KAAK,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG;AAC1E,QAAI,SAAS,MAAM,SAAS,IAAK;AACjC,QAAI,SAAS,KAAM,OAAM,IAAI;AAAA,QACxB,OAAM,KAAK,IAAI;AAAA,EACtB;AACA,SAAO,IAAI,MAAM,KAAK,GAAG,CAAC;AAC5B;AAEO,SAAS,SAAS,MAAc,KAAiC;AACtE,QAAM,MAAM,WAAW,MAAM,GAAG;AAChC,QAAM,MAAM,CAAC,cAAc,eAAe,aAAa,EAAE,QAAQ,GAAG;AACpE,MAAI,OAAO,EAAG,QAAO;AACrB,QAAM,IAAI,oCAAoC,KAAK,GAAG;AACtD,SAAO,IAAI,OAAO,EAAE,CAAC,CAAC,IAAI;AAC5B;AAKA,SAAS,cAAc,MAAc,KAAqB;AACxD,QAAM,MAAM,oBAAI,KAAK;AACrB,SAAO;AAAA,IACL,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AACF;AAUA,SAAS,cAAc,IAAqB;AAC1C,MAAI;AACJ,MAAI;AACF,UAAM,GAAG,aAAa,iBAAiB,EAAE,QAAQ,KAAK,CAAC,GAAG;AAAA,EAC5D,QAAQ;AACN;AAAA,EACF;AACA,QAAM,MAAM,KAAK;AACjB,QAAMM,UAAS,KAAK;AACpB,MAAI,CAAC,OAAO,CAACA,WAAU,IAAI,QAAS;AACpC,MAAI,WAAW;AAAA,IACb,GAAG;AAAA,IACH,SAAS,MAAM,cAAc,UAAU,CAAC;AAAA,IACxC,QAAQ,CAAC,QAAQX,UAAS;AACxB,YAAM,QAAQW,QAAO,QAAQX,KAAI;AACjC,YAAM,WAAW;AAAA,QACf,GAAG,MAAM;AAAA,QACT,SAAS,MAAM,cAAc,WAAW,MAAM,MAAM,CAAC;AAAA,MACvD;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAWO,SAAS,eAAe,IAAqB;AAClD,QAAM,EAAE,aAAa,gBAAgB,OAAO,QAAQ,IAAI;AACxD,MAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAS;AAC3D,QAAM,QAAQ,CAAC,IAAa,QAAoB,QAAgB,WAAmB;AACjF,WAAO,KAAK,GAAG,QAAQ,SAAS,MAAM;AACtC,WAAO;AAAA,EACT;AACA,QAAM,UAAU;AAAA,IACd,CAAC,aAAa,GAAG,CAAC,IAAa,IAAgB,IAAY,WAAmB,MAAM;AAAA,IACpF;AAAA,MACE;AAAA,MACA;AAAA,MACA,CAAC,IAAa,IAAgB,IAAY,WAAmB;AAC3D,YAAI,SAAS,EAAG,OAAM,IAAI,GAAG,WAAW,UAAU,QAAQ,CAAC;AAC3D,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,aAAW,CAAC,MAAM,OAAOQ,MAAK,KAAK,SAAS;AAC1C,QAAI,YAAY,KAAK,IAAI,IAAI,EAAE,OAAQ;AACvC,UAAM,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK;AACrC,mBAAe,KAAK,IAAI,KAAK,EAAE,MAAM,OAAO,OAAAA,QAAO,QAAQ,MAAM,EAAE,CAAC;AACpE,UAAM,KAAK,IAAI,MAAM,aAAa,GAAG;AAAA,EACvC;AACF;AAkBA,SAAS,UAAU,IAAgB,MAAc,OAAwB;AACvE,MAAI;AACF,UAAM,EAAE,KAAK,IAAI,GAAG,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;AAChF,YAAQ,KAAK,OAAO,iBAAiB;AAAA,EACvC,SAAS,KAAK;AACZ,UAAM,EAAE,OAAAF,QAAO,MAAAC,MAAK,IAAK,OAAO,CAAC;AACjC,UAAM,SAAS,OAAOD,WAAU,WAAWA,SAAQ,UAAU,OAAOC,KAAI,CAAC;AACzE,QAAI,QAAQ,IAAI,MAAM,MAAM,QAAQ,gBAAgB,EAAG,OAAM;AAC7D,WAAO;AAAA,EACT;AACF;AAKO,SAAS,aACd,IACA,QACM;AACN,QAAM,KAAK;AACX,MAAI,OAAQ,IAAG,gBAAgB;AAC/B,QAAM,OAAO,GAAG;AAChB,MAAI,OAAO,SAAS,cAAc,OAAO,GAAG,eAAe,WAAY;AACvE,KAAG,OAAO,CAAC,MAAM,UAAUR,UAAS;AAClC,UAAM,YAAY,OAAO,SAAS,YAAY,OAAO,UAAU,YAAY,QAAQa;AACnF,UAAM,OACJ,aAAa,UAAU,IAAI,MAAgB,KAAe,IACrD,QAAmB,CAACA,WACrB;AACN,WAAO,KAAK,KAAK,IAAI,MAAM,MAAM,GAAGb,KAAI;AAAA,EAC1C;AACF;AAEO,SAAS,cAAc,IAAqB;AACjD,QAAM,KAAK;AACX,aAAWC,SAAQ,CAAC,UAAU,OAAO,GAAY;AAC/C,UAAM,SAAS,GAAGA,KAAI;AACtB,QAAI,OAAO,WAAW,WAAY;AAClC,OAAGA,KAAI,IAAI,CAAC,SAAiB;AAC3B,YAAMa,WAAU,WAAW,WAAW,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,SAAS;AACnE,UAAIA,SAAS,OAAM,IAAI,GAAG,WAAW,UAAUA,QAAO,CAAC;AACvD,aAAO,KAAK,IAAI,IAAI;AAAA,IACtB;AAAA,EACF;AACF;AAEA,SAAS,UAAU,IAAqB;AACtC,QAAM,EAAE,QAAQ,QAAQ,IAAI;AAC5B,MAAI,CAAC,UAAU,CAAC,QAAS;AACzB,aAAW,CAAC,IAAIb,KAAI,KAAK,CAAC,SAAS,UAAU,QAAQ,EAAE,QAAQ,GAAG;AAChE,QAAI;AACF,aAAO,KAAK,IAAI,QAAQA,KAAI,EAAE;AAAA,IAChC,QAAQ;AAAA,IAAC;AACT,QAAI;AACF,cAAQ,KAAK,IAAI,iBAAiB,EAAE,IAAI,QAAQA,KAAI,EAAE;AAAA,IACxD,QAAQ;AAAA,IAAC;AAAA,EACX;AACF;AAEO,SAAS,SAAS,IAAqB;AAC5C,MAAI,OAAO,GAAG,SAAS,WAAY;AACnC,MAAI;AACF,OAAG,UAAU,iBAAiB,SAAS;AAAA,EACzC,QAAQ;AAAA,EAAC;AACT,YAAU,EAAE;AACZ,gBAAc,EAAE;AAChB,QAAM,OAAO,CAAC,SACZ,OAAO,SAAS,WAAW,SAAS,MAAM,GAAG,IAAI,CAAC,IAAI;AACxD,QAAM,SAAS,CAAC,OAA8B;AAC5C,UAAM,SAAS,GAAG,UAAU,EAAE;AAC9B,QAAI,CAAC,OAAQ,OAAM,IAAI,GAAG,WAAW,UAAU,OAAO,CAAC;AACvD,WAAO;AAAA,EACT;AACA,QAAM,OAAO,GAAG,KAAK,KAAK,EAAE;AAC5B,KAAG,OAAO,CAAC,MAAM,OAAO,SAAS;AAC/B,UAAM,KAAK,KAAK,IAAI;AACpB,QAAI,OAAO,OAAW,QAAO,KAAK,MAAM,OAAO,IAAI;AACnD,UAAMF,QAAO,GAAG,UAAU,OAAO,EAAE,GAAG,EAAE;AACxC,mBAAeA,OAAM,OAAO,UAAU,aAAa,QAAQ,eAAe,CAAC;AAC3E,WAAOA;AAAA,EACT;AACA,QAAM,EAAE,MAAM,MAAM,IAAI;AACxB,MAAI,OAAO,SAAS,cAAc,OAAO,UAAU,WAAY;AAC/D,KAAG,OAAO,CAAC,MAAM,eAAe;AAC9B,UAAM,KAAK,aAAa,SAAY,KAAK,IAAI;AAC7C,QAAI,OAAO,OAAW,QAAO,KAAK,KAAK,IAAI,MAAM,UAAU;AAC3D,WAAO,EAAE;AACT,WAAO,MAAM,KAAK,IAAI,EAAE;AAAA,EAC1B;AACF;AAiBO,SAAS,WAAW,SAAsB,CAAC,GAAW;AAC3D,QAAM,OAAO,cAAc,SAAS;AACpC,QAAM,QAAQ,CAAC,GAAG,IAAI,MAAM,IAAI,WAAW,2BAA2B,wBAAwB;AAC9F,aAAW,KAAK,QAAQ;AACtB,UAAM,UAAU,OAAO,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAO,MAAM,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,EAAG;AACtF,QAAI,EAAE,UAAU,KAAM,SAAQ,KAAK,EAAE,KAAK;AAC1C,UAAM,SAAS,QAAQ,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;AAClD,UAAM;AAAA,MACJ,GAAG,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,CAAC;AAAA,IACtF;AAAA,EACF;AACA,SAAO,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA;AAC5B;AAIO,SAAS,SAAS,MAA8B,CAAC,GAAsC;AAC5F,QAAM,OAAO,IAAI,QAAQ;AACzB,QAAME,QAAO,KAAK,KAAK,IAAI,KAAK,SAAS,SAAS,OAAO;AACzD,QAAM,OAAO,IAAI,QAAQ;AACzB,SAAO;AAAA,IACL,QAAQ;AAAA,EAAkCA,KAAI,gBAAgBA,KAAI,IAAI,IAAI;AAAA;AAAA,IAC1E,OAAO;AAAA,EAAcA,KAAI;AAAA;AAAA,EAC3B;AACF;AAEO,SAAS,UAAU,IAAe,MAA8B,CAAC,GAAG,OAAO,OAAa;AAC7F,QAAM,EAAE,WAAW,UAAU,IAAI;AACjC,MAAI,OAAO,GAAG,SAAS,cAAc,OAAO,cAAc,WAAY;AACtE,QAAM,EAAE,QAAQ,MAAM,IAAI,SAAS,GAAG;AACtC,QAAM,UAAkC,EAAE,aAAa,eAAe;AACtE,QAAM,WAAmC,CAAC;AAC1C,MAAI;AACF,QAAI,CAAC,KAAM,WAAU,KAAK,IAAI,gBAAgB,WAAW,CAAC;AAAA,EAC5D,QAAQ;AACN;AAAA,EACF;AACA,MAAI;AACF,cAAU,KAAK,IAAI,WAAW;AAC9B,UAAM,QAAQ;AAAA,MACZ;AAAA,MACA;AAAA,MACA,OAAO,UAAU,WAAW,GAAG,CAAC;AAAA,MAChC,UAAU,GAAG,WAAW,GAAG,CAAC;AAAA;AAAA,IAC9B;AACA,eAAW,CAACA,OAAM,IAAI,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,gBAAU,KAAK,IAAI,aAAaA,KAAI,IAAI,IAAI;AAC5C,cAAQ,QAAQA,KAAI,EAAE,IAAI,aAAaA,KAAI;AAC3C,eAAS,QAAQA,KAAI,EAAE,IAAI;AAAA,IAC7B;AAAA,EACF,QAAQ;AAAA,EAAC;AACT,QAAM,OAAO,GAAG,KAAK,KAAK,EAAE;AAC5B,QAAM,OAAO,CAAC,MAAc,SAAuB;AACjD,QAAI;AACJ,QAAI;AACF,eAAS,KAAK,MAAMU,YAAW,UAAU,QAAQ,GAAK;AAAA,IACxD,QAAQ;AACN;AAAA,IACF;AACA,QAAI;AACF,YAAM,QAAQ,IAAI,YAAY,EAAE,OAAO,IAAI;AAC3C,SAAG,MAAM,QAAQ,OAAO,GAAG,MAAM,MAAM;AAAA,IACzC,UAAE;AACA,SAAG,YAAY,OAAO,EAAE;AAAA,IAC1B;AAAA,EACF;AACA,KAAG,OAAO,CAAC,MAAM,OAAO,SAAS;AAC/B,UAAM,UAAU,QAAQ,IAAI;AAC5B,UAAM,OAAO,SAAS,IAAI;AAC1B,QAAI,SAAS,WAAc,SAASD,aAAY,cAAc,EAAG,MAAK,MAAM,IAAI;AAChF,QAAI,CAAC,YAAY,SAASA,aAAY,cAAc,EAAG,QAAO,KAAK,MAAM,OAAO,IAAI;AACpF,QAAI;AACF,aAAO,KAAK,MAAM,OAAO,IAAI;AAAA,IAC/B,SAAS,GAAG;AACV,UAAK,GAA2B,UAAU,UAAU,QAAQ,EAAG,OAAM;AACrE,aAAO,KAAK,SAAS,OAAO,IAAI;AAAA,IAClC;AAAA,EACF;AACF;AAWA,SAAS,QAAQ,QAA4B,IAAoB;AAC/D,QAAM,QAAQ,IAAI,WAAW,OAAO,QAAQ,EAAE;AAC9C,SAAO,IAAI,YAAY,EAAE,OAAO,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC;AACrE;AAEA,SAASK,QAAO,IAAc,OAAuB;AACnD,SAAO,UAAUC,YAAY,GAAG,MAAM,KAAK,MAAQ,GAAG,YAAY,KAAK,GAAG,QAAQ;AACpF;AAKA,SAAS,gBACP,IACA,QACAC,OACQ;AACR,MAAI,EAAEA,MAAK,QAAQ,UAAW,QAAO;AACrC,MAAI;AACF,UAAMhB,QAAO,QAAQ,QAAQgB,MAAK,IAAI;AACtC,UAAM,MAAMhB,MAAK,WAAW,GAAG,IAAIA,QAAO,GAAGc,QAAO,IAAIE,MAAK,KAAK,CAAC,IAAIhB,KAAI;AAC3E,UAAMiB,WAAUD,MAAK,QAAQZ,0BAAyB;AACtD,UAAM,EAAE,KAAK,IAAK,GAAG,WAAmD,KAAK,IAAI,KAAK;AAAA,MACpF,QAAAa;AAAA,IACF,CAAC;AACD,UAAM,SAAS,KAAK,OAAO,KAAK,MAAM,KAAK,SAAS;AAEpD,UAAM,QAAQ;AACd,UAAM,OAAOA,UAAS,OAAO,OAAO,OAAO;AAC3C,WAAO,MAAM,KAAK,OAAO,aAAa,IAAI,CAAC,EAAE,WAAW,CAAC,UAAU,OAAO,IAAI;AAAA,EAChF,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,aACP,IACA,QACAD,OACQ;AACR,QAAMhB,QAAO,QAAQ,QAAQgB,MAAK,IAAI;AACtC,QAAM,MAAMhB,MAAK,WAAW,GAAG,IAAIA,QAAO,GAAGc,QAAO,IAAIE,MAAK,KAAK,CAAC,IAAIhB,KAAI;AAC3E,QAAM,aAAa,GAAG;AACtB,QAAM,EAAE,KAAK,IAAI,WAAW,KAAK,IAAI,KAAK,EAAE,SAASgB,MAAK,QAAQZ,0BAAyB,EAAE,CAAC;AAC9F,QAAM,SAAS,KAAK,OAAO,KAAK,MAAM,KAAK,SAAS;AACpD,MAAI,CAAC,QAAQ,UAAU,CAAC,OAAO,OAAQ,QAAO;AAC9C,QAAM,OAAOY,MAAK,QAAQE,cAAa,YAAY;AACnD,SAAO,OAAO,aAAa,IAAI,GAAGF,MAAK,OAAO,OAAOA,MAAK,QAAQZ,0BAAyB,CAAC;AAC5F,SAAO;AACT;AAEO,SAAS,cACd,SACA,IACA,MACM;AACN;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,QACC,IAAI,SACF,GAAG,GAAG,eAAe,MAAM,OAAO,MAAM,IAAI,GAAG,IAAI;AAAA,IACvD;AAAA,EACF;AACF;AAEO,SAAS,aACd,SACA,IACA,QACA,MACM;AACN,aAAW,SAAS,aAAa,MAAM,CAAC,QAAQ,CAAC,OAAO,MAAM,OAAO,UAAU;AAC7E,UAAM,KAAK,GAAG;AACd,UAAM,OAAO,OAAO;AACpB,UAAMY,QAAO,EAAE,OAAO,MAAM,OAAO,QAAQ,GAAG,MAAM;AACpD,UAAMH,WAAU,IAAI,cAAc,OAAO,gBAAgB,IAAI,MAAMG,KAAI,IAAI;AAC3E,QAAIH,aAAY,EAAG,QAAOA;AAC1B,UAAM,KAAK,IAAI,OAAO,MAAM,OAAO,KAAK;AACxC,QAAI,OAAO,KAAK,CAAC,IAAI,cAAc,CAAC,KAAM,QAAO;AACjD,QAAI;AACF,aAAO,aAAa,IAAI,MAAM,EAAE,OAAO,MAAM,OAAO,QAAQ,GAAG,MAAM,CAAC;AAAA,IACxE,SAAS,KAAK;AACZ,aAAO,CAACR,SAAQ,GAAG;AAAA,IACrB;AAAA,EACF,CAAC;AACH;AAIO,SAAS,WACd,SACA,IACA,QACA,MACM;AACN;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,QAAQ,CAAC,UAAU,SAAS,UAAU,SAAS,UAAU;AACxD,YAAM,KAAK,GAAG;AACd,YAAM,OAAO,OAAO;AACpB,UAAI,CAAC,IAAI,cAAc,CAAC,KAAM,QAAO,IAAI,UAAU,SAAS,UAAU,SAAS,KAAK;AACpF,YAAM,KAAK,CAAC,OAAe,QAAgB;AACzC,cAAML,QAAO,QAAQ,MAAM,GAAG;AAC9B,eAAOA,MAAK,WAAW,GAAG,IAAIA,QAAO,GAAGc,QAAO,IAAI,KAAK,CAAC,IAAId,KAAI;AAAA,MACnE;AACA,UAAI;AACF,cAAM,OAAO,GAAG,UAAU,OAAO;AACjC,cAAM,KAAK,GAAG,UAAU,OAAO;AAC/B,cAAMiB,WAAU,QAAQ,uBAAuB;AAC/C,YAAI,SAAS,IAAkB,MAAM,IAAIA,OAAM,EAAG,QAAO;AAAA,MAC3D,SAAS,KAAK;AACZ,eAAO,CAACZ,SAAQ,GAAG;AAAA,MACrB;AACA,aAAO,IAAI,UAAU,SAAS,UAAU,SAAS,KAAK;AAAA,IACxD;AAAA,IACA;AAAA,EACF;AACF;AAMA,SAAS,gBAAgB,IAAgB,MAA0B,OAAe,KAAa;AAC7F,QAAML,QAAO,QAAQ,MAAM,GAAG;AAC9B,QAAM,OAAO,WAAWA,OAAMA,MAAK,WAAW,GAAG,IAAI,MAAMc,QAAO,IAAI,KAAK,CAAC;AAC5E,QAAMD,WAAU,YAAY,MAAM,GAAG,SAAS;AAC9C,MAAI,CAACA,YAAW,CAAC,GAAG,WAAY,QAAO;AACvC,MAAI;AACF,OAAG,WAAW,MAAM,EAAE,QAAQ,MAAM,CAAC;AACrC,WAAO;AAAA,EACT,QAAQ;AACN,WAAO,CAAC,UAAUA,QAAO;AAAA,EAC3B;AACF;AAEO,SAAS,aACd,SACA,IACA,QACA,MACM;AACN,QAAM,QAAQ,CAAC,OAAe,QAAgB;AAC5C,UAAM,KAAK,GAAG;AACd,UAAM,OAAO,OAAO;AACpB,WAAO,MAAM,OAAO,gBAAgB,IAAI,MAAM,OAAO,GAAG,IAAI;AAAA,EAC9D;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,QAAQ,CAAC,OAAO,MAAM,OAAO,YAC3B,QAAQ,WAAW,MAAM,OAAO,IAAI,KAAM,IAAI,OAAO,MAAM,OAAO,OAAO;AAAA,IAC5E;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,QAAQ,CAAC,OAAO,MAAM,SAAS,MAAM,OAAO,IAAI,KAAK,IAAI,OAAO,MAAM,IAAI;AAAA,IAC3E;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,QAAQ,CAAC,OAAO,MAAM,MAAM,QAAQ,MAAM,OAAO,IAAI,KAAK,IAAI,OAAO,MAAM,MAAM,GAAG;AAAA,IACrF;AAAA,EACF;AACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,QAAQ,CAAC,QAAQ,OAAO,SAAS,MAAM,OAAO,IAAI,KAAK,IAAI,QAAQ,OAAO,IAAI;AAAA,IAC/E;AAAA,EACF;AACF;AAIO,SAAS,YACd,SACA,UACA,QACA,MACM;AACN,QAAM,SAAS,CAAC,SAAS,UAAU,YAAY,0BAA0B,UAAU,QAAQ;AAC3F,QAAM,UAAU,OAAO,IAAI,CAAC,MAAM,IAAI,YAAY,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;AACxF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,QAAQ,CAAC,QAAQ;AAChB,YAAM,OAAO,OAAO;AACpB,UAAI,CAAC,OAAO,CAAC,KAAM,QAAO,IAAI,GAAG;AACjC,YAAM,QAAQ,IAAI,WAAW,KAAK,QAAQ,KAAK,YAAY,OAAO,MAAM;AACxE,YAAM,KAAK,CAAC;AACZ,cAAQ,QAAQ,CAACM,QAAO,MAAM;AAC5B,cAAM,IAAIA,QAAO,IAAI,SAAS;AAAA,MAChC,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;AAkCA,SAAS,YAAY,IAAmB;AACtC,QAAM,EAAE,OAAO,YAAY,WAAW,IAAI;AAC1C,MAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAY;AAC1C,KAAG,eAAe;AAClB,KAAG,QAAQ,CAAC,SAAiB;AAC3B,UAAM,EAAE,KAAK,IAAI,WAAW,KAAK,IAAI,MAAM,EAAE,QAAQ,KAAK,CAAC;AAC3D,UAAM,YAAY,GAAG,QAAQ,KAAK,IAAI,MAAM;AAC5C,UAAM,SAAS,KAAK,QAAQ,YAAY,KAAK,MAAM,KAAK,SAAS;AACjE,QAAI;AACF,cAAQ,SAAS,aAAa,IAAI,GAAG,UAAU,WAAW,KAAK;AAAA,IACjE,SAAS,KAAK;AACZ,YAAM,IAAI,WAAWd,SAAQ,GAAG,CAAC;AAAA,IACnC;AACA,UAAM,KAAK,IAAI,IAAI;AAAA,EACrB;AACF;AAEO,SAAS,aAAa,IAAe,SAAS,MAAY;AAC/D,MAAI,QAAQ;AACV,IAAC,GAAuC,oBAAoB;AAC5D,gBAAY,EAAwB;AAAA,EACtC;AACA,QAAM,EAAE,MAAM,IAAI;AAClB,MAAI,CAAC,MAAO;AACZ,aAAW,CAAC,MAAM,IAAI,KAAK,cAAc;AACvC,QAAI,CAAC,UAAU,CAAC,aAAa,IAAI,IAAI,EAAG;AACxC,QAAI;AACF,YAAM,KAAK,IAAI,MAAM,IAAI;AAAA,IAC3B,QAAQ;AAAA,IAAC;AAAA,EACX;AACF;AA5sCA,IAUa,WAEP,YACA,SACA,SACA,SACA,SACA,iBAaA,SAuHA,cAkEA,OACAD,sBACA,kBAcAD,SAoCA,UA2FA,WACA,YAgMA,YACA,aACA,UACAO,WACA,WAqGA,UACA,WA4DA,aAwCAE,UACA,aACA,cAcA,SACA,YA8EAH,YACA,SACA,QAEA,OAGF,YAEE,UAoBA,MAkEAM,WACAG,aAiBA,UACA,UA+EA,mBA6FA,WA4BA,cASA;AAvpCN;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEO,IAAM,YAAY;AAEzB,IAAM,aAAa;AACnB,IAAM,UAAU;AAChB,IAAM,UAAU;AAChB,IAAM,UAAU;AAChB,IAAM,UAAU;AAChB,IAAM,kBAAkB;AAaxB,IAAM,UAAU,oBAAI,QAAmB;AAuHvC,IAAM,eAAsD;AAAA,MAC1D,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,WAAW;AAAA,IACb;AA0DA,IAAM,QAAQ;AACd,IAAMd,uBAAsB;AAC5B,IAAM,mBAAmB;AAczB,IAAMD,UAAS;AAoCf,IAAM,WAAgD;AAAA,MACpD,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,MACP,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,OAAO;AAAA,MACP,WAAW;AAAA,MACX,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AA0EA,IAAM,YAAY;AAClB,IAAM,aAAa;AAgMnB,IAAM,aAAa;AACnB,IAAM,cAAc;AACpB,IAAM,WAAW;AACjB,IAAMO,YAAW;AACjB,IAAM,YAAY;AAqGlB,IAAM,WAAW;AACjB,IAAM,YAAY;AA4DlB,IAAM,cAAc;AAwCpB,IAAME,WAAU;AAChB,IAAM,cAAc;AACpB,IAAM,eAAe;AAcrB,IAAM,UAA+B,oBAAI,IAAI,CAAC,UAAU,QAAQ,GAAG,UAAU,OAAO,CAAC,CAAC;AACtF,IAAM,aAAa,MAAQ;AA8E3B,IAAMH,aAAY;AAClB,IAAM,UAAU;AAChB,IAAM,SAAS;AAEf,IAAM,QAAQ,CAAC,UACZ,QAAQ,QAAQ,QAAQ,WAAW,CAAC,MAAM,KAAK,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE;AAIhG,IAAM,WAAW,MAAe,WAAW,WAAW,UAAU,SAAS;AAoBzE,IAAM,OAAO;AAkEb,IAAMM,YAAW;AACjB,IAAMG,cAAa;AAiBnB,IAAM,WAAW;AACjB,IAAM,WAAW;AA+EjB,IAAM,oBAAoB;AA6F1B,IAAM,YAAY;AA4BlB,IAAM,eAAe,oBAAI,IAAI;AAAA,MAC3B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,IAAM,eAAgD;AAAA,MACpD,CAAC,KAAK,GAAK;AAAA,MACX,CAAC,QAAQ,GAAK;AAAA,MACd,CAAC,aAAa,GAAK;AAAA,MACnB,CAAC,aAAa,GAAK;AAAA,MACnB,CAAC,aAAa,GAAK;AAAA,MACnB,CAAC,eAAe,GAAK;AAAA,MACrB,CAAC,gBAAgB,GAAK;AAAA,MACtB,CAAC,YAAY,GAAK;AAAA,MAClB,CAAC,YAAY,IAAM;AAAA,IACrB;AAAA;AAAA;;;AC3mCA,SAAS,UAAU,IAAkD;AACnE,SAAO,OAAO,OAAO,YAAY,OAAO,OAAO;AACjD;AAEO,SAAS,SAAS,OAAiE;AACxF,MAAI,KAA4C;AAChD,aAAW,QAAQ,OAAO;AACxB,QAAI,UAAU,EAAE,KAAK,CAAC,OAAO,OAAO,IAAI,IAAI,EAAG,QAAO;AACtD,SAAK,GAAG,IAAI;AAAA,EACd;AACA,SAAO;AACT;AAEO,SAAS,QAAQ,MAAmBE,UAAuC;AAChF,SAAO,OAAO,SAAS,WAAW,OAAO,KAAKA,SAAQ,CAAC;AACzD;AAeO,SAAS,OAAO,MAA2B;AAChD,QAAMC,QAAO,KAAK,KAAK,CAAC,KAAK;AAC7B,SAAOA,MAAK,MAAMA,MAAK,YAAY,GAAG,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE;AAC1D;AAEO,SAAS,UAAU,KAA4B;AACpD,QAAM,MAAM,OAAO,sBAAsB,KAAK,GAAG;AACjD,MAAI,IAAK,QAAQ,OAAO,IAAK,OAAO,IAAI,CAAC,CAAC;AAC1C,QAAM,KAAK,OAAO,oBAAoB,KAAK,GAAG;AAC9C,SAAO,KAAM,KAAK,IAAK,OAAO,GAAG,CAAC,CAAC,IAAI;AACzC;AAEA,SAAS,MAAM,OAAuB;AACpC,SAAO,KAAK,KAAK,QAAQ,IAAI;AAC/B;AAEA,SAAS,MAAM,IAAoB;AACjC,SAAO,KAAK,IAAI,GAAG,KAAK,MAAO,KAAK,KAAM,GAAI,CAAC;AACjD;AAEO,SAAS,QAAQ,MAAmB,MAAc,QAAgB,KAAK,OAAe;AAC3F,QAAM,SAAS;AAAA,IACb,KAAK;AAAA,IACL,IAAI,OAAO,IAAI,CAAC;AAAA,IAChB;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,UAAU,KAAK,GAAG;AAAA,IAClB,KAAK,MAAM,KAAK,OAAO;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,KAAK,SAAS,CAAC;AAAA,IACrB,MAAM,KAAK,SAAS,CAAC;AAAA,IACrB,MAAM,KAAK,UAAU,CAAC;AAAA,IACtB,MAAM,KAAK,UAAU,CAAC;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,KAAK,UAAU,IAAI;AAAA,IACzB,KAAK;AAAA,IACL,MAAM,KAAK,MAAM;AAAA,IACjB;AAAA,IACA,GAAG,MAAc,EAAE,EAAE,KAAK,CAAC;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG,MAAc,CAAC,EAAE,KAAK,CAAC;AAAA,IAC1B;AAAA,EACF;AACA,SAAO,GAAG,OAAO,KAAK,GAAG,CAAC;AAAA;AAC5B;AAaO,SAAS,SAAS,MAAmB,KAAa,MAAkC;AACzF,QAAM,UAAU,KAAK,WAAW,CAAC,EAAE,KAAK,GAAG,OAAO,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG;AAC1F,SAAO,UAAU,QAAQ,EAAE,GAAG,MAAM,KAAK,IAAI,GAAG,MAAM,OAAO,KAAK;AACpE;AAEO,SAAS,QAAQ,MAA6B;AACnD,UAAQ,KAAK,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG;AACxD;AAEO,SAAS,UAAU,MAA2B;AACnD,QAAM,QAAQ,OAAO,KAAK,KAAK;AAC/B,QAAM,IAAI,KAAK,QAAQ;AACvB,QAAM,MAAM,CAAC,GAAW,GAAW,MAAc,GAAG,CAAC,IAAK,CAAC,IAAK,CAAC,IAAK,CAAC;AACvE,SAAO;AAAA,IACL,SAAU,OAAO,IAAI,CAAC;AAAA,IACtB,WAAY,KAAK,SAAS,IAAO,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,IAC7D,UAAW,KAAK;AAAA,IAChB,SAAU,KAAK,GAAG;AAAA,IAClB;AAAA,IACA,QAAS,KAAK,GAAG;AAAA,IACjB,SAAU,KAAK,IAAI;AAAA,IACnB;AAAA,IACA,QAAS,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AAAA,IACpC,QAAS,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AAAA,IACpC,IAAI,KAAK,SAAS,KAAK,QAAQ,SAAY,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO;AAAA,IACxE;AAAA,IACA,WAAY,KAAK,KAAK,KAAK,SAAS,GAAG,CAAC;AAAA,IACxC,UAAW,KAAK,KAAK,KAAK,SAAS,GAAG,CAAC;AAAA,IACvC,WAAY,EAAE,OAAO,KAAK,GAAG,CAAC;AAAA,IAC9B,UAAW,KAAK,GAAG;AAAA,IACnB,WAAY,KAAK,IAAI;AAAA,IACrB,UAAW,KAAK,GAAG;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAY,QAAQ,KAAK,MAAM,CAAC;AAAA,IAChC,WAAY,QAAQ,KAAK,MAAM,CAAC;AAAA,IAChC,WAAY,QAAQ,KAAK,MAAM,CAAC;AAAA,IAChC;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEO,SAAS,QAAQA,OAAe,MAAmB,MAAsB;AAC9E,MAAIA,UAAS,UAAW,QAAO,KAAK,UAAU,MAAM,KAAK,GAAG,KAAK,KAAK,KAAK,IAAI,CAAC;AAChF,MAAIA,UAAS,OAAQ,QAAO,GAAG,OAAO,IAAI,CAAC;AAAA;AAC3C,MAAIA,UAAS,OAAQ,QAAO,QAAQ,MAAM,IAAI;AAC9C,MAAIA,UAAS,SAAS;AACpB,UAAM,IAAI,MAAM,KAAK,MAAM;AAC3B,WAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AAAA;AAAA,EAC7B;AACA,SAAO,UAAU,IAAI;AACvB;AAEO,SAAS,WAAW,QAAsB,OAAO,GAAW;AACjE,QAAM,QAAQ,OAAO,eAAe,OAAO,eAAe,MAAM,MAAM,MAAM;AAC5E,QAAM,OAAO,KAAK,IAAI,GAAG,QAAQ,QAAQ,OAAO,YAAY,EAAE;AAC9D,QAAM,KAAK,CAAC,UAAkB,GAAG,KAAK,MAAM,QAAQ,GAAG,CAAC;AACxD,SAAO;AAAA,IACL,CAAC,YAAY,GAAG,KAAK,CAAC;AAAA,IACtB,CAAC,WAAW,GAAG,IAAI,CAAC;AAAA,IACpB,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAAA,IACzB,CAAC,WAAW,GAAG,CAAC,CAAC;AAAA,IACjB,CAAC,UAAU,GAAG,CAAC,CAAC;AAAA,IAChB,CAAC,cAAc,GAAG,CAAC,CAAC;AAAA,IACpB,CAAC,SAAS,GAAG,CAAC,CAAC;AAAA,IACf,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAAA,IACtB,CAAC,aAAa,GAAG,CAAC,CAAC;AAAA,IACnB,CAAC,YAAY,GAAG,CAAC,CAAC;AAAA,EACpB,EACG,IAAI,CAAC,CAAC,KAAKC,MAAK,MAAM,GAAG,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC,GAAGA,OAAM,SAAS,EAAE,CAAC,EAAE,EACpE,OAAO,EAAE,EACT,KAAK,IAAI;AACd;AAEO,SAAS,WACdD,OACAD,UACA,KACA,QACQ;AACR,MAAIC,UAAS,UAAW,QAAO,YAAY;AAC3C,QAAM,KAAK,KAAK,IAAI,GAAG,MAAMD,SAAQ,IAAI,IAAI;AAC7C,MAAIC,UAAS,SAAU,QAAO,GAAG,GAAG,QAAQ,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;AAAA;AAC/D,MAAIA,UAAS,WAAW;AACtB,WAAO;AAAA,MACL;AAAA,MACAD,SAAQ,UAAU,OAAO,CAACG,MAAK,MAAMA,OAAM,EAAE,QAAQ,CAAC;AAAA,IACxD;AAAA,EACF;AACA,QAAM,OAAOH,SAAQ,UAAU,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG;AAC5D,MAAIC,UAAS,WAAW;AACtB,UAAM,OAAO,KAAK,IAAI,GAAG,GAAGD,SAAQ,UAAU,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;AAC/D,UAAM,CAAC,KAAK,MAAM,OAAO,KAAKA,SAAQ,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAChF,WAAO,GAAG,GAAG,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,MAAM,IAAI,IAAI;AAAA;AAAA,EAC3D;AACA,QAAM,MAAM,CAAC,QACXA,SAAQ,MAAM,GAAG,KAAKA,SAAQ,UAAU,OAAO,CAAC,GAAG,MAAM,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;AAC/E,QAAM,OAAO,MAAM,IAAI,OAAO,CAAC;AAC/B,QAAM,SAAS,MAAM,IAAI,OAAO,CAAC;AACjC,QAAM,OAAOA,SAAQ,MACjB,MAAMA,SAAQ,IAAI,IAAI,IACtB,KAAK,IAAI,GAAG,MAAM,MAAMA,SAAQ,IAAI,IAAI,OAAO,MAAM;AACzD,SAAO;AAAA,IACL,QAAQ,IAAI,MAAM,MAAM,IAAI,IAAI;AAAA,IAChC,QAAQ,IAAI,MAAM,MAAM,IAAI,IAAI;AAAA,IAChC;AAAA,IACA;AAAA,IACA,SAAS,KAAK,MAAMA,SAAQ,OAAO,GAAI,CAAC;AAAA,IACxC,aAAaA,SAAQ,UAAU,MAAM;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEO,SAAS,aAAaI,SAAgB,YAA0B;AACrE,QAAM,MAAOA,OAAqD;AAClE,QAAM,OAAQA,OAAsE;AACpF,QAAM,eAAe,KAAK;AAC1B,QAAM,OAAO,MAAM,QAAQ;AAC3B,SAAO;AAAA,IACL,GAAI,OAAO,iBAAiB,YAAY,eAAe,IAAI,EAAE,aAAa,IAAI,CAAC;AAAA,IAC/E,GAAI,OAAO,SAAS,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,EACvD;AACF;AAuCA,SAAS,KAAK,MAAwB;AACpC,QAAM,MAAM,oBAAI,KAAK;AACrB,SAAO;AAAA,IACL,KAAK;AAAA,IACL,KAAK,KAAK;AAAA,IACV,MAAM,KAAK;AAAA,IACX,OAAO;AAAA,IACP,KAAKC;AAAA,IACL,KAAKA;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AACF;AAEA,SAAS,aAAa,OAAiB,OAA2B;AAChE,SAAO,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC;AACxD;AAEA,SAAS,SACP,OACA,MACA,OACA,MACA;AACA,SAAO;AAAA,IACL,SAAS,CAAC,QAAkB,QAAgB,MAAM,UAAoB;AACpE,YAAM,KAAK,KAAK,QAAQ,GAAG;AAC3B,YAAM,MAAM,IAAI;AAChB,UAAI,CAAC,MAAM,QAAQ,OAAW,OAAM,MAAM;AAC1C,YAAM,OAAO,MAAM,QAAQ,OAAOC,UAAS;AAC3C,WAAK,SAAS,WAAW,MAAM;AAC7B,YAAI,CAAC,SAAS,KAAK,MAAM,IAAI,GAAG,EAAE,EAAG,OAAM,MAAM,MAAM;AACvD,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IACA,QAAQ,CAAC,QAAgB,MAAM,UAC7B,KAAK,QAAQ,GAAG,GAAG,QAAQ,SAAY,CAAC,IAAI,CAAC,KAAK;AAAA,EACtD;AACF;AAEO,SAAS,UAAU,IAAY,KAAc,KAAa,SAAS,aAAa,GAAS;AAC9F,QAAM,EAAE,YAAY,YAAY,eAAe,IAAI;AACnD,QAAM,WAAW,IAAI,UAAU,KAAK,GAAG;AACvC,MAAI,CAAC,cAAc,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAU;AAChE,MAAI;AACJ,MAAI;AACJ,MAAI;AACF,WAAO,WAAW,KAAK,IAAI,SAAS,EAAE,QAAQ,KAAK,CAAC,EAAE;AACtD,WAAO,WAAW,KAAK,IAAI,cAAc,EAAE,QAAQ,KAAK,CAAC,EAAE;AAAA,EAC7D,QAAQ;AACN;AAAA,EACF;AACA,QAAM,QAAQ,CAACC,SAAQ,WAAW,IAAI,GAAG,WAAWA,MAAK;AACzD,QAAM,QAAQ,CAAC,QAAkBN,OAAc,SAA2B;AACxE,UAAM,OAAO,WAAW,KAAK,IAAI,QAAQA,OAAM,MAAM,CAAC;AACtD,mBAAe,KAAK,IAAI,IAAI;AAC5B,SAAK,WAAW,EAAE,SAAS,MAAM,SAAS,MAAM;AAAA,IAAC,EAAE;AACnD,SAAK,aAAa;AAAA,MAChB,QAAQ,CAAC,QAAoB,QAAgB,WAAmB;AAC9D,cAAM,MAAM,WAAW,IAAI,OAAO,WAAW,KAAK;AAClD,YAAI,KAAK,EAAG,OAAM,MAAM,MAAM;AAC9B,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,QAAM,OAAO,CAAC,QAAkBA,OAAc,YAAoC;AAChF,UAAM,OAAO,MAAM,QAAQA,OAAM,SAAS;AAC1C,SAAK,aAAa;AAAA,MAChB,MAAM,CAAC,WAAuB;AAC5B,eAAO,YAAY,IAAI,YAAY,EAAE,OAAO,QAAQ,CAAC;AAAA,MACvD;AAAA,MACA,MAAM,CACJ,QACA,QACA,QACA,QACA,OACG;AACH,cAAM,OAAO,OAAO,aAAa,IAAI,WAAW,CAAC;AACjD,cAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,MAAM;AAC3C,eAAO,IAAI,OAAO,MAAM;AACxB,eAAO,MAAM;AAAA,MACf;AAAA,MACA,QAAQ,CAAC,QAAoB,QAAgB,WAAmB;AAC9D,cAAM,MAAM,OAAO,WAAW,UAAU;AACxC,cAAM,MAAM,WAAW,IAAI,OAAO,WAAW,WAAW,IAAI,MAAM,KAAK;AACvE,YAAI,KAAK,EAAG,OAAM,MAAM,MAAM;AAC9B,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,QAAM,OAAO,CAACO,YAA0B,QAAgB,SACrD,MAAMA,WAAU,KAAK,CAAC,MAAM,EAAE,QAAQ,MAAM,IAAI,WACjDA,WAAU,KAAK,CAAC,MAAM,EAAE,QAAQ,UAAU,EAAE,QAAQ,MAAM;AAC5D,QAAM,SAAS,CAAC,WACd,KAAK,SAAS,EAAE,WAAW,QAAQ,KAAK;AAC1C,QAAM,aACJ,CAAC,QAAgBP,OAAe,MAAM,UACtC,MAAM;AACJ,UAAMD,WAAU,SAAS;AACzB,UAAM,OAAO,KAAKA,SAAQ,WAAW,QAAQ,GAAG;AAChD,QAAI,CAAC,KAAM,OAAM,MAAM;AACvB,WAAO,QAAQC,OAAM,MAAMD,SAAQ,IAAI;AAAA,EACzC;AACF,QAAM,SAAS,CAAC,QAAkBC,OAAc,SAAgC;AAC9E,UAAM,MAAM,MAAM,QAAQA,OAAMQ,SAAQ;AACxC,QAAI,SAAS,SAAS,CAAC,IAAI,UAAU;AACnC,UAAI,CAAC,OAAO,OAAO,MAAM,KAAK,EAAG,OAAM,MAAM;AAC7C,YAAMC,QAAO,KAAK,KAAK;AACvB,aAAO,UAAUA,KAAI,IACjB,KAAK,IAAI,OAAO,MAAM,QAAQA,OAAM,QAAQ,CAAC,IAC7C,OAAO,IAAI,OAAOA,KAAI;AAAA,IAC5B;AACA,QAAI,SAAS,UAAU,MAAM,CAAC,KAAK,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;AAC7D,WAAO;AAAA,EACT;AACA,QAAM,MAAM,SAAS,OAAO,CAAC,IAAI,QAAQ,KAAK,SAAS,EAAE,WAAW,IAAI,GAAG,GAAG,OAAO,GAAG;AACxF,QAAM,WAAW,CAAC,UAAoB,aAAa,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC;AAC/E,QAAM,SAAS,CAACT,OAAc,WAA6B;AACzD,UAAM,MAAM,MAAM,MAAMA,OAAMQ,SAAQ;AACtC,QAAI,SAAS,SAAS,CAAC,QAAQ,UAAU;AACvC,UAAI,UAAU,MAAO,QAAO,IAAI,QAAQ,QAAQ,MAAM;AACtD,UAAI,CAAE,UAAgC,SAAS,KAAK,EAAG,OAAM,MAAM;AACnE,aAAO,KAAK,QAAQ,OAAO,WAAW,QAAQ,KAAgB,CAAC;AAAA,IACjE;AACA,QAAI,SAAS,UAAU,MAAM,CAAC,KAAK,MAAM,GAAG,WAAW,GAAG,IAAI,OAAO,MAAM,CAAC;AAC5E,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,oBAAI,IAA6B;AAC/C,QAAME,UAAS,CAAC,WAAmB;AACjC,QAAI,QAAQ;AACZ,eAAW,CAAC,QAAQ,IAAI,KAAK,OAAO;AAClC,UAAI,GAAG,WAAW,GAAG,QAAQ,OAAO,MAAM,EAAE,MAAM,OAAQ,OAAM,OAAO,MAAM;AAAA,UACxE,WAAU,KAAK,IAAI,MAAM;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AACA,QAAMC,WAAU,KAAK;AACrB,QAAMC,UAASD,SAAQ,QAAQ,KAAKA,QAAO;AAC3C,QAAM,UAAUA,SAAQ,SAAS,KAAKA,QAAO;AAC7C,QAAM,UAAU,CAAC,SAAmB;AAClC,UAAM,QAAQ,IAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AAC3D,eAAWX,SAAQ,CAAC,GAAG,cAAc,UAAU,KAAK,EAAG,OAAM,IAAIA,KAAI;AACrE,eAAW,KAAK,SAAS,EAAE,UAAW,OAAM,IAAI,OAAO,EAAE,GAAG,CAAC;AAC7D,WAAO,CAAC,GAAG,KAAK;AAAA,EAClB;AACA,OAAK,WAAW;AAAA,IACd,GAAGW;AAAA,IACH,QAAQ,CAAC,QAAQX,UAAS;AACxB,UAAI,aAAa,KAAKA,KAAI,GAAG;AAC3B,YAAI,CAAC,OAAO,OAAOA,KAAI,CAAC,KAAK,CAACU,QAAO,OAAOV,KAAI,CAAC,EAAG,OAAM,MAAM;AAChE,eAAO,OAAOA,OAAM,OAAOA,KAAI,CAAC;AAAA,MAClC;AACA,UAAIA,UAAS,SAAU,QAAO,KAAK,QAAQA,OAAM,MAAM,WAAW,IAAI,YAAY,KAAK,CAAC,CAAC,CAAC;AAC1F,UAAIA,UAAS,MAAO,QAAO,OAAO,QAAQA,OAAM,QAAQ;AACxD,UAAK,aAAmC,SAASA,KAAI,GAAG;AACtD,eAAO;AAAA,UAAK;AAAA,UAAQA;AAAA,UAAM,MACxB,WAAWA,OAAoB,SAAS,GAAG,KAAK,IAAI,GAAG,MAAM;AAAA,QAC/D;AAAA,MACF;AACA,UAAI,CAACY,QAAQ,OAAM,MAAM;AACzB,aAAOA,QAAO,QAAQZ,KAAI;AAAA,IAC5B;AAAA,IACA,SAAS,CAAC,SAAS,QAAQ,IAAI;AAAA,EACjC;AACA,QAAM,QAAQ,CAAC,QAAoB,UAAuC;AACxE,QAAIa,WAAU;AACd,UAAMC,YAAW,CAAC,SAChB,MAAM,IAAI,QAAQ,IAAI,IAAI,KAAK,OAAO,CAAC,MAAM,aAAa,KAAK,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC;AACjF,IAAAA,UAASD,YAAW,CAAC,CAAC;AACtB,WAAO,eAAe,QAAQ,YAAY;AAAA,MACxC,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,KAAK,MAAMA;AAAA,MACX,KAAK,CAACJ,UAA0B;AAC9B,QAAAI,WAAUJ;AACV,YAAIA,MAAM,CAAAK,UAASL,KAAI;AAAA,MACzB;AAAA,IACF,CAAC;AAAA,EACH;AACA,QAAM,SAAU,KAAK,cAAc,CAAC;AACpC,OAAK,aAAa;AAAA,IAChB,GAAG;AAAA,IACH,MAAM,CAAC,WAAuB;AAC5B,aAAO,OAAO,MAAM;AACpB,YAAM,QAAQ,QAAQ,IAAI,CAAC;AAAA,IAC7B;AAAA,IACA,KAAK,CAAC,WAAuB;AAC3B,aAAO,MAAM,MAAM;AACnB,YAAM,QAAQ,OAAO,QAAQ;AAAA,IAC/B;AAAA,IACA,OAAO,CAAC,WAAuB;AAC7B,YAAM,OAAO,MAAM;AACnB,aAAO,QAAQ,MAAM;AAAA,IACvB;AAAA,EACF;AACA,iBAAe,KAAK,IAAI,IAAI;AAC5B,QAAM,OAAO,MAAM,MAAM,QAAQJ,UAAS;AAC1C,QAAM,WAAW,MAAM,OAAO,KAAK,SAAS,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,GAAG;AAC/E,OAAK,SAAS,WAAW;AACzB,QAAM,aAAa,KAAK,SAAS;AACjC,OAAK,SAAS,SAAS,CAAC,QAAQL,UAC9BA,UAAS,SAAS,OAAOA,UAAS,SAAS,IAAI,OAAO,WAAW,QAAQA,KAAI;AAC/E,QAAM,UAAU,KAAK;AACrB,QAAM,aAAa,QAAQ,QAAQ,KAAK,OAAO;AAC/C,QAAM,cAAc,QAAQ,SAAS,KAAK,OAAO;AACjD,OAAK,WAAW;AAAA,IACd,GAAG;AAAA,IACH,QAAQ,CAAC,QAAQA,UAAS;AACxB,UAAIA,UAAS,MAAO,QAAO,IAAI,QAAQ,QAAQ,KAAK,IAAI;AACxD,UAAK,UAAgC,SAASA,KAAI,GAAG;AACnD,eAAO,KAAK,QAAQA,OAAM,WAAW,KAAKA,OAAiB,IAAI,CAAC;AAAA,MAClE;AACA,UAAI,CAAC,WAAY,OAAM,MAAM;AAC7B,aAAO,WAAW,QAAQA,KAAI;AAAA,IAChC;AAAA,IACA,SAAS,CAAC,SAAS,SAAS,cAAc,YAAY,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AAAA,EAC3E;AACF;AAliBA,IAUM,IACAQ,WACA,WACAH,YACA,QACA,QACA,QACAD,MACA,KACA,iBAEO,WACA,cAQA,UAmHP,SAEA,QAMA;AAzJN;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AAEA,IAAM,KAAK;AACX,IAAMI,YAAW;AACjB,IAAM,YAAY;AAClB,IAAMH,aAAY;AAClB,IAAM,SAAS;AACf,IAAM,SAAS;AACf,IAAM,SAAS;AACf,IAAMD,OAAM;AACZ,IAAM,MAAM;AACZ,IAAM,kBAAkB,IAAI,MAAM,MAAM;AAEjC,IAAM,YAAY,CAAC,WAAW,QAAQ,QAAQ,SAAS,QAAQ;AAC/D,IAAM,eAAe,CAAC,WAAW,WAAW,QAAQ,UAAU,SAAS;AAQvE,IAAM,WAAwB;AAAA,MACnC,QAAQ;AAAA,QACN,WAAW,GAAG,UAAU;AAAA;AAAA,QACxB,QAAQ;AAAA,QACR,qBAAqB,CAACL,aACpB,GAAGA,SAAQ,MAAM,QAAQ,CAAC,IAAIA,SAAQ,MAAM,WAAW,CAAC,IAAIA,SAAQ,MAAM,UAAU,MAAM;AAAA;AAAA,QAC5F,mBAAmB,CAACA,aAAY,GAAGA,SAAQ,SAAS,CAAC;AAAA;AAAA,QACrD,gBAAgB,CAACA,aAAY,GAAGA,SAAQ,WAAW,CAAC;AAAA;AAAA,QACpD,kBAAkB,CAACA,aAAY,GAAGA,SAAQ,aAAa,CAAC;AAAA;AAAA,QACxD,gBAAgB,CAACA,aAAY,GAAGA,SAAQ,WAAW,CAAC;AAAA;AAAA,QACpD,kBAAkB,CAACA,aAAY,GAAGA,SAAQ,aAAa,CAAC;AAAA;AAAA,QACxD,uBAAuB,CAACA,aAAY,GAAGA,SAAQ,YAAY,QAAQ,CAAC;AAAA;AAAA,QACpE,iBAAiB,CAACA,aAAY,GAAGA,SAAQ,YAAY,CAAC;AAAA;AAAA,QACtD,mBAAmB,CAACA,aAAY;AAC9B,gBAAM,UAAU,CAAC,GAAIA,SAAQ,YAAY,SAAS,CAAC,CAAE,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAC3E,gBAAM,SAAS,QAAQ,KAAK,MAAM,QAAQ,SAAS,CAAC,CAAC,KAAK;AAC1D,gBAAM,OAAO,QAAQ,GAAG,EAAE,KAAK;AAC/B,gBAAM,QAAQA,SAAQ,YAAY,SAAS;AAC3C,gBAAM,UAAUA,SAAQ,YAAY,WAAW;AAC/C,iBAAO,GAAGA,SAAQ,YAAY,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,IAAI,KAAK,IAAI,OAAO;AAAA;AAAA,QACrG;AAAA,MACF;AAAA,IACF;AA6FA,IAAM,UAAU,CAAC,OAAO,OAAe,SAAS,GAAG,SAAS,EAAE,EAAE,SAAS,IAAI,GAAG;AAEhF,IAAM,SAAS;AAAA,MACb,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAEA,IAAM,UAAU,CAAC,QACf,QAAS,IAAI,WAAW,MAAM,KAAK,EAAE,WAAW,KAAM,KAAK,EAAE,WAAW,MAAM,KAAK,CAAC;AAAA;AAAA;;;AC5G/E,SAAS,OAAO,MAAuB;AAC5C,SAAO,SAAS,WAAW,KAAK,WAAW,QAAQ;AACrD;AA4MA,UAAU,SAAS,MAAcgB,SAA2B;AAC1D,MAAI,OAAiB,CAAC;AACtB,MAAI,OAAO,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,SAAS,SAAS,EAAE;AACvD,MAAI,OAAO;AACX,MAAI;AACJ,SAAO,KAAK,SAAS,GAAG;AACtB,UAAM,OAAO,KAAK,MAAM;AACxB,QAAI,SAAS,IAAK;AAClB,QAAI,SAAS,MAAM;AACjB,WAAK,IAAI;AACT;AAAA,IACF;AACA,UAAM,KAAK,IAAI,CAAC,GAAG,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC;AACxC,UAAM,QAAQ,UAAU,IAAI,CAAC,GAAG,MAAM,MAAM,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE;AAChE,QAAI,OAAO,EAAE,KAAK,OAAO,KAAK,EAAG,QAAO,UAAU;AAClD,QAAI,CAACA,WAAU,KAAK,WAAW,EAAG,QAAO;AACzC,UAAM,SAAS,MAAM,EAAE,IAAI,OAAO,KAAK,KAAK,CAACC,UAASA,UAAS,GAAG,MAAM,KAAK;AAC7E,QAAI,OAAO,WAAW,UAAU;AAC9B,UAAI,EAAE,OAAOC,UAAU,QAAO;AAC9B,OAAC,MAAM,IAAI,IAAI,YAAY,QAAQ,MAAM,IAAI;AAAA,IAC/C,OAAO;AACL,iBAAW,UAAU,MAAM;AAC3B,WAAK,KAAK,IAAI;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAASC,QAAO,KAA2B;AACzC,QAAMC,QAAQ,KAAmC;AACjD,SAAO,EAAE,SAAS,OAAOA,UAAS,WAAWA,QAAO,SAAS;AAC/D;AAEA,SAAS,UAAU,OAAuD;AACxE,MAAI,UAAU,KAAM,QAAO;AAC3B,SAAO,UAAU,QAAQ,EAAE,SAAS,UAAU,IAAI;AACpD;AAEA,SAAS,YAAY,QAAgB,MAAgB,MAAsC;AACzF,QAAM,QAAQ,OAAO,MAAM,GAAG,EAAE,OAAO,CAAC,SAAS,SAAS,EAAE;AAC5D,SAAO,CAAC,OAAO,WAAW,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC;AACjE;AAEA,SAAS,SACP,IACA,MACAJ,SACoB;AACpB,QAAM,OAAO,SAAS,MAAMA,OAAM;AAClC,MAAI,OAAO,KAAK,KAAK;AACrB,SAAO,CAAC,KAAK,MAAM;AACjB,UAAM,EAAE,IAAI,MAAM,IAAI,KAAK;AAC3B,QAAI;AACJ,QAAI;AACF,YAAM,KAAK,GAAG,MAAM,EAAE;AACtB,eAAS,GAAG,iBAAiB,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG;AAAA,IAC9D,SAAS,KAAK;AACZ,eAASG,QAAO,GAAG;AAAA,IACrB;AACA,WAAO,KAAK,KAAK,MAAM;AAAA,EACzB;AACA,QAAM,SAAS,KAAK;AACpB,MAAI,OAAO,WAAW,SAAU,OAAM,UAAU,OAAO,SAAS,IAAI;AACpE,SAAO;AACT;AA0BA,SAAS,OAAO,OAAiC;AAC/C,QAAME,UAAS,MAAa;AAC1B,UAAM,UAAU,SAAS,OAAO;AAAA,EAClC;AACA,SAAO;AAAA,IACL,UAAU,MAAM;AAAA,IAChB,OAAO,CAAC,IAAY,IAAY,MAAc,MAAM,SAAS,IAAI,KAAK,CAAC;AAAA,IACvE,WAAWA;AAAA,IACX,QAAQA;AAAA,IACR,UAAUA;AAAA,EACZ;AACF;AAEO,SAAS,aACd,IACA,MAAoB,MAAM,YAAY,IAAI,GAC3B;AACf,QAAM,OAAO,GAAG;AAChB,MAAI;AACJ,SAAO,MAAM;AACX,QAAI,QAAQ,SAAS,CAAC,KAAK,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,gBAAgB;AACxE,YAAM,OAAO,KAAK,aAAa,KAAK,KAAK,OAAO;AAChD,UAAI,CAAC,KAAK,WAAW,CAAC,KAAK,aAAa,KAAK,KAAK,GAAG,EAAE,SAAS;AAC9D,aAAK,MAAM,KAAK;AAChB,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AACA,UAAM,MAAM,MAAM,IAAI;AACtB,UAAM,KAAK,IAAI;AACf,QAAIC;AACJ,QAAI;AACF,SAAG,KAAK,OAAO;AACf,MAAAA,YAAW;AAAA,IACb,SAAS,KAAK;AACZ,YAAMF,QAAQ,IAA0B;AACxC,UAAIA,UAAS,YAAYA,UAAS,WAAW;AAC3C,eAAO;AACP,eAAO;AAAA,MACT;AACA,MAAAE,YAAW;AAAA,IACb;AACA,WAAO,QAAQ,SAAY,SAAY,EAAE,KAAK,UAAAA,WAAU,GAAG;AAC3D,WAAOA;AAAA,EACT;AACF;AAEA,SAAS,WAAW,KAAc,MAAuB;AACvD,MAAK,KAAqC,WAAW,KAAM,QAAO;AAClE,SAAO,CAAC,KAAK,MAAM,GAAG,EAAE,KAAK,CAAC,SAAS,SAAS,OAAO,SAAS,IAAI;AACtE;AAIA,SAAS,KAAK,IAAuB,MAAc,IAAqB;AACtE,MAAI;AACJ,MAAI;AACF,SAAK,GAAG,KAAK,IAAI;AAAA,EACnB,SAAS,KAAK;AACZ,QAAIC,MAAK,IAAK,KAAkC,QAAQ,EAAE,EAAG,QAAO;AACpE,UAAM;AAAA,EACR;AACA,QAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO;AAC3C,SAAO,QAAQ,UAAa,QAAQ;AACtC;AAEA,SAAS,QAAQ,IAAuB,MAAgB,GAA+B;AACrF,QAAM,KAAK,KAAK,SAAS,CAAC;AAC1B,MAAI,CAAC,MAAM,GAAG,OAAO,OAAW,QAAO,IAAI;AAC3C,MAAI,CAAC,KAAK,IAAI,GAAG,QAAQ,GAAG,EAAE,EAAG,OAAM,UAAU,UAAU,CAAC;AAC5D,SAAO,GAAG;AACZ;AAEA,SAAS,MACP,QACA,WACA;AACA,SAAO,CAAI,OAAiC,QAAoB;AAC9D,UAAMD,YAAW,UAAU;AAC3B,eAAW,CAAC,GAAGN,OAAM,KAAK,OAAO;AAC/B,UAAI,OAAO,CAAC,KAAMM,aAAY,OAAO,GAAGN,OAAM,MAAM,OAAY,OAAM,UAAU,SAAS,CAAC;AAAA,IAC5F;AACA,WAAO,IAAI;AAAA,EACb;AACF;AAEA,SAAS,UAAU,IAAuB,MAAgB,GAAmB;AAC3E,QAAM,SAAS,KAAK,SAAS,CAAC;AAC9B,QAAM,KAAK,KAAK,OAAO,CAAC;AACxB,MAAI,CAAC,GAAI,QAAO;AAChB,MAAI;AACF,WAAO,KAAK,IAAI,GAAG,QAAQ,GAAG,EAAE,IAAI,SAAS,GAAG,MAAM;AAAA,EACxD,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,QACP,IACA,MACA,QACA,WACA;AACA,SAAO,CACL,GACA,OACA,KACAA,UAAS,MACT,YACM;AACN,UAAM,OAAO,CAAC,MAAiB;AAC7B,YAAM,SAAS,UAAU,QAAQ,IAAI,MAAM,CAAC,IAAI;AAChD,aAAO,WAAW,SAAY,MAAM,CAAC,IAAK,QAA6B,MAAM;AAAA,IAC/E;AACA,QAAI,OAAO,CAAC,EAAG,QAAO,KAAK,CAAC;AAC5B,QAAI,UAAU,GAAG;AACf,YAAM,OAAO,OAAO,GAAGA,OAAM;AAC7B,UAAI,SAAS,OAAW,QAAO,KAAK,IAAI;AAAA,IAC1C;AACA,QAAI;AACF,aAAO,IAAI;AAAA,IACb,SAAS,KAAK;AACZ,UAAI,WAAW,KAAK,CAAC,EAAG,OAAM;AAC9B,YAAM,OAAO,OAAO,GAAGA,OAAM;AAC7B,UAAI,SAAS,OAAW,OAAM;AAC9B,aAAO,KAAK,IAAI;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,aAA0C,IAAO,MAAmB;AAClF,QAAM,SAAS,CAAC,MAAcA,YAAoB,SAAS,IAAI,MAAMA,OAAM;AAC3E,QAAM,YAAY,aAAa,EAAE;AACjC,QAAM,MAAM,QAAQ,IAAI,MAAM,QAAQ,SAAS;AAC/C,QAAMQ,YAAW,MAAM,QAAQ,SAAS;AACxC,QAAM,YAAY,oBAAI,IAAwB;AAC9C,MAAI,eAAe;AACnB,QAAM,WAAW,CAAC,MAAsB;AACtC;AACA,cAAU,IAAI,cAAc,KAAK,KAAK,CAAC,CAAC;AACxC,WAAO;AAAA,EACT;AACA,QAAM,OAAO,CAAC,MAAkC;AAC9C,UAAM,IAAI,OAAO,GAAG,IAAI;AACxB,WAAO,MAAM,SAAY,SAAY,SAAS,CAAC;AAAA,EACjD;AACA,QAAM,OAA0D;AAAA,IAC9D,UAAU,CAAC,MACT;AAAA,MACE;AAAA,MACA,CAAC,MAAM,KAAK,KAAK,CAAC;AAAA,MAClB,MAAM,GAAG,SAAS,CAAC;AAAA,MACnB;AAAA,MACA,CAAC,MAAM,GAAG,SAAS,CAAC;AAAA,IACtB;AAAA,IACF,MAAM,CAAC,MACL;AAAA,MACE;AAAA,MACA,CAAC,MAAM,KAAK,KAAK,CAAC;AAAA,MAClB,MAAM,GAAG,KAAK,CAAC;AAAA,MACf;AAAA,MACA,CAAC,OAAO,EAAE,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,EAAE;AAAA,IACrC;AAAA,IACF,OAAO,CAAC,MACN;AAAA,MACE;AAAA,MACA,CAAC,MAAM,KAAK,KAAK,GAAG,KAAK;AAAA,MACzB,MAAM,GAAG,MAAM,CAAC;AAAA,MAChB;AAAA,IACF;AAAA,IACF,SAAS,CAAC,MACR;AAAA,MACE;AAAA,MACA,CAAC,MAAM,KAAK,QAAQ,CAAC;AAAA,MACrB,MAAM;AACJ,cAAM,QAAQ,GAAG,QAAQ,CAAC;AAC1B,eAAO,MAAM,OAAO,CAAC,MAAM,SAAS,MAAM,IAAI,CAAC,GAAG,OAAO,MAAM,IAAI;AAAA,MACrE;AAAA,IACF;AAAA,IACF,QAAQ,CAAC,MAAc;AACrB,UAAI,OAAO,CAAC,EAAG,QAAO,KAAK,OAAO,CAAC;AACnC,YAAM,QAAQ,MAAM;AAClB,YAAI;AACF,iBAAO,OAAO,GAAG,IAAI;AAAA,QACvB,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AACA,YAAM,OAAO,UAAU,IAAI,MAAM,IAAI;AACrC,UAAI,SAAS,KAAM,QAAO;AAC1B,UAAI,SAAS,OAAW,QAAO,KAAK,OAAO,IAAI;AAC/C,UAAI;AACF,WAAG,KAAK,CAAC;AACT,eAAO;AAAA,MACT,SAAS,KAAK;AACZ,YAAI,WAAW,KAAK,CAAC,EAAG,QAAO;AAAA,MACjC;AACA,YAAMC,QAAO,MAAM;AACnB,aAAO,OAAOA,UAAS,YAAY,KAAK,OAAOA,KAAI;AAAA,IACrD;AAAA,IACA,UAAU,CAAC,MACT;AAAA,MACE;AAAA,MACA,CAAC,MAAM,UAAU,IAAI,MAAM,CAAC;AAAA,MAC5B,MAAM,GAAG,SAAS,CAAC;AAAA,MACnB;AAAA,IACF;AAAA,IACF,aAAa,CAAC,MACZ;AAAA,MACE;AAAA,MACA,CAAC,MACC,KAAK,QAAQ,CAAC,EAAE,IAAI,CAACC,UAA4C;AAC/D,YAAI;AACF,iBAAO,CAACA,OAAM,KAAK,KAAK,GAAG,CAAC,IAAIA,KAAI,IAAI,KAAK,CAAC;AAAA,QAChD,QAAQ;AACN,iBAAO,CAACA,OAAM,IAAI;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,MACH,MAAM;AACJ,cAAMC,UAAS,GAAG,YAAY,CAAC;AAC/B,YAAI,MAAM,OAAOA,QAAO,KAAK,CAAC,CAACD,KAAI,MAAMA,UAAS,MAAM,EAAG,QAAOC;AAClE,eAAO,CAAC,GAAGA,SAAQ,CAAC,QAAQ,KAAK,KAAK,OAAO,CAAC,CAA+B;AAAA,MAC/E;AAAA,IACF;AAAA,IACF,QAAQ,CAAC,MAAc,OACrBH;AAAA,MACE;AAAA,QACE,CAAC,MAAM,KAAK;AAAA,QACZ,CAAC,IAAI,KAAK;AAAA,MACZ;AAAA,MACA,MAAM,GAAG,OAAO,MAAM,EAAE;AAAA,IAC1B;AAAA,IACF,SAAS,CAAC,QAAgB,SACxBA,UAAS,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,QAAQ,QAAQ,IAAI,CAAC;AAAA,IAC1D,MAAM,CAAC,MAAc,IAAYR,YAC/BQ;AAAA,MACE;AAAA,QACE,CAAC,MAAMR,YAAW,IAAI;AAAA,QACtB,CAAC,IAAI,KAAK;AAAA,MACZ;AAAA,MACA,MAAM,GAAG,KAAK,MAAM,IAAIA,OAAM;AAAA,IAChC;AAAA,IACF,MAAM,CACJ,GACAY,OACA,MACA,QACA,MACA,SACG;AACH,UAAI,WAAW,UAAa,UAAU,OAAO,MAAM,EAAG,QAAO;AAC7D,UAAI,CAACA,MAAM,QAAO,GAAG,OAAO,GAAGA,OAAM,MAAM,MAAM;AACjD,aAAO,IAAI,GAAG,UAAU,MAAM,GAAG,OAAO,GAAGA,OAAM,MAAM,QAAW,MAAM,IAAI,KAAK,KAAK,CAAC,CAAC;AAAA,IAC1F;AAAA,IACA,MAAM,CAAC,WAAmB,UAAU,IAAI,MAAM,KAAK,GAAG,OAAO,MAAM,MAAM;AAAA,IACzE,QAAQ,CAAC,MAAe,OAAO,CAAC,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI;AAAA,IAC3D,QAAQ,CAAC,WAAmB;AAC1B,YAAM,QAAQ,UAAU,IAAI,MAAM;AAClC,aAAO,QAAQ,OAAO,KAAK,IAAK,GAAG,SAAS,MAAM,KAAK;AAAA,IACzD;AAAA,IACA,GAAI,GAAG,QACH;AAAA,MACE,OAAO,CAAC,GAAW,IAAY,GAAW,YACxC;AAAA,QACE;AAAA,QACA,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE,SAAS,IAAI,KAAK,CAAC;AAAA,QACvC,MAAO,GAAG,MAAkC,GAAG,IAAI,GAAG,OAAO;AAAA,MAC/D;AAAA,IACJ,IACA,CAAC;AAAA,EACP;AACA,aAAW,CAAC,OAAOZ,OAAM,KAAK;AAAA,IAC5B,CAAC,WAAW,IAAI;AAAA,IAChB,CAAC,eAAe,KAAK;AAAA,EACvB,GAAY;AACV,eAAWU,SAAQ,OAAO;AACxB,YAAM,KAAK,GAAGA,KAAI;AAClB,UAAI,CAAC,GAAI;AACT,WAAKA,KAAI,IAAI,CAAC,MAAcG,UAC1BL,UAAS,CAAC,CAAC,GAAGR,OAAM,CAAC,GAAG,MAAM,GAAG,KAAK,IAAI,GAAG,GAAGa,KAAI,CAAC;AAAA,IACzD;AAAA,EACF;AACA,QAAM,EAAE,MAAM,IAAI;AAClB,MAAI,OAAO;AACT,SAAK,QAAQ,CAAC,MAAcA,UAC1BL,UAAS,CAAC,CAAC,GAAGK,MAAK,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,MAAM,KAAK,IAAI,GAAG,GAAGA,KAAI,CAAC;AAAA,EACtE;AACA,SAAO,IAAI,MAAM,IAAI;AAAA,IACnB,KAAK,CAAC,QAAQ,KAAK,aACjB,OAAO,OAAO,KAAK,GAA8B,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ;AAAA,EAC1F,CAAC;AACH;AAxnBA,IAuCMC,WACAC,YACAC,YAEA,WACA,cAMO,UA+LP,WACA,eACAd,WAsJAK;AAzYN;AAAA;AAAA;AAAA;AAOA;AAOA;AACA;AAYA;AAYA,IAAMO,YAAW;AACjB,IAAMC,aAAY;AAClB,IAAMC,aAAY;AAElB,IAAM,YAA+B;AACrC,IAAM,eAAkC;AAMjC,IAAM,WAAN,MAAe;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MAEjB,YAAY,QAAoB,KAAa,SAAuB,aAAa,GAAG;AAClF,aAAK,SAAS;AACd,aAAK,MAAM;AACX,aAAK,SAAS;AAAA,MAChB;AAAA,MAEQ,UAA0B;AAChC,eAAO,KAAK,OAAO,SAAS;AAAA,MAC9B;AAAA,MAEQ,MAAM,KAAsB;AAClC,eAAO,KAAK,QAAQ,EAAE,UAAU,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG;AAAA,MAC3D;AAAA,MAEQ,KAAK,OAAmC;AAC9C,cAAM,CAAC,KAAK,MAAM,GAAGH,KAAI,IAAI;AAC7B,YAAI,QAAQ,QAAW;AACrB,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,OAAO,MAAM;AAAA,cACX,GAAG;AAAA,cACH;AAAA,cACA;AAAA,cACA;AAAA,cACA,GAAG,KAAK,QAAQ,EAAE,UAAU,IAAI,CAAC,MAAM,OAAO,EAAE,GAAG,CAAC;AAAA,YACtD;AAAA,UACF;AAAA,QACF;AACA,YAAI,QAAQ,OAAO;AACjB,gBAAM,QAAQ,SAAS,MAAM,MAAM,CAAC,CAAC;AACrC,cAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY;AAC5D,mBAAO,EAAE,MAAM,QAAQ,SAAS,MAAM,QAAQ,OAAO,MAAM,KAAK,QAAQ,CAAC,EAAE;AAAA,UAC7E;AACA,iBAAO,SAAS,EAAE,MAAM,OAAO,OAAO,MAAM,OAAO,KAAK,KAAK,EAAE;AAAA,QACjE;AACA,YAAI,QAAQ,QAAQ;AAClB,iBAAO,SAAS,SAAY,EAAE,MAAM,QAAQ,QAAQ,OAAO,KAAK,GAAG,EAAE,IAAI;AAAA,QAC3E;AACA,YAAI,SAAS,UAAa,QAAQ,UAAU;AAC1C,iBAAO,EAAE,MAAM,QAAQ,SAAS,MAAM,WAAW,KAAK,OAAO,UAAU,CAAC,EAAE;AAAA,QAC5E;AACA,YAAI,SAAS,UAAa,aAAa,SAAS,GAAG,GAAG;AACpD,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,SAAS,MACP,WAAW,KAAsC,KAAK,QAAQ,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM;AAAA,UAC5F;AAAA,QACF;AACA,YAAI,CAAC,aAAa,KAAK,GAAG,KAAK,CAAC,KAAK,MAAM,OAAO,GAAG,CAAC,EAAG,QAAO;AAChE,YAAI,SAAS,OAAQ,QAAO,KAAK,KAAK,OAAO,GAAG,GAAGA,KAAI;AACvD,YAAIA,MAAK,SAAS,EAAG,QAAO;AAC5B,YAAI,SAAS,QAAW;AACtB,gBAAM,MAAM,MAAO,KAAK,KAAK,OAAO,GAAG,CAAC,GAAG,QAAQ,SAAY,CAAC,IAAI,CAAC,KAAK;AAC1E,iBAAO,EAAE,MAAM,OAAO,OAAO,MAAM,CAAC,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,EAAE;AAAA,QACtE;AACA,YAAI,SAAS,MAAO,QAAO,KAAK,IAAI,OAAO,GAAG,CAAC;AAC/C,YAAI,CAAC,UAAU,SAAS,IAAI,EAAG,QAAO;AACtC,eAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS,MAAM;AACb,kBAAMI,WAAU,KAAK,QAAQ;AAC7B,kBAAM,OAAOA,SAAQ,UAAU,KAAK,CAAC,MAAM,EAAE,QAAQ,OAAO,GAAG,CAAC;AAChE,gBAAI,CAAC,KAAM,OAAM,UAAU,UAAU,SAAS,GAAG,IAAI,IAAI,EAAE;AAC3D,mBAAO,QAAQ,MAAoC,MAAMA,SAAQ,IAAI;AAAA,UACvE;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,IAAI,KAA+B;AACzC,cAAM,OAAO,KAAK,KAAK,GAAG;AAC1B,YAAI,MAAM,QAAQ,OAAW,QAAO;AACpC,cAAM,SAAS,CAAC,SAAS,KAAK,QAAQ,GAAG,IAAI;AAC7C,cAAM,KAAK,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM;AAC5D,eAAO,EAAE,MAAM,QAAQ,QAAQ,KAAK,KAAK,GAAI,SAAS,EAAE,OAAO,IAAI,CAAC,GAAI,GAAG,GAAG;AAAA,MAChF;AAAA,MAEQ,UAAmC;AACzC,cAAMC,aAAY,KAAK,QAAQ,EAAE;AACjC,eAAOA,WAAU,KAAK,CAAC,MAAM,EAAE,QAAQ,KAAK,GAAG,KAAKA,WAAU,KAAK,CAAC,MAAM,EAAE,QAAQ,KAAK,GAAG;AAAA,MAC9F;AAAA,MAEQ,KAAK,KAAsC;AACjD,eAAO,KAAK,QAAQ,EAAE,UAAU,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG;AAAA,MAC3D;AAAA,MAEQ,KAAK,KAAaL,OAAkC;AAC1D,cAAM,CAAC,KAAK,MAAM,GAAG,IAAI,IAAIA;AAC7B,cAAM,OAAO,MAAM,QAAQ,KAAK,KAAK,GAAG,CAAgB;AACxD,YAAI,QAAQ,OAAW,QAAO,EAAE,MAAM,OAAO,OAAO,MAAM,KAAK,EAAE,IAAI,MAAM,EAAE;AAC7E,YAAI,CAAC,aAAa,KAAK,GAAG,KAAK,KAAK,SAAS,KAAK,CAAC,KAAK,EAAE,SAAS,OAAO,GAAG,CAAC;AAC5E,iBAAO;AACT,YAAI,SAAS,OAAW,QAAO,EAAE,MAAM,OAAO,OAAO,MAAM,CAAC,MAAM,EAAE;AACpE,YAAI,SAAS,OAAQ,QAAO;AAC5B,eAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS,MAAM;AACb,kBAAMI,WAAU,KAAK,QAAQ;AAC7B,kBAAM,OAAOA,SAAQ,UAAU,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG;AACxD,kBAAM,OAAO,QAAQ,SAAS,MAAM,OAAO,GAAG,GAAGA,SAAQ,IAAI;AAC7D,gBAAI,SAAS,OAAW,OAAM,UAAU,UAAU,SAAS,GAAG,SAAS,GAAG,OAAO;AACjF,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,MAAM,MAAcjB,SAA2B;AACrD,cAAM,QAAQ,KACX,MAAM,GAAG,EACT,OAAO,CAAC,MAAM,MAAM,EAAE,EACtB,MAAM,CAAC;AACV,YAAI,MAAM,CAAC,MAAM,WAAWA,WAAU,MAAM,SAAS,GAAI,OAAM,CAAC,IAAI,OAAO,KAAK,GAAG;AACnF,eAAO;AAAA,MACT;AAAA,MAEQ,KAAK,MAAcA,SAAuB;AAChD,cAAM,OAAO,KAAK,KAAK,KAAK,MAAM,MAAMA,OAAM,CAAC;AAC/C,YAAI,CAAC,KAAM,OAAM,UAAU,UAAU,IAAI;AACzC,eAAO;AAAA,MACT;AAAA,MAEA,KAAK,MAAcA,UAAS,MAAwB;AAClD,cAAM,OAAO,KAAK,KAAK,MAAMA,OAAM;AACnC,cAAM,OAAO;AAAA,UACX,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,MAAM;AAAA,UACN,SAAS,KAAK,IAAI;AAAA,UAClB,UAAU;AAAA,QACZ;AACA,YAAI,KAAK,SAAS,MAAO,QAAO,EAAE,GAAG,MAAM,aAAa,MAAM,MAAMc,UAAS;AAC7E,YAAI,KAAK,SAAS,QAAQ;AACxB,iBAAO,EAAE,GAAG,MAAM,gBAAgB,MAAM,MAAME,YAAW,MAAM,KAAK,OAAO,OAAO;AAAA,QACpF;AACA,eAAO,EAAE,GAAG,MAAM,QAAQ,MAAM,MAAMD,YAAW,MAAM,KAAK,MAAM,IAAI,EAAE,OAAO;AAAA,MACjF;AAAA,MAEQ,MAAM,MAAwB;AACpC,eAAO,IAAI,YAAY,EAAE,OAAO,KAAK,SAAS,SAAS,KAAK,QAAQ,IAAI,EAAE;AAAA,MAC5E;AAAA,MAEA,KAAK,MAA0B;AAC7B,cAAM,OAAO,KAAK,KAAK,MAAM,IAAI;AACjC,YAAI,KAAK,SAAS,OAAQ,OAAM,UAAU,UAAU,IAAI;AACxD,eAAO,KAAK,MAAM,IAAI;AAAA,MACxB;AAAA,MAEA,QAAQ,MAAwB;AAC9B,cAAM,OAAO,KAAK,KAAK,MAAM,IAAI;AACjC,YAAI,KAAK,SAAS,MAAO,OAAM,UAAU,WAAW,IAAI;AACxD,eAAO,KAAK,MAAM;AAAA,MACpB;AAAA,MAEA,OAAO,MAAkC;AACvC,eAAO,KAAK,SAAS,IAAI,GAAG;AAAA,MAC9B;AAAA,MAEA,SAAS,MAA2D;AAClE,cAAM,OAAO,KAAK,KAAK,KAAK,MAAM,MAAM,IAAI,CAAC;AAC7C,YAAI,MAAM,SAAS,UAAU,CAAC,KAAK,OAAO,WAAW,GAAG,EAAG,QAAO;AAClE,YAAI,KAAK,OAAQ,OAAM,UAAU,UAAU,IAAI;AAC/C,eAAO,KAAK,OAAO,SAAY,EAAE,QAAQ,KAAK,OAAO,IAAI,EAAE,QAAQ,KAAK,QAAQ,IAAI,KAAK,GAAG;AAAA,MAC9F;AAAA,MAEA,OAAO,MAA0D;AAC/D,cAAM,OAAO,KAAK,KAAK,KAAK,MAAM,MAAM,KAAK,CAAC;AAC9C,YAAI,MAAM,SAAS,UAAU,KAAK,OAAO,UAAa,KAAK,OAAQ,QAAO;AAC1E,eAAO,EAAE,QAAQ,KAAK,QAAQ,IAAI,KAAK,GAAG;AAAA,MAC5C;AAAA,MAEA,SAAS,MAAsB;AAC7B,cAAM,OAAO,KAAK,KAAK,MAAM,KAAK;AAClC,YAAI,KAAK,SAAS,OAAQ,OAAM,UAAU,UAAU,IAAI;AACxD,YAAI,KAAK,OAAQ,OAAM,UAAU,UAAU,IAAI;AAC/C,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,OAAO,MAAuB;AAC5B,YAAI;AACF,eAAK,KAAK,MAAM,IAAI;AACpB,iBAAO;AAAA,QACT,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,IAAM,YAAY,CAAC,aAAa,SAAS,UAAU,UAAU,UAAU;AACvE,IAAM,gBAAgB,CAAC,SAAS,MAAM,UAAU,SAAS,WAAW,UAAU,QAAQ;AACtF,IAAMb,YAAW;AAsJjB,IAAMK,QAAO,oBAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAAA;AAAA;;;AC/XnC,UAAU,SAAY,KAAa,KAAa,KAAwC;AAC7F,QAAMY,WAAW,MAAM,EAAE,IAAI,YAAY;AACzC,QAAM,SAAS,QAAQ,iBAAmB,MAAM,EAAE,IAAI,aAAa,IAAqB,CAAC;AACzF,QAAM,OAAO,IAAI;AAAA,IACf,EAAE,UAAU,MAAMA,UAAS,WAAW,MAAM,OAAO;AAAA,IACnD;AAAA,IACA,aAAa;AAAA,EACf;AACA,MAAI;AACF,WAAO,IAAI,IAAI;AAAA,EACjB,SAAS,KAAK;AACZ,UAAM,IAAI,YAAa,IAA0B,QAAQ,OAAO,GAAG;AAAA,EACrE;AACF;AAEO,SAAS,SAAS,MAAqB;AAC5C,QAAM,IAAI,YAAY,SAAS,IAAI;AACrC;AAUO,SAAS,WAAW,SAA+C;AACxE,SAAO,CAAC,EACN,SAAS,SACT,SAAS,UACT,SAAS,UACT,SAAS,YACT,SAAS;AAEb;AAEA,SAAS,aAAa,MAAc,OAAmB;AACrD,MAAI,SAAS;AACb,QAAM,OAAO,MAAM;AACjB,QAAI,OAAQ,OAAM,IAAI,YAAY,SAAS,IAAI;AAAA,EACjD;AACA,SAAO;AAAA,IACL,IAAI;AAAA,IACJ;AAAA,IACA,MAAM,MAAM;AACV,WAAK;AACL,aAAO,MAAM;AAAA,IACf;AAAA,IACA,MAAM,CAAC,UAAkB,WAAmB;AAC1C,WAAK;AACL,MAAAC,OAAM,UAAU,MAAM;AACtB,MAAAA,OAAM,QAAQ,MAAM;AACpB,aAAO,MAAM,MAAM,UAAU,WAAW,MAAM;AAAA,IAChD;AAAA,IACA,OAAO,MAAc;AACnB,YAAM,IAAI,YAAY,SAAS,IAAI;AAAA,IACrC;AAAA,IACA,UAAU,MAAY;AACpB,YAAM,IAAI,YAAY,SAAS,IAAI;AAAA,IACrC;AAAA,IACA,MAAM,MAAM,KAAK;AAAA,IACjB,OAAO,MAAM;AACX,WAAK;AACL,eAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,SAA2B,MAAY;AAC9C,QAAM,MAA+B,EAAE,GAAI,KAAiC;AAC5E,aAAW,CAACC,OAAMC,MAAK,KAAK,OAAO,QAAQ,IAAI,GAAG;AAChD,QAAI,OAAOA,WAAU,YAAY;AAC/B,UAAID,KAAI,IAAI,IAAI,SAAoB,IAAI,QAAQ,CAACE,aAAYA,SAAQD,OAAM,GAAG,IAAI,CAAC,CAAC;AAAA,IACtF;AAAA,EACF;AACA,SAAO;AACT;AAYA,SAAS,QAAQ,OAAkB,KAAc;AAC/C,QAAM,KAAK,CAAC,SAAiB;AAC3B,UAAM,MAAM,MAAM,QAAQ,IAAI;AAC9B,WAAO,OAAO,GAAG,IAAI,MAAM;AAAA,EAC7B;AACA,QAAM,OAAO,CAAI,KAAa,OAA8B,IAAI,SAAS,KAAK,MAAM,KAAK,EAAE,CAAC;AAC5F,SAAO,EAAE,IAAI,KAAK;AACpB;AAEO,SAAS,SACd,IACA,OACA,KACG;AACH,QAAM,EAAE,IAAI,KAAK,IAAI,QAAQ,OAAO,GAAG;AACvC,QAAM,MAA+B,EAAE,GAAG,GAAG;AAC7C,QAAM,OAAO;AACb,QAAM,QAAkE;AAAA,IACtE,MAAM,CAAC,MAAM,QAAQ,KAAK,KAAK,KAAK,IAAI;AAAA,IACxC,OAAO,CAAC,MAAM,QAAQ,KAAK,KAAK,KAAK,KAAK;AAAA,IAC1C,QAAQ,CAAC,MAAM,QAAQ,KAAK,OAAO,GAAG;AAAA,IACtC,SAAS,CAAC,MAAM,QAAQ,KAAK,QAAQ,GAAG;AAAA,IACxC,UAAU,CAAC,MAAM,QAAQ,KAAK,SAAS,GAAG;AAAA,IAC1C,UAAU,CAAC,MAAM,QAAQ,KAAK,KAAK,GAAG;AAAA,EACxC;AACA,aAAW,CAACD,OAAMG,KAAI,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAIH,KAAI,IAAI,CAAC,SAAiBI,UAAoB;AAChD,YAAM,MAAM,GAAG,IAAI;AACnB,aAAO,MAAM,KAAK,KAAK,CAAC,SAASD,MAAK,MAAM,GAAG,CAAC,IAAI,KAAKH,KAAI,IAAI,MAAM,GAAGI,KAAI;AAAA,IAChF;AAAA,EACF;AACA,aAAWJ,SAAQ,QAAQ;AACzB,QAAIA,KAAI,IAAI,CAAC,SAAiBI,UAAoB;AAChD,YAAM,MAAM,GAAG,IAAI;AACnB,aAAO,MAAM,IAAI,OAAO,GAAG,CAAC,IAAI,KAAKJ,KAAI,IAAI,MAAM,GAAGI,KAAI;AAAA,IAC5D;AAAA,EACF;AACA,aAAWJ,SAAQ,KAAK;AACtB,QAAIA,KAAI,IAAI,CAAC,MAAc,OAAe;AACxC,YAAM,MAAM,GAAG,IAAI,KAAK,GAAG,EAAE;AAC7B,aAAO,MAAM,IAAI,OAAO,GAAG,CAAC,IAAI,KAAKA,KAAI,IAAI,MAAM,EAAE;AAAA,IACvD;AAAA,EACF;AACA,MAAI,UAAU,CAAC,QAAgB,SAAiB;AAC9C,UAAM,MAAM,GAAG,IAAI;AACnB,WAAO,MAAM,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,QAAQ,IAAI;AAAA,EAC7D;AACA,SAAO;AACT;AAEA,UAAU,OAAO,KAA6B;AAC5C,SAAO,CAAC;AACR,SAAO,SAAS,GAAG;AACrB;AAEO,SAAS,SACd,MACA,OACA,KACA,QAAQ,OAC0B;AAClC,QAAM,EAAE,IAAI,KAAK,IAAI,QAAQ,OAAO,GAAG;AACvC,SAAO,CAAC,MAAM,YAAY;AACxB,UAAM,MAAM,GAAG,IAAI;AACnB,QAAI,CAAC,IAAK,QAAO,KAAK,MAAM,OAAO;AACnC,QAAI,WAAW,OAAsC,EAAG,QAAO,IAAI,OAAO,GAAG,CAAC;AAC9E,WAAO,KAAK,KAAK,CAAC,SAAS;AACzB,YAAM,OAAO,aAAa,KAAK,KAAK,KAAK,GAAG,CAAC;AAC7C,aAAO,QAAQ,SAAS,IAAI,IAAI;AAAA,IAClC,CAAC;AAAA,EACH;AACF;AAKO,SAAS,YAA8B,IAAO,QAAmB,OAAqB;AAC3F,SAAO,SAAS,IAA+B,OAAO,CAAC,SAAS,SAAS,QAAQ,IAAI,CAAC;AACxF;AAEO,SAAS,WAA6B,IAAO,QAAc,OAAqB;AACrF,SAAO,SAAS,IAA+B,OAAO,CAAC,SAAS,QAAQ,QAAQ,IAAI,CAAC;AACvF;AAEO,SAAS,cACd,MACA,QACA,OACA;AACA,SAAO,SAAS,MAAM,OAAO,CAAC,SAAS,SAAS,QAAQ,IAAI,GAAG,IAAI;AACrE;AAEO,SAAS,aACd,MACA,QACA,OACA;AACA,SAAO,SAAS,MAAM,OAAO,CAAC,SAAS,QAAQ,QAAQ,IAAI,CAAC;AAC9D;AArMA,IAgGM,QACA;AAjGN;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AA0FA,IAAM,SAAS,CAAC,SAAS,MAAM,UAAU,SAAS,WAAW;AAC7D,IAAM,MAAM,CAAC,UAAU,MAAM;AAAA;AAAA;;;AC9C7B,SAAS,QAAQ,KAAyC;AACxD,MAAI,QAAQ,OAAW,QAAO;AAC9B,MAAI,OAAO,QAAQ,YAAY,OAAO,UAAU,GAAG,KAAK,OAAO,EAAG,QAAO;AACzE,MAAI,CAACK,OAAM,IAAI,GAAG,EAAG,OAAM,IAAI,YAAY,UAAU,KAAK;AAC1D,SAAO;AACT;AAEA,SAAS,SAAS,KAA+D;AAC/E,SAAO,QAAQ,WAAW,MAAM,QAAQ,GAAG;AAC7C;AAEA,SAAS,MAAMC,QAA+C;AAC5D,MAAIA,WAAU,UAAaA,WAAU,OAAO,kBAAmB,QAAOA;AACtE,MAAI,EAAEA,UAAS,GAAI,OAAM,IAAI,YAAY,UAAU,KAAK;AACxD,SAAOA;AACT;AAEO,SAAS,UACd,OACA,QACA,QACa;AACb,QAAM,OAAO,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAC1E,QAAM,OAAO,KAAK,UAAU,GAAG,IAAI;AACnC,QAAM,UAAU,KAAK,MAAM,IAAI,YAAY,EAAE,OAAO,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC;AAChF,QAAM,MAAM,MAAM,MAAM,IAAI,MAAM,IAAI,OAAO,QAAQ,GAAG;AACxD,QAAM,MAAM,MAAM,MAAM,IAAI,OAAO,QAAQ,KAAK,IAAI,OAAO,QAAQ,MAAM,QAAQ,GAAG;AACpF,SAAO;AAAA,IACL,KAAK,QAAQ;AAAA,IACb,QAAQ,QAAQ;AAAA,IAChB,GAAI,QAAQ,WAAW,SAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;AAAA,IACjE,GAAI,WAAW,SAAS,EAAE,QAAQ,IAAI,IAAI,CAAC;AAAA,IAC3C,GAAI,WAAW,SAAS,EAAE,QAAQ,IAAI,IAAI,CAAC;AAAA,IAC3C,GAAI,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,EAClD;AACF;AAEO,SAAS,QAAQ,QAAsB,GAAgB,GAA8B;AAC1F,QAAM,CAAC,IAAI,IAAI,EAAE;AACjB,MAAI,SAAS,OAAW,OAAM,IAAI,YAAY,UAAU,KAAK;AAC7D,QAAM,QAAQ,QAAQ,GAAG,KAAK;AAC9B,QAAM,QAAQ,QAAQ,EAAE,OAAO,KAAK;AACpC,QAAM,SAAS,QAAQ,EAAE,MAAM;AAC/B,QAAM,SAAS,SAAS,EAAE,MAAM;AAChC,QAAM,QAAQ,OAAO,EAAE,UAAU,WAAWC,SAAQ,OAAO,EAAE,KAAK,IAAI,EAAE;AACxE,QAAM,YAAY,MAAM,EAAE,SAAS;AACnC,QAAM,UAAU,MAAM,EAAE,OAAO;AAC/B,QAAM,QAAQ,OAAO,MAAM;AAAA,IACzB,IAAI;AAAA,IACJ;AAAA,IACA,MAAM,CAAC,GAAG,EAAE,IAAI;AAAA,IAChB,GAAG;AAAA,IACH,KAAK,EAAE,GAAI,EAAE,OAAO,EAAE,IAAK;AAAA,IAC3B,KAAK,EAAE,QAAQ,SAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;AAAA,IAClD,GAAI,EAAE,QAAQ,SAAY,CAAC,IAAI,EAAE,OAAO,KAAc;AAAA,IACtD,GAAG;AAAA,IACH,OAAO,QAAQ,EAAE,KAAK;AAAA,IACtB,GAAI,QAAQ,EAAE,MAAM,IAAI,CAAC;AAAA,IACzB;AAAA,IACA;AAAA,IACA,GAAI,cAAc,UAAa,cAAc,OAAO,oBAAoB,EAAE,UAAU,IAAI,CAAC;AAAA,IACzF,GAAI,cAAc,OAAO,oBAAoB,EAAE,WAAW,OAAO,iBAAiB,IAAI,CAAC;AAAA,IACvF,GAAI,YAAY,UAAa,YAAY,OAAO,oBAC5C,EAAE,WAAW,QAAQ,IACrB,CAAC;AAAA,IACL,YAAY,EAAE,OAAO,EAAE,cAAc,SAAS;AAAA,EAChD,CAAC;AACD,SAAO,UAAU,OAAO,QAAQ,MAAM;AACxC;AAvHA,IA+CMA,UAEAF;AAjDN;AAAA;AAAA;AAAA;AACA;AA8CA,IAAME,WAAU,IAAI,YAAY;AAEhC,IAAMF,SAAQ,oBAAI,IAAa,CAAC,QAAQ,UAAU,SAAS,CAAC;AAAA;AAAA;;;ACuFrD,SAAS,OACd,MACA,UAAU,4BACV,OAA2E,wBACjE;AACV,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,YAAY,KAAK,KAAK,KAAK,KAAK,IAAI;AAC1C,SAAO,CAAC,QAAQ;AACd,QAAI,CAAC,UAAU,IAAI,IAAI,EAAE,EAAG,QAAO,UAAU,KAAK,KAAK,OAAO,mBAAmB,IAAI,EAAE;AACvF,QAAI;AACF,aAAO,UAAU,KAAK,KAAK,SAAS,IAAI,EAAE;AAAA,IAC5C,SAAS,KAAK;AACZ,YAAMG,SAAS,KAAmC;AAClD,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,OAAO,OAAOA,WAAU,WAAWA,SAAQ;AAAA,QAC3C,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AACF;AA8CO,SAAS,QACd,QACA,QAe6C;AAC7C,QAAM,EAAE,OAAO,SAAS,SAAAC,SAAQ,IAAI;AAEpC,QAAM,aAAa,CAAC,QAAoC;AACtD,QAAI;AACF,YAAMC,YAAW;AAAA,QACf;AAAA,UACE,MAAM,GAAG;AACP,mBAAO,gBAAgB,OAAO,KAAK,EAAE,IAAI,SAAS,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC;AAAA,UACpE;AAAA,UACA,SAAS,GAAG;AACV,mBAAO,OAAO,OAAO,KAAK,EAAE,IAAI,YAAY,MAAM,EAAE,CAAC,CAAC;AAAA,UACxD;AAAA,QACF;AAAA,QACA;AAAA,MACF;AACA,aAAOA,cAAa,OAAO,MAAMA,SAAQ,IAAIA,YAAW;AAAA,IAC1D,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,OAAO,CAAC,OAAuB;AACnC,UAAM,QAAQ,MAAM,IAAI,EAAE;AAC1B,QAAI,MAAO,QAAO;AAClB,UAAM,MAAM,OAAO,KAAK,EAAE,IAAI,WAAW,GAAG,CAAC;AAC7C,UAAM,IAAI,IAAI,GAAG;AACjB,WAAO;AAAA,EACT;AAEA,QAAMC,QAAO,CAAC,IAAY,MAAM,UAAsB;AACpD,IAAAC,OAAM,KAAK,MAAM;AACjB,UAAM,WAAW,WAAW,KAAK,EAAE,GAAG,KAAK,OAAO,MAAM;AACxD,QAAI,SAAU,QAAO;AACrB,UAAM,IAAI,OAAO,SAAS,EAAE,IAAI,WAAW,IAAI,KAAK,KAAK,IAAI,KAAK,MAAM,EAAE,CAAC;AAC3E,WAAO,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,QAAQ,IAAI,WAAW,CAAC;AAAA,EAChE;AAEA,QAAMC,SAAQ,CAAC,IAAY,MAA2B,YAAqC;AACzF,UAAM,QAAQ,OAAO,SAAS,WAAWC,SAAQ,OAAO,IAAI,IAAI;AAChE,UAAM,IAAI,KAAK,EAAE;AACjB,QAAI,YAAY,CAAC,EAAG,QAAO,MAAM;AACjC,UAAM,WAAW,SAAS,aAAa;AACvC,QAAI,KAAK;AACT,WAAO,KAAK,MAAM,QAAQ;AACxB,YAAM,OAAO,MAAM,SAAS,IAAI,KAAK,MAAM;AAC3C,UAAI;AACF,cAAM,MAAM,EAAE,IAAI,YAAqB,IAAI,MAAM,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC,EAAG;AACnF,cAAM,QAAQ,OAAO,SAAS,GAAG,GAAG,KAAK,MAAM;AAAA,MACjD,SAAS,KAAK;AACZ,YAAI,WAAW,KAAK,CAAC,EAAG,QAAO,KAAK,EAAE,IAAI,aAAa,KAAK,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC;AACvF,cAAM;AAAA,MACR;AACA,UAAI,SAAU;AAAA,IAChB;AACA,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,CAAC,IAAsB,SAAmC;AACvE,UAAM,MAAML,SAAQ,IAAI;AACxB,QAAI,MAAM,GAAG,EAAG,QAAO,QAAQ,QAAQ,QAAQ,KAAK,OAAO,MAAM,CAAC;AAClE,QAAI;AACF,aAAO,KAAK,EAAE,IAAI,iBAAiB,MAAM,IAAI,CAAC;AAC9C,YAAM,IAAI,gBAAgB,OAAO,KAAK,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC;AACxD,UAAI,CAAC,EAAG,OAAM,IAAI,YAAY,OAAO,EAAE;AACvC,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,UAAI,EAAE,eAAe,gBAAgB,IAAI,SAAS,SAAU,OAAM;AAClE,YAAM,UAAU,WAAW,GAAG;AAC9B,UAAI,CAAC,QAAS,OAAM;AACpB,aAAO,QAAQ,QAAQ,QAAQ,SAAS,OAAO,MAAM,CAAC;AAAA,IACxD;AAAA,EACF;AAEA,QAAMM,WAAU,CAAC,KAAa,YAAuC;AACnE,UAAM,EAAE,IAAI,MAAM,GAAG,OAAO,IAAI,QAAQ,QAAQ,QAAQ,KAAK,OAAO,CAAC;AACrE,UAAM,SAAS,MAAM;AACnB,YAAM,OAAO,EAAE;AACf,cAAQ,OAAO,EAAE;AAAA,IACnB;AACA,QAAI,KAAM,OAAM,IAAI,IAAI,EAAE,MAAM,OAAO,CAAC;AACxC,UAAM,QAAQ,CAAC,MAAc;AAC3B,aAAO;AACP,aAAO,KAAK,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC;AAAA,IACvC;AACA,UAAM,SAAS,OACX,SAAS,QAAQ,IAAI,KAAK,QAAQ,WAAW,MAAM,MAAM,IACzD,eAAe,IAAI,KAAK,EAAE,MAAM,CAAC,GAAG,QAAQJ,MAAK,GAAG,GAAG,GAAG,OAAAE,QAAO,MAAM,GAAG,MAAM;AACpF,YAAQ,IAAI,IAAI,OAAO,UAAU;AACjC,WAAO,OAAO;AAAA,EAChB;AAEA,QAAM,OAAO,CAAC,MAAc,UAAyB,CAAC,MAAkB;AACtE,UAAM,MAAMJ,SAAQ,IAAI;AACxB,QAAI,MAAM,GAAG,EAAG,QAAOM,SAAQ,KAAK,OAAO;AAC3C,QAAI;AACF,UAAI;AACJ,UAAI;AACF,mBAAW,OAAO,YAAY,OAAO,IAAI,UAAU,QAAQ,GAAG;AAAA,MAChE,SAAS,KAAK;AACZ,mBAAW,OAAO,GAAG;AAAA,MACvB;AACA,gBAAU,KAAK,SAAS,QAAQ;AAChC,YAAM,KAAK,OAAO,KAAK,YAAY,KAAK,OAAO,CAAC;AAChD,UAAI;AACF,eAAO,KAAK,EAAE,IAAI,eAAe,GAAG,CAAC;AAAA,MACvC,SAAS,KAAK;AACZ,eAAO,IAAI,EAAE,IAAI,YAAY,GAAG,CAAC;AACjC,cAAM;AAAA,MACR;AACA,YAAM,IAAI,IAAI,EAAE,MAAM,OAAO,CAAC;AAC9B,YAAM,SAAS,SAAS,QAAQ,IAAI,KAAK,QAAQ,WAAW,MAAM,MAAM;AACtE,cAAM,OAAO,EAAE;AACf,gBAAQ,OAAO,EAAE;AAAA,MACnB,CAAC;AACD,cAAQ,IAAI,IAAI,OAAO,UAAU;AACjC,aAAO,OAAO;AAAA,IAChB,SAAS,KAAK;AACZ,UAAI,EAAE,eAAe,gBAAgB,IAAI,SAAS,SAAU,OAAM;AAClE,YAAM,UAAU,WAAW,GAAG;AAC9B,UAAI,CAAC,QAAS,OAAM;AACpB,aAAOA,SAAQ,SAAS,OAAO;AAAA,IACjC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAAJ;AAAA,IACA,OAAAE;AAAA,IACA,MAAM,IAAI;AACR,cAAQ,IAAI,EAAE,IAAI;AAClB,cAAQ,OAAO,EAAE;AACjB,YAAM,OAAO,EAAE;AACf,aAAO,UAAU,EAAE;AACnB,aAAO,KAAK,EAAE,IAAI,YAAY,GAAG,CAAC;AAAA,IACpC;AAAA,IACA,YAAY,MACV,OAAO,KAAK,EAAE,IAAI,aAAa,QAAQ,QAAQ,MAAM,SAAS,CAAC;AAAA,IACjE,MAAM,MAAM,OAAO,KAAK,EAAE,IAAI,UAAU,CAAC;AAAA,IACzC,MAAM,aAAa,MAAM,QAAQ,EAAE,SAAAJ,UAAS,KAAK,OAAO,IAAI,CAAC;AAAA,IAC7D,IAAI,WAAW,YAAY,QAAQA,UAAS,QAAQ,MAAM,UAAU,GAAG,QAAQ;AAAA,MAC7E,SAAAA;AAAA,MACA,KAAK,OAAO;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAEA,SAAS,SACP,QACA,IACA,MACA,QACA,QAC8C;AAC9C,MAAI,OAAO;AACX,QAAM,OAAO,MAAY;AACvB,QAAI,CAAC,KAAM,OAAM,IAAI,YAAY,SAAS,IAAI;AAAA,EAChD;AACA,QAAM,QAAQ,CACZ,UACA,QACA,WACwB;AACxB,IAAAG,OAAM,UAAU,MAAM;AACtB,IAAAA,OAAM,QAAQ,MAAM;AACpB,UAAM,QAAsB,CAAC;AAC7B,QAAI,MAAM;AACV,OAAG;AACD,WAAK;AACL,YAAM,MAAM,KAAK,IAAI,SAAS,KAAK,SAAS;AAC5C,UAAI,OAAO,EAAG;AACd,YAAM,QAAQ,OAAO,MAAM,EAAE,IAAI,YAAY,IAAI,QAAQ,WAAW,KAAK,IAAI,CAAC;AAC9E,UAAI,MAAM,WAAW,EAAG;AACxB,UAAI,OAAQ,QAAO,KAAK,IAAI,OAAO,OAAO,KAAK,GAAG;AAAA,UAC7C,OAAM,KAAK,KAAK;AACrB,aAAO,MAAM;AAAA,IACf,SAAS,MAAM;AACf,WAAO,SAAS,MAAM,OAAO,OAAO,GAAG;AAAA,EACzC;AACA,QAAM,OAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA,OAAO;AACL,WAAK;AACL,aAAQ,OAAO,KAAK,EAAE,IAAI,eAAe,GAAG,CAAC,EAAuB;AAAA,IACtE;AAAA,IACA,SAAS,UAAkB,MAAkB,SAAS,GAAG,SAAS,KAAK,SAAS,QAAQ;AACtF,aAAO,MAAM,UAAU,QAAQ,WAAW,MAAM,QAAQ,MAAM,CAAC;AAAA,IACjE;AAAA,IACA,KAAK,UAAkB,QAAgB;AACrC,aAAO,MAAM,UAAU,MAAM;AAAA,IAC/B;AAAA,IACA,MAAM,UAAU,MAAM;AACpB,MAAAA,OAAM,UAAU,OAAO;AACvB,UAAI,KAAK;AACT,SAAG;AACD,aAAK;AACL,YAAI,MAAM,KAAK,OAAQ;AACvB,cAAM,OAAO,KAAK,SAAS,IAAI,KAAK,MAAM;AAC1C,cAAM,IAAI,OAAO,KAAK,UAAU,IAAI,QAAQ,WAAW,IAAI,IAAI,CAAC;AAChE,YAAI,EAAE,IAAI,GAAI,OAAM,IAAI,YAAY,OAAO,OAAO;AAClD,cAAM;AAAA,MACR,SAAS,KAAK,KAAK;AACnB,aAAO;AAAA,IACT;AAAA,IACA,SAAS,MAAM;AACb,WAAK;AACL,MAAAA,OAAM,MAAM,UAAU;AACtB,aAAO,KAAK,EAAE,IAAI,aAAa,IAAI,KAAK,CAAC;AAAA,IAC3C;AAAA,IACA,OAAO;AACL,WAAK;AACL,aAAO,KAAK,EAAE,IAAI,YAAY,GAAG,CAAC;AAAA,IACpC;AAAA,IACA,QAAQ;AACN,WAAK;AACL,aAAO;AACP,aAAO;AACP,aAAO,KAAK,EAAE,IAAI,YAAY,GAAG,CAAC;AAAA,IACpC;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA,YAAY,MAAM;AAChB,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,YACP,QACAH,UACA,QACA,MACA,QACoC;AACpC,SAAO;AAAA,IACL,MAAM,CAAC,SAAS,OAAO,QAAQ,IAAI;AAAA,IACnC,OAAO,CAAC,SAAS,OAAO,SAAS,IAAI;AAAA,IACrC,OAAO,MAAM;AACX,YAAM,MAAMA,SAAQ,IAAI;AACxB,UAAI,MAAM,GAAG,EAAG,QAAO,QAAQ,QAAQ,UAAU,GAAG,CAAC;AACrD,UAAI,OAAO,KAAK,EAAE,IAAI,UAAU,MAAM,IAAI,CAAC,MAAM,KAAM,QAAO;AAC9D,YAAM,UAAU,OAAO,GAAG;AAC1B,aAAO,UAAU,QAAQ,QAAQ,UAAU,OAAO,CAAC,IAAI;AAAA,IACzD;AAAA,IACA,QAAQ,MAAM;AACZ,YAAM,MAAMA,SAAQ,IAAI;AACxB,UAAI,MAAM,GAAG,EAAG,QAAO,QAAQ,QAAQ,WAAW,GAAG,CAAC;AACtD,aAAO,OAAO,KAAK,EAAE,IAAI,WAAW,MAAM,IAAI,CAAC;AAAA,IACjD;AAAA,IACA,OAAO,CAAC,MAAM,YACZ,KAAK,OAAO,KAAK;AAAA,MACf,IAAI;AAAA,MACJ,MAAMA,SAAQ,IAAI;AAAA,MAClB,GAAI,SAAS,cAAc,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;AAAA,MAC1D,MAAM,SAAS,SAAS,SAAY,MAAQ,OAAO,QAAQ,IAAI;AAAA,IACjE,CAAC;AAAA,IACH,IAAI,CAAC,SAAS,KAAK,OAAO,KAAK,EAAE,IAAI,MAAM,MAAMA,SAAQ,IAAI,EAAE,CAAC;AAAA,IAChE,QAAQ,CAAC,SAAS,KAAK,OAAO,KAAK,EAAE,IAAI,UAAU,MAAMA,SAAQ,IAAI,EAAE,CAAC;AAAA,IACxE,QAAQ,CAAC,MAAM,OACb,KAAK,OAAO,KAAK,EAAE,IAAI,UAAU,MAAMA,SAAQ,IAAI,GAAG,MAAMA,SAAQ,EAAE,EAAE,CAAC;AAAA,IAC3E,OAAO,CAAC,MAAM,SACZ,KAAK,OAAO,KAAK,EAAE,IAAI,SAAS,MAAMA,SAAQ,IAAI,GAAG,MAAM,OAAO,IAAI,EAAE,CAAC;AAAA,IAC3E,MAAM,CAAC,MAAM,OAAO,KAAK,OAAO,KAAK,EAAE,IAAI,QAAQ,MAAMA,SAAQ,IAAI,GAAG,MAAMA,SAAQ,EAAE,EAAE,CAAC;AAAA,IAC3F,SAAS,CAAC,QAAQ,SAChB,KAAK,OAAO,KAAK,EAAE,IAAI,WAAW,MAAMA,SAAQ,IAAI,GAAG,MAAM,OAAO,CAAC;AAAA,IACvE,SAAS,MAAM;AACb,YAAM,MAAMA,SAAQ,IAAI;AACxB,UAAI,MAAM,GAAG,EAAG,QAAO,QAAQ,QAAQ,YAAY,GAAG,CAAC;AACvD,aAAO,OAAO,OAAO,KAAK,EAAE,IAAI,YAAY,MAAM,IAAI,CAAC,CAAC;AAAA,IAC1D;AAAA,IACA,OAAO,MAAM;AACX,UAAI,MAAMA,SAAQ,IAAI;AACtB,UAAI,MAAM,GAAG,GAAG;AACd,YAAI;AACF,gBAAM,SAAS,QAAQ,QAAQ,iBAAiB,GAAG,CAAC;AACpD,cAAI,QAAQ,WAAW,GAAG,EAAG,OAAM;AAAA,QACrC,QAAQ;AAAA,QAAC;AAAA,MACX;AACA,aAAO,QAAQ,GAAG;AAClB,aAAO,SAAS,OAAO,KAAK,EAAE,IAAI,UAAU,MAAM,IAAI,CAAC,CAAC;AAAA,IAC1D;AAAA,IACA,SAAS,MAAM;AACb,YAAM,MAAMA,SAAQ,IAAI;AACxB,UAAI,MAAM,GAAG,EAAG,QAAO,cAAc,KAAK,GAAG,CAAC;AAC9C,UAAI;AACF,eAAO,KAAK,EAAE,IAAI,iBAAiB,MAAM,IAAI,CAAC;AAC9C,eAAO,OAAO,MAAM,EAAE,IAAI,QAAQ,MAAM,IAAI,CAAC;AAAA,MAC/C,SAAS,KAAK;AACZ,YAAI,EAAE,eAAe,gBAAgB,IAAI,SAAS,SAAU,OAAM;AAClE,cAAM,UAAU,OAAO,GAAG;AAC1B,YAAI,CAAC,QAAS,OAAM;AACpB,eAAO,cAAc,KAAK,OAAO,CAAC;AAAA,MACpC;AAAA,IACF;AAAA,IACA,UAAU,MAAM,MAAM,SAAS;AAC7B,YAAM,OAAO,SAAS;AACtB,YAAM,OAAO,KAAK,MAAM;AAAA,QACtB,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,GAAI,SAAS,SAAY,EAAE,KAAK,IAAI,CAAC;AAAA,MACvC,CAAC;AACD,UAAI;AACF,aAAK,MAAM,GAAG,OAAO,SAAS,WAAWK,SAAQ,OAAO,IAAI,IAAI,IAAI;AAAA,MACtE,UAAE;AACA,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;AAjhBA,IAkIMA,UAEO,QAEP,WAwBO;AA9Jb;AAAA;AAAA;AAAA;AAEA;AACA;AAOA;AAGA;AAYA;AAsBA;AAEA;AAiFA,IAAMA,WAAU,IAAI,YAAY;AAEzB,IAAM,SAAmB,OAAO,EAAE,IAAI,OAAO,OAAO,UAAU,SAAS,eAAe;AAE7F,IAAM,YAAiC,oBAAI,IAAI,CAAC,GAAG,mBAAmB,eAAe,CAAC;AAwB/E,IAAM,eAAN,MAAmB;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MAEjB,YAAY,MAAgB,QAAmC,SAAqB,MAAM;AAAA,MAAC,GAAG;AAC5F,aAAK,OAAO;AACZ,aAAK,SAAS;AACd,aAAK,SAAS;AAAA,MAChB;AAAA,MAEA,IAAI,KAAuC;AACzC,aAAK,OAAO;AACZ,cAAM,SAAS,KAAK,KAAK,GAAG;AAC5B,aAAK,OAAO,QAAQ;AACpB,aAAK,OAAO;AACZ,eAAO;AAAA,MACT;AAAA,MAEA,KAAK,KAAuC;AAC1C,cAAM,SAAS,KAAK,IAAI,GAAG;AAC3B,YAAI,CAAC,OAAO,GAAI,OAAM,UAAU,QAAQ,IAAI,EAAE;AAC9C,eAAO;AAAA,MACT;AAAA,MAEA,KAAK,KAAkC;AACrC,cAAM,SAAS,KAAK,KAAK,GAAG;AAC5B,eAAO,OAAO,MAAM,OAAO,SAAS,SAAS,OAAO,OAAO;AAAA,MAC7D;AAAA,MAEA,MAAM,KAAqC;AACzC,cAAM,SAAS,KAAK,KAAK,GAAG;AAC5B,eAAO,OAAO,MAAM,OAAO,SAAS,UAAU,OAAO,QAAQ,IAAI,WAAW,CAAC;AAAA,MAC/E;AAAA,MAEA,SAAS,KAAuC;AAC9C,mBAAS;AACP,gBAAM,SAAS,KAAK,IAAI,GAAG;AAC3B,cAAI,OAAO,GAAI,QAAO;AACtB,cAAI,OAAO,UAAU,QAAS,OAAM,UAAU,QAAQ,IAAI,EAAE;AAAA,QAC9D;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACvJA,SAAS,KAAK,SAA+B;AAC3C,SAAO,EAAE,GAAG,SAAS,MAAM,CAAC,GAAG,QAAQ,IAAI,EAAE;AAC/C;AAEO,SAAS,MAAM,SAA+B;AACnD,QAAM,MAAM,KAAK,OAAO;AACxB,MAAI,WAAW,EAAE,SAAS,QAAQ,QAAQ,SAAS;AACnD,MAAI,WAAW;AACf,MAAI,WAAW;AACf,MAAI,WAAW,EAAE,OAAO,SAAS,SAAS;AAC1C,MAAI,KAAK,IAAI,IAAI;AACjB,MAAI,KAAK,KAAK,IAAI;AAClB,SAAO;AACT;AAEO,SAAS,OACd,QACA,YAMA;AACA,QAAM,QAAQ,oBAAI,IAAgD;AAClE,QAAM,aAAa,OAAO,QACtB,MAAM,OAAO,KAAK,EAAE,IAAI,WAAW,GAAG,CAAC,GAAc,YAAY,MAAM,EAAE;AAE7E,QAAM,UAAU,OAAO,OACpB,MAAM,OAAO,KAAK,EAAE,IAAI,WAAW,GAAG,CAAC;AAC1C,QAAM,UAAU,OAAO,IAAY,YAAsC;AACvE,UAAM,OAAO,KAAK,EAAE,IAAI,WAAW,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;AAAA,EACjE;AAEA,QAAM,MAAa;AAAA,IACjB;AAAA,IACA;AAAA,IACA,MAAM,OAAO,IAAI,KAAK;AACpB,YAAM,WAAW,MAAM,WAAW,EAAE;AACpC,UAAI,CAAC,KAAK;AACR,cAAM,WAAW,MAAM,IAAI,QAAQ;AACnC,cAAM,OAAO,QAAQ;AACrB,YAAI,SAAU,OAAM,QAAQ,IAAI,SAAS,OAAO;AAChD;AAAA,MACF;AACA,YAAME,WAAU,MAAM,QAAQ,EAAE;AAChC,UAAI,CAAC,MAAM,IAAI,QAAQ,EAAG,OAAM,IAAI,UAAU,EAAE,IAAI,SAASA,SAAQ,CAAC;AACtE,YAAM,QAAQ,IAAI,MAAMA,QAAO,CAAC;AAAA,IAClC;AAAA,IACA,MAAM,KAAK,IAAI;AACb,YAAM,CAAC,MAAM,OAAO,IAAK,MAAM,OAAO,KAAK,EAAE,IAAI,aAAa,GAAG,CAAC;AAClE,aAAO,EAAE,SAAS,KAAK;AAAA,IACzB;AAAA,IACA,YAAY,OAAO,OAAQ,MAAM,OAAO,KAAK,EAAE,IAAI,gBAAgB,GAAG,CAAC;AAAA,IACvE,MAAM,cAAc,IAAI,MAAM;AAC5B,YAAM,OAAO,KAAK,EAAE,IAAI,gBAAgB,IAAI,KAAK,CAAC;AAAA,IACpD;AAAA,EACF;AAEA,QAAM,SAAS,OAAO,UAAkB,OAA4C;AAClF,UAAM,OAAQ,MAAM,OAAO,KAAK,EAAE,IAAI,UAAU,CAAC;AACjD,UAAM,KAAK,KAAK,OAAO,CAAC,UAAU,MAAM,aAAa,QAAQ;AAC7D,YAAQ,GAAG,KAAK,CAAC,UAAU,MAAM,OAAO,EAAE,KAAK,GAAG,CAAC,IAAI;AAAA,EACzD;AACA,QAAM,WAAW,OAAO,UAAkB,YAAsC;AAC9E,UAAM,KAAM,MAAM,OAAO,KAAK,EAAE,IAAI,eAAe,MAAM,SAAS,CAAC;AACnE,QAAI;AACF,YAAM,QAAQ,IAAI,OAAO;AAAA,IAC3B,UAAE;AACA,YAAM,OAAO,KAAK,EAAE,IAAI,YAAY,GAAG,CAAC;AAAA,IAC1C;AAAA,EACF;AACA,QAAM,UAAU,YAA2B;AACzC,eAAW,CAAC,UAAU,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,QAAQ,GAAG;AAC9D,YAAM,OAAO,QAAQ;AACrB,YAAM,KAAK,MAAM,OAAO,UAAU,EAAE,EAAE,MAAM,MAAM,MAAS;AAC3D,YAAM,OAAO,OAAO,SAAY,SAAS,UAAU,OAAO,IAAI,QAAQ,IAAI,OAAO;AACjF,YAAM,KAAK,MAAM,MAAM,MAAS;AAAA,IAClC;AAAA,EACF;AAEA,QAAM,UAAU,CAAC,OACd,WAA6B,KAAK,EAAE,IAAI,WAAW,GAAG,CAAC;AAC1D,QAAM,UAAU,CAAC,IAAY,YAC3B,KAAM,WAA6B,KAAK,EAAE,IAAI,WAAW,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;AACvF,QAAM,UAAqB;AAAA,IACzB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO,IAAI,KAAK;AACd,YAAM,OAAQ,WAA6B,KAAK,EAAE,IAAI,WAAW,GAAG,CAAC;AACrE,YAAM,WAAW,KAAK,YAAY,MAAM,EAAE;AAC1C,UAAI,CAAC,KAAK;AACR,cAAM,WAAW,MAAM,IAAI,QAAQ;AACnC,cAAM,OAAO,QAAQ;AACrB,YAAI,SAAU,SAAQ,IAAI,SAAS,OAAO;AAC1C;AAAA,MACF;AACA,YAAMA,WAAU,QAAQ,EAAE;AAC1B,UAAI,CAAC,MAAM,IAAI,QAAQ,EAAG,OAAM,IAAI,UAAU,EAAE,IAAI,SAASA,SAAQ,CAAC;AACtE,cAAQ,IAAI,MAAMA,QAAO,CAAC;AAAA,IAC5B;AAAA,EACF;AAEA,QAAM,QAAQ,MACZ,CAAC,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,IAAI,QAAQ,CAAC,OAAO,EAAE,UAAU,IAAI,QAAQ,EAAE;AACvF,SAAO,EAAE,KAAK,SAAS,SAAS,MAAM;AACxC;AA3JA,IAmCM,QACA,OACA,QACA,OACA,MACA,OACA,KACA,MACA,QACA,MACA,QACA,OACA;AA/CN;AAAA;AAAA;AAmCA,IAAM,SAAS;AACf,IAAM,QAAQ;AACd,IAAM,SAAS;AACf,IAAM,QAAQ;AACd,IAAM,OAAO;AACb,IAAM,QAAQ;AACd,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,SAAS;AACf,IAAM,OAAO;AACb,IAAM,SAAS;AACf,IAAM,QAAQ;AACd,IAAM,OAAO;AAAA;AAAA;;;ACPb,SAAS,cAAc,QAAqC;AAC1D,SAAO,gBAAgB,OAAO,CAAC,QAAQ;AACrC,QAAI;AACF,aAAO,OAAO,KAAK,GAAG,EAAE;AAAA,IAC1B,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;AAEA,SAAS,aACP,QACA,MACsB;AACtB,MAAI;AACJ,MAAI;AACF,YAAQ,OAAO,QAAQ,GAAG;AAAA,EAC5B,SAAS,KAAK;AACZ,SAAK,8CAA8C,OAAO,GAAG,CAAC,EAAE;AAChE,WAAO;AAAA,EACT;AACA,QAAM,aAAa,MAChB,OAAO,CAACC,UAASA,SAAQ,CAACA,MAAK,SAAS,GAAG,KAAK,CAAC,kBAAkB,IAAIA,KAAI,CAAC,EAC5E,IAAI,CAACA,UAAS,IAAIA,KAAI,EAAE;AAC3B,aAAW,OAAOC,gBAAgB,KAAI,CAAC,WAAW,SAAS,GAAG,EAAG,YAAW,KAAK,GAAG;AACpF,QAAM,OAAiB,CAAC;AACxB,aAAW,OAAO,YAAY;AAC5B,QAAI;AACF,UAAI,OAAO,KAAK,GAAG,EAAE,YAAa,MAAK,KAAK,GAAG;AAAA,IACjD,QAAQ;AAAA,IAAC;AAAA,EACX;AACA,SAAO;AACT;AAOA,SAAS,WAAW,IAA+B;AACjD,QAAM,MAAM;AACZ,QAAM,EAAE,WAAW,WAAW,IAAI;AAClC,MAAI,CAAC,aAAa,CAAC,WAAY;AAC/B,MAAI,YAAY,CAAC,KAAaD,OAAc,UAA2B;AACrE,UAAME,QAAO,UAAU,KAAK,KAAK,KAAKF,OAAM,KAAK;AACjD,QAAIE,UAAS,MAAM,CAAC,MAAO,QAAOA;AAClC,QAAI;AACF,YAAM,OAAO,WAAW,KAAK,KAAK,KAAKF,KAAI;AAC3C,UAAI,SAAS,KAAK,OAAQ,QAAO;AAAA,IACnC,QAAQ;AACN,aAAOE;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACF;AAEO,SAAS,uBACd,IACA,MACqB;AACrB,QAAM,EAAE,QAAQ,KAAK,IAAI;AACzB,QAAM,OAAO,aAAa,QAAQ,IAAI;AACtC,QAAM,EAAE,QAAQ,QAAQ,IAAI;AAAA,IAC1B;AAAA,IACA;AAAA,IACA,CAAC,GAAI,QAAQ,CAAC,GAAI,GAAG,cAAc,MAAM,CAAC;AAAA,IAC1C;AAAA,EACF;AACA,MAAI,KAAM,UAAS,IAAI,MAAM;AAC7B,MAAI,OAAO,UAAU,GAAG,WAAY,cAAa,EAAwC;AACzF,MAAI,OAAO,SAAS,GAAG,WAAY,cAAa,EAAwC;AACxF,aAAW,EAAE;AACb,MAAI,KAAK,KAAM,IAAG,YAAY,KAAK;AACnC,MAAI;AACF,KAAC,GAAG,gBAAgB,GAAG,OAAO,KAAK,IAAI,KAAK,GAAG;AAAA,EACjD,SAAS,KAAK;AACZ,SAAK,mBAAmB,KAAK,GAAG,WAAY,IAA4B,KAAK,EAAE;AAAA,EACjF;AACA,SAAO;AAAA,IACL;AAAA,IACA,OAAO,MAAM,aAAa,IAAI,MAAM;AAAA,IACpC,YAAY,MAAM,OAAO,WAAW;AAAA,IACpC,YAAY,MAAM,kBAAkB,IAAI,MAAM;AAAA,EAChD;AACF;AA5HA,IAYM,mBAEAD,iBAwBA;AAtCN;AAAA;AAAA;AAAA;AAYA,IAAM,oBAAoB,oBAAI,IAAI,CAAC,OAAO,MAAM,CAAC;AAEjD,IAAMA,kBAAiB,CAAC,QAAQ,MAAM;AAwBtC,IAAM,kBAAkB,CAAC,UAAU;AAAA;AAAA;;;ACvBnC,SAASE,MAAKC,QAAmC;AAC/C,SAAOA,WAAU,MAAMA,WAAU,aAAa,SAAYA,WAAU;AACtE;AAEA,SAAS,OAAOA,QAAiD;AAC/D,SAAO,OAAOA,WAAU,YAAY,OAAO,SAASA,MAAK,IAAIA,SAAQ;AACvE;AAEO,SAAS,oBAAoB,IAAe,KAAiBC,OAAkB;AACpF,QAAM,EAAE,SAAS,SAAS,SAAS,IAAI;AACvC,QAAM,OAAO;AACb,QAAM,WAAW,CAAC,WAChB,QAAQ,kBAAkB,OAAO,gBAAgB;AACnD,QAAM,OAAO,CAAC,UAA6D;AACzE,eAAW,KAAK,GAAG,SAAS;AAC1B,YAAM,MAAM,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI;AAC1C,UAAI,QAAQ,OAAW,QAAO;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AACA,QAAM,SAAS,CAAC,MAAuBC,YAAwC;AAC7E,QAAI,OAAO,SAAS,SAAU,QAAO,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAChE,UAAM,KAAKA,UAAS,SAAS,MAAM,GAAG,IAAI,CAAC,IAAI;AAC/C,QAAI,OAAO,OAAW,QAAO,SAAS,GAAG,UAAU,EAAE,CAAC;AACtD,WAAO,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAAA,EACpC;AACA,QAAM,OAAO,CAAC,OAAmC,SAAS,GAAG,UAAU,EAAE,CAAC;AAC1E,QAAM,UAAU,CAAC,KAAa,KAAa,QACzCD,MAAK,MAAM,SAAS,KAAK,KAAK,KAAKF,MAAK,GAAG,GAAGA,MAAK,GAAG,CAAC,CAAC;AAC1D,MAAI,WAAW,KAAK,OAAO;AACzB,UAAM,QAAQ,KAAK,MAAM,KAAK,EAAE;AAChC,SAAK,QAAQ,CAAC,MAAM,KAAK,KAAK,eAAe;AAC3C,YAAM,MAAM,OAAO,MAAM,CAAC,UAAU;AACpC,UAAI,QAAQ,OAAW,QAAO,MAAM,MAAM,KAAK,KAAK,UAAU;AAC9D,cAAQ,KAAK,KAAK,GAAG;AAAA,IACvB;AAAA,EACF;AACA,MAAI,WAAW,KAAK,QAAQ;AAC1B,UAAM,SAAS,KAAK,OAAO,KAAK,EAAE;AAClC,SAAK,SAAS,CAAC,IAAI,KAAK,QAAQ;AAC9B,YAAM,MAAM,KAAK,EAAE;AACnB,UAAI,QAAQ,OAAW,QAAO,OAAO,IAAI,KAAK,GAAG;AACjD,cAAQ,KAAK,KAAK,GAAG;AAAA,IACvB;AAAA,EACF;AACA,MAAI,WAAW,KAAK,OAAO;AACzB,UAAM,QAAQ,KAAK,MAAM,KAAK,EAAE;AAChC,SAAK,QAAQ,CAAC,MAAM,MAAM,eAAe;AACvC,YAAM,MAAM,OAAO,MAAM,CAAC,UAAU;AACpC,UAAI,QAAQ,OAAW,QAAO,MAAM,MAAM,MAAM,UAAU;AAC1D,MAAAE,MAAK,MAAM,QAAQ,KAAK,KAAK,KAAK,OAAO,IAAM,CAAC;AAAA,IAClD;AAAA,EACF;AACA,MAAI,WAAW,KAAK,QAAQ;AAC1B,UAAM,SAAS,KAAK,OAAO,KAAK,EAAE;AAClC,SAAK,SAAS,CAAC,IAAI,SAAS;AAC1B,YAAM,MAAM,KAAK,EAAE;AACnB,UAAI,QAAQ,OAAW,QAAO,OAAO,IAAI,IAAI;AAC7C,MAAAA,MAAK,MAAM,QAAQ,KAAK,KAAK,KAAK,OAAO,IAAM,CAAC;AAAA,IAClD;AAAA,EACF;AACA,MAAI,YAAY,KAAK,OAAO;AAC1B,UAAM,QAAQ,KAAK,MAAM,KAAK,EAAE;AAChC,SAAK,QAAQ,CAAC,MAAM,OAAO,UAAU;AACnC,YAAM,MAAM,OAAO,MAAM,IAAI;AAC7B,UAAI,QAAQ,OAAW,QAAO,MAAM,MAAM,OAAO,KAAK;AACtD,YAAM,MAAM,KAAK,eAAe;AAChC,MAAAA,MAAK,MAAM,SAAS,KAAK,KAAK,KAAK,OAAO,KAAK,GAAG,OAAO,KAAK,GAAG,GAAG,CAAC;AAAA,IACvE;AAAA,EACF;AACF;AArFA;AAAA;AAAA;AACA;AAAA;AAAA;;;ACkDA,SAAS,UAAU,MAAuB;AACxC,SAAO,SAAS,KAAK,IAAI;AAC3B;AAEA,SAAS,QAAQ,MAAsB;AACrC,QAAM,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC;AACjC,QAAM,MAAM,oBAAI,KAAK;AACrB,SAAO;AAAA,IACL,KAAK;AAAA,IACL,KAAK,MAAM,SAAY,IAAI,IAAI,OAAO,CAAC;AAAA,IACvC,MAAM,MAAM,SAAY,OAAU;AAAA,IAClC,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM,MAAM,SAAa,KAAK,IAAK,IAAK,OAAO,IAAK,OAAO,CAAC;AAAA,IAC5D,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AACF;AAeA,SAAS,WAAW,QAAQ,KAAa;AACvC,QAAM,MAAM,oBAAI,KAAK;AACrB,SAAO;AAAA,IACL,KAAK;AAAA,IACL,KAAK,UAAU,MAAM,IAAI;AAAA,IACzB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAO,MAAM,IAAK;AAAA,IAClB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AACF;AAoMA,SAAS,YAAY,QAAuD;AAC1E,UAAQ,OAAO,QAAQE,iBAAgB,IAAI,EAAE,UAAU,KAAK,IAAI;AAClE;AAEA,SAAS,QAAQ,MAAgD;AAC/D,QAAM,QAA8B,CAAC;AACrC,aAAW,CAAC,KAAKC,MAAK,KAAK,OAAO,QAAQ,QAAQ,CAAC,CAAC;AAClD,QAAI,cAAc,KAAK,GAAG,MAAM,OAAOA,WAAU,YAAY,OAAOA,WAAU;AAC5E,YAAM,GAAG,IAAI,IAAI,KAAKA,MAAK;AAC/B,SAAO;AACT;AAvTA,IAOM,QACA,SACA,SACA,SACA,YACA,YACA,SAEOD,aACP,aAWA,UAEA,UAEA,WAkBA,UA0BAE,cAEA,UASAC,iBAqBAC,UACAC,SACA,UACAC,UACA,aAEA,mBAEO,aASA,cA6LA;AAzTb;AAAA;AAAA;AAIA;AACA;AAEA,IAAM,SAAS;AACf,IAAM,UAAU;AAChB,IAAM,UAAU;AAChB,IAAM,UAAU;AAChB,IAAM,aAAa;AACnB,IAAM,aAAa;AACnB,IAAM,UAAU;AAET,IAAMN,cAAa;AAC1B,IAAM,cAAc;AAWpB,IAAM,WAAW;AAEjB,IAAM,WAAW;AAEjB,IAAM,YAAY;AAkBlB,IAAM,WAAW;AA0BjB,IAAME,eAAc;AAEpB,IAAM,WAA6C;AAAA,MACjD,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AACA,IAAMC,kBAAiB;AAqBvB,IAAMC,WAAU;AAChB,IAAMC,UAAS;AACf,IAAM,WAAW;AACjB,IAAMC,WAAU;AAChB,IAAM,cAAc;AAEpB,IAAM,oBAAoB,MAAM;AAEzB,IAAM,cAAN,cAA0B,MAAM;AAAA,MAC5B;AAAA,MAET,YAAYC,SAAgB;AAC1B,cAAM,QAAQA,OAAM,EAAE;AACtB,aAAK,SAASA;AAAA,MAChB;AAAA,IACF;AAEO,IAAM,eAAN,cAA2B,MAAM;AAAA,MAC7B;AAAA,MAET,YAAYC,OAAc;AACxB,cAAMA,KAAI;AACV,aAAK,OAAOA;AAAA,MACd;AAAA,IACF;AAsLO,IAAM,gBAAN,MAAoB;AAAA,MACR,OAAO,oBAAI,IAAoB;AAAA,MAExC;AAAA,MAEA,UAAU;AAAA,MAED,eAAe,oBAAI,IAA0B;AAAA,MAEtD,YAAY;AAAA,MAEH;AAAA,MAEA;AAAA,MAEA;AAAA,MAEjB,YACE,IAEA,KAEA,UAA+B,CAAC,GAChC;AACA,aAAK,KAAK;AAEV,aAAK,MAAM;AAEX,aAAK,UAAU;AAAA,MACjB;AAAA,MAEA,OAAO,QAAuB,KAAa,UAA0B;AACnE,aAAK,KAAK,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;AAEhD,eAAO,gBAAgB;AACvB,eAAO,aAAa,KAAK,IAAI,KAAK,OAAO,UAAU;AACnD,YAAI,YAAY,KAAK,IAAI,SAAS,GAAG,KAAK,MAAO,QAAO,MAAM,KAAK,OAAO,GAAG;AAAA,YACxE,QAAO,OAAO;AAAA,MACrB;AAAA,MAEA,WAAW,QAAuB,MAAoB;AACpD,cAAM,MAAM,KAAK;AAAA,UAAK,MACpB,KAAK,WAAW,MAAM,KAAK,IAAI,QAAQ,MAAM,OAAO,OAAO,GAAG,EAAE,MAAM,KAAK,CAAC,CAAC;AAAA,QAC/E;AACA,aAAK,OAAO,QAAQ,KAAK,KAAK;AAC9B,eAAO,kBAAkB;AAAA,MAC3B;AAAA,MAEA,aAAa,QAAuB,KAAmB;AACrD,aAAK,OAAO,QAAQ,KAAK,KAAK;AAC9B,eAAO,oBAAoB;AAAA,MAC7B;AAAA,MAEA,aAAa,OAA8B;AACzC,cAAM,KAAK,KAAK;AAChB,YAAI,CAAC,GAAG,SAAS,CAAC,GAAG,cAAc,CAAC,GAAG,cAAc;AACnD,gBAAM,SAAS,KAAK,GAAG,KAAK,aAAa,CAAC;AAC1C,iBAAO,QAAQ;AACf,iBAAO;AAAA,QACT;AACA,cAAM,aAAa,GAAG;AACtB,aAAK,eAAe,GAAG,MAAM,EAAE,OAAO,MAAM,WAAW,MAAM,KAAK,OAAS,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI;AACzF,cAAM,MAAM,EAAE,KAAK;AACnB,cAAM,OAAO,GAAG,WAAW,KAAK,YAAY,UAAU,GAAG,IAAI,aAAa,CAAC;AAC3E,cAAM,MAAM,oBAAI,KAAK;AACrB,cAAM,OAAO,EAAE,KAAK,GAAG,KAAK,MAAM,aAAa,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,EAAE;AAC1F,cAAM,QAAQ,EAAE,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,SAAS,MAAM,QAAQ,EAAE;AAC7E,aAAK,WAAW,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG;AACzD,eAAO,GAAG,aAAa,EAAE,MAAM,OAAO,UAAU,OAAO,UAAU,GAAG,YAAY,CAAC,EAAE,CAAC;AAAA,MACtF;AAAA,MAEA,aAAa,QAA6B;AACxC,cAAM,MAAM,OAAO;AACnB,YAAI,CAAC,OAAO,OAAO,QAAQ,OAAW;AACtC,cAAMC,QAAO,KAAK,IAAI,UAAU,GAAG;AACnC,YAAIA,MAAM,MAAK,WAAW,QAAQA,KAAI;AAAA,MACxC;AAAA,MAEQ,WAAW,QAAuBA,OAAoB;AAC5D,eAAO,OAAOA;AACd,aAAK,QAAQA,KAAI;AACjB,YAAI,OAAO,KAAK,GAAG,SAAS,WAAY;AAExC,eAAO,aAAa,EAAE,GAAG,OAAO,YAAY,SAAS,MAAM,KAAK,GAAG,OAAOA,KAAI,KAAK,CAAC,EAAE;AAAA,MACxF;AAAA,MAEA,WAAW,QAAuB,MAAoC;AACpE,aAAK,WAAW,QAAQ,SAAS,WAAWP,eAAcC,eAAc;AAAA,MAC1E;AAAA,MAEQ,aAAmB;AACzB,cAAM,KAAK,KAAK;AAChB,cAAM,EAAE,aAAa,OAAO,SAAS,eAAe,IAAI;AACxD,YAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAS;AACxC,cAAM,QAA0E;AAAA,UAC9E,CAACD,cAAa,KAAK,KAAK,IAAI,UAAU;AAAA,UACtC,CAACC,iBAAgB,KAAK,KAAK,IAAI,aAAa;AAAA,QAC9C;AACA,mBAAW,CAAC,MAAM,OAAO,MAAM,KAAK,OAAO;AACzC,cAAI,CAAC,OAAQ;AACb,gBAAM,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK;AACtC,0BAAgB,KAAK,IAAI,KAAK;AAAA,YAC5B,MAAM,CAAC,WAA0B,KAAK,SAAS,QAAQ,MAAM,MAAM;AAAA,UACrE,CAAC;AACD,cAAI,YAAY,KAAK,IAAI,IAAI,EAAE,OAAQ;AACvC,cAAI;AACF,kBAAM,OAAO,MAAM,KAAK,IAAI,MAAM,GAAG;AACrC,gBAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,oBAAM,OAAO;AACb,mBAAK,WAAW,EAAE,GAAG,KAAK,UAAU,SAAS,MAAM,WAAW,KAAK,EAAE;AAAA,YACvE;AAAA,UACF,QAAQ;AAAA,UAAC;AAAA,QACX;AAAA,MACF;AAAA,MAEQ,SACN,QACA,MACA,QACA,WAAW,OACL;AACN,YAAI;AACJ,YAAI;AACF,gBAAM,KAAK,KAAK,MAAM,OAAO,KAAK,KAAK,KAAK,OAAO,QAAQ,CAAC,CAAC;AAAA,QAC/D,SAAS,GAAG;AACV,eAAK,GAAG,YAAY,OAAO,EAAE;AAC7B,gBAAM;AAAA,QACR;AACA,aAAK,OAAO,QAAQ,KAAK,QAAQ;AACjC,aAAK,WAAW,QAAQ,IAAI;AAC5B,YAAI,SAASA,gBAAgB,MAAK,YAAY,GAAG;AAAA,MACnD;AAAA,MAEiB,YAAY,oBAAI,IAAY;AAAA,MAE7C,YAAY,KAAmB;AAC7B,aAAK,UAAU,IAAI,GAAG;AAAA,MACxB;AAAA,MAEA,WAAW;AAAA,MAEH,SAAS;AAAA,MAET,eAAe;AAAA,MAEN,YAAY,oBAAI,IAAY;AAAA,MAE7C,UAAsB;AACpB,aAAK,SAAS;AACd,eAAO,MAAM;AACX,eAAK,SAAS;AAAA,QAChB;AAAA,MACF;AAAA,MAEQ,eAAqB;AAC3B,cAAM,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG;AAClC,YAAI,QAAQ,UAAa,CAAC,KAAK,UAAU,OAAO,GAAG,EAAG;AACtD,aAAK,UAAU,IAAI,GAAG;AACtB,YAAI;AACF,eAAK,IAAI,MAAM,GAAG;AAAA,QACpB,SAAS,GAAG;AACV,cAAI,aAAa,aAAc,MAAK,aAAa,EAAE,IAAI;AAAA,QACzD;AAAA,MACF;AAAA,MAEA,WAAWI,SAAwB;AACjC,eAAO,KAAK,gBAAgBA,YAAW,IAAI,IAAIA;AAAA,MACjD;AAAA,MAEQ,cAAc,QAAuB,KAAmB;AAC9D,YAAI;AACF,eAAK,IAAI,MAAM,GAAG;AAAA,QACpB,SAAS,GAAG;AACV,cAAI,KAAK,YAAY,OAAO,OAAO,KAAK,aAAa,aAAc,MAAK,aAAa,EAAE,IAAI;AAC3F,eAAK,KAAK,MAAM;AACd,kBAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEQ,aAAaC,OAAoB;AACvC,aAAK,eAAe;AACpB,cAAM,SAAS,KAAK,GAAG,UAAU,CAAC,GAAG;AACrC,YAAI,WAAW,OAAW;AAC1B,cAAM,OAAO,GAAG,KAAK,QAAQ,WAAW,SAAS,kBAAkB,SAASA,KAAI,KAAKA,KAAI;AAAA;AACzF,YAAI;AACF,eAAK,IAAI,MAAM,QAAQ,IAAI,YAAY,EAAE,OAAO,IAAI,CAAC;AAAA,QACvD,QAAQ;AAAA,QAAC;AAAA,MACX;AAAA,MAEQ,mBAAmB;AAAA,MAEnB,mBAAyB;AAC/B,cAAM,KAAK,KAAK;AAChB,cAAM,EAAE,YAAY,SAAS,SAAS,OAAO,QAAQ,IAAI;AACzD,cAAM,WAAW,KAAK,IAAI,UAAU,KAAK,KAAK,GAAG;AACjD,YAAI,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,SAAU;AAC5E,WAAG,aAAa,CAAC,QAAQC,UAAS;AAChC,cAAI;AACF,mBAAO,WAAW,KAAK,IAAI,QAAQA,KAAI;AAAA,UACzC,SAAS,GAAG;AACV,kBAAM,OAAO,QAAQA,KAAI;AACzB,gBAAI,KAAK,oBAAoB,CAAC,SAAS,KAAKA,KAAI,KAAK,QAAQ,KAAK,IAAI,MAAM,MAAM;AAChF,oBAAM;AACR,gBAAI,CAAC,SAAS,EAAE,SAAS,IAAI,EAAG,OAAM;AACtC,iBAAK,mBAAmB;AACxB,gBAAI;AACF,oBAAM,KAAK,IAAI,MAAM,QAAQ,KAAK,IAAI,GAAG,CAAC,CAAC;AAAA,YAC7C,UAAE;AACA,mBAAK,mBAAmB;AAAA,YAC1B;AACA,mBAAO,WAAW,KAAK,IAAI,QAAQA,KAAI;AAAA,UACzC;AAAA,QACF;AACA,WAAG,UAAU,CAAC,SAAS;AACrB,gBAAM,QAAQ,QAAQ,KAAK,IAAI,IAAI;AACnC,cAAI,KAAK,QAAQ,QAAQ,EAAE,MAAM,OAAQ,QAAO;AAChD,gBAAMC,WAAU,SAAS,EACtB,IAAI,CAAC,QAAQ,IAAI,MAAM,QAAQ,MAAM,CAAC,EACtC,OAAO,CAACD,UAAS,SAAS,KAAKA,KAAI,KAAK,CAAC,MAAM,SAASA,KAAI,CAAC;AAChE,iBAAO,CAAC,GAAG,OAAO,GAAGC,QAAO;AAAA,QAC9B;AAAA,MACF;AAAA,MAEQ,cAAoB;AAC1B,cAAM,KAAK,KAAK;AAChB,cAAM,EAAE,YAAY,SAAS,SAAS,OAAO,OAAO,QAAQ,IAAI;AAChE,cAAM,UAAU,KAAK,IAAI,YAAY,KAAK,KAAK,GAAG;AAClD,YAAI,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,QAAS;AACrF,cAAM,OAAO,CAAC,QAAgBD,UAA0B;AACtD,gBAAM,MAAM,QAAQ,KAAK,IAAI,MAAM;AACnC,cAAI,QAAQ,UAAUA,UAAS,MAAO,OAAM,KAAK,IAAI,YAAY,GAAK;AAAA,mBAC7D,QAAQ,UAAUA,UAAS,UAAU,KAAK,IAAI;AACrD,iBAAK,QAAQ,aAAa,QAAQ,KAAK,IAAI,GAAG,CAAC,CAAC;AAAA,mBACzC,QAAQ,cAAc,QAAQ,EAAE,SAAS,OAAOA,KAAI,CAAC,KAAK,QAAQ,KAAKA,KAAI;AAClF,iBAAK,QAAQ,YAAYA,KAAI,IAAI,QAAQ,KAAK,IAAI,WAAW,OAAOA,KAAI,CAAC,CAAC;AAAA,cACvE,QAAO;AACZ,iBAAO;AAAA,QACT;AACA,WAAG,aAAa,CAAC,QAAQA,UAAS;AAChC,cAAI;AACF,mBAAO,WAAW,KAAK,IAAI,QAAQA,KAAI;AAAA,UACzC,SAAS,GAAG;AACV,gBAAI,KAAK,iBAAkB,OAAM;AACjC,iBAAK,mBAAmB;AACxB,gBAAI;AACJ,gBAAI;AACF,qBAAO,KAAK,QAAQA,KAAI;AAAA,YAC1B,UAAE;AACA,mBAAK,mBAAmB;AAAA,YAC1B;AACA,gBAAI,CAAC,KAAM,OAAM;AACjB,mBAAO,WAAW,KAAK,IAAI,QAAQA,KAAI;AAAA,UACzC;AAAA,QACF;AACA,WAAG,UAAU,CAAC,SAAS;AACrB,gBAAM,KAAK,KAAK,QAAQ,QAAQ,EAAE;AAClC,cAAI,OAAO,WAAY,QAAO,CAAC,KAAK,MAAM,GAAG,QAAQ,EAAE,IAAI,MAAM,CAAC;AAClE,gBAAM,QAAQ,QAAQ,KAAK,IAAI,IAAI;AACnC,cAAI,OAAO,OAAQ,QAAO;AAC1B,gBAAM,QAAQ,CAAC,OAAO,GAAI,KAAK,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,CAAE;AAC3D,iBAAO,CAAC,GAAG,OAAO,GAAG,MAAM,OAAO,CAACA,UAAS,CAAC,MAAM,SAASA,KAAI,CAAC,CAAC;AAAA,QACpE;AAAA,MACF;AAAA,MAEQ,QAAQ,MAAc,KAAmB;AAC/C,cAAM,KAAK,KAAK;AAChB,WAAG,gBAAgB,KAAK,IAAI,KAAK;AAAA,UAC/B,MAAM,CAAC,WAA0B;AAC/B,kBAAM,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC;AACjC,kBAAM,EAAE,SAAS,QAAQ,IAAI,KAAK;AAClC,kBAAM,SAAS,MACb,MAAM,SACF,QAAQ,KAAK,KAAK,GAAG,IACrB,QAAQ,KAAK,KAAK,KAAK,OAAO,CAAC,IAAI,OAAO,QAAQ,cAAc,CAAC;AACvE,iBAAK,SAAS,QAAQ,MAAM,QAAQ,IAAI;AAAA,UAC1C;AAAA,QACF,CAAC;AACD,WAAG,OAAO,KAAK,IAAI,MAAM,GAAG;AAAA,MAC9B;AAAA,MAEQ,UAAU,MAAc,IAAiC;AAC/D,aAAM,IAAiC,QAAQ,KAAK,aAAa,EAAG,QAAO;AAC3E,cAAM,EAAE,WAAW,IAAI,KAAK;AAC5B,cAAM,OAAO,YAAY,KAAK,KAAK,IAAI,MAAM,EAAE,QAAQ,KAAK,CAAC,EAAE;AAC/D,eAAO,SAAS,UAAa,UAAU,IAAI,IAAI,OAAO;AAAA,MACxD;AAAA,MAEQ,QAAQA,OAAoB;AAClC,cAAM,EAAE,aAAa,OAAO,QAAQ,IAAI,KAAK;AAC7C,YAAI,CAAC,SAAS,KAAKA,KAAI,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,QAAS;AAChE,YAAI,CAAC,YAAY,KAAK,KAAK,IAAIA,KAAI,EAAE;AACnC,gBAAM,KAAK,KAAK,IAAIA,OAAM,QAAQ,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC;AAAA,MACzD;AAAA,MAEQ,OAAO,KAAqB;AAClC,eAAO;AAAA,UACL,KAAK;AAAA,YACH,cAAc,MAAM,KAAK,KAAK,MAAM,KAAK,IAAI,SAAS,GAAG,CAAC;AAAA,YAC1D,cAAc,CAAC,MAAe,IAAY,YACxC,KAAK,KAAK,MAAM;AACd,mBAAK,IAAI,SAAS,KAAK,SAAS,OAAO,OAAO;AAC9C,qBAAO;AAAA,YACT,CAAC;AAAA,YACH,kBAAkB,MAAM,KAAK,KAAK,MAAM,KAAK,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;AAAA,YAC3E,OAAO,MAAM;AAAA,YAAC;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,WAAW,QAAuB,KAAmB;AACnD,aAAK,OAAO,QAAQ,KAAK,KAAK;AAC9B,eAAO,kBAAkB;AACzB,eAAO,aAAa;AAAA,UAClB,GAAG,OAAO;AAAA,UACV,QAAQ,CAAC,IAAI,QAAQ,WAAW,KAAK,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,QAAQ,MAAM,CAAC;AAAA,UAElF,OAAO,MACL,KAAK,KAAK,MAAM;AACd,iBAAK,IAAI,MAAM,GAAG;AAClB,mBAAO;AAAA,UACT,CAAC;AAAA,QACL;AAAA,MACF;AAAA,MAEA,eAAe,QAAuB,KAAmB;AACvD,cAAM,UAAU,KAAK,YAAY,QAAQ,GAAG;AAC5C,YAAI,QAAS,MAAK,SAAS,QAAQ,GAAG,OAAO,QAAQ,EAAE,IAAI,EAAE,KAAK,SAAS,IAAI,OAAO;AAAA,MACxF;AAAA,MAEA,gBAAgB,QAAuB,KAAmB;AACxD,cAAM,UAAU,KAAK,YAAY,QAAQ,GAAG;AAC5C,YAAI,QAAS,QAAO,aAAa,EAAE,GAAG,OAAO,YAAY,QAAQ;AAAA,MACnE;AAAA,MAEQ,YAAY,QAAuB,KAAyC;AAClF,cAAM,EAAE,MAAM,QAAAE,QAAO,IAAI,KAAK;AAC9B,YAAI,CAAC,KAAM,QAAO;AAClB,cAAM,OAAO,OAAO;AACpB,eAAO,MAAM;AACX,gBAAM,OAAO,KAAK,UAAU,UAAU,IAAI;AAC1C,gBAAM,OAAO,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACrD,gBAAM,OAAOA,WAAU,KAAK,KAAK,MAAMA,QAAO,KAAK,KAAK,KAAK,GAAG,CAAC;AACjE,iBAAO,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,IAAI,GAAG,MAAM,KAAK;AAAA,QAC1D;AAAA,MACF;AAAA,MAEA,SAAS,QAAuBF,OAAc,SAA6B;AACzE,YAAI,KAAK,aAAa,SAAS,EAAG,MAAK,gBAAgB;AACvD,aAAK,aAAa,IAAIA,OAAM,OAAO;AACnC,eAAO,OAAOA;AACd,eAAO,aAAa,EAAE,GAAG,OAAO,YAAY,QAAQ;AAAA,MACtD;AAAA,MAEQ,kBAAwB;AAC9B,cAAM,KAAK,KAAK;AAChB,mBAAWA,SAAQ,CAAC,QAAQ,OAAO,GAAY;AAC7C,gBAAM,WAAW,GAAGA,KAAI;AACxB,cAAI,OAAO,aAAa,WAAY;AACpC,aAAGA,KAAI,IAAI,CAAC,SAAiBG,UAAoB;AAC/C,kBAAM,UAAU,KAAK,aAAa,IAAI,IAAI;AAC1C,mBAAO,UAAU,QAAQ,IAAI,SAAS,KAAK,IAAI,MAAM,GAAGA,KAAI;AAAA,UAC9D;AAAA,QACF;AAAA,MACF;AAAA,MAEA,sBAA4B;AAC1B,4BAAoB,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC;AAAA,MAC7D;AAAA,MAEA,yBAA+B;AAC7B,YAAI,OAAO,KAAK,GAAG,SAAS,WAAY;AACxC,aAAK,YAAY;AACjB,aAAK,iBAAiB;AACtB,aAAK,YAAY;AACjB,aAAK,WAAW;AAChB,cAAM,OAAO,KAAK,GAAG,KAAK,KAAK,KAAK,EAAE;AACtC,aAAK,GAAG,OAAO,CAAC,MAAM,OAAO,SAAS;AACpC,gBAAMC,UAAS,OAAO,SAAS,WAAW,KAAK,WAAW,IAAI,IAAI;AAClE,cAAIA,YAAW,UAAa,SAAS,KAAKA,OAAM,KAAK,CAAC,KAAK,eAAeA,OAAM,GAAG;AACjF,kBAAM,IAAI,KAAK,GAAG,WAAW,UAAU,QAAQ,CAAC;AAAA,UAClD;AACA,gBAAM,MACJ,KAAK,QAAQ,MAAM,MAAM,OAAO,IAAI,KACpC,KAAK,WAAW,MAAM,MAAM,OAAO,IAAI,KACvC,KAAK,cAAc,MAAM,MAAM,OAAO,IAAI;AAC5C,cAAI,IAAK,QAAO;AAChB,eAAK,oBAAoB,MAAM,KAAK;AACpC,gBAAM,SAAS,KAAK,WAAW,MAAM,MAAM,OAAO,IAAI;AAEtD,cAAI,CAAC,OAAO,IAAK,QAAO;AACxB,cAAI,OAAO,SAAS,cAAc,KAAK,IAAI,SAAS;AAClD,gBAAI;AACJ,gBAAI;AACF,oBAAM,KAAK,KAAK,MAAM,KAAK,IAAI,UAAU,CAAW;AAAA,YACtD,SAAS,GAAG;AACV,mBAAK,GAAG,YAAY,OAAO,EAAE;AAC7B,oBAAM;AAAA,YACR;AACA,iBAAK,OAAO,QAAQ,KAAK,IAAI;AAC7B,mBAAO;AAAA,UACT;AAEA,cAAI;AACJ,cAAI;AACF,oBAAQ,OAAO,OAAO,KAAK,kBAAkB,OAAO,IAAI,IAAI;AAAA,UAC9D,SAAS,GAAG;AACV,iBAAK,GAAG,YAAY,OAAO,EAAE;AAC7B,kBAAM;AAAA,UACR;AACA,cAAI,UAAU,QAAW;AACvB,iBAAK,OAAO,QAAQ,OAAO,IAAI;AAC/B,mBAAO;AAAA,UACT;AAEA,gBAAM,WAAW,KAAK,cAAc;AACpC,cAAI,aAAa,OAAW,MAAK,OAAO,QAAQ,UAAU,IAAI;AAC9D,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEQ,WACN,MACA,MACA,OACA,MACe;AACf,YAAI;AACF,iBAAO,KAAK,MAAM,OAAO,IAAI;AAAA,QAC/B,SAAS,KAAK;AACZ,gBAAM,OAAQ,IAA2B,UAAU,UAAU,QAAQ,KAAK,EAAE,QAAQR;AACpF,cAAI,CAAC,KAAM,OAAM;AACjB,iBAAO,KAAK,MAAM,OAAO,IAAI;AAAA,QAC/B;AAAA,MACF;AAAA,MAEQ,oBAAoB,MAAc,OAAqB;AAC7D,aAAK,SAASD,WAAUC,eAAcD,WAAUC,SAAS;AACzD,YAAI,OAAO;AACX,YAAI;AACF,iBAAQ,KAAK,GAAG,OAAO,MAAM,IAAI,GAAqC,QAAQ;AAAA,QAChF,QAAQ;AAAA,QAAC;AACT,aAAK,OAAO,WAAc,MAAU,OAAM,IAAI,KAAK,GAAG,WAAW,UAAU,QAAQ,CAAC;AAAA,MACtF;AAAA,MAEQ,QACN,MACA,MACA,OACA,MAC2B;AAC3B,cAAM,MAAM,sBAAsB,KAAK,IAAI;AAC3C,YAAI,SAAS,eAAe,CAAC,IAAK,QAAO;AACzC,cAAM,EAAE,SAAS,QAAQ,IAAI,KAAK;AAClC,YAAI,CAAC,WAAW,CAAC,QAAS,QAAO;AACjC,cAAM,MAAM,KAAK;AAAA,UAAK,MACpB,MAAM,QAAQ,OAAO,IAAI,CAAC,CAAC,IAAI,QAAQ,cAAc,CAAC,IAAI,QAAQ;AAAA,QACpE;AACA,eAAO,KAAK,OAAO,MAAM,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,IAAI;AAAA,MAC3D;AAAA,MAEQ,WACN,MACA,MACA,OACA,MAC2B;AAC3B,cAAM,EAAE,WAAW,IAAI,KAAK;AAC5B,YAAI,SAASH,gBAAe,CAAC,WAAY,QAAO;AAChD,cAAM,MAAM,KAAK,KAAK,MAAM,WAAW,KAAK,KAAK,KAAK,QAAQ,CAAC,CAAC;AAChE,eAAO,KAAK,OAAO,MAAM,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,KAAK;AAAA,MAC5D;AAAA,MAEQ,cACN,MACA,MACA,OACA,MAC2B;AAC3B,cAAM,EAAE,cAAc,IAAI,KAAK;AAC/B,YAAI,SAASC,mBAAkB,CAAC,cAAe,QAAO;AACtD,YAAI,QAAQ,YAAa,OAAM,IAAI,KAAK,GAAG,WAAW,UAAU,SAAS,CAAC;AAC1E,cAAM,MAAM,KAAK,KAAK,MAAM,cAAc,KAAK,KAAK,KAAK,QAAQ,CAAC,CAAC;AACnE,YAAI;AACF,gBAAM,SAAS,KAAK,OAAO,MAAM,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,KAAK;AAClE,eAAK,YAAY,GAAG;AACpB,iBAAO;AAAA,QACT,SAAS,GAAG;AACV,eAAK,IAAI,iBAAiB,GAAG;AAC7B,eAAK,IAAI,MAAM,GAAG;AAClB,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEQ,OACN,MACA,KACA,IACA,UACe;AACf,YAAI;AACJ,YAAI;AACF,mBAAS,KAAK,aAAa,GAAG,QAAQ,EAAEC,WAAUC,UAASC,WAAU,GAAG,IAAI;AAAA,QAC9E,SAAS,GAAG;AACV,eAAK,IAAI,MAAM,GAAG;AAClB,gBAAM;AAAA,QACR;AAEA,aAAK,OAAO,QAAQ,KAAK,QAAQ;AAEjC,aAAK,WAAW,QAAQ,GAAG,IAAI;AAC/B,eAAO;AAAA,MACT;AAAA,MAEQ,cAAoB;AAC1B,cAAM,KAAK,KAAK;AAChB,mBAAWG,SAAQ,CAAC,SAAS,UAAU,SAAS,QAAQ,GAAY;AAClE,gBAAM,WAAW,GAAGA,KAAI;AACxB,cAAI,OAAO,aAAa,WAAY;AACpC,aAAGA,KAAI,IAAI,CAAC,SAAiBG,UAC3B,UAAU,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,SAAS,KAAK,IAAI,MAAM,GAAGA,KAAI;AAAA,QAC9E;AACA,mBAAWH,SAAQ,CAAC,QAAQ,OAAO,GAAY;AAC7C,gBAAM,WAAW,GAAGA,KAAI;AACxB,cAAI,OAAO,aAAa,WAAY;AACpC,aAAGA,KAAI,IAAI,CAAC,SAAiBG,UAAoB;AAC/C,gBAAI,SAASV,gBAAe,KAAK,IAAI,WAAY,QAAO,WAAW;AACnE,gBAAI,SAASC,mBAAkB,KAAK,IAAI,cAAe,QAAO,WAAW,GAAG;AAC5E,kBAAM,QAAQ,KAAK,SAAS,IAAI;AAChC,gBAAI,SAAS,UAAU,IAAI,EAAG,QAAO,KAAK,MAAM,MAAM,QAAQ,IAAI,CAAC;AACnE,gBAAI,CAAC,UAAU,IAAI;AACjB,qBAAO,KAAK,SAAS,MAAM,SAAS,KAAK,IAAI,MAAM,GAAGS,KAAI,GAAGH,OAAM,KAAK;AAC1E,iBAAK,YAAY,IAAI;AACrB,kBAAM,KAAK,QAAQ,IAAI;AACvB,mBAAO,KAAK,QAAQ,WAAW,OAAO,EAAE,GAAG,IAAI,KAAK,GAAG,KAAK,EAAE,IAAI;AAAA,UACpE;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,SAAS,MAAc,IAAaA,OAAwB,OAAyB;AAC3F,cAAM,MAAMA,UAAS,SAAS,KAAK,UAAU,MAAM,EAAE,IAAI;AACzD,YAAI,KAAK;AACP,eAAK,YAAY,GAAG;AACpB,iBAAO,QAAQ,KAAK,MAAM,KAAK,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG;AAAA,QAC5D;AACA,eAAO,SAAS,SAAS,KAAK,IAAI,IAAI,KAAK,MAAM,MAAM,EAAY,IAAI;AAAA,MACzE;AAAA,MAEQ,SAAS,MAAuB;AACtC,eAAO,KAAK,QAAQ,WAAW,QAAQ,KAAK,IAAI,aAAa,UAAa,SAAS;AAAA,MACrF;AAAA,MAEQ,MAAM,MAAc,IAAoB;AAC9C,cAAM,MAAM,KAAK,IAAI;AACrB,cAAM,QAAQ,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC;AACtD,YAAI,CAAC,MAAO,QAAO;AACnB,cAAM,OAAS,GAAwB,OAAO,CAAC,QAAW,MAAM,QAAQ;AACxE,eAAO,EAAE,GAAG,IAAI,KAAK,MAAM,KAAK,KAAK,MAAM,KAAK,KAAK;AAAA,MACvD;AAAA,MAEQ,YAAY,MAAoB;AACtC,cAAM,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC;AACjC,cAAM,SACJ,MAAM,SACF,KAAK,IAAI,YAAY,SACpB,KAAK,IAAI,aAAa,EAAE,SAAS,OAAO,CAAC,CAAC,KAAK;AACtD,YAAI,CAAC,OAAQ,OAAM,IAAI,KAAK,GAAG,WAAW,UAAU,QAAQ,CAAC;AAAA,MAC/D;AAAA,MAEQ,WAAW,MAAkC;AACnD,cAAMA,QAAO,KAAK,MAAM,KAAK,YAAY,GAAG,IAAI,CAAC;AACjD,YAAI,CAAC,SAAS,KAAKA,KAAI,EAAG,QAAO;AACjC,cAAM,EAAE,YAAY,IAAI,IAAI,KAAK;AACjC,cAAMK,YAAW,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI;AACnF,cAAM,MAAMA,UAAS,MAAM,GAAGA,UAAS,YAAY,GAAG,CAAC,KAAK;AAC5D,YAAI;AACF,gBAAM,OAAO,YAAY,KAAK,KAAK,IAAI,KAAK,EAAE,QAAQ,KAAK,CAAC,EAAE,QAAQ;AACtE,iBAAO,GAAG,SAAS,MAAM,KAAK,IAAI,IAAIL,KAAI;AAAA,QAC5C,QAAQ;AACN,iBAAOK;AAAA,QACT;AAAA,MACF;AAAA,MAEQ,eAAe,MAAuB;AAC5C,cAAM,EAAE,YAAY,IAAI,KAAK;AAC7B,eAAO,aAAa,KAAK,KAAK,IAAI,IAAI,EAAE,UAAU;AAAA,MACpD;AAAA,MAEQ,kBAAkB,MAAkC;AAC1D,cAAM,EAAE,QAAQ,IAAI,KAAK;AACzB,YAAI,CAAC,QAAS,QAAO;AACrB,YAAI;AACF,iBAAO,QAAQ,KAAK,KAAK,KAAK,IAAI;AAAA,QACpC,SAAS,GAAG;AACV,cAAI,aAAa,gBAAgB,EAAE,SAAS,QAAS,QAAO;AAC5D,iBAAO,KAAK,KAAK,MAAM;AACrB,kBAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEQ,gBAAoC;AAC1C,mBAAW,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG;AAC1B,gBAAM,SAAS,KAAK,GAAG,UAAU,EAAE;AACnC,cAAI,QAAQ,kBAAkB,UAAa,OAAO,IAAK,QAAO,OAAO;AAAA,QACvE;AACA,eAAO;AAAA,MACT;AAAA,MAEA,SAAS,QAA6B;AACpC,cAAM,aAAa,OAAO,WAAW,KAAK,MAAM;AAChD,eAAO,aAAa,MAAM;AACxB,gBAAM,CAACC,OAAMC,MAAK,IAAI,KAAK,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC;AAErD,cAAI;AACJ,cAAI;AACF,kBAAM,WAAW;AAAA,UACnB,SAAS,GAAG;AACV,uBAAW,OAAO,CAACD,OAAMC,MAAK,GAAG;AAC/B,kBAAI;AACF,qBAAK,IAAI,MAAM,GAAG;AAAA,cACpB,QAAQ;AAAA,cAAC;AAAA,YACX;AACA,kBAAM;AAAA,UACR;AACA,eAAK,OAAO,KAAK,GAAG,UAAU,IAAI,WAAW,GAAoBD,OAAM,KAAK;AAC5E,eAAK,OAAO,KAAK,GAAG,UAAU,IAAI,WAAW,GAAoBC,QAAO,KAAK;AAC7E,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEQ,WAAc,SAAqB;AACzC,mBAAS;AACP,cAAI;AACF,mBAAO,QAAQ;AAAA,UACjB,SAAS,GAAG;AACV,gBAAI,EAAE,aAAa,gBAAgB,EAAE,SAAS,WAAW,KAAK,QAAQ,cAAc,IAAI;AACtF,oBAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,KAAQ,SAAqB;AACnC,YAAI;AACF,iBAAO,QAAQ;AAAA,QACjB,SAAS,GAAG;AACV,cAAI,aAAa,aAAc,OAAM,IAAI,KAAK,GAAG,WAAW,UAAU,EAAE,IAAI,CAAC;AAC7E,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEQ,IAAI,KAAa,MAA4B;AACnD,eAAO;AAAA,UACL,GAAG;AAAA,UAEH,QAAQ,MACN,KAAK,KAAK,MAAM;AACd,kBAAM,IAAI,aAAa,QAAQ;AAAA,UACjC,CAAC;AAAA,UACH,MAAM,CAAC,GAAG,QAAQ,QAAQ,WACxB,KAAK,KAAK,MAAM;AACd,kBAAM,QAAQ,KAAK,WAAW,MAAM,KAAK,IAAI,KAAK,KAAK,QAAQ,YAAY,CAAC,CAAC,CAAC;AAC9E,mBAAO,IAAI,OAAO,MAAM;AACxB,mBAAO,MAAM;AAAA,UACf,CAAC;AAAA,UACH,OAAO,CAAC,GAAG,QAAQ,QAAQ,WAAW;AACpC,gBAAI;AACF,oBAAM,QAAQ,IAAI,WAAW,OAAO,QAAQ,OAAO,aAAa,QAAQ,MAAM,EAAE,MAAM;AACtF,qBAAO,KAAK,WAAW,MAAM,KAAK,IAAI,MAAM,KAAK,OAAO,YAAY,CAAC,CAAC,CAAC;AAAA,YACzE,SAAS,GAAG;AACV,kBAAI,aAAa,gBAAgB,EAAE,SAAS,WAAW,CAAC,KAAK,QAAQ,UAAU,GAAG;AAChF,sBAAM,IAAI,YAAY,iBAAiB;AAAA,cACzC;AACA,qBAAO,KAAK,KAAK,MAAM;AACrB,sBAAM;AAAA,cACR,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UACA,OAAO,MAAM;AAAA,UACb,MAAM,MAAM;AACV,kBAAM,QAAQ,KAAK,KAAK,MAAM,KAAK,IAAI,KAAK,GAAG,CAAC;AAChD,gBAAI,OAAO;AACX,gBAAI,MAAM,SAAU,SAAQ,SAAS;AACrC,gBAAI,MAAM,SAAU,SAAQ,UAAU;AAEtC,gBAAI,MAAM,OAAQ,SAAQ,MAAM,WAAW,UAAU;AACrD,mBAAO;AAAA,UACT;AAAA,UACA,KAAK,CAAC,WAAW;AACf,iBAAK,MAAM,MAAM;AACjB,iBAAK,KAAK,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;AAAA,UAClD;AAAA,UACA,OAAO,CAAC,WAAW;AACjB,gBAAI,KAAK,UAAU,OAAO,OAAO,KAAK,KAAK,UAAU,OAAO,EAAG,MAAK,aAAa;AACjF,gBAAI;AACF,mBAAK,QAAQ,MAAM;AAAA,YACrB,QAAQ;AAAA,YAAC;AACT,kBAAM,QAAQ,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK;AACzC,gBAAI,OAAO,GAAG;AACZ,mBAAK,KAAK,IAAI,KAAK,IAAI;AACvB;AAAA,YACF;AACA,iBAAK,KAAK,OAAO,GAAG;AACpB,gBAAI,KAAK,UAAU,OAAO,KAAK,KAAK,UAAU,OAAO,GAAG,EAAG;AAC3D,gBAAI,KAAK,UAAU,OAAO,KAAK,KAAK,UAAU,OAAO,GAAG,GAAG;AACzD,mBAAK,cAAc,QAAQ,GAAG;AAC9B;AAAA,YACF;AACA,gBAAI;AACF,mBAAK,IAAI,MAAM,GAAG;AAAA,YACpB,QAAQ;AAAA,YAAC;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACt+BA,SAAS,UAAU,IAAe,QAAgC;AAChE,QAAM,OAAO,OAAO;AACpB,SAAO,KAAK,SAAS,UAAa,GAAG,OAAO,KAAK,IAAI;AACvD;AAEA,SAAS,eAAe,QAA+C;AACrE,QAAM,OAAQ,OAAO,KAAqB;AAC1C,MAAI,CAAC,MAAM,OAAQ,QAAO;AAC1B,MAAI,KAAK,OAAQ,QAAO,KAAK,OAAO,KAAK,GAAG,KAAK,OAAO,KAAK,CAAC;AAC9D,SAAO,KAAK,MAAM,MAAM,GAAG,KAAK,OAAO,KAAK,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC;AAC9E;AAEA,SAAS,OAAO,MAId;AACA,QAAM,SAAS,MAAM;AACrB,QAAM,UAAU,QAAQ;AACxB,QAAM,MAAM,UAAU,YAAY,SAAY,EAAE,SAAS,MAAM,OAAO,KAAK,EAAE,IAAI;AACjF,QAAM,SAAS,MAAM;AACrB,QAAM,MAAM,MAAM,MAAM;AACxB,SAAO;AAAA,IACL,GAAI,MAAM,EAAE,IAAI,IAAI,CAAC;AAAA,IACrB,GAAI,WAAW,SAAY,EAAE,OAAO,IAAI,CAAC;AAAA,IACzC,GAAI,WAAW,UAAa,QAAQ,SAAY,EAAE,IAAI,IAAI,CAAC;AAAA,EAC7D;AACF;AAEO,SAAS,YACd,IACA,KACAC,UACA,UACiC;AACjC,QAAM,WAAW,oBAAI,IAAoB;AACzC,SAAO,CAAC,WAAW;AACjB,QAAI,OAAO,kBAAkB,UAAa,CAAC,UAAU,IAAI,MAAM,EAAG;AAClE,UAAM,OAAO,OAAO;AACpB,QAAI,MAAM,SAAS,IAAI,OAAO,MAAM;AACpC,QAAI,QAAQ,QAAW;AACrB,WAAK,QAAQ,MAAM;AACnB,YAAM,WAAW,eAAe,MAAM;AACtC,YAAMC,QAAO,OAAQ,OAAO,KAAqB,IAAI;AACrD,YAAM,IAAI;AAAA,QACR,SAAS,MAAM;AAAA,QACf,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa,SACT,EAAE,UAAU,QAAQ,KAAK,IACzB,OAAO,KAAKA,KAAI,EAAE,SAAS,IACzBA,QACA;AAAA,MACR;AACA,eAAS,IAAI,OAAO,QAAQ,GAAG;AAAA,IACjC;AACA,IAAAD,SAAQ,WAAW,QAAQ,GAAG;AAC9B,IAAAA,SAAQ,gBAAgB,QAAQ,GAAG;AAAA,EACrC;AACF;AAEO,SAAS,gBACd,IACA,KACAA,UACA,UACc;AACd,QAAM,UAAU,YAAY,IAAI,KAAKA,UAAS,QAAQ;AACtD,QAAM,MAAoB,CAAC;AAC3B,aAAW,UAAU,GAAG,SAAS;AAC/B,QAAI,CAAC,OAAQ;AACb,YAAQ,MAAM;AACd,QAAI,OAAO,kBAAkB,QAAW;AACtC,UAAI,KAAKE,aAAY,QAAQ,OAAO,aAAa,CAAC;AAAA,IACpD,WAAW,OAAO,MAAM;AACtB,YAAM,QAAQ,OAAO,SAAS,aAAa,MAAM,IAAI,YAAY;AACjE,UAAI,KAAK,EAAE,IAAI,OAAO,IAAI,MAAM,OAAO,MAAM,MAAM,CAAC;AAAA,IACtD;AAAA,EACF;AACA,SAAO;AACT;AAOA,SAASA,aAAY,QAAuB,QAA4B;AACtE,QAAM,UAAU,aAAa,MAAM,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;AAC5D,MAAI,OAAO,mBAAmB;AAC5B,WAAO,EAAE,IAAI,OAAO,IAAI,QAAQ,MAAM,UAAU,OAAO,OAAO,OAAO,GAAG,QAAQ;AAAA,EAClF;AACA,QAAMC,UAAS,OAAO,SAAS,SAAY,SAAY,cAAc,OAAO,IAAI;AAChF,QAAM,OAAO,OAAO,kBAAkB,SAAS,OAAO,MAAM,QAASA,WAAU;AAC/E,QAAM,SAAS,SAAS,QAAQC,WAAU,OAAO,SAASA,WAAUC;AACpE,QAAM,OAAO,OAAO,kBAAkB,EAAE,MAAM,OAAO,gBAAgB,IAAI,CAAC;AAC1E,SAAO,EAAE,IAAI,OAAO,IAAI,QAAQ,MAAM,OAAO,QAAQ,GAAG,SAAS,GAAG,KAAK;AAC3E;AAYO,SAAS,kBACd,IACA,KACAL,UACA,UACA,UAAoD,CAAC,GACpC;AACjB,QAAM,QAAQ,oBAAI,IAAyD;AAC3E,aAAW,UAAU,GAAG,SAAS;AAC/B,QAAI,OAAQ,OAAM,IAAI,OAAO,IAAI,EAAE,QAAQ,SAAS,aAAa,MAAM,EAAE,CAAC;AAAA,EAC5E;AACA,aAAW,CAAC,QAAQ,MAAM,KAAK,SAAS;AACtC,QAAI,UAAU,EAAG;AACjB,UAAM,OAAO,UAAU,IAAI,MAAM,IAAI,MAAM,IAAI;AAC/C,QAAI,KAAM,OAAM,IAAI,QAAQ,EAAE,QAAQ,KAAK,QAAQ,SAAS,MAAM,CAAC;AAAA,QAC9D,OAAM,OAAO,MAAM;AAAA,EAC1B;AACA,QAAMM,SAAQ,oBAAI,IAA2B;AAC7C,aAAW,CAAC,IAAI,EAAE,QAAQ,QAAQ,CAAC,KAAK,OAAO;AAC7C,QAAI,KAAK,KAAK,CAAC,QAAS,CAAAA,OAAM,IAAI,IAAI,MAAM;AAAA,EAC9C;AACA,QAAM,UAAU,YAAY,IAAI,KAAKN,UAAS,QAAQ;AACtD,QAAM,MAAuB,CAAC;AAC9B,aAAW,CAAC,IAAI,MAAM,KAAKM,QAAO;AAChC,YAAQ,MAAM;AACd,UAAMC,QAAO,cAAc,IAAI,MAAM;AACrC,QAAIA,MAAM,KAAI,KAAKA,KAAI;AAAA,EACzB;AACA,SAAO;AACT;AAEO,SAAS,eAAe,QAA+C;AAC5E,QAAMJ,UAAS,OAAO,SAAS,SAAY,SAAYK,SAAQ,OAAO,IAAI;AAC1E,MAAI,CAACL,WAAU,OAAO,kBAAkB,OAAW,QAAO;AAC1D,QAAM,SAAS,OAAO,OAAO,QAAQE,UAAS;AAC9C,SAAO,EAAE,QAAAF,SAAQ,GAAI,SAAS,EAAE,OAAO,IAAI,CAAC,EAAG;AACjD;AAEA,SAAS,cAAc,IAAY,QAAkD;AACnF,MAAI,OAAO,kBAAkB,QAAW;AACtC,UAAMA,UAAS,eAAe,MAAM;AACpC,WAAOA,UAAS,EAAE,IAAI,GAAGA,QAAO,IAAI;AAAA,EACtC;AACA,QAAM,QAAQ,OAAO,oBAAoB,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AACpE,SAAO,EAAE,IAAI,QAAQ,OAAO,eAAe,GAAG,MAAM;AACtD;AAEA,SAAS,MAAM,IAAe,QAAuB,IAA2B;AAC9E,MAAI,OAAO,OAAO,GAAI,QAAO;AAC7B,QAAM,QAAQ,GAAG,UAAU,QAAQ,EAAE;AACrC,KAAG,YAAY,OAAO,EAAE;AACxB,SAAO;AACT;AAEA,SAAS,YACP,IACAH,UACA,OACe;AACf,QAAM,SAAS,MAAM,SAASI;AAC9B,MAAI,MAAM,SAAS,SAAU,QAAOJ,SAAQ,aAAa,MAAM;AAC/D,MAAI,MAAM,SAAS,MAAO,QAAO,GAAG,KAAK,YAAYI,OAAM;AAC3D,MAAI,MAAM,SAAS,YAAY,MAAM,SAAS,eAAe,MAAM,SAAS;AAC1E,WAAO,GAAG,KAAK,aAAa,MAAM;AACpC,KAAG,UAAU,eAAe;AAC5B,SAAO,GAAG,KAAK,GAAG,eAAe,IAAI,MAAM,EAAE,IAAI,SAASK,QAAO;AACnE;AAQA,SAAS,OAAO,QAAuBT,UAAwB,UAAwB;AACrF,QAAM,OAAO,WAAW,IAAIA,QAAO,KAAK,oBAAI,IAAoB;AAChE,aAAW,IAAIA,UAAS,IAAI;AAC5B,QAAM,QAAQ,KAAK,IAAI,QAAQ,KAAK;AACpC,OAAK,IAAI,UAAU,KAAK;AACxB,QAAM,OAAO,OAAO;AACpB,EAAAA,SAAQ,SAAS,QAAQ,SAAS,KAAK,KAAK,OAAO;AAAA,IACjD,GAAG,KAAK,UAAU,UAAU,IAAI;AAAA,IAChC,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EACR,EAAE;AACJ;AAEO,SAAS,kBACd,IACAA,UACA,OACe;AACf,QAAM,SAAS,MAAM,IAAI,YAAY,IAAIA,UAAS,KAAK,GAAG,MAAM,EAAE;AAClE,MAAI,MAAM,SAAS,QAAQ;AACzB,IAAAA,SAAQ,WAAW,QAAQ,MAAM,MAAM;AACvC,IAAAA,SAAQ,eAAe,QAAQ,MAAM,MAAM;AAAA,EAC7C,WAAW,MAAM,SAAS,SAAU,CAAAA,SAAQ,aAAa,QAAQ,MAAM,MAAM;AAAA,MACxE,CAAAA,SAAQ,OAAO,QAAQ,MAAM,QAAQ,MAAM,SAAS,KAAK;AAC9D,MAAI,MAAM,SAAS,YAAa,CAAAA,SAAQ,YAAY,MAAM,MAAM;AAChE,MAAI,MAAM,SAAS,YAAY,MAAM,SAAS,YAAa,CAAAA,SAAQ,WAAW,QAAQ,MAAM,IAAI;AAChG,MAAI,MAAM,SAAS,MAAO,CAAAA,SAAQ,aAAa,MAAM;AACrD,MAAI,MAAM,SAAS,UAAU;AAC3B,WAAO,QAAQA,UAAS,MAAM,SAAS,SAAY,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,MAAM,EAAE;AACxF,QAAI,MAAM,KAAM,QAAO,OAAO,MAAM;AAAA,EACtC;AACA,iBAAe,QAAQ,MAAM,YAAY,IAAI;AAC7C,SAAO;AACT;AAEO,SAAS,qBACd,IACAA,UACA,OACM;AACN,aAAW,UAAU,GAAG,QAAS,KAAI,OAAQ,IAAG,YAAY,OAAO,EAAE;AACrE,aAAW,SAAS,OAAO;AACzB,QAAI;AACF,UAAI,YAAY,OAAO;AACrB,0BAAkB,IAAIA,UAAS,KAAK;AAAA,MACtC,OAAO;AACL,cAAM,SAAS;AAAA,UACb;AAAA,UACA,GAAG,KAAK,MAAM,MAAM,MAAM,QAAQ,EAAES,WAAUC,UAASC,SAAQ;AAAA,UAC/D,MAAM;AAAA,QACR;AAEA,uBAAe,SAAS,MAAM,QAAQ,eAAe,CAAC;AAAA,MACxD;AAAA,IACF,QAAQ;AAAA,IAAC;AAAA,EACX;AACF;AA9QA,IAMMP,SACAC,YACAI,UACAC,SACAC,UAEA,iBAoGA,eAiBA,QAEAH,UA4EA,WAEF,eAEE;AAnNN;AAAA;AAAA;AAIA;AAEA,IAAMJ,UAAS;AACf,IAAMC,aAAY;AAClB,IAAMI,WAAU;AAChB,IAAMC,UAAS;AACf,IAAMC,WAAU;AAEhB,IAAM,kBAAkB;AAoGxB,IAAM,gBAAkE;AAAA,MACtE,eAAe;AAAA,MACf,kBAAkB;AAAA,IACpB;AAcA,IAAM,SAAiD,EAAE,GAAG,QAAQ,GAAG,QAAQ;AAE/E,IAAMH,WAAkD;AAAA,MACtD,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,eAAe;AAAA,IACjB;AAsEA,IAAM,YAAY;AAElB,IAAI,gBAAgB;AAEpB,IAAM,aAAa,oBAAI,QAA4C;AAAA;AAAA;;;ACrL5D,SAAS,YAAY,GAAyB;AACnD,SAAO,EAAE,MAAM,EAAE,SAAS,SAAU,EAAE,OAAkB,CAAC,WAAW;AACtE;AAEO,SAAS,iBAAiB,WAAqC;AACpE,SAAO;AAAA,IACL,UAAU,KAAK,EAAE,IAAI,gBAAgB,GAAG,OAAO,mBAAmB,eAAe;AAAA,EACnF;AACF;AAEA,SAAS,OAAO,GAAyB;AACvC,SAAO,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE,KAAK;AACtC;AAEA,SAAS,OAAO,GAAgC;AAC9C,SAAO,EAAE,KAAO,EAAyB,OAAgB,CAAC,UAAU,EAAE,KAAK;AAC7E;AAEA,SAAS,OAAO,GAAyB;AACvC,MAAI,CAAC,EAAE,GAAI,QAAO,CAAC,UAAU,EAAE,KAAK;AACpC,SAAO,EAAE,SAAS,UAAU,OAAO,EAAE,SAAS,WAAW,EAAE,OAAO,CAAC,UAAU,KAAK;AACpF;AAEA,SAAS,cAAc,KAAsB;AAC3C,MAAI,QAAQ,EAAG,QAAO;AACtB,QAAM,SAAS,cAAc,GAAG;AAChC,SAAO,WAAW,eAAe,WAAW;AAC9C;AA0FA,SAASI,WAAU,OAAyC;AAC1D,aAAS;AACP,UAAM,IAAI,MAAM;AAChB,QAAI,EAAE,MAAM,EAAE,UAAU,QAAS,QAAO;AAAA,EAC1C;AACF;AAEA,SAAS,cACP,MACA,OACA,YACc;AACd,MAAI,SAAS,MAAM;AACnB,MAAI,OAAO;AACX,SAAOA,WAAU,MAAM;AACrB,UAAMC,WAAU,KAAK,aAAa;AAClC,UAAM,MAAM,KAAK,aAAa;AAC9B,QAAI,QAAQ,MAAM;AAChB,aAAO;AACP,YAAM,OAAO,KAAK,SAAS;AAC3B,UAAI,KAAM,UAAS,IAAI,WAAW,KAAK,MAAM,EAAE,MAAM;AAAA,IACvD;AACA,UAAM,SAAS,EAAE,GAAG,OAAO,QAAQ,SAAAA,UAAS,KAAK,UAAU,KAAK,EAAE,EAAE;AACpE,WAAO,KAAK,UAAU;AAAA,MACpB,EAAE,IAAI,aAAa,OAAO,QAAQ,SAAS,KAAK;AAAA,MAChD;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,SAAS,QAAQ,aAAiC;AAChD,MAAI;AACF,gBAAY;AACZ,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,UAAMC,SAAS,KAAoC;AACnD,QAAI,OAAOA,WAAU,SAAU,OAAM;AACrC,WAAO,CAACA;AAAA,EACV;AACF;AAEA,SAAS,MAAM,IAAe,QAAmC;AAC/D,QAAM,SAAuB,CAAC;AAC9B,QAAM,SAAS,IAAI,WAAW,KAAK;AACnC,MAAI;AACF,aAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,GAAG,OAAO,MAAM,GAAG,IAAI,KAAK;AAC/D,aAAO,KAAK,OAAO,MAAM,GAAG,CAAC,CAAC;AAC9B,UAAI,GAAG,KAAK,QAAQ,QAAQ,GAAG,OAAO,MAAM;AAAA,IAC9C;AAAA,EACF,QAAQ;AAAA,EAAC;AACT,QAAM,MAAM,IAAI,WAAW,OAAO,OAAO,CAAC,GAAG,MAAM,IAAI,EAAE,QAAQ,CAAC,CAAC;AACnE,MAAI,SAAS;AACb,aAAW,SAAS,QAAQ;AAC1B,QAAI,IAAI,OAAO,MAAM;AACrB,cAAU,MAAM;AAAA,EAClB;AACA,SAAO;AACT;AAEA,SAAS,aACP,IACA,WACAC,OACAC,QACAC,YAC8C;AAC9C,QAAM,SAAS,CAAC,OAAe,GAAG,UAAU,EAAE,GAAG;AACjD,QAAM,KAAKF,MAAK,IAAI,MAAM;AAC1B,QAAM,KAAKC,OAAM,IAAI,MAAM;AAC3B,QAAM,IAAI,UAAU,KAAK,EAAE,IAAI,aAAa,MAAM,IAAI,OAAO,IAAI,WAAAC,WAAU,GAAG,UAAU,QAAQ;AAChG,MAAI,CAAC,EAAE,GAAI,QAAO,CAAC,UAAU,EAAE,KAAK;AACpC,QAAM,MAAO,EAAE,SAAS,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE;AAIhE,SAAO;AAAA,IACL,MAAMF,MAAK,OAAO,CAAC,GAAG,MAAM,IAAI,KAAK,SAAS,GAAG,CAAC,CAAW,CAAC;AAAA,IAC9D,OAAOC,OAAM,OAAO,CAAC,GAAG,MAAM,IAAI,MAAM,SAAS,GAAG,CAAC,CAAW,CAAC;AAAA,EACnE;AACF;AAEA,SAAS,SACP,IACAD,OACAC,QACqC;AACrC,QAAM,QAAQ,CAAC,OAAuB;AACpC,UAAM,SAAS,GAAG,UAAU,EAAE;AAC9B,QAAI,CAAC,OAAQ,QAAO;AACpB,WAAO,OAAO,WAAW,OAAO,OAAO,WAAW,KAAK,MAAM,IAAIE,UAASC;AAAA,EAC5E;AACA,SAAO;AAAA,IACL,MAAMJ,MAAK,OAAO,CAAC,OAAO,MAAM,EAAE,KAAKG,UAASE,WAAUC,WAAU,SAAS;AAAA,IAC7E,OAAOL,OAAM,OAAO,CAAC,OAAO,MAAM,EAAE,KAAKG,WAAUE,WAAU,SAAS;AAAA,EACxE;AACF;AAEA,SAAS,UACP,IACA,WACAN,OACAC,QACAC,YAC8C;AAC9C,QAAM,SAAS,CAAC,OAAe,GAAG,UAAU,EAAE,GAAG;AACjD,QAAM,MAAM,CAAC,OAAe,OAAO,EAAE,MAAM;AAC3C,MAAI,CAAC,CAAC,GAAGF,OAAM,GAAGC,MAAK,EAAE,KAAK,GAAG,EAAG,QAAO,aAAa,IAAI,WAAWD,OAAMC,QAAOC,UAAS;AAC7F,QAAM,WAAWA,aAAY,IAAI,OAAO,oBAAoB,KAAK,IAAI,IAAIA;AACzE,QAAM,aAAaF,MAAK,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAC/C,QAAM,cAAcC,OAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACjD,aAAS;AACP,UAAMM,SAAQ,SAAS,IAAIP,MAAK,OAAO,GAAG,GAAGC,OAAM,OAAO,GAAG,CAAC;AAC9D,UAAM,UAAUM,OAAM,KAAK,SAAS,KAAKA,OAAM,MAAM,SAAS;AAC9D,UAAM,QAAQ,UAAU,IAAI,KAAK,IAAI,iBAAiB,KAAK,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC;AACxF,UAAM,MAAM,aAAa,IAAI,WAAW,YAAY,aAAa,KAAK;AACtE,QAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,UAAM,QAAQ,EAAE,MAAM,CAAC,GAAGA,OAAM,MAAM,GAAG,IAAI,IAAI,GAAG,OAAO,CAAC,GAAGA,OAAM,OAAO,GAAG,IAAI,KAAK,EAAE;AAC1F,QAAI,MAAM,KAAK,SAAS,KAAK,MAAM,MAAM,SAAS,KAAK,KAAK,IAAI,KAAK,UAAU;AAC7E,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAIO,SAAS,oBAAoB,MAAwC;AAC1E,QAAM,EAAE,WAAW,GAAG,IAAI;AAC1B,MAAI,KAAK,cAAe,eAAc,IAAI,IAAI,KAAK,aAAa;AAChE,QAAM,SAAS,oBAAI,IAAoB;AAEvC,QAAMC,QAAO,CAAC,KAAkB,UAC9B,UAAU,KAAK,KAAK,UAAU,KAAK;AAErC,QAAM,KAAK,CAAC,SAAkB,SAAS,MAAM,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI;AAE9F,QAAMC,QAAO,CAAC,IAAY,GAAW,YAA0D;AAC7F,UAAM,SAAS,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI;AAC5C,QAAI,CAAC,OAAQ,QAAO,EAAE,MAAM,KAAK;AACjC,cAAU,MAAM;AAChB,QAAI,OAAO,kBAAkB,OAAW,QAAO,EAAE,IAAI,OAAO,cAAc;AAE1E,UAAM,OAAO,MAAM,QAAQ,KAAKC,aAAYC,YAAW,OAAO,KAAM,QAAO,EAAE,KAAK,OAAO,KAAK;AAC9F,UAAMC,UAAS,eAAe,MAAM;AACpC,QAAIA,QAAQ,QAAOA;AACnB,WAAO,MAAM,IAAI,EAAE,OAAO,MAAM,IAAI,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK;AAAA,EAClE;AAEA,QAAM,aAAa,CAAC,KAAa,QAAiB,UAAU,MAAiC;AAC3F,UAAM,MAAM;AAAA,MACV,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA,GAAI,UAAU,YAAY,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,MAChD,GAAI,UAAU,aAAa,EAAE,WAAW,KAAK,IAAI,CAAC;AAAA,IACpD;AACA,QAAI,IAAI,UAAU,KAAK,KAAK,UAAU,aAAa,GAAG,EAAE;AAExD,WAAO,CAAC,EAAE,MAAM,EAAE,UAAU,WAAW,KAAK,cAAc,GAAG;AAC3D,UAAI,UAAU,KAAK,KAAK,UAAU,aAAa,GAAG,EAAE;AAAA,IACtD;AACA,QAAI,CAAC,EAAE,GAAI,QAAO,CAAC,UAAU,EAAE,KAAK;AACpC,UAAM,SAAS,EAAE,SAAS,SAAU,EAAE,OAA4B,CAAC,GAAG,CAAC;AACvE,QAAI,OAAO,CAAC,IAAI,EAAG,MAAK,WAAW;AACnC,WAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AAAA,EAC9B;AAEA,QAAM,UAAU,CAAC,KAAa,GAAW,OAAqB;AAC5D,UAAM,IAAI,UAAU;AAAA,MAClB,EAAE,IAAI,iBAAiB,KAAK,MAAM,EAAE;AAAA,MACpC;AAAA,MACA,iBAAiB,GAAG;AAAA,IACtB;AACA,UAAM,SAAS,GAAG,UAAU,EAAE;AAC9B,QAAI,EAAE,MAAM,EAAE,SAAS,WAAW,EAAE,MAAM,SAAS,KAAK,QAAQ;AAC9D,SAAG,MAAM,QAAQ,EAAE,OAAO,GAAG,EAAE,MAAM,MAAM;AAAA,IAC7C;AAAA,EACF;AAEA,QAAM,eAAe,oBAAI,IAAwB;AAEjD,QAAM,WAAW,CAAC,QAAwB;AACxC,UAAM,IAAI,UAAU,KAAK,EAAE,IAAI,aAAa,IAAI,GAAG,UAAU,QAAQ,GAAG,EAAE;AAC1E,QAAI,CAAC,EAAE,GAAI,QAAO,CAAC,UAAU,EAAE,KAAK;AACpC,SAAK,WAAW;AAChB,WAAO,EAAE,SAAS,SAAU,EAAE,KAA0B,CAAC,IAAI;AAAA,EAC/D;AAEA,QAAM,aAAa,CACjB,MACA,MACA,KACA,KACA,KACA,SACA,SACW;AACX,UAAM,YAAY,QAAQ,KAAK,WAAW;AAC1C,QAAI,YAAY,EAAG,QAAO;AAC1B,UAAM,UAAU,KAAK,gBAAgB;AACrC,UAAM,QAAQ,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MAAMH,MAAK,IAAI,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC;AACjE,UAAM,UAAU,KAAK,UAAU,OAAO,KAAK,CAAC;AAC5C,UAAM,MAAM;AAAA,MACV,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA,KAAK,OAAO,KAAK;AAAA,MACjB,KAAK,OAAO,UAAU,EAAE;AAAA,MACxB,GAAI,QAAQ,OAAO,EAAE,OAAO,KAAc,IAAI,CAAC;AAAA,MAC/C;AAAA,MACA,GAAI,QAAQ,SAAS,IAAI,EAAE,QAAQ,IAAI,CAAC;AAAA,MACxC,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MACvB,SAAS;AAAA,IACX;AACA,UAAM,IAAIZ,WAAU,MAAM,UAAU,KAAK,KAAK,UAAU,cAAc,IAAI,EAAE,CAAC;AAC7E,QAAI,CAAC,EAAE,GAAI,QAAO,CAAC,UAAU,EAAE,KAAK;AACpC,UAAM,MAAM,EAAE,SAAS,SAAU,EAAE,OAAkB;AACrD,UAAM,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,aAAc,MAAM,CAAC,CAAgB;AAC3E,QAAI,SAAS,WAAW,EAAG,QAAO;AAClC,QAAI,MAAM;AACR,mBAAa,IAAI,KAAK,MAAM;AAC1B,mBAAW,KAAK,SAAU,SAAQ,KAAK,GAAG,IAAI,CAAC,CAAW;AAAA,MAC5D,CAAC;AACD,aAAO;AAAA,IACT;AACA,UAAM,SAAS,WAAW,KAAK,KAAK;AACpC,QAAI,OAAO,WAAW,SAAU,QAAO;AACvC,eAAW,KAAK,SAAU,SAAQ,KAAK,GAAG,IAAI,CAAC,CAAW;AAC1D,WAAO,IAAI,KAAK,OAAO,CAAC,CAAC;AACzB,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,MAAM,MAAM,MAAM,KAAK,KAAK,KAAK,SAAS;AACxC,aAAO,WAAW,MAAM,MAAM,KAAK,KAAK,KAAK,SAAS,KAAK;AAAA,IAC7D;AAAA,IACA,KAAK,OAAO;AACV,YAAM,aAAa,KAAK,aAAa;AACrC,YAAM,YAAY,QAAQ,KAAK,WAAW;AAC1C,UAAI,YAAY,EAAG,QAAO;AAC1B,YAAM,IAAI,cAAc,MAAM,OAAO,UAAU;AAC/C,UAAI,CAAC,EAAE,GAAI,QAAO,CAAC,UAAU,EAAE,KAAK;AACpC,aAAO,EAAE,SAAS,SAAU,EAAE,OAAkB,CAAC,UAAU,KAAK;AAAA,IAClE;AAAA,IACA,QAAQ,CAACG,OAAMC,QAAOC,eAAc,UAAU,IAAI,WAAWF,OAAMC,QAAOC,UAAS;AAAA,IACnF;AAAA,IACA,OAAO,MAAM,MAAM,KAAK,KAAK;AAC3B,YAAM,MAAM,WAAW,MAAM,MAAM,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,QAAW,IAAI;AACvE,UAAI,MAAM,EAAG,QAAO;AACpB,YAAMW,UAAS,SAAS,GAAG;AAC3B,mBAAa,IAAI,GAAG,IAAI;AACxB,mBAAa,OAAO,GAAG;AACvB,aAAOA;AAAA,IACT;AAAA,IACA,OAAO,MAAM,OAAOL,MAAK,EAAE,IAAI,YAAY,GAAG,OAAO,CAAC;AAAA,IACtD,cAAc,MAAM,YAAYA,MAAK,EAAE,IAAI,gBAAgB,GAAG,eAAe,CAAC;AAAA,IAC9E,MAAM,QAAQ,QAAQ,MAAM,OAAO,MAAM;AACvC,YAAM,MAAM,EAAE,IAAI,SAAkB,QAAQ,QAAQ,GAAG,MAAM,GAAG,MAAM,OAAO,KAAK;AAClF,aAAO,OAAOA,MAAK,KAAK,SAAS,MAAM,EAAE,CAAC;AAAA,IAC5C;AAAA,IACA,QAAQ,QAAQ,OAAO;AACrB,aAAO,OAAOA,MAAK,EAAE,IAAI,UAAU,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,MAAM,EAAE,CAAC;AAAA,IACrF;AAAA,IACA,KAAK,KAAK,KAAK;AACb,UAAI,QAAQ,KAAK,OAAO,CAAC,cAAc,GAAG,GAAG;AAC3C,YAAI,QAAQ,EAAG,MAAK,QAAQ,GAAG;AAC/B,eAAO;AAAA,MACT;AACA,aAAO,OAAOA,MAAK,EAAE,IAAI,aAAa,KAAK,IAAI,GAAG,QAAQ,GAAG,EAAE,CAAC;AAAA,IAClE;AAAA,IACA,SAAS,CAAC,KAAK,SAAS,OAAOA,MAAK,EAAE,IAAI,gBAAgB,KAAK,KAAK,GAAG,SAAS,CAAC;AAAA,IACjF,QAAQ,MAAM,OAAOA,MAAK,EAAE,IAAI,cAAc,GAAG,QAAQ,CAAC;AAAA,IAC1D,SAAS,CAAC,QAAQ,OAAOA,MAAK,EAAE,IAAI,gBAAgB,IAAI,GAAG,SAAS,CAAC;AAAA,IACrE,QAAQ,CAAC,QAAQ,OAAOA,MAAK,EAAE,IAAI,eAAe,IAAI,GAAG,QAAQ,CAAC;AAAA,IAClE,MAAM,MAAM,OAAOA,MAAK,EAAE,IAAI,YAAY,GAAG,MAAM,CAAC;AAAA,IACpD,QAAQ,QAAQ;AACd,YAAM,OAAO,OAAOA,MAAK,EAAE,IAAI,gBAAgB,OAAO,GAAG,SAAS,CAAC;AACnE,UAAI,OAAO,SAAS,YAAY,KAAK,OAAO;AAC1C,aAAK,MAAM,MAAM,KAAK;AACtB,aAAK,MAAM,MAAM,KAAK;AAAA,MACxB;AACA,aAAO;AAAA,IACT;AAAA,IACA,UAAU,IAAI;AACZ,YAAM,MAAM,GAAG,UAAU,EAAE,GAAG;AAC9B,UAAI,QAAQ,OAAW,QAAO,CAAC,UAAU,QAAQ;AACjD,aAAO,OAAOA,MAAK,EAAE,IAAI,gBAAgB,IAAI,IAAI,GAAG,WAAW,CAAC;AAAA,IAClE;AAAA,IACA,UAAU,IAAI,MAAM;AAClB,YAAM,MAAM,GAAG,UAAU,EAAE,GAAG;AAC9B,UAAI,QAAQ,OAAW,QAAO,CAAC,UAAU,QAAQ;AACjD,aAAO,OAAOA,MAAK,EAAE,IAAI,gBAAgB,IAAI,KAAK,KAAK,GAAG,WAAW,CAAC;AAAA,IACxE;AAAA,IACA,KAAK,KAAK,QAAQ,SAAS;AACzB,YAAM,MAAM,MAAM,IAAK,OAAO,IAAI,GAAG,IAAI,MAAM,SAAa,OAAO,KAAK,EAAE,KAAK,EAAE;AACjF,UAAI,QAAQ,QAAW;AACrB,cAAMK,UAAS,OAAO,IAAI,GAAG;AAC7B,eAAO,OAAO,GAAG;AACjB,eAAO,CAAC,KAAKA,OAAM;AAAA,MACrB;AACA,aAAO,WAAW,KAAK,QAAQ,OAAO;AAAA,IACxC;AAAA,EACF;AACF;AAlcA,IAeMH,SACA,UACAC,UAEAR,SACAC,UACAE,UACAD,UACA,UAEA,iBAEA,WACA,YAmPA;AA/QN;AAAA;AAAA;AAIA;AAIA;AAEA;AAGA;AAEA,IAAMK,UAAS;AACf,IAAM,WAAW,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI;AACvD,IAAMC,WAAU;AAEhB,IAAMR,UAAS;AACf,IAAMC,WAAU;AAChB,IAAME,WAAU;AAChB,IAAMD,WAAU;AAChB,IAAM,WAAW;AAEjB,IAAM,kBAAkB;AAExB,IAAM,YAAY;AAClB,IAAM,aAAa;AAmPnB,IAAM,YAAY,CAAC,QAA2B,GAAG,gBAAgB,GAAG,KAAK,KAAK,EAAE;AAAA;AAAA;;;ACpPzE,SAAS,iBAAiB,WAAyC;AACxE,QAAMS,QAAO,CAAC,QAAmC;AAC/C,UAAM,IAAI,UAAU,KAAK,KAAK,OAAO,mBAAmB,IAAI,EAAE;AAC9D,QAAI,CAAC,EAAE,GAAI,OAAM,IAAI,UAAU,EAAE,OAAO,EAAE,OAAO;AACjD,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,QAAQ,KAAK;AACX,YAAM,IAAIA,MAAK;AAAA,QACb,IAAI;AAAA,QACJ,KAAK,IAAI;AAAA,QACT,SAAS,IAAI,UAAU,OAAO,YAAY;AAAA,QAC1C,SAAS,IAAI,WAAW,CAAC;AAAA,QACzB,GAAI,IAAI,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAAA,MACvC,CAAC;AACD,aAAQ,EAA8C;AAAA,IACxD;AAAA,IACA,KAAK,QAAQ,KAAK;AAChB,aAAQA,MAAK,EAAE,IAAI,YAAY,QAAQ,IAAI,CAAC,EACzC;AAAA,IACL;AAAA,IACA,MAAM,QAAQ;AACZ,MAAAA,MAAK,EAAE,IAAI,aAAa,OAAO,CAAC;AAAA,IAClC;AAAA,EACF;AACF;AApDA,IAkBa;AAlBb;AAAA;AAAA;AAkBO,IAAM,YAAN,cAAwB,MAAM;AAAA,MAC1B;AAAA,MAET,YAAYC,OAAcC,UAAiB;AACzC,cAAMA,QAAO;AACb,aAAK,OAAOD;AAAA,MACd;AAAA,IACF;AAAA;AAAA;;;ACzBA,IA4Ba;AA5Bb;AAAA;AAAA;AAAA;AAGA;AAyBO,IAAM,aAAN,MAAiB;AAAA,MACd,WAAW,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,MAAM;AAAA,MACrD,UAAU;AAAA,MAEV,gBAAgB;AAAA,MAEhB,QAAQ;AAAA,MAER,YAAY;AAAA,MAEZ,YAAY;AAAA,MAEZ,UAAU;AAAA,MAEV,YAAY;AAAA,MAEZ,SAAS;AAAA,MAET,WAAW;AAAA,MAEF;AAAA,MAEA;AAAA,MAEA;AAAA,MAEjB,YACE,KAEA,QAEA,OACA;AACA,aAAK,MAAM;AAEX,aAAK,SAAS;AAEd,aAAK,QAAQ;AAAA,MACf;AAAA,MAEA,YAA8B;AAC5B,eAAO;AAAA,UACL,MAAM,CAAC,KAAKE,YAAW,UAAwB;AAC7C,iBAAK,OAAO;AACZ,iBAAK;AACL,gBAAI;AACF,oBAAM,SAAS,KAAK,IAAI,KAAK,KAAKA,YAAW,KAAK;AAClD,mBAAK,QAAQ;AACb,qBAAO;AAAA,YACT,UAAE;AACA,mBAAK;AAAA,YACP;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,aAAqB;AACnB,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,cAAuB;AACrB,eAAO,KAAK,kBAAkB,MAAM,KAAK,gBAAgB,CAAC,KAAK,aAAa;AAAA,MAC9E;AAAA,MAEQ,SAAe;AACrB,YAAI,KAAK,UAAW;AACpB,aAAK,YAAY;AACjB,YAAI;AACJ,YAAI;AACF,kBAAQ,KAAK,MAAM,MAAM;AAAA,QAC3B,QAAQ;AACN,kBAAQ;AAAA,QACV,UAAE;AACA,eAAK,YAAY;AAAA,QACnB;AACA,YAAI,CAAC,MAAO;AACZ,aAAK,UAAU,MAAM;AACrB,cAAM,EAAE,QAAQ,SAAS,WAAW,EAAE,IAAI;AAC1C,cAAM,YAAY,MAAM,cAAc;AACtC,cAAM,MAAM,KAAK;AACjB,cAAMC,QAAO,WAAW,IAAI,UAAU,YAAY,IAAI,WAAW,cAAc,IAAI;AACnF,YAAIA,SAAQ,aAAa,EAAG;AAC5B,aAAK,WAAW,EAAE,QAAQ,SAAS,UAAU;AAC7C,cAAM,MAAM;AAAA,UACV,IAAI;AAAA,UACJ;AAAA,UACA;AAAA,UACA,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,UAC/B,GAAI,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,QACnC;AACA,aAAK,IAAI,KAAK,KAAK,OAAO,mBAAmB,UAAU;AAAA,MACzD;AAAA,MAEA,MAAS,IAAgB;AACvB,aAAK;AACL,YAAI;AACF,iBAAO,GAAG;AAAA,QACZ,UAAE;AACA,eAAK;AAAA,QACP;AAAA,MACF;AAAA,MAEA,YAAqB;AACnB,aAAK,OAAO;AACZ,cAAM,SAAS,KAAK;AACpB,cAAM,UACH,QAAQ,KAAK,QAAQ,aAAa,IAAI,CAAC,QAAQ,KAAK,QAAQ,aAAa,IAC1E,QAAQ,KAAK,QAAQ,YAAY,IACjC,QAAQ,KAAK,QAAQ,YAAY;AACnC,YAAI,YAAY,EAAG,QAAO;AAC1B,YAAI,KAAK,aAAa,EAAG,MAAK,SAAS,KAAK,UAAU,IAAI,KAAK;AAC/D,aAAK;AACL,YAAI;AACF,eAAK,QAAQ;AAAA,QACf,UAAE;AACA,eAAK;AAAA,QACP;AACA,eAAO;AAAA,MACT;AAAA,MAEA,gBAAwB;AACtB,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,UAAgB;AACd,YAAI,KAAK,UAAU,EAAG;AACtB,cAAM,SAAS,QAAQ,KAAK,KAAK,QAAQ,YAAY;AACrD,YAAI,WAAW,KAAK,CAAC,KAAK,aAAa,KAAK,MAAM,QAAQ;AACxD,eAAK,YAAY;AACjB,eAAK,MAAM,OAAO,MAAM;AAAA,QAC1B;AACA,cAAM,SAAS,QAAQ,SAAS,KAAK,QAAQ,cAAc,CAAC;AAC5D,cAAM,UAAU,QAAQ,KAAK,KAAK,QAAQ,aAAa;AACvD,cAAM,UACJ,YAAY,IACR,QAAQ,SAAS,KAAK,QAAQ,eAAe,CAAC,IAC9C,QAAQ,IAAI,KAAK,QAAQ,eAAe,OAAO,IAAI,CAAC;AAE1D,YAAI,KAAK,SAAS,EAAG,MAAK,gBAAgB,WAAW,SAAS,IAAI,OAAO,IAAI,IAAI,IAAI;AACrF,YAAI,YAAY,KAAK,WAAW,EAAG,MAAK;AACxC,aAAK,UAAU,WAAW,SAAS,IAAI,OAAO,IAAI,IAAI,IAAI,MAAM,SAAS,CAAC,IAAI,KAAK;AACnF,iBAAS,QAAQ,GAAG,QAAQ,GAAG,SAAS;AACtC,cAAI,SAAU,KAAK,MAAQ,MAAK,MAAM,QAAQ,KAAK;AAAA,QACrD;AACA,mBAAW,OAAO,UAAU,OAAO,EAAG,MAAK,MAAM,MAAM,GAAG;AAAA,MAC5D;AAAA,IACF;AAAA;AAAA;;;ACrGA,SAAS,MAAM,GAAoB;AACjC,MAAI,aAAa,aAAc,QAAO,CAAC,UAAU,EAAE,IAAI;AACvD,QAAMC,QACJ,GAGC;AACH,MAAI,OAAOA,UAAS,SAAU,QAAO,CAACA;AACtC,QAAM;AACR;AACA,SAAS,SAAS,IAAe,MAA0B;AACzD,MAAI,KAAK,WAAW,UAAU,CAAC,KAAK,QAAQ,KAAK,KAAK,WAAW,IAAI,EAAG,QAAO;AAC/E,QAAM,OAAO,KAAK,KAAK,WAAW,GAAG,IAAI,KAAK,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI;AAC7E,SAAO,EAAE,QAAQ,QAAQ,MAAM,cAAc,IAAI,EAAE;AACrD;AAEO,SAAS,mBAAmB,MAAsC;AACvE,QAAM,EAAE,WAAW,IAAI,KAAK,SAAAC,SAAQ,IAAI;AACxC,QAAMC,QAAO,CAAC,QAAqC;AACjD,UAAM,IAAI,UAAU,KAAK,KAAK,OAAO,mBAAmB,IAAI,EAAE;AAC9D,QAAI,CAAC,EAAE,GAAI,OAAM,IAAI,aAAa,EAAE,KAAK;AACzC,WAAO;AAAA,EACT;AACA,QAAMC,QAAO,CAAC,QAAgC;AAC5C,UAAM,IAAID,MAAK,GAAG;AAClB,WAAO,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO;AAAA,EAC9C;AACA,QAAM,OAAO,CAAC,QAA+B;AAC3C,IAAAA,MAAK,GAAG;AACR,WAAO;AAAA,EACT;AACA,QAAME,SAAQ,CAAI,OAA4B;AAC5C,eAAS;AACP,UAAI;AACF,eAAO,GAAG;AAAA,MACZ,SAAS,GAAG;AACV,cAAM,UAAU,aAAa,gBAAgB,EAAE,SAAS,WAAW,KAAK,cAAc;AACtF,YAAI,CAAC,QAAS,QAAO,MAAM,CAAC;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AACA,QAAM,WAAW,CACf,OAGG;AACH,UAAM,SAAS,GAAG,UAAU,EAAE;AAC9B,QAAI,CAAC,OAAQ,OAAM,IAAI,aAAa,OAAO;AAC3C,QAAI,CAAC,OAAO,qBAAqB,OAAO,kBAAkB,QAAW;AACnE,YAAM,IAAI,aAAa,UAAU;AAAA,IACnC;AACA,WAAO;AAAA,EAGT;AACA,QAAM,MAAM,CAAC,OAAuB,SAAS,EAAE,EAAE;AACjD,QAAM,UAAU,CAAC,GAAW,UAAmB,UAAU,UAAkB;AACzE,QAAI;AACJ,QAAI;AACF,eAASH,SAAQ,aAAaI,WAAU,WAAWC,cAAa,EAAE;AAAA,IACpE,SAAS,GAAG;AACV,UAAI,MAAM,CAAC;AACX,YAAM;AAAA,IACR;AACA,IAAAL,SAAQ,aAAa,QAAQ,CAAC;AAC9B,mBAAe,QAAQ,OAAO;AAC9B,WAAO,OAAO;AAAA,EAChB;AACA,SAAO;AAAA,IACL,QAAQ,CAAC,QAAQ,UAAU,YACzBG,OAAM,MAAM,QAAQD,MAAK,EAAE,IAAI,aAAa,OAAO,CAAC,GAAa,UAAU,OAAO,CAAC;AAAA,IACrF,YAAY,CAAC,QAAQ,UAAU,YAC7BC,OAAM,MAAM;AACV,YAAM,CAAC,GAAG,CAAC,IAAID,MAAK,EAAE,IAAI,aAAa,OAAO,CAAC;AAC/C,UAAI;AACJ,UAAI;AACF,gBAAQ,QAAQ,GAAG,UAAU,OAAO;AAAA,MACtC,SAAS,GAAG;AACV,YAAI,MAAM,CAAC;AACX,cAAM;AAAA,MACR;AACA,UAAI;AACF,eAAO,CAAC,OAAO,QAAQ,GAAG,UAAU,OAAO,CAAC;AAAA,MAC9C,SAAS,GAAG;AACV,cAAM,SAAS,GAAG,UAAU,KAAK;AACjC,YAAI,OAAQ,QAAO,WAAW,QAAQ,MAAM;AAC5C,WAAG,YAAY,KAAK;AACpB,cAAM;AAAA,MACR;AAAA,IACF,CAAC;AAAA,IACH,MAAM,CAAC,IAAI,UACTC,OAAM,MAAM,KAAK,EAAE,IAAI,aAAa,IAAI,IAAI,EAAE,GAAG,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC;AAAA,IAC/E,QAAQ,CAAC,IAAI,YAAYA,OAAM,MAAM,KAAK,EAAE,IAAI,eAAe,IAAI,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;AAAA,IACtF,QAAQ,CAAC,IAAI,UAAU,YACrBA,OAAM,MAAM;AACV,YAAM,WAAW,SAAS,EAAE;AAC5B,YAAM,MAAM;AAAA,QACV,IAAI;AAAA,QACJ,IAAI,SAAS;AAAA,QACb,WAAW,SAAS,QAAQE,iBAAgB;AAAA,MAC9C;AACA,YAAM,MAAMH,MAAK,GAAG;AAIpB,aAAO,EAAE,IAAI,QAAQ,IAAI,IAAI,UAAU,OAAO,GAAG,MAAM,IAAI,KAAK;AAAA,IAClE,CAAC;AAAA,IACH,SAAS,CAAC,IAAI,SACZC,OAAM,MAAM;AACV,YAAM,SAAS,SAAS,EAAE;AAC1B,YAAM,YAAY,OAAO,QAAQE,iBAAgB;AACjD,aAAO,KAAK;AAAA,QACV,IAAI;AAAA,QACJ,IAAI,OAAO;AAAA,QACX,MAAM,SAAS,IAAI,IAAI;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,IACH,UAAU,CAAC,IAAI,QAAQF,OAAM,MAAM,KAAK,EAAE,IAAI,iBAAiB,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAAA,IAClF,MAAM,CAAC,IAAI,SAASA,OAAM,MAAMD,MAAK,EAAE,IAAI,aAAa,IAAI,IAAI,EAAE,GAAG,KAAK,CAAC,CAAa;AAAA,IACxF,QAAQ,CAAC,IAAI,OAAOI,UAClBH,OAAM,OAAO,EAAE,OAAOD,MAAK,EAAE,IAAI,eAAe,IAAI,IAAI,EAAE,GAAG,OAAO,MAAAI,MAAK,CAAC,EAAY,EAAE;AAAA,IAC1F,QAAQ,CAAC,IAAI,OAAOA,OAAMC,WACxBJ,OAAM,MAAM,KAAK,EAAE,IAAI,eAAe,IAAI,IAAI,EAAE,GAAG,OAAO,MAAAG,OAAM,OAAAC,OAAM,CAAC,CAAC;AAAA,IAC1E,SAAS,CAACD,OAAM,SAAS,MACvBH,OAAM,MAAMD,MAAK,EAAE,IAAI,gBAAgB,MAAAI,OAAM,OAAO,CAAC,CAAa;AAAA,IACpE,MAAM,CAAC,IAAI,OAAO,UAChBH,OAAM,MAAM;AACV,YAAM,SAAS,SAAS,EAAE;AAC1B,YAAM,WAAW,MAAM,aAAa,SAAS,OAAO,QAAQE,iBAAgB;AAC5E,UAAI;AACF,eAAO,IAAI,MAAM,OAAO,eAAe,OAAO,EAAE,SAAS,CAAC;AAAA,MAC5D,SAAS,GAAG;AACV,cAAM,SAAS,aAAa,gBAAgB,EAAE,SAAS;AACvD,YAAI,UAAU,CAAC,MAAM,YAAY,CAAC,KAAK,UAAU;AAC/C,gBAAM,IAAI,YAAYG,kBAAiB;AACzC,cAAM;AAAA,MACR;AAAA,IACF,CAAC;AAAA,IACH,MAAM,CAAC,IAAI,KAAK,UACdL,OAAM,MAAM;AACV,YAAM,SAAS,SAAS,EAAE;AAC1B,YAAM,WAAW,MAAM,aAAa,SAAS,OAAO,QAAQE,iBAAgB;AAC5E,aAAO,IAAI,KAAK,OAAO,eAAe,KAAK,EAAE,UAAU,MAAM,MAAM,SAAS,KAAK,CAAC;AAAA,IACpF,CAAC;AAAA,EACL;AACF;AA3NA,IAiBMD,SACAI;AAlBN;AAAA;AAAA;AAAA;AAKA;AASA;AACA;AAEA,IAAMJ,UAAS;AACf,IAAMI,qBAAoB,MAAM;AAAA;AAAA;;;ACNzB,SAAS,QAAQ,MAAuB;AAC7C,SAAO,SAAS,KAAK,IAAI;AAC3B;AAEO,SAAS,YAAY,IAAe,MAAuB,MAAM,MAAa;AACnF,QAAM,QAAQ,MAAM,EAAE,KAAK,MAAM,QAAQ,GAAG,KAAK,MAAM,QAAQ,EAAE,IAAI,EAAE,GAAG,aAAa;AACvF,QAAM,EAAE,MAAM,MAAM,IAAI;AACxB,QAAM,QAAQ,CAACC,WAA0B,EAAE,GAAGA,OAAM,KAAK,MAAM,KAAK,KAAK,MAAM,IAAI;AACnF,MAAI,OAAO,SAAS,YAAY;AAC9B,OAAG,OAAO,CAAC,MAAM,eAAe,MAAM,KAAK,KAAK,IAAI,MAAM,UAAU,CAAC;AAAA,EACvE;AACA,MAAI,OAAO,UAAU,WAAY,IAAG,QAAQ,CAAC,OAAO,MAAM,MAAM,KAAK,IAAI,EAAE,CAAC;AAC5E,SAAO;AACT;AAzBA,IAQa,cAEP;AAVN;AAAA;AAAA;AAQO,IAAM,eAAgC,OAAO,OAAO,EAAE,KAAK,KAAM,KAAK,IAAK,CAAC;AAEnF,IAAM,WAAW;AAAA;AAAA;;;AC2EjB,SAAS,SAAS,OAA+B;AAC/C,MAAI,MAAM,gBAAgB,WAAY,QAAO;AAC7C,SAAO,IAAI,WAAW,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU,EAAE,MAAM;AAChF;AAEA,SAAS,YAAY,MAAkB,OAA+C;AACpF,SAAO,SAAS,QAAQ,SAAY,CAAC,KAAK,MAAqB;AACjE;AAWO,SAAS,UAAU,WAAkE;AAC1F,QAAMC,QAAO,CACX,KACA,OACA,aACiB;AACjB,UAAM,IAAI,UAAU,KAAK,KAAK,OAAO,mBAAmB,OAAO,QAAQ;AACvE,QAAI,CAAC,EAAE,GAAI,OAAM,IAAI,aAAa,EAAE,KAAK;AACzC,WAAO;AAAA,EACT;AACA,QAAMC,QAAO,CAAC,MAA8B,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO;AACjF,SAAO;AAAA,IACL,KAAK,IAAI,KAAK,MAAM;AAClB,YAAM,QAAQ;AAAA,QACZ,GAAI,MAAM,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,QAC3C,GAAI,MAAM,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAAA,MACrC;AACA,YAAM,IAAID,MAAK,EAAE,IAAI,WAAW,IAAI,KAAK,GAAG,MAAM,GAAG,WAAW,EAAE,EAAE;AACpE,aAAO,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,QAAQ,IAAI,WAAW,CAAC;AAAA,IAChE;AAAA,IACA,MAAM,IAAI,OAAO,MAAM;AACrB,YAAM,OAAO,SAAS,KAAK;AAC3B,YAAM,MAAM;AAAA,QACV,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA,GAAI,MAAM,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,MAC7C;AACA,YAAM,IAAIC,MAAKD,MAAK,KAAK,YAAY,EAAE,IAAI,YAAY,MAAM,KAAK,CAAC,CAAC;AACpE,aAAO,OAAO,MAAM,WAAW,IAAI,MAAM;AAAA,IAC3C;AAAA,IACA,MAAM,IAAI;AACR,MAAAA,MAAK,EAAE,IAAI,YAAY,GAAG,GAAG,YAAY,EAAE,EAAE;AAAA,IAC/C;AAAA,IACA,OAAO;AACL,aAAOC,MAAKD,MAAK,EAAE,IAAI,UAAU,GAAG,SAAS,CAAC;AAAA,IAChD;AAAA,IACA,KAAK,IAAI;AACP,aAAOC,MAAKD,MAAK,EAAE,IAAI,WAAW,GAAG,GAAG,WAAW,EAAE,EAAE,CAAC;AAAA,IAC1D;AAAA,IACA,QAAQ,MAAM,OAAO,UAAU,MAAM;AACnC,aAAOC;AAAA,QACLD;AAAA,UACE;AAAA,YACE,IAAI;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA,GAAI,MAAM,aAAa,SAAY,EAAE,UAAU,KAAK,SAAS,IAAI,CAAC;AAAA,YAClE,GAAI,MAAM,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,YACvC,GAAI,MAAM,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,YAC3C,GAAI,MAAM,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,YACvC,GAAI,MAAM,UAAU,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,YACzC,GAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC;AAAA,YACrC,GAAI,MAAM,WAAW,SAAY,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,YAC5D,GAAI,MAAM,QAAQ,SAAY,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC;AAAA,YACnD,GAAI,MAAM,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC;AAAA,YAC3C,GAAI,MAAM,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAAA,UACrC;AAAA,UACA,eAAe,IAAI;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,IAAI,QAAQ,QAAQ;AACvB,aAAOC,MAAKD,MAAK,EAAE,IAAI,WAAW,IAAI,QAAQ,OAAO,GAAG,WAAW,EAAE,EAAE,CAAC;AAAA,IAC1E;AAAA,IACA,MAAM,IAAI;AACR,MAAAA,MAAK,EAAE,IAAI,YAAY,GAAG,GAAG,YAAY,EAAE,EAAE;AAAA,IAC/C;AAAA,IACA,MAAM,IAAI,KAAK,IAAI;AACjB,YAAM,IAAIA,MAAK,EAAE,IAAI,YAAY,IAAI,KAAK,QAAQ,GAAG,GAAG,YAAY,EAAE,EAAE;AACxE,aAAO,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,QAAQ,IAAI,WAAW,CAAC;AAAA,IAChE;AAAA,IACA,OAAO,IAAI,OAAO,IAAI;AACpB,YAAM,OAAO,SAAS,KAAK;AAC3B,aAAOC;AAAA,QACLD,MAAK,EAAE,IAAI,aAAa,IAAI,QAAQ,IAAI,KAAK,GAAG,aAAa,EAAE,IAAI,YAAY,MAAM,KAAK,CAAC;AAAA,MAC7F;AAAA,IACF;AAAA,IACA,OAAO,IAAI;AACT,aACGC,MAAKD,MAAK,EAAE,IAAI,WAAW,GAAG,GAAG,WAAW,EAAE,EAAE,CAAC,GAAyB,QAAQ;AAAA,IAEvF;AAAA,IACA,QAAQ,IAAI;AACV,aAAQC,MAAKD,MAAK,EAAE,IAAI,WAAW,GAAG,GAAG,WAAW,EAAE,EAAE,CAAC,GAAyB;AAAA,IACpF;AAAA,IACA,KAAK,IAAI;AACP,aAAQC,MAAKD,MAAK,EAAE,IAAI,WAAW,GAAG,GAAG,WAAW,EAAE,EAAE,CAAC,GAAyB;AAAA,IACpF;AAAA,IACA,SAAS,IAAI;AACX,aAAQC,MAAKD,MAAK,EAAE,IAAI,WAAW,GAAG,GAAG,WAAW,EAAE,EAAE,CAAC,EAA0B;AAAA,IACrF;AAAA,IACA,OAAO,IAAI;AACT,aAAQC,MAAKD,MAAK,EAAE,IAAI,WAAW,GAAG,GAAG,WAAW,EAAE,EAAE,CAAC,EACtD;AAAA,IACL;AAAA,IACA,KAAK,IAAI;AACP,aAAQC,MAAKD,MAAK,EAAE,IAAI,eAAe,GAAG,GAAG,eAAe,EAAE,EAAE,CAAC,EAAuB;AAAA,IAC1F;AAAA,IACA,OAAO,IAAI;AACT,YAAM,IAAIC,MAAKD,MAAK,EAAE,IAAI,eAAe,IAAI,MAAM,KAAK,GAAG,eAAe,EAAE,EAAE,CAAC;AAG/E,aAAO,GAAG;AAAA,IACZ;AAAA,IACA,QAAQ,IAAI,MAAM;AAChB,MAAAA,MAAK,EAAE,IAAI,YAAY,IAAI,KAAK,GAAG,YAAY,EAAE,EAAE;AAAA,IACrD;AAAA,IACA,QAAQ,IAAI,KAAK,KAAK;AACpB,YAAM,MAAM,EAAE,GAAI,QAAQ,SAAY,EAAE,IAAI,IAAI,CAAC,GAAI,GAAI,QAAQ,SAAY,EAAE,IAAI,IAAI,CAAC,EAAG;AAC3F,MAAAA,MAAK,EAAE,IAAI,YAAY,IAAI,GAAG,IAAI,GAAG,YAAY,EAAE,EAAE;AAAA,IACvD;AAAA,IACA,SAAS,IAAI,SAAS,SAAS,KAAK;AAClC,MAAAA,MAAK,EAAE,IAAI,aAAa,IAAI,SAAS,SAAS,IAAI,GAAG,aAAa,EAAE,EAAE;AAAA,IACxE;AAAA,IACA,WAAW;AACT,aAAOC,MAAKD,MAAK,EAAE,IAAI,eAAe,GAAG,cAAc,CAAC;AAAA,IAC1D;AAAA,IACA,SAASE,OAAM;AACb,aAAOD,MAAKD,MAAK,EAAE,IAAI,gBAAgB,MAAAE,MAAK,GAAG,gBAAgBA,KAAI,EAAE,CAAC;AAAA,IACxE;AAAA,IACA,QAAQA,OAAM;AACZ,YAAM,MACJA,UAAS,SAAY,EAAE,IAAI,cAAuB,IAAI,EAAE,IAAI,eAAwB,MAAAA,MAAK;AAC3F,aAAOD,MAAKD,MAAK,KAAK,eAAeE,SAAQ,EAAE,EAAE,CAAC;AAAA,IACpD;AAAA,IACA,OAAO,IAAI;AACT,aAAOD,MAAKD,MAAK,EAAE,IAAI,WAAW,GAAG,GAAG,WAAW,EAAE,EAAE,CAAC;AAAA,IAC1D;AAAA,IACA,OAAO,IAAI,SAAS,OAAO;AACzB,MAAAA,MAAK,EAAE,IAAI,WAAW,IAAI,SAAS,GAAI,QAAQ,EAAE,MAAM,IAAI,CAAC,EAAG,GAAG,WAAW,EAAE,EAAE;AAAA,IACnF;AAAA,IACA,QAAQ,IAAI;AACV,aAAOC,MAAKD,MAAK,EAAE,IAAI,aAAa,GAAG,GAAG,aAAa,EAAE,EAAE,CAAC;AAAA,IAC9D;AAAA,IACA,UAAU;AACR,aAAOC,MAAKD,MAAK,EAAE,IAAI,WAAW,GAAG,UAAU,CAAC;AAAA,IAClD;AAAA,IACA,QAAQ,GAAG,QAAQ;AACjB,aAAOC,MAAKD,MAAK,EAAE,IAAI,kBAAkB,GAAG,OAAO,GAAG,kBAAkB,CAAC,EAAE,CAAC;AAAA,IAC9E;AAAA,IACA,WAAW,OAAO;AAChB,aAAOC,MAAKD,MAAK,EAAE,IAAI,kBAAkB,MAAM,GAAG,gBAAgB,CAAC;AAAA,IACrE;AAAA,IACA,cAAc,OAAO;AACnB,aAAOC,MAAKD,MAAK,EAAE,IAAI,qBAAqB,MAAM,GAAG,mBAAmB,CAAC;AAAA,IAC3E;AAAA,IACA,eAAe,IAAI;AACjB,MAAAA,MAAK,EAAE,IAAI,sBAAsB,GAAG,GAAG,oBAAoB;AAAA,IAC7D;AAAA,IACA,aAAa;AACX,aAAOC,MAAKD,MAAK,EAAE,IAAI,WAAW,GAAG,UAAU,CAAC;AAAA,IAClD;AAAA,IACA,WAAW;AACT,aAAOC,MAAKD,MAAK,EAAE,IAAI,YAAY,GAAG,WAAW,CAAC;AAAA,IACpD;AAAA,IACA,YAAY;AACV,aAAOC,MAAKD,MAAK,EAAE,IAAI,aAAa,GAAG,YAAY,CAAC;AAAA,IACtD;AAAA,IACA,QAAQ,QAAQ,MAAMG,QAAO,KAAKC,OAAM;AACtC,YAAM,MAAM,EAAE,IAAI,UAAmB,GAAG,QAAQ,MAAM,OAAAD,QAAO,KAAK,GAAIC,QAAO,EAAE,MAAAA,MAAK,IAAI,CAAC,EAAG;AAC5F,MAAAJ,MAAK,KAAK,QAAQ;AAAA,IACpB;AAAA,IACA,QAAQ,QAAQ,MAAMG,QAAO,KAAK;AAChC,aAAOF,MAAKD,MAAK,EAAE,IAAI,UAAU,GAAG,QAAQ,MAAM,OAAAG,QAAO,IAAI,GAAG,QAAQ,CAAC;AAAA,IAC3E;AAAA,IACA,WAAW,QAAQ;AACjB,MAAAH,MAAK,EAAE,IAAI,YAAY,GAAG,OAAO,GAAG,UAAU;AAAA,IAChD;AAAA,IACA,MAAM,IAAI,MAAMI,OAAM;AACpB,MAAAJ,MAAK,EAAE,IAAI,SAAS,IAAI,MAAM,GAAII,QAAO,EAAE,MAAAA,MAAK,IAAI,CAAC,EAAG,GAAG,SAAS,EAAE,EAAE;AAAA,IAC1E;AAAA,IACA,UAAU,IAAI;AACZ,aAAOH,MAAKD,MAAK,EAAE,IAAI,cAAc,GAAG,GAAG,cAAc,EAAE,EAAE,CAAC;AAAA,IAChE;AAAA,IACA,QAAQ,IAAI,MAAM;AAChB,MAAAA,MAAK,EAAE,IAAI,YAAY,IAAI,KAAK,GAAG,YAAY,EAAE,EAAE;AAAA,IACrD;AAAA,IACA,uBAAuB,IAAI;AACzB,MAAAA,MAAK,EAAE,IAAI,YAAY,GAAG,GAAG,YAAY,EAAE,EAAE;AAAA,IAC/C;AAAA,IACA,cAAc,IAAI,IAAI;AACpB,MAAAA,MAAK,EAAE,IAAI,cAAc,IAAI,GAAG,GAAG,cAAc,EAAE,EAAE;AAAA,IACvD;AAAA,IACA,WAAW,IAAI,MAAM,MAAM;AACzB,MAAAA,MAAK,EAAE,IAAI,iBAAiB,IAAI,MAAM,KAAK,GAAG,iBAAiB,EAAE,EAAE;AAAA,IACrE;AAAA,EACF;AACF;AAEO,SAAS,aAAa,IAAeK,UAAwB,OAA0B;AAC5F,MAAI,MAAM,UAAU,WAAW,IAAI,MAAM,IAAI,MAAM,MAAM,EAAG;AAE5D,oBAAkB,IAAIA,UAAS;AAAA,IAC7B,GAAG;AAAA,IACH,MAAM,MAAM,SAAS,WAAW,MAAM;AAAA,IACtC,QAAQ,MAAM;AAAA,EAChB,CAAC;AACH;AAYA,SAAS,WAAW,IAAe,IAAY,MAA2B;AACxE,SAAO,OAAO,IAAI,IAAI,QAAQ,KAAK,MAAM,IAAI,WAAW,KAAK,MAAM,CAAC;AACtE;AAEA,SAAS,SAAS,IAAe,IAAY,MAAyB;AACpE,SAAO,SAAS,OACZ,OAAO,IAAI,IAAI,KAAK,KAAKC,YAAWC,YAAW,IAC/C,WAAW,IAAI,IAAI,IAAI;AAC7B;AAEA,SAAS,OAAO,IAAe,IAAY,MAAc,OAAwB;AAC/E,MAAI;AACJ,MAAI;AACF,aAAS,GAAG,KAAK,MAAM,KAAK;AAAA,EAC9B,QAAQ;AACN,WAAO;AAAA,EACT;AACA,MAAI,OAAO,OAAO,IAAI;AACpB,OAAG,UAAU,QAAQ,EAAE;AACvB,OAAG,YAAY,OAAO,EAAE;AAAA,EAC1B;AACA,SAAO;AACT;AAIO,SAAS,gBAAgB,IAAeF,UAAwB,KAAwB;AAC7F,aAAW,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG;AAC1B,UAAM,SAAS,GAAG,UAAU,EAAE;AAC9B,QAAI,CAAC,OAAQ;AACb,UAAM,OAAO,KAAK,OAAO,EAAE;AAC3B,UAAM,OAAO,SAAS,YAAY,SAAS,SAAS,KAAK,WAAW,EAAE,IAAI;AAC1E,QAAI,QAAQ,SAAS,IAAI,IAAI,IAAI,EAAG;AACpC,QAAI,QAAQ,OAAO,IAAI,IAAI,GAAG;AAC5B,YAAM,QAAQ,KAAK,SACd,OAAO,QAAQ,CAACG,aAAa,WAAW,IAAI,OAAO,EAAE,CAAC,IACvD,OAAO;AACX,SAAG,YAAY,EAAE;AACjB,YAAM,SAAS,EAAE,IAAI,QAAQ,IAAI,MAAmC,MAAM;AAC1E,wBAAkB,IAAIH,UAAS,MAAM,EAAE,QAAQ;AAC/C;AAAA,IACF;AACA,IAAAA,SAAQ,OAAO,QAAQ,EAAE;AACzB,IAAAA,SAAQ,aAAa,MAAM;AAAA,EAC7B;AACF;AAwBO,SAAS,SAAS,MAAsB;AAC7C,SAAO,KAAK,WAAW,IAAI,IAAI,KAAK,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI;AACtE;AAyEO,SAAS,SAAY,QAAgBH,OAA6B;AACvE,QAAM,MAAM,OAAO,yBAAyB,QAAQA,KAAI;AACxD,SAAO,OAAO,WAAW,MAAO,IAAI,QAA0B;AAChE;AAgBO,SAAS,SACd,WACA,MAC+B;AAC/B,QAAM,IAAI,UAAU,KAAK,EAAE,IAAI,gBAAgB,GAAG,OAAO,mBAAmB,eAAe;AAC3F,QAAM,KAAK,EAAE,MAAM,EAAE,SAAS,SAAU,EAAE,OAAgD;AAC1F,SAAO,MAAM,EAAE,KAAK,KAAK,KAAK,MAAM,KAAK,QAAQ,EAAE;AACrD;AAEO,SAAS,WACd,SACA,QACA,MACM;AACN,aAAW,SAAS,WAAW,MAAM,MAAM,MAAM;AACnD;AAEA,SAAS,cAAc,WAA6B,QAAkC;AACpF,QAAM,OAAO,iBAAiB,SAAS;AACvC,SAAO,QAAQ;AACf,SAAO;AACT;AAEO,SAAS,YACd,GACA,SAA2B,EAAE,MAAM,EAAE,GAC2C;AAChF,QAAM,OAAO,EAAE;AACf,QAAM,SAAS,OAAO,CAAC,KAAK;AAC5B,MAAI,CAAC,QAAQ,WAAW,GAAI,QAAO;AACnC,QAAM,UAAU,KAAK,CAAC;AACtB,QAAM,WAAW,OAAO,OAAO,CAAC,UAAU,CAAC;AAC3C,SAAO,QAAQ,CAAC;AAChB,SAAO,EAAE,QAAQ,SAAS,SAAS,KAAK,CAAC,GAAG,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC,EAAG;AAChF;AAEO,SAAS,aACd,SACA,SACA,MACM;AACN,aAAW,SAAS,cAAc,MAAM,CAAC,WAAW,IAAI,SAAS;AAC/D,UAAM,QAAQ,OAAO,GAAG,IAAI;AAC5B,YAAQ;AACR,WAAO;AAAA,EACT,CAAC;AACH;AAEO,SAAS,iBACd,SACA,QACA,MACA,OAAmB,MAAM,QACnB;AACN,QAAM,OAAO,MAAM;AACjB,WAAO,QAAQ,KAAK,QAAQ,UAAU,MAAM,EAAG,SAAQ,KAAK,QAAQ,YAAY,CAAC;AACjF,UAAM,MACJ,QAAQ,KAAK,QAAQ,aAAa,IAClC,QAAQ,KAAK,QAAQ,YAAY,IACjC,QAAQ,KAAK,QAAQ,YAAY;AACnC,QAAI,QAAQ,EAAG,MAAK;AAAA,EACtB;AACA,aAAWA,SAAQ,CAAC,WAAW,UAAU,SAAS,GAAY;AAC5D;AAAA,MACE;AAAA,MACAA;AAAA,MACA;AAAA,MACA,CAAC,aACC,IAAI,SAAS;AACX,eAAO,QAAQ,KAAK,QAAQ,UAAU,MAAM,EAAG,SAAQ,KAAK,QAAQ,YAAY,CAAC;AACjF,cAAM,OAAO,SAAS,GAAG,IAAI;AAC7B,aAAK;AACL,eAAO;AAAA,MACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,YAAY,IAAe,MAA6C;AAC/E,SAAO,KAAK,SAAS,CAAC,IAAI,EAAE,OAAO,YAAY,IAAI,KAAK,MAAM,QAAQ,KAAK,QAAQ,IAAI,CAAC,EAAE;AAC5F;AAEA,SAAS,YAAY,QAAyB;AAC5C,SAAO,SAAkC,QAAQ,eAAe,GAAG;AACrE;AAWA,SAAS,eAAe,SAA8B,QAAgB,MAAyB;AAC7F,QAAM,EAAE,MAAM,WAAW,KAAK,OAAO,IAAI;AACzC,QAAM,aAAa,SAAwB,QAAQ,oBAAoB;AACvE,aAAW,SAAS,KAAK,MAAM,UAAU;AACzC,cAAY,SAAS;AAAA,IACnB,MAAM;AAAA,IACN,SAAS,KAAK,SAAS;AAAA,IACvB;AAAA,IACA,KAAK,CAAC,SACJ,KAAK,UAAU,KAAK,EAAE,IAAI,cAAc,KAAK,GAAG,OAAO,mBAAmB,OAAO;AAAA,EACrF,CAAC;AACD,QAAM,OAAO,MAAM,SAAoB,QAAQ,IAAI;AACnD,iBAAe,SAAS,MAAM,YAAY,aAAa,YAAY,MAAM,GAAG,MAAM;AAClF,eAAa,SAAS,MAAM,QAAQ,UAAU;AAC9C,gBAAc,SAAS,MAAM,UAAU;AACvC,aAAW,SAAS,MAAM,QAAQ,UAAU;AAC5C,eAAa,SAAS,MAAM,QAAQ,UAAU;AAC9C,cAAY,SAAS,aAAa,IAAI,GAAG,QAAQ,UAAU;AAC3D;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,YAAY,EAAE,IAAI,MAAM,OAAO,CAAC,IAAI,MAAME,UAAS,IAAI,QAAQ,IAAI,MAAMA,KAAI,EAAE,CAAC;AAAA,IACtF;AAAA,EACF;AACA,QAAM,OAAO,SAAoB,QAAQ,gBAAgB;AACzD,YAAU,SAAS,MAAM,IAAI;AAC7B,eAAa,SAAS,EAAE,MAAM,IAAI,MAAM,KAAK,OAAO,CAAC;AACrD,QAAM,QAAQ,MAAM,cAAc,KAAK,KAAK,OAAO,GAAG,OAAO,cAAc,CAAC;AAC5E,eAAa,SAAS,OAAO,UAAU;AACvC,mBAAiB,SAAS,IAAI,WAAW,KAAK,KAAK,GAAG,cAAc,GAAG,YAAY,KAAK,IAAI;AAC9F;AAEA,SAAS,OAAO,IAAa,MAA0B,WAAmC;AACxF,MAAI,CAAC,KAAK,KAAM;AAChB,QAAM,MAAM,CAAC,QAAiE;AAC5E,UAAM,IAAI,UAAU,KAAK,KAAK,OAAO,mBAAmB,IAAI,EAAE;AAC9D,WAAO,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO,CAAC;AAAA,EAC/C;AACA,QAAM,QAAQ,MAAM,IAAI,EAAE,IAAI,YAAY,CAAC;AAC3C;AAAA,IACE;AAAA,IACA,IAAI,QAAQ,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,OAAO,KAAK,IAAI;AAAA,IAC3D,CAAC,SAAS,IAAI,EAAE,IAAI,aAAa,KAAK,CAAC;AAAA,EACzC;AACF;AAEA,SAAS,YAAY,MAInB;AACA,SAAO;AAAA,IACL,GAAI,KAAK,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,IACtC,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAAA,IACpC,GAAI,KAAK,UAAU,EAAE,SAAS,KAAK,QAAQ,IAAI,CAAC;AAAA,EAClD;AACF;AAEA,SAAS,kBACP,OACA,OACA,MACkB;AAClB,SAAO;AAAA,IACL,MAAM,CAAC,KAAKK,YAAW,UAAU;AAC/B,UAAI,CAAC,OAAO,IAAI,IAAI,EAAE,EAAG,OAAM;AAC/B,YAAM,IAAI,MAAM,KAAK,KAAKA,YAAW,KAAK;AAC1C,UAAI,QAAQ,IAAI,OAAO,kBAAkB,EAAE,MAAM,EAAE,SAAS;AAC1D,eAAO,OAAO,MAAM,EAAE,IAAI;AAC5B,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,cAAc,WAAsC;AAC3D,QAAM,MAAM,EAAE,IAAI,kBAA2B,KAAK,IAAI,MAAM,OAAO,KAAK;AACxE,QAAM,IAAI,UAAU,KAAK,KAAK,OAAO,mBAAmB,gBAAgB;AACxE,SAAO,EAAE,MAAM,EAAE,EAAE,SAAS,UAAU,EAAE,SAAS;AACnD;AAEA,eAAsB,eACpB,MACAC,OACA,OAAuE,CAAC,GACvD;AACjB,QAAM,SAAS,EAAE,MAAM,EAAE;AACzB,QAAM,UAAU,IAAI;AAAA,IAClB,uBAAuB,KAAK,KAAKA,OAAM,EAAE,QAAQ,MAAM,QAAQ,OAAO,cAAc,EAAE,CAAC;AAAA,IACvF,IAAI,WAAW,KAAK,KAAK,GAAG,cAAc;AAAA,IAC1C;AAAA,MACE,OAAO,MAAM,YAAY,QAAoC,MAAM;AAAA,MACnE,OAAO,CAAC,QAAS,OAAoC,aAAa,GAAG;AAAA,MACrE,OAAO,CAAC,UAAU;AAChB,cAAMC,WAAU;AAChB,YAAI,CAACA,SAAQ,iBAAiB,KAAK,EAAG,CAAAA,SAAQ,aAAa,IAAI,IAAI;AAAA,MACrE;AAAA,IACF;AAAA,EACF;AACA,QAAM,QAAQ,QAAQ,UAAU;AAChC,MAAI,QAAQ,MAAY;AAAA,EAAC;AACzB,QAAM,YAAY,kBAAkB,OAAO,MAAM,MAAM,GAAG,KAAK,IAAI;AACnE,QAAM,MAAM,UAAU,SAAS;AAC/B,QAAMC,WAAU,IAAI,YAAY;AAChC,QAAM,MAAM,CAAC,OAAe,CAAC,SAAiB,IAAI,MAAM,IAAIA,SAAQ,OAAO,GAAG,IAAI;AAAA,CAAI,CAAC;AACvF,MAAI;AACJ,MAAIC;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,SAA2B,MAAM,MAAM;AAAA,EAAC;AAC5C,QAAM,cAAc,IAAI,QAAc,CAACC,UAAS,WAAW;AACzD,YAAQA;AACR,IAAAD,UAAS;AAAA,EACX,CAAC;AACD,QAAM,KAAK,SAAS,WAAW,IAAI;AACnC,QAAM,SAAS;AAAA,IACb,cAAc;AAAA,IACd,aAAa,KAAK;AAAA,IAClB,UAAU,GAAG;AAAA,IACb,WAAW,GAAG;AAAA,IACd,UAAU,KAAK;AAAA,IACf,aAAa,EAAE,cAAc,MAAM,cAAc,WAAW,MAAM,EAAE;AAAA,IACpE,OAAO,IAAI,CAAC;AAAA,IACZ,UAAU,IAAI,CAAC;AAAA,IACf,gBACE,SACA,MACQ;AACR,cAAQ,QAAQ,EACb,KAAK,MAAM;AACV,4BAAoB,SAAS,SAAuB,QAAQ,eAAe,GAAG;AAAA,UAC5E,IAAI,MAAM,SAAoB,QAAQ,IAAI;AAAA,UAC1C,MAAM,MAAO,SAAS,IAAI,WAAW,OAAO,MAAM,IAAI;AAAA,UACtD,KAAK;AAAA,UACL,OAAO,EAAE,QAAQ,KAAK,QAAQ,MAAM,QAAQ,QAAQ,OAAO,MAAM,MAAM,EAAE;AAAA,UACzE,OAAO;AAAA,YACL,KAAK,CAAC,OAAO;AACX,wBAAU;AAAA,gBACR,EAAE,IAAI,cAAc,KAAK,IAAI,MAAM,IAAI,QAAQ,OAAO,OAAO,EAAE;AAAA,gBAC/D,OAAO;AAAA,gBACP;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AACD,uBAAe,SAAS,QAAQ;AAAA,UAC9B;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ,MAAM;AAAA,UACd,MAAM,MAAM,SAAS,WAAW,IAAI,EAAE;AAAA,UACtC,MAAM,MAAM,KAAK,QAAQ,UAAU;AAAA,QACrC,CAAC;AACD,eAAO,YAAY,YAAY,KAAK,QAAQ,QAAQ,aAAa,OAAO,CAAC;AAAA,MAC3E,CAAC,EACA,KAAK,CAAC,aAAa;AAClB,iBAAS,WAAW,UAAU,OAAO;AACrC,QAAAH,MAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7C,kBAAU,SAAS;AACnB,sBAAc,KAAK,KAAK,QAAQ,OAAO,cAAc,CAAC;AACtD;AAAA,UACE,aAAa,UAAU,MAAM,OAAO,CAAC;AAAA,UACrC,KAAK,QAAQ;AAAA,QACf;AAAA,MACF,GAAGG,OAAM;AACX,aAAO,CAAC;AAAA,IACV;AAAA,IAEA,QAAQ;AAAA,MACN,CAAC,MAAc;AACb,YAAI,CAAC,WAAW,CAAC,EAAG;AACpB,cAAM,KAAM,EAAoB;AAEhC,yBAAiB,EAAE;AACnB,uBAAe,EAAE;AACjB,YAAI;AACF,aAAG,UAAU,KAAK,GAAG;AACrB,aAAG,MAAM,KAAK,GAAG;AAAA,QACnB,QAAQ;AAAA,QAAC;AAAA,MACX;AAAA,IACF;AAAA,IACA,sBAAsB,MAAM,MAAM;AAAA,EACpC;AACA,GAAC,KAAK,YAAY,cAAc,KAAK,QAAQ,MAAM,MAAM;AACzD,QAAM;AACN,QAAM,UAAU;AAChB,MAAI,CAAC,WAAW,OAAO,EAAG,QAAO,aAAa,SAAS,IAAI;AAC3D,eAAa,QAAQ,IAAI,KAAK,WAAW,IAAI;AAC7C,QAAM,MAAM,uBAAuB,QAAQ,IAAI;AAAA,IAC7C,QAAQ,sBAAsB,WAAW,YAAY,IAAI,CAAC;AAAA,IAC1D,KAAK,KAAK;AAAA,IACV,MAAM,KAAK,QAAQ,IAAI,CAAC;AAAA,IACxB,MAAM,KAAK,SAAS,KAAK,OAAO;AAAA,EAClC,CAAC;AACD,SAAO,QAAQ,IAAI,MAAM,SAAS;AAClC,UAAQ,MAAM,QAAQ,MAAM,MAAM,IAAI,WAAW,CAAC;AAClD,kBAAgB,QAAQ,IAAI,GAAG;AAC/B,QAAM,UAAU,MAAe,QAAQ,eAAe,MAAM,KAAK,cAAc,KAAK;AACpF,QAAM,cAAc,MAAe,QAAQ,YAAY;AACvD,QAAMR,WAAU,IAAI,cAAc,QAAQ,IAAI,KAAK;AAAA,IACjD;AAAA,IACA;AAAA,IACA,GAAI,KAAK,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,IACtC,SAAS,KAAK;AAAA,EAChB,CAAC;AACD,mBAAiB,QAAQ,EAAE;AAC3B,YAAU,QAAQ,IAAyB,CAAC,OAAO;AACjD,IAAAA,SAAQ,WAAW;AAAA,EACrB,CAAC;AACD,WAAS,MAAMA,SAAQ,QAAQ;AAC/B,YAAU,QAAQ,IAAI,EAAE,GAAG,KAAK,KAAK,UAAU,aAAa,IAAI,EAAE,GAAG,IAAI;AACzE,iBAAe,QAAQ,EAAE;AACzB,YAAU,QAAQ,IAAyB,KAAK,KAAK,GAAG;AACxD,MAAI,KAAK,KAAM,sBAAqB,QAAQ,IAAIA,UAAS,KAAK,KAAK,WAAW,CAAC,CAAC;AAAA,OAC3E;AACH,oBAAgB,QAAQ,IAAIA,UAAS,GAAG;AACxC,eAAW,SAAS,KAAK,OAAO,CAAC,EAAG,cAAa,QAAQ,IAAIA,UAAS,KAAK;AAAA,EAC7E;AACA,QAAM,SAAS,SAAwB,SAAS,QAAQ;AACxD,MAAI,OAAQ,CAAAA,SAAQ,SAAS,MAAM;AACnC,EAAAA,SAAQ,uBAAuB;AAC/B,EAAAA,SAAQ,oBAAoB;AAC5B,WAAS,QAAQ,EAAE;AACnB,gBAAc,QAAQ,EAAE;AACxB,eAAa,QAAQ,IAAI,CAAC,QAAQ,SAASA,SAAQ,WAAW,QAAQ,IAAI,CAAC;AAC3E,cAAY,QAAQ,IAAI;AAAA,IACtB;AAAA,IACA,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM,SAAS;AAAA,EAC3B,CAAC;AACD,QAAM,WAAW,CAAC,MAAqB,aAAa,EAAE,IAA6B;AACnF,UAAQ,cAAc,oBAAoB;AAAA,IACxC;AAAA,IACA,IAAI,QAAQ;AAAA,IACZ,KAAK,KAAK;AAAA,IACV,KAAK,KAAK;AAAA,IACV,aAAa,MAAM,IAAI,MAAM;AAAA,IAC7B,YAAY,MAAM,IAAI,WAAW;AAAA,IACjC,OAAO,CAAC,QAAQ,QAAQ,aAAa,GAAG;AAAA,IACxC;AAAA,IACA,QAAQ,MAAM;AAAA,IACd,YAAY,MAAM,QAAQ,WAAW;AAAA,IACrC,cAAc,MAAM,gBAAgB,QAAQ,IAAI,KAAKA,UAAS,QAAQ;AAAA,IACtE,SAAS,CAAC,YAAY,kBAAkB,QAAQ,IAAI,KAAKA,UAAS,UAAU,OAAO;AAAA,IACnF,eAAe,MAAM,YAAY,QAAQ,IAAI,KAAKA,UAAS,QAAQ;AAAA,IACnE,GAAG,YAAY,QAAQ,IAAI,IAAI;AAAA,EACjC,CAAC;AACD,UAAQ,YAAY,OAAO,iBAAiB,SAAS;AACrD,UAAQ,YAAY,WAAW,aAAa,IAAI;AAChD,UAAQ,YAAY,MAAM,mBAAmB;AAAA,IAC3C;AAAA,IACA,IAAI,QAAQ;AAAA,IACZ;AAAA,IACA,SAAAA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,SAAO,aAAa,SAAS,MAAMA,UAAS,GAAG;AACjD;AAEA,SAAS,aACP,SACA,MACAA,UACA,KACQ;AACR,MAAI;AACF,WAAOA,SAAQ,WAAW,QAAQ,SAAS,IAAI,CAAC;AAAA,EAClD,UAAE;AACA,QAAI;AACF,UAAI,MAAM;AAAA,IACZ,QAAQ;AAAA,IAAC;AAAA,EACX;AACF;AAOA,SAAS,aACP,UACA,OACsB;AACtB,QAAM,QAAQ,SAAS,QAAQ;AAC/B,MAAI,OAAO,UAAU,WAAY,QAAO;AACxC,QAAM,MAAM;AACZ,QAAM,WAAW,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG,SAAS,SAAS;AAAA,IACpE,iBAAiB,MAAM;AACrB,YAAM,MAAM,MAAM;AAClB,UAAI;AACF,YAAI;AAAA,MACN,UAAE;AACA,YAAI;AAAA,MACN;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO,EAAE,SAAS,SAAS;AAC7B;AAEO,SAAS,UAAU,IAAY,UAAwC;AAC5E,QAAM,EAAE,MAAM,MAAM,IAAI;AACxB,MAAI,CAAC,KAAM;AACX,KAAG,OAAO,MAAM;AACd,eAAW,IAAI;AACf,OAAG,QAAQ,CAAC,WAAW;AACrB,UAAI;AACF,cAAM,KAAK,IAAI,MAAM;AAAA,MACvB,QAAQ;AAAA,MAAC;AAAA,IACX;AACA,QAAI;AACF,WAAK,KAAK,EAAE;AAAA,IACd,UAAE;AACA,iBAAW,KAAK;AAChB,SAAG,QAAQ;AAAA,IACb;AAAA,EACF;AACF;AAEA,SAAS,WAAW,QAAyB;AAC3C,SAAO,OAAO,SAA6B,QAAQ,IAAI,GAAG,cAAc;AAC1E;AAEA,SAAS,aAAa,SAAwB,MAAkC;AAC9E,MAAI,KAAK,KAAM,OAAM,IAAI,MAAM,GAAG,KAAK,KAAK,6CAA6C;AACzF,SAAO,QAAQ,SAAS,IAAI;AAC9B;AAEA,SAAS,QAAQ,SAAwB,MAAkC;AACzE,MAAI;AACF,QAAI,KAAK,MAAM;AACb,UAAI,CAAC,QAAQ,eAAgB,OAAM,IAAI,MAAM,GAAG,KAAK,KAAK,uBAAuB;AACjF,aAAO,QAAQ,eAAe,EAAE,GAAG,KAAK,MAAM,KAAK,KAAK,IAAI,CAAC,KAAK;AAAA,IACpE;AAEA,YAAQ,QAAQ,gBAAgB,QAAQ,UAAU,KAAK,IAAI,KAAK;AAAA,EAClE,SAAS,GAAG;AACV,UAAMU,UAAU,GAA4B;AAC5C,QAAI,OAAOA,YAAW,SAAU,OAAM;AACtC,WAAOA;AAAA,EACT;AACF;AAUA,SAAS,aAAa,SAAmD;AACvE,aAAW,SAAS,OAAO,OAAO,OAAO,GAAG;AAC1C,eAAW,CAACb,OAAMc,MAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AACjD,UAAI,CAAC,QAAQ,IAAId,KAAI,KAAK,OAAOc,WAAU,WAAY;AACvD,YAAM,OAAOA;AACb,YAAMd,KAAI,IAAI,IAAI,SAAoB;AACpC,sBAAc;AACd,eAAO,KAAK,GAAG,IAAI;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAx6BA,IAqGM,QA2MAI,WACAW,WACAC,SACAV,YAEAD,cAEA,YA2BA,QAiDA,cA4EO,cAUA,cA2bP;AAp5BN;AAAA;AAAA;AAEA;AACA;AAEA;AAMA;AAEA;AACA;AACA;AACA;AACA;AAOA;AASA;AASA;AACA;AA2BA;AAOA;AACA;AAEA;AACA;AACA;AACA;AAWA;AAOA,IAAM,SAA8B,IAAI,IAAI,WAAW;AA2MvD,IAAMD,YAAW;AACjB,IAAMW,YAAW;AACjB,IAAMC,UAAS;AACf,IAAMV,aAAY;AAElB,IAAMD,eAAc;AAEpB,IAAM,aAAa,CAAC,WAClB,WAAW,SAASD,YAAW,WAAW,UAAUW,YAAWC;AA0BjE,IAAM,SAA8B,oBAAI,IAAI,CAAC,UAAU,QAAQ,UAAU,aAAa,QAAQ,CAAC;AAiD/F,IAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAOJ,IAAM,eAA8B,CAAC,MAAM,WAAW;AAC3D,UAAI;AACJ,UAAI;AACF,cAAM,IAAI,SAAS,UAAU,GAAG,SAAS,IAAI,CAAC;AAAA,GAAM,YAAY,EAAE;AAAA,MACpE,SAAS,GAAG;AACV,cAAM,aAAa,YAAY,IAAI,MAAM,YAAY,IAAI;AAAA,MAC3D;AACA,UAAI,MAAM;AAAA,IACZ;AAEO,IAAM,eACX;AA0bF,IAAM,UAA+B,oBAAI,IAAI;AAAA,MAC3C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA;AAAA;;;ACx2BM,SAAS,SAAS,KAA8C;AACrE,MAAI,CAAC,IAAK,QAAO,EAAE,KAAK,MAAM;AAAA,EAAC,GAAG,QAAQ,MAAM;AAAA,EAAC,EAAE;AACnD,QAAM,OAAO,IAAI,WAAW,GAAG;AAC/B,QAAM,MAAM,oBAAI,IAAY;AAC5B,QAAM,UAAU,MAAY;AAC1B,YAAQ,MAAM,MAAM,GAAG,CAAC;AACxB,QAAI,IAAI;AACR,eAAW,MAAM,KAAK;AACpB,UAAI,IAAI,KAAK,KAAK,OAAQ;AAC1B,WAAK,IAAI,GAAG,IAAI;AAAA,IAClB;AACA,YAAQ,MAAM,MAAM,GAAG,CAAC;AAAA,EAC1B;AACA,SAAO;AAAA,IACL,IAAI,IAAI;AACN,UAAI,IAAI,EAAE;AACV,cAAQ;AAAA,IACV;AAAA,IACA,OAAO,IAAI;AACT,UAAI,IAAI,OAAO,EAAE,EAAG,SAAQ;AAAA,IAC9B;AAAA,EACF;AACF;AAgCA,SAAS,SAASC,OAAiC;AACjD,QAAM,QAAQ,MAAMA,KAAI;AACxB,MAAI,MAAO,QAAO,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE;AACxC,SAAO,cAAc,KAAKA,KAAI,IAAI,CAAC,CAAC,IAAI,CAAC;AAC3C;AAEA,SAAS,cAAc,MAAkC;AACvD,SAAO,EAAE,MAAM,CAAC,QAA0C,KAAK,GAAG,EAAE;AACtE;AAEA,SAASC,QAAO,MAAc,KAAa,MAAuB;AAChE,MAAI,KAAK,WAAW,GAAG,EAAG,QAAO;AACjC,QAAM,OAAO,QAAQ,OAAO,CAAC,IAAI,IAAI,MAAM,SAAS,MAAM,IAAI,KAAK,SAAS,CAAC,EAAE,MAAM,GAAG;AACxF,QAAM,QAAQ,CAAC,GAAG,IAAI;AACtB,aAAW,OAAO,KAAK,MAAM,GAAG,GAAG;AACjC,QAAI,QAAQ,MAAM,QAAQ,IAAK;AAC/B,QAAI,QAAQ,MAAM;AAChB,UAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,YAAM,IAAI;AAAA,IACZ,MAAO,OAAM,KAAK,GAAG;AAAA,EACvB;AACA,SAAO;AACT;AAEA,SAAS,WACP,OACAC,UACyB;AACzB,MAAI,UAAU,OAAW,QAAO,CAAC;AACjC,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,OAAM,IAAI,YAAY,UAAU,eAAe;AAChG,SAAO,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAACF,OAAM,IAAI,MAAM;AACjD,QAAI,OAAO,SAAS,YAAY,SAAS,GAAI,OAAM,IAAI,YAAY,UAAU,eAAe;AAC5F,WAAO,CAACA,OAAM,UAAUE,SAAQ,IAAI,CAAC,CAAC;AAAA,EACxC,CAAC;AACH;AAEO,SAAS,aAAa,MAAkB,IAAmB,CAAC,GAAW;AAC5E,QAAM,YAAY,cAAc,KAAK,IAAI;AACzC,QAAM,MAAM,UAAU,SAAS;AAC/B,QAAMC,QAAO,CAAC,QAAqC;AACjD,UAAM,IAAI,KAAK,KAAK,GAAG;AACvB,QAAI,CAAC,EAAE,GAAI,OAAM,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE;AAChD,WAAO,EAAE,SAAS,SAAS,EAAE,OAAO,EAAE,SAAS,UAAU,EAAE,QAAQ;AAAA,EACrE;AACA,QAAM,OAAO,IAAI,SAAS;AAAA,IACxB,MAAM,CAAC,GAAI,EAAE,QAAQ,CAAC,CAAE;AAAA,IACxB,KAAK,EAAE,GAAI,EAAE,OAAO,CAAC,EAAG;AAAA,IACxB,KAAK,KAAK;AAAA,IACV,KAAK,KAAK;AAAA,IACV,QAAQ,EAAE,KAAK,MAAMA,MAAwC;AAAA,IAC7D,IAAI,sBAAsB,WAAW,EAAE,GAAG,KAAK,IAAI,QAAQ,KAAK,CAAC;AAAA,IACjE,MAAM;AAAA,EACR,CAAC;AACD,QAAM,QAAQ,KAAK;AACnB,QAAM,QAAQ,oBAAI,IAAoB;AACtC,QAAM,MAAM,CAAC,GAAW,MAAoB;AAC1C,UAAM,IAAI,GAAG,CAAC;AACd,UAAM,IAAI,CAAC;AAAA,EACb;AACA,QAAM,QAAQ,oBAAI,IAAoB;AACtC,QAAMC,UAAmB,CAAC;AAC1B,QAAM,cAAc,CAAC,OAAqB;AACxC,UAAM,OAAO,EAAE;AACf,QAAI;AACF,WAAK,IAAI,MAAM,EAAE;AAAA,IACnB,QAAQ;AAAA,IAAC;AAAA,EACX;AACA,MAAI;AACF,KAAC,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,MAAM;AACxC,YAAM,IAAI,KAAK,IAAI,UAAU,EAAE;AAC/B,MAAAA,QAAO,KAAK,CAAC;AACb,UAAI,GAAG,CAAC;AAAA,IACV,CAAC;AACD,eAAW,CAACJ,OAAM,IAAI,KAAK,WAAW,EAAE,UAAU,KAAK,OAAO,GAAG;AAC/D,YAAM,IAAI,KAAK,IAAI,UAAU,MAAMA,KAAI;AACvC,MAAAI,QAAO,KAAK,CAAC;AACb,YAAM,IAAI,IAAI,MAAM;AACpB,UAAI,GAAG,CAAC;AACR,YAAM,IAAI,GAAG,IAAI;AAAA,IACnB;AAAA,EACF,SAAS,KAAK;AACZ,eAAW,KAAKA,QAAQ,aAAY,CAAC;AACrC,UAAM;AAAA,EACR;AACA,QAAM,QAAQ,KAAK,QAAQ;AAC3B,QAAM,OAAO,MAAM,KAAK,IAAI,KAAK;AACjC,QAAM,OAAO,MAAc;AACzB,QAAI,IAAI;AACR,WAAO,MAAM,IAAI,CAAC,EAAG;AACrB,WAAO;AAAA,EACT;AACA,QAAM,WAAW,CAACJ,OAAc,SAA4B;AAC1D,eAAW,CAAC,MAAM,OAAO,KAAK,KAAK,MAAMA,KAAI,KAAK,CAAC,GAAG;AACpD,YAAM,IAAI,KAAK,IAAI;AACnB,YAAM,OAAO,MAAM,IAAI,CAAC;AACxB,YAAM,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC,CAAW;AAChD,UAAI,SAAS,UAAa,KAAK,SAAS,MAAO;AAC/C,UAAI,CAACC,QAAO,MAAM,IAAI,MAAM,KAAK,IAAI,OAAO,KAAK,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,EAAG,QAAO;AAAA,IACjF;AACA,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,CAAC,KAAa,SAAmC;AAC7D,UAAM,IAAI,KAAK,EAAE,UAAU,KAAK,IAAI;AACpC,UAAM,IAAI,KAAK;AACf,QAAI,GAAG,CAAC;AACR,QAAI,SAAS,OAAW,OAAM,IAAI,GAAG,IAAI;AACzC,SAAK,EAAE,UAAU,KAAK,GAAG,IAAI;AAAA,EAC/B;AACA,QAAM,UAAwC,CAAC;AAC/C,aAAW,CAACD,OAAM,EAAE,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC9C,QAAI,QAAQ,IAAIA,KAAI,EAAG;AACvB,UAAM,SAAS,SAASA,KAAI;AAC5B,YAAQA,KAAI,KAAK,IAAI,QAAkB;AACrC,YAAM,OAAO,CAAC,GAAG,GAAG;AACpB,iBAAW,MAAM,QAAQ;AACvB,cAAM,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;AAC5B,YAAI,MAAM,OAAW,QAAO,EAAE;AAC9B,aAAK,EAAE,IAAI;AAAA,MACb;AACA,UAAI,CAAC,SAASA,OAAM,GAAG,EAAG,QAAO,EAAE;AACnC,YAAM,MAAM,QAAQA,KAAI;AACxB,UAAI,QAAQ,WAAc,IAAI,GAAG,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,EAAG,QAAO,EAAE;AAC1E,YAAMK,SAAS,GAAkC,GAAG,IAAI;AACxD,UAAIA,WAAU,EAAE,QAAS,QAAOA;AAChC,UAAI,QAAQ,OAAW,OAAM,IAAI,GAAG,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC;AAC9D,aAAOA;AAAA,IACT;AAAA,EACF;AACA,UAAQ,YAAY,CAAC,MAAc;AACjC,UAAM,IAAI,MAAM,IAAI,CAAC;AACrB,QAAI,MAAM,OAAW,QAAO,EAAE;AAC9B,UAAM,OAAO,CAAC;AACd,UAAM,OAAO,CAAC;AACd,UAAM,OAAO,CAAC;AACd,WAAQ,MAAM,SAAoC,CAAC;AAAA,EACrD;AACA,UAAQ,eAAe,CAAC,MAAc,OAAe;AACnD,UAAM,KAAK,MAAM,IAAI,IAAI;AACzB,UAAM,KAAK,MAAM,IAAI,EAAE;AACvB,QAAI,OAAO,UAAa,OAAO,OAAW,QAAO,EAAE;AACnD,QAAI,SAAS,GAAI,QAAO,EAAE;AAC1B,gBAAY,EAAE;AACd,UAAM,IAAI,IAAI,EAAE;AAChB,UAAM,OAAO,MAAM,IAAI,IAAI;AAC3B,QAAI,SAAS,OAAW,OAAM,OAAO,EAAE;AAAA,QAClC,OAAM,IAAI,IAAI,IAAI;AACvB,UAAM,OAAO,IAAI;AACjB,UAAM,OAAO,IAAI;AACjB,WAAO,EAAE;AAAA,EACX;AACA,UAAQ,eAAe,CAAC,OAAe,QAAgB,GAAW,YAAoB;AACpF,UAAM,IAAI,KAAK;AACf,UAAM,UAAmC,CAAC;AAC1C,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAM,KAAK,QAAQ,IAAI;AACvB,YAAM,MAAM,EAAE,SAAS,KAAK,OAAO;AACnC,UAAI,QAAQ,UAAU,WAAW,QAAQ,UAAU,SAAU;AAC7D,YAAM,IAAI,EAAE,UAAU,KAAK,QAAQ,IAAI;AACvC,cAAQ,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC;AAC7B,QAAE,UAAU,KAAK,QAAQ,MAAM,IAAI,CAAC,KAAK,OAAO,IAAI;AAAA,IACtD;AACA,QAAI;AACF,aAAQ,MAAM,YAA2C,OAAO,QAAQ,GAAG,OAAO;AAAA,IACpF,UAAE;AACA,YAAM,QAAQ,KAAK;AACnB,iBAAW,CAAC,IAAI,CAAC,KAAK,QAAS,OAAM,UAAU,IAAI,GAAG,IAAI;AAAA,IAC5D;AAAA,EACF;AACA,UAAQ,aAAa,CAACC,UAAiB;AACrC,UAAM,IAAI,WAAWA,KAAI;AAAA,EAC3B;AAEA,MAAI,SAAS;AACb,QAAM,MAAM,CAAC,UAAgC,UAA4C;AACvF,UAAM,SAAS,SAAS,QAAQ;AAChC,QAAI,kBAAkB,YAAY,OAAQ,MAAK,IAAI,KAAK,MAAM;AAC9D,UAAM,KAAK,SAAS,QAAQ,KAAK;AACjC,QAAI,OAAO,OAAO,YAAY;AAC5B,UAAI,UAAU,cAAe,QAAO;AACpC,YAAM,IAAI,YAAY,UAAU,iCAAiC,KAAK,EAAE;AAAA,IAC1E;AACA,QAAI;AACF,SAAG;AACH,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,UAAI,eAAe,cAAc,EAAE,iBAAiB,MAAO,QAAO,IAAI;AACtE,YAAM;AAAA,IACR;AAAA,EACF;AACA,QAAM,OAAe;AAAA,IACnB,SAAS,EAAE,wBAAwB,QAAQ;AAAA,IAC3C,YAAY;AAAA,IACZ,MAAM,CAAC,WAAW;AAChB,UAAI,EAAE,kBAAkB,YAAY,QAAS,OAAM,IAAI,YAAY,UAAU,WAAW;AACxF,WAAK,IAAI,KAAK,MAAM;AAAA,IACtB;AAAA,IACA,OAAO,CAAC,aAAa,IAAI,UAAU,QAAQ;AAAA,IAC3C,YAAY,CAAC,aAAa,KAAK,IAAI,UAAU,aAAa;AAAA,IAC1D,OAAO,MAAM;AACX,UAAI,OAAQ;AACZ,eAAS;AACT,WAAK,KAAK,OAAO,IAAI;AACrB,iBAAW,KAAK,MAAM,OAAO,EAAG,aAAY,CAAC;AAC7C,YAAM,MAAM;AACZ,YAAM,MAAM;AAAA,IACd;AAAA,EACF;AACA,OAAK,KAAK,IAAI,IAAI;AAClB,SAAO;AACT;AAEO,SAAS,QACd,GAC+D;AAC/D,QAAM,OAAmB,EAAE,GAAG,GAAG,MAAM,oBAAI,IAAI,GAAG,OAAO,SAAS,EAAE,KAAK,EAAE;AAC3E,SAAO;AAAA,IACL,QAAQ,CAAC,YAAY,aAAa,MAAM,OAAO;AAAA,IAC/C,UAAU,MAAM;AACd,iBAAW,QAAQ,CAAC,GAAG,KAAK,IAAI,EAAG,MAAK,MAAM;AAAA,IAChD;AAAA,EACF;AACF;AArUA,IA2Ba,YA+CP,UACA,SACA,QACA,OAIA,OAmBA,SAEA;AAtGN;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAoBO,IAAM,aAAN,cAAyB,MAAM;AAAA,MAC3B;AAAA,MACT,YAAYA,OAAc;AACxB,cAAM,aAAaA,KAAI,EAAE;AACzB,aAAK,OAAOA;AAAA,MACd;AAAA,IACF;AAyCA,IAAM,WAAW;AACjB,IAAM,UAAU;AAChB,IAAM,SAAS;AACf,IAAM,QAAQ;AAId,IAAM,QAAuD;AAAA,MAC3D,WAAW,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MACrB,mBAAmB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MAC7B,yBAAyB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MACnC,uBAAuB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MACjC,uBAAuB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MACjC,kBAAkB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MAC5B,eAAe,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MACzB,cAAc,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MACxB,aAAa;AAAA,QACX,CAAC,GAAG,GAAG,CAAC;AAAA,QACR,CAAC,GAAG,GAAG,CAAC;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT,CAAC,GAAG,GAAG,CAAC;AAAA,QACR,CAAC,GAAG,GAAG,CAAC;AAAA,MACV;AAAA,IACF;AAEA,IAAM,UAA4C,EAAE,WAAW,GAAG,aAAa,EAAE;AAEjF,IAAM,UAAU,oBAAI,IAAI,CAAC,YAAY,eAAe,eAAe,WAAW,CAAC;AAAA;AAAA;;;ACvFxE,SAAS,aAAa,MAAc,SAAqC;AAC9E,SAAO,EAAE,IAAI,cAAuB,MAAM,GAAI,SAAS,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC,EAAG;AAC/F;AAEO,SAAS,UACd,SACA,UACmC;AACnC,QAAM,SAAS,OAAO,YAAY,aAAa,UAAU;AACzD,MAAI,OAAO,WAAW,WAAY,OAAM,IAAI,UAAU,wBAAwB;AAC9E,SAAO,CAAC,OAAO,YAAY,YAAY,YAAY,OAAO,UAAU,CAAC,GAAG,MAAM;AAChF;AAEO,SAASC,QACd,QACA,IACA,QACW;AACX,QAAM,OAAO,IAAI,gBAAgB;AACjC,MAAI,SAAS;AACb,QAAM,QAAQ,MAAM;AAClB,QAAI,OAAQ;AACZ,aAAS;AACT,SAAK,MAAM;AACX,WAAO,KAAK,EAAE,IAAI,eAAe,GAAG,CAAC,EAAE,MAAM,MAAM,MAAS;AAAA,EAC9D;AACA,QAAMC,QAAO,YAAY;AACvB,WAAO,CAAC,QAAQ;AACd,UAAI;AACJ,UAAI;AACF,cAAM,IAAI,MAAM,OAAO,SAAS,EAAE,IAAI,cAAc,GAAG,GAAG,KAAK,MAAM;AACrE,gBAAQ,EAAE,MAAM,EAAE,SAAS,SAAU,EAAE,OAAyB,CAAC;AAAA,MACnE,QAAQ;AACN,iBAAS;AACT;AAAA,MACF;AACA,iBAAW,QAAQ,OAAO;AACxB,YAAI,OAAQ;AACZ,YAAI,WAAW,KAAM,UAAS;AAC9B,eAAO,IAAI;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACA,OAAKA,MAAK;AACV,SAAO,EAAE,MAAM;AACjB;AA5DA;AAAA;AAAA;AAAA;AAAA;;;AC6BA,SAASC,QAAO,KAAyB;AACvC,SAAO,IAAI,UAAU,oBAAoB,EAAE,OAAO,IAAI,CAAC;AACzD;AAEA,SAAS,UAAU,KAAuB;AACxC,MAAI,EAAE,eAAe,gBAAgB,IAAI,WAAW,OAAW,QAAO;AACtE,QAAM,SAAS,GAAG,IAAI,IAAI;AAC1B,QAAMC,WAAU,IAAI,OAAO,WAAW,MAAM,IAAI,IAAI,OAAO,MAAM,OAAO,MAAM,IAAI,IAAI;AACtF,SAAO,OAAO,OAAO,IAAI,MAAMA,QAAO,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC;AAC7D;AAEA,SAAS,UAAU,OAA6B;AAC9C,QAAM,MAAM,IAAI,IAAI,KAAK;AACzB,MAAI,IAAI,aAAa,QAAS,KAAI,WAAW;AAAA,WACpC,IAAI,aAAa,SAAU,KAAI,WAAW;AACnD,MAAI,IAAI,aAAa,SAAS,IAAI,aAAa,QAAQ;AACrD,UAAM,IAAI,YAAY,wBAAwB,IAAI,IAAI,EAAE;AAAA,EAC1D;AACA,MAAI,OAAO;AACX,SAAO,IAAI;AACb;AAEA,SAAS,UAAUC,OAAkC;AACnD,MAAIA,UAAS,OAAW,QAAO;AAC/B,MAAIA,UAAS,OAASA,SAAQ,OAAQA,SAAQ,KAAO,QAAOA;AAC5D,QAAM,IAAI,YAAY,UAAU,cAAcA,KAAI,EAAE;AACtD;AAEA,SAAS,YAAY,QAAoC;AACvD,MAAI,WAAW,OAAW,QAAO;AACjC,MAAI,IAAI,YAAY,EAAE,OAAO,MAAM,EAAE,SAAS,YAAY;AACxD,UAAM,IAAI,YAAY,UAAU,qBAAqB,UAAU,QAAQ;AAAA,EACzE;AACA,SAAO;AACT;AAIO,SAAS,YAAY,QAAkB;AAC5C,SAAO,OAAO,OAAqB,UAA8B,CAAC,MAA4B;AAC5F,UAAM,MAAM,UAAU,KAAK;AAC3B,UAAM,SAAS,QAAQ,UAAUC;AACjC,WAAO,eAAe;AACtB,UAAM,YACJ,OAAO,QAAQ,cAAc,WAAW,CAAC,QAAQ,SAAS,IAAK,QAAQ,aAAa,CAAC;AACvF,UAAM,SAAU,MAAM,OAAO,KAAK;AAAA,MAChC,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA,SAAS,CAAC,GAAG,IAAI,QAAQ,QAAQ,OAAO,CAAC;AAAA,IAC3C,CAAC;AACD,UAAM,OAAO,MAAM,OAAO,IAAI,EAAE,IAAI,aAAa,OAAO,CAAC;AACzD,QAAI;AACJ,QAAI;AACF,YAAM,IAAI,MAAM,OAAO,SAAS,EAAE,IAAI,gBAAgB,OAAO,GAAG,MAAM;AACtE,kBAAa,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO,CAAC,GAA4B;AAAA,IACjF,SAAS,KAAK;AACZ,YAAM,KAAK;AACX,YAAM,OAAO,UAAU,OAAO,SAASH,QAAO,UAAU,GAAG,CAAC;AAAA,IAC9D;AAEA,QAAI;AACJ,QAAI;AACJ,UAAM,SAAS,IAAI,QAA0B,CAACI,UAAS,WAAW;AAChE,eAASA;AACT,aAAO;AAAA,IACT,CAAC;AACD,WAAO,MAAM,MAAM,MAAS;AAC5B,UAAM,OAAO,IAAI,gBAAgB;AACjC,QAAI,QAAQ;AACZ,UAAM,UAAU,MAAY,SAAS,OAAO,MAAM;AAClD,UAAM,SAAS,MAAY;AACzB,cAAQ;AACR,aAAO,oBAAoB,SAAS,OAAO;AAC3C,WAAK,KAAK;AAAA,IACZ;AACA,UAAM,WAAW,CAAC,WAA0B;AAC1C,UAAI,KAAK,OAAO,QAAS;AACzB,WAAK,MAAM,MAAM;AACjB,WAAK,MAAM;AACX,aAAO;AAAA,IACT;AACA,WAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AACxD,QAAIC,WAAU;AACd,QAAI,WAAW;AACf,UAAM,UAAU,MAAY;AAC1B,UAAI,CAACA,YAAW,CAAC,YAAY,MAAO;AACpC,aAAO;AAAA,IACT;AACA,WACG,SAAS,EAAE,IAAI,eAAe,OAAO,GAAG,KAAK,MAAM,EACnD,KAAK,CAAC,MAAM;AACX,MAAAA,WAAU;AACV,aAAQ,EAA0C,IAAwB;AAC1E,cAAQ;AAAA,IACV,CAAC,EACA,MAAM,IAAI;AACb,UAAM,QAAQ,CAAC,MAAiC,CAAC,MAAY;AAC3D,WAAK,OAAO,IAAI;AAAA,QACd,IAAI;AAAA,QACJ;AAAA,QACA,MAAM,UAAU,IAAI,IAAI;AAAA,QACxB,QAAQ,YAAY,IAAI,MAAM;AAAA,MAChC,CAAC;AAAA,IACH;AAEA,UAAMC,YAAW,IAAI;AAAA,MACnB;AAAA,QACE,MAAM,KAAK,YAAY;AACrB,cAAI;AACJ,cAAI;AACF,gBAAI,MAAM,OAAO,SAAS,EAAE,IAAI,eAAe,OAAO,GAAG,KAAK,MAAM;AAAA,UACtE,SAAS,KAAK;AACZ,qBAAS,KAAK,OAAO,UAAU,KAAK,OAAO,SAASN,QAAO,GAAG,CAAC;AAC/D,kBAAM,KAAK,OAAO;AAAA,UACpB;AACA,eAAK,OAAO,eAAe;AAC3B,cAAI,EAAE,MAAM,EAAE,SAAS,SAAS;AAC9B,uBAAW,QAAQ,EAAE,KAAK;AAC1B;AAAA,UACF;AACA,gBAAM,QAAS,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO,CAAC,GAAyB;AAC9E,cAAI,SAAS,QAAW;AACtB,uBAAW,QAAQ,IAAI;AACvB;AAAA,UACF;AACA,qBAAW,MAAM;AACjB,qBAAW;AACX,kBAAQ;AAAA,QACV;AAAA,QACA,QAAQ,MAAM;AACZ,gBAAM;AACN,qBAAW;AACX,kBAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,EAAE,eAAe,EAAE;AAAA,IACrB;AAEA,UAAMO,YAAW,IAAI,eAAmC;AAAA,MACtD,MAAM,MAAM,OAAO,YAAY;AAC7B,aAAK,OAAO,eAAe;AAC3B,cAAM,OAAO,OAAO,SAAkC;AACpD,cAAIF,SAAS,OAAM,IAAI,YAAY,SAAS,yBAAyB;AACrE,iBAAQ,MAAM,OAAO,KAAK,EAAE,IAAI,eAAe,QAAQ,GAAG,KAAK,CAAC;AAAA,QAClE;AACA,YAAI,WAAW,MAAM,KAAK,OAAO,UAAU,WAAW,EAAE,MAAM,MAAM,IAAI,EAAE,MAAM,MAAM,CAAC;AACvF,eAAO,WAAW,aAAa;AAC7B,gBAAM,KAAK,EAAE;AACb,eAAK,OAAO,eAAe;AAC3B,qBAAW,OAAO,eAAe;AACjC,qBAAW,MAAM,KAAK,CAAC,CAAC;AAAA,QAC1B;AAAA,MACF;AAAA,MACA,OAAO,MAAM,MAAM;AAAA,MACnB,OAAO,MAAM,MAAM,EAAE,MAAM,KAAM,QAAQ,GAAG,CAAC;AAAA,IAC/C,CAAC;AAED,WAAO,EAAE,KAAK,UAAU,UAAAC,WAAU,UAAAC,WAAU,QAAQ,MAAM;AAAA,EAC5D;AACF;AA7LA,IAyBM,aACA,YACAJ,QAsCA;AAjEN;AAAA;AAAA;AAAA;AAyBA,IAAM,cAAc,OAAO;AAC3B,IAAM,aAAa;AACnB,IAAMA,SAAQ,IAAI,gBAAgB,EAAE;AAsCpC,IAAM,OAAO,CAAC,OAAe,IAAI,QAAQ,CAACC,aAAY,WAAWA,UAAS,EAAE,CAAC;AAAA;AAAA;;;ACqI7E,SAAS,OAAO,MAA+C;AAC7D,QAAM,MAAM,CAAC,GAAI,QAAQ,CAAC,CAAE;AAC5B,MAAI,CAAC,IAAI,MAAM,CAAC,OAAO,OAAO,UAAU,EAAE,KAAK,MAAM,CAAC;AACpD,UAAM,IAAI,YAAY,UAAU,UAAU,kDAAkD;AAC9F,SAAO;AACT;AAEA,eAAe,SACb,QACA,MACA,QACqB;AACrB,UAAQ,eAAe;AACvB,QAAMI,QAAO,OAAO,KAAK,IAAI;AAC7B,QAAMC,SAAQ,OAAO,KAAK,KAAK;AAC/B,QAAMC,aAAY,KAAK,aAAa;AACpC,MAAI,CAAC,OAAO,SAASA,UAAS;AAC5B,UAAM,IAAI,YAAY,UAAU,UAAU,kCAAkC;AAC9E,QAAM,IAAI,MAAM,OAAO;AAAA,IACrB,EAAE,IAAI,aAAa,MAAAF,OAAM,OAAAC,QAAO,WAAW,KAAK,IAAI,IAAI,KAAK,MAAMC,UAAS,CAAC,EAAE;AAAA,IAC/E;AAAA,EACF;AACA,QAAM,MAAO,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO,CAAC;AACnD,SAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,OAAO,IAAI,SAAS,CAAC,EAAE;AACxD;AAyBA,SAAS,OAAO,WAAiC,UAAuC;AACtF,QAAM,MAAM,CAAC,OAAgB,YAA+B,SAAS,OAAO,OAAO;AACnF,YAAU,IAAI,GAAG;AACjB,SAAO,MAAM,KAAK,UAAU,OAAO,GAAG;AACxC;AAuCO,SAAS,WAAWC,SAAiB,UAAoD;AAC9F,QAAM,KAAKA;AACX,SAAO;AAAA,IACL,KAAK,OAAO,IAAI,QAAQ,WAAW,GAAG,MAAM,SAAS;AAAA,IACrD,MAAM,OAAO,IAAI,SAAS,WAAW,GAAG,OAAQ,SAAS,QAAQ;AAAA,EACnE;AACF;AAEO,SAAS,aAAa,QAA0B;AACrD,MAAI,OAAO,WAAW,UAAU;AAC9B,QAAI,OAAO,UAAU,MAAM,KAAK,UAAU,KAAK,UAAU,GAAI,QAAO;AACpE,UAAM,IAAI,YAAY,UAAU,UAAU,MAAM,EAAE;AAAA,EACpD;AACA,QAAMC,QAAO,OAAO,MAAM,CAAC;AAC3B,MAAI,CAAC,OAAO,WAAW,KAAK,KAAK,CAAC,OAAO,OAAO,KAAKA,KAAI,GAAG;AAC1D,UAAM,IAAI,YAAY,UAAU,UAAU,MAAM,EAAE;AAAA,EACpD;AACA,SAAQ,IAA+BA,KAAI;AAC7C;AAEO,SAAS,YAAY,KAAa,MAAsB;AAC7D,QAAM,QAAkB,CAAC;AACzB,aAAW,SAAS,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,GAAG,GAAG;AAC9E,QAAI,SAAS,MAAM,SAAS,IAAK;AACjC,QAAI,SAAS,KAAM,OAAM,IAAI;AAAA,QACxB,OAAM,KAAK,IAAI;AAAA,EACtB;AACA,SAAO,IAAI,MAAM,KAAK,GAAG,CAAC;AAC5B;AAgBA,SAAS,OAAO,GAAsC;AACpD,SAAO,CAAC,KAAK,SAAS,cAAc;AAClC,UAAM,MAAM,WAAW,IAAI,IAAI,aAAa,MAAM;AAClD,UAAM,OAAO,QAAQ,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG;AAChE,QAAI,CAAC,QAAQ,EAAE,OAAO,YAAY,GAAG,MAAM,aAAa;AACtD,QAAE,WAAW,KAAK,EAAE,IAAI,aAAa,KAAK,IAAI,CAAC;AAC/C;AAAA,IACF;AACA,UAAM,SAAS,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,IAAI;AACnD,UAAM,IAAI,EAAE,KAAK,EAAE,IAAI,kBAAkB,KAAK,GAAG,QAAQ,OAAO,KAAK,CAAC;AACtE,QAAI,CAAC,EAAE,GAAI,OAAM,IAAI,YAAY,EAAE,OAAO,MAAM;AAChD,QAAI,EAAE,SAAS,OAAQ;AACvB,eAAW,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,MAAM,KAAK;AAAA,MACtD,IAAI;AAAA,MACJ;AAAA,MACA,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AACF;AAEA,SAAS,aAAa,QAAsB,MAAc,KAAsB;AAC9E,MAAI,QAAQ,QAAQ,QAAQ,EAAG,QAAO;AACtC,MAAI,MAAM,KAAK,QAAQ,GAAI,QAAO;AAClC,SAAO,OAAO,KAAK,EAAE,IAAI,gBAAgB,KAAK,EAAE,CAAC,MAAM,CAAC;AAC1D;AAEA,SAAS,OAAO,QAAkB,MAAuC,KAAa;AACpF,QAAM,SAAS,oBAAI,IAAkB;AACrC,QAAM,UAAU,OACd,IACA,MACA,GACA,GACA,WACkB;AAClB,WAAO,EAAE,KAAK,KAAK,QAAQ;AACzB,YAAM,OAAO,KAAK,SAAS,EAAE,IAAI,EAAE,KAAK,MAAM;AAC9C,QAAE,MAAM,KAAK;AACb,UAAI;AACF,UAAE,MAAM,SACJ,MAAM,SAAS,QAAQ,IAAI,MAAM,MAAM,IACvC;AAAA,UACE,MAAM,OAAO,SAAS,EAAE,IAAI,YAAY,IAAI,KAAK,GAAG,QAAW,CAAC,OAAO;AACrE,gBAAI,EAAE,OAAO,OAAW,QAAO,IAAI,EAAE,EAAE;AACvC,cAAE,KAAK;AAAA,UACT,CAAC;AAAA,UACD,KAAK;AAAA,QACP;AACJ,YAAI,EAAE,OAAO,OAAW,QAAO,IAAI,EAAE,EAAE;AACvC,UAAE,KAAK;AAAA,MACT,SAAS,KAAK;AACZ,YAAI,WAAW,KAAK,CAAC,EAAG,OAAM,OAAO,KAAK,EAAE,IAAI,aAAa,KAAK,KAAK,IAAI,KAAK,CAAC;AACjF,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,WAAW,OAAO,IAAY,MAAkB,WAAwC;AAC5F,UAAM,IAAkB,EAAE,IAAI,MAAM,IAAI,GAAG,KAAK,EAAE;AAClD,QAAI,CAAC,OAAQ,QAAO,IAAI,CAAC;AACzB,QAAI;AACF,YAAM,IAAI,MAAM,KAAK,EAAE;AACvB,UAAI,YAAY,CAAC,EAAG;AACpB,YAAM,QAAQ,IAAI,MAAM,GAAG,GAAG,MAAM;AAAA,IACtC,UAAE;AACA,aAAO,OAAO,CAAC;AAAA,IACjB;AAAA,EACF;AAEA,QAAM,YAAY,OAAO,IAAY,SAAsC;AACzE,UAAM,IAAI,MAAM,KAAK,EAAE;AACvB,QAAI,YAAY,CAAC,EAAG,QAAO,KAAK;AAChC,UAAM,OAAO,KAAK,SAAS,GAAG,MAAM;AACpC,UAAM,IAAI,MAAM,OAAO,IAAI,EAAE,IAAI,YAAY,IAAI,MAAM,UAAU,KAAK,CAAC;AACvE,QAAI,EAAE,GAAI,QAAO,QAAQ,GAAG,KAAK,MAAM;AACvC,QAAI,WAAW,UAAU,GAAG,UAAU,GAAG,CAAC;AACxC,YAAM,OAAO,KAAK,EAAE,IAAI,aAAa,KAAK,KAAK,IAAI,KAAK,CAAC;AAC3D,UAAM,UAAU,GAAG,UAAU;AAAA,EAC/B;AACA,SAAO,EAAE,QAAQ,UAAU,UAAU;AACvC;AAEA,SAASC,UAASL,OAAuE;AACvF,SAAO,IAAI;AAAA,IACT;AAAA,MACE,MAAM,KAAK,YAAY;AACrB,cAAM,QAAQ,MAAMA,MAAK,CAAC;AAC1B,YAAI,MAAM,WAAW,EAAG,YAAW,MAAM;AAAA,YACpC,YAAW,QAAQ,KAAK;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,EAAE,eAAe,EAAE;AAAA,EACrB;AACF;AAEA,eAAe,gBAAgB,QAAkB,KAA0C;AACzF,MAAI;AACF,UAAMM,YAAW,MAAM;AAAA,MACrB;AAAA,QACE,MAAM,MAAM,GAAG;AACb,iBAAO,gBAAgB,MAAM,OAAO,KAAK,EAAE,IAAI,SAAS,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC;AAAA,QAC1E;AAAA,QACA,MAAM,SAAS,GAAG;AAChB,iBAAO,OAAO,MAAM,OAAO,KAAK,EAAE,IAAI,YAAY,MAAM,EAAE,CAAC,CAAC;AAAA,QAC9D;AAAA,MACF;AAAA,MACA;AAAA,IACF;AACA,WAAOA,cAAa,OAAO,MAAMA,SAAQ,IAAIA,YAAW;AAAA,EAC1D,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAe,QACb,QACA,KACA,IACA,QAC2B;AAC3B,MAAI;AACF,UAAM,OAAO,KAAK,EAAE,IAAI,iBAAiB,MAAM,IAAI,CAAC;AACpD,UAAM,IAAI,gBAAgB,MAAM,OAAO,KAAK,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC;AAC9D,QAAI,CAAC,EAAG,OAAM,IAAI,YAAY,OAAO,EAAE;AACvC,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,QAAI,EAAE,eAAe,gBAAgB,IAAI,SAAS,SAAU,OAAM;AAClE,UAAM,UAAU,MAAM,OAAO,GAAG;AAChC,QAAI,CAAC,QAAS,OAAM;AACpB,WAAO,SAAS,QAAQ,QAAQ,SAAS,OAAO,MAAM,CAAC;AAAA,EACzD;AACF;AASA,eAAe,SACb,QACA,KACA,SACA,IACiB;AACjB,UAAQ,QAAQ,eAAe;AAC/B,QAAM,MAAM,EAAE,GAAG,YAAY,KAAK,EAAE,GAAG,SAAS,QAAQ,MAAM,CAAC,GAAG,MAAM,KAAK;AAC7E,QAAM,IAAI,MAAM,OAAO,SAAS,KAAK,QAAQ,MAAM;AACnD,QAAM,KAAM,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO;AACjD,KAAG,MAAM,IAAI,IAAI,EAAE,MAAM,SAAS,CAAC;AACnC,MAAI,OAAO;AACX,QAAM,OAAO,MAAY;AACvB,QAAI,CAAC,KAAM,OAAM,IAAI,YAAY,SAAS,GAAG;AAAA,EAC/C;AACA,QAAM,WAAW,CAAC,UAAkB,SAAuB;AACzD,SAAK;AACL,QAAI,aAAa,EAAG,OAAM,IAAI,YAAY,UAAU,IAAI;AAAA,EAC1D;AACA,KAAG,QAAQ,IAAI,IAAI,MAAM;AACvB,WAAO;AAAA,EACT,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,MAAM,OAAO;AACX,WAAK;AACL,aAAO;AAAA,IACT;AAAA,IACA,MAAM,KAAK,UAAU,QAAQ;AAC3B,eAAS,UAAU,MAAM;AACzB,aAAO,GAAG,KAAK,IAAI,MAAM;AAAA,IAC3B;AAAA,IACA,MAAM,MAAM,UAAU,MAAM;AAC1B,eAAS,UAAU,OAAO;AAC1B,YAAM,GAAG,MAAM,IAAI,IAAI;AACvB,aAAO,KAAK;AAAA,IACd;AAAA,IACA,MAAM,WAAW;AACf,WAAK;AACL,YAAM,IAAI,YAAY,UAAU,UAAU;AAAA,IAC5C;AAAA,IACA,MAAM,YAAY,KAAK;AAAA,IACvB,MAAM,QAAQ;AACZ,UAAI,CAAC,KAAM;AACX,aAAO;AACP,SAAG,MAAM,OAAO,EAAE;AAClB,SAAG,QAAQ,OAAO,EAAE;AACpB,YAAM,OAAO,IAAI,EAAE,IAAI,YAAY,GAAG,CAAC;AAAA,IACzC;AAAA,EACF;AACF;AAEA,eAAe,QACb,QACA,KACA,SACA,QACA,IACA,OACiB;AACjB,QAAM,EAAE,OAAO,QAAQ,IAAI;AAC3B,QAAM,WAAW,MAAM,OAAO,YAAY,OAAO,IAAI,UAAU,QAAQ,GAAG,EAAE,MAAM,MAAM;AACxF,YAAU,KAAK,SAAS,QAAQ;AAChC,QAAM,UAAU,UAAU,YAAa,SAAS,UAAU;AAC1D,MAAI,WAAW,CAAC,YAAY,OAAO,EAAG,OAAM,IAAI,YAAY,SAAS,GAAG;AACxE,MAAI,UAAU,UAAU,CAAC,YAAY,OAAO,EAAG,QAAO,SAAS,QAAQ,KAAK,SAAS,EAAE;AACvF,QAAM,KAAM,MAAM,OAAO,KAAK,YAAY,KAAK,OAAO,CAAC;AACvD,MAAI;AACF,UAAM,OAAO,KAAK,EAAE,IAAI,eAAe,GAAG,CAAC;AAAA,EAC7C,SAAS,KAAK;AACZ,UAAM,OAAO,IAAI,EAAE,IAAI,YAAY,GAAG,CAAC;AACvC,UAAM;AAAA,EACR;AACA,QAAM,IAAI,IAAI,EAAE,MAAM,OAAO,CAAC;AAC9B,QAAM,SAAS,WAAW,QAAQ,IAAI,KAAK,QAAQ,WAAW,MAAM,MAAM;AACxE,UAAM,OAAO,EAAE;AACf,YAAQ,OAAO,EAAE;AAAA,EACnB,CAAC;AACD,UAAQ,IAAI,IAAI,OAAO,UAAU;AACjC,SAAO,OAAO;AAChB;AAEA,SAAS,UAAU,YAAoD;AACrE,SAAO,CAAC,WAAW;AACjB,QAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,MAAM,QAAQ,MAAM,GAAG;AAC1E,YAAM,IAAI,YAAY,UAAU,SAAS;AAAA,IAC3C;AACA,WAAO,WAAW,KAAK,EAAE,IAAI,gBAAgB,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;AAAA,EACtE;AACF;AAEA,SAAS,gBAAgB,QAAkB,YAA0B,QAAoB;AACvF,QAAM,MAAM,QAAQ,YAAY,MAAM;AACtC,QAAM,QAAsC,CAAC,MAAM,SAAS,aAAa;AACvE,UAAM,CAAC,OAAO,MAAM,IAAI,UAAU,SAAS,QAAQ;AACnD,UAAM,KAAK,WAAW,KAAK,aAAa,OAAO,QAAQ,IAAI,GAAG,KAAK,CAAC;AACpE,WAAOC,QAAO,QAAQ,IAAI,MAAM;AAAA,EAClC;AACA,SAAO,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,IAAI,IAAI,MAAM,EAAE;AAC5C;AAEA,SAAS,aACP,QACA,MACA,QACA;AACA,QAAM,UAAU,oBAAI,IAAkC;AACtD,QAAMP,QAAO,OAAO,IAAY,MAAM,OAAO,WAA8C;AACzF,IAAAQ,OAAM,KAAK,MAAM;AACjB,UAAM,WAAW,WAAW,MAAM,KAAK,EAAE,GAAG,KAAK,MAAM;AACvD,QAAI,SAAU,QAAO;AACrB,UAAM,OAAO,IAAI,gBAAgB;AACjC,UAAM,QAAQ,QAAQ,IAAI,EAAE,KAAK,oBAAI,IAAI;AACzC,YAAQ,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC;AAC/B,QAAI;AACF,YAAM,IAAI,KAAK,IAAI,KAAK,MAAM;AAC9B,UAAI,OAAQ,QAAO,MAAM,SAAS,QAAQ,IAAI,GAAG,YAAY,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;AACvF,YAAM,IAAI,MAAM,OAAO,SAAS,EAAE,IAAI,WAAW,IAAI,KAAK,EAAE,GAAG,KAAK,MAAM;AAC1E,aAAO,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,QAAQ,IAAI,WAAW,CAAC;AAAA,IAChE,UAAE;AACA,YAAM,OAAO,IAAI;AACjB,UAAI,MAAM,SAAS,KAAK,QAAQ,IAAI,EAAE,MAAM,MAAO,SAAQ,OAAO,EAAE;AAAA,IACtE;AAAA,EACF;AACA,QAAM,UAAU,CAAC,OAAe;AAC9B,eAAW,QAAQ,QAAQ,IAAI,EAAE,KAAK,CAAC,EAAG,MAAK,MAAM,IAAI,YAAY,SAAS,MAAM,CAAC;AACrF,YAAQ,OAAO,EAAE;AAAA,EACnB;AACA,SAAO,EAAE,MAAAR,OAAM,QAAQ;AACzB;AAKA,SAASS,SACP,SACA,UACA,WACAC,SACA;AACA,SAAO,CAAC,IAAY,MAA2B,YAA8C;AAC3F,UAAMC,UAASD,UAAS;AACxB,QAAIC,YAAW,OAAW,QAAO,QAAQ,OAAO,IAAI,OAAOA,OAAM,CAAC;AAClE,UAAM,QAAQ,OAAO,SAAS,WAAWC,SAAQ,OAAO,IAAI,IAAI;AAChE,QAAI;AACJ,UAAMC,WAAU,IAAI,QAAc,CAACC,aAAa,SAASA,QAAQ;AACjE,YAAQ,IAAID,QAAO;AACnB,YAAQ,YAAY;AAClB,UAAI;AACF,YAAI,SAAS,aAAa,KAAM,QAAO,MAAM,UAAU,IAAI,KAAK;AAChE,cAAM,SAAS,IAAI,KAAK;AACxB,eAAO,MAAM;AAAA,MACf,UAAE;AACA,gBAAQ,OAAOA,QAAO;AACtB,eAAO;AAAA,MACT;AAAA,IACF,GAAG;AAAA,EACL;AACF;AAEA,SAAS,OACP,MACA,MACA,YACqB;AACrB,MAAI,CAAC,QAAQ,SAAS,OAAQ,QAAO;AACrC,QAAM,MAAM,MAAM,WAAW,KAAK,EAAE,IAAI,YAAY,CAAC;AACrD,SAAO,IAAI,QAAQ,KAAK,KAAK,KAAK,MAAM,KAAK,IAAI;AACnD;AAIA,SAAS,SAAS,SAAiD;AACjE,QAAM,MAAM,UAAU,KAAK,CAAC;AAC5B,QAAM,MAAgB,CAAC;AACvB,aAAWE,UAAS,eAAe;AACjC,UAAMC,SAAQ,IAAID,MAAK;AACvB,QAAI,OAAOC,WAAU,YAAY,OAAO,SAASA,MAAK,EAAG,KAAID,MAAK,IAAIC;AAAA,EACxE;AACA,SAAO;AACT;AAEA,SAAS,WAAW,GAGlB;AACA,SAAO;AAAA,IACL,QAAQ,MAAM,SAAS,EAAE,MAAM;AAAA,IAC/B,GAAI,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC;AAAA,EAC7D;AACF;AAEO,SAAS,cAAc,GAAmC;AAC/D,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,QAAQ,oBAAI,IAAoB;AACtC,QAAM,UAAU,oBAAI,IAAwB;AAC5C,QAAM,UAAU,oBAAI,IAAsB;AAC1C,QAAM,SAAS,EAAE,UAAU;AAC3B,MAAIC;AACJ,QAAMH,WAAU,CAAC,SAAiB,YAAY,OAAO,EAAE,KAAKG,OAAM,IAAI,GAAG,IAAI;AAC7E,QAAM,SAAS,CAAC,QAAgB,gBAAgB,QAAQ,GAAG;AAC3D,MAAI;AACJ,QAAM,OAAO,CAACC,QAAO,MAAa;AAChC,gBAAYA;AACZ,MAAE,KAAKA,KAAI;AACX,UAAM,IAAI,OAAOA,KAAI;AAAA,EACvB;AACA,QAAM,SAAS,MAAY;AACzB,QAAI,YAAY,OAAW,OAAM,IAAI,OAAO,OAAO;AACnD,QAAI,OAAO,QAAS,OAAM,IAAI,OAAO,CAAC;AAAA,EACxC;AACA,QAAM,OAAO,OAAO,OAAgC;AAClD,UAAM,QAAQ,MAAM,IAAI,EAAE;AAC1B,QAAI,MAAO,QAAO;AAClB,UAAM,MAAO,MAAM,OAAO,KAAK,EAAE,IAAI,WAAW,GAAG,CAAC;AACpD,UAAM,IAAI,IAAI,GAAG;AACjB,WAAO;AAAA,EACT;AACA,QAAM,EAAE,MAAAlB,OAAM,QAAQ,IAAI,aAAa,QAAQ,MAAM,MAAM;AAE3D,QAAM,EAAE,QAAQ,UAAU,UAAU,IAAI,OAAO,QAAQ,MAAM,EAAE,GAAG;AAElE,QAAMC,SAAQQ,SAAQ,SAAS,UAAU,WAAW,EAAE,MAAM;AAE5D,QAAMU,YAAW,CAAC,OAChB,IAAI,eAA2B;AAAA,IAC7B,OAAO,OAAO,UAAU;AACtB,YAAMlB,OAAM,IAAI,KAAK;AAAA,IACvB;AAAA,EACF,CAAC;AAEH,QAAM,SAAS,OAAO,IAAsB,SAA4C;AACtF,UAAM,MAAMa,SAAQ,IAAI;AACxB,QAAI,MAAM,GAAG,EAAG,QAAO,SAAS,QAAQ,QAAQ,KAAK,OAAO,MAAM,CAAC;AACnE,WAAO,QAAQ,QAAQ,KAAK,IAAI,MAAM;AAAA,EACxC;AAEA,QAAM,QAAQ,EAAE,OAAO,SAAS,MAAAd,OAAM,OAAO,SAAS;AAEtD,QAAM,OAAO,OACX,MACA,UAAyB,CAAC,GAC1B,QAAQ,UACY;AACpB,UAAM,MAAMc,SAAQ,IAAI;AACxB,QAAI,MAAM,GAAG,EAAG,QAAO,QAAQ,QAAQ,KAAK,SAAS,KAAK;AAC1D,QAAI;AACF,aAAO,MAAM,QAAQ,QAAQ,KAAK,SAAS,QAAQ,OAAO,KAAK;AAAA,IACjE,SAAS,KAAK;AACZ,UAAI,EAAE,eAAe,gBAAgB,IAAI,SAAS,SAAU,OAAM;AAClE,YAAM,UAAU,MAAM,OAAO,GAAG;AAChC,UAAI,CAAC,QAAS,OAAM;AACpB,aAAO,QAAQ,QAAQ,SAAS,SAAS,KAAK;AAAA,IAChD;AAAA,EACF;AAEA,QAAM,KAAK,YAAY,QAAQ,QAAQA,UAAS,QAAQ,MAAM,MAAM,GAAG,QAAQ;AAAA,IAC7E,SAAAA;AAAA,IACA,KAAK,EAAE;AAAA,EACT,CAAC;AACD,QAAM,OAAO,EAAE,QAAQ,OAAO,MAAS;AACvC,MAAI,EAAE,QAAQ,EAAE,SAAS,OAAQ,QAAO,WAAW,EAAE;AACrD,QAAM,aAAa,IAAI,aAAa,MAAM,QAAQ,MAAM;AACxD,EAAAG,QAAO,OAAO,EAAE,MAAM,MAAM,UAAU;AACtC,QAAM,WAAW,OAAO,QAAQ,UAAU;AAC1C,QAAM,SAAS,EAAE,KAAK,EAAE,KAAK,SAAAH,UAAS,QAAQ,OAAO,SAAS,QAAQ;AACtE,QAAM,OAAO,QAAQ,EAAE,MAAM,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,SAAAA,UAAS,IAAI,EAAE,IAAI,OAAO,EAAE,MAAM,CAAC;AACxF,QAAM,OAAsB;AAAA,IAC1B,QAAQ;AAAA,IACR,KAAK,SAAS;AAAA,IACd,GAAG,gBAAgB,QAAQ,YAAY,MAAM;AAAA,IAC7C,KAAK,CAAC,YACJ,QAAQ,YAAY,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,SAAAA,UAAS,QAAQ,aAAa,GAAG,OAAO;AAAA,IACxF,OAAO,CAAC,YAAY,UAAU,OAAO;AAAA,IACrC,MAAM,EAAE,QAAQ,KAAK,OAAO;AAAA,IAC5B,KAAK,EAAE,QAAQ,CAAC,YAAY,QAAQ,OAAO,OAAO,EAAE;AAAA,IACpD,MAAM,CAACH,UAAS,MAAa;AAC3B,kBAAYA,UAAS;AACrB,WAAK,SAAS;AACd,aAAO,WAAW,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,MAAM,GAAG,OAAO;AAAA,IAChE;AAAA,IACA,MAAM,OAAO,EAAE,MAAM,EAAE,KAAK,QAAQ,YAAY,MAAM,QAAQ,OAAO,SAAS,MAAM,CAAC;AAAA,IACrF,MAAM,MAAM,WAAW,KAAK,EAAE,IAAI,YAAY,CAAC;AAAA,IAC/C,OAAO,CAAC,SAAS,WAAW,KAAK,aAAa,IAAI,CAAC;AAAA,IACnD,SAAS,UAAU,UAAU;AAAA,EAC/B;AAEA,QAAM,KAAK,EAAE,MAAAX,OAAM,MAAM,UAAU,OAAO,CAAC,OAAe,IAAI,MAAM,EAAE,EAAE;AACxE,QAAM,WAAW,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,QAAQ,aAAa;AAChE,QAAM,EAAE,WAAW,GAAG,SAAS,IAAI,SAAS,QAAQ,IAAI,UAAU,UAAU;AAC5E,QAAM,EAAE,MAAM,SAAS,GAAG,IAAI,IAAI,OAAO,QAAQ,IAAI,UAAU;AAE/D,QAAM,SAAS,EAAE,UAAU,EAAE,WAAW,oBAAI,IAAI,GAAG,WAAW,oBAAI,IAAI,EAAE;AACxE,QAAM,MAAwB;AAAA,IAC5B,QAAQ;AAAA,IACR,MAAM,EAAE;AAAA,IACR,KAAK,EAAE;AAAA,IACP,KAAK,EAAE;AAAA,IACP,MAAM,YAAY,WAAW,MAAM,OAAO,KAAK,EAAE,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;AAAA,IAC5E,KAAK,EAAE;AAAA,IACP,OAAOK,UAASL,KAAI;AAAA,IACpB,QAAQmB,UAAS,CAAC;AAAA,IAClB,QAAQA,UAAS,CAAC;AAAA,IAClB,MAAAnB;AAAA,IACA,OAAAC;AAAA,IACA,MAAM,MAAM,IAAI;AACd,cAAQ,IAAI,EAAE,IAAI;AAClB,cAAQ,OAAO,EAAE;AACjB,YAAM,OAAO,EAAE;AACf,cAAQ,EAAE;AACV,YAAM,OAAO,KAAK,EAAE,IAAI,YAAY,GAAG,CAAC;AAAA,IAC1C;AAAA,IACA,YAAY,YACT,MAAM,OAAO,KAAK,EAAE,IAAI,aAAa,QAAQ,QAAQ,MAAM,SAAS,CAAC;AAAA,IACxE,MAAM,YAAa,MAAM,OAAO,KAAK,EAAE,IAAI,UAAU,CAAC;AAAA,IACtD,QAAQ,CAAC,MAAM,YAAY,SAAS,QAAQ,MAAM,SAAS,MAAM;AAAA,IACjE,MAAM,SAAS,IAAI;AACjB,YAAM,OAAO,OAAO,MAAM,KAAK,EAAE,CAAC;AAClC,aAAO,EAAE,MAAM,KAAK,SAAS,OAAO,UAAU,SAAS,OAAO;AAAA,IAChE;AAAA,IACA,QAAQ,OAAO,OAAO,OAAO,MAAM,KAAK,EAAE,CAAC,MAAM;AAAA,IACjD,MAAM,cAAc,MAAM,QAAQ,EAAE,SAAAa,UAAS,KAAK,EAAE,IAAI,CAAC;AAAA,IACzD,SAAAA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,MACP,IAAI,OAAO,QAAQ,YAAY,OAAO,WAAW,aAAa,MAAM,GAAG,OAAO;AAAA,MAC9E,QAAQ,OAAO,WAAW,OAAO,WAAW,aAAa,MAAM,GAAG,QAAQ;AAAA,MAC1E,OAAO,OAAO,WAAW,OAAO,WAAW,aAAa,MAAM,GAAG,SAAS;AAAA,IAC5E;AAAA,IACA;AAAA,IACA,OAAO,QAAQ,MAAM;AAAA,IACrB,OAAO,OAAO,SAAU,MAAM,OAAO,KAAK,aAAa,IAAI,CAAC;AAAA,IAC5D,MAAM,OAAO,SACV,MAAM,OAAO,KAAK;AAAA,MACjB,IAAI;AAAA,MACJ,MAAM,CAAC,GAAG,IAAI;AAAA,MACd,KAAK,EAAE;AAAA,MACP,GAAI,EAAE,IAAI,SAAS,SAAY,EAAE,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;AAAA,IACzD,CAAC;AAAA,IACH,SAAS,OAAOM,UACb,MAAM,OAAO,KAAK,EAAE,GAAGA,OAAM,IAAI,eAAe,CAAC;AAAA,IACpD,GAAG;AAAA,IACH;AAAA,IACA,WAAW,YAAY,MAAM;AAAA,IAC7B,KAAK,SAAS;AAAA,IACd;AAAA,IACA,QAAQ,EAAE;AAAA,IACV,GAAG,WAAW,CAAC;AAAA,IACf,YAAY,CAAC,aAAa,OAAO,OAAO,WAAW,QAAQ;AAAA,IAC3D,sBAAsB,CAAC,aAAa,OAAO,OAAO,WAAW,QAAQ;AAAA,EACvE;AACA,QAAMC,SAAQ,YAA2B;AACvC,SAAK,SAAS;AACd,eAAS;AACP,YAAM,QAAQ,IAAI,CAAC,GAAG,OAAO,CAAC;AAC9B,YAAM,IAAI,QAAQ,CAACP,aAAY,WAAWA,UAAS,CAAC,CAAC;AACrD,UAAI,QAAQ,SAAS,EAAG;AAAA,IAC1B;AACA,UAAM,SAAS,QAAQ;AAAA,EACzB;AACA,SAAO,EAAE,KAAK,OAAAO,OAAM;AACtB;AASA,eAAe,QACb,QACA,KACA,SACA,OACiB;AACjB,QAAM,EAAE,IAAI,MAAM,GAAG,OAAO,IAAI,MAAM,SAAS,QAAQ,QAAQ,KAAK,OAAO,CAAC;AAC5E,QAAM,SAAS,MAAM;AACnB,UAAM,MAAM,OAAO,EAAE;AACrB,UAAM,QAAQ,OAAO,EAAE;AAAA,EACzB;AACA,MAAI,KAAM,OAAM,MAAM,IAAI,IAAI,EAAE,MAAM,OAAO,CAAC;AAC9C,QAAM,QAAQ,OAAO,MAAc;AACjC,WAAO;AACP,UAAM,OAAO,KAAK,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC;AAAA,EAC7C;AACA,QAAM,SAAS,OACX,WAAW,QAAQ,IAAI,KAAK,QAAQ,WAAW,MAAM,MAAM,IAC3D;AAAA,IACE;AAAA,IACA;AAAA,IACA,EAAE,MAAM,CAAC,GAAG,QAAQ,MAAM,KAAK,GAAG,GAAG,GAAG,OAAO,MAAM,OAAO,MAAM;AAAA,IAClE;AAAA,EACF;AACJ,QAAM,QAAQ,IAAI,IAAI,OAAO,UAAU;AACvC,SAAO,OAAO;AAChB;AAEA,SAAS,WACP,QACA,IACA,MACA,QACA,QAC0C;AAC1C,MAAI,OAAO;AACX,QAAM,OAAO,MAAY;AACvB,QAAI,CAAC,KAAM,OAAM,IAAI,YAAY,SAAS,IAAI;AAAA,EAChD;AACA,QAAM,QAAQ,OACZ,UACA,QACA,WACiC;AACjC,IAAAb,OAAM,UAAU,MAAM;AACtB,IAAAA,OAAM,QAAQ,MAAM;AACpB,UAAM,QAAsB,CAAC;AAC7B,QAAI,MAAM;AACV,OAAG;AACD,WAAK;AACL,YAAM,MAAM,KAAK,IAAI,SAAS,KAAK,SAAS;AAC5C,UAAI,OAAO,EAAG;AACd,YAAM,QAAQ,MAAM,OAAO,MAAM,EAAE,IAAI,YAAY,IAAI,QAAQ,WAAW,KAAK,IAAI,CAAC;AACpF,UAAI,MAAM,WAAW,EAAG;AACxB,UAAI,OAAQ,QAAO,KAAK,IAAI,OAAO,OAAO,KAAK,GAAG;AAAA,UAC7C,OAAM,KAAK,KAAK;AACrB,aAAO,MAAM;AAAA,IACf,SAAS,MAAM;AACf,WAAO,SAAS,MAAM,OAAO,OAAO,GAAG;AAAA,EACzC;AACA,QAAM,OAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA,MAAM,OAAO;AACX,WAAK;AACL,YAAM,IAAK,MAAM,OAAO,KAAK,EAAE,IAAI,eAAe,GAAG,CAAC;AACtD,aAAO,EAAE;AAAA,IACX;AAAA,IACA,MAAM,SAAS,UAAkB,MAAkB,SAAS,GAAG,SAAS,KAAK,SAAS,QAAQ;AAC5F,aAAQ,MAAM,MAAM,UAAU,QAAQ,WAAW,MAAM,QAAQ,MAAM,CAAC;AAAA,IACxE;AAAA,IACA,MAAM,KAAK,UAAkB,QAAgB;AAC3C,aAAQ,MAAM,MAAM,UAAU,MAAM;AAAA,IACtC;AAAA,IACA,MAAM,MAAM,UAAU,MAAM;AAC1B,MAAAA,OAAM,UAAU,OAAO;AACvB,UAAI,KAAK;AACT,SAAG;AACD,aAAK;AACL,YAAI,MAAM,KAAK,OAAQ;AACvB,cAAM,OAAO,KAAK,SAAS,IAAI,KAAK,MAAM;AAC1C,cAAM,IAAK,MAAM,OAAO,KAAK,UAAU,IAAI,QAAQ,WAAW,IAAI,IAAI,CAAC;AACvE,YAAI,EAAE,IAAI,GAAI,OAAM,IAAI,YAAY,OAAO,OAAO;AAClD,cAAM;AAAA,MACR,SAAS,KAAK,KAAK;AACnB,aAAO;AAAA,IACT;AAAA,IACA,MAAM,SAAS,MAAM;AACnB,WAAK;AACL,MAAAA,OAAM,MAAM,UAAU;AACtB,YAAM,OAAO,KAAK,EAAE,IAAI,aAAa,IAAI,KAAK,CAAC;AAAA,IACjD;AAAA,IACA,MAAM,OAAO;AACX,WAAK;AACL,YAAM,OAAO,KAAK,EAAE,IAAI,YAAY,GAAG,CAAC;AAAA,IAC1C;AAAA,IACA,MAAM,QAAQ;AACZ,WAAK;AACL,aAAO;AACP,aAAO;AACP,YAAM,OAAO,KAAK,EAAE,IAAI,YAAY,GAAG,CAAC;AAAA,IAC1C;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA,YAAY,MAAM;AAChB,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,eAAe,SACb,QACA,IACA,KACA,QACqB;AACrB,MAAI,OAAQ,QAAO,YAAY,QAAQ,IAAI,KAAK,MAAM;AACtD,QAAM,IAAI,MAAM,OAAO,SAAS,EAAE,IAAI,WAAW,IAAI,IAAI,CAAC;AAC1D,SAAO,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,QAAQ,IAAI,WAAW,CAAC;AAChE;AAEA,eAAe,YACb,QACA,IACA,KACA,QACqB;AACrB,aAAS;AACP,WAAO,eAAe;AACtB,UAAM,IAAI,MAAM,OAAO,IAAI,EAAE,IAAI,WAAW,IAAI,KAAK,UAAU,KAAK,CAAC;AACrE,QAAI,EAAE,GAAI,QAAO,EAAE,SAAS,UAAU,EAAE,QAAQ,IAAI,WAAW,CAAC;AAChE,QAAI,EAAE,UAAU,SAAU,OAAM,UAAU,GAAG,SAAS;AACtD,UAAM,OAAO,SAAS,EAAE,IAAI,aAAa,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,WAAW,GAAG,GAAG,MAAM;AAAA,EACzF;AACF;AAEA,eAAe,SACb,QACA,IACA,MACA,QACiB;AACjB,aAAS;AACP,WAAO,eAAe;AACtB,UAAM,IAAI,MAAM,OAAO,IAAI,EAAE,IAAI,YAAY,IAAI,MAAM,UAAU,KAAK,CAAC;AACvE,QAAI,EAAE,GAAI,QAAO,QAAQ,GAAG,KAAK,MAAM;AACvC,QAAI,EAAE,UAAU,SAAU,OAAM,UAAU,GAAG,UAAU;AACvD,UAAM,OAAO,SAAS,EAAE,IAAI,aAAa,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,GAAG,WAAW,GAAG,GAAG,MAAM;AAAA,EACzF;AACF;AAEA,SAAS,QACP,QACAM,UACA,QACA,MACA,QACwB;AACxB,SAAO;AAAA,IACL,MAAM,CAAC,SAAS,OAAO,QAAQ,IAAI;AAAA,IACnC,OAAO,CAAC,SAAS,OAAO,SAAS,IAAI;AAAA,IACrC,MAAM,OAAO,MAAM;AACjB,YAAM,MAAMA,SAAQ,IAAI;AACxB,UAAI,MAAM,GAAG,EAAG,QAAO,SAAS,QAAQ,UAAU,GAAG,CAAC;AACtD,UAAK,MAAM,OAAO,KAAK,EAAE,IAAI,UAAU,MAAM,IAAI,CAAC,MAAO,KAAM,QAAO;AACtE,YAAM,UAAU,MAAM,OAAO,GAAG;AAChC,aAAO,UAAU,SAAS,QAAQ,UAAU,OAAO,CAAC,IAAI;AAAA,IAC1D;AAAA,IACA,MAAM,QAAQ,MAAM;AAClB,YAAM,MAAMA,SAAQ,IAAI;AACxB,UAAI,MAAM,GAAG,EAAG,QAAO,SAAS,QAAQ,WAAW,GAAG,CAAC;AACvD,aAAQ,MAAM,OAAO,KAAK,EAAE,IAAI,WAAW,MAAM,IAAI,CAAC;AAAA,IACxD;AAAA,IACA,OAAO,OAAO,MAAM,YAClB,KAAM,MAAM,OAAO,KAAK;AAAA,MACtB,IAAI;AAAA,MACJ,MAAMA,SAAQ,IAAI;AAAA,MAClB,GAAI,SAAS,cAAc,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;AAAA,MAC1D,MAAM,SAAS,SAAS,SAAY,MAAQ,OAAO,QAAQ,IAAI;AAAA,IACjE,CAAC;AAAA,IACH,IAAI,OAAO,SAAS,KAAM,MAAM,OAAO,KAAK,EAAE,IAAI,MAAM,MAAMA,SAAQ,IAAI,EAAE,CAAC;AAAA,IAC7E,QAAQ,OAAO,SAAS,KAAM,MAAM,OAAO,KAAK,EAAE,IAAI,UAAU,MAAMA,SAAQ,IAAI,EAAE,CAAC;AAAA,IACrF,QAAQ,OAAO,MAAM,OACnB,KAAM,MAAM,OAAO,KAAK,EAAE,IAAI,UAAU,MAAMA,SAAQ,IAAI,GAAG,MAAMA,SAAQ,EAAE,EAAE,CAAC;AAAA,IAClF,OAAO,OAAO,MAAM,SAClB,KAAM,MAAM,OAAO,KAAK,EAAE,IAAI,SAAS,MAAMA,SAAQ,IAAI,GAAG,MAAM,OAAO,IAAI,EAAE,CAAC;AAAA,IAClF,MAAM,OAAO,MAAM,OACjB,KAAM,MAAM,OAAO,KAAK,EAAE,IAAI,QAAQ,MAAMA,SAAQ,IAAI,GAAG,MAAMA,SAAQ,EAAE,EAAE,CAAC;AAAA,IAChF,SAAS,OAAO,QAAQ,SACtB,KAAM,MAAM,OAAO,KAAK,EAAE,IAAI,WAAW,MAAMA,SAAQ,IAAI,GAAG,MAAM,OAAO,CAAC;AAAA,IAC9E,MAAM,SAAS,MAAM;AACnB,YAAM,MAAMA,SAAQ,IAAI;AACxB,UAAI,MAAM,GAAG,EAAG,QAAO,SAAS,QAAQ,YAAY,GAAG,CAAC;AACxD,aAAO,OAAO,MAAM,OAAO,KAAK,EAAE,IAAI,YAAY,MAAM,IAAI,CAAC,CAAC;AAAA,IAChE;AAAA,IACA,MAAM,OAAO,MAAM;AACjB,UAAI,MAAMA,SAAQ,IAAI;AACtB,UAAI,MAAM,GAAG,GAAG;AACd,cAAM,SAAS,MAAM,SAAS,QAAQ,iBAAiB,GAAG,CAAC,EAAE,MAAM,MAAM,MAAS;AAClF,YAAI,QAAQ,WAAW,GAAG,EAAG,OAAM;AAAA,MACrC;AACA,YAAM,OAAO,QAAQ,GAAG;AACxB,aAAO,SAAS,MAAM,OAAO,KAAK,EAAE,IAAI,UAAU,MAAM,IAAI,CAAC,CAAC;AAAA,IAChE;AAAA,IACA,MAAM,MAAM,MAAM,SAAS,UAAU;AACnC,YAAM,CAAC,OAAO,MAAM,IAAI,UAAU,SAAS,QAAQ;AACnD,YAAM,KAAM,MAAM,OAAO,KAAK,aAAaA,SAAQ,IAAI,GAAG,KAAK,CAAC;AAChE,aAAOP,QAAO,QAAQ,IAAI,MAAM;AAAA,IAClC;AAAA,IACA,MAAM,SAAS,MAAM;AACnB,YAAM,MAAMO,SAAQ,IAAI;AACxB,UAAI,MAAM,GAAG,EAAG,QAAO,UAAU,MAAM,KAAK,GAAG,CAAC;AAChD,UAAI;AACF,cAAM,OAAO,KAAK,EAAE,IAAI,iBAAiB,MAAM,IAAI,CAAC;AACpD,eAAO,MAAM,OAAO,MAAM,EAAE,IAAI,QAAQ,MAAM,IAAI,CAAC;AAAA,MACrD,SAAS,KAAK;AACZ,YAAI,EAAE,eAAe,gBAAgB,IAAI,SAAS,SAAU,OAAM;AAClE,cAAM,UAAU,MAAM,OAAO,GAAG;AAChC,YAAI,CAAC,QAAS,OAAM;AACpB,eAAO,UAAU,MAAM,KAAK,OAAO,CAAC;AAAA,MACtC;AAAA,IACF;AAAA,IACA,MAAM,UAAU,MAAM,MAAM,SAAS;AACnC,YAAM,OAAO,SAAS;AACtB,YAAM,OAAO,MAAM;AAAA,QACjB;AAAA,QACA,EAAE,OAAO,MAAM,QAAQ,MAAM,UAAU,MAAM,GAAI,SAAS,SAAY,EAAE,KAAK,IAAI,CAAC,EAAG;AAAA,QACrF;AAAA,MACF;AACA,UAAI;AACF,cAAM,KAAK,MAAM,GAAG,OAAO,SAAS,WAAWF,SAAQ,OAAO,IAAI,IAAI,IAAI;AAAA,MAC5E,UAAE;AACA,cAAM,KAAK,MAAM;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACF;AAzjCA,IAyGa,aAoJA,QA8BPA,UAkUA,cAuCA;AApoBN;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAOA;AAYA;AACA;AACA;AAwBA;AACA;AACA;AACA;AACA;AAWA;AACA;AACA;AAQA;AA4BO,IAAM,cAA4B,OAAO,OAAO,EAAE,SAAS,eAAe,CAAC;AAoJ3E,IAAM,SAAN,cAAqB,MAAM;AAAA,MACvB;AAAA,MAET,YAAYD,SAAgB;AAC1B,cAAM,QAAQA,OAAM,EAAE;AACtB,aAAK,OAAO;AACZ,aAAK,SAASA;AAAA,MAChB;AAAA,IACF;AAsBA,IAAMC,WAAU,IAAI,YAAY;AAkUhC,IAAM,eAAe,CAAC,UACpB,KAAK,OAAO,gBAAgB,KAAgC;AAsC9D,IAAM,gBAAgB,CAAC,YAAY,aAAa,aAAa,YAAY,cAAc;AAAA;AAAA;;;AChmBhF,SAAS,YAAY,KAAuB;AACjD,SAAO,eAAe,cAAc,IAAI,KAAK,IAAI,OAAO;AAC1D;AAEA,SAAS,UAAU,SAAwC;AACzD,MAAI,YAAY,OAAW,QAAO,CAAC;AACnC,MAAI,OAAO,YAAY,YAAY,YAAY,QAAQ,MAAM,QAAQ,OAAO,GAAG;AAC7E,UAAM,IAAI,YAAY,UAAU,cAAc;AAAA,EAChD;AACA,QAAM,EAAE,SAAS,IAAI;AACrB,MAAI,aAAa,UAAa,CAAC,MAAM,QAAQ,QAAQ,GAAG;AACtD,UAAM,IAAI,YAAY,UAAU,cAAc;AAAA,EAChD;AACA,SAAO;AACT;AAEA,SAAS,QAAQU,OAAmB,SAAyC;AAC3E,QAAM,SAAS,QAAQ,cAAsB;AAC7C,SAAO,IAAI,QAAkB,CAACC,UAAS,WAAW;AAChD,UAAM,SAAS,CAAC,QACd,OAAO,OAAO;AAAA,MACZ;AAAA,MACA,MAAAD;AAAA,MACA,QAAQ,OAAO;AAAA,MACf,MAAM,YAAY;AAChB,gBAAQ,YAAY,EAAE,WAAW,KAAK,CAAC;AACvC,cAAM,OAAO;AAAA,MACf;AAAA,IACF,CAAC;AACH,YAAQ,YAAY,CAAC,UAAwB;AAC3C,YAAM,OAAO,MAAM;AACnB,UAAI,SAAS,KAAM,CAAAC,SAAQ,OAAO,KAAK,GAAG,CAAC;AAAA,eAClC,WAAW,MAAM;AACxB,gBAAQ,MAAM;AACd,QAAAD,MAAK,MAAM;AACX,eAAO,IAAI,YAAY,KAAK,OAAO,gBAAgB,KAAK,OAAO,CAAC;AAAA,MAClE,WAAW,YAAY,MAAM;AAC3B,gBAAQ,MAAM;AACd,eAAO,QAAQ,KAAK,MAAM;AAAA,MAC5B;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,SAAS,cAAcE,OAAmBC,QAAwC;AACvF,QAAM,QAAQ,CAAC,YAAsD;AACnE,QAAI;AACJ,QAAI;AACF,cAAQ,UAAU,OAAO;AAAA,IAC3B,SAAS,KAAK;AACZ,aAAO,QAAQ,OAAO,GAAG;AAAA,IAC3B;AACA,UAAM,UAAU,IAAI,cAAc;AAClC,UAAM,UAAU,IAAI,cAAc;AAClC,UAAM,WAAW,CAAC,GAAI,MAAM,YAAY,CAAC,CAAE;AAC3C,UAAM,MAAwB;AAAA,MAC5B,MAAM;AAAA,MACN,MAAM,MAAM;AAAA,MACZ,MAAM,QAAQ;AAAA,MACd,SAAS,QAAQ;AAAA,MACjB;AAAA,IACF;AACA,QAAI;AACF,MAAAD,MAAK,YAAY,KAAK,CAAC,QAAQ,OAAO,QAAQ,OAAO,GAAG,QAAQ,CAAC;AAAA,IACnE,SAAS,KAAK;AACZ,cAAQ,MAAM,MAAM;AACpB,cAAQ,MAAM,MAAM;AACpB,aAAO,QAAQ,OAAO,GAAG;AAAA,IAC3B;AACA,WAAO,QAAQ,QAAQ,OAAO,QAAQ,KAAK;AAAA,EAC7C;AACA,SAAO,OAAO,OAAO;AAAA,IACnB,KAAKC,QAAO,OAAO;AAAA,IACnB,MAAMA,QAAO;AAAA,IACb,MAAMA,QAAO;AAAA,IACb,WAAW;AAAA,IACX,SAAS;AAAA,IACT;AAAA,EACF,CAAC;AACH;AAnHA,IAgCM,eAEA;AAlCN;AAAA;AAAA;AAAA;AASA;AAuBA,IAAM,gBAAgB,WAAW;AAEjC,IAAM,MAAM;AAAA;AAAA;;;AClCZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsDO,SAAS,WAAWC,QAAmB,OAAoB;AAChE,MAAI,OAAOA,OAAM,SAAS,OAAO,YAAY;AAC3C,IAAAA,OAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,YAAY,MAAM,aAAa,KAAK,OAAO,CAAC;AACzF,IAAAA,OAAM,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,MAAM,aAAa,GAAG,CAAC;AACtE;AAAA,EACF;AACA,EAAAA,OAAM,mBAAmB,sBAAsB,CAAC,UAAU;AACxD,UAAM,eAAe;AACrB,UAAM,aAAa,MAAM,QAAQ,MAAM,OAAO;AAAA,EAChD,CAAC;AACD,EAAAA,OAAM,mBAAmB,SAAS,CAAC,UAAU;AAC3C,UAAM,eAAe;AACrB,UAAM,aAAa,MAAM,KAAK;AAAA,EAChC,CAAC;AACH;AAEA,eAAe,gBAA+B;AAC5C,WAAS,OAAO,GAAG,OAAO,GAAG,OAAQ,OAAM,IAAI,QAAQ,CAACC,aAAY,WAAWA,UAAS,CAAC,CAAC;AAC5F;AAEA,SAAS,QAAQ,KAAsB;AACrC,SAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AACxD;AAEA,SAAS,SAASC,QAAwB;AACxC,SAAO,OAAOA,WAAU,YAAY,OAAO,UAAUA,MAAK,IAAIA,SAAQ,MAAO;AAC/E;AAEO,SAAS,OAAO,QAAqD;AAC1E,QAAM,OAAO,OAAO,OAAO,YAAY,aAAa,OAAO,UAAU,OAAO;AAC5E,SAAO,OAAO,SAAS,aAAc,OAAkB;AACzD;AAEO,SAAS,aACd,MACAC,OACA,OAAsB,CAAC,GACN;AACjB,SAAO,MAAM,MAAMA,OAAM,MAAM,MAAS;AAC1C;AAEO,SAAS,YACd,MACAA,OACA,OAAsB,CAAC,GACN;AACjB,QAAM,EAAE,QAAQ,GAAGC,MAAK,IAAI;AAC5B,SAAO,MAAMA,OAAqCD,OAAM,MAAM,MAAM;AACtE;AAEA,eAAe,MACb,MACAA,OACA,MACA,QACiB;AACjB,QAAME,UAAS,CAAC,QAA0B,UAAU,YAAY,GAAG,IAAI,sBAAsB;AAC7F,QAAM,YAAY,wBAAwB,KAAK,KAAKF,OAAM,KAAK,SAAS;AACxE,MAAI;AACJ,QAAM,OAAO,IAAI,QAAgB,CAACF,aAAa,cAAcA,QAAQ;AACrE,MAAI;AACJ,QAAM,SAAS,CAACK,YAAyB;AACvC,mBAAeA;AACf,gBAAYA,OAAM;AAAA,EACpB;AACA,MAAI;AACJ,MAAI;AACJ,QAAM,OAAO,CAAC,QAAuB;AACnC,QAAI,eAAe,OAAQ;AAC3B,iBAAa,SAAS,QAAQ,QAAQ,IAAI,IAAI,QAAQ,GAAG,CAAC,GAAG,KAAK,MAAM,OAAOD,QAAO,GAAG,CAAC,CAAC;AAC3F,mBAAeA,QAAO,GAAG;AAAA,EAC3B;AACA,QAAM,SAAS,IAAI,SAAS;AAAA,IAC1B,KAAK,KAAK;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,WAAW,KAAK;AAAA,EAClB,CAAC;AACD,OAAK,OAAO,WAAW;AACvB,QAAM,SAAmB,EAAE,WAAW,oBAAI,IAAI,GAAG,WAAW,oBAAI,IAAI,EAAE;AACtE,QAAM,KAAK,WAAW,MAAM,OAAO,KAAK,EAAE,IAAI,gBAAgB,CAAC,GAAG,IAAI;AACtE,SAAO,MAAM,GAAG;AAChB,QAAM,EAAE,KAAK,OAAAE,OAAM,IAAI,cAAc;AAAA,IACnC;AAAA,IACA,MAAM,CAAC,KAAK,OAAO,GAAG,KAAK,IAAI;AAAA,IAC/B,KAAK,KAAK;AAAA,IACV,KAAK,GAAG;AAAA,IACR,MAAM,GAAG;AAAA,IACT,KAAK,KAAK;AAAA,IACV,MAAM,CAACD,YAAW,OAAO,SAASA,OAAM,CAAC;AAAA,IACzC,MAAM,OAAO,KAAK,IAAI;AAAA,IACtB,IAAI,EAAE,QAAQ,KAAK,WAAW,MAAM,OAAO,KAAK,UAAU,KAAK;AAAA,IAC/D;AAAA,IACA,QAAQ,cAAcH,OAAM,MAAM;AAAA,IAClC,QAAQ,KAAK;AAAA,IACb,cAAc,KAAK;AAAA,IACnB,GAAI,QAAQ,QAAQ,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AAAA,IAC/C,MAAM,KAAK;AAAA,IACX,QAAQ,MAAM;AAAA,EAChB,CAAC;AACD,QAAM,MAAM,CAAC,SAAiB,IAAI,MAAM,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI;AAAA,CAAI,EAAE,MAAM,MAAM,MAAS;AAE5F,MAAI;AACJ,aAAY,KAAK,SAAS,YAA2B,CAAC,MAAM,KAAK,YAAY;AAC3E,UAAM,YAAY,CAAC,GAAG,OAAO,IAAI,CAAC;AAClC,QAAI,UAAU,WAAW,EAAG,QAAO,KAAK,GAAG;AAC3C,eAAW,YAAY,WAAW;AAChC,UAAI;AACF,iBAAS,KAAK,OAAO;AAAA,MACvB,SAAS,QAAQ;AACf,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAAA,EACF,CAAC;AACD,MAAI;AACF,KAAC,KAAK,YAAY,UAAU;AAC5B,UAAM,EAAE,KAAK,KAAK,IAAI,KAAK;AAC3B,WAAO,OAAO,OAAO,MAAM,OAAO,QAAQ,KAAK,QAAQ,cAAc,IAAI,EAAE;AAC3E,SAAK,WAAW;AAAA,EAClB,SAAS,KAAK;AACZ,UAAM,IAAI,QAAQ,GAAG,CAAC;AACtB,WAAO;AAAA,EACT;AACA,MAAI,CAAC,MAAM;AACT,UAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,2BAA2B;AACzD,WAAO;AAAA,EACT;AACA,QAAM,UAAU;AAChB,QAAM,MAAM,QAAQ,QAAQ,EACzB,KAAK,MAAM,QAAQ,GAAG,CAAC,EACvB,KAAK,UAAU,OAAO,QAAiB;AACtC,QAAI,eAAe,OAAQ,QAAO,IAAI;AACtC,QAAI,CAAC,OAAQ,OAAM,IAAI,QAAQ,GAAG,CAAC;AACnC,WAAOE,QAAO,GAAG;AAAA,EACnB,CAAC;AACH,QAAMC,UAAS,MAAM,QAAQ,KAAK,CAAC,KAAK,IAAI,CAAC;AAC7C,QAAMC,OAAM;AACZ,QAAM,cAAc;AACpB,QAAM;AACN,MAAI,eAAe,OAAW,QAAO;AACrC,SAAOD;AACT;AAnMA,IAkCM;AAlCN;AAAA;AAAA;AAAA;AAOA;AACA;AAEA;AAOA;AACA;AACA;AACA;AAcA,IAAM,eAAe;AAAA;AAAA;;;ACjBd,SAAS,WAAW,QAAoD;AAC7E,QAAM,CAACE,QAAO,IAAI,YAAY,OAAO,eAAe,QAAQ,UAAU;AACtE,MAAI,CAACA,SAAS,QAAO;AACrB,QAAM,QAAQ,IAAI,WAAWA,QAAO;AACpC,MAAI,KAAK;AACT,QAAM,OAAO,MAAc;AACzB,QAAIC,SAAQ;AACZ,QAAI,QAAQ;AACZ,eAAS;AACP,YAAM,IAAI,MAAM,IAAI;AACpB,MAAAA,WAAU,IAAI,OAAQ,KAAK;AAC3B,UAAI,EAAE,IAAI,KAAO,QAAOA;AACxB,eAAS;AAAA,IACX;AAAA,EACF;AACA,QAAM,SAAS,MAAc;AAC3B,UAAM,MAAM,KAAK;AACjB,UAAM,IAAI,IAAI,YAAY,EAAE,OAAO,MAAM,SAAS,IAAI,KAAK,GAAG,CAAC;AAC/D,UAAM;AACN,WAAO;AAAA,EACT;AACA,QAAM,OAAmB;AAAA,IACvB,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,QAAQ,CAAC;AAAA,IACT,aAAa,CAAC;AAAA,EAChB;AACA,SAAO,KAAK,MAAM,QAAQ;AACxB,UAAM,OAAO,MAAM,IAAI;AACvB,UAAM,MAAM,KAAK;AACjB,UAAM,MAAM,KAAK;AACjB,QAAI,SAAS,UAAU;AACrB,WAAK,aAAa,KAAK;AACvB,WAAK,cAAc,KAAK;AACxB,WAAK,YAAY,KAAK;AACtB,WAAK,aAAa,KAAK;AAAA,IACzB,WAAW,SAAS,QAAQ;AAC1B,eAAS,IAAI,KAAK,GAAG,IAAI,GAAG,IAAK,MAAK,OAAO,KAAK,OAAO,CAAC;AAAA,IAC5D,WAAW,SAAS,cAAc;AAChC,eAAS,IAAI,KAAK,GAAG,IAAI,GAAG,IAAK,MAAK,YAAY,KAAK,OAAO,CAAC;AAAA,IACjE;AACA,SAAK;AAAA,EACP;AACA,SAAO;AACT;AA/DA,IAAM,UACA,QACA;AAFN;AAAA;AAAA;AAAA,IAAM,WAAW;AACjB,IAAM,SAAS;AACf,IAAM,eAAe;AAAA;AAAA;;;ACwLd,SAAS,YAAY,QAAgD;AAC1E,aAAWC,YAAW,YAAY,OAAO,eAAe,QAAQ,YAAY,GAAG;AAC7E,UAAM,QAAQ,UAAU,KAAK,IAAI,YAAY,EAAE,OAAOA,QAAO,CAAC;AAC9D,QAAI,MAAO,QAAO,OAAO,MAAM,CAAC,CAAC;AAAA,EACnC;AACA,SAAO;AACT;AAhMA,IA+Da,qBAyHP;AAxLN;AAAA;AAAA;AA+DO,IAAM,sBAA2C,oBAAI,IAAI;AAAA,MAC9D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAoHD,IAAM,YAAY;AAAA;AAAA;;;AC7KX,SAAS,UACd,IACAC,OACG;AACH,QAAM,OAAO,MAAgBA,MAAK,EAAE,IAAI,WAAW,CAAC;AACpD,QAAM,SAAS,EAAE,MAAM,CAAC,QAAoCA,MAAK,GAAG,EAAE;AACtE,QAAM,QAAQ,CAAC,GAAW,QAAQ,KAAK,MAAwB;AAC7D,UAAM,IAAI,UAAU,KAAK,CAAC,IAAI,CAAC;AAC/B,QAAI,MAAM,UAAa,CAAC,MAAM,SAAS,OAAO,CAAC,CAAC,EAAG,OAAM,UAAU,UAAU,CAAC;AAC9E,WAAO,QAAQ,QAAQ,QAAQ,GAAG,IAAI,CAAC;AAAA,EACzC;AACA,QAAM,cAAc,CAACC,OAAc,UAAuD;AACxF,QAAI;AACF,aAAO,CAACA,OAAM,MAAM,GAAG,GAAG,IAAIA,KAAI,IAAI,KAAK,CAAC;AAAA,IAC9C,QAAQ;AACN,aAAO,CAACA,OAAM,IAAI;AAAA,IACpB;AAAA,EACF;AACA,QAAM,MAAM,MAAwB,QAAQ,QAAQ,QAAQ,KAAK,IAAI,CAAC;AACtE,QAAM,SAAS,CAAC,GAAW,SAAmD;AAC5E,QAAI,MAAM,IAAK,QAAO,IAAI;AAC1B,WAAO,UAAU,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK;AAAA,EAC7C;AACA,QAAM,QAAQ,CAAC,QAAQ,KAAK,MAAgB,MAAM,IAAI,MAAM,EAAE,KAAK;AACnE,QAAM,OAA0D;AAAA,IAC9D,MAAM,CAAC,MAAc,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAAA,IAC/C,OAAO,CAAC,MAAc,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AAAA,IACjD,QAAQ,CAAC,MAAc;AACrB,UAAI,MAAM,IAAK,QAAO;AACtB,UAAI,CAAC,UAAU,KAAK,CAAC,EAAG,QAAO,GAAG,OAAO,CAAC;AAC1C,aAAO,KAAK,EAAE,SAAS,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,IACvD;AAAA,IACA,SAAS,CAAC,MAAc;AACtB,UAAI,MAAM,IAAK,QAAO,MAAM;AAC5B,YAAMC,UAAS,GAAG,QAAQ,CAAC;AAC3B,aAAO,MAAM,UAAU,CAACA,QAAO,SAAS,KAAK,IAAI,CAAC,GAAGA,SAAQ,KAAK,IAAIA;AAAA,IACxE;AAAA,IACA,aAAa,CAAC,MAAc;AAC1B,UAAI,MAAM,KAAK;AACb,cAAM,QAAQ,KAAK;AACnB,eAAO,MAAM,KAAK,EAAE,IAAI,CAACD,UAAS,YAAYA,OAAM,KAAK,CAAC;AAAA,MAC5D;AACA,YAAMC,UAAS,GAAG,YAAY,CAAC;AAC/B,UAAI,MAAM,UAAUA,QAAO,KAAK,CAAC,CAACD,KAAI,MAAMA,UAAS,KAAK,EAAG,QAAOC;AACpE,aAAO,CAAC,GAAGA,SAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAAA,IACnC;AAAA,EACF;AACA,SAAO,IAAI,MAAM,IAAI;AAAA,IACnB,IAAI,QAAQ,KAAK,UAAU;AACzB,UAAI,OAAO,OAAO,MAAM,GAAG,EAAG,QAAO,KAAK,GAA8B;AACxE,YAAMC,SAAQ,QAAQ,IAAI,QAAQ,KAAK,QAAQ;AAC/C,aAAO,OAAOA,WAAU,aAAaA,OAAM,KAAK,MAAM,IAAIA;AAAA,IAC5D;AAAA,EACF,CAAC;AACH;AAjEA,IAQM,KACA;AATN;AAAA;AAAA;AACA;AAKA;AAEA,IAAM,MAAM;AACZ,IAAM,YAAY;AAAA;AAAA;;;ACTlB,IAKM,gBAIA,iBAIA,mBAEA,YACA,YACA,cACA,oBACA,qBAYA,SAEA,yBAEO;AAnCb;AAAA;AAAA;AAAA;AAEA;AACA;AAEA,IAAM,iBAAiB,OAAO,OAAO,GAAG,EACrC,OAAO,CAAC,QAAQ,QAAQ,IAAI,QAAQ,QAAQ,IAAI,IAAI,EACpD,OAAO,CAAC,GAAG,QAAQ,IAAI,OAAO,GAAG,GAAG,CAAC;AAExC,IAAM,kBAAkB,CAAC,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,EAC1F,IAAI,MAAM,EACV,OAAO,CAAC,GAAG,QAAQ,IAAI,KAAK,CAAC;AAEhC,IAAM,oBAAoB;AAE1B,IAAM,aAAa;AACnB,IAAM,aAAa;AACnB,IAAM,eAAe;AACrB,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAY5B,IAAM,UAAU,CAAC,MAAc,KAAa,OAAyB,KAAK,OAAO,MAAM,OAAO,CAAC;AAE/F,IAAM,0BAA0B;AAEzB,IAAM,cAAN,MAAyC;AAAA,MACtC;AAAA,MACA;AAAA,MAEA,WAAW;AAAA,MAEX;AAAA,MAEA,YAAY;AAAA,MAEZ,cAAc;AAAA,MAEd,SAAS;AAAA,MAET,WAAW;AAAA,MAEX,WAAW;AAAA,MAEX,aAAa;AAAA,MAEb,UAAU;AAAA,MAEV,UAAU;AAAA,MAEV,WAAW;AAAA,MAEX,SAAS;AAAA,MAEjB,WAAW,MAAoB;AAC7B,aAAK,UAAU,OAAO,KAAK;AAAA,MAC7B;AAAA,MAEQ,WAAW;AAAA,MAEX,YAAY;AAAA,MAEH;AAAA,MACA;AAAA,MACjB,YAAY,UAAiC,UAAmC;AAC9E,aAAK,WAAW;AAChB,aAAK,WAAW;AAAA,MAClB;AAAA,MAEA,OAAOC,OAAoB;AACzB,aAAK,WAAWA,KAAI;AAAA,MACtB;AAAA,MAEA,KAAK,SAAoC;AACvC,aAAK,UAAU;AAAA,MACjB;AAAA,MAEA,SAASC,OAAoB;AAC3B,YAAI,OAAO,KAAK,UAAUA,KAAI,MAAM,WAAY,MAAK,WAAWA;AAAA,MAClE;AAAA,MAEA,UAAgB;AACd,aAAK,SAAS;AAAA,MAChB;AAAA,MAEA,YAAY,KAAa,aAAqB,OAAuB;AACnE,YAAI,MAAM,KAAK,MAAM,OAAO,iBAAiB,OAAO,GAAG,OAAO,EAAG,QAAO,EAAE;AAC1E,cAAM,MAAM,OAAO,GAAG;AACtB,aAAK,WAAW,QAAQ,KAAK,UAAU,KAAK,gBAAgB,mBAAmB;AAC/E,aAAK,WAAW,QAAQ,KAAK,UAAU,KAAK,gBAAgB,kBAAkB;AAC9E,aAAK,aAAa,QAAQ,KAAK,YAAY,MAAM,QAAQ,gBAAgB,CAAC;AAC1E,aAAK,UAAU,QAAQ,KAAK,SAAS,MAAM,QAAQ,gBAAgB,CAAC;AACpE,aAAK,WAAW,QAAQ,KAAK,UAAU,KAAK,gBAAgB,CAAC;AAC7D,YAAI,QAAQ,IAAI,KAAM,MAAK,aAAa,QAAQ,kBAAkB;AAClE,eAAO,EAAE;AAAA,MACX;AAAA,MAEA,WAA4B;AAC1B,eAAO;AAAA,UACL,GAAI,KAAK,WAAW,EAAE,UAAU,KAAK,SAAS,IAAI,CAAC;AAAA,UACnD,GAAI,KAAK,SAAS,EAAE,QAAQ,KAAc,IAAI,CAAC;AAAA,UAC/C,UAAU,KAAK;AAAA,UACf,UAAU,KAAK;AAAA,UACf,YAAY,KAAK;AAAA,UACjB,UAAU,KAAK;AAAA,UACf,GAAI,KAAK,YAAY,EAAE,WAAW,KAAc,IAAI,CAAC;AAAA,QACvD;AAAA,MACF;AAAA,MAEA,QAAQ,OAA8B;AACpC,YAAI,MAAM,SAAU,MAAK,SAAS,MAAM,QAAQ;AAChD,YAAI,MAAM,OAAQ,MAAK,SAAS;AAChC,aAAK,WAAW,MAAM;AACtB,aAAK,WAAW,MAAM;AACtB,aAAK,aAAa,MAAM;AACxB,aAAK,WAAW,MAAM;AACtB,aAAK,YAAY,MAAM,cAAc;AAAA,MACvC;AAAA,MAEA,QAA4B;AAC1B,YAAI,KAAK,QAAQ;AACf,gBAAM,SAAS,KAAK,QAAQ,IAAI,KAAK,WAAW;AAChD,gBAAM,WAAW,KAAK;AACtB,eAAK,WAAW;AAChB,gBAAM,YAAY,KAAK,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;AAC1D,iBAAO,EAAE,QAAQ,SAAS,KAAK,UAAU,SAAS,KAAK,YAAY,UAAU,GAAG,UAAU;AAAA,QAC5F;AACA,YAAI,CAAC,KAAK,QAAQ,EAAG,QAAO;AAC5B,eAAO,EAAE,QAAQ,iBAAiB,CAAC,KAAK,WAAW,CAAC,iBAAiB,SAAS,GAAG,SAAS,EAAE;AAAA,MAC9F;AAAA,MAEA,MAAM,KAAmB;AACvB,cAAM,UAAU,KAAK,QAAQ;AAC7B,YAAI,CAAC,WAAW,CAAC,KAAK,OAAQ;AAC9B,YAAI,CAAC,WAAY,KAAK,WAAW,KAAK,WAAW,OAAO,GAAG,OAAO,GAAI;AACpE,eAAK,KAAK,WAAW,OAAO,GAAG,OAAO,EAAG,MAAK,cAAc,GAAG;AAC/D;AAAA,QACF;AACA,cAAM,MAAM,OAAO,GAAG;AACtB,aAAK,KAAK,UAAU,SAAS,OAAO,KAAK,UAAU,KAAK,UAAU,SAAS,GAAG;AAC5E,eAAK,YAAY;AACjB;AAAA,QACF;AACA,cAAM,QAAQ,EAAE,SAAS,KAAK,UAAU,KAAK,QAAQ,KAAK,SAAS,IAAI;AACvE,aAAK,WAAW;AAChB,aAAK,UAAU,CAAC;AAChB,YAAI;AACF,eAAK,IAAI,SAAS,GAAG;AAAA,QACvB,UAAE;AACA,eAAK,UAAW,KAAK,UAAU,CAAC,MAAO,MAAM;AAC7C,eAAK,SAAU,KAAK,SAAS,CAAC,MAAO,MAAM;AAAA,QAC7C;AACA,aAAK,KAAK,WAAW,SAAS,EAAG;AACjC,aAAK,YAAY,CAAC;AAClB,aAAK,MAAM,GAAG;AAAA,MAChB;AAAA,MAEA,MAAM;AAAA,MAEE,IAAI,SAAgC,KAAmB;AAC7D,aAAK;AACL,cAAM,QAAQ,EAAE,KAAK,KAAK,YAAY,WAAW,KAAK,WAAW,MAAM,KAAK,YAAY;AACxF,aAAK,aAAa;AAClB,aAAK,YAAY;AACjB,aAAK,cAAc;AACnB,YAAI;AACF,kBAAQ,GAAG;AAAA,QACb,SAAS,GAAG;AACV,gBAAM,WAAW,aAAa,YAAY,EAAE,SAAS,qBAAqB,KAAK;AAC/E,cAAI,EAAE,YAAY,CAAC,KAAK,cAAc,EAAE,aAAa,YAAY,cAAe,OAAM;AACtF,cAAI,CAAC,KAAK,UAAW,MAAK,cAAc,GAAG;AAAA,QAC7C,UAAE;AACA,eAAK,aAAa,MAAM;AACxB,eAAK,YAAY,MAAM;AACvB,eAAK,cAAc,MAAM;AAAA,QAC3B;AAAA,MACF;AAAA,MAEA,MAAM,IAAY,MAA2B;AAC3C,YAAI,OAAO,KAAK,KAAK,eAAe,OAAW,QAAO;AACtD,YAAI,CAAC,wBAAwB,KAAK,IAAI,YAAY,EAAE,OAAO,IAAI,CAAC,EAAG,QAAO;AAC1E,aAAK,cAAc;AACnB,eAAO;AAAA,MACT;AAAA,MAEA,OAAO,KAAsB;AAC3B,YAAI,QAAQ,IAAI,QAAQ,KAAK,eAAe,OAAW,QAAO;AAC9D,YAAI,CAAC,KAAK,UAAW,MAAK,cAAc,KAAK,UAAU;AACvD,eAAO;AAAA,MACT;AAAA,MAEQ,cAAc,KAAmB;AACvC,aAAK,YAAY;AACjB,aAAK,YAAY,OAAO,GAAG;AAC3B,aAAK,SAAS,GAAG;AACjB,YAAI,cAAc,GAAG,MAAM,YAAa,MAAK,YAAY,CAAC,OAAO,GAAG;AAAA,MACtE;AAAA,MAEQ,UAA+C;AACrD,cAAM,KAAK,KAAK,WAAW,KAAK,UAAU,KAAK,QAAQ,IAAI;AAC3D,eAAO,OAAO,OAAO,aAAc,KAA+B;AAAA,MACpE;AAAA,IACF;AAAA;AAAA;;;ACnNA,IAMa;AANb;AAAA;AAAA;AAMO,IAAM,YAAN,MAAgB;AAAA,MACJ,OAAO,oBAAI,IAAiB;AAAA,MAC5B,SAAkC,CAAC;AAAA,MAC5C,OAAO,YAAY,IAAI;AAAA,MAE/B,KAAuB,KAAa,OAAa;AAC/C,eAAO,OAAO;AAAA,UACZ,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAACC,OAAMC,MAAK,MAAM;AAC3C,gBAAI,OAAOA,WAAU,WAAY,QAAO,CAACD,OAAMC,MAAK;AACpD,kBAAM,KAAKA;AACX,kBAAM,MAAM,GAAG,GAAG,IAAID,KAAI;AAC1B,mBAAO,CAACA,OAAM,IAAI,SAAoB,KAAK,KAAK,KAAK,MAAM,GAAG,MAAM,OAAO,IAAI,CAAC,CAAC;AAAA,UACnF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEA,KAAQ,KAAa,IAAgB;AACnC,cAAM,IAAI,YAAY,IAAI;AAC1B,YAAI;AACF,iBAAO,GAAG;AAAA,QACZ,UAAE;AACA,eAAK,MAAM,KAAK,YAAY,IAAI,IAAI,CAAC;AAAA,QACvC;AAAA,MACF;AAAA,MAEA,MAAMA,OAAoB;AACxB,cAAM,MAAM,YAAY,IAAI;AAC5B,aAAK,OAAO,KAAK,CAACA,OAAM,MAAM,KAAK,IAAI,CAAC;AACxC,aAAK,OAAO;AAAA,MACd;AAAA,MAEQ,MAAM,KAAa,IAAkB;AAC3C,cAAM,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK,EAAE;AACxD,YAAI;AACJ,YAAI,MAAM;AACV,YAAI,MAAM,KAAK,IAAI,IAAI,KAAK,EAAE;AAC9B,aAAK,KAAK,IAAI,KAAK,GAAG;AAAA,MACxB;AAAA,MAEA,SAAiB;AACf,cAAM,KAAK,CAAC,MAAc,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;AACjD,cAAM,QAAQ,KAAK,OAAO,IAAI,CAAC,CAACA,OAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQA,KAAI,EAAE;AACnE,cAAM,KAAK,GAAG,WAAW,SAAS,EAAE,CAAC,IAAI,QAAQ,SAAS,CAAC,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,QAAQ;AAC5F,cAAM,SAAS,CAAC,GAAG,KAAK,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;AAC9D,mBAAW,CAAC,KAAK,GAAG,KAAK,QAAQ;AAC/B,gBAAM,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC,MAAM,OAAO,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,EAAE;AAAA,QAClF;AACA,eAAO,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA;AAAA,MAC5B;AAAA,IACF;AAAA;AAAA;;;ACGA,SAAS,eAAe,SAAuD;AAC7E,QAAM,MAA+B,CAAC;AACtC,aAAW,CAACE,OAAMC,MAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AACnD,QAAI,EAAEA,kBAAiB,YAAY,WAAW,OAAOA,OAAM,UAAU,SAAU;AAC/E,QAAI;AACF,YAAM,IAAIA,OAAM;AAChB,MAAAA,OAAM,QAAQ;AACd,UAAI,KAAK,CAACD,OAAM,CAAC,CAAC;AAAA,IACpB,QAAQ;AAAA,IAAC;AAAA,EACX;AACA,SAAO;AACT;AAEO,SAAS,UACd,SACA,OACM;AACN,QAAM,OAAO,QAAQ;AACrB,QAAM,OAAO,QAAQ;AACrB,QAAM,OAAO,QAAQ;AACrB,MACE,OAAO,SAAS,cAChB,EAAE,gBAAgB,YAAY,WAC9B,EAAE,gBAAgB,YAAY,SAC9B;AACA;AAAA,EACF;AACA,QAAM,KAAK,KAAK;AAChB,QAAM,QAAQ,MAAM,IAAI,KAAK,KAAe,EAAE,MAAM;AACpD,OAAK,EAAE;AACP,QAAM,IAAI,MAAM,MAAM,EAAE,IAAI,KAAK;AACnC;AAzFA,IAqDM,eAEA,WACA,WAmCO;AA3Fb;AAAA;AAAA;AACA;AAoDA,IAAM,gBAAgB;AAEtB,IAAM,YAAY;AAClB,IAAM,YAAY;AAmCX,IAAM,iBAAN,MAAqB;AAAA,MAClB,UAAiD,CAAC;AAAA,MAElD,aAAa;AAAA,MAEb;AAAA,MAEA;AAAA,MAEA,SAAS;AAAA,MACA,YAAY,oBAAI,IAAsB;AAAA,MAC/C,eAAe;AAAA,MAEN;AAAA,MACjB,YAAY,KAAiB;AAC3B,aAAK,MAAM;AAAA,MACb;AAAA,MAEA,SAAS,SAA6B,KAAmB;AACvD,aAAK,SAAS,EAAE,SAAS,IAAI;AAAA,MAC/B;AAAA,MAEQ,cAAc;AAAA,MAEtB,eAAe,SAA6B,KAAmB;AAC7D,aAAK,SAAS,SAAS,GAAG;AAC1B,aAAK,cAAc;AAAA,MACrB;AAAA,MAEA,KAAK,SAAoC;AACvC,aAAK,UAAU;AACf,aAAK,aAAa,KAAK,aAAa;AAAA,MACtC;AAAA,MAEA,IAAI,YAAqB;AACvB,eAAO,OAAO,KAAK,QAAQ,0BAA0B;AAAA,MACvD;AAAA,MAEA,IAAI,OAAgB;AAClB,cAAM,QAAQ,KAAK,QAAQ;AAC3B,eAAO,CAAC,KAAK,aAAa,OAAO,UAAU,cAAc,MAAM,MAAM;AAAA,MACvE;AAAA,MAEA,SAAkB;AAChB,YAAI,KAAK,QAAQ,qBAAqB,MAAM,UAAW,QAAO;AAC9D,aAAK,QAAQ,uBAAuB;AACpC,cAAM,KAAK,KAAK;AAChB,aAAK,UAAU;AACf,YAAI,CAAC,GAAI,OAAM,IAAI,MAAM,mCAAmC;AAC5D,aAAK,QAAQ,wBAAwB,GAAG,CAAC;AACzC,eAAO;AAAA,MACT;AAAA,MAEA,UAAuB;AACrB,eAAO,EAAE,MAAM,KAAK,cAAc,WAAW,CAAC,GAAG,KAAK,SAAS,EAAE;AAAA,MACnE;AAAA,MAEA,WAAW,OAA4B;AACrC,mBAAW,CAAC,IAAI,IAAI,KAAK,MAAM,SAAS,aAAa,CAAC,EAAG,MAAK,UAAU,IAAI,IAAI,IAAI;AACpF,aAAK,eAAe,KAAK,IAAI,KAAK,cAAc,MAAM,SAAS,QAAQ,CAAC;AACxE,aAAK,eAAe,MAAM,OAAO;AACjC,kBAAU,KAAK,SAAS,CAAC,IAAI,WAAW,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC;AAClE,aAAK,SAAS;AACd,aAAK,QAAQ,wBAAwB,MAAM,YAAY;AAAA,MACzD;AAAA,MAEA,UAA8B;AAC5B,YAAI,KAAK,QAAQ,qBAAqB,MAAM,UAAW,QAAO;AAC9D,aAAK,QAAQ,uBAAuB;AACpC,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,KACE,MACQ;AACR,cAAM,KAAK,KAAK,aAAa;AAC7B,cAAM,UAAU,KAAK,QAAQ;AAC7B,eAAO,KAAK,OAAO,CAAC,SAAS;AAC3B,eAAK,SAAS,KAAK,MAAM,SAAS,EAAE;AAAA,QACtC,CAAC;AAAA,MACH;AAAA,MAEA,WAAW,SAAiB,QAAwB;AAClD,cAAM,KAAK,KAAK;AAChB,cAAM,IAAI,KAAK,IAAI,KAAK;AACxB,UAAE,aAAa,SAAS,OAAO,MAAM,GAAG,IAAI;AAC5C,UAAE,aAAa,UAAU,GAAG,OAAO,EAAE,GAAG,IAAI;AAC5C,UAAE,aAAa,UAAU,IAAI,aAAa,IAAI;AAC9C,cAAM,UAAU,KAAK,QAAQ;AAC7B,eAAO,KAAK,OAAO,CAAC,SAAS;AAC3B,gBAAM,MAAM,KAAK,IAAI,KAAK,EAAE,UAAU,MAAM,IAAI;AAChD,eAAK,UAAU,IAAI,IAAI,EAAE,QAAQ,KAAK,IAAI,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;AAC5F,eAAK,SAAS;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,MAEA,QAAQ,SAAiB,KAAqB;AAC5C,cAAM,KAAK,OAAO,KAAK,IAAI,KAAK,EAAE,aAAa,UAAU,GAAG,IAAI,CAAC;AACjE,cAAM,OAAO,KAAK,UAAU,IAAI,EAAE;AAClC,YAAI,CAAC,KAAM,OAAM,IAAI,MAAM,wCAAwC,EAAE,GAAG;AACxE,eAAO,KAAK,OAAO,CAAC,SAAS;AAC3B,eAAK,IAAI,MAAM,OAAO,GAAG,KAAK,OAAO,MAAM,EAAE,IAAI,KAAK,MAAM;AAC5D,eAAK,IAAI,KAAK,EAAE,UAAU,MAAM,OAAO,IAAI,KAAK,OAAO,QAAQ,IAAI;AACnE,eAAK,eAAe,KAAK,OAAO;AAChC,eAAK,SAAS,OAAO,GAAG,KAAK;AAAA,QAC/B,CAAC;AAAA,MACH;AAAA,MAEQ,cAA8C;AACpD,cAAM,IAAI,KAAK,QAAQ,aAAa;AACpC,eAAO,aAAa,YAAY,SAAS,IAAI,KAAK,QAAQ;AAAA,MAC5D;AAAA,MAEQ,eAAuB;AAC7B,eAAQ,KAAK,YAAY,GAAG,SAAgC;AAAA,MAC9D;AAAA,MAEQ,UAAmC;AACzC,cAAM,MAAM,eAAe,KAAK,OAAO;AACvC,YAAI,KAAK,UAAU,CAAC,IAAI,KAAK,CAAC,CAACA,KAAI,MAAMA,UAAS,aAAa,GAAG;AAChE,cAAI,KAAK,CAAC,eAAe,KAAK,OAAO,QAAQ,KAAe,CAAC;AAAA,QAC/D;AACA,eAAO;AAAA,MACT;AAAA,MAEQ,cAAsB;AAC5B,cAAM,MAAM,KAAK,QAAQ,aAAa,aAAa,YAAY;AAC/D,YAAI,KAAK,WAAW,KAAK,eAAe,CAAC,KAAM,QAAQ,KAAK,OAAO,MAAM,KAAM,CAAC;AAChF,cAAM,IAAI,KAAK,QAAQ;AACvB,cAAM,UAAU,aAAa,YAAY,SAAU,EAAE,QAAmB;AACxE,eAAO,UAAU,KAAK,aAAc,UAAU,KAAM,CAAC,KAAK;AAAA,MAC5D;AAAA,MAEQ,OAAO,MAAsC;AACnD,YAAI,CAAC,KAAK,UAAW,QAAO,EAAE;AAC9B,cAAM,OAAO,KAAK,YAAY;AAC9B,cAAM,IAAI,KAAK,IAAI,KAAK;AACxB,UAAE,UAAU,MAAM,OAAO,GAAG,IAAI;AAChC,UAAE,UAAU,OAAO,GAAG,KAAK,aAAa,IAAI,IAAI,IAAI;AACpD,aAAK,UAAU,MAAM;AACnB,eAAK,IAAI;AACT,iBAAO;AAAA,QACT;AACA,aAAK,QAAQ,wBAAwB,IAAI;AACzC,eAAO,EAAE;AAAA,MACX;AAAA,MAEQ,eAAe,SAAwC;AAC7D,mBAAW,CAACA,OAAMC,MAAK,KAAK,SAAS;AACnC,gBAAM,IAAID,UAAS,gBAAgB,KAAK,YAAY,IAAI,KAAK,QAAQA,KAAI;AACzE,cAAI,aAAa,YAAY,OAAQ,GAAE,QAAQC;AAAA,QACjD;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC3OA,SAAS,KAAK,MAAgB,IAAY,MAAqB;AAC7D,MAAI,SAAS,MAAO,QAAO,KAAK,SAAS,IAAI,IAAI;AACjD,MAAI,SAAS,MAAO,QAAO,KAAK,YAAY,IAAI,IAAI;AACpD,MAAI,SAAS,MAAO,QAAO,KAAK,WAAW,IAAI,IAAI;AACnD,SAAO,KAAK,WAAW,IAAI,IAAI;AACjC;AAEA,SAAS,SAAS,MAAgB,IAAY,KAAa,MAAqB;AAC9E,MAAI,KAAKC,MAAK,IAAI,KAAK,IAAK,QAAO,KAAK,MAAM,IAAI,IAAI;AACtD,QAAM,OAAO,IAAI,SAAS,IAAI,YAAY,CAAC,CAAC;AAC5C,WAAS,IAAI,GAAG,KAAK,IAAI,KAAK,IAAK,MAAK,SAAS,GAAG,KAAK,SAAS,KAAK,CAAC,CAAC;AACzE,SAAO,KAAK,MAAM,GAAG,IAAI;AAC3B;AAEA,SAAS,MAAM,MAAgB,IAAY,MAAcC,QAAoB;AAC3E,MAAI,SAAS,MAAO,MAAK,SAAS,IAAI,OAAOA,MAAK,GAAG,IAAI;AAAA,WAChD,SAAS,MAAO,MAAK,YAAY,IAAI,OAAOA,MAAK,GAAG,IAAI;AAAA,WACxD,SAAS,MAAO,MAAK,WAAW,IAAI,OAAOA,MAAK,GAAG,IAAI;AAAA,MAC3D,MAAK,WAAW,IAAI,OAAOA,MAAK,GAAG,IAAI;AAC9C;AAEA,SAAS,QAAQ,OAA4B;AAC3C,MAAI,MAAM,SAAS,OAAO,EAAG,OAAM,IAAI,UAAU,QAAQ;AACzD,SAAO;AACT;AAQO,SAAS,YACd,QACG,UACG;AACN,QAAM,CAAC,IAAI,QAAQ,WAAW,SAAS,YAAY,MAAM,IAAI,SAAS,IAAI,CAAC,MAAM,MAAM,CAAC;AACxF,QAAM,QAAQ,IAAI,MAAM;AACxB,MAAI,CAAC,MAAO,OAAM,IAAI,UAAU,SAAS;AACzC,QAAM,KAAK,KAAK,MAAM,SAAS,MAAM,IAAI,EAAE,IAAI;AAC/C,QAAM,MAAM,KAAK,IAAI,MAAM,GAAG,EAAE,IAAI;AACpC,MAAI,CAAC,MAAM,CAAC,IAAK,OAAM,IAAI,UAAU,QAAQ;AAC7C,QAAM,SAAS,QAAQ,IAAI,MAAM;AACjC,QAAM,OAAO,QAAQ,IAAI,OAAO;AAChC,QAAM,OAAO,CAAC,UAAoB,MAAM,OAAO,CAAC,GAAG,SAAS,IAAID,MAAK,IAAI,GAAG,CAAC;AAC7E,MAAI,WAAW,KAAK,MAAM,MAAM,aAAa,KAAK,IAAI,MAAM,aAAa;AACvE,UAAM,IAAI,UAAU,QAAQ;AAAA,EAC9B;AACA,QAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,MAAI,SAAS,YAAY,KAAK,cAAc,UAAU,aAAa,KAAK,YAAY;AAClF,UAAM,IAAI,UAAU,QAAQ;AAAA,EAC9B;AACA,QAAM,MAAM,SAAS;AACrB,MAAI,KAAK;AACT,QAAM,OAAO,OAAO,IAAI,CAAC,SAAS;AAChC,UAAM,IAAI,SAAS,MAAM,IAAI,KAAK,IAAI;AACtC,UAAMA,MAAK,IAAI;AACf,WAAO;AAAA,EACT,CAAC;AACD,QAAM,WAAY,GAAsD,GAAG,IAAI;AAC/E,QAAM,MAAM,KAAK,WAAW,IAAI,CAAC,QAAiB,IAAM,YAAY,CAAC;AACrE,QAAM,QAAQ,IAAI,IAAI,KAAK;AAC3B,QAAM,OAAO,UAAU;AACvB,MAAI,MAAM;AACV,OAAK,QAAQ,CAAC,MAAM,MAAM;AACxB,QAAI,MAAMA,MAAK,IAAI,IAAI,KAAM;AAC7B,UAAM,OAAO,KAAK,MAAM,IAAI,CAAC,CAAU;AACvC,WAAOA,MAAK,IAAI;AAAA,EAClB,CAAC;AACH;AA9EA,IAOMA;AAPN;AAAA;AAAA;AAAA;AAOA,IAAMA,QAAyC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE;AAAA;AAAA;;;ACyBzE,SAAS,WAAW,OAAyC;AAClE,QAAM,MAAgB,CAAC;AACvB,aAAWE,SAAQ,OAAO;AACxB,UAAM,OAAO,MAAMA,KAAI;AACvB,QAAI,CAAC,KAAM,QAAO;AAClB,QAAI,KAAK,IAAI;AAAA,EACf;AACA,SAAO;AACT;AAEA,SAAS,IAAI,GAAqB;AAChC,QAAM,MAAgB,CAAC;AACvB,MAAI,IAAI,MAAM;AACd,KAAG;AACD,QAAI,IAAI,IAAI;AACZ,WAAO;AACP,QAAI,EAAG,MAAK;AACZ,QAAI,KAAK,CAAC;AAAA,EACZ,SAAS;AACT,SAAO;AACT;AAEA,SAAS,IAAI,GAAqB;AAChC,QAAM,MAAgB,CAAC;AACvB,MAAI,IAAI,IAAI;AACZ,aAAS;AACP,UAAM,IAAI,IAAI;AACd,UAAM;AACN,QAAK,MAAM,KAAK,EAAE,IAAI,OAAW,MAAM,MAAM,IAAI,IAAO;AACtD,UAAI,KAAK,CAAC;AACV,aAAO;AAAA,IACT;AACA,QAAI,KAAK,IAAI,GAAI;AAAA,EACnB;AACF;AAEA,SAAS,KAAK,GAAqB;AACjC,QAAM,QAAQ,CAAC,GAAG,IAAI,YAAY,EAAE,OAAO,CAAC,CAAC;AAC7C,SAAO,CAAC,GAAG,IAAI,MAAM,MAAM,GAAG,GAAG,KAAK;AACxC;AAEA,SAAS,QAAQ,IAAY,MAA0B;AACrD,SAAO,CAAC,IAAI,GAAG,IAAI,KAAK,MAAM,GAAG,GAAG,IAAI;AAC1C;AAEA,SAAS,IAAI,OAA6B;AACxC,SAAO,CAAC,GAAG,IAAI,MAAM,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC;AAC/C;AAEA,SAAS,QAAQ,GAAmB;AAClC,SAAO,KAAK,KAAK,IAAI,EAAE,IAAI;AAC7B;AAEO,SAAS,gBACd,QACA,SACA,QACyB;AACzB,QAAM,MAAM;AAAA,IACV;AAAA,IACA,GAAG,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAAA,IACtC,GAAG,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAAA,EACzC;AACA,QAAM,UAAU,CAAC,IAAM,GAAG,IAAI,CAAC,CAAC,GAAI,GAAG,CAAC,GAAI,GAAG,CAAC,GAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACnE,QAAM,SAAS,SAAS,CAAC,GAAM,GAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAM,CAAI;AACjE,QAAM,UAAU,IAAI;AAAA,IAClB,CAAC,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,QAAQ,GAAG,GAAM,GAAG,MAAM;AAAA,IACnD,CAAC,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,2BAA2B,GAAG,GAAM,KAAM,GAAM,CAAI;AAAA,IAC7E,CAAC,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,iBAAiB,GAAG,GAAM,KAAM,CAAI;AAAA,IAC7D,CAAC,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,SAAS,GAAG,GAAM,KAAM,CAAI;AAAA,IACrD,CAAC,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,WAAW,GAAG,GAAM,KAAM,CAAI;AAAA,EACzD,CAAC;AACD,QAAM,IAAI,OAAO;AACjB,QAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1C,QAAM,aAAa,QAAQ,OAAO,OAAO,CAAC,KAAK,MAAM,MAAMC,MAAK,CAAC,GAAG,CAAC,CAAC;AACtE,QAAM,cAAc,QAAQ,QAAQ,OAAO,CAAC,KAAK,MAAM,MAAMA,MAAK,CAAC,GAAG,CAAC,CAAC;AACxE,QAAM,OAAiB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG,IAAI,IAAI;AAAA,IACX;AAAA,IACA,GAAG,IAAI,WAAW;AAAA,IAClB;AAAA,IACA;AAAA,IACA,GAAG,IAAI,GAAG;AAAA,EACZ;AACA,OAAK,KAAK,IAAM,GAAG,IAAI,UAAU,GAAG,KAAM,IAAM,GAAG,IAAI,IAAI,GAAG,IAAM,CAAC;AACrE,MAAI,KAAK;AACT,SAAO,QAAQ,CAAC,GAAG,MAAM;AACvB,SAAK,KAAK,IAAM,GAAG,IAAI,IAAI,GAAG,IAAM,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;AACzE,UAAMA,MAAK,CAAC;AAAA,EACd,CAAC;AACD,OAAK,KAAK,IAAM,GAAG,IAAI,IAAI,GAAG,IAAM,GAAG,IAAI,GAAG,GAAG,IAAM,GAAG,IAAM,GAAG,IAAM,GAAG,CAAC;AAC7E,OAAK;AACL,aAAW,KAAK,SAAS;AACvB,SAAK,KAAK,IAAM,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;AACtD,UAAMA,MAAK,CAAC;AAAA,EACd;AACA,OAAK,KAAK,IAAM,GAAG,IAAI,IAAI,GAAG,IAAM,GAAG,EAAI;AAC3C,QAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAI,CAAC,CAAC,GAAG,GAAG,IAAI;AAClD,SAAO,WAAW,KAAK;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;AAAA,IACjC,GAAG,QAAQ,GAAG,OAAO;AAAA,IACrB,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,IACxB,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,GAAM,CAAI,CAAC,CAAC,CAAC;AAAA,IAC/C,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AAAA,EACtD,CAAC;AACH;AApJA,IAIM,OAEA,SAQAA,OAEA,OAQA,MA8HO;AAtJb;AAAA;AAAA;AAIA,IAAM,QAA2B,CAAC,OAAO,OAAO,OAAO,OAAO,MAAM;AAEpE,IAAM,UAA4C;AAAA,MAChD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,IACR;AAEA,IAAMA,QAAyC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG;AAE1F,IAAM,QAA4C;AAAA,MAChD,KAAK,CAAC,EAAI;AAAA,MACV,KAAK,CAAC,EAAI;AAAA,MACV,KAAK,CAAC,EAAI;AAAA,MACV,KAAK,CAAC,EAAI;AAAA,MACV,MAAM,CAAC,KAAM,EAAI;AAAA,IACnB;AAEA,IAAM,OAA2C;AAAA,MAC/C,KAAK,CAAC,EAAI;AAAA,MACV,KAAK,CAAC,EAAI;AAAA,MACV,KAAK,CAAC,EAAI;AAAA,MACV,KAAK,CAAC,EAAI;AAAA,MACV,MAAM,CAAC,KAAM,CAAI;AAAA,IACnB;AAwHO,IAAM,cAAN,MAAkB;AAAA,MACN,UAAU,oBAAI,IAAgC;AAAA,MAE/D,IAAI,WAAmB;AACrB,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,MAEA,KACE,QACA,SACA,KAOuD;AACvD,cAAM,SAAS,IAAI,OAAO,kBAAkB;AAC5C,cAAM,MAAM,GAAG,OAAO,KAAK,GAAG,CAAC,IAAI,QAAQ,KAAK,GAAG,CAAC,GAAG,SAAS,MAAM,EAAE;AACxE,YAAI,SAAS,KAAK,QAAQ,IAAI,GAAG;AACjC,YAAI,CAAC,QAAQ;AACX,mBAAS,IAAI,YAAY,OAAO,gBAAgB,QAAQ,SAAS,MAAM,CAAC;AACxE,eAAK,QAAQ,IAAI,KAAK,MAAM;AAAA,QAC9B;AACA,cAAM,MAAM,CAAC,MAAc,IAAI,YAAY,OAAO,EAAE,OAAO,OAAO,SAAS,MAAM,GAAG,CAAC;AACrF,cAAM,WAAW,IAAI,YAAY,SAAS,QAAQ;AAAA,UAChD,KAAK;AAAA,YACH,QAAQ,IAAI;AAAA,YACZ,2BAA2B,IAAI;AAAA,YAC/B,iBAAiB,IAAI;AAAA,YACrB,SAAS,IAAI,IAAI,OAAO;AAAA,YACxB,WAAW,IAAI,IAAI,QAAQ;AAAA,UAC7B;AAAA,QACF,CAAC;AACD,cAAM,MAAe;AAAA,UACnB,QAAQ,OAAO,IAAI,CAAC,MAAO,MAAM,SAAS,UAAU,CAAE;AAAA,UACtD,SAAS,QAAQ,IAAI,CAAC,MAAO,MAAM,SAAS,UAAU,CAAE;AAAA,QAC1D;AACA,eAAO,EAAE,IAAI,SAAS,QAAQ,GAAsC,IAAI;AAAA,MAC1E;AAAA,IACF;AAAA;AAAA;;;ACtGA,SAAS,UAAU,GAAW,GAAe;AAC3C,WAAS,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK;AAChC,MAAE,KAAK;AACP,UAAM,SAAoB,CAAC;AAC3B,aAAS,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAK,QAAO,KAAK,EAAE,QAAQ,CAAC;AACzD,UAAM,UAAqB,CAAC;AAC5B,aAAS,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAK,SAAQ,KAAK,EAAE,QAAQ,CAAC;AAC1D,MAAE,KAAK,KAAK,KAAK,EAAE,QAAQ,QAAQ,CAAC;AAAA,EACtC;AACF;AAEA,SAAS,YAAY,GAAW,GAAe;AAC7C,WAAS,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK;AAChC,MAAE,KAAK;AACP,UAAMC,SAAQ,EAAE,KAAK;AACrB,UAAM,OAAO,EAAE,KAAK;AACpB,QAAI,SAAS,EAAG,GAAE,KAAK,MAAM,KAAK,EAAE,IAAI,CAAC;AAAA,aAChC,SAAS,GAAG;AACnB,QAAE,QAAQ;AACV,QAAE,OAAO;AAAA,IACX,WAAW,SAAS,EAAG,GAAE,OAAO;AAAA,aACvB,SAAS,GAAG;AACnB,QAAE,QAAQ;AACV,QAAE,KAAK;AACP,QAAE,QAAQ,KAAKA,MAAK;AAAA,IACtB,OAAO;AACL,QAAE,KAAK;AACP,QAAE,IAAI;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,cAAc,GAAW,GAAe;AAC/C,WAAS,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAK,GAAE,KAAK,MAAM,KAAK,EAAE,IAAI,CAAC;AAC7D;AAaA,SAAS,UAAU,GAAW,GAA4D;AACxF,MAAIC,SAAQ;AACZ,MAAI,YAAY;AAChB,MAAI,QAAQ;AACZ,aAAS;AACP,UAAM,KAAK,EAAE,KAAK;AAClB,QAAI,OAAO,GAAM,QAAO,QAAQ,EAAE,OAAAA,QAAO,UAAU,IAAI;AACvD,QAAI,OAAO,GAAM,CAAAA,UAAS,EAAE,IAAI;AAAA,aACvB,OAAO,IAAM;AACpB,YAAM,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC;AAC3B,UAAI,MAAM,WAAY,aAAY;AAAA,eACzB,OAAO,MAAM,SAAU,CAAAA,UAAS;AAAA,UACpC,SAAQ;AAAA,IACf,WAAW,OAAO,KAAM;AACtB,MAAAA,SAAQ,EAAE,IAAI;AAAA,IAChB,WAAW,MAAM,MAAM;AACrB,WAAK,EAAE,IAAI,CAAC;AACZ,cAAQ;AAAA,IACV,WAAW,OAAO,KAAM;AACtB,QAAE,KAAK,EAAE,MAAM;AACf,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,YAAY,GAAW,GAAe;AAC7C,WAAS,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK;AAChC,MAAE,QAAQ;AACV,MAAE,KAAK;AACP,UAAM,OAAO,UAAU,GAAG,CAAC;AAC3B,MAAE,QAAQ,KAAK,QAAQ,CAAC,KAAK,YAAY,KAAK,QAAQ,MAAS;AAAA,EACjE;AACF;AAEA,SAAS,YAAY,GAAW,GAAe;AAC7C,WAAS,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK;AAChC,UAAMC,QAAO,EAAE,KAAK;AACpB,UAAM,OAAO,EAAE,KAAK;AACpB,UAAMC,SAAQ,EAAE,IAAI;AACpB,QAAI,SAAS,EAAG,GAAE,KAAK,QAAQD,KAAI,IAAIC;AAAA,EACzC;AACF;AAEA,SAAS,UAAU,GAAW,GAAe;AAC3C,WAAS,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK;AAChC,UAAM,QAAQ,EAAE,IAAI;AACpB,UAAM,UAAU,QAAQ,OAAO;AAC/B,UAAM,QAAQ,QAAQ,IAAK,SAAS,EAAE,IAAI,IAAI,IAAK;AACnD,UAAM,SAAS,SAAS,UAAU,GAAG,CAAC,IAAI;AAC1C,QAAI,QAAQ,EAAG,GAAE,QAAQ;AACzB,UAAM,QAAkB,CAAC;AACzB,aAAS,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK;AAChC,UAAI,QAAQ,GAAG;AACb,cAAM,MAAM,UAAU,GAAG,CAAC;AAC1B,cAAM,KAAK,MAAM,IAAI,QAAQ,EAAE;AAAA,MACjC,MAAO,OAAM,KAAK,EAAE,IAAI,CAAC;AAAA,IAC3B;AACA,QAAI,UAAU,UAAU,GAAG;AACzB,QAAE,KAAK,MAAM,KAAK,EAAE,QAAQ,OAAO,OAAO,WAAW,OAAO,WAAW,MAAM,CAAC;AAAA,IAChF;AAAA,EACF;AACF;AAWO,SAAS,aAAa,OAAiC;AAC5D,QAAM,IAAI,IAAI,OAAO,KAAK;AAC1B,QAAM,IAAU,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE;AACrF,SAAO,EAAE,KAAK,MAAM,QAAQ;AAC1B,UAAM,KAAK,EAAE,KAAK;AAClB,UAAM,MAAM,EAAE,IAAI,IAAI,EAAE;AACxB,aAAS,EAAE,IAAI,GAAG,CAAC;AACnB,MAAE,KAAK;AAAA,EACT;AACA,SAAO,EAAE;AACX;AA1NA,IAoBM,UAOA,YAEA,QAgGA,MA0EA,UAqBO;AA5Nb;AAAA;AAAA;AAoBA,IAAM,WAA8C;AAAA,MAClD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAEA,IAAM,aAAa;AAEnB,IAAM,SAAN,MAAa;AAAA,MACX,KAAK;AAAA,MACI;AAAA,MAET,YAAY,OAAmB;AAC7B,aAAK,QAAQ;AAAA,MACf;AAAA,MAEA,OAAe;AACb,eAAO,KAAK,MAAM,KAAK,IAAI,KAAK;AAAA,MAClC;AAAA,MAEA,MAAc;AACZ,YAAI,SAAS;AACb,YAAI,QAAQ;AACZ,mBAAS;AACP,gBAAM,IAAI,KAAK,KAAK;AACpB,qBAAW,IAAI,QAAS;AACxB,cAAI,EAAE,IAAI,KAAO,QAAO,WAAW;AACnC,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MAEA,MAAc;AACZ,YAAI,SAAS;AACb,YAAI,QAAQ;AACZ,YAAI;AACJ,WAAG;AACD,cAAI,KAAK,KAAK;AACd,qBAAW,IAAI,QAAS;AACxB,mBAAS;AAAA,QACX,SAAS,IAAI;AACb,eAAO,QAAQ,MAAM,IAAI,KAAO,SAAU,MAAM,QAAS;AAAA,MAC3D;AAAA,MAEA,OAAe;AACb,cAAM,MAAM,KAAK,IAAI;AACrB,cAAM,IAAI,IAAI,YAAY,EAAE,OAAO,KAAK,MAAM,SAAS,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC;AAC9E,aAAK,MAAM;AACX,eAAO;AAAA,MACT;AAAA,MAEA,UAAmB;AACjB,cAAMC,QAAO,KAAK,KAAK;AACvB,YAAIA,UAAS,MAAQA,UAAS,IAAM,MAAK,IAAI;AAC7C,eAAO,SAASA,KAAI,KAAK;AAAA,MAC3B;AAAA,MAEA,SAAe;AACb,cAAM,QAAQ,KAAK,KAAK;AACxB,aAAK,IAAI;AACT,YAAI,QAAQ,EAAG,MAAK,IAAI;AAAA,MAC1B;AAAA,IACF;AA2CA,IAAM,OAAsD;AAAA,MAC1D,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,MACjB,IAAI,CAAC,MAAM;AACT,UAAE,MAAM;AAAA,MACV;AAAA,MACA,IAAI,CAAC,MAAM;AACT,UAAE,MAAM;AAAA,MACV;AAAA,MACA,KAAK,CAAC,MAAM,EAAE,QAAQ;AAAA,IACxB;AAiEA,IAAM,WAAmE;AAAA,MACvE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAcO,IAAM,YAAN,MAAgB;AAAA,MACJ,QAAQ,oBAAI,QAAyB;AAAA,MAC9C,UAA6B,CAAC;AAAA,MAEtC,SACEC,OACA,UACA,OACA,WACM;AACN,aAAK,QAAQ,KAAK,MAAM;AACtB,gBAAM,QAAQA,MAAK;AACnB,cAAI,MAAO,MAAK,IAAI,aAAa,KAAK,GAAG,UAAU,OAAO,SAAS;AAAA,QACrE,CAAC;AAAA,MACH;AAAA,MAEA,IACE,MACA,UACA,OACA,WACM;AACN,cAAM,MAAM,CAAC,SAAiB,KAAK,KAAK,KAAK,MAAM,IAAI,KAAK,EAAE;AAC9D,mBAAW,CAACH,OAAM,IAAI,KAAK,OAAO,QAAQ,KAAK,OAAO,GAAG;AACvD,gBAAM,KAAK,SAAS,QAAQA,KAAI;AAChC,gBAAM,OAAO,IAAI,IAAI;AACrB,cAAI,OAAO,OAAO,cAAc,KAAM,MAAK,MAAM,IAAI,IAAI,IAAI;AAAA,QAC/D;AACA,YAAI,CAAC,MAAO;AACZ,mBAAW,OAAO,KAAK,OAAO;AAC5B,gBAAMI,SAAQ,IAAI,UAAU,IAAI,YAAY,YAAY;AACxD,cAAI,MAAM,QAAQ,CAAC,MAAM,MAAM;AAC7B,kBAAM,OAAO,IAAI,IAAI;AACrB,kBAAM,KAAKA,SAAQ,IAAI,MAAM,SAAS,MAAM,IAAIA,SAAQ,CAAC,IAAI;AAC7D,gBAAI,MAAM,KAAM,MAAK,MAAM,IAAI,IAAI,IAAI;AAAA,UACzC,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEA,IAAI,IAAY,KAAoB;AAClC,aAAK,MAAM,IAAI,IAAI,GAAG;AAAA,MACxB;AAAA,MAEA,GAAG,IAAiC;AAClC,cAAM,QAAQ,KAAK,MAAM,IAAI,EAAE;AAC/B,YAAI,SAAS,KAAK,QAAQ,WAAW,EAAG,QAAO;AAC/C,cAAM,UAAU,KAAK;AACrB,aAAK,UAAU,CAAC;AAChB,mBAAW,OAAO,QAAS,KAAI;AAC/B,eAAO,KAAK,MAAM,IAAI,EAAE;AAAA,MAC1B;AAAA,IACF;AAAA;AAAA;;;AClQA,SAAS,aAAa,OAAe,KAAqB;AACxD,SAAO,MAAM,QAAQ,8BAA8B,GAAG;AACxD;AAohBA,SAAS,MAAM,GAAW,IAAoB;AAC5C,SAAO,KAAK,KAAK,IAAI,EAAE,IAAI;AAC7B;AAEA,SAAS,OAAO,QAA4B,OAAqB;AAC/D,QAAMC,SAAQ,KAAK,KAAK,QAAQC,KAAI,IAAI,OAAO,OAAO,aAAaA;AACnE,MAAID,SAAQ,EAAG,QAAO,KAAKA,MAAK;AAClC;AAEA,SAAS,UAAU,OAA0B,QAAsB;AACjE,MAAI,MAAM,SAAS,OAAQ,OAAM,KAAK,SAAS,MAAM,MAAM;AAC7D;AAEA,SAAS,KAAK,UAAgCE,OAAoB;AAChE,QAAM,KAAK,SAAS,QAAQA,KAAI;AAChC,MAAI,OAAO,OAAO,WAAY,CAAC,GAAkB;AACnD;AAnjBA,IAMaC,aACPF,OAEO,YAEP,cA+CO,SAEA;AA5Db;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEO,IAAME,cAAa;AAC1B,IAAMF,QAAO;AAEN,IAAM,aAAa,IAAI,OAAO;AAErC,IAAM,eAAe,CAAC,QAAQ,YAAY,gBAAgB;AA+CnD,IAAM,UAAN,cAAsB,MAAM;AAAA,IAAC;AAE7B,IAAM,cAAN,MAAkB;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACQ;AAAA,MACA;AAAA,MACT;AAAA,MACS,UAAU,oBAAI,IAAoB;AAAA,MAEnD;AAAA,MACiB,SAAS,oBAAI,IAAoB;AAAA,MAE1C,UAA6B,CAAC;AAAA,MACrB,QAAQ,oBAAI,IAAqB;AAAA,MAC1C,aAAa;AAAA,MAErB;AAAA,MAEA;AAAA,MAWA,QAAQ,IAAI,UAAU;AAAA,MAEb,cAAc,IAAI,YAAY;AAAA,MAEtB;AAAA,MACA;AAAA,MACjB,YACE,QACA,UACA,MAEA,SAAS,OACT;AACA,aAAK,SAAS;AACd,aAAK,OAAO;AACZ,aAAK,aAAa,KAAK,IAAI,GAAG,KAAK,SAAS,WAAW;AACvD,aAAK,WAAW,MAAM,KAAK,aAAa,SAAS,YAAY,IAAI;AACjE,aAAK,YAAY,KAAK,WAAW;AACjC,YAAI,CAAC,OAAQ,QAAO,QAAQ,KAAK,SAAS;AAC1C,aAAK,QAAQ,IAAI,YAAY,MAAM;AAAA,UACjC,SAAS;AAAA,UACT,SAASE,cAAa,SAAS;AAAA,QACjC,CAAC;AACD,aAAK,eAAe,IAAI,YAAY;AAAA,UAClC,EAAE,OAAO,OAAO,SAAS,KAAK;AAAA,UAC9B,SAAS,IAAI,KAAK;AAAA,QACpB;AACA,cAAM,MAAM,MACV,IACE,YACA,IAAI;AAAA,UACJ,YAAY,CAAC,KAAK;AAAA,QACpB,CAAC;AACH,aAAK,WAAW,IAAI;AACpB,aAAK,eAAe,IAAI;AAAA,MAC1B;AAAA,MAEA,YAAY,QAAqF;AAC/F,cAAM,MAAM,CAAC,MAAc,IAAI,YAAY,OAAO,EAAE,OAAO,OAAO,SAAS,MAAM,GAAG,CAAC;AACrF,cAAM,MAAM,CAAC,MAAc,IAAI,YAAY,OAAO,EAAE,OAAO,OAAO,SAAS,KAAK,GAAG,CAAC;AACpF,cAAM,MAA+C;AAAA,UACnD,QAAQ,KAAK;AAAA,UACb,2BAA2B,KAAK;AAAA,UAChC,iBAAiB,KAAK;AAAA,UACtB,eAAe,IAAI,KAAK,UAAU;AAAA,UAClC,cAAc,IAAIA,WAAU;AAAA,UAC5B,aAAa,KAAK;AAAA,UAClB,iBAAiB,KAAK;AAAA,QACxB;AACA,cAAM,SAA6C;AAAA,UACjD,cAAc,IAAI,KAAK,SAAS;AAAA,UAChC,aAAa,IAAI,KAAK,QAAQ;AAAA,UAC9B,aAAa,IAAI,KAAK,SAAS;AAAA,QACjC;AACA,cAAM,UAA8C,CAAC;AACrD,aAAK,UAAU,CAAC;AAEhB,mBAAW,OAAO,YAAY,OAAO,QAAQ,MAAM,GAAG;AACpD,cAAI,IAAI,WAAW,SAAS,IAAI,SAAS,cAAc,EAAE,IAAI,QAAQ,MAAM;AACzE,gBAAI,IAAI,IAAI,IAAI,KAAK,eAAe,IAAI,IAAI;AAAA,UAC9C,WAAW,IAAI,WAAW,cAAe,IAAI,WAAW,aAAa,EAAE,IAAI,QAAQ,SAAU;AAC3F,kBAAM,IAAI,IAAI,CAAC;AACf,aAAC,IAAI,WAAW,aAAa,UAAU,QAAQ,IAAI,IAAI,IAAI;AAC3D,kBAAM,OAAO,IAAI;AACjB,iBAAK,QAAQ,KAAK,MAAM;AACtB,gBAAE,QAAQ,SAAS,aAAa,KAAK,WAAW,IAAI,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI;AAAA,YACzF,CAAC;AAAA,UACH;AAAA,QACF;AACA,eAAO,EAAE,KAAK,WAAW,QAAQ,YAAY,QAAQ;AAAA,MACvD;AAAA,MAEA,cAAoB;AAClB,mBAAWC,YAAW,KAAK,QAAS,CAAAA,SAAQ;AAAA,MAC9C;AAAA,MAEA,SAAS,UAAgC,UAAyB;AAChE,aAAK,OAAO;AAEZ,YAAI,SAAU,MAAK,UAAU,0BAA0B;AAAA,MACzD;AAAA,MAEA;AAAA,MAEQ,OAAO,MAAuB;AACpC,YAAI,KAAK,aAAa,OAAW,QAAO;AACxC,YAAI,SAAS,KAAK,SAAU,QAAO;AACnC,cAAM,OAAO,KAAK,KAAK;AACvB,YAAI,SAAS,OAAW,QAAO;AAC/B,YAAI;AACF,iBAAO,KAAK,IAAI,MAAM,KAAK,KAAK,QAAQ;AAAA,QAC1C,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEA,KAAKF,OAAc,KAAa,QAAmC;AACjE,cAAM,OAAO,KAAK,OAAOA,OAAM,KAAK,MAAM;AAC1C,YAAI,KAAK,OAAO,IAAI,EAAG,QAAO;AAC9B,aAAK,SAAS,KAAK;AACnB,YAAI;AACF,iBAAO,KAAK,KAAK,MAAM,KAAK,MAAM,EAAE;AAAA,QACtC,UAAE;AACA,eAAK,SAAS,OAAO;AAAA,QACvB;AAAA,MACF;AAAA,MAEA,OAAO,QAAgBA,OAAsB;AAC3C,cAAM,QACJ,WAAW,IAAI,KAAK,KAAKA,KAAI,IAAI,KAAK,OAAO,KAAK,OAAO,MAAM,GAAGA,OAAM,oBAAI,IAAI,CAAC;AACnF,YAAI,CAAC,MAAO,OAAM,IAAI,QAAQ,qBAAqBA,KAAI,EAAE;AACzD,cAAM,CAAC,OAAOG,MAAK,IAAI;AACvB,YAAI,OAAOA,WAAU,WAAY,QAAO,KAAK,KAAKA,QAAO,OAAOH,KAAI;AACpE,YAAIG,kBAAiB,YAAY,OAAQ,QAAO,KAAK,OAAO,KAAK,IAAKA,OAAM;AAC5E,cAAM,IAAI,QAAQ,GAAGH,KAAI,iCAAiC;AAAA,MAC5D;AAAA,MAEA,QAAQ,QAAyB;AAC/B,eAAO,CAAC,KAAK,QAAQ,IAAI,MAAM;AAAA,MACjC;AAAA,MAEA;AAAA,MAEA,WAA+C;AAC7C,cAAM,MAA0C,CAAC;AACjD,mBAAW,CAAC,MAAM,MAAM,KAAK,KAAK,OAAQ,KAAI,IAAI,IAAI,OAAO;AAC7D,eAAO;AAAA,MACT;AAAA,MAEA,kBAA0B;AACxB,cAAMI,SAAS,KAAK,QAAgD,SAAS,KAAK,MAAM,MAAM;AAC9F,kBAAU,KAAK,OAAOA,SAAQ,CAAC;AAC/B,aAAK,KAAK,IAAIA,MAAK;AACnB,eAAOA;AAAA,MACT;AAAA,MAEA,YAAYA,QAAqB;AAC/B,aAAK,SAAS,KAAKA,MAAK;AACxB,aAAK,KAAK,OAAOA,MAAK;AACtB,aAAK,MAAM,IAAIA,QAAO,IAAI;AAAA,MAC5B;AAAA,MAEiB,OAAO,oBAAI,IAAY;AAAA,MAExC,eAAe,QAA8E;AAC3F,YAAI,CAAC,KAAK,KAAK,IAAI,OAAO,KAAK,EAAG,OAAM,IAAI,QAAQ,WAAW,OAAO,KAAK,iBAAiB;AAC5F,cAAM,OAAmB,EAAE,MAAM,mBAAmB,GAAG,OAAO;AAC9D,aAAK,QAAQ,IAAI;AACjB,aAAK,YAAY,IAAI;AAAA,MACvB;AAAA,MAEQ,QAAQ,QAAgE;AAC9E,kBAAU,KAAK,OAAO,OAAO,QAAQ,CAAC;AACtC,cAAM,EAAE,IAAI,IAAI,IAAI,KAAK,YAAY,KAAK,OAAO,QAAQ,OAAO,SAAS;AAAA,UACvE,QAAQ,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,UACZ,cAAc,KAAK;AAAA,UACnB,SAAS,OAAO;AAAA,UAChB,UAAU,OAAO;AAAA,QACnB,CAAC;AACD,aAAK,MAAM,IAAI,OAAO,OAAO,EAAW;AACxC,aAAK,MAAM,IAAI,IAAI,GAAG;AAAA,MACxB;AAAA,MAEQ,YAAY,MAAgD;AAClE,eACE,KAAK,SAAS,KAAK,KAAK,MAAM,QAAQ,IAAI,KAAK;AAAA,UAC7C,MAAM,KAAK,MAAM;AAAA,UACjB,QAAQ,KAAK;AAAA,QACf;AAAA,MAEJ;AAAA,MAEQ,QAAQ,MAAsB;AACpC,eAAO,KAAK,SAAS,QAAQ,KAAK,MAAM,QAAQ,IAAI,KAAK,KAAK,MAAM;AAAA,MACtE;AAAA,MAEA,WAAoC;AAClC,cAAM,QAAiC,CAAC;AACxC,mBAAW,CAAC,QAAQ,MAAM,KAAK,KAAK,SAAS;AAC3C,gBAAM,OAAO,OAAO,SAAS,QAAQ;AACrC,cAAI,gBAAgB,YAAY,OAAQ,OAAM,KAAK,CAAC,QAAQ,KAAK,KAAe,CAAC;AAAA,QACnF;AACA,eAAO;AAAA,MACT;AAAA,MAEQ,SAAS,QAAyB;AACxC,cAAM,OAAO,KAAK,WAAW,IAAI,OAAO,MAAM;AAC9C,cAAM,SAAS,OAAO,SAAS,QAAQ;AACvC,YAAI,SAAS,UAAa,EAAE,kBAAkB,YAAY,QAAS,QAAO;AAC1E,eAAO,QAAQ;AACf;AAAA,UACE,OAAO,SAAS;AAAA,UAChB,CAAC,IAAI,WAAW,IAAI,WAAW,KAAK,OAAO,QAAQ,IAAI,MAAM;AAAA,QAC/D;AACA,eAAO;AAAA,MACT;AAAA,MAEA,OAAO,QAA0B;AAC/B,YAAI,OAAO,SAAS,WAAW;AAC7B,oBAAU,KAAK,OAAO,OAAO,QAAQ,CAAC;AACtC,eAAK,KAAK,IAAI,OAAO,KAAK;AAC1B;AAAA,QACF;AACA,YAAI,OAAO,SAAS,gBAAgB;AAClC,eAAK,KAAK,OAAO,OAAO,KAAK;AAC7B,cAAI,OAAO,QAAQ,KAAK,MAAM,OAAQ,MAAK,MAAM,IAAI,OAAO,OAAO,IAAI;AACvE;AAAA,QACF;AACA,YAAI,OAAO,SAAS,mBAAmB;AACrC,eAAK,QAAQ,MAAM;AACnB;AAAA,QACF;AACA,YAAI,OAAO,SAAS,QAAQ;AAC1B,cAAI,KAAK,QAAQ,IAAI,OAAO,MAAM,EAAG;AACrC,gBAAM,SAAS,KAAK,YAAY,OAAO,MAAM,KAAK,SAAS,OAAO,IAAI,GAAG,QAAQ,KAAK;AACtF,iBAAO,OAAO,KAAK,GAAI,OAAO,UAAU,CAAC,CAAE;AAC3C,eAAK,aAAa,KAAK,IAAI,KAAK,YAAY,OAAO,SAAS,CAAC;AAC7D;AAAA,QACF;AACA,cAAMD,SACJ,OAAO,WAAW,IACd,KAAK,MAAM,QAAQ,OAAO,IAAI,IAC9B,KAAK,OAAO,OAAO,MAAM,EAAE,SAAS,QAAQ,OAAO,IAAI;AAC7D,YAAI,OAAOA,WAAU,WAAY,OAAM,IAAI,QAAQ,GAAG,OAAO,IAAI,kBAAkB;AACnF,kBAAU,KAAK,OAAO,OAAO,QAAQ,CAAC;AACtC,aAAK,MAAM,IAAI,OAAO,OAAOA,MAAK;AAClC,aAAK,MAAM,IAAIA,QAAO,OAAO,KAAK;AAAA,MACpC;AAAA,MAEQ,SAAS,MAAkC;AACjD,cAAME,UAAS,KAAK,QAAQ,IAAI;AAChC,YAAIA,QAAQ,QAAOA;AACnB,cAAM,QAAQ,KAAK,KAAK,KAAK,IAAI;AACjC,YAAI,CAAC,MAAO,OAAM,IAAI,QAAQ,GAAG,IAAI,QAAQ;AAC7C,eAAO,IAAI,YAAY,OAAO,KAAK;AAAA,MACrC;AAAA,MAEQ,OAAO,QAAwB;AACrC,cAAM,IAAI,KAAK,QAAQ,IAAI,MAAM;AACjC,YAAI,CAAC,EAAG,OAAM,IAAI,QAAQ,kBAAkB,MAAM,EAAE;AACpD,eAAO;AAAA,MACT;AAAA,MAEQ,OAAOL,OAAc,KAAa,QAAmC;AAC3E,YAAIA,MAAK,SAAS,GAAG;AACnB,iBAAOA,MAAK,WAAW,GAAG,IAAI,UAAUA,KAAI,IAAI,UAAU,GAAG,GAAG,IAAIA,KAAI,EAAE;AAC5E,mBAAW,OAAO,CAAC,GAAG,OAAO,OAAO,OAAO,GAAG,GAAG,YAAY,GAAG;AAC9D,gBAAM,OAAO,UAAU,GAAG,IAAI,WAAW,GAAG,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,IAAIA,KAAI,EAAE;AAC9E,cAAI,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,EAAG,QAAO;AAAA,QAC5D;AACA,cAAM,IAAI,QAAQ,GAAGA,KAAI,aAAa;AAAA,MACxC;AAAA,MAEQ,KAAK,MAAc,KAAa,QAAmC;AACzE,cAAM,SAAS,KAAK,OAAO,IAAI,IAAI;AACnC,YAAI,OAAQ,QAAO;AACnB,cAAM,QAAQ,KAAK,KAAK,KAAK,IAAI;AACjC,YAAI,CAAC,MAAO,OAAM,IAAI,QAAQ,GAAG,IAAI,gBAAgB;AACrD,YAAI;AACJ,YAAI;AACF,mBAAS,IAAI,YAAY,OAAO,KAAK;AAAA,QACvC,SAAS,GAAG;AACV,gBAAM,IAAI,QAAQ,GAAG,IAAI,wBAAyB,EAAY,OAAO,GAAG;AAAA,QAC1E;AACA,cAAM,OAAO,WAAW,MAAM;AAC9B,YAAI,CAAC,KAAM,OAAM,IAAI,QAAQ,GAAG,IAAI,mCAAmC;AAEvE,cAAM,MAAM,KAAK,MAAM,GAAG,KAAK,YAAY,GAAG,CAAC,KAAK;AACpD,cAAM,SAAS,CAAC,KAAK,GAAG,QAAQ,GAAG,KAAK,YAAY,IAAI,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC,CAAC;AACpF,cAAM,SAAS,KAAK,OAAO;AAAA,UACzB,CAAC,MAAM,KAAK,KAAK,KAAK,OAAO,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,EAAE;AAAA,QAC7D;AACA,cAAM,aAAa,KAAK,SAAS,KAAK,YAAY,KAAK,KAAK,WAAW;AACvE,cAAM,EAAE,MAAM,WAAW,OAAO,IAAI,KAAK,YAAY,KAAK,SAAS;AACnE,cAAM,SAAqB;AAAA,UACzB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,GAAI,OAAO,SAAS,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,QACxC;AACA,cAAM,SAAS,KAAK,YAAY,MAAM,QAAQ,QAAQ,IAAI;AAC1D,eAAO,OAAO,KAAK,GAAG,MAAM;AAC5B,aAAK,YAAY,MAAM;AACvB,eAAO;AAAA,MACT;AAAA,MAEQ,YACN,MACA,QACA,IACA,MACQ;AACR,cAAM,OAAO,WAAW,MAAM;AAC9B,kBAAU,KAAK,OAAO,GAAG,YAAY,KAAK,SAAS;AACnD,cAAM,UAA6B,CAAC;AACpC,cAAM,MAA+C;AAAA,UACnD,QAAQ,KAAK;AAAA,UACb,2BAA2B,KAAK;AAAA,UAChC,iBAAiB,KAAK;AAAA,UACtB,eAAe,IAAI,YAAY,OAAO,EAAE,OAAO,OAAO,SAAS,MAAM,GAAG,GAAG,UAAU;AAAA,UACrF,cAAc,IAAI,YAAY,OAAO,EAAE,OAAO,OAAO,SAAS,MAAM,GAAG,GAAG,SAAS;AAAA,UACnF,aAAa,KAAK;AAAA,UAClB,iBAAiB,KAAK;AAAA,QACxB;AACA,cAAM,SAA6C,CAAC;AACpD,cAAM,UAA8C,CAAC;AACrD,cAAM,SAAiB;AAAA,UACrB,QAAQ,GAAG;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV,YAAY,GAAG;AAAA,UACf,WAAW,GAAG;AAAA,UACd,QAAQ,CAAC;AAAA,QACX;AACA,mBAAW,OAAO,YAAY,OAAO,QAAQ,MAAM,GAAG;AACpD,cAAI,IAAI,WAAW,SAAS,IAAI,SAAS,cAAc,EAAE,IAAI,QAAQ,MAAM;AACzE,gBAAI,IAAI,IAAI,IAAI,KAAK,eAAe,IAAI,IAAI;AAAA,UAC9C,WAAW,IAAI,WAAW,WAAW;AACnC,kBAAM,IAAI,IAAI,YAAY,OAAO,EAAE,OAAO,OAAO,SAAS,KAAK,GAAG,CAAC;AACnE,mBAAO,IAAI,IAAI,IAAI;AAEnB,oBAAQ,KAAK,MAAM;AACjB,gBAAE,QAAQ,KAAK,cAAc,IAAI,IAAI;AAAA,YACvC,CAAC;AAAA,UACH,WAAW,IAAI,WAAW,YAAY;AACpC,kBAAM,IAAI,IAAI,YAAY,OAAO,EAAE,OAAO,OAAO,SAAS,KAAK,GAAG,CAAC;AACnE,oBAAQ,IAAI,IAAI,IAAI;AACpB,oBAAQ,KAAK,MAAM;AACjB,gBAAE,QAAQ,KAAK,WAAW,IAAI,IAAI;AAAA,YACpC,CAAC;AAAA,UACH;AAAA,QACF;AACA,cAAM,UAA+B;AAAA,UACnC,GAAG,KAAK,KAAK,YAAY,MAAM;AAAA,UAC/B;AAAA,UACA,WAAW;AAAA,UACX,YAAY;AAAA,QACd;AACA,eAAO,WAAW,IAAI,YAAY,SAAS,QAAQ,OAAO;AAC1D,aAAK,MAAM,SAAS,MAAM,KAAK,KAAK,KAAK,IAAI,GAAG,OAAO,UAAU,KAAK,OAAO,GAAG,SAAS;AACzF,aAAK,QAAQ,IAAI,GAAG,QAAQ,MAAM;AAClC,cAAM,QAAQ,KAAK,OAAO,IAAI,IAAI;AAClC,YAAI,CAAC,SAAS,GAAG,SAAS,MAAM,OAAQ,MAAK,OAAO,IAAI,MAAM,MAAM;AACpE,mBAAWE,YAAW,QAAS,CAAAA,SAAQ;AACvC,YAAI,MAAM;AACR,eAAK,OAAO,UAAU,0BAA0B;AAChD,eAAK,OAAO,UAAU,mBAAmB;AAAA,QAC3C,WAAW,CAAC,KAAK,SAAS,MAAM,GAAG;AACjC,eAAK,OAAO,UAAU,kBAAkB;AAAA,QAC1C;AACA,eAAO;AAAA,MACT;AAAA,MAEQ,eAAeF,OAAuC;AAC5D,cAAM,MAAM,KAAK,KAAKA,KAAI;AAC1B,YAAI,OAAO,OAAO,IAAI,CAAC,MAAM,WAAY,QAAO,IAAI,CAAC;AACrD,YAAIM;AACJ,eAAO,IAAI,SAAoB;AAC7B,cAAI,CAACA,WAAU;AACb,kBAAM,QAAQ,KAAK,KAAKN,KAAI;AAE5B,gBAAI,CAAC,SAAS,OAAO,MAAM,CAAC,MAAM;AAChC,oBAAM,IAAI,YAAY,aAAa,qBAAqBA,KAAI,EAAE;AAChE,YAAAM,YAAW,MAAM,CAAC;AAAA,UACpB;AACA,iBAAOA,UAAS,GAAG,IAAI;AAAA,QACzB;AAAA,MACF;AAAA,MAEQ,cAAcN,OAAsB;AAC1C,cAAM,QAAQ,KAAK,KAAKA,KAAI;AAC5B,YAAI,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,YAAY,QAAS,QAAO;AAChE,eAAO,KAAK,OAAO,MAAM,CAAC,CAAC,IAAK,MAAM,CAAC,EAAE;AAAA,MAC3C;AAAA,MAEQ,WAAWA,OAAsB;AACvC,cAAM,QAAQ,KAAK,KAAKA,KAAI;AAC5B,YAAI,CAAC,SAAS,OAAO,MAAM,CAAC,MAAM,WAAY,QAAO;AACrD,eAAO,KAAK,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,GAAGA,KAAI;AAAA,MAC3C;AAAA,MAEQ,KAAKA,OAA6C;AACxD,cAAM,SAAS,KAAK,MAAM,QAAQA,KAAI;AACtC,YAAI,WAAW,OAAW,QAAO,CAAC,GAAG,MAAM;AAC3C,mBAAW,KAAK,KAAK,QAAQ,OAAO,GAAG;AACrC,gBAAM,IAAI,EAAE,UAAU,QAAQA,KAAI;AAClC,cAAI,MAAM,OAAW,QAAO,CAAC,EAAE,QAAQ,CAAC;AAAA,QAC1C;AACA,eAAO;AAAA,MACT;AAAA,MAEQ,OAAO,GAAWA,OAAc,MAAkD;AACxF,YAAI,KAAK,IAAI,EAAE,MAAM,EAAG,QAAO;AAC/B,aAAK,IAAI,EAAE,MAAM;AACjB,cAAM,IAAI,EAAE,SAAS,QAAQA,KAAI;AACjC,YAAI,MAAM,OAAW,QAAO,CAAC,EAAE,QAAQ,CAAC;AACxC,mBAAW,KAAK,EAAE,QAAQ;AACxB,gBAAM,QAAQ,KAAK,OAAO,KAAK,OAAO,CAAC,GAAGA,OAAM,IAAI;AACpD,cAAI,MAAO,QAAO;AAAA,QACpB;AACA,eAAO;AAAA,MACT;AAAA,MAEQ,OAAO,QAAwB;AACrC,eAAO,WAAW,IAAI,KAAK,aAAa,KAAK,OAAO,MAAM,EAAE;AAAA,MAC9D;AAAA,MAEQ,UAAU;AAAA,MAEV,aAAmB;AACzB,iBAAS,IAAI,KAAK,SAAS,IAAI,KAAK,MAAM,QAAQ,KAAK;AACrD,gBAAM,KAAK,KAAK,MAAM,IAAI,CAAC;AAC3B,cAAI,MAAM,CAAC,KAAK,MAAM,IAAI,EAAE,EAAG,MAAK,MAAM,IAAI,IAAI,CAAC;AAAA,QACrD;AACA,aAAK,UAAU,KAAK,MAAM;AAAA,MAC5B;AAAA,MAEQ,KAAK,IAAa,QAAgBA,OAAsB;AAC9D,aAAK,WAAW;AAChB,cAAM,QAAQ,KAAK,MAAM,IAAI,EAAE;AAC/B,YAAI,UAAU,OAAW,QAAO;AAChC,cAAMI,SAAQ,KAAK,QAAQ,CAAC;AAC5B,kBAAU,KAAK,OAAOA,SAAQ,CAAC;AAC/B,aAAK,MAAM,IAAIA,QAAO,EAAW;AACjC,aAAK,MAAM,IAAI,IAAIA,MAAK;AACxB,aAAK,YAAY,EAAE,MAAM,QAAQ,OAAAA,QAAO,QAAQ,MAAAJ,MAAK,CAAC;AACtD,eAAOI;AAAA,MACT;AAAA,MAEQ,UAAU,OAAmC;AACnD,cAAM,UAAU,KAAK,MAAM;AAC3B,cAAM,SAAS,SAAS;AACxB,YAAI,OAAO,WAAW,WAAY,QAAO;AACzC,cAAM,QAAQ,SAAS;AACvB,YAAI,OAAO,UAAU,cAAe,MAAuB,MAAM,EAAG,QAAO;AAC3E,cAAM,KAAM,OAAkB,GAAG,KAAK,MAAM;AAC5C,eAAO,OAAO,IAAI,SAAY;AAAA,MAChC;AAAA,MAEQ,SAAS,MAAc,WAA2B;AACxD,YAAI,SAAS,EAAG,QAAO;AACvB,cAAM,KAAK,KAAK,IAAI,WAAW,EAAE;AACjC,cAAM,OAAO,KAAK,UAAU,OAAO,KAAK,EAAE;AAC1C,YAAI,SAAS,OAAW,QAAO,MAAM,MAAM,EAAE;AAC7C,cAAMN,SAAQ,KAAK,MAAM,QAAQ,KAAKC,QAAO,KAAK,MAAMA,KAAI;AAC5D,eAAO,MAAM,KAAK,OAAO,KAAKD,MAAK,IAAIC,OAAM,EAAE;AAAA,MACjD;AAAA,IACF;AAAA;AAAA;;;AC7fO,SAAS,UACd,MACAQ,QACA,UACA,IACA,aACS;AACT,QAAM,WAAW,YAAY,IAAI,IAAI;AACrC,aAAS;AACP,UAAM,QAAQ,cAAc,KAAK,IAAI,gBAAgB,EAAE,IAAI;AAC3D,QAAI,QAAQ,KAAK,MAAMA,QAAO,UAAU,KAAK,MAAM,YAAa,QAAO;AACvE,QAAI,cAAc,EAAG,QAAO;AAC5B,SAAK,WAAW,YAAY,IAAI;AAChC,QAAI,MAAM,EAAG,QAAO;AAAA,EACtB;AACF;AAufA,SAAS,YAAY,KAAqB;AACxC,QAAM,QAAQ,YAAY,GAAG;AAC7B,MAAI,UAAU,OAAW,OAAM,IAAI,UAAU,QAAQ;AACrD,SAAO;AACT;AAEA,SAAS,OAAO,IAAoB;AAClC,SAAO,KAAK,KAAK,OAAO,EAAE,IAAI,GAAG;AACnC;AAhjBA,IAeM,oBACA,eACA,WACA,iBAEAC,SACAC,OAWA,gBAmBA,YACA,mBACA,aACA,aAEO;AAxDb;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA,IAAM,qBAAqB;AAC3B,IAAM,gBAAgB;AACtB,IAAM,YAAY,CAAC,SAAS,QAAQ,QAAQ,SAAS,QAAQ;AAC7D,IAAM,kBAAkB,MAAM;AAE9B,IAAMD,UAAS;AACf,IAAMC,QAAO;AAWb,IAAM,iBAAiB;AAmBvB,IAAM,aAAa;AACnB,IAAM,oBAAoB;AAC1B,IAAM,cAAc;AACpB,IAAM,cAAc;AAEb,IAAM,YAAN,MAAM,WAAU;AAAA,MACJ;AAAA,MAEjB;AAAA,MAEA;AAAA,MAEA,QAAQ,IAAI,UAAU;AAAA,MAEtB;AAAA,MAEA;AAAA,MAEiB;AAAA,MACA;AAAA,MACjB,YAAY,MAAgB,QAAwB,QAA6B;AAC/E,aAAK,OAAO;AACZ,aAAK,SAAS;AACd,aAAK,UAAU,IAAI;AAAA,UACjB;AAAA,UACA;AAAA,UACA,OAAO,KAAK,SAAS,OAAO,cAAc;AAAA,QAC5C;AAEA,cAAM,OAAO,SAAU,YAAY,MAAM,KAAK,IAAK;AACnD,YAAI,SAAS,OAAW,MAAK,cAAc,QAAQ;AACnD,YAAI,SAAS,OAAW,MAAK,QAAQ,QAAQ;AAC7C,YAAI,UAAU,CAAC,YAAY,OAAO,QAAQ,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,gBAAgB,GAAG;AAC1F,eAAK,IAAI,kBAAkB;AAE3B,eAAK,kBAAkB,YAAY,MAAM,KAAK,KAAK;AAAA,QACrD;AAAA,MACF;AAAA,MAEA,IAAY,MAAM;AAChB,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,MAEQ,IAAI,KAAa,KAAqB;AAC5C,cAAM,IAAI,KAAK,IAAI,OAAO,KAAK,GAAG;AAClC,eAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI;AAAA,MAC7C;AAAA,MAEQ,SAAS,KAAa,OAAyB;AACrD,cAAM,IAAI,KAAK,IAAI,KAAK;AACxB,eAAO,MAAM;AAAA,UAAK,EAAE,QAAQ,MAAM;AAAA,UAAG,CAAC,GAAG,MACvC,KAAK,IAAI,QAAQ,EAAE,UAAU,MAAM,IAAI,GAAG,IAAI,CAAC;AAAA,QACjD;AAAA,MACF;AAAA,MAEQ,WAAW,GAAW,IAAY,GAAW,IAAY,GAAW,IAAmB;AAC7F,YAAI;AACF,iBAAO,KAAK,QAAQ,KAAK;AAAA,YACvB,MAAM,KAAK,IAAI,GAAG,EAAE;AAAA,YACpB,MAAM,WAAU,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;AAAA,YACrC,KAAK,WAAU,IAAI,MAAM,IAAI,SAAY,WAAU,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AAAA,YACzE,QAAQ;AAAA,YACR,MAAM;AAAA,UACR,CAAC;AAAA,QACH,SAAS,KAAK;AACZ,cAAI,eAAe,SAAU,OAAM;AACnC,gBAAMC,QAAO,eAAe,YAAY,IAAI,OAAQ,KAAmC;AACvF,gBAAM,IAAI,SAAS,YAAY,OAAOA,UAAS,WAAWA,QAAO,SAAS,CAAC;AAAA,QAC7E;AAAA,MACF;AAAA,MAEA,OAAe,IAAI,SAA4E;AAC7F,YAAI,CAAC,QAAS,QAAO;AACrB,cAAM,MAA8B,CAAC;AACrC,mBAAW,QAAQ,SAAS;AAC1B,gBAAM,KAAK,KAAK,QAAQ,GAAG;AAC3B,cAAI,KAAK,EAAG,KAAI,KAAK,MAAM,GAAG,EAAE,CAAC,IAAI,KAAK,MAAM,KAAK,CAAC;AAAA,QACxD;AACA,eAAO;AAAA,MACT;AAAA,MAEA,OAAe,MAAM,MAAwB;AAC3C,eAAO,KAAK,MAAM,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,QAAQ,SAAS,MAAM,IAAI,IAAI,SAAS,CAAC;AAAA,MACpF;AAAA,MAEQ,SAAS,KAAa,OAA4B;AACxD,cAAM,IAAI,KAAK,IAAI,KAAK;AACxB,eAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,GAAG,CAAC,GAAG,MAAM;AAC7C,gBAAM,IAAI,MAAM,IAAI;AACpB,gBAAM,MAAM,UAAU,EAAE,SAAS,CAAC,CAAC;AACnC,cAAI,CAAC,IAAK,OAAM,IAAI,UAAU,QAAQ;AACtC,iBAAO;AAAA,YACL;AAAA,YACA,IAAI,EAAE,UAAU,IAAI,GAAG,IAAI;AAAA,YAC3B,OAAO,EAAE,UAAU,IAAI,GAAG,IAAI;AAAA,YAC9B,MAAM,KAAK,IAAI,EAAE,UAAU,IAAI,IAAI,IAAI,GAAG,EAAE,UAAU,IAAI,IAAI,IAAI,CAAC;AAAA,YACnE,QAAQ,EAAE,UAAU,IAAI,IAAI,IAAI;AAAA,YAChC,cAAc,EAAE,aAAa,IAAI,IAAI,IAAI,IAAI,qBAAqB;AAAA,YAClE,SAAS,EAAE,UAAU,IAAI,IAAI,IAAI,IAAI,QAAQ,YAAY;AAAA,UAC3D;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA,UAAwC;AACtC,eAAO,KAAK;AAAA,UACV,GAAG,KAAK,eAAe;AAAA,UACvB,GAAG,KAAK,UAAU;AAAA,UAClB,GAAG,KAAK,eAAe;AAAA,UACvB,GAAG,KAAK,cAAc;AAAA,UACtB,GAAG,KAAK,UAAU;AAAA,UAClB,kBAAkB,CAAC,QAAgB;AACjC,gBAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,UAAU,SAAS;AAC/C,iBAAK,IAAI,KAAK,EAAE,UAAU,KAAK,KAAK,OAAO,gBAAgB,GAAG,IAAI;AAAA,UACpE;AAAA,UACA,iBAAiB,CACf,SACAH,QACA,UACA,UACA,aACA,aACA,aACG;AACH,gBAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,UAAU,SAAS;AAC/C,kBAAM,SAAS,WAAW,KAAK,IAAI,MAAM,UAAU,QAAQ,CAAC;AAC5D,kBAAM,UAAU,WAAW,KAAK,IAAI,MAAM,aAAa,WAAW,CAAC;AACnE,gBAAI,CAAC,UAAU,CAAC,QAAS,OAAM,IAAI,UAAU,QAAQ;AACrD,gBAAI;AACF,mBAAK,OAAO,eAAe,EAAE,OAAAA,QAAO,SAAS,UAAU,QAAQ,QAAQ,CAAC;AAAA,YAC1E,SAAS,GAAG;AACV,kBAAI,aAAa,QAAS,OAAM,IAAI,UAAU,QAAQ;AACtD,oBAAM;AAAA,YACR;AAAA,UACF;AAAA,UACA,cAAc,CAACA,WAAkB;AAC/B,gBAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,UAAU,SAAS;AAC/C,iBAAK,OAAO,YAAYA,MAAK;AAAA,UAC/B;AAAA,UACA,cAAc,IAAI,MAChB,KAAK;AAAA,YACH,EAAE,KAAK,KAAK,KAAK,OAAO,MAAM,KAAK,OAAO,OAAO,KAAK,MAAM;AAAA,YAC5D,GAAI;AAAA,UACN;AAAA,UACF,GAAG,mBAAmB,KAAK,MAAM,KAAK,KAAK,QAAQ,CAAC;AAAA,UACpD,GAAG,kBAAkB,KAAK,IAAI;AAAA,QAChC,CAAC;AAAA,MACH;AAAA,MAEA,WAAyC;AACvC,cAAM,EAAE,IAAI,IAAI,KAAK;AACrB,eAAO,KAAK;AAAA,UACV,aAAa,CAAC,MAAc,OAAe,KAAK,IAAI,SAAS,MAAM,IAAI,IAAI;AAAA,UAC3E,UAAU,CAAC,OAAe;AACxB,kBAAM,IAAI,IAAI,IAAI,EAAE;AACpB,gBAAI,EAAE,SAAS,SAAS,CAAC,EAAE,QAAS,KAAI,MAAM,EAAE;AAAA,UAClD;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEQ,iBAA+C;AACrD,cAAM,EAAE,MAAM,IAAI,IAAI;AACtB,eAAO;AAAA,UACL,YAAY,CAACG,UAAiB;AAC5B,kBAAM,IAAI,SAASA,KAAI;AAAA,UACzB;AAAA,UAEA,wBAAwB,CAAC,QAAgB,KAAK,IAAI,KAAK,EAAE,UAAU,KAAK,GAAG,IAAI;AAAA,UAC/E,kBAAkB,MAAM,EAAE;AAAA,UAE1B,iBAAiB,CAACC,OAAc,QAC9B,KAAK,KAAK,SAAS,SAAS,KAAK,IAAIA,OAAM,GAAG,CAAC;AAAA,UAEjD,qBAAqB,CAAC,KAAa,UAAkB,WACnD,KAAK,KAAK,EAAE,OAAO,KAAK;AAAA,YACtB,IAAI;AAAA,YACJ,KAAK,YAAY,GAAG;AAAA,YACpB,IAAI,OAAO,QAAQ;AAAA,YACnB,QAAQ,WAAW;AAAA,UACrB,CAAC;AAAA,UAEH,sBAAsB,CAAC,KAAa,SAAiB,UAAkB,WAAmB;AACxF,kBAAM,KAAK,OAAO,QAAQ;AAC1B,iBAAK,EAAE,OAAO,KAAK;AAAA,cACjB,IAAI;AAAA,cACJ,KAAK,YAAY,GAAG;AAAA,cACpB;AAAA,cACA,SAAS,OAAO,OAAO;AAAA,cACvB,QAAQ,WAAW,KAAK,KAAK;AAAA,YAC/B,CAAC;AAAA,UACH;AAAA,UACA,SAAS,CAAC,QAAgB,KAAK,IAAI,KAAK,EAAE,UAAU,KAAK,KAAK,EAAE,KAAK,IAAI;AAAA,UACzE,aAAa,CAAC,KAAa,QAAgB;AACzC,gBAAI,QAAQ,KAAK,QAAQ,KAAK,EAAE,IAAK,OAAM,IAAI,UAAU,OAAO;AAChE,gBAAI,KAAK,EAAE,UAAU,KAAK,KAAK,EAAE,SAAS,KAAK,KAAK,EAAE,QAAQ,GAAG,IAAI;AAAA,UACvE;AAAA,UACA,QAAQ,CAAC,KAAa,WAAmB;AACvC,gBAAI,KAAK,SAAS,KAAK,IAAI,QAAQ,CAAC,KAAK,IAAI,KAAK,MAAM,EAAG,QAAO,EAAE;AACpE,kBAAM,QAAQ,IAAI,YAAY,EAAE,OAAO,KAAK,GAAG;AAC/C,kBAAM,MAAM,IAAI,KAAK,EAAE,UAAU,QAAQ,IAAI;AAC7C,gBAAI,KAAK,EAAE,UAAU,QAAQ,MAAM,QAAQ,IAAI;AAC/C,gBAAI,MAAM,SAAS,IAAK,QAAO,EAAE;AACjC,gBAAI,MAAM,KAAK,MAAM,MAAM,EAAE,IAAI,KAAK;AACtC,gBAAI,MAAM,SAAS,IAAK,KAAI,KAAK,EAAE,SAAS,MAAM,MAAM,QAAQ,CAAC;AACjE,mBAAO,EAAE;AAAA,UACX;AAAA,UACA,OAAO,CAAC,KAAa,QAAgB;AACnC,kBAAM,OAAO,KAAK,IAAI,QAAQ,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC;AACnD,gBAAI,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,EAAE,YAAa,OAAM,IAAI,UAAU,SAAS;AACpE,iBAAK,IAAI,MAAM,IAAI;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,YAA0C;AAChD,cAAM,EAAE,MAAM,IAAI,IAAI;AACtB,cAAM,WAAW,KAAK,QAAQ;AAC9B,eAAO;AAAA,UACL,QAAQ,CAAC,IAAY,QACnB,KAAK,IAAI,KAAK,EAAE,UAAU,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI;AAAA,UACjE,SAAS,CAAC,IAAY,KAAa,SAAiB,QAClD,KAAK,IAAI,KAAK,EAAE,UAAU,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,YAAY,CAAC,GAAG,IAAI;AAAA,UAC3E,SAAS,CAAC,MAAc,SAAiB;AACvC,kBAAM,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK;AAC7B,gBAAI,KAAK,EAAE,UAAU,MAAM,GAAG,IAAI;AAClC,gBAAI,KAAK,EAAE,UAAU,MAAM,GAAG,IAAI;AAAA,UACpC;AAAA,UACA,gBAAgB,CAAC,IAAY,QAAgB;AAC3C,iBAAK,IAAI,IAAI,EAAE;AACf,gBAAI,KAAK,EAAE,UAAU,KAAK,KAAK,IAAI,QAAQ,IAAI,EAAE,IAAI,qBAAqB,GAAG,IAAI;AAAA,UACnF;AAAA,UACA,gBAAgB,CAAC,IAAY,UAC3B,KAAK,KAAK,IAAI,WAAW,KAAK,QAAQ,wBAAwB,CAAC;AAAA,UACjE,YAAY,CACV,OACAC,SACA,GACA,GACA,QACA,QACA,YACA,SACA,YACA,QACG;AACH,kBAAM,IAAI,SAAS,UAAU,OAAOA,SAAQ,GAAG,GAAG,QAAQ,QAAQ,YAAY,SAAS,GAAG;AAC1F,gBAAI,MAAM,EAAE,WAAW,aAAa;AAClC,mBAAK,IAAI,WAAW,IAAI,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;AAC3D,mBAAO;AAAA,UACT;AAAA,UACA,SAAS,CAAC,QAAgB,KAAK,KAAK,OAAO,GAAG;AAAA,UAC9C,SAAS,CAAC,QAAgB,KAAK,KAAK,OAAO,GAAG;AAAA,QAChD;AAAA,MACF;AAAA,MAEQ,iBAA+C;AACrD,cAAM,EAAE,KAAK,SAAAC,SAAQ,IAAI;AACzB,eAAO;AAAA,UACL,WAAW,CAAC,OAAe,WAAmBA,SAAQ,KAAK,MAAM;AAAA,UACjE,kBAAkB,CAAC,SAAiB,WAAmB;AACrD,kBAAM,OAAO,KAAK,OAAO,QAAQ;AACjC,gBAAI,SAAS,OAAW,QAAO,KAAK,OAAO,WAAW,SAAS,MAAM;AACrE,gBAAI,KAAK,EAAE,aAAa,QAAQ,OAAO,IAAI,GAAG,IAAI;AAClD,mBAAO,EAAE;AAAA,UACX;AAAA,UACA,eAAe,CAAC,SAAiB,QAAgB,KAAK,KAAK,OAAO,QAAQ,SAAS,GAAG;AAAA,UACtF,WAAW,CAAC,QAAgB,OAAe,cACzC,KAAKA,SAAQ,KAAK,QAAQ,OAAO,SAAS;AAAA,UAC5C,aAAa,CAAC,KAAa,QAAgB;AACzC,kBAAM,QAAQ,QAAQ,IAAI,IAAI,YAAY,GAAG;AAC7C,gBAAI,UAAU,OAAW,OAAM,IAAI,UAAU,QAAQ;AACrD,gBAAI,QAAQ,KAAK,KAAK,EAAE,OAAO,UAAU,KAAK,KAAK,KAAK,UAAU,KAAK,EAAG;AAC1E,iBAAK,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,aAAa,KAAK,KAAK,MAAM,CAAC;AAAA,UAC9D;AAAA,UAEA,WAAW,CAAC,GAAW,IAAY,GAAW,OAC5C,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC;AAAA,UACpC,YAAY,CAAC,GAAW,IAAY,GAAW,IAAY,GAAW,OACpE,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE;AAAA,UAErC,YAAY,CACV,GACA,IACA,GACA,IACA,GACA,IACA,QACA,GACA,OAEAA,SAAQ,KAAK;AAAA,YACX,MAAM,KAAK,IAAI,GAAG,EAAE;AAAA,YACpB,MAAM,WAAU,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;AAAA,YACrC,KAAK,WAAU,IAAI,WAAU,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AAAA,YACnD,QAAQ,WAAW;AAAA,YACnB,MAAM,KAAK,IAAI,GAAG,EAAE;AAAA,UACtB,CAAC;AAAA,UAEH,YAAY,CACV,GACA,IACA,GACA,IACA,GACA,IACA,QACA,GACA,OAEAA,SAAQ,KAAK;AAAA,YACX,MAAM,KAAK,IAAI,GAAG,EAAE;AAAA,YACpB,MAAM,KAAK,SAAS,GAAG,EAAE;AAAA,YACzB,KAAK,WAAU,IAAI,MAAM,IAAI,SAAY,KAAK,SAAS,GAAG,EAAE,CAAC;AAAA,YAC7D,QAAQ,WAAW;AAAA,YACnB,MAAM,KAAK,IAAI,GAAG,EAAE;AAAA,UACtB,CAAC;AAAA,UACH,aAAa,IAAI,SAAmB;AAClC,kBAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;AAChE,kBAAM,MAAMA,SAAQ,MAAM;AAAA,cACxB,MAAM,KAAK,IAAI,GAAG,EAAE;AAAA,cACpB,MAAM,WAAU,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;AAAA,cACrC,KAAK,WAAU,IAAI,WAAU,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AAAA,cACnD,QAAQ,WAAW;AAAA,cACnB,MAAM,KAAK,IAAI,GAAG,EAAE;AAAA,cACpB,KAAK,KAAK,SAAS,KAAK,GAAG;AAAA,YAC7B,CAAC;AACD,gBAAI,KAAK,EAAE,UAAU,KAAK,KAAK,IAAI;AAAA,UACrC;AAAA,UACA,aAAa,IAAI,SAAmB;AAClC,kBAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;AAChE,kBAAM,MAAMA,SAAQ,MAAM;AAAA,cACxB,MAAM,KAAK,IAAI,GAAG,EAAE;AAAA,cACpB,MAAM,KAAK,SAAS,GAAG,EAAE;AAAA,cACzB,KAAK,WAAU,IAAI,MAAM,IAAI,SAAY,KAAK,SAAS,GAAG,EAAE,CAAC;AAAA,cAC7D,QAAQ,WAAW;AAAA,cACnB,MAAM,KAAK,IAAI,GAAG,EAAE;AAAA,cACpB,KAAK,KAAK,SAAS,KAAK,GAAG;AAAA,YAC7B,CAAC;AACD,gBAAI,KAAK,EAAE,UAAU,KAAK,KAAK,IAAI;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,YAA0C;AAChD,cAAM,EAAE,KAAK,KAAK,IAAI;AACtB,cAAMC,UAAS,CAACC,UAAiB,KAAa,QAAwB;AACpE,cAAI,MAAM,GAAG;AACX,kBAAM,QAAQ,IAAI,YAAY,EAAE,OAAOA,QAAO,EAAE,SAAS,GAAG,MAAM,CAAC;AACnE,gBAAI,MAAM,KAAK,MAAM,MAAM,EAAE,IAAI,KAAK;AACtC,gBAAI,KAAK,EAAE,SAAS,MAAM,MAAM,QAAQ,CAAC;AAAA,UAC3C;AACA,iBAAO,EAAE;AAAA,QACX;AACA,cAAM,SAAS,CACb,KACA,KACA,IACA,QACW;AACX,cAAI,CAAC,KAAK,OAAQ,QAAOD,QAAO,oCAAoC,KAAK,GAAG;AAC5E,cAAI;AACF,gBAAI,GAAG,KAAK,MAAM,CAAC;AACnB,mBAAO,EAAE;AAAA,UACX,SAAS,GAAG;AACV,gBAAI,aAAa,QAAS,QAAOA,QAAO,EAAE,SAAS,KAAK,GAAG;AAC3D,kBAAM;AAAA,UACR;AAAA,QACF;AACA,eAAO;AAAA,UACL,QAAQ,CACN,GACA,IACA,QACA,KACA,KACA,IACA,IACA,QACG;AACH,gBAAI,MAAM,GAAG;AACX,kBAAI,CAAC,KAAK,OAAQ,QAAOA,QAAO,oCAAoC,KAAK,GAAG;AAC5E,kBAAI,KAAK,EAAE,UAAU,KAAK,aAAa,IAAI;AAC3C,qBAAO,EAAE;AAAA,YACX;AACA,mBAAO;AAAA,cACL;AAAA,cACA;AAAA,cACA,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,KAAK,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC;AAAA,cACpF,CAAC,MAAM,KAAK,IAAI,KAAK,EAAE,UAAU,KAAK,MAAM,IAAI,cAAc,GAAG,IAAI;AAAA,YACvE;AAAA,UACF;AAAA,UAEA,OAAO,CAAC,QAAgB,GAAW,IAAY,KAAa,KAAa,QACvE;AAAA,YACE;AAAA,YACA;AAAA,YACA,CAAC,MAAM,EAAE,OAAO,WAAW,cAAc,IAAI,QAAQ,KAAK,IAAI,GAAG,EAAE,CAAC;AAAA,YACpE,CAAC,MAAM,KAAK,IAAI,KAAK,EAAE,UAAU,KAAK,GAAG,IAAI;AAAA,UAC/C;AAAA,UACF,mBAAmB,CAAC,WAClB,KAAK,WAAW,WAAW,eAAgB,WAAW,KAAK,CAAC,KAAK,OAAO,QAAQ,MAAM,KAClF,EAAE,UACF,EAAE;AAAA,QACV;AAAA,MACF;AAAA,MAEQ,gBAA8C;AACpD,cAAM,EAAE,KAAK,KAAK,IAAI;AACtB,cAAM,MAAM,MAAM,IAAI,WAAW,IAAI,KAAK,EAAE,MAAM;AAClD,eAAO;AAAA,UACL,WAAW,CAAC,QACV,KAAK,IAAI,KAAK,EAAE,UAAU,KAAK,KAAK,SAAS,OAAO,UAAU,IAAI;AAAA,UACpE,oBAAoB,CAAC,QACnB,KAAK,IAAI,KAAK,EAAE,UAAU,KAAK,KAAK,SAAS,YAAY,KAAK,GAAG,IAAI;AAAA,UAEvE,aAAa,CAACJ,UAAiB;AAC7B,gBAAI,KAAK,WAAW,KAAK,QAAQ,QAAQ,SAAU,OAAM,IAAI,WAAW;AACxE,kBAAM,IAAI,SAASA,KAAI;AAAA,UACzB;AAAA,UAEA,eAAe,CAAC,KAAa,QAAgB;AAC3C,gBAAI,EAAE,KAAK,SAAS,MAAM,GAAG,KAAK,QAAQ,UAAW,OAAM,IAAI,UAAU,OAAO;AAChF,kBAAM,QAAQ,YAAY,GAAG;AAC7B,gBAAI,KAAK,UAAU,KAAK,EAAG;AAC3B,iBAAK,EAAE,OAAO,KAAK,EAAE,IAAI,eAAe,KAAK,KAAK,MAAM,CAAC;AAAA,UAC3D;AAAA,UAEA,iBAAiB,CAAC,UAAkB,WAAmB;AACrD,gBAAI,CAAC,KAAK,QAAS,QAAO,EAAE;AAC5B,kBAAM,MAAM,KAAK,QAAQ,MAAM,QAAQ;AACvC,gBAAI,MAAM,EAAG,QAAO,EAAE;AACtB,gBAAI,KAAK,EAAE,UAAU,QAAQ,KAAK,IAAI;AACtC,mBAAO,EAAE;AAAA,UACX;AAAA,UACA,YAAY,CAAC,KAAa,UAAkB,YAAoB,aAAqB;AACnF,kBAAM,IAAI,IAAI,KAAK;AACnB,kBAAM,QAAQ,eAAe,KAAK,EAAE,SAAS,UAAU,MAAM;AAC7D,kBAAM,KAAK,QACP,OAAO,EAAE,aAAa,aAAa,GAAG,IAAI,CAAC,IAAI,MAC/C,OAAO;AACX,kBAAM,QACJ,KAAK,WAAW,UAAU,IAAI,GAAG,OAAO,GAAG,WAAW,GAAG,IAAI,KAAK,WAAW;AAC/E,cAAE,SAAS,UAAU,QAAQ,IAAI,CAAC;AAAA,UACpC;AAAA,UAEA,YAAY,CAAC,KAAa,aAAqB;AAC7C,oBAAQ,OAAO,IAAI,GAAG,OAAO,GAAG,CAAC;AACjC,gBAAI,KAAK,EAAE,SAAS,UAAU,CAAC;AAAA,UACjC;AAAA,UACA,gBAAgB,CAAC,KAAa,aAAqB;AACjD,oBAAQ,OAAO,IAAI,GAAG,OAAO,CAAC;AAC9B,gBAAI,KAAK,EAAE,SAAS,UAAU,CAAC;AAAA,UACjC;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,QAA4B;AAClC,mBAAW,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG;AAC1B,gBAAM,IAAI,KAAK,KAAK,IAAI,KAAK,EAAE;AAC/B,cAAI,GAAG,SAAS,YAAY,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,MAAM,MAAO,QAAO;AAAA,QAC1E;AACA,eAAO,KAAK,KAAK,IAAI,UAAU,EAAE,KAAK,CAAC,OAAO,KAAK,CAAC;AAAA,MACtD;AAAA,MAEQ,OAAO,KAAmB;AAChC,cAAM,EAAE,MAAM,IAAI,IAAI;AACtB,aAAK,cAAc;AACnB,cAAM,IAAI,IAAI,KAAK;AACnB,YAAI,MAAM,KAAK,EAAE,EAAE,KAAK,CAAC;AACzB,cAAM,KAAK,KAAK,MAAM;AACtB,cAAM,QAAQ,CAAC,MAAc;AAC3B,gBAAM,IAAI,KAAK,IAAI,KAAK,CAAC;AACzB,iBAAO,GAAG,SAAS,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,MAAM,QAAQ,IAAI;AAAA,QACrE;AACA,UAAE,SAAS,MAAM,IAAI,MAAM,CAAC,CAAC;AAC7B,UAAE,SAAS,MAAM,IAAI,MAAM,CAAC,CAAC;AAC7B,UAAE,SAAS,MAAM,IAAI,MAAM,CAAC,CAAC;AAC7B,YAAI,OAAO,OAAW,OAAM,IAAI,UAAU,QAAQ;AAClD,cAAM,CAAC,MAAM,IAAI,IAAI,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE;AAC/D,cAAM,UAAU,KAAK,EAAE,OAAO,IAAI,SAAS,EAAE;AAC7C,UAAE,UAAU,KAAK,MAAM,IAAI;AAC3B,UAAE,UAAU,MAAM,GAAG,MAAM,IAAI;AAC/B,UAAE,SAAS,MAAM,IAAI,WAAW,QAAQ,UAAUD,QAAO,IAAI,CAAC;AAC9D,UAAE,SAAS,MAAM,IAAI,WAAW,QAAQ,UAAUD,UAAS,IAAI,CAAC;AAAA,MAClE;AAAA,MAEQ,OAAO,KAAmB;AAChC,aAAK,KAAK,cAAc;AACxB,cAAM,KAAK,KAAK,MAAM;AACtB,YAAI,OAAO,OAAW,OAAM,IAAI,UAAU,QAAQ;AAClD,cAAM,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE;AAC5B,cAAM,UAAU,IAAI,SAAS,EAAE;AAC/B,YAAI,CAAC,QAAS,OAAM,IAAI,UAAU,QAAQ;AAC1C,cAAM,IAAI,KAAK,IAAI,KAAK;AACxB,YAAI,QAAQ,QAAQ,UAAU,EAAEC,QAAOD;AACvC,YAAI,EAAE,SAAS,MAAM,EAAE,EAAG,UAASC;AACnC,YAAI,EAAE,SAAS,MAAM,EAAE,EAAG,UAASD;AACnC,YAAI,SAAS,IAAI,EAAE,GAAG,SAAS,SAAS,MAAM,CAAC;AAAA,MACjD;AAAA,IACF;AAAA;AAAA;;;ACtiBO,SAAS,mBAAmB,SAA0C;AAC3E,QAAM,QAAQ,oBAAI,IAAoB;AACtC,QAAMQ,WAAU,IAAI,YAAY;AAChC,MAAI,KAAK;AACT,QAAM,MAAM,MAAc;AACxB,QAAIC,SAAQ;AACZ,QAAI,QAAQ;AACZ,QAAI;AACJ,OAAG;AACD,UAAI,MAAM,QAAQ,OAAQ,OAAM,IAAI,WAAW,wBAAwB;AACvE,aAAO,QAAQ,IAAI;AACnB,MAAAA,WAAU,OAAO,OAAQ,KAAK;AAC9B,eAAS;AAAA,IACX,SAAS,OAAO;AAChB,WAAOA;AAAA,EACT;AACA,SAAO,KAAK,QAAQ,QAAQ;AAC1B,UAAM,KAAK,QAAQ,IAAI;AACvB,UAAM,OAAO,IAAI;AACjB,UAAM,MAAM,KAAK;AACjB,QAAI,MAAM,QAAQ,OAAQ,OAAM,IAAI,WAAW,wBAAwB;AACvE,QAAI,OAAO,GAAG;AACZ,eAAS,QAAQ,IAAI,GAAG,QAAQ,GAAG,SAAS;AAC1C,cAAMC,SAAQ,IAAI;AAClB,cAAM,SAAS,IAAI;AACnB,YAAI,KAAK,SAAS,IAAK,OAAM,IAAI,WAAW,wBAAwB;AACpE,cAAM,IAAIA,QAAOF,SAAQ,OAAO,QAAQ,SAAS,IAAI,KAAK,MAAM,CAAC,CAAC;AAClE,cAAM;AAAA,MACR;AAAA,IACF;AACA,SAAK;AAAA,EACP;AACA,SAAO;AACT;AAMO,SAAS,WAAW,OAA8C;AACvE,WAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,UAAM,IAAI,YAAY,KAAK,MAAM,CAAC,CAAW;AAC7C,QAAI,CAAC,EAAG;AACR,WAAO,MAAM,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,UAAU,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI;AAAA,EAC1E;AACA,SAAO;AACT;AAEO,SAAS,UACd,MACA,QACAG,OACQ;AACR,QAAM,IAAI,cAAc,KAAK,IAAI;AACjC,MAAI,CAAC,KAAK,EAAE,CAAC,MAAM,OAAQ,QAAO;AAClC,QAAM,QAAQA,MAAK,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/B,SAAO,UAAU,SAAY,OAAO,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;AAC9D;AAEO,SAAS,iBAAiB,OAA2B;AAC1D,MAAI,KAAK;AACT,QAAM,MAAM,MAAc;AACxB,QAAIF,SAAQ;AACZ,QAAI,QAAQ;AACZ,QAAI;AACJ,OAAG;AACD,UAAI,MAAM,MAAM,OAAQ,OAAM,IAAI,WAAW,kBAAkB;AAC/D,aAAO,MAAM,IAAI;AACjB,MAAAA,WAAU,OAAO,OAAQ,KAAK;AAC9B,eAAS;AAAA,IACX,SAAS,OAAO;AAChB,WAAOA;AAAA,EACT;AACA,SAAO,KAAK,MAAM,QAAQ;AACxB,UAAM,KAAK,MAAM,IAAI;AACrB,UAAM,OAAO,IAAI;AACjB,QAAI,OAAO,EAAG,QAAO,IAAI;AACzB,UAAM;AAAA,EACR;AACA,SAAO;AACT;AAOO,SAAS,aACdG,OACA,MACA,KACuC;AACvC,MAAI;AACJ,SAAO,CAACF,WAAU;AAChB,QAAI,CAAC,OAAO;AACV,UAAI;AACF,gBAAQ,mBAAmBE,MAAK,IAAI,CAAC;AAAA,MACvC,QAAQ;AACN,gBAAQ,oBAAI,IAAI;AAAA,MAClB;AACA,UAAI,OAAO,MAAM;AACjB,UAAI;AACF,YAAI,IAAK,QAAO,IAAI,UAAU;AAAA,MAChC,QAAQ;AACN,aAAK,KAAK,GAAG,IAAI,sEAAsE;AACvF,gBAAQ,oBAAI,IAAI;AAChB,eAAO;AAAA,MACT;AACA,UAAI,OAAO,MAAM,SAAS,MAAM;AAC9B,YAAI;AAAA,UACF,GAAG,IAAI,UAAU,MAAM,IAAI,kCAAkC,IAAI;AAAA,QACnE;AACA,gBAAQ,oBAAI,IAAI;AAAA,MAClB;AAAA,IACF;AACA,WAAO,MAAM,IAAIF,MAAK;AAAA,EACxB;AACF;AArHA,IAmCM,eAEA;AArCN;AAAA;AAAA;AAmCA,IAAM,gBAAgB;AAEtB,IAAM,cAAc;AAAA;AAAA;;;ACrCpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsFO,SAAS,YAAY,MAAgB,MAAwB;AAClE,OAAK,cAAc,MAAM,KAAK,UAAU;AACxC,OAAK,gBAAgB,MAAM,KAAK,cAAc;AAC9C,OAAK,UAAU,CAAC,OAAO,KAAK,MAAM,EAAE;AACpC,OAAK,aAAa,MAAM,KAAK,KAAK,UAAU;AAC5C,OAAK,IAAI,cAAc,MAAM,KAAK,YAAY;AAChD;AAEO,SAAS,aACd,MACA,MAC0B;AAC1B,SAAO,SAAS,MAAM,KAAK,QAAQ,MAAM,KAAK,QAAQ,CAAC;AACzD;AAEA,SAAS,WACP,SACA,MACA,QACA,QACM;AACN,aAAW,MAAM,WAAW;AAC1B,UAAM,QAAQ,QAAQ,EAAE;AACxB,QAAI,MAAO,SAAQ,EAAE,IAAI,WAAW,IAAI,OAAO,MAAM,QAAQ,MAAM;AAAA,EACrE;AACF;AAEO,SAAS,WACd,IACA,OACA,MACA,QACA,QAC2B;AAC3B,QAAM,SAAS,IAAI,IAAI,YAAY,EAAE,CAAC;AACtC,QAAM,MAAiC,CAAC;AACxC,aAAW,CAACG,OAAMC,MAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AACjD,QAAI,OAAO,IAAID,KAAI,KAAK,OAAOC,WAAU,YAAY;AACnD,UAAID,KAAI,IAAIC;AACZ;AAAA,IACF;AACA,UAAM,KAAKA;AACX,QAAID,KAAI,IAAI,IAAI,SAAoB;AAClC,WAAK,UAAU;AACf,UAAI,OAAO,MAAM;AACf,iBAAS;AACT,aAAK,UAAU,KAAK,cAAc,MAAM;AACxC,aAAK,iBAAiB,KAAK,UAAW,KAAK,gBAAgB,KAAK,KAAM;AAAA,MACxE;AACA,aAAO,GAAG,GAAG,IAAI;AAAA,IACnB;AAAA,EACF;AACA,SAAO;AACT;AAQO,SAAS,UACd,QACA,KACA,MACA,SACAE,UACyB;AACzB,QAAM,SAAS,IAAI,WAAW,KAAK,GAAG,cAAc;AACpD,MAAI,CAAC,aAAa,QAAQ,aAAa,GAAG;AACxC,gBAAY,YAAY,MAAM;AAC9B,WAAO;AAAA,EACT;AACA,MAAI,QAAS,SAAQ,UAAU,MAAM,YAAY,MAAM;AACvD,QAAM,SAASA,YAAW,IAAI,WAAWA,UAAS,GAAG,cAAc;AACnE,SAAO,IAAI,YAAY,QAAQ,MAAM,KAAK,QAAQ,GAAG,QAAQ,SAAS,OAAO,QAAQ;AACvF;AAKA,SAAS,OAAO,QAAgBF,OAAc,SAAqC;AACjF,QAAM,OAAO,UAAU,MAAM,IAAIA,KAAI;AACrC,MAAI,SAAS,QAAS,OAAM,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAIA,KAAI,EAAE,CAAC;AAClE,MAAI,SAAS,OAAQ,QAAO,MAAM;AAClC,MAAI,SAAS,MAAO,QAAO,MAAM;AACjC,SAAO,MAAM;AACf;AAEA,SAAS,WAAW,SAA6C;AAC/D,aAAW,CAAC,QAAQ,MAAM,KAAK,OAAO,QAAQ,OAAO,GAAG;AACtD,UAAMA,QAAO,OAAO,KAAK,MAAM,EAAE,KAAK,CAACG,WAAU,OAAOA,MAAK,MAAM,OAAO;AAC1E,QAAIH,UAAS,OAAW,QAAO,GAAG,MAAM,IAAIA,KAAI;AAAA,EAClD;AACA,SAAO;AACT;AAUA,SAAS,SAAS,KAAyCI,QAA6B;AACtF,QAAM,EAAE,QAAQ,MAAAJ,OAAM,KAAK,IAAI;AAC/B,MAAI,WAAW,YAAY,WAAW,MAAO,QAAO;AACpD,MAAI,CAACK,UAAS,IAAI,MAAM,MAAMD,OAAM,YAAaA,OAAM,QAAQ,SAAS,YAAc,QAAO;AAC7F,MAAIA,OAAM,QAAQ,WAAW,aAAa,WAAW,YAAa,QAAO;AACzE,MAAIA,OAAM,OAAO,WAAW,SAAS,SAAS,SAAU,QAAO;AAC/D,MAAI,SAAS,YAAYA,OAAM,QAAQ,WAAW,UAAUA,OAAM,OAAO,SAASJ;AAChF,WAAO;AACT,SAAO,WAAW,UAAUA,UAAS,mBAAmBI,OAAM,SAAS,CAAC,CAACA,OAAM,QAAQ;AACzF;AAEO,SAAS,kBACd,QACA,QACA,WAAW,OACX,UAA0B,CAAC,GACP;AACpB,QAAM,UAAU,YAAY,OAAO,QAAQ,MAAM;AACjD,QAAM,QAAQ,QAAQ,KAAK,CAAC,MAAM,EAAE,WAAW,KAAK;AACpD,QAAM,OAAO,SAAS,QAAQ,KAAK,CAAC,MAAM,EAAE,WAAW,QAAQ;AAC/D,QAAMA,SAAQ,EAAE,UAAU,MAAM,OAAO,KAAK,WAAW,MAAM,MAAM,QAAW,OAAO;AACrF,QAAME,WAAU,QAAQ,KAAK,CAAC,QAAQ,CAAC,SAAS,KAAKF,MAAK,CAAC;AAC3D,MAAIE,UAAS;AACX,QAAIA,SAAQ,SAAS,YAAYA,SAAQ,WAAW,QAAQ;AAC1D,aAAO,WAAWA,SAAQ,MAAM,IAAIA,SAAQ,IAAI;AAAA,IAClD;AACA,WAAO,WAAWA,SAAQ,MAAM,IAAIA,SAAQ,IAAI;AAAA,EAClD;AACA,QAAM,eAAe,WAAW,SAAY,WAAW,OAAO;AAC9D,MAAI,aAAc,QAAO,QAAQ,YAAY;AAC7C,MAAI,CAAC,YAAY,OAAO,QAAQ,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,QAAQ,GAAG;AACxE,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,YACP,QACA,UACA,OACA,QACA,SACA,UAA0B,CAAC,GAC3B,SACA,QAAsC,CAAC,GACvC,UAAwC,CAAC,GACzCC,YAAyC,CAAC,GACrB;AACrB,aAAW,MAAM,OAAO,KAAK,OAAO,GAAG;AACrC,QAAIF,UAAS,IAAI,EAAE,KAAK,OAAO,SAAS,OAAO,YAAY,OAAO;AAChE,YAAM,IAAI,MAAM,qCAAqC,EAAE,EAAE;AAAA,EAC7D;AACA,QAAM,UAAmE;AAAA,IACvE,GAAG;AAAA,IACH,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM;AAAA,IACpB,CAAC,QAAQ,GAAG,EAAE,GAAG,QAAQ;AAAA,IACzB,CAAC,SAAS,GAAG,EAAE,GAAGE,UAAS;AAAA,IAC3B,CAAC,QAAQ,GAAG;AAAA,IACZ,GAAI,QAAQ,EAAE,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM,EAAE,IAAI,CAAC;AAAA,IACzC,GAAI,UAAU,EAAE,MAAM,EAAE,gBAAgB,CAAC,QAAgB,QAAQ,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC;AAAA,EACrF;AACA,aAAW,OAAO,YAAY,OAAO,QAAQ,MAAM,GAAG;AACpD,UAAM,KAAM,QAAQ,IAAI,MAAM,MAAM,CAAC;AACrC,QAAI,IAAI,QAAQ,GAAI;AACpB,QAAI,IAAI,SAAS,YAAY,OAAQ,IAAG,IAAI,IAAI,IAAI;AAAA,aAC3C,IAAI,WAAW,UAAU,IAAI,SAAS,eAAgB,IAAG,IAAI,IAAI,IAAI,MAAM;AAAA,aAC3E,IAAI,SAAS,WAAY,IAAG,IAAI,IAAI,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,OAAO;AAAA,EACvF;AACA,SAAO;AACT;AAIA,SAAS,kBAAkB,MAA0C;AACnE,QAAM,UAAU,KAAK,WAAW;AAChC,MAAI;AACF,WAAO,IAAI,YAAY,OAAO,EAAE,SAAS,KAAK,SAAS,SAAS,QAAQ,KAAK,OAAO,CAAC;AAAA,EACvF,SAAS,KAAK;AACZ,QAAI,EAAE,eAAe,eAAe,WAAW,uBAAwB,OAAM;AAC7E,QAAI,KAAK,UAAU,uBAAwB,OAAM;AACjD,WAAO,IAAI,YAAY,OAAO;AAAA,MAC5B,SAAS,KAAK;AAAA,MACd,SAAS;AAAA,MACT,QAAQ,KAAK;AAAA,IACf,CAAC;AAAA,EACH;AACF;AAEO,SAAS,qBACd,MACAC,OACgC;AAChC,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,SAAS,kBAAkB,IAAI;AACrC,MAAIA,MAAM,YAAW,QAAQA,KAAI;AACjC,SAAO;AACT;AAEA,SAAS,sBACP,UACAC,WACA,MACM;AACN,MAAIA,aAAY,CAAC,KAAK,MAAM,KAAM;AAClC,aAAW,SAAS,QAAQ,QAA8B,KAAK,KAAK,MAAM;AAC5E;AAEA,SAAS,WAAW,QAA4BD,OAAwB;AACtE,QAAME,SAAQF,MAAK,aAAa,QAAQ,OAAO,OAAO,aAAa;AACnE,MAAIE,SAAQ,EAAG,QAAO,KAAKA,MAAK;AAChC,MAAI,WAAW,OAAO,MAAM,EAAE,IAAIF,KAAI;AACxC;AAEA,SAASG,QAAO,MAAqD;AACnE,SAAO,MAAM,KAAK,QAAQ,OAAO,cAAc;AACjD;AAEA,SAAS,SACP,UACAF,WACgC;AAChC,SAAOA,aAAa,SAAS,QAAQ;AACvC;AAEA,SAAS,SACP,MACAG,OAEA,QAAqB,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM;AAAC,EAAE,GAC1D,QACA;AACA,QAAM,OAAO,IAAI;AAAA,IACf,uBAAuB,KAAK,KAAKA,OAAM,SAAS,EAAE,OAAO,IAAI,CAAC,CAAC;AAAA,IAC/D,IAAI,WAAW,KAAK,KAAK,GAAG,cAAc;AAAA,IAC1C;AAAA,EACF;AACA,QAAM,YAAY,KAAK,UAAU;AACjC,QAAM,MAAM,UAAU,SAAS;AAC/B,QAAMC,QAAO,CAAC,QAA8B;AAC1C,UAAM,IAAkB,UAAU,KAAK,KAAK,OAAO,mBAAmB,IAAI,EAAE;AAC5E,QAAI,CAAC,EAAE,GAAI,OAAM,IAAI,aAAa,EAAE,KAAK;AACzC,WAAO,EAAE,SAAS,SAAS,EAAE,OAAO,EAAE,SAAS,UAAU,EAAE,QAAQ;AAAA,EACrE;AACA,QAAM,MAAM,CAAC,SAAiB,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE,OAAO,GAAG,KAAK,KAAK,KAAK,IAAI;AAAA,CAAI,CAAC;AAC/F,SAAO,EAAE,WAAW,KAAK,MAAAA,OAAM,KAAK,KAAK;AAC3C;AAEA,SAAS,OAAyB,OAA8B,KAAa,OAAa;AACxF,SAAO,QAAQ,MAAM,KAAK,KAAK,KAAK,IAAI;AAC1C;AAEA,SAAS,WAAW,OAAkBA,OAAqC;AACzE,SAAO,CAAC,QAA8B,MAAM,KAAK,UAAU,IAAI,EAAE,IAAI,MAAMA,MAAK,GAAG,CAAC;AACtF;AAEA,SAAS,OAAO,OAAkB,KAA8D;AAC9F,QAAM,MAAM,KAAK;AACjB,MAAI;AACF,QAAI,MAAM,GAAG,IAAI,YAAY,EAAE,OAAO,MAAM,OAAO,CAAC,CAAC;AAAA,EACvD,QAAQ;AAAA,EAAC;AACX;AAKA,SAAS,QAAQ,QAAqC;AACpD,SAAO,YAAY,OAAO,QAAQ,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,KAAK;AAC1E;AAKO,SAAS,eAAe,QAAkBC,QAAmC;AAClF,MAAIA,SAAQ,KAAKA,SAAQ,mBAAmB,OAAO,WAAY,QAAO;AACtE,QAAM,QAAQ,OAAO,UAAUA,SAAQ,aAAa,IAAI;AACxD,QAAM,OAAO,OAAO,UAAUA,SAAQ,kBAAkB,IAAI;AAC5D,MAAI,OAAO,oBAAoB,OAAO,OAAO,cAAc,OAAO,MAAO,QAAO;AAChF,MAAI,QAAQ,OAAO,KAAK,QAAQA,SAAQ,oBAAoB,QAAQ,mBAAmBA,QAAO;AAC5F,WAAO;AAAA,EACT;AACA,SAAO,QAAQ;AACjB;AAEA,SAAS,SACP,QACA,UACA,QACA,KACS;AACT,QAAM,MAAM,SAAS,QAAQ;AAC7B,QAAM,UAAU,eAAe,YAAY,SAAS,MAAM;AAC1D,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,eAAe,SAAS,GAAG;AAClC,SAAO;AACT;AAEA,SAAS,UAAU,KAAiB,QAA8B;AAChE;AAAG,QAAI;AAAA,SACA,OAAO,OAAO;AACvB;AAEA,SAAS,YAAY,UAAoE;AACvF,SAAO,SAAS,QAAQ;AAC1B;AAEA,SAAS,cAAc,QAAqC;AAC1D,SAAO,YAAY,OAAO,QAAQ,MAAM,EAAE;AAAA,IACxC,CAAC,MACE,EAAE,WAAW,UAAU,EAAE,SAAS,kBAClC,EAAE,WAAW,SAAS,EAAE,SAAS;AAAA,EACtC;AACF;AAEA,eAAe,YACb,MACA,QACA,QACA,SACA;AAAA,EACE,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAQI,CAAC,GAKJ;AACD,QAAM,SAAS,IAAI,eAAe,KAAK,GAAG;AAC1C,QAAM,YAAY,YAAY,OAAO,QAAQ,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,KAAK,IAC/E,IAAI,UAAU,MAAM,QAAQ,MAAM,IAClC;AACJ,MAAI,WAAW;AACb,cAAU,UAAU;AACpB,cAAU,UAAU;AAAA,EACtB;AACA,MAAI,WAAyC,OAAO,OAAO,QAAQ;AAAA,IACjE,GAAG,KAAK,QAAQ;AAAA,IAChB,GAAG,WAAW,SAAS;AAAA,EACzB,CAAC;AACD,MAAI,QAAQ,aAAa,OAAO,OAAO,SAAS,UAAU,QAAQ,CAAC;AAEnE,QAAM,OAAO,WAAW,MAAM;AAC9B,QAAM,OACJ,QAAQ,SACJ,IAAI;AAAA,IACF,IAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA,WAAW,MAAM,MAA2B,OAAO;AAAA,MACnD;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,KAAK,EAAE,OAAO,KAAK,GAAG;AAAA,IAC/B;AAAA,EACF,IACA;AACN,MAAI,MAAM;AACR,KAAC,EAAE,UAAU,MAAM,IAAI,KAAK,MAAM,UAAU,KAAK;AACjD,QAAI,WAAW;AACb,gBAAU,SAAS,KAAK;AACxB,gBAAU,QAAQ,KAAK,OAAO;AAAA,IAChC;AAEA,QAAI,SAAS;AACX,WAAK,OAAO,QAAQ,QAAQ;AAC5B,cAAQ,UAAU,MAAM,KAAK,OAAO,SAAS;AAAA,IAC/C;AAAA,EACF;AACA,MAAI;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,UAAW,UAAU,QAAQ;AAAA,IACnC,MAAM;AAAA,EACR;AACA,QAAM,QAAQ,OAAO,OAAO,SAAS,KAAK,aAAa,CAAC;AACxD,QAAM,UAAU,OAAO,OAAO,YAAY,KAAK,eAAe,CAAC;AAC/D,QAAMP,YAAW,OAAO,OAAO,aAAa,KAAK,gBAAgB,CAAC;AAClE,QAAM,cAAc;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACAA;AAAA,EACF;AACA,aAAW,aAAa,MAAM,QAAQ,aAAa,MAAM,IAAI,CAAC;AAC9D,QAAM,UAA+B,OACjC,MAAM,aAAa,KAAK,OAAO,YAAY,MAAM,CAAC,IAClD;AACJ,aAAW,MAAM,YAAY,YAAY,QAAQ,OAAO;AACxD,SAAO,MAAM,aAAa;AAC1B,QAAM,UAAU,SAAS;AACzB,OAAK,IAAI,KAAK,UAAW,QAAQ,MAA6B;AAC9D,MAAI,WAAW;AACb,UAAM,QAAQ,MAAM,OAAO,SAAS,cAAc,QAAQ;AAC1D,cAAU,QAAQ;AAClB,QAAI,SAAS,QAAW;AACtB,YAAMQ,QAAO,WAAW,MAAM,OAAO,CAAC,EAAE,EAAE;AAC1C,gBAAU,MAAM,SAAS,MAAMA,MAAK,IAAI,GAAG,UAAU,OAAO,OAAOC,cAAa,CAAC;AAAA,IACnF;AAAA,EACF;AACA,MAAI,KAAM,YAAW,MAAM,MAAM,UAAU,EAAE,QAAQ,QAAQ,KAAK,CAAC;AACnE,MAAI,QAAQ,CAAC,OAAQ,QAAO,SAAS,KAAK,OAAO,cAAc,KAAK,OAAO,QAAQ;AACnF,SAAO,EAAE,UAAU,QAAQ,aAAa,MAAM,OAAO,aAAa;AACpE;AAEA,SAAS,WACP,MACA,MACA,UACA,IAKM;AACN,OAAK,OAAO,SAAS,UAAU,CAAC,GAAG,UAAU,CAAC,GAAG,MAAM;AACvD,MAAI,GAAG,SAAS,OAAW,MAAK,OAAO,WAAW,GAAG;AACrD,OAAK,YAAY,MAAM,KAAK,OAAO,SAAS;AAC5C,OAAK,gBAAgB,MAAM,KAAK,OAAO,SAAS;AAChD,MAAI,GAAG,QAAQ;AACb,SAAK,OAAO,YAAY,IAAI,IAAI,GAAG,OAAO,OAAO,CAAC,CAAC;AACnD,SAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,EAChC;AACA,MAAI,GAAG,UAAU,GAAG,OAAQ,MAAK,QAAQ;AACzC,OAAK,OAAO,YAAY;AAC1B;AAEA,SAAS,SAASH,OAAqC,KAAuB;AAC5E,SAAO,IAAI;AAAA,IACT;AAAA,MACE,UAAU,MAAMA,MAAK,EAAE,IAAI,YAAY,CAAC;AAAA,MACxC,WAAW,MAAMA,MAAK,EAAE,IAAI,aAAa,CAAC;AAAA,IAC5C;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,cAAc,UAA+D;AACpF,QAAM,QAAQ,SAAS,QAAQ;AAC/B,SAAO,iBAAiB,YAAY,QAAQ,QAAQ;AACtD;AAEA,SAAS,WAAW,MAAgB,SAAgD;AAClF,SAAO;AAAA,IACL,MAAM,CAAC,SAAS;AACd,UAAI;AACF,eAAO,KAAK,EAAE,GAAG,SAAS,IAAI;AAAA,MAChC,QAAQ;AACN,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,aAAa,MAAM;AACjB,YAAM,EAAE,KAAK,MAAM,WAAW,MAAM,YAAY,OAAO,GAAGI,MAAK,IAAI,QAAQ;AAC3E,aAAOA;AAAA,IACT;AAAA,IACA,MAAM,CAAC,SAAS,aAAa,KAAK,EAAE,IAAI,IAAI;AAAA,EAC9C;AACF;AAEA,SAAS,MACP,MACA,OACqB;AACrB,QAAM,MAA2B,EAAE,GAAG,KAAK;AAC3C,aAAW,CAAC,IAAI,MAAM,KAAK,OAAO,QAAQ,KAAK,EAAG,KAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,GAAG,OAAO;AACrF,SAAO;AACT;AAqGA,SAAS,YACP,MACA,MACA,SAC0E;AAC1E,MAAI,MAAM,UAAU,QAAS,QAAO,EAAE,QAAQ,QAAQ,IAAI;AAC1D,MAAI,KAAM,QAAO,EAAE,QAAQ,EAAE,KAAK,KAAK,KAAK,SAAS,KAAK,QAAQ,EAAE;AACpE,SAAO,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,GAAI,KAAK,QAAQ,cAAc,EAAE,aAAa,KAAK,IAAI,CAAC,EAAG;AACjG;AAEA,SAAS,SAAS,MAIhB;AACA,SAAO;AAAA,IACL,GAAI,KAAK,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,IACtC,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAAA,IACpC,GAAI,KAAK,UAAU,EAAE,SAAS,KAAK,QAAQ,IAAI,CAAC;AAAA,EAClD;AACF;AAEA,SAASC,QACP,MACAL,OACoB;AACpB,QAAM,EAAE,MAAAM,MAAK,IAAI;AACjB,MAAI,CAACA,MAAM,QAAO,CAAC;AACnB,QAAM,MAAM,MAAMN,MAAK,EAAE,IAAI,YAAY,CAAC;AAC1C,SAAO,EAAE,MAAM,IAAI,QAAQM,MAAK,KAAKA,MAAK,MAAM,KAAK,EAAE,GAAGA,OAAM,MAAM,KAAK,IAAI,CAAC,EAAE;AACpF;AAEA,eAAsB,eAAe,MAA0BP,OAAoC;AACjG,oBAAkB,KAAK,GAAG;AAE1B,QAAM,UAAU,IAAI;AAAA,IAClB,YAAY,CAAC,QAAQC,MAAK,GAAG,GAAG,KAAK,GAAG;AAAA,IACxC,CAACO,UAAS;AACR,YAAM,IAAI,SAASA,KAAI;AAAA,IACzB;AAAA,EACF;AACA,QAAM,OAAwC,CAAC;AAC/C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF,IAAI,SAAS,MAAMR,OAAM,SAASD,QAAO,IAAI,CAAC;AAC9C,QAAM,KAAK,SAAS,WAAW,IAAI;AAEnC,QAAM,QAAQ,KAAK,IAAI,qBAAqB,MAAM,IAAI,UAAU,IAAI;AACpE,QAAME,QAAO,QAAQ,WAAW,OAAO,UAAU,IAAI;AACrD,QAAM,EAAE,OAAO,IAAI,KAAK;AACxB,QAAMP,WAAU;AAAA,IACd;AAAA,IACA,KAAK,QAAQ;AAAA,IACb,KAAK,QAAQ,YAAY;AAAA,IACzB,KAAK,QAAQ;AAAA,EACf;AACA,MAAIA,UAAS;AACX,QAAIA,QAAO;AACX,WAAO;AAAA,EACT;AACA,QAAM,OAAO,KAAK,MAAM;AACxB,QAAM,SAAS,qBAAqB,KAAK,QAAQ,QAAQ,OAAO,KAAK,MAAM,SAAS,MAAS;AAC7F,QAAM,UACJ,QAAQ,kBAAkB,qBAAqB,cAAc,MAAM,IAC/D,IAAI,YAAYM,OAAM,QAAQ,UAAU,KAAK,GAAG,GAAG,QAAQ,IAC3D;AACN,QAAM,OAAO,IAAI,SAAS;AAAA,IACxB,MAAM,CAAC,KAAK,OAAO,GAAG,KAAK,IAAI;AAAA,IAC/B,KAAK,KAAK;AAAA,IACV,KAAK,MAAM,OAAO,KAAK;AAAA,IACvB,KAAK,GAAG;AAAA,IACR,MAAM,GAAG;AAAA,IACT,QAAQ,MAAM,SAAS,WAAW,IAAI,EAAE;AAAA,IACxC,QAAQ,EAAE,KAAK,OAAO,OAAO,UAAU,GAAG,GAAG,MAAAC,MAAK;AAAA,IAClD,IAAI;AAAA,MACF;AAAA,QACE;AAAA,UACE;AAAA,YACE;AAAA,YACA;AAAA,YACA,sBAAsB,WAAW,EAAE,GAAG,SAAS,IAAI,GAAG,QAAQ,KAAK,CAAC;AAAA,UACtE;AAAA,UACA;AAAA,UACA,SAAS;AAAA,QACX;AAAA,QACA,SAASA,OAAM,GAAG,GAAG;AAAA,MACvB;AAAA,MACAA;AAAA,IACF;AAAA,IACA,GAAG,YAAY,MAAM,MAAM,OAAO;AAAA,IAClC,GAAGK,QAAO,MAAML,KAAI;AAAA,IACpB,GAAI,UAAU,EAAE,SAAS,QAAQ,IAAI,IAAI,CAAC;AAAA,EAC5C,CAAC;AACD,OAAK,UAAU,UAAU,QAAQ,KAAK,KAAK,MAAM,OAAO;AACxD,MAAI,SAAS;AACX,YAAQ,cAAc,MAAM;AAC1B,UAAI,CAAC,KAAK,IAAI,SAAU,MAAK,IAAI,MAAM,QAAQ,KAAK,KAAK;AAAA,IAC3D;AAAA,EACF;AACA,QAAM,UAAU,MAAM,eAAe,KAAK,SAAS,MAAM,WAAW,QAAQ;AAC5E,QAAM,EAAE,UAAU,QAAQ,YAAY,IAAI,MAAM,YAAY,MAAM,QAAQ,QAAQ,SAAS;AAAA,IACzF,GAAI,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,IAC/B;AAAA,IACA;AAAA,IACA,SAAS,KAAK,QAAQ;AAAA,IACtB,MAAM,KAAK,QAAQ;AAAA,IACnB,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAA,EAC/B,CAAC;AACD,wBAAsB,UAAU,QAAQ,IAAI;AAC5C,OAAK,SAAS,SAAS,UAAU,MAAM;AACvC,gBAAc,KAAK,KAAKF,QAAO,IAAI,EAAE,CAAC;AACtC,EAAAC,MAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7C,UAAQ,KAAK,SAAS,OAAO;AAC7B,MAAI,qBAAqB,MAAM,EAAG,SAAQ,QAAQ;AAClD,MAAI,MAAM,QAAS,SAAQ,QAAQ,KAAK,OAAO;AAC/C,OAAK,UAAU;AACf,cAAY,MAAM,IAAI;AACtB,OAAK,UAAU,CAAC,QAAQ,QAAQ,OAAO,GAAG;AAC1C,OAAK,QAAQ,CAAC,IAAI,SAAS,QAAQ,MAAM,IAAI,IAAI;AACjD,QAAM,UAAU,SAAS;AACzB,SAAO,KAAK,SAAS,OAAO;AAC5B,QAAM,QAAQ,MAAM;AACpB,MAAI,OAAO;AACT,aAAS,QAAQ,UAAU,aAAa,MAAM,GAAG;AACjD,SAAK,cAAc;AAAA,EACrB;AACA,QAAM,MAAM,QAAQ,MAAM,YAAY,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,MAAM,QAAQ,OAAO;AAC7F,MAAI;AACF,QAAI,KAAM,QAAO,WAAW,IAAI;AAEhC,cAAU,KAAK,MAAM;AACrB,WAAO;AAAA,EACT,SAAS,GAAG;AACV,QAAI,aAAa,SAAU,QAAO,EAAE;AACpC,QAAI,EAAE,aAAa,YAAY,cAAe,OAAM;AACpD,QAAI;AACF,UAAI,WAAW,GAAG,MAAM,MAAM,EAAE,CAAC;AAAA,IACnC,QAAQ;AACN,YAAM,IAAI,MAAM,GAAG,KAAK,KAAK,gBAAgB,EAAE,OAAO,EAAE;AAAA,IAC1D;AACA,WAAO;AAAA,EACT,UAAE;AACA,SAAK,SAAS;AACd,QAAI,MAAO,QAAO,OAAO,GAAG;AAAA,EAC9B;AACF;AAIO,SAAS,YACd,GACA,KACA,QAAQ,IACRZ,OACQ;AACR,QAAM,OAAO,YAAY,KAAK,KAAK,EAAE,OAAO;AAC5C,MAAI,IAAI,yBAAyB,IAAK,QAAO;AAC7C,QAAM,SAAS,EAAE,SAAS,IAAI,MAAM,IAAI;AAExC,QAAM,OAAOA,SAAQ,WAAW,KAAK;AAErC,QAAM,SAAS,MACZ,OAAO,CAAC,SAAS,2BAA2B,KAAK,IAAI,CAAC,EACtD,MAAM,GAAG,gBAAgB,EACzB,IAAI,CAAC,SAAUA,SAAQ,OAAO,UAAU,MAAM,MAAMA,KAAI,IAAI,IAAK;AACpE,SAAO,OAAO,SAAS,GAAG,IAAI;AAAA,EAAK,OAAO,KAAK,IAAI,CAAC,KAAK;AAC3D;AAEA,SAAS,WACP,GACA,MACA,MACA,OACQ;AACR,QAAM,SAAmB,CAAC;AAC1B,QAAMqB,WAAU,YAAY,GAAG,KAAK,KAAK,OAAO,aAAa,MAAM,KAAK,SAAS,MAAM,CAAC;AACxF,SAAO,CAAC,GAAG,QAAQA,QAAO,EAAE,KAAK;AAAA,EAAK,KAAK,KAAK,IAAI;AACtD;AAEA,SAAS,aACP,MACA,SACA,QACqD;AACrD,QAAM,OAAO,QAAQ;AACrB,MAAI,SAAS,OAAW,QAAO;AAC/B,QAAMN,QAAO,CAAC,MAAc,KAAK,EAAE,GAAG,SAAS,CAAC;AAChD,QAAMN,YAAW,YAAY,OAAO,QAAQ,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,UAAU;AAC/F,SAAO,aAAaM,OAAM,MAAM;AAAA,IAC9B,WAAW,MAAMN,UAAS,SAAS,iBAAiBM,MAAK,QAAQ,IAAc,CAAC;AAAA,IAChF,MAAM,CAAC,SAAS,OAAO,KAAK,IAAI;AAAA,EAClC,CAAC;AACH;AAEA,eAAe,eACb,SACA,MACA,WACA,KACoC;AACpC,MAAI,QAAQ,YAAY,OAAW,QAAO;AAC1C,QAAM,SAAS,MAAM,YAAY,QAAQ,OAAO;AAChD,QAAM,MAAW,CAAC,QAAQ,UAAU,KAAK,KAAoB,OAAO,mBAAmB,IAAI,EAAE;AAC7F,SAAO,CAAC,QAAQ,aAAa,OAAO,eAAe,EAAE,MAAM,KAAK,KAAK,QAAQ,SAAS,CAAC,CAAC;AAC1F;AAEO,SAAS,kBAAkB,KAA6C;AAC7E,MAAI,IAAI,yBAAyB,IAAK;AAEtC,QAAM,KAAK;AACX,KAAG,kBAAkB,KAAK,IAAI,GAAG,mBAAmB,GAAG,mBAAmB,EAAE;AAC9E;AAEA,eAAsB,cAAc,MAAyBH,OAAkC;AAC7F,oBAAkB,KAAK,GAAG;AAC1B,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,EAAE,WAAW,KAAK,MAAAC,OAAM,KAAK,KAAK,IAAI,SAAS,MAAMD,OAAM;AAAA,IAC/D,OAAO,MAAM;AAAA,IACb,OAAO,CAAC,QAAQ,QAAQ,MAAM,GAAG;AAAA,EACnC,CAAC;AACD,QAAM,UAAU,IAAI,YAAY,kBAAkBC,OAAM,KAAK,GAAG,CAAC;AACjE,QAAM,UAAU,IAAI,YAAYD,OAAM,OAAO,QAAQ,UAAU,KAAK,GAAG,GAAG,OAAO,KAAK,OAAO,GAAG;AAChG,UAAQ,WAAW,OAAO;AAC1B,QAAM,KAAK,SAAS,WAAW,IAAI;AACnC,QAAM,OAAO,IAAI,SAAS;AAAA,IACxB,MAAM,CAAC,KAAK,OAAO,GAAG,KAAK,IAAI;AAAA,IAC/B,KAAK,KAAK;AAAA,IACV,KAAK,KAAK;AAAA,IACV,KAAK,GAAG;AAAA,IACR,MAAM,GAAG;AAAA,IACT,QAAQ,MAAM,SAAS,WAAW,IAAI,EAAE;AAAA,IACxC,QAAQ,EAAE,KAAK,MAAAC,MAAK;AAAA,IACpB,IAAI;AAAA,MACF;AAAA,QACE;AAAA,UACE,sBAAsB,WAAW,EAAE,GAAG,SAAS,IAAI,GAAG,QAAQ,KAAK,CAAC;AAAA,UACpE;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,QACA,SAASA,OAAM,GAAG,GAAG;AAAA,MACvB;AAAA,MACAA;AAAA,IACF;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB,GAAGK,QAAO,MAAML,KAAI;AAAA,EACtB,CAAC;AACD,OAAK,MAAM,OAAO;AAClB,OAAK,UAAU,UAAU,KAAK,QAAQ,QAAQ,KAAK,KAAK,MAAM,SAAS,KAAK,OAAO;AAEnF,QAAM,UAAU,MAAM,eAAe,KAAK,SAAS,MAAM,WAAW,OAAO,GAAG;AAC9E,QAAM,EAAE,OAAO,IAAI,KAAK;AACxB,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,EAAE,UAAU,QAAQ,YAAY,IAAI,MAAM,YAAY,MAAM,QAAQ,QAAQ,SAAS;AAAA,IACzF,QAAQ;AAAA,IACR,SAAS,KAAK,QAAQ;AAAA,IACtB,MAAM,KAAK,QAAQ;AAAA,IACnB,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAA,EAC/B,CAAC;AACD,UAAQ,KAAK,SAAS,OAAO;AAC7B,UAAQ,SAAS,eAAe;AAChC,cAAY,MAAM,IAAI;AACtB,OAAK,UAAU,CAAC,QAAQ,QAAQ,OAAO,GAAG;AAC1C,QAAM,MAAM,QAAQ,MAAM,IAAI,eAAe,KAAK,IAAI,KAAK,GAAG,OAAO,GAAG,IAAI;AAC5E,MAAI,QAAQ,UAAa,SAAS,QAAQ,UAAU,aAAa,GAAG,GAAG;AACrE,WAAO,KAAK,SAAS,OAAO;AAC5B,SAAK,cAAc,EAAE,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,EAC7D;AACA,QAAMC,SAAQ,YAAY,QAAQ;AAClC,MAAI;AACF,cAAU,MAAMA,OAAM,OAAO,KAAK,OAAO,GAAG,GAAG,MAAM;AACrD,YAAQ,OAAO;AAAA,EACjB,SAAS,GAAG;AACV,QAAI,aAAa,YAAY;AAC3B,cAAQ,OAAO;AACf;AAAA,IACF;AACA,QAAI,aAAa,UAAU;AACzB,MAAAF,MAAK,YAAY,EAAE,MAAM,mBAAmB,MAAM,EAAE,KAAK,CAAC;AAC1D;AAAA,IACF;AACA,QAAI,aAAa,YAAY,cAAc;AACzC,UAAI;AACF,YAAI,WAAW,GAAG,MAAM,MAAM,cAAc,OAAO,GAAG,EAAE,CAAC;AAAA,MAC3D,QAAQ;AAAA,MAAC;AACT,MAAAA,MAAK,YAAY,EAAE,MAAM,mBAAmB,MAAM,QAAQ,CAAC;AAC3D;AAAA,IACF;AACA,UAAM;AAAA,EACR;AACF;AAv8BA,IA4CM,SAEA,UACA,OACA,OAEA,iBAEA,aAOO,mBAaP,UACA,WAEAP,WAEO,aAOP,WAyDA,cAGA,sBAoBA,SAkGO,wBA2FP,aACA,kBAMA,kBACA,kBAsNO,UAiGP,QAyJA;AAzzBN;AAAA;AAAA;AAAA;AACA;AAGA;AAQA;AAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA,IAAM,UAAU;AAEhB,IAAM,WAAW;AACjB,IAAM,QAAQ;AACd,IAAM,QAAQ;AAEd,IAAM,kBAAkB;AAExB,IAAM,cACJ,CAACQ,OAAqC,QACtC,CAAC,QAAsB;AACrB,MAAAA,MAAK,EAAE,IAAI,aAAa,KAAK,IAAI,CAAC;AAClC,UAAI,cAAc,GAAG,MAAM,YAAa,OAAM,IAAI,SAAS,MAAM,GAAG;AAAA,IACtE;AAEK,IAAM,oBACX,CAACA,OAAqC,QACtC,CAAC,QAAsB;AACrB,UAAI,cAAc,GAAG,MAAM,aAAa;AACtC,QAAAA,MAAK,EAAE,IAAI,aAAa,KAAK,IAAI,CAAC;AAClC;AAAA,MACF;AACA,UAAI;AACF,QAAAA,MAAK,EAAE,IAAI,kBAAkB,IAAI,CAAC;AAAA,MACpC,QAAQ;AAAA,MAAC;AACT,YAAM,IAAI,SAAS,MAAM,GAAG;AAAA,IAC9B;AAEF,IAAM,WAAW;AACjB,IAAM,YAAY;AAElB,IAAMR,YAAW;AAEV,IAAM,cAA2D;AAAA,MACtE,CAAC,QAAQ,GAAG,CAAC,aAAa,gBAAgB;AAAA,MAC1C,CAAC,KAAK,GAAG,CAAC,cAAc,eAAe,mBAAmB,iBAAiB;AAAA,MAC3E,CAAC,KAAK,GAAG,CAAC,iBAAiB,cAAc;AAAA,MACzC,MAAM,CAAC,cAAc;AAAA,IACvB;AAEA,IAAM,YAAY,CAAC,UAAU,OAAO,OAAO,UAAU,SAAS;AAyD9D,IAAM,eAAe,CAAC,QAA4BL,UAChD,YAAY,OAAO,QAAQ,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,SAAS,EAAE,SAASA,KAAI;AAEtF,IAAM,uBAAuB,CAAC,WAC5B,aAAa,QAAQ,eAAe;AAmBtC,IAAM,UAAU,CAAC,QACf,WAAW,GAAG;AAiGT,IAAM,yBAAyB;AA2FtC,IAAM,cAAc;AACpB,IAAM,mBAAmB;AAMzB,IAAM,mBAAmB;AACzB,IAAM,mBAAmB;AAsNlB,IAAM,WAAN,MAAe;AAAA,MACZ,QAAQ;AAAA,MACR,MAAM;AAAA,MAEL;AAAA,MACQ;AAAA,MACA;AAAA,MACA;AAAA,MACjB,YACE,QACAa,OACA,SACA;AACA,aAAK,SAAS;AACd,aAAK,OAAOA;AACZ,aAAK,MAAM,SAAS;AACpB,aAAK,QAAQ,SAAS,OAAO;AAC7B,eAAO,YAAY,CAAC,WAAW,KAAK,QAAQ,MAAM;AAClD,eAAO,UAAU;AAAA,UACf,SAAS,CAAC,OAAO,SAAS,KAAK,KAAK,EAAE,IAAI,cAAc,OAAO,KAAK,CAAC;AAAA,UACrE,MAAM,CAAC,OAAO,SACZ,KAAK,KAAK,EAAE,IAAI,mBAAmB,OAAO,KAAK,CAAC;AAAA,UAClD,MAAM,MAAM;AACV,iBAAK,KAAK,EAAE,IAAI,WAAW,OAAO,KAAK,MAAM,CAAC;AAC9C,gBAAI;AACF,mBAAK,QAAQ;AAAA,YACf,SAAS,GAAG;AACV,mBAAK,KAAK,EAAE,IAAI,aAAa,OAAO,KAAK,MAAM,CAAC;AAChD,oBAAM;AAAA,YACR;AAAA,UACF;AAAA,UACA,QAAQ,MAAM,KAAK,KAAK,EAAE,IAAI,aAAa,OAAO,KAAK,MAAM,CAAC;AAAA,UAC9D,UAAU,CAAC,UAAU;AACnB,kBAAMS,SAAQ,KAAK,KAAK,EAAE,IAAI,cAAc,MAAM,CAAC;AACnD,iBAAK,QAAQ;AACb,iBAAK,KAAK;AACV,mBAAOA;AAAA,UACT;AAAA,UACA,MAAM,CAACA,WAAU;AACf,iBAAK,KAAK,EAAE,IAAI,mBAAmB,OAAAA,OAAM,CAAC;AAC1C,iBAAK,KAAK;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,MAEQ,OAAa;AACnB,YAAI,KAAK,IAAK,SAAQ,IAAI,KAAK,KAAK,QAAQ,CAAC;AAAA,MAC/C;AAAA,MAEQ,QAAQ,QAA0B;AACxC,cAAM,QAAQ,KAAK,KAAK,EAAE,IAAI,UAAU,QAAQ,QAAQ,MAAM,KAAK,MAAM,CAAC;AAE1E,mBAAW,KAAK,MAAM,MAAM,GAAG,EAAE,EAAG,MAAK,OAAO,OAAO,CAAC;AACxD,aAAK,SAAS,MAAM;AACpB,aAAK,KAAK;AACV,aAAK,QAAQ;AAAA,MACf;AAAA,MAEA,UAAgB;AACd,YAAI,KAAK,OAAO,QAAQ,KAAK,KAAK,KAAK,MAAM,MAAM,KAAK,IAAK,MAAK,QAAQ;AAAA,MAC5E;AAAA,MAEA,UAAgB;AACd,mBAAS;AACP,gBAAM,MAAM,KAAK,MAAM,QAAQ,KAAK,KAAK,KAAK,MAAM,IAAI;AACxD,gBAAM,QAAQ,KAAK,KAAK,EAAE,IAAI,UAAU,MAAM,KAAK,MAAM,CAAC;AAC1D,qBAAW,KAAK,MAAO,MAAK,OAAO,OAAO,CAAC;AAC3C,eAAK,SAAS,MAAM;AACpB,cAAI,CAAC,KAAK,OAAO,QAAQ,KAAK,KAAK,KAAK,MAAM,MAAM,KAAK;AACvD,iBAAK,MAAM;AACX;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MACE,UACA,OAC6F;AAC7F,cAAM,MAAM,KAAK;AACjB,YAAI,CAAC,IAAK,QAAO,EAAE,UAAU,MAAM;AACnC,cAAMC,QAAO,CAAC,UACZ,OAAO;AAAA,UACL,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAACvB,OAAM,EAAE,MAAM;AAAA,YACxCA;AAAA,aACC,IAAI,SAAkB;AACrB,mBAAK,QAAQ;AACb,oBAAM,SAAS,GAAG,GAAG,IAAI;AACzB,mBAAK,QAAQ;AACb,qBAAO;AAAA,YACT;AAAA,UACF,CAAC;AAAA,QACH;AACF,eAAO,EAAE,UAAUuB,MAAK,QAAQ,GAAG,OAAO,SAASA,MAAK,KAAK,EAAE;AAAA,MACjE;AAAA,IACF;AAEA,IAAM,SAAS;AAyJf,IAAM,mBAAmB;AAAA;AAAA;;;ACzzBzB,SAAS,eAAe,oBAAoB,yBAAyB;AACrE,SAAS,YAAY,kBAAkB;;;ACGvC;AAJA,SAAS,yBAAyB;AAClC,SAAS,WAAW,qBAAqB;AACzC,SAAS,SAAS,WAAW;AAC7B,SAAS,yBAAyB;AAK3B,IAAM,eAAkC,CAAC,gBAAgB,gBAAgB;AAEzE,IAAM,aAAgC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,cAAc,QAA6B;AACzD,QAAM,QAAQ,OAAO,MAAM,KAAK,MAAM;AACtC,QAAM,QAAQ,CAACC,YAAoB,EAAE,OAAAA,QAAO,UAAU,OAAO,cAAc,MAAM;AACjF,SAAO,iBAAiB,QAAQ;AAAA,IAC9B,aAAa,MAAM,CAAC,SAAiB,MAAM,IAAI,CAAC;AAAA,IAChD,iBAAiB,MAAM,CAAC,SAAiB,MAAM,IAAI,CAAC;AAAA,IACpD,UAAU,MAAM,CAAC;AAAA,EACnB,CAAC;AACH;AAEA,SAAS,QAAQ,WAA0B;AACzC,SAAO,OAAO,OAAO,IAAI,MAAM,4CAA4C,SAAS,EAAE,GAAG;AAAA,IACvF,MAAM;AAAA,EACR,CAAC;AACH;AAEA,IAAM,gBAAgB;AACtB,IAAM,aAAa,OAAO,KAAK,KAAK,MAAM;AAC1C,IAAM,SAAS,SAAS,UAAU,KAAK,KAAK,OAAO,UAAU,QAAQ;AAIrE,IAAM,eAAe;AAEd,SAAS,gBAAsB;AACpC,gBAAc;AAAA,IACZ,QAAQ,WAAW,SAASC,OAAM;AAChC,UAAI,UAAU,SAAS,EAAG,OAAM,QAAQ,SAAS;AACjD,YAAMC,YAAWD,MAAK,WAAW,OAAO;AACxC,UAAI,CAACC,UAAS,IAAI,WAAW,OAAO,EAAG,OAAM,QAAQA,UAAS,GAAG;AACjE,aAAOA;AAAA,IACT;AAAA,IACA,KAAK,KAAK,SAASD,OAAM;AACvB,YAAM,UAAU,IAAI,WAAW,aAAa,IAAI,IAAI,MAAM,cAAc,MAAM,IAAI;AAClF,YAAM,QAAQ,OAAO,KAAK,QAAQ,oBAAoB,CAAC,CAAC,EAAE,SAAS;AACnE,UAAI,SAAS,QAAQ,SAAS,MAAM,KAAK,CAAC,aAAa,KAAK,OAAO;AACjE,eAAOA,MAAK,KAAK,OAAO;AAC1B,YAAM,SAAS,OAAO,WAAW,SAAS,QAAQ,GAAG,MAAM;AAC3D,aAAO,EAAE,QAAQ,UAAU,QAAQ,cAAc,KAAK;AAAA,IACxD;AAAA,EACF,CAAC;AACH;AAEA,IAAM,SAAS,oBAAI,QAAgB;AAEnC,IAAM,cACJ,OAAO,WAAW,YAAY,YAAY,WAAW,YAAY,OAC7D,WAAW,UACX;AAIN,IAAM,iBAAiB;AACvB,IAAM,cAAc,QAAQ,YAAY,KAAK,OAAO;AAE7C,SAAS,aAMd;AACA,QAAM,OAAO,eAAe;AAC5B,QAAM,QAAQ,YAAY;AAC1B,SAAO;AAAA,IACL,UAAU,KAAK;AAAA,IACf,WAAW,KAAK;AAAA,IAChB,WAAW,KAAK;AAAA,IAChB,UAAU,KAAK;AAAA,IACf,cAAc,MAAM;AAAA,EACtB;AACF;AAEO,SAAS,aAAaE,SAAgB,YAAkB;AAC7D,MAAI,OAAO,IAAIA,MAAK,EAAG;AACvB,SAAO,IAAIA,MAAK;AAChB,gBAAc,MAAM;AACpB,WAASA,MAAK;AACd,OAAKA,QAAO,YAAY;AACxB,SAAOA,QAAO,UAAU;AACxB,gBAAc;AAChB;AAEA,IAAM,oBAAN,MAAwB;AAAC;AAElB,SAAS,QAAQ,MAAkC;AACxD,QAAM,KAAK,MAAM,WAAW,GAAG,IAAI,OAAO;AAC1C,SAAO,UAAU,GAAG,MAAM,GAAG,EAAE,IAAI,kBAAkB,EAAE,KAAK,GAAG,CAAC;AAClE;AAEO,SAAS,aAAaA,QAAe,MAAoB;AAC9D,QAAMC,QAAO,CAACC,YAAoB;AAAA,IAChC,OAAAA;AAAA,IACA,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,EAChB;AACA,SAAO,iBAAiBF,QAAO;AAAA,IAC7B,mBAAmBC,MAAK,iBAAiB;AAAA,IACzC,MAAMA,MAAKD,MAAK;AAAA,IAChB,UAAUC,MAAK,OAAO,OAAO,EAAE,KAAK,CAAC,CAAC;AAAA,EACxC,CAAC;AACH;AAEO,SAAS,SAAS,KAAa,QAAyC;AAC7E,QAAM,SAAS,OAAO;AACtB,MAAI,WAAW,OAAW,QAAO;AACjC,MAAI,CAAC,GAAG,QAAQ,MAAM,CAAC,GAAG,GAAG,GAAG,WAAW,GAAG,QAAQ,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG;AACnE,UAAM,IAAI;AAAA,MACR,8BAA8B,GAAG,qDAAqD,MAAM;AAAA,IAC9F;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAM,UAAU;AAChB,IAAM,QAAQ,QAAQ;AACtB,IAAM,SAAS,OAAO;AACtB,IAAM,QAAQ,OAAO;AAEd,SAAS,mBAId;AACA,QAAM,UAAU,IAAI,QAAiB;AACrC,QAAM,MAAM,QAAQ,IAAI,KAAK,OAAO;AACpC,QAAM,WAAW,QAAQ,SAAS,KAAK,OAAO;AAC9C,QAAM,YAAY,QAAQ,UAAU,KAAK,OAAO;AAChD,QAAM,MAAM,MAAM,IAAI;AACtB,MAAI,MAAM,OAAO,CAAI,OAAgB,OAAkC,SAAuB;AAC5F,QAAI,OAAO,OAAO,WAAY,OAAM,IAAI,UAAU,mCAAmC;AACrF,WAAO,IAAI,OAAO,MAAM,MAAM,IAAI,QAAW,IAAI,CAAC;AAAA,EACpD,CAAC;AACD,MAAI,WAAW,OAAO,MAAe,SAAS,CAAC;AAC/C,MAAI,YAAY,OAAO,CAAC,UAAyB,UAAU,KAAK,CAAC;AACjE,SAAO,OAAO,GAAG;AACnB;;;ADpJA;;;AEXA;AACA;AAiBA;AAkBA,IAAM,WAAuB,MAAM;AAEnC,IAAM,SAAmB,MAAM;AAE/B,IAAME,gBAAe;AAErB,SAASC,SACP,MACAC,OACA,KACA,MACA,IACiB;AACjB,MAAI,KAAK,SAAS,QAAQ,MAAM;AAC9B,UAAM,SAAS;AACf,WAAO,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa,QAAQA,KAAI,CAAC;AAAA,EACtD;AACA,QAAM,WAAW;AACjB,MAAI,SAAS,SAAS,QAAQ,OAAQ,QAAO,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,eAAe,UAAUA,KAAI,CAAC;AAChG,SAAO,IAAI,UAAUA,KAAI;AAC3B;AAEO,SAAS,aACdA,OACA,MAAqB,gBACrB,OAAmB,UACnB,KAAe,QACf,OAAmB,MAAM;AAAC,GACD;AACzB,QAAMC,UAAS,CAAC,KAAcC,UAC5BF,MAAK,YAAY;AAAA,IACf,MAAM;AAAA,IACN,SAAS,eAAe,QAAS,IAAI,SAAS,IAAI,UAAW,OAAO,GAAG;AAAA,IACvE,GAAIE,UAAS,SAAY,CAAC,IAAI,EAAE,MAAAA,MAAK;AAAA,EACvC,CAA+B;AACjC,MAAIC;AACJ,QAAM,WAAW,MAAiC;AAChD,QAAIA,aAAY,QAAW;AACzB,UAAI;AACF,aAAK;AACL,QAAAA,WAAU;AAAA,MACZ,SAAS,OAAO;AACd,QAAAA,WAAU,EAAE,MAAM;AAAA,MACpB;AAAA,IACF;AACA,WAAOA;AAAA,EACT;AACA,SAAO,CAAC,SAAS;AACf,UAAM,OAAQ,MAAwC;AACtD,QAAI,SAAS,oBAAoB,SAAS,qBAAqB,SAAS,eAAgB;AACxF,UAAMC,WAAU,SAAS;AACzB,QAAI,SAAS,gBAAgB;AAC3B,UAAIA,SAAS,QAAOH,QAAOG,SAAQ,KAAK;AACxC,SAAG,EACA,KAAK,CAAC,MAAM;AACX,YAAI,CAAC,EAAE,YAAa,OAAM,IAAI,MAAM,wCAAwC;AAC5E,eAAO,EAAE,YAAY,MAAyBJ,KAAI;AAAA,MACpD,CAAC,EACA;AAAA,QACC,CAACE,UAASF,MAAK,YAAY,EAAE,MAAM,gBAAgB,MAAAE,MAAK,CAA2B;AAAA,QACnFD;AAAA,MACF;AACF;AAAA,IACF;AACA,UAAM,OAAO;AACb,QAAI,SAAS,oBAAoB,MAAM,SAAS,QAAQ,KAAM,eAAc,MAAM,GAAG;AACrF,QAAI,SAAS,kBAAkB;AAC7B,UAAIG,SAAS,QAAOH,QAAOG,SAAQ,KAAK;AACxC,WAAK,EACF,KAAK,CAAC,MAAM,EAAE,cAAc,MAA2BJ,KAAI,CAAC,EAC5D,MAAMC,OAAM;AACf;AAAA,IACF;AACA,QAAIG,SAAS,QAAOH,QAAOG,SAAQ,OAAON,aAAY;AACtD,IAAAC,SAAQ,MAAwBC,OAAM,KAAK,MAAM,EAAE,EAAE;AAAA,MACnD,CAACE,UAASF,MAAK,YAAY,EAAE,MAAM,mBAAmB,MAAAE,MAAK,CAA8B;AAAA,MACzFD;AAAA,IACF;AAAA,EACF;AACF;;;AFtGA;AACA;AAEA,IAAM,QAAQ;AACd,MAAM,YAAY,cAAc,YAAY,GAAG;AAC/C,MAAM,eAAe,IAAI,IAAI,YAAY,GAAG,EAAE;AAC9C,MAAM,cAAc,IAAI,IAAI,KAAK,YAAY,GAAG,EAAE;AAElD,IAAM,WAAY,YAAkD;AACpE,IAAM,SAAS,OAAO,aAAa,YAAY,SAAS,UAAU,mBAAmB,QAAQ,CAAC;AAC9F,IAAM,WAAW,SAAS,MAAM,kBAAkB,IAAI;AAEtD,IAAMI,QAAO;AACb,IAAM,OAAO;AAAA,EACX,aAAa,CAACC,UAAkB,aAC9BD,MAAK,YAAYC,UAAS,QAAiB;AAC/C;AACA,IAAM,aAAa,cAAc,EAAE,SAAS,YAAY,IAAI,CAAC;AAC7D,IAAM,YAAY;AAAA,EAChB;AAAA,EACA,CAAC,MAAM,OAAO;AACZ,iBAAa,YAAY,QAAQ,KAAK,SAAS,IAAI,CAAC;AACpD,WAAO,eAAe,MAAM,EAAE;AAAA,EAChC;AAAA,EACA,YAAY;AAAA,EACZ,aAAa;AAAA,IACX,cAAc,CAAC,MAAM,OACnB,aAAa,MAAM,IAAI;AAAA,MACrB,UAAU,MAAM,aAAa;AAAA,MAC7B,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,cAAc;AAAA,MACd;AAAA,IACF,CAAC;AAAA,IACH,aAAa,CAAC,MAAM,OAClB,YAAY,MAAM,IAAI;AAAA,MACpB,UAAU,MAAM,aAAa;AAAA,MAC7B,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,cAAc;AAAA,MACd;AAAA,IACF,CAAC;AAAA,EACL;AAAA,EACA,MAAM,aAAa;AACrB;AACAD,MAAK,GAAG,WAAW,SAAS;",
6
6
  "names": ["name", "opened", "scope", "code", "name", "last", "start", "written", "changed", "start", "json", "code", "code", "copy", "filled", "name", "young", "entry", "gone", "cached", "missing", "current", "follow", "now", "opening", "rest", "RING", "RING_SIZE", "SLOT", "size", "changed", "readable", "writable", "status", "errno", "message", "port", "wait", "index", "value", "start", "copy", "port", "wait", "settled", "start", "timeoutMs", "status", "code", "json", "follow", "opening", "held", "index", "port", "status", "errno", "message", "resolve", "code", "same", "json", "write", "index", "name", "follow", "copy", "write", "next", "answer", "index", "start", "call", "name", "value", "timeoutMs", "apply", "call", "next", "O_APPEND", "write", "read", "writable", "O_RDWR", "O_WRONLY", "GEN", "missing", "held", "device", "name", "changed", "next", "joined", "openDevice", "readable", "call", "decoder", "encoder", "read", "write", "timeoutMs", "NS_PER_MS", "apply", "process", "value", "value", "value", "FOREVER", "NS_PER_MS", "call", "refusal", "writeEvents", "name", "port", "openRequest", "call", "name", "value", "NS_PER_MS", "next", "name", "code", "call", "copy", "modeOf", "follow", "lookup", "wait", "start", "errno", "listen", "joined", "resolved", "answer", "bound", "gone", "device", "json", "filled", "alias", "current", "field", "listed", "O_WRONLY", "O_RDWR", "O_APPEND", "name", "opened", "slots", "status", "call", "timeoutMs", "LOOPBACK", "port", "slot", "read", "write", "STDIO", "name", "status", "slot", "answer", "held", "status", "wait", "slots", "call", "read", "write", "STDIO", "name", "opened", "status", "name", "value", "status", "local", "port", "next", "start", "rest", "base64", "CHUNK", "follow", "fromBase64", "chain", "call", "code", "errno", "name", "local", "readable", "writable", "resolve", "opened", "lookup", "failed", "SOL_SOCKET", "SO_ERROR", "code", "name", "errno", "code", "errno", "S_IFLNK", "S_IFIFO", "changed", "call", "wantOf", "read", "write", "idOf", "opening", "s", "st", "held", "name", "follow", "missing", "pinnedIo", "attr", "cached", "listed", "UMASK", "S_IFMT", "opened", "out", "O_APPEND", "bytes", "SEEK_CUR", "SEEK_END", "parentOf", "value", "refused", "code", "errno", "kindOf", "F_RDLCK", "F_WRLCK", "F_UNLCK", "start", "writeHolder", "refused", "O_ACCMODE", "O_WRONLY", "baseOf", "SEEK_CUR", "SEEK_END", "F_GETLK", "F_SETLK", "F_SETLKW", "LOCK_NB", "failed", "code", "copy", "rest", "name", "value", "wrap", "O_PATH", "AT_SYMLINK_NOFOLLOW", "errnoOf", "errno", "code", "write", "O_ACCMODE", "O_WRONLY", "lookup", "O_TRUNC", "refused", "baseOf", "AT_FDCWD", "call", "follow", "AT_EACCESS", "field", "listing", "name", "value", "sum", "scope", "UID", "LINK_MODE", "errno", "processes", "DIR_MODE", "next", "listed", "procOps", "lookup", "current", "remember", "follow", "next", "MAX_HOPS", "failed", "code", "refuse", "physical", "GONE", "readOnly", "late", "name", "listed", "held", "rest", "DIR_MODE", "FILE_MODE", "LINK_MODE", "listing", "processes", "listing", "index", "name", "value", "resolve", "read", "rest", "STDIO", "value", "encoder", "errno", "resolve", "resolved", "read", "index", "write", "encoder", "openDev", "current", "name", "SYNTHETIC_DIRS", "code", "idOf", "value", "call", "follow", "O_NONBLOCK", "value", "SEALED_PATH", "CLIPBOARD_PATH", "O_CREAT", "O_EXCL", "O_TRUNC", "status", "code", "name", "missing", "fdStat", "rest", "device", "absolute", "read", "write", "streams", "held", "kernelEntry", "device", "O_RDWR", "O_ACCMODE", "slots", "slot", "DEVICES", "O_CREAT", "O_EXCL", "O_TRUNC", "restarted", "streams", "errno", "read", "write", "timeoutMs", "POLLIN", "POLLOUT", "POLLHUP", "POLLERR", "local", "call", "slot", "S_IFMT", "S_IFDIR", "device", "status", "call", "code", "message", "timeoutMs", "same", "code", "streams", "call", "json", "guard", "O_RDWR", "O_NONBLOCK", "name", "value", "KILLED_BY_SIGPIPE", "attr", "call", "json", "name", "start", "wait", "streams", "O_RDONLY", "O_DIRECTORY", "O_ACCMODE", "timeoutMs", "port", "running", "encoder", "failed", "resolve", "status", "value", "O_WRONLY", "O_RDWR", "name", "within", "resolve", "call", "opened", "errno", "code", "follow", "pump", "failed", "message", "code", "NEVER", "resolve", "settled", "readable", "writable", "read", "write", "timeoutMs", "answer", "name", "readable", "resolved", "follow", "index", "tracked", "failed", "status", "encoder", "settled", "resolve", "field", "value", "held", "code", "writable", "call", "drain", "port", "resolve", "post", "start", "scope", "resolve", "value", "port", "rest", "failed", "status", "drain", "section", "value", "section", "call", "name", "listed", "value", "code", "name", "name", "value", "name", "value", "SIZE", "value", "code", "SIZE", "field", "value", "name", "index", "code", "read", "start", "pages", "PAGE", "name", "TABLE_BASE", "resolve", "value", "index", "cached", "resolved", "index", "ICANON", "ECHO", "code", "name", "lookup", "process", "failed", "message", "decoder", "value", "index", "name", "read", "name", "value", "process", "field", "scope", "RESERVED", "refused", "sliccTty", "copy", "imported", "pages", "sizeOf", "port", "call", "start", "read", "TABLE_BASE", "rest", "heldOf", "held", "code", "message", "index", "wrap", "value", "next", "resolved", "scope", "slot", "value", "NOT_RUNNABLE", "started", "port", "failed", "code", "refused", "refusal", "port", "message"]
7
7
  }